ALV Grid Report - Multiple Tables.
In this simple example , we are showing how to use mutiple tables in one ALV.REUSE_ALV_GRID_DISPLAY we have to pass program name, field catalog table and output table. In this program we have taken 3 tables and created a simple AVL output displayed in grid format, and we have not taken any event , we simply called another function module for Top-of-page to be inside the alv output, that is REUSE_ALV_COMMENTARY_WRITE.
If your asked in interview how to create ALV with multiple table then you can simply explain it in few steps that are as follows:
1: declare the type structure and internal table and workarea ,fieldcatlog (internal table and workarea) ,header, events layout .
2: perform select query and store in internal table,or workarea but keep in mind , when mutiple table are involved try to use FOR ALL ENTRIES IN ,you should use this after the first query, so that all the table has same data .
3: create a fieldcatlog , in fieldcatlog you have multiple option like (hotspot,editable,sum)try using it as per need and then pass the workarea records one by one into fieldcatlog internal table.
4: Now simply pass the fieldcatlog internal table ,into function module REUSE_ALV_GRID_DISPLAY.
and then you get your output in grid format.
*&---------------------------------------------------------------------*
*& Report ZALVMUTLIPLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZALVMUTLIPLE.
TABLES: mara, marc, mard, makt.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
mtart TYPE mara-mtart,
END OF ty_mara,
BEGIN OF ty_marc,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
xchar TYPE marc-xchar,
END OF ty_marc,
BEGIN OF ty_mard,
matnr TYPE mard-matnr,
werks TYPE mard-werks,
lgort TYPE mard-lgort,
END OF ty_mard,
BEGIN OF ty_makt,
matnr TYPE makt-matnr,
spras TYPE makt-spras,
maktx TYPE makt-maktx,
END OF ty_makt,
BEGIN OF ty_out,
sel,
matnr TYPE mara-matnr,
werks TYPE marc-werks,
lgort TYPE mard-lgort,
mtart TYPE mara-mtart,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
xchar TYPE marc-xchar,
maktx TYPE makt-maktx,
END OF ty_out.
DATA: wa_mara TYPE ty_mara,
wa_marc TYPE ty_marc,
wa_mard TYPE ty_mard,
wa_makt TYPE ty_makt,
wa_out TYPE ty_out,
it_mara TYPE STANDARD TABLE OF ty_mara,
it_marc TYPE STANDARD TABLE OF ty_marc,
it_mard TYPE STANDARD TABLE OF ty_mard,
it_makt TYPE STANDARD TABLE OF ty_makt,
it_out TYPE STANDARD TABLE OF ty_out.
DATA: wa_fcat_out TYPE slis_fieldcat_alv,
it_fcat_out TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_top TYPE slis_listheader,
it_top TYPE slis_t_listheader.
DATA: v_prog TYPE sy-repid,
v_name TYPE sy-uname,
v_date TYPE char12.
INITIALIZATION.
v_prog = sy-repid.
v_name = sy-uname.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_mtart TYPE mtart OBLIGATORY.
SELECT-OPTIONS s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_material.
PERFORM get_plant.
PERFORM get_storage.
PERFORM describe.
PERFORM output.
END-OF-SELECTION.
PERFORM prepare_fieldcat.
PERFORM layout.
PERFORM alv_list_display.
TOP-OF-PAGE.
PERFORM top_of_page.
*&---------------------------------------------------------------------*
*& Form GET_MATERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_material .
SELECT matnr ersda ernam mtart
FROM mara INTO TABLE it_mara
WHERE matnr IN s_matnr
AND mtart = p_mtart.
IF sy-subrc = 0.
SORT it_mara BY matnr.
ENDIF.
ENDFORM. " GET_MATERIAL
*&---------------------------------------------------------------------*
*& Form GET_PLANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_plant .
IF it_mara IS NOT INITIAL.
SELECT matnr werks xchar
FROM marc INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
IF sy-subrc = 0.
SORT it_marc BY matnr.
ENDIF.
ENDIF.
ENDFORM. " GET_PLANT
*&---------------------------------------------------------------------*
*& Form GET_STORAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_storage .
IF it_marc IS NOT INITIAL.
SELECT matnr werks lgort
FROM mard INTO TABLE it_mard
FOR ALL ENTRIES IN it_marc
WHERE matnr = it_marc-matnr
AND werks = it_marc-werks.
IF sy-subrc = 0.
SORT it_mard BY matnr.
ENDIF.
ENDIF.
ENDFORM. " GET_STORAGE
*&---------------------------------------------------------------------*
*& Form GET_DESCRIPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM describe.
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.
ENDFORM. " GET_DESCRIPTION
*&---------------------------------------------------------------------*
*& Form PREPARE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM output.
IF it_mara IS NOT INITIAL
AND it_marc IS NOT INITIAL
AND it_mard IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
wa_out-matnr = wa_mara-matnr.
wa_out-ersda = wa_mara-ersda.
wa_out-ernam = wa_mara-ernam.
wa_out-mtart = wa_mara-mtart.
READ TABLE it_makt INTO wa_makt
WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
IF sy-subrc = 0.
wa_out-maktx = wa_makt-maktx.
ENDIF.
LOOP AT it_marc INTO wa_marc
WHERE matnr = wa_mara-matnr.
wa_out-werks = wa_marc-werks.
wa_out-xchar = wa_marc-xchar.
LOOP AT it_mard INTO wa_mard
WHERE matnr = wa_marc-matnr
AND werks = wa_marc-werks.
wa_out-lgort = wa_mard-lgort.
APPEND wa_out TO it_out.
CLEAR: wa_out, wa_mara, wa_makt.
CLEAR wa_mard.
ENDLOOP.
CLEAR wa_marc.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. " PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_fieldcat .
CLEAR wa_fcat_out.
REFRESH it_fcat_out.
IF it_out IS NOT INITIAL.
DATA: lv_col TYPE i VALUE 0.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MATNR'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'Material No.'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'WERKS'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'PLANT'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'LGORT'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'STORAGE LOCATION'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MTART'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'MATERIAL TYPE'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'ERSDA'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'DATE'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'ERNAM'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'NAME'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'XCHAR'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'BATCH NUMBER'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MAKTX'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'MATERIAL DESCRIPTION'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
ENDIF.
ENDFORM. " PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_list_display .
IF it_out IS NOT INITIAL
AND it_fcat_out IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_prog
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = it_fcat_out
TABLES
t_outtab = it_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDIF.
ENDFORM. " ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM top_of_page .
CLEAR wa_top.
REFRESH it_top.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = sy-datum
IMPORTING
date_external = v_date
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
wa_top-typ = 'H'.
wa_top-info = 'MATERIAL REPORT'.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'Report: '.
CONCATENATE wa_top-info v_prog
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'User Name: '.
CONCATENATE wa_top-info v_name
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'Date: '.
CONCATENATE wa_top-info v_date
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top
.
ENDFORM. " TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM layout .
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-box_fieldname = 'SEL'.
ENDFORM.
*& Report ZALVMUTLIPLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZALVMUTLIPLE.
TABLES: mara, marc, mard, makt.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
mtart TYPE mara-mtart,
END OF ty_mara,
BEGIN OF ty_marc,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
xchar TYPE marc-xchar,
END OF ty_marc,
BEGIN OF ty_mard,
matnr TYPE mard-matnr,
werks TYPE mard-werks,
lgort TYPE mard-lgort,
END OF ty_mard,
BEGIN OF ty_makt,
matnr TYPE makt-matnr,
spras TYPE makt-spras,
maktx TYPE makt-maktx,
END OF ty_makt,
BEGIN OF ty_out,
sel,
matnr TYPE mara-matnr,
werks TYPE marc-werks,
lgort TYPE mard-lgort,
mtart TYPE mara-mtart,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
xchar TYPE marc-xchar,
maktx TYPE makt-maktx,
END OF ty_out.
DATA: wa_mara TYPE ty_mara,
wa_marc TYPE ty_marc,
wa_mard TYPE ty_mard,
wa_makt TYPE ty_makt,
wa_out TYPE ty_out,
it_mara TYPE STANDARD TABLE OF ty_mara,
it_marc TYPE STANDARD TABLE OF ty_marc,
it_mard TYPE STANDARD TABLE OF ty_mard,
it_makt TYPE STANDARD TABLE OF ty_makt,
it_out TYPE STANDARD TABLE OF ty_out.
DATA: wa_fcat_out TYPE slis_fieldcat_alv,
it_fcat_out TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_top TYPE slis_listheader,
it_top TYPE slis_t_listheader.
DATA: v_prog TYPE sy-repid,
v_name TYPE sy-uname,
v_date TYPE char12.
INITIALIZATION.
v_prog = sy-repid.
v_name = sy-uname.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS p_mtart TYPE mtart OBLIGATORY.
SELECT-OPTIONS s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_material.
PERFORM get_plant.
PERFORM get_storage.
PERFORM describe.
PERFORM output.
END-OF-SELECTION.
PERFORM prepare_fieldcat.
PERFORM layout.
PERFORM alv_list_display.
TOP-OF-PAGE.
PERFORM top_of_page.
*&---------------------------------------------------------------------*
*& Form GET_MATERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_material .
SELECT matnr ersda ernam mtart
FROM mara INTO TABLE it_mara
WHERE matnr IN s_matnr
AND mtart = p_mtart.
IF sy-subrc = 0.
SORT it_mara BY matnr.
ENDIF.
ENDFORM. " GET_MATERIAL
*&---------------------------------------------------------------------*
*& Form GET_PLANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_plant .
IF it_mara IS NOT INITIAL.
SELECT matnr werks xchar
FROM marc INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
IF sy-subrc = 0.
SORT it_marc BY matnr.
ENDIF.
ENDIF.
ENDFORM. " GET_PLANT
*&---------------------------------------------------------------------*
*& Form GET_STORAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_storage .
IF it_marc IS NOT INITIAL.
SELECT matnr werks lgort
FROM mard INTO TABLE it_mard
FOR ALL ENTRIES IN it_marc
WHERE matnr = it_marc-matnr
AND werks = it_marc-werks.
IF sy-subrc = 0.
SORT it_mard BY matnr.
ENDIF.
ENDIF.
ENDFORM. " GET_STORAGE
*&---------------------------------------------------------------------*
*& Form GET_DESCRIPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM describe.
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.
ENDFORM. " GET_DESCRIPTION
*&---------------------------------------------------------------------*
*& Form PREPARE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM output.
IF it_mara IS NOT INITIAL
AND it_marc IS NOT INITIAL
AND it_mard IS NOT INITIAL.
LOOP AT it_mara INTO wa_mara.
wa_out-matnr = wa_mara-matnr.
wa_out-ersda = wa_mara-ersda.
wa_out-ernam = wa_mara-ernam.
wa_out-mtart = wa_mara-mtart.
READ TABLE it_makt INTO wa_makt
WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
IF sy-subrc = 0.
wa_out-maktx = wa_makt-maktx.
ENDIF.
LOOP AT it_marc INTO wa_marc
WHERE matnr = wa_mara-matnr.
wa_out-werks = wa_marc-werks.
wa_out-xchar = wa_marc-xchar.
LOOP AT it_mard INTO wa_mard
WHERE matnr = wa_marc-matnr
AND werks = wa_marc-werks.
wa_out-lgort = wa_mard-lgort.
APPEND wa_out TO it_out.
CLEAR: wa_out, wa_mara, wa_makt.
CLEAR wa_mard.
ENDLOOP.
CLEAR wa_marc.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. " PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_fieldcat .
CLEAR wa_fcat_out.
REFRESH it_fcat_out.
IF it_out IS NOT INITIAL.
DATA: lv_col TYPE i VALUE 0.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MATNR'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'Material No.'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'WERKS'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'PLANT'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'LGORT'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'STORAGE LOCATION'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MTART'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'MATERIAL TYPE'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'ERSDA'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'DATE'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'ERNAM'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'NAME'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'XCHAR'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'BATCH NUMBER'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
lv_col = 1 + lv_col.
wa_fcat_out-col_pos = lv_col.
wa_fcat_out-fieldname = 'MAKTX'.
wa_fcat_out-tabname = 'IT_OUT'.
wa_fcat_out-seltext_l = 'MATERIAL DESCRIPTION'.
APPEND wa_fcat_out TO it_fcat_out.
CLEAR wa_fcat_out.
ENDIF.
ENDFORM. " PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_list_display .
IF it_out IS NOT INITIAL
AND it_fcat_out IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_prog
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = it_fcat_out
TABLES
t_outtab = it_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDIF.
ENDFORM. " ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM top_of_page .
CLEAR wa_top.
REFRESH it_top.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = sy-datum
IMPORTING
date_external = v_date
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
wa_top-typ = 'H'.
wa_top-info = 'MATERIAL REPORT'.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'Report: '.
CONCATENATE wa_top-info v_prog
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'User Name: '.
CONCATENATE wa_top-info v_name
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
wa_top-typ = 'S'.
wa_top-info = 'Date: '.
CONCATENATE wa_top-info v_date
INTO wa_top-info.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top
.
ENDFORM. " TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM layout .
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-box_fieldname = 'SEL'.
ENDFORM.