Wednesday, 23 August 2017

Hierarchical sequential list ALV.

This post shows how to display a hierarchical sequential list ALV.
TABLESMARA,MAKT.
TYPE-POOLSSLIS.
TYPESBEGIN OF ST_MARA,
       EXPAND,
       MATNR TYPE MATNR,
       ERSDA TYPE ERSDA,
       ERNAM TYPE ERNAM,
       END OF ST_MARA.

TYPESBEGIN OF ST_MAKT,
       MATNR TYPE MATNR,
       SPRAS TYPE SPRAS,
       MAKTX TYPE MAKTX,
       END OF ST_MAKT.

DATAIT_MARA TYPE TABLE OF ST_MARA,
      WA_MARA TYPE MARA,
      IT_MAKT TYPE TABLE OF ST_MAKT,
      WA_MAKT TYPE MAKT.

 DATAIT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
       WA_FCAT TYPE SLIS_FIELDCAT_ALV.

 DATAWA_KEY TYPE SLIS_KEYINFO_ALV.
 DATAWA_LAYOUT TYPE SLIS_LAYOUT_ALV.

 SELECT-OPTIONS:S_MATNR FOR MARA-MATNR.

 SELECT  MATNR
         ERSDA
         ERNAM
         FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA WHERE MATNR IN S_MATNR.

   IF SY-SUBRC 0.
     SORT IT_MARA BY MATNR.
     ENDIF.

     IF IT_MARA IS NOT INITIAL.
       SELECT MATNR
              SPRAS
              MAKTX
              FROM MAKT INTO TABLE IT_MAKT
              FOR ALL ENTRIES IN IT_MARA
              WHERE MATNR  IT_MARA-MATNR.

         IF SY-SUBRC 0.
           SORT IT_MAKT BY MATNR.
           ENDIF.
           ENDIF.

WA_LAYOUT-EXPAND_FIELDNAME 'EXPAND'.
WA_LAYOUT-COLWIDTH_OPTIMIZE 'X'.

WA_KEY-HEADER01 'MATNR'.
WA_KEY-ITEM01 'MATNR'.


WA_FCAT-COL_POS '1'.
WA_FCAT-TABNAME 'IT_MARA'.
WA_FCAT-FIELDNAME 'MATNR'.
WA_FCAT-SELTEXT_M 'MATERIAL NUMBER'.
WA_FCAT-KEY 'X'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-COL_POS '2'.
WA_FCAT-TABNAME 'IT_MARA'.
WA_FCAT-FIELDNAME 'ERSDA'.
WA_FCAT-SELTEXT_M 'CREATED ON'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-COL_POS '3'.
WA_FCAT-TABNAME 'IT_MARA'.
WA_FCAT-FIELDNAME 'ERNAM'.
WA_FCAT-SELTEXT_M 'CREATED BY'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-COL_POS '4'.
WA_FCAT-TABNAME 'IT_MAKT'.
WA_FCAT-FIELDNAME 'SPRAS'.
WA_FCAT-SELTEXT_M 'LANGUAGE'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

WA_FCAT-COL_POS '4'.
WA_FCAT-TABNAME 'IT_MAKT'.
WA_FCAT-FIELDNAME 'MAKTX'.
WA_FCAT-SELTEXT_M 'DESCRIPTION'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
  EXPORTING
*   I_INTERFACE_CHECK              = ' '
   I_CALLBACK_PROGRAM             SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
   IS_LAYOUT                      WA_LAYOUT
   IT_FIELDCAT                    IT_FCAT
*   IT_EXCLUDING                   =
*   IT_SPECIAL_GROUPS              =
*   IT_SORT                        =
*   IT_FILTER                      =
*   IS_SEL_HIDE                    =
*   I_SCREEN_START_COLUMN          = 0
*   I_SCREEN_START_LINE            = 0
*   I_SCREEN_END_COLUMN            = 0
*   I_SCREEN_END_LINE              = 0
*   I_DEFAULT                      = 'X'
*   I_SAVE                         = ' '
*   IS_VARIANT                     =
*   IT_EVENTS                      =
*   IT_EVENT_EXIT                  =
    i_tabname_header               'IT_MARA'
    i_tabname_item                 'IT_MAKT'
*   I_STRUCTURE_NAME_HEADER        =
*   I_STRUCTURE_NAME_ITEM          =
    is_keyinfo                     WA_KEY
*   IS_PRINT                       =
*   IS_REPREP_ID                   =
*   I_BYPASSING_BUFFER             =
*   I_BUFFER_ACTIVE                =
*   IR_SALV_HIERSEQ_ADAPTER        =
*   IT_EXCEPT_QINFO                =
*   I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER        =
*   ES_EXIT_CAUSED_BY_USER         =
  TABLES
    t_outtab_header                IT_MARA
    t_outtab_item                  IT_MAKT
 EXCEPTIONS
   PROGRAM_ERROR                  1
   OTHERS                         2
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

No comments:

Post a Comment