Ejemplo de ALV list con cabecera

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • angus174
    Junior Member
    • dic
    • 4

    #1

    Ejemplo de ALV list con cabecera

    Hola necesito hacer un ALV list que tiene varias cabeceras + info. ej.
    cab 1 tendria datos de region 1
    det 1 documentos y nombres de clientes de esa region

    cab2 reg 2
    det 2 datos de doc y region 2

    y asi por varias regiones...

    se puede hacer con el REUSE_ALV_LIST_DISPLAY o hay que usar
    alguno otra función para ALV.
    Alguien tendria algún ejemplo de como podria hacerlo?
    desde ya muchas gracias.
  • Claudia Valdespino
    Member
    • mar
    • 54

    #2
    Hola, lo que quieres hacer es un ALV jerárquico y para ello usa la siguiente función: REUSE_ALV_HIERSEQ_LIST_DISPLAY. Te mando un ejemplito para que te guies... es muy sencillo, lo único nuevo es el INIT_SORT y el INIT_KEY en donde indicas cuales son la claves de tu cabecera y el detalle para que se puedan relacionar

    REPORT Z_PRT_ERC_LOGLIQ.

    TABLES: ZTERC_LOGLIQ, T001.
    TYPE-POOLS: SLIS.

    * PARAMETROS DE SELECCION
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS:
    S_BUKRS FOR ZTERC_LOGLIQ-BUKRS OBLIGATORY.

    PARAMETERS:
    P_GJAHR LIKE ZTERC_LOGLIQ-GJAHR OBLIGATORY.

    SELECT-OPTIONS:
    S_LBELN FOR ZTERC_LOGLIQ-NROLIQ,
    S_MABER FOR ZTERC_LOGLIQ-AREAG,
    S_ERSDA FOR ZTERC_LOGLIQ-ERSDA,
    S_STATS FOR ZTERC_LOGLIQ-STATS.
    SELECTION-SCREEN END OF BLOCK B1.

    * ESTRUCTURA DEL ALV
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
    GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
    GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
    GS_KEY TYPE SLIS_KEYINFO_ALV,
    G_REPID LIKE SY-REPID,
    GT_EVENTS TYPE SLIS_T_EVENT.

    * TABLA INTERNA PARA EL CATALOGO DE DATOS
    DATA: BEGIN OF T_ZTERC_LOGLIQ OCCURS 0.
    INCLUDE STRUCTURE ZTERC_LOGLIQ.
    DATA: END OF T_ZTERC_LOGLIQ.

    DATA: BEGIN OF T_HEADER OCCURS 0,
    IND,
    BUKRS LIKE ZTERC_LOGLIQ-BUKRS,
    AREAG LIKE ZTERC_LOGLIQ-AREAG,
    END OF T_HEADER.

    * INICIO
    START-OF-SELECTION.
    G_REPID = SY-REPID.
    PERFORM GET_DATA.
    PERFORM INIT_FIELDCAT.
    PERFORM INIT_SORT.
    PERFORM INIT_LAYOUT.
    PERFORM INIT_KEY.
    PERFORM INIT_EVENT.
    PERFORM REPORTE.

    *&---------------------------------------------------------------------*
    *& Form GET_DATA
    *&---------------------------------------------------------------------*
    FORM GET_DATA .
    SELECT * INTO CORRESPONDING FIELDS OF TABLE T_ZTERC_LOGLIQ
    FROM ZTERC_LOGLIQ
    WHERE BUKRS IN S_BUKRS AND
    GJAHR = P_GJAHR AND
    NROLIQ IN S_LBELN AND
    AREAG IN S_MABER AND
    ERSDA IN S_ERSDA AND
    STATS IN S_STATS.

    LOOP AT T_ZTERC_LOGLIQ.
    MOVE-CORRESPONDING T_ZTERC_LOGLIQ TO T_HEADER.
    COLLECT T_HEADER.
    ENDLOOP.
    ENDFORM. " GET_DATA

    *&---------------------------------------------------------------------*
    *& Form INIT_FIELDCAT
    *&---------------------------------------------------------------------*
    FORM INIT_FIELDCAT .
    CLEAR GT_FIELDCAT.
    REFRESH GT_FIELDCAT.

    * CABECERA*
    GT_FIELDCAT-FIELDNAME = 'BUKRS'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_HEADER'.
    GT_FIELDCAT-SELTEXT_L = 'Sociedad'.
    GT_FIELDCAT-OUTPUTLEN = '9'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'AREAG'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_HEADER'.
    GT_FIELDCAT-SELTEXT_L = 'Area Gestora'.
    GT_FIELDCAT-OUTPUTLEN = '13'.
    APPEND GT_FIELDCAT.

    * DETALLE*
    GT_FIELDCAT-FIELDNAME = 'NROLIQ'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Liquidación'.
    GT_FIELDCAT-OUTPUTLEN = '12'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'GJAHR'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Ejercicio'.
    GT_FIELDCAT-OUTPUTLEN = '10'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'ERSDA'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Fec. Registro'.
    GT_FIELDCAT-OUTPUTLEN = '14'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'UDFTIME'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Hra. Registro'.
    GT_FIELDCAT-OUTPUTLEN = '14'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'ERNAM'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Usuario obs.'.
    GT_FIELDCAT-OUTPUTLEN = '20'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'STATS'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Estado'.
    GT_FIELDCAT-OUTPUTLEN = '7'.
    APPEND GT_FIELDCAT.

    GT_FIELDCAT-FIELDNAME = 'OBSER'.
    GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
    GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_FIELDCAT-SELTEXT_L = 'Observación'.
    GT_FIELDCAT-OUTPUTLEN = '255'.
    APPEND GT_FIELDCAT.
    ENDFORM. " INIT_FIELDCAT

    *&---------------------------------------------------------------------*
    *& Form INIT_SORT
    *&---------------------------------------------------------------------*
    FORM INIT_SORT .
    CLEAR GT_SORT.
    GT_SORT-TABNAME = 'T_HEADER'.
    GT_SORT-FIELDNAME = 'BUKRS'.
    GT_SORT-UP = 'X'.
    GT_SORT-SPOS = 1.
    APPEND GT_SORT.

    CLEAR GT_SORT.
    GT_SORT-TABNAME = 'T_HEADER'.
    GT_SORT-FIELDNAME = 'AREAG'.
    GT_SORT-UP = 'X'.
    GT_SORT-SPOS = 2.
    APPEND GT_SORT.

    CLEAR GT_SORT.
    GT_SORT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_SORT-FIELDNAME = 'BUKRS'.
    GT_SORT-UP = 'X'.
    GT_SORT-SPOS = 1.
    APPEND GT_SORT.

    CLEAR GT_SORT.
    GT_SORT-TABNAME = 'T_ZTERC_LOGLIQ'.
    GT_SORT-FIELDNAME = 'AREAG'.
    GT_SORT-UP = 'X'.
    GT_SORT-SPOS = 2.
    APPEND GT_SORT.

    ENDFORM. " INIT_SORT

    *&---------------------------------------------------------------------*
    *& Form INIT_LAYOUT
    *&---------------------------------------------------------------------*
    FORM INIT_LAYOUT .
    GS_LAYOUT-ZEBRA = 'X'.
    GS_LAYOUT-EXPAND_FIELDNAME = 'IND'.
    GS_LAYOUT-EXPAND_ALL = 'X'.
    ENDFORM. " INIT_LAYOUT

    *&---------------------------------------------------------------------*
    *& Form INIT_KEY
    *&---------------------------------------------------------------------*
    FORM INIT_KEY .
    GS_KEY-HEADER01 = 'BUKRS'.
    GS_KEY-ITEM01 = 'BUKRS'.
    GS_KEY-HEADER02 = 'AREAG'.
    GS_KEY-ITEM02 = 'AREAG'.
    ENDFORM. " INIT_KEY

    *&---------------------------------------------------------------------*
    *& Form INIT_EVENT
    *&---------------------------------------------------------------------*
    FORM INIT_EVENT .
    DATA: C_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_PAGE',
    EVENT TYPE SLIS_ALV_EVENT.

    EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
    EVENT-FORM = 'TOP_PAGE'.
    APPEND EVENT TO GT_EVENTS.
    ENDFORM. " INIT_EVENT

    *&---------------------------------------------------------------------*
    *& Form REPORTE
    *&---------------------------------------------------------------------*
    FORM REPORTE .
    * CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    * CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = G_REPID
    IS_LAYOUT = GS_LAYOUT
    IT_FIELDCAT = GT_FIELDCAT[]
    IT_SORT = GT_SORT[]
    I_TABNAME_HEADER = 'T_HEADER'
    I_TABNAME_ITEM = 'T_ZTERC_LOGLIQ'
    IS_KEYINFO = GS_KEY
    IT_EVENTS = GT_EVENTS
    TABLES
    T_OUTTAB_HEADER = T_HEADER
    T_OUTTAB_ITEM = T_ZTERC_LOGLIQ
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    ENDFORM. " REPORTE

    *---------------------------------------------------------------------*
    * FORM TOP_PAGE *
    *---------------------------------------------------------------------*
    FORM TOP_PAGE.
    WRITE:/ TEXT-006, SY-REPID. "Reporte
    WRITE:/ TEXT-007. "Descripción

    WRITE:/115(8) TEXT-003, 124(10) SY-DATUM. "Fecha
    WRITE:/115(8) TEXT-004, 124(8) SY-UZEIT. "Hora
    WRITE:/115(8) TEXT-005, 124(1) SY-PAGNO. "Pagina

    WRITE:/1(150) TEXT-002 CENTERED. "HISTORIAL DE LIQUIDACIONES
    SKIP 1.
    ENDFORM.

    Suerte!!
    Saludos,

    Claudia V.

    Comentario

    • architek
      Junior Member
      • abr
      • 14

      #3
      Me sirve de mucha ayuda Claudia Valdespino ahorita estoy buscando ejemplos sobre ALV jerarquicos, para tener una base o hacer uno estandar para nada mas modificarle ciertas cosas. Gracias.

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Hola, aqui tienes mas ejemplos de ALV Jerarquico

        BCALV_TEST_HIERSEQ_LIST
        BCALV_TEST_HIERSEQ_LIST_EVENTS

        Espero te sirva ....
        David Carballido Córdova

        Comentario

        • DavidXD_XD
          Moderator
          • ago
          • 1255

          #5
          Aqui encontre un reporte muy bueno en el que la salida es como tu estas buscando, mas de 1 cabecera .... el reporte es relacionado a activos fijos, seria cuestion de darle una debuggeada al report: RAABGA_ALV01, espero te ayude ....
          Archivos Adjuntos
          David Carballido Córdova

          Comentario

          • architek
            Junior Member
            • abr
            • 14

            #6
            gracias DavidXD_XD me sirven de mucha ayuda. los checare y vere que tal. de nuevo gracias.

            Comentario

            • i_arnaiz
              Junior Member
              • sep
              • 13

              #7
              Te recomiendo que eches un ojo a esta entrada:

              http://sap4.com/wiki/index.php?title=ZIALV

              Es un include con el que podreis hacer rapidamente ALV GRID, ALV LIST y ALV Jerarquico de un modo muy sencillo.

              Un saludo.

              Nacho

              Comentario

              Trabajando...