Añadir campos en ALV

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tabi.rivero
    Junior Member
    • ene
    • 3

    #1

    Añadir campos en ALV

    Hola
    Tengo una duda. Soy Abap Jr apenas 3 semanas con esto de abap . Tengo un problemita con un ALV. Me pidieron una modificación, agregar 2 columnas: denominación de tipo de material y denominación de Gpo. de Artículos.

    Aparte del TYPE-POOLS: slis, el FM = REUSE_ALV_GRID_DISPLAY y el catálogo, tengo esto que creo es importante.
    Tengo esto:

    * Tablas.
    TABLES: mara, "Maestro de Materiales.
    makt. "Textos breves - Material.

    TYPES: BEGIN OF ty_lista,
    matnr LIKE mara-matnr, "No. Material.
    maktx LIKE makt-maktx, "Descrip. Material.
    ersda LIKE mara-ersda, "Fecha de Creación.
    mtart LIKE mara-mtart, "Tipo de Material
    matkl LIKE mara-matkl, "Gpo. de Artículos.
    meins LIKE mara-meins, "UMB.
    gewei LIKE mara-gewei, "UM Peso.
    mtbez LIKE t134t-mtbez, "Add 29.01.2015
    wgbez LIKE t023t-wgbez, "Add 29.01.2015
    END OF ty_lista,

    * Inicio modif. 29.01.2015
    BEGIN OF ty_mtart,
    mtart LIKE t134t-mtart, "Tipo de Material.
    mtbez LIKE t134t-mtbez, "Descrip. Tipo de Material.
    END OF ty_mtart,

    BEGIN OF ty_matkl,
    matkl LIKE t023t-matkl, "Gpo. Artículos.
    wgbez LIKE t023t-wgbez, "Descrip. Gpo. Artículos.
    END OF ty_matkl.
    * Final modif. 29.01.2015

    * Declaración de tablas internas.
    DATA: lt_lista TYPE STANDARD TABLE OF ty_lista WITH HEADER LINE,
    lt_mtart TYPE STANDARD TABLE OF ty_mtart WITH HEADER LINE, "Add 29.01.2015
    lt_matkl TYPE STANDARD TABLE OF ty_matkl WITH HEADER LINE. "Add 29.01.2015

    * Declaraciones del ALV.
    DATA: ls_layout TYPE slis_layout_alv,
    lt_catalog TYPE slis_t_fieldcat_alv,
    ls_catalog TYPE slis_fieldcat_alv.

    * Pantalla de selección.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: so_matnr FOR mara-matnr OBLIGATORY,
    so_ersda FOR mara-ersda,
    so_mtart FOR mara-mtart.
    SELECTION-SCREEN: END OF BLOCK b1.

    START-OF-SELECTION.
    PERFORM obtener_datos.
    PERFORM catalogo_alv.
    PERFORM llamar_alv.

    FORM obtener_datos.
    * Extracción de datos de materiales.
    SELECT mara~matnr
    maktx
    ersda
    mtart
    matkl
    meins
    gewei
    FROM mara INNER JOIN makt
    ON mara~matnr EQ makt~matnr
    INTO TABLE lt_lista
    WHERE mara~matnr IN so_matnr
    AND ersda IN so_ersda
    AND mtart IN so_ersda
    AND spras EQ sy-langu.

    * Inicio modif. 29.01.2015
    * Extracción de denominaciones de tipo de material.
    SELECT mtart
    mtbez
    FROM t134t
    INTO TABLE lt_mtart
    WHERE spras EQ sy-langu.

    * Extracción de denominaciones de Gpo. Artículos.
    SELECT matkl
    wgbez
    FROM t023t
    INTO TABLE lt_matkl
    WHERE spras EQ sy-langu.

    LOOP AT lt_lista.
    READ TABLE lt_lista WITH KEY mtart = lt_lista-mtart.
    IF sy-subrc EQ 0.
    MODIFY lt_lista INDEX sy-tabix TRANSPORTING mtbez.
    ENDIF.

    READ TABLE lt_matkl WITH KEY matkl = lt_lista-matkl.
    IF sy-subrc EQ 0.
    ENDIF.
    ENDLOOP.
    * Final modif. 29.01.2015
    ENDFORM. " OBTENER_DATOS

    En el debug se muestran ya las 2 columnas (ya están en el catálogo) que me piden, pero no hay datos. Hice lo del MODIFY, pero creo que no es eso. No se como unir datos de 2 o mas tablas internas

    Espero puedan ayudarme.

    Saludos.
  • ABellamy
    Member
    • dic
    • 44

    #2
    Añadir campos en ALV

    Hola tabi.rivero
    No tendría caso corregirte pues es algo básico y muy importante en cualquier desarrollo las operaciones con tablas internas, mejor te paso un link del que te puedes aprender, practicar y debugear: https://www.sapnuts.com/courses/core...perations.html
    Sirve de mucho, lo que no entiendas presiona F1, lee la ayuda, realiza muchos ejercicios y debugea, no queda de otra

    Suerte
    Saludos
    Es más fácil encontrar el final del arcoíris que el de un estándar SAP.

    Comentario

    • sconoredhot
      Senior Member
      • feb
      • 341

      #3
      hola

      Hola,

      Si, como dicen arriba deberías debuguearlo.

      Pero fijate que el mayor problema está aca:

      LOOP AT lt_lista.
      READ TABLE lt_lista WITH KEY mtart = lt_lista-mtart.
      ***** aca tenes que leer la otra tabla, no lt_lista ********
      IF sy-subrc EQ 0.
      MODIFY lt_lista INDEX sy-tabix TRANSPORTING mtbez.
      ENDIF.

      READ TABLE lt_matkl WITH KEY matkl = lt_lista-matkl.
      IF sy-subrc EQ 0.
      ******* aca te falta pasar el valor a lt_lista **********
      ENDIF.
      ENDLOOP
      Sebas

      Desarrollador ABAP.

      Comentario

      Trabajando...