*&---------------------------------------------------------------------*
*& Report ZTEST_ALV_BLOCK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_ALV_BLOCK.
*&---------------------------------------------------------------------*
*& Report Z99_ALVBLOCK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_mara,
matnr TYPE matnr,
matkl TYPE matkl,
END OF ty_mara,
BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE werks_d,
END OF ty_marc,
BEGIN OF ty_makt,
matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_makt.
DATA:it_mara TYPE STANDARD TABLE OF ty_mara,
it_marc TYPE STANDARD TABLE OF ty_marc,
it_makt TYPE STANDARD TABLE OF ty_makt,
v_matnr TYPE mara-matnr.
SELECT-OPTIONS: s_matnr FOR v_matnr.
DATA :wa_fieldcat TYPE slis_fieldcat_alv, "workspace
v_layout TYPE slis_layout_alv,
it_events1 TYPE slis_t_event, "it is for events: we are using top of page here
it_events2 TYPE slis_t_event, "it is for events we are using top of page here
it_events3 TYPE slis_t_event, "it is for events we are using top of page here
wa_events TYPE slis_alv_event,
it_fieldcat_mara TYPE slis_t_fieldcat_alv,
it_fieldcat_marc TYPE slis_t_fieldcat_alv,
it_fieldcat_makt TYPE slis_t_fieldcat_alv. " Table
START-OF-SELECTION.
" Simple selection of data
SELECT matnr matkl FROM mara INTO TABLE it_mara WHERE matnr IN s_matnr.
IF it_mara IS NOT INITIAL.
SELECT matnr werks FROM marc INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr EQ it_mara-matnr.
SELECT matnr maktx FROM makt INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr EQ it_mara-matnr AND spras EQ sy-langu.
ENDIF.
PERFORM f_buildcatalog.
" Now lets start ALV block display
END-OF-SELECTION.
"Start the ALV block list
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
.
" Just append each ALV required,
" All first 4 export parameters are mandatory, you can leave it blank though like i_tabname here
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = v_layout
it_fieldcat = it_fieldcat_mara
i_tabname = ''
it_events = it_events1
* IT_SORT =
* I_TEXT = ' '
TABLES
t_outtab = it_mara
* 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_APPEND'
EXPORTING
is_layout = v_layout
it_fieldcat = it_fieldcat_marc
i_tabname = ''
it_events = it_events2
* IT_SORT =
* I_TEXT = ' '
TABLES
t_outtab = it_marc
* 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_APPEND'
EXPORTING
is_layout = v_layout
it_fieldcat = it_fieldcat_makt
i_tabname =''
it_events = it_events3
* IT_SORT =
* I_TEXT = ' '
TABLES
t_outtab = it_makt
* 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.
" After all appending , just display the list: without this function call , list wont be displayed
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
"TOP OF PAGE for all 3 ALV list
*&---------------------------------------------------------------------*
*& Form top_page1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_page1.
WRITE:/ 'MARA DETAILS' COLOR 5.
ENDFORM. "TOP_PAGE1
*&---------------------------------------------------------------------*
*& Form top_page2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_page2.
WRITE:/ 'MARC DETAILS' COLOR 5.
ENDFORM. "TOP_PAGE2
*&---------------------------------------------------------------------*
*& Form top_page3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_page3.
WRITE:/ 'MAKT DETAILS' COLOR 5.
ENDFORM. "TOP_PAGE
*&---------------------------------------------------------------------*
*& Form f_buildcatalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_buildcatalog.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'MARA'.
APPEND wa_fieldcat TO it_fieldcat_mara.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'MATKL'.
wa_fieldcat-ref_tabname = 'MARA'.
APPEND wa_fieldcat TO it_fieldcat_mara.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'MARA'.
APPEND wa_fieldcat TO it_fieldcat_marc.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-ref_tabname = 'MARC'.
APPEND wa_fieldcat TO it_fieldcat_marc.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-ref_tabname = 'MARA'.
APPEND wa_fieldcat TO it_fieldcat_makt.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'MATKX'.
wa_fieldcat-ref_tabname = 'MAKT'.
APPEND wa_fieldcat TO it_fieldcat_makt.
CLEAR wa_fieldcat.
"Assign each top of page of alv list to a form, where you will display the header/any text
wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_PAGE1'.
APPEND wa_events TO it_events1.
CLEAR wa_events.
wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_PAGE2'.
APPEND wa_events TO it_events2.
CLEAR wa_events.
wa_events-name = 'TOP_OF_PAGE'.
wa_events-form = 'TOP_PAGE3'.
APPEND wa_events TO it_events3.
CLEAR wa_events.
ENDFORM. "f_buildcatalog
No comments:
Post a Comment