Foro de programación ABAP

SAP / ABAP => Programación ABAP => Mensaje iniciado por: akiestudio en 06 de Julio de 2018, 09:30:21 am

Título: Asignación dinámica a tabla y referencia de campo
Publicado 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...

Código: [Seleccionar]
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
Título: Re:Asignación dinámica a tabla y referencia de campo
Publicado por: Enrique.Borroni en 06 de Julio de 2018, 04:29:38 pm
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.