Mentor SAP
2017-03-05 Submitted by:- Admin
*&---------------------------------------------------------------------* *& Report ZGS_ALV_HIERSEQUENTIAL_BLOCK *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZGS_ALV_HIERSEQUENTIAL_BLOCK. TYPE-POOLS: slis. TABLES: ekko, vbak. SELECT-OPTIONS: s_ebeln FOR ekko-ebeln, s_vbeln FOR vbak-vbeln. DATA: fcat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE, fcat2 TYPE slis_t_fieldcat_alv WITH HEADER LINE. DATA events TYPE slis_t_event WITH HEADER LINE. DATA: layout1 TYPE slis_layout_alv, layout2 TYPE slis_layout_alv. DATA: key1 TYPE slis_keyinfo_alv, key2 TYPE slis_keyinfo_alv. DATA: BEGIN OF it_ekko OCCURS 0, ebeln LIKE ekko-ebeln, bukrs LIKE ekko-bukrs, lifnr LIKE ekko-lifnr, one, END OF it_ekko. DATA : BEGIN OF it_ekpo OCCURS 0, ebeln LIKE ekko-ebeln, ebelp LIKE ekpo-ebelp, matnr LIKE ekpo-matnr, END OF it_ekpo. DATA : BEGIN OF it_vbak OCCURS 0, vbeln LIKE vbak-vbeln, erdat LIKE vbak-erdat, ernam LIKE vbak-ernam, two, END OF it_vbak. DATA : BEGIN OF it_vbap OCCURS 0, vbeln LIKE vbap-vbeln, posnr LIKE vbap-posnr, matnr LIKE mara-matnr, END OF it_vbap. START-OF-SELECTION. SELECT ebeln bukrs lifnr FROM ekko INTO TABLE it_ekko WHERE ebeln IN s_ebeln. IF it_ekko[] IS NOT INITIAL. SELECT ebeln ebelp matnr FROM ekpo INTO TABLE it_ekpo FOR ALL ENTRIES IN it_ekko WHERE ebeln EQ it_ekko-ebeln. ENDIF. SELECT vbeln erdat ernam FROM vbak INTO TABLE it_vbak WHERE vbeln IN s_vbeln. IF it_vbak[] IS NOT INITIAL. SELECT vbeln posnr matnr FROM vbap INTO TABLE it_vbap FOR ALL ENTRIES IN it_vbak WHERE vbeln EQ it_vbak-vbeln. ENDIF. fcat1-fieldname = 'EBELN'. fcat1-tabname = 'IT_EKKO'. fcat1-ref_fieldname = 'EBELN'. fcat1-ref_tabname = 'EKKO'. APPEND fcat1. CLEAR fcat1. fcat1-fieldname = 'BUKRS'. fcat1-tabname = 'IT_EKKO'. fcat1-ref_fieldname = 'BUKRS'. fcat1-ref_tabname = 'EKKO'. APPEND fcat1. CLEAR fcat1. fcat1-fieldname = 'LIFNR'. fcat1-tabname = 'IT_EKKO'. fcat1-ref_fieldname = 'LIFNR'. fcat1-ref_tabname = 'EKKO'. APPEND fcat1. CLEAR fcat1. fcat1-fieldname = 'EBELP'. fcat1-tabname = 'IT_EKPO'. fcat1-ref_fieldname = 'EBELP'. fcat1-ref_tabname = 'EKPO'. APPEND fcat1. CLEAR fcat1. fcat1-fieldname = 'MATNR'. fcat1-tabname = 'IT_EKPO'. fcat1-ref_fieldname = 'MATNR'. fcat1-ref_tabname = 'EKPO'. APPEND fcat1. CLEAR fcat1. fcat2-fieldname = 'VBELN'. fcat2-tabname = 'IT_VBAK'. fcat2-ref_fieldname = 'VBELN'. fcat2-ref_tabname = 'VBAK'. APPEND fcat2. CLEAR fcat2. fcat2-fieldname = 'ERDAT'. fcat2-tabname = 'IT_VBAK'. fcat2-ref_fieldname = 'ERDAT'. fcat2-ref_tabname = 'VBAK'. APPEND fcat2. CLEAR fcat2. fcat2-fieldname = 'ERNAM'. fcat2-tabname = 'IT_VBAK'. fcat2-ref_fieldname = 'ERNAM'. fcat2-ref_tabname = 'VBAK'. APPEND fcat2. CLEAR fcat2. fcat2-fieldname = 'POSNR'. fcat2-tabname = 'IT_VBAP'. fcat2-ref_fieldname = 'POSNR'. fcat2-ref_tabname = 'VBAP'. APPEND fcat2. CLEAR fcat2. fcat2-fieldname = 'MATNR'. fcat2-tabname = 'IT_VBAP'. fcat2-ref_fieldname = 'MATNR'. fcat2-ref_tabname = 'VBAP'. APPEND fcat2. CLEAR fcat2. key1-header01 = 'EBELN'. key1-item01 = 'EBELN'. layout1-expand_fieldname = 'ONE'. key2-header01 = 'VBELN'. key2-item01 = 'VBELN'. layout2-expand_fieldname = 'TWO'. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' EXPORTING i_callback_program = sy-cprog. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND' EXPORTING is_layout = layout1 it_fieldcat = fcat1[] is_keyinfo = key1 i_header_tabname = 'IT_EKKO' i_item_tabname = 'IT_EKPO' it_events = events[] * IT_SORT = * I_TEXT = ' ' TABLES t_outtab_header = it_ekko t_outtab_item = it_ekpo * EXCEPTIONS * PROGRAM_ERROR = 1 * MAXIMUM_OF_APPENDS_REACHED = 2 * OTHERS = 3 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND' EXPORTING is_layout = layout2 it_fieldcat = fcat2[] is_keyinfo = key2 i_header_tabname = 'IT_VBAK' i_item_tabname = 'IT_VBAP' it_events = events[] * IT_SORT = * I_TEXT = ' ' TABLES t_outtab_header = it_vbak t_outtab_item = it_vbap * EXCEPTIONS * PROGRAM_ERROR = 1 * MAXIMUM_OF_APPENDS_REACHED = 2 * OTHERS = 3 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.