Programación General > ABAP

 Select's En Abap

(1/2) > >>

Blag:
En ABAP, se pueden utilizar muchos tipos de selects.....o maneras de acceder a datos en tablas.....

Para esto, crearemos primero una simple tabla interna....


--- Código: Text --- *---Occurs 0 --> Indica que nuestra tabla interna puede almacenar todos los datos.DATA: BEGIN OF TABLE T_TAB OCCURS 0,          BUKRS LIKE BKPF-BUKRS, "Sociedad          BELNR LIKE BKPF-BELNR,  "Número de un documento contable          GJAHR LIKE BKPF-GJAHR, "Ejercicio o Año Contable          END OF T_TAB.  
Ahora, podemos hacer nuestros selects.....  :lol:

Select


--- Código: Text --- SELECT *  "Seleccionamos todos los datos*Los almacenamos en los campos correspondientes de nuestra tabla internaINTO CORRESPONDING-FIELDS OF T_TAB *de la tabla BKPFFROM BKPF*donde el ejercicio es "2005"WHERE GJAHR EQ '2005'.  
Otro tipo de Select


--- Código: Text --- *Elegimos solamente los campos que queremos obtenerSELECT BUKRS BELNR GJAHR*Se guardan en la tabla en el mismo ordenINTO T_TAB*de la tabla BKPFFROM BKPF*donde el ejercicio es "2005"WHERE GJAHR EQ '2005'.  
En algunos casos, necesitaremos solamente un registro...así que hacemos esto  :ph34r:

Select Single


--- Código: Text --- *Elegimos solamente los campos que queremos obtener de la primera coindenciaSELECT SINGLE BUKRS BELNR GJAHR*Se guardan en la tabla en el mismo ordenINTO T_TAB*de la tabla BKPFFROM BKPF*donde el ejercicio es "2005"WHERE GJAHR EQ '2005'.  
Otro Select Single


--- Código: Text --- SELECT SINGLE *  "Seleccionamos todos los datos, de la primera coincidencia*Los almacenamos en los campos correspondientes de nuestra tabla internaINTO CORRESPONDING-FIELDS OF T_TAB *de la tabla BKPFFROM BKPF*donde el ejercicio es "2005"WHERE GJAHR EQ '2005'.  
Ahora bien....supongamos que tenemos llena nuestra tabla interna....


--- Citar ---BUKRS     BELNR           GJAHR
ENER       200000001      2005
TBLP        200000005      2005
TSIP        200000025      2005

--- Fin de la cita ---

Ahora bien....a una tabla interna no podemos hacerle un select...así que tenemos que recurrir a un READ TABLE


--- Código: Text --- *Leemos un registro de la tabla interna, donde la sociedad sea "ENER".READ TABLE T_TAB WITH KEY BUKRS = 'ENER'.  
También podemos leer por número de registro.....


--- Código: Text --- *Leemos un registro de la tabla interna, que tenga el índice 2.READ TABLE T_TAB INDEX 2.  
Con lo cual tendríamos.....


--- Citar ---BUKRS     BELNR           GJAHR
TBLP        200000005      2005

--- Fin de la cita ---

Si necesitamos leer todos los registros.....podríamos utilizar un loop. Pero primero deberemos de crear una variable, que almacene el valor del índice


--- Código: Text --- *Declaramos una variable que tiene como tipo, la variable del sistema SY-TABIX.*SY-TABIX, almacena el valor del índice a través de un LOOP.DATA: W_TABIX LIKE SY-TABIX.  

--- Código: Text --- *Leemos todos los registros de la tabla interna, uno por uno.LOOP AT T_TAB.*Almacenamos el valor de SY-TABIX en nuestra variable.WA_TABIX = SY-TABIX.*Leemos nuestra tabla interna por cada indice.READ TABLE T_TAB INDEX WA_TABIX.*XXX --> Hacemos algo con los valores leídos.....ENDLOOP.  
Saludos,

Blag  :smartass:

RadicalEd:
Pregunta?
Por que las variables y las tablas en ABAP tienen nombre tan raros, por ejemplo


--- Código: Text ---DATA: 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.   Esos campos ni idea que son, no podrian tener nombre como "ID, NOMBRE", o algo asi.
Por que nombres tan raros, jejeje es una pregunta tonta pero me gustaria saber

Blag:

--- Citar ---DATA: BEGIN OF T_DATOS OCCURS 0,
    BUKRS LIKE BKPF-BUKRS,   --> Sociedad
    BELNR LIKE BKPF-BELNR,    --> Documento Contable
    GJAHR LIKE BKPF-GJAHR,   --> Ejercicio o Año Contable
    BLART LIKE BKPF-BLART,    --> Clase de Documento
    WAERS LIKE BKPF-WAERS,  --> Moneda
    DMBTR LIKE BSEG-DMBTR,  -->Importe o Monto
    END OF T_DATOS.

--- Fin de la cita ---

Tienen esos nombres extraños....Pues porque.....SAP es alemán....Y esos nombres de tablas y campos, son supuestamente nemónicos en alemán  :blink:

Cuando uno programa en ABAP, es....aunque no parezca...más sencillo llamar a sus variables o campos de tablas internas, igual como se llaman originalmente....Es por eso, que siempre las llamos así.....


--- Código: Text --- BUKRS LIKE BKPF-BUKRSDMBTR LIKE BSEG-DMBTR  
Con la práctica te acostumbras y llegas a aprederte de memoria el significado de muchos de los campos, ya que los utilizas todos los días  :ph34r:

Saludos,

Blag  :smartass:

RadicalEd:
mmm Gracias Blag, pero no lo debieron haber hecho en ingles que es un lenguaje universal?, o es que no pensaron que se les iba a crecer el negocio?  :P
Gracias por la explicacion

Blag:

--- Citar ---mmm Gracias Blag, pero no lo debieron haber hecho en ingles que es un lenguaje universal?, o es que no pensaron que se les iba a crecer el negocio?  :P

--- Fin de la cita ---

Jajaja  :lol:  Lo mismo digo.....Y eso que no has visto los programas standard.......En muchos de ellos, los comentarios están en alemán  :(

Te imaginas lo que es tratar de entender un programa que tiene documentación en alemán???  :blink:   Pues es bastante feo....Sobre todo porque no se nada de alemán  :lol:

Aunque por supuesto.....cabe aclarar que el entorno, se puede configurar para que los menús y los textos de IDE aparezcan en Español, Alemán, Inglés,Portugues, etc....Así que por ese lado, no hay tanto problema  :scream:

Saludos,

Blag  :smartass:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa