Programación General > ABAP
Programa De Ejemplo En Abap
Blag:
--- Código: Text --- ************************************************************************* Programa : Z_PRUEBA_ABAP* Módulo : FI - Finanzas* Documento:* Usuario responsable:* Consultor funcional:* Consultor ABAP : Alvaro Tejada Galindo* Descripción: Programa de Ejemplo de ABAP* Transacción:* Juego de datos:************************************************************************ REPORT Z_PRUEBA_ABAP. *=======================================================================* Tablas*======================================================================= "Definimos las tablas que vamos a leerTABLES: BKPF,BSEG. *=======================================================================* Estructuras*======================================================================= "Creamos una tabla interna con los campos necesarios"El OCCURS 0 indica que es una tabla dinámicaDATA: BEGIN OF T_DATOS OCCURS 0, BUKRS LIKE BKPF-BUKRS, BELNR LIKE BKPF-BELNR, GJAHR LIKE BKPF-GJAHR, BLART LIKE BKPF-BLART, WAERS LIKE BKPF-WAERS, DMBTR LIKE BSEG-DMBTR, END OF T_DATOS. *=======================================================================* Variables*======================================================================= "Una variable a modo de contadorDATA: CONTADOR TYPE I. *=======================================================================* Selection screen*======================================================================= "Estos son los parámetros de selección de nuestro programa SELECTION-SCREEN BEGIN OF BLOCK DATA WITH FRAME TITLE TEXT-T01."Podemos elegir un rango de valoresSELECT-OPTIONS: S_BUKRS FOR BKPF-BUKRS, S_BELNR FOR BKPF-BELNR."Podemos elegir solamente un valor"OBLIGATORY indica que es obligatorio para ejecutar el programaPARAMETERS: P_GJAHR LIKE BKPF-GJAHR OBLIGATORY.SELECTION-SCREEN END OF BLOCK DATA. *=======================================================================* Start-of-selection*======================================================================= "Comienza la ejecución del programa START-OF-SELECTION."Llamamos a las funciones que hemos creadoPERFORM OBTENER_DATOS.PERFORM IMPRIMIR_DATOS. *=======================================================================* Subrutinas*======================================================================= *&---------------------------------------------------------------------**& Form OBTENER_DATOS*&---------------------------------------------------------------------** Obtenemos los datos de las tablas BKPF y BSEG.*----------------------------------------------------------------------* FORM OBTENER_DATOS. "Seleccionamos los valores de la tabla BKPF que cumplan con los"requisitos y los guardamos en nuestra tabla interna."El APPEND sirve para almacenar los valores en la ultima fila"de la tabla interna SELECT BUKRS BELNR GJAHR BLART WAERSINTO T_DATOSFROM BKPFWHERE BUKRS IN S_BUKRS AND BELNR IN S_BELNR AND GJAHR EQ P_GJAHR.APPEND T_DATOS.ENDSELECT. "Hacemos un LOOP para recorrer todos los registros de nuestra"tabla interna LOOP AT T_DATOS."El SY-TABIX es una variable del sistema que nos indica el número"de vueltas que ha dado un LOOP.CONTADOR = SY-TABIX."Seleccionamos un dato y lo almacenamos en uno de los campos"de nuestra tabla interna. El SINGLE indica que solo queremos un "valorSELECT SINGLE DMBTRINTO T_DATOS-DMBTRFROM BSEGWHERE BUKRS EQ T_DATOS-BUKRS AND BELNR EQ T_DATOS-BELNR AND GJAHR EQ T_DATOS-GJAHR. "El MODIFY modifica la tabla interna, para agregar el valor"que hemos obtenido en el query anterior, utilizando como"indice, el número de vuelta del LOOP MODIFY T_DATOS INDEX CONTADOR. ENDLOOP. ENDFORM. *&---------------------------------------------------------------------**& Form IMPRIMIR_DATOS*&---------------------------------------------------------------------** Imprimimos en pantalla los datos generados*----------------------------------------------------------------------* FORM IMPRIMIR_DATOS. "Imprimimos una pequeña cabecera con los titulos WRITE:/1 'Sociedad',15 'Doc. Contable',30 'Año',37 'Moneda',55 'Monto'. "Recorremos nuestra tabla interna e imprimimos en pantalla"registro por registro... LOOP AT T_DATOS.WRITE:/1 T_DATOS-BUKRS,15 T_DATOS-BELNR,30 T_DATOS-GJAHR,38 T_DATOS-WAERS,45 T_DATOS-DMBTR.ENDLOOP. ENDFORM.
Saludos,
Blag :smartass:
Blag:
El resultado de ejecutar este reporte sería:
--- Citar ---Programa ejemplo de ABAP
Sociedad Doc. Contable Año Moneda Monto
ENER 400000001 2004 USD 700,00
ENER 400000002 2004 USD 700,00
ENER 400000003 2004 USD 700,00
ENER 400000004 2004 USD 700,00
ENER 400000005 2004 USD 700,00
ENER 2000000001 2004 PEN 14.752,05
ENER 2000000002 2004 PEN 13.231,37
ENER 2000000003 2004 PEN 1.519,35
ENER 2000000004 2004 PEN 7.677,52
ENER 2000000005 2004 PEN 9.917,00
ENER 2000000006 2004 PEN 28.342,32
ENER 2000000007 2004 PEN 97,14
ENER 2000000008 2004 PEN 1.873,83
ENER 2000000009 2004 PEN 96,24
ENER 2000000010 2004 PEN 20,98
ENER 2000000011 2004 PEN 32,96
ENER 2000000012 2004 PEN 26,59
ENER 2000000013 2004 PEN 16,48
ENER 2000000014 2004 PEN 32,96
ENER 2000000015 2004 PEN 83,91
ENER 2000000016 2004 PEN 32,96
ENER 2000000017 2004 PEN 106,02
ENER 2000000018 2004 PEN 176,81
ENER 2000000019 2004 PEN 3.699,22
ENER 2000000020 2004 PEN 1.312,86
ENER 2000000021 2004 PEN 47,95
ENER 2000000022 2004 PEN 26,63
ENER 2000000023 2004 PEN 156,73
ENER 2000000024 2004 PEN 179,80
ENER 2000000025 2004 PEN 55,44
ENER 2000000026 2004 PEN 542,09
--- Fin de la cita ---
Saludos,
Blag :smartass:
RadicalEd:
--- Cita de: "Blag" --- [CODE]
REPORT Z_PRUEBA_ABAP.
*=======================================================================
* Tablas
*=======================================================================
"Definimos las tablas que vamos a leer
TABLES: BKPF,BSEG.
*=======================================================================
* Estructuras
*=======================================================================
"Creamos una tabla interna con los campos necesarios
"El OCCURS 0 indica que es una tabla dinámica
DATA: BEGIN OF T_DATOS OCCURS 0,
BUKRS LIKE BKPF-BUKRS, *Que son este tipo de Datos? --> BUKRS
BELNR LIKE BKPF-BELNR, *BELNR
GJAHR LIKE BKPF-GJAHR, *GJAHR
BLART LIKE BKPF-BLART, *BLART
WAERS LIKE BKPF-WAERS, *WAERS
DMBTR LIKE BSEG-DMBTR, *DMBTR
END OF T_DATOS.
"Una variable a modo de contador
DATA: CONTADOR TYPE I. *Type I Que es? La variable?
--- Fin de la cita ---
Preguntas?
Enko:
Me suena mucho a Cobol B)
Le faltan unos jeroglificos por aqui y por alla y termino siendo chino :P
Blag:
--- Citar ---"Creamos una tabla interna con los campos necesarios
"El OCCURS 0 indica que es una tabla dinámica
DATA: BEGIN OF T_DATOS OCCURS 0,
BUKRS LIKE BKPF-BUKRS, *Que son este tipo de Datos? --> BUKRS
BELNR LIKE BKPF-BELNR, *BELNR
GJAHR LIKE BKPF-GJAHR, *GJAHR
BLART LIKE BKPF-BLART, *BLART
WAERS LIKE BKPF-WAERS, *WAERS
DMBTR LIKE BSEG-DMBTR, *DMBTR
END OF T_DATOS.
"Una variable a modo de contador
DATA: CONTADOR TYPE I. *Type I Que es? La variable?
--- Fin de la cita ---
Bueno....vamos por partes....Aquí estamos definiendo una tabla interna....Que es lo mismo que una tabla en Base de Datos, con la diferencia que solo existe miestras el programa se esté ejecutando.....
--- Citar ---*Que son este tipo de Datos? --> BUKRS
--- Fin de la cita ---
El BUKRS, no es un tipo de dato propiamente dicho, es en realidad un campo de la tabla BKPF, entonces, estamos diciendo que el campo BUKRS, de nuestra tabla interna T_DATOS, va a tener la misma definición que el campo BUKRS de la tabla BKPF.
Y que significa o que guarda cada unos de esos campos???
Pues esto......
BUKRS --> Sociedad
BELNR --> Documento Contable
GJAHR --> Año Contable
BLART --> Tipo de Documento (Me olvidé de imprimirlo :lol: )
WAERS --> Moneda
DMBTR --> Monto
--- Citar ---DATA: CONTADOR TYPE I. *Type I Que es? La variable?
--- Fin de la cita ---
La variable es CONTADOR y el tipo de variable es I, es decir INTEGER o Entero.
Saludos,
Blag :smartass:
Navegación
[#] Página Siguiente
Ir a la versión completa