MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Grabar Nombre de Tabla en campo itab (foro/showthread.php?t=75661)

mogus 25/04/16 16:14:46

Grabar Nombre de Tabla en campo itab
 
Hola Todos.

Necesito la forma de asignar el nombre de la tabla en la que estoy haciendo un select a un campo en mi tabla itab... me explico, la consulta va a varias tablas y necesito mostrale a usuario cada registro en que tabla quedó grabado... pej en este código necesito colocarle a cada registro si proviene de la tabla A690 o de la A694.... Como puedo hacer eso? Gracias!!!!!

CLEAR itab.
REFRESH itab.

SELECT KAPPL KSCHL WERKS INCO1 INCO2 MFRGR VRKME KFRST DATBI DATAB
KBSTAT KNUMH
INTO CORRESPONDING FIELDS OF TABLE itab
FROM A690
WHERE werks in werks.

SELECT KAPPL KSCHL WERKS INCO1 INCO2 KONDM VRKME KFRST DATBI DATAB KBSTAT KNUMH
INTO CORRESPONDING FIELDS OF TABLE itab1
FROM A694
WHERE werks in werks.

LOOP AT itab1.
APPEND itab1 TO itab.
ENDLOOP.

Jesicka_21 25/04/16 16:49:58

Lo que se me ocurre
 
Buenas tardes,

Lo que se me ocurre que podes llegar a hacer es lo siguiente:
Deberias realizarte un types de la siguiente manera.

TYPES: BEGIN OF TY_ITAB,
KAPPL TYPE A690-KAPPL,
KSCHL TYPE A690-KSCHL,
WERKS TYPE A690-WERKS,
INCO1 TYPE A690-INCO1,
INCO2 TYPE A690-INCO2,
MFRGR TYPE A690-MFRGR,
VRKME TYPE A690-VRKME,
KFRST TYPE A690-KFRST,
DATBI TYPE A690-DATBI,
DATAB TYPE A690-DATAB,
KBSTAT TYPE A690-KBSTAT,
KNUMH TYPE A690-KNUMH,
TABNAME TYPE CHAR20,
END OF TY_ITAB.

Agregamos un campo llamado TABNAME que contendrá el nombre de la tabla.

Realizas tu consulta:

CLEAR itab.
REFRESH itab.

SELECT KAPPL KSCHL WERKS INCO1 INCO2 MFRGR VRKME KFRST DATBI DATAB
KBSTAT KNUMH
INTO CORRESPONDING FIELDS OF TABLE itab
FROM A690
WHERE werks in werks.

SELECT KAPPL KSCHL WERKS INCO1 INCO2 KONDM VRKME KFRST DATBI DATAB KBSTAT KNUMH
INTO CORRESPONDING FIELDS OF TABLE itab1
FROM A694
WHERE werks in werks.

Luego, realizas lo siguiente:

*Loopeo de los datos de tabla A694.
LOOP ITAB1.

ITAB1-TABNAME = 'A694'.

APPEND ITAB1 TO ITAB.

ENDLOOP.

* Los registros que tengan el campo TABNAME vacio, no vienen de la A694.
LOOP ITAB
WHERE TABNAME EQ SPACE.

ITAB-TABNAME = 'A690'.

MODIFY ITAB.

ENDLOOP.

No sabría decirte si hay otra manera, pero es lo mas sencillo que se me ocurrió.

mogus 26/04/16 14:26:15

Gracias
 
Hola Jess, funcionó perfecto! Muchas Gracias.

Jesicka_21 26/04/16 18:49:55


Buenisimo Mogus, me alegro que te haya podido ayudar.


Husos Horarios son GMT. La hora en este momento es 11:36:51.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web