Programación General > ABAP

 Decimal A Binario En Abap

(1/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa