*&---------------------------------------------------------------------* *& Report ZJUBE_CALCULADORA_OBJETOS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zjube_calculadora_objetos. *----------------------------------------------------------------------* * CLASS calculadora DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS calculadora DEFINITION. PUBLIC SECTION. METHODS: suma IMPORTING ope1 TYPE i ope2 TYPE i, resta IMPORTING ope1 TYPE i ope2 TYPE i, producto IMPORTING ope1 TYPE i ope2 TYPE i, division IMPORTING ope1 TYPE i ope2 TYPE i, concatena IMPORTING cad TYPE c num TYPE c EXPORTING cadres TYPE c, mostrar EXPORTING res TYPE c. PRIVATE SECTION. DATA resultado(28) TYPE c. ENDCLASS. "calculadora DEFINITION *----------------------------------------------------------------------* * CLASS calculadora IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS calculadora IMPLEMENTATION. METHOD suma. resultado = ope1 + ope2. ENDMETHOD. "suma METHOD resta. resultado = ope1 - ope2. ENDMETHOD. "resta METHOD producto. resultado = ope1 * ope2. ENDMETHOD. "producto METHOD division. resultado = ope1 / ope2. ENDMETHOD. "division METHOD concatena. CONCATENATE cad num INTO cadres. ENDMETHOD. "concatena METHOD mostrar. res = resultado. ENDMETHOD. "mostrar ENDCLASS. "calculadora IMPLEMENTATION DATA: gv_codigo TYPE sy-ucomm, gv_auxcod LIKE gv_codigo, gv_entrada(28) TYPE c, gv_salida(28) TYPE c, gv_operacion TYPE c, gv_objeto TYPE REF TO calculadora. START-OF-SELECTION. CREATE OBJECT gv_objeto. CALL SCREEN 100. *----------------------------------------------------------------------* * MODULE STATUS_0100 INPUT *----------------------------------------------------------------------* * *----------------------------------------------------------------------* MODULE status_0001 OUTPUT. SET PF-STATUS 'ZSTATUS'. SET TITLEBAR 'T001'. IF gv_operacion IS INITIAL. LOOP AT SCREEN. IF screen-name = 'GV_SALIDA' OR screen-name = 'GV_OPERACION'. screen-input = '0'. screen-output = '0'. screen-invisible = '1'. MODIFY SCREEN. ENDIF. ENDLOOP. ELSE. LOOP AT SCREEN. IF screen-name = 'GV_SALIDA' OR screen-name = 'GV_OPERACION'. screen-input = '1'. screen-output = '1'. screen-invisible = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. ENDMODULE. "status_0100 INPUT *----------------------------------------------------------------------* * MODULE USER_COMMAND_0100 INPUT *----------------------------------------------------------------------* * *----------------------------------------------------------------------* MODULE user_command_0001 INPUT. DATA: lv_cad(25) TYPE c, lv_oper1 TYPE i, lv_oper2 TYPE i, lv_opera TYPE c, lv_aux TYPE c. gv_codigo = sy-ucomm. gv_auxcod = gv_codigo. CLEAR gv_codigo. gv_salida = ''. IF gv_auxcod = 'BACK'. LEAVE PROGRAM. ENDIF. CASE gv_auxcod. WHEN 'SALIR'. LEAVE PROGRAM. WHEN 'NUM0'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '0' IMPORTING cadres = lv_cad. WHEN 'NUM1'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '1' IMPORTING cadres = lv_cad. WHEN 'NUM2'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '2' IMPORTING cadres = lv_cad. WHEN 'NUM3'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '3' IMPORTING cadres = lv_cad. WHEN 'NUM4'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '4' IMPORTING cadres = lv_cad. WHEN 'NUM5'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '5' IMPORTING cadres = lv_cad. WHEN 'NUM6'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '6' IMPORTING cadres = lv_cad. WHEN 'NUM7'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '7' IMPORTING cadres = lv_cad. WHEN 'NUM8'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '8' IMPORTING cadres = lv_cad. WHEN 'NUM9'. CALL METHOD gv_objeto->concatena EXPORTING cad = lv_cad num = '9' IMPORTING cadres = lv_cad. WHEN 'MAS'. gv_operacion = '+'. lv_cad = ''. lv_oper1 = gv_entrada. WHEN 'MENOS'. gv_operacion = '-'. lv_cad = ''. lv_oper1 = gv_entrada. WHEN 'DIVISION'. gv_operacion = '/'. lv_cad = ''. lv_oper1 = gv_entrada. WHEN 'PRODUCTO'. gv_operacion = '*'. lv_cad = ''. lv_oper1 = gv_entrada. WHEN 'IGUAL'. lv_oper2 = gv_entrada. gv_entrada = ''. CASE lv_opera. WHEN '+'. * gv_salida = lv_oper1 + lv_oper2. CALL METHOD gv_objeto->suma EXPORTING ope1 = lv_oper1 ope2 = lv_oper2. CALL METHOD gv_objeto->mostrar IMPORTING res = gv_salida. WHEN '-'. * gv_salida = lv_oper1 - lv_oper2. CALL METHOD gv_objeto->resta EXPORTING ope1 = lv_oper1 ope2 = lv_oper2. CALL METHOD gv_objeto->mostrar IMPORTING res = gv_salida. WHEN '/'. * gv_salida = lv_oper1 / lv_oper2. CALL METHOD gv_objeto->division EXPORTING ope1 = lv_oper1 ope2 = lv_oper2. CALL METHOD gv_objeto->mostrar IMPORTING res = gv_salida. WHEN '*'. * gv_salida = lv_oper1 * lv_oper2. CALL METHOD gv_objeto->producto EXPORTING ope1 = lv_oper1 ope2 = lv_oper2. CALL METHOD gv_objeto->mostrar IMPORTING res = gv_salida. ENDCASE. WHEN 'BORRA'. lv_cad = ''. gv_operacion = ''. ENDCASE. gv_entrada = lv_cad. lv_opera = gv_operacion. ENDMODULE. "user_command_0100 INPUT