Programación General > ABAP
Select's En Abap
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
[#] Página Siguiente
Ir a la versión completa