Programación General > ABAP

 Programa De Ejemplo En Abap

(1/4) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa