REPORT ZSG_ALV_HIERARCHICAL_SO.
TYPE-POOLS:SLIS.
TABLES:VBAK,VBAP.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN, "SALES DOC
ERDAT TYPE VBAK-ERDAT, "DATE ON WHICH RECORD CREATED
ERNAM TYPE VBAK-ERNAM, "NAME OF PERSON RECORD CREATED
AUDAT TYPE VBAK-AUDAT, "DOC DATE
AUART TYPE VBAK-AUART, "SALES DOC
VKORG TYPE VBAK-VKORG, "Sales Organization
VTWEG TYPE VBAK-VTWEG, "Distribution Channel
SPART TYPE VBAK-SPART, "Division
VKGRP TYPE VBAK-VKGRP, "Sales Group
EXPAND,
END OF TY_VBAK.
DATA:LT_VBAK TYPE TABLE OF TY_VBAK,
LS_VBAK TYPE TY_VBAK.
TYPES:BEGIN OF TY_VBAP,
VBELN TYPE VBAP-VBELN, "SALES DOC
POSNR TYPE VBAP-POSNR, "SALES DOC ITEM
MATNR TYPE VBAP-MATNR, "MATERIAL NUMBER
MATKL TYPE VBAP-MATKL, "MATERIAL GRP
WERKS TYPE VBAP-WERKS, "PLANT
LGORT TYPE VBAP-LGORT, "STOARGE LOC
NETPR TYPE VBAP-NETPR, "NETPRICE
END OF TY_VBAP.
DATA: LT_VBAP TYPE TABLE OF TY_VBAP,
LS_VBAP TYPE TY_VBAP,
LT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
* LS_FCAT TYPE SLIS_FIELDCAT_ALV,
S_KEYINFO TYPE SLIS_KEYINFO_ALV,
S_LAYOUT TYPE SLIS_LAYOUT_ALV.
SELECTION-SCREEN : BEGIN OF BLOCK B WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : P_VBELN FOR VBAK-VBELN.
SELECTION-SCREEN : END OF BLOCK B.
START-OF-SELECTION.
PERFORM READ.
PERFORM FCAT.
PERFORM KEYINFO.
PERFORM DISPLAY.
PERFORM LAYOUT.
*&---------------------------------------------------------------------*
*& Form READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM READ .
SELECT VBELN
ERDAT
ERNAM
AUDAT
AUART
VKORG
VTWEG
SPART
VKGRP
FROM VBAK INTO TABLE LT_VBAK
WHERE VBELN IN P_VBELN.
IF LT_VBAK[] IS NOT INITIAL.
SELECT VBELN
POSNR
MATNR
MATKL
WERKS
LGORT
NETPR
FROM VBAP INTO TABLE LT_VBAP
FOR ALL ENTRIES IN LT_VBAK
WHERE VBELN = LT_VBAK-VBELN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FCAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'LT_VBAK'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = LT_FCAT[]
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'LT_VBAP'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = LT_FCAT[]
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form KEYINFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM KEYINFO .
S_KEYINFO-HEADER01 = 'VBELN'.
S_KEYINFO-ITEM01 = 'VBELN'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY .
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 = S_LAYOUT
IT_FIELDCAT = LT_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 = 'LT_VBAK'
I_TABNAME_ITEM = 'LT_VBAP'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = S_KEYINFO
* 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 = LT_VBAK
T_OUTTAB_ITEM = LT_VBAP
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM LAYOUT .
S_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
S_LAYOUT-WINDOW_TITLEBAR = 'HIERARCHICAL ALV LIST DISPLAY'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM.