Programación General > ABAP
Programa De Ejemplo En Abap
Blag:
--- Citar ---SELECT SINGLE DMBTR
INTO T_DATOS-DMBTR
FROM BSEG
WHERE BUKRS EQ T_DATOS-BUKRS *EQ -->Que es?, Si T_DATOS-BUKRS es el dato seleccionado o no se.¿?
AND BELNR EQ T_DATOS-BELNR
AND GJAHR EQ T_DATOS-GJAHR.
--- Fin de la cita ---
T_DATOS-BUKRS, es la condición que le pasas a la consulta SQL......EQ, signica Equal o IGUAL A y puedes escribirlo como =.
Por ejemplo......
--- Código: Text --- SELECT SINGLE DMBTRINTO T_DATOS-DMBTRFROM BSEGWHERE BUKRS = T_DATOS-BUKRS
Y para que quede más claro....
--- Código: Text --- SELECT SINGLE DMBTRINTO T_DATOS-DMBTRFROM BSEGWHERE BUKRS = 'TBLP'
'TBLP', vendría a ser el valor que está guardado dentro del campo BUKRS de nuestra tabla interna T_DATOS..... B)
--- Citar --- Una pregunta, este codigo de Abap se parace bastante a las sentencias de SQL con parte de Pascal y algo de basic. Su entorno es grafico como Visual o es como pascal..????
--- Fin de la cita ---
Tienes mucha razón Juravi, es como una mezcla de lenguajes :lol: .....Y su entorno de programación??? Pues bueno......Para hacer reportes o programas de carga, que es lo que normalmente se hace, su entorno es similar al del Turbo Pascal, es decir.....no hay nada visual.....
Ahora, puedes utilizar los Dynpros, que son interfaces gráficas (Botones, tablas, etc)....Con un editor visual tipo VB, pero todo el código debe de ser hecho de todos modos, en el editor común y silvestre de ABAP
Saludos,
Blag :smartass:
sami25:
--- Cita de: "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:
--- Fin de la cita ---
Hola gente busco info sobre OCCURS... el unico valor q toma es 0??
Significa q es una tabla dinamica nada mas??
Desde ya muchas gracias!
Sami
"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,
Blag:
Bienvenid@ Sami:
--- Citar ---Hola gente busco info sobre OCCURS... el unico valor q toma es 0??
Significa q es una tabla dinamica nada mas??
Desde ya muchas gracias!
Sami
--- Fin de la cita ---
El OCCURS indica la cantidad de registros que puede soportar una tabla interna....Por ejemplo....
--- Código: Text --- OCCURS 10 --> Solo 10 registros.OCCURS 1 --> Solo un registro.
En el caso del OCCURS 0, significa que hay límite para la cantidad de registros....
Las tablas internas no son más que Arrays...Por lo tanto tienes que definir el tamaño que van a tener...Lo más común es utilizar 0 porque normalmente no sabes cuantos registros vas a coseguir luego de hacer un SELECT.
Espero haber sido claro :comp: Sino...Puedes seguir preguntando :lol:
Saludos,
Blag :smartass:
sami25:
Hola, muchas gracias por lo del occurs.. me sirvio mucho..
Otra cosa alguien tiene definido tablas internas con el type?
SORRY QUE PREGUNTE TONTERIAS PERO HACE 2 DIAS Q EMPECE A LABURAR CON ESTO!!
GRACIAS!
SAMI
Blag:
--- Citar ---Otra cosa alguien tiene definido tablas internas con el type?
SORRY QUE PREGUNTE TONTERIAS PERO HACE 2 DIAS Q EMPECE A LABURAR CON ESTO!!
GRACIAS!
--- Fin de la cita ---
No te preocupes que no son tonterías :lol: Es solo que recién estás empezando B)
En realidad....La mejor forma de declarar tablas internas es con TYPE :comp:
--- Código: Text --- DATA: T_MARA TYPE STANDARD TABLE OF MARA WITH HEADER LINE.
Ves :lol: Ya no necesitas el famoso OCCURS 0 B)
Saludos,
Blag :smartass:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa