Programación General > ABAP
Decimal A Binario En Abap
Blag:
Aquí está un Decimal a Binario en ABAP B)
--- Código: Text --- ****************************************************** Programa : Z_ATG_DUMMY ** Consultor ABAP : Alvaro Tejada Galindo ** Descripción: Programa de Ejemplo de ABAP ****************************************************** *---Este es el nombre del programaREPORT Z_ATG_DUMMY. *=======================================================================* Variables*=======================================================================*---Declaramos la variables para el programa*--- I es INTEGER y C es CHARDATA: SUMA(20) TYPE C, DIGITO TYPE I, AUX TYPE I, EXPO TYPE I. DATA: DIVISION TYPE I, RESIDUO TYPE I. *=======================================================================* Selection screen*=======================================================================*---Declaramos el espacio en donde va a estar la interfaz del programaSELECTION-SCREEN BEGIN OF BLOCK BLOCK WITH FRAME TITLE TEXT-T01.*---Declaramos el parámetro de entradaPARAMETERS: NUMERO TYPE I.SELECTION-SCREEN END OF BLOCK BLOCK. *=======================================================================* Start-of-selection*=======================================================================*---Cuando se ejecuta el programaSTART-OF-SELECTION.*---Llamamos a la función CALCULA_BINARIO, y le pasamos como parámetro*---el número que leímos en la pantalla del programa PERFORM CALCULA_BINARIO USING NUMERO. *&---------------------------------------------------------------------**& Form CALCULA_BINARIO*&---------------------------------------------------------------------** Obtiene el número binario de un decimal.*----------------------------------------------------------------------*FORM CALCULA_BINARIO USING P_DECIMAL. SUMA = 0. EXPO = 1.*---Mientras la variable NUMERO sea mayor igual que 1 WHILE NUMERO GE 1.*---Llamamos a la función CALCULA_RESIDUO, pasandolo 2 parámetros*---de entrada NUMERO y 2. Además, un tercer parámetro de cambio*---de variable RESIDUO PERFORM CALCULA_RESIDUO USING NUMERO '2' CHANGING RESIDUO. DIGITO = RESIDUO.*---Dividimos NUMERO entre 2 y truncamos el resultado, es decir,*---no tomamos los decimales y lo redondeamos al entero inferior NUMERO = TRUNC( NUMERO / '2' ). AUX = DIGITO * EXPO. SUMA = SUMA + AUX. EXPO = EXPO * '10'. ENDWHILE. *---Imprimos el número en binario WRITE:/ 'El número binario es: ', SUMA.ENDFORM. *---------------------------------------------------------------------** FORM CALCULA_RESIDUO **---------------------------------------------------------------------** Calcula el residuo de la división. **---------------------------------------------------------------------*FORM CALCULA_RESIDUO USING P_DIVS P_DIVD CHANGING RESIDUO.*---Dividimos NUMERO entre 2 y truncamos el resultado, es decir,*---no tomamos los decimales y lo redondeamos al entero inferior DIVISION = TRUNC( P_DIVS / P_DIVD ). RESIDUO = P_DIVS - ( DIVISION * P_DIVD ).ENDFORM.
Si lo ejecutamos por ejemplo con el número 30 como parámetro, nos dará el siguiente resultado:
--- Código: Text --- Programa de Pruebas Variadas El número binario es: 11110
Saludos,
Blag :smartass:
RadicalEd:
Como hago la captura de un valor?
Como hago un switch o un if?
Para que diras...
Para hacer una desición y seleccionar entre varias funciones, a ver si hago uno pequeño y me dices si me quedo bien.
Blag:
--- Citar ---Como hago la captura de un valor?
--- Fin de la cita ---
Así:
--- Código: Text --- *---Declaramos el espacio en donde va a estar la interfaz del programaSELECTION-SCREEN BEGIN OF BLOCK BLOCK WITH FRAME TITLE TEXT-T01.*---Declaramos el parámetro de entradaPARAMETERS: NUMERO TYPE I.SELECT-OPTIONS: FECHA FOR PA0001-BEGDA.SELECTION-SCREEN END OF BLOCK BLOCK.
NUMERO es el valor que puedes capturar (En este caso es un parámetro).
FECHA, es un rango de valores.
Para llamar a NUMERO, simplemente lo llamas como una variable cualquiera.
Para llamar a FECHA, como es un rango de valores, se divide en 2. En FECHA-LOW y FECHA-HIGH.....Por ejemplo, si FECHA, va de '01.01.2005' (FECHA-LOW) al '31.12.2005' (FECHA-HIGH).
Puedes utilizar un IN o un BETWEEN, para poder utilizarlo.
Por ejemplo:
--- Código: Text --- SELECT BELNRINTO T_TABFROM BKPFWHERE GJAHR IN FECHA.
En este caso, seleccionas de la tabla BKPF, el campo BELNR (Número de un documento contable), siempre y cuando el campo GJAHR (Ejercicio), este dentro del rango de valores de la variable FECHA.
--- Citar ---Como hago un switch o un if?
--- Fin de la cita ---
Para hacer un IF:
--- Código: Text --- IF NUMERO = '5'.WRITE:/ '5'.ELSE.WRITE:/ 'Otro número'.ENDIF.
Con WRITE, escribimos en la pantalla.
Para hacer un SWITCH.....No existe la sentencia SWITCH :lol:
Sería así:
--- Código: Text --- CASE NUMERO.WHEN '5'.WRITE:/ '5'.WHEN 'OTHERS'.WRITE:/ 'Otro número'.ENDCASE.
--- Citar ---Para hacer una desición y seleccionar entre varias funciones, a ver si hago uno pequeño y me dices si me quedo bien.
--- Fin de la cita ---
Jejeje.....Espero con ansias tu código B)
Saludos,
Blag :smartass:
RadicalEd:
Sigo sin entender lo de la captura, como hacer en VB
x = Text1.Text
osea, capturar en 'x' el valor que se entra en el Control Texto.
Ya tengo casi la mitad, solo me falta no mas entender esta captura y listo
Blag:
--- Citar ---Sigo sin entender lo de la captura, como hacer en VB
x = Text1.Text
osea, capturar en 'x' el valor que se entra en el Control Texto.
--- Fin de la cita ---
Bueno... :lol: ....la cosa es así.....
--- Código: Text --- *---Declaramos el espacio en donde va a estar la interfaz del programaSELECTION-SCREEN BEGIN OF BLOCK BLOCK WITH FRAME TITLE TEXT-T01.*---Declaramos el parámetro de entradaPARAMETERS: NUMERO TYPE I.SELECT-OPTIONS: FECHA FOR PA0001-BEGDA.SELECTION-SCREEN END OF BLOCK BLOCK.
Como ves, NUMERO es un parámetro, cuando aparece la pantalla de parámetros, y colocas por ejemplo "5" en ese campo y ejecutas el programa, entonces NUMERO vale 5. No es necesario hacer un
--- Código: Text --- X = NUMERO.
Puesto que NUMERO ya tiene el valor porque es un parámetro de entrada del programa :comp:
Saludos,
Blag :devil:
Navegación
[#] Página Siguiente
Ir a la versión completa