Autor Tema: Asignación dinámica a tabla y referencia de campo  (Leído 104 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado akiestudio

  • Novato
  • *
  • Mensajes: 1
  • Karma: +0/-0
    • Ver Perfil
Asignación dinámica a tabla y referencia de campo
« 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

Desconectado Enrique.Borroni

  • Moderador_
  • Usuario Completo
  • *****
  • Mensajes: 86
  • Karma: +2/-0
    • Ver Perfil
Re:Asignación dinámica a tabla y referencia de campo
« Respuesta #1 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.
Saludos.

Atte.,
Enrique Borroni

maito : enrique.borroni@abap.es