*&---------------------------------------------------------------------* *& Report ZANMA_CALCULADORA *& *&---------------------------------------------------------------------* REPORT zanma_calculadora. **Definicion de Variables Globales y Locales DATA gv_pantalla(20) TYPE c. DATA gv_cuenta(15) TYPE c. DATA gv_cuenta2(15) TYPE c. DATA gv_oper(2) TYPE c. DATA gv_num TYPE n. DATA gv_op TYPE c. DATA gv_codigo TYPE sy-ucomm. DATA gv_bandera TYPE c VALUE 0. DATA gv_resultado(20) TYPE c. **Llamada a la pantalla, imprime la pantalla CALL SCREEN 100. *----------------------------------------------------------------------* * MODULE status_0001 OUTPUT *----------------------------------------------------------------------* * Modulo que imprime el titulo y la barra del status *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS1'. SET TITLEBAR 'TITULO1'. **el cuadro del operador de la pantalla lo pone invisble a no se que se pulse **un simbolo de operacion. IF gv_oper IS INITIAL. LOOP AT SCREEN. IF screen-name = 'GV_OPER'. screen-output = '0'. screen-input = '0'. screen-invisible = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ELSE. LOOP AT SCREEN. IF screen-name = 'GV_OPER'. screen-output = '1'. screen-input = '1'. screen-invisible = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. ENDMODULE. " STATUS_0001 OUTPUT *----------------------------------------------------------------------* * MODULE user_command_100 INPUT * Modulo que contiene todas la operaciones *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. gv_codigo = sy-ucomm. CLEAR sy-ucomm. CASE gv_codigo. WHEN '1'. gv_num = 1. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '2'. gv_num = 2. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '3'. gv_num = 3. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '4'. gv_num = 4. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '5'. gv_num = 5. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '6'. gv_num = 6. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '7'. gv_num = 7. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '8'. gv_num = 8. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '9'. gv_num = 9. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '0'. gv_num = 0. IF gv_bandera = 0. CONCATENATE gv_cuenta gv_num INTO gv_cuenta. gv_pantalla = gv_cuenta. ELSE. CONCATENATE gv_cuenta2 gv_num INTO gv_cuenta2. gv_pantalla = gv_cuenta2. ENDIF. WHEN '/'. gv_op = '/'. gv_oper = gv_op. gv_bandera = 1. CLEAR gv_pantalla. WHEN '*'. gv_op = '*'. gv_oper = gv_op. gv_bandera = 1. CLEAR gv_pantalla. WHEN '-'. gv_op = '-'. gv_oper = gv_op. gv_bandera = 1. CLEAR gv_pantalla. WHEN '+'. gv_op = '+'. gv_oper = gv_op. gv_bandera = 1. CLEAR gv_pantalla. WHEN 'CLEAR'. CLEAR gv_pantalla. CLEAR gv_oper. CLEAR gv_num. CLEAR gv_cuenta. CLEAR gv_cuenta2. CLEAR gv_op. CLEAR gv_resultado. gv_bandera = 0. WHEN 'CLOSE'. LEAVE PROGRAM. WHEN '='. CASE gv_op. WHEN '+'. gv_resultado = gv_cuenta + gv_cuenta2. WHEN '-'. gv_resultado = gv_cuenta - gv_cuenta2. WHEN '*'. gv_resultado = gv_cuenta * gv_cuenta2. WHEN '/'. IF gv_cuenta2 EQ 0. gv_pantalla = 'ERROR'. ELSE. gv_resultado = gv_cuenta / gv_cuenta2. ENDIF. ENDCASE. IF gv_pantalla <> 'ERROR'. gv_pantalla = gv_resultado. ENDIF. CLEAR gv_oper. WHEN 'BACK'. LEAVE PROGRAM. ENDCASE. ENDMODULE. "user_command_100 INPUT