Estructura a tabla

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Cristi_RP
    Junior Member
    • dic
    • 7

    #1

    Estructura a tabla

    Quiero hacer una función en la que se le pase una estructura y me lo guarde en una tabla con los siguientes campos (Nombre campo, valor campo).
    A la función se le pasará la estructura y el nombre de la tabla donde guardaremos la información de la estructura.
    Sería lo siguiente:

    Estructura: estr
    estr-nombre_campo1 = valor1
    estr-nombre_campo2 = valor2

    Pasarlo a una tabla que qdaria de la siguiente manera:
    Primer registro
    tabla-nombre = estr-nombre_campo1
    tabla-valor = valor1
    Segundo registro
    tabla-nombre = estr-nombre_campo2
    tabla-valor = valor2

    Supongo que tengo que hacer con field-symbols pero no me ocurre como. Mi problema esta en como hacer referencia a los campos de la estructura porque se supone que pueden pasar estructuras de distinto tipo.
    Gracias de antemano.
  • nenuke
    Member
    • sep
    • 87

    #2
    Hola,

    pues se me ocurre que puedes recuperar el nombre de los campos de la estructura usando la funcion ALV_REUSE_FIELDCATALOG_MERGE y su contenido como bien has dicho utiizando field-symbols.
    Ejecuta el código de ejemplo que te adjunto y espero que te oriente un poco en su funcionamiento. Tu fución será igual solo deberás cambiar el write en pantalla por el insert en tu tabla.
    Pregúntame sii no esta lo suficientemente claro:

    Código:
    TYPE-POOLS: slis.
    
    * Esta  es una estructura de ejemplo
    DATA: BEGIN OF line,
            col1 TYPE i VALUE 11,
            col2 TYPE i VALUE 22,
            col3 TYPE i VALUE 33,
          END OF line.
    
    * Almacena el numero de columnas de la estructura import
    DATA colum TYPE i.
    * Estructura para recoger el catálogo de campos
    * Como si fueras a hacer un ALV
    * Declaro tambien una wa para poder leer la estructura fields.
    DATA: fields TYPE slis_t_fieldcat_alv,
          wa_fields LIKE LINE OF fields.
    
    FIELD-SYMBOLS: <f1> TYPE ANY, <f2> TYPE ANY.
    
    
    ASSIGN line TO <f1>.
    
    * Recuperamos la información necesaria sobre la estructura import
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
        i_program_name     = sy-repid
        i_internal_tabname = 'LINE'
        i_inclname         = sy-repid
      CHANGING
        ct_fieldcat        = fields.
    
    DESCRIBE TABLE fields LINES colum.
    
    LOOP AT fields INTO wa_fields.
      WRITE wa_fields-fieldname.
    ENDLOOP.
    
    DO colum TIMES.
      ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f2>.
      WRITE:/ <f2>.
    ENDDO.
    Un saludo.

    Comentario

    Trabajando...