Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Z Programa3 Curso
Z Programa3 Curso
*& Report Z_PROGRAMA3_CURSO
*&
*&---------------------------------------------------------------------*
*&
*&Este programa es para la creación de tablas internas
*&---------------------------------------------------------------------*
REPORT Z_PROGRAMA3_CURSO.
INCLUDE Z_PROGRAMA3_CURSO_TOP. "Declaración de variables"
INCLUDE Z_PROGRAMA3_CURSO_F01. "Declaración de subrutinas"
*&---------------------------------------------------------------------*
*& Include Z_PROGRAMA3_CURSO_TOP
*&---------------------------------------------------------------------*
*Declaración de variables
DATA: A TYPE I VALUE 3,
B TYPE I VALUE 4,
RESULTADO TYPE F.
*Declaracaión de tabla interna con cabecera
DATA: BEGIN OF TI_DATOS OCCURS 0,
NOMBRE TYPE C LENGTH 20,
APELLIDO(20) TYPE C,
EDAD(4) TYPE I,
END OF TI_DATOS.
*Declaracaión de tabla interna sin cabecera
DATA: BEGIN OF ST_DATOS,
NOMBRE TYPE C LENGTH 20,
APELLIDO(20) TYPE C,
EDAD(4) TYPE I,
END OF ST_DATOS.
*Referencia de una tabla interna
DATA: TI_DATOS2 LIKE TABLE OF ST_DATOS WITH HEADER LINE.
*Declaración de parametros
PARAMETERS: P_SUMA RADIOBUTTON GROUP OPER,
P_RESTA RADIOBUTTON GROUP OPER,
P_DIVI RADIOBUTTON GROUP OPER,
P_MULTI RADIOBUTTON GROUP OPER,
P_VALORA TYPE N LENGTH 6 OBLIGATORY DEFAULT 25,
P_VALORB TYPE N LENGTH 6.
*&---------------------------------------------------------------------*
*& Include Z_PROGRAMA3_CURSO_F01
*&---------------------------------------------------------------------*
*Validación que los valores no esten vacios
IF P_VALORA IS NOT INITIAL AND P_VALORB IS NOT INITIAL.
A = P_VALORA.
B = P_VALORB.
ENDIF.
*Se manda a llamar la subrutina calculo
PERFORM CALCULO USING A B CHANGING RESULTADO.
*Se imprime resultado
WRITE RESULTADO.
*Declaración de codigo de la subrutina (Case y operaciones)
FORM CALCULO USING INPUTA INPUTB CHANGING OUTPUT.
CASE 'X'.
WHEN P_SUMA.
OUTPUT = INPUTA + INPUTB.
WHEN P_RESTA.
OUTPUT = INPUTA - INPUTB.
WHEN P_DIVI.
OUTPUT = INPUTA / INPUTB.
WHEN P_MULTI.
OUTPUT = INPUTA * INPUTB.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*Declaración de valores para la tabla con cabecera
TI_DATOS-NOMBRE = 'ARMANDO'.
TI_DATOS-APELLIDO = 'JIMENEZ'.
TI_DATOS-EDAD = 23.
*Se limpian datos
CLEAR TI_DATOS-NOMBRE.
*Se valida que no vengan vacios
IF TI_DATOS IS INITIAL.
APPEND TI_DATOS.
ENDIF.
*Declaración de valores para la tabla con cabecera
TI_DATOS-NOMBRE = 'OSCAR'.
TI_DATOS-APELLIDO = 'OLMOS'.
TI_DATOS-EDAD = 28.
*Se almacen los datos a la tabla
APPEND TI_DATOS.
*Declaración de valores para la tabla con cabecera
TI_DATOS-NOMBRE = 'XOCHIL'.
TI_DATOS-APELLIDO = 'ARROYO'.
TI_DATOS-EDAD = 25.
*Se almacen los datos a la tabla
APPEND TI_DATOS.
*Declaración de valores para la tabla con cabecera
TI_DATOS-NOMBRE = 'JULIETA'.
TI_DATOS-APELLIDO = 'CRUZ'.
TI_DATOS-EDAD = 25.
*Se almacen los datos a la tabla
APPEND TI_DATOS.
*Se muestran los datos almacenados
LOOP AT TI_DATOS.
WRITE / TI_DATOS-NOMBRE.
WRITE / TI_DATOS-APELLIDO.
WRITE / TI_DATOS-EDAD.
WRITE: / TI_DATOS-NOMBRE,
TI_DATOS-APELLIDO,
TI_DATOS-EDAD.
ENDLOOP.
*Declaración de valores para la tabla sin cabecera
TI_DATOS2-NOMBRE = 'MOISES'.
TI_DATOS2-APELLIDO = 'MOISES'.
TI_DATOS2-EDAD = 35.
*Se almacen los datos a la tabla
APPEND TI_DATOS2.
*Se muestran los datos almacenados
LOOP AT TI_DATOS2.
WRITE / TI_DATOS2-NOMBRE.
WRITE / TI_DATOS2-APELLIDO.
WRITE / TI_DATOS2-EDAD.
WRITE: / TI_DATOS2-NOMBRE,
TI_DATOS2-APELLIDO,
TI_DATOS2-EDAD.
ENDLOOP.