*****************************************************
* Programa : Z_ATG_DUMMY *
* Consultor ABAP : Alvaro Tejada Galindo *
* Descripción: Programa de Ejemplo de ABAP *
*****************************************************
REPORT Z_ATG_DUMMY.
*=======================================================================
* CLASES
*=======================================================================
*Definición del Método
CLASS C_MATH DEFINITION.
*Parte Pública
PUBLIC SECTION.
*Métodos
METHODS:
*---> Este método recoge el parámetro de entrada
FACTORIAL IMPORTING N TYPE I,
*---> Este método retorna el valor del factorial
GET_RESULT RETURNING VALUE(FACT) TYPE I.
*Parte Privada
PRIVATE SECTION.
*---> Variable de tipo entero
DATA FACT TYPE I.
ENDCLASS.
*Implementación del Método
CLASS C_MATH IMPLEMENTATION.
METHOD FACTORIAL.
*---> Cálculamos el factorial
FACT = 1.
IF N NE 0.
DO N TIMES.
FACT = FACT * SY-INDEX.
ENDDO.
ENDIF.
ENDMETHOD.
METHOD GET_RESULT.
*---> Asignamos el resultado del método a nuestra variable
FACT = ME->FACT.
* --> Imprimimos el resultado
WRITE: 'El Factorial es: ', FACT.
ENDMETHOD.
ENDCLASS.
*=======================================================================
* Selection screen
*=======================================================================
SELECTION-SCREEN BEGIN OF BLOCK DATA_INFO WITH FRAME TITLE TEXT-T03.
*Parámetro de entrada
PARAMETERS:
NUMBER TYPE I.
SELECTION-SCREEN END OF BLOCK DATA_INFO.
*=======================================================================
* START-OF-SELECTION
*=======================================================================
START-OF-SELECTION.
*=======================================================================
* OBJETOS
*=======================================================================
*--> Definimos un objeto con referencia a nuestra clase
DATA MY_OBJ TYPE REF TO C_MATH.
DATA RESULT TYPE I.
*--> Creamos el objeto
CREATE OBJECT MY_OBJ.
*--> Llamamos al método que obtiene el valor del parámetro de entrada
CALL METHOD MY_OBJ->FACTORIAL( EXPORTING N = NUMBER ).
*---> Llamamos al método que imprime el resultado en pantalla
CALL METHOD MY_OBJ->GET_RESULT.