Foro de programación ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: akiestudio en 06 de Julio de 2018, 09:30:21 am
-
Me gustaría saber si hay alguna manera de realizar la asignación dinamica a una campo de una estructura para hacer una select, mediante field symbol o cl_abap_structdescr etc...
Data: lv_struc type zstruc_1,
lv_struct_2 type zstruct_2.
if lv_type eq 1.
lv_test = * aquí cargo el valor de lv_struc.
else.
lv_test = * aquí cargo el valor de lv_struc_2.
endif.
** la asignación de lv_test tendría que ser dinámica, no me valdría ponerlo literalmente, por eso quiero usar cl_abap_structdescr etc...
select single * into ztest
from mara
where mantnr eq lv_test-mantnr.
Muchas gracias
-
Aquí te dejo un ejemplo...
DATA : lt_mara TYPE STANDARD TABLE OF mara.
DATA : ld_nomb_tabla TYPE tabname.
DATA : ld_tbi_dinamica TYPE tabname.
DATA : ld_condicion TYPE string.
*
DATA : ld_matnr TYPE matnr.
DATA : ld_matkl TYPE matkl.
*
FIELD-SYMBOLS : <fs_tabla_interna> TYPE STANDARD TABLE.
*
ld_nomb_tabla = 'MARA'.
ld_tbi_dinamica = 'LT_MARA'.
ld_matnr = '10050'.
ld_matkl = '0001'.
*
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ld_matnr
IMPORTING
output = ld_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
*
CONCATENATE 'MATNR EQ' 'LD_MATNR' 'AND'
'MATKL EQ' 'LD_MATKL'
INTO ld_condicion SEPARATED BY space.
*
ASSIGN (ld_tbi_dinamica) TO <fs_tabla_interna>.
IF ( sy-subrc EQ 0 ).
SELECT *
INTO TABLE <fs_tabla_interna>
FROM (ld_nomb_tabla)
WHERE (ld_condicion).
ENDIF.
Saludos.