PDA

Ver la Versión Completa : Definir Work Area Dinamica


Ariel-StaFe
31/03/22, 15:07:41
Estimados
Necesito loopear una tabla dinamica donde puede venir la estructura de la vbrk, vbrp, etc, cualquier tabla.
pero debo hacerlo con un work area.
ejemplo
LOOP AT <all_table> INTO wa_tab.
all_table puede venir cualquier tabla..
tengo el nombre de la tabla en un campo..
como defino wa_tab para que pueda contemplar cualquier estructura ?
asignandole la tabla que tengo en el campo ?
estuve buscando y haciendo pruebas y no logro resolverlo.

y desp tengo que asignar los campos de esa work area... trabajarlos, concatenar.
tengo los campos en otra tabla interna -- ti-campo1, ti-campo2

vbrk vbeln vbrk vbtyp
como hago referencia ? ejemplo concatenate wa_tab-(ti-campo1) wa-tab-(ti-campo3).. into...

No se si logro explicarme

Desde ya muchas gracias.

Ariel-StaFe
05/04/22, 18:47:46
Estimados..
Logre resolver lo del loopeo.
Pero me falta definir la work area dinamica.
Les dejo lo del loopeo por si a alguien le sirve.

DATA: wa_tab TYPE vbrk
(aca tengo que definir .. VBRK.. pero aun no encuentro como..
deberia ser un FS tambien.. puede venir vbrk, vbrp, vbfa, cualq
tabla)

FIELD-SYMBOLS: <fs_c> TYPE ANY.

DATA: nro_col TYPE i VALUE 0.
DATA: wtc(30),
l_campo(50).
LOOP AT <all_table> INTO wa_tab.
CLEAR v_registro.
LOOP AT tcol.
ADD 1 TO nro_col.

IF nro_col = 1.
CONCATENATE 'WA_TAB-' tcol-col INTO wtc.
ASSIGN (wtc) TO <fs_c>.
v_registro = ( <fs_c> ).
ELSE.
CONCATENATE 'WA_TAB-' tcol-col INTO wtc.
ASSIGN (wtc) TO <fs_c>.
l_campo = ( <fs_c> ).
CONCATENATE v_registro ';' l_campo INTO v_registro.
ENDIF.
ENDLOOP.

en v_registro queda la linea que tengo que descargar en formato.csv

Espero les sirva a algunos..
Si alguien me puede dar una mano con al definicion de wa_tab.. que deberia ser un fs del FS <ALL_TABLE>
les super agradezco

Saludos.

Ariel-StaFe
11/04/22, 12:15:59
Gente.
Ya pude resolverlo.. fue todo por Field Smbols
Les dejo el código de como lo resolví, por si alguien lo necesita

* Descarga de Items.
FIELD-SYMBOLS: <fs_c> TYPE ANY.
DATA: nro_col TYPE i VALUE 0.
DATA: wtc(30),
l_campo(50).
FIELD-SYMBOLS: <wa_tab> TYPE ANY.
LOOP AT <all_table> ASSIGNING <wa_tab>.

CLEAR: v_registro, nro_col.
LOOP AT tcol WHERE mark = 'X'.
ADD 1 TO nro_col.
IF nro_col = 1.
CONCATENATE '<WA_TAB>-' tcol-col INTO wtc.
ASSIGN (wtc) TO <fs_c>.
v_registro = ( <fs_c> ).
ELSE.
CONCATENATE '<WA_TAB>-' tcol-col INTO wtc.
ASSIGN (wtc) TO <fs_c>.
l_campo = ( <fs_c> ).
CONDENSE l_campo.
CONCATENATE v_registro ';' l_campo INTO v_registro.
ENDIF.
ENDLOOP.
TRANSFER v_registro TO txtfile.
ENDLOOP.

AlvaroLV
03/05/22, 06:59:36
Estimados
Necesito loopear una tabla dinamica donde puede venir la estructura de la vbrk, vbrp, etc, cualquier tabla.
pero debo hacerlo con un work area.
ejemplo
LOOP AT <all_table> INTO wa_tab.
all_table puede venir cualquier tabla..
tengo el nombre de la tabla en un campo..
como defino wa_tab para que pueda contemplar cualquier estructura ?
asignandole la tabla que tengo en el campo ?
estuve buscando y haciendo pruebas y no logro resolverlo.

y desp tengo que asignar los campos de esa work area... trabajarlos, concatenar.
tengo los campos en otra tabla interna -- ti-campo1, ti-campo2

vbrk vbeln vbrk vbtyp
como hago referencia ? ejemplo concatenate wa_tab-(ti-campo1) wa-tab-(ti-campo3).. into...

No se si logro explicarme

Desde ya muchas gracias.


<wa_tab> Field symbol tipo any.
[tabla_campos] Tu tabla donde tienes los campos.
<registro_campo> Field symbol de la estructura de la tabla de tus campos.
<valor> Field symbol tipo any.

LOOP AT <all_table> INTO <wa_tab>.
LOOP [tabla_campos] ASSIGNING <registro_campo>.
ASSIGN COMPONENT <registro_campo>-[campo_donde_esta_el_campo] OF STRUCTURE <wa_tab> TO <valor>.
ENDLOOP.
ENDLOOP.

En el FS <valor> se tiene el valor de cada campo