Professional Documents
Culture Documents
Here is a report which displays the material details with plant, storage location and description. The output is of ALV List display.
The looks of this report is different from classic view.
Reuse_alv_list_display is the required function module which displays the proper output. ALV List display needs field catalog of structure slis_fieldcat_alv. Otherwise there will be no
output. If we need to design the layout then we can pass layout work area of structure slis_layout_alv. Here we have mentioned the zebra layout with a selection box and optimized
column design.
If we need to mention some information on top of output page then we have to pass an event table. This event table holds the structure slis_t_event. We also need event work area of
structure slis_alv_event. After having this data types we have to call function module Reuse_alv_events_get to prepare the event table. At the time of preparing the event table we
have to call the top of page form name and have to modify the event table.
Below is the coding:
*&---------------------------------------------------------------------*
*& Report ZSR_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
zsr_test.
mtart
ersda
ernam
xchar
maktx
END OF
TYPE mara-mtart,
TYPE mara-ersda,
TYPE mara-ernam,
TYPE marc-xchar,
TYPE makt-maktx,
ty_out.
DATA: wa_mara
wa_marc
wa_mard
wa_makt
wa_out
it_mara
it_marc
it_mard
it_makt
it_out
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
ty_mara,
ty_marc,
ty_mard,
ty_makt,
ty_out,
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
DATA: wa_fcat_out
it_fcat_out
wa_layout
wa_top
it_top
wa_event
it_event
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
DATA: v_prog
v_name
v_date
v_time
sy-repid,
sy-uname,
sy-datum,
sy-uzeit.
TYPE
TYPE
TYPE
TYPE
TABLE
TABLE
TABLE
TABLE
TABLE
OF
OF
OF
OF
OF
ty_mara,
ty_marc,
ty_mard,
ty_makt,
ty_out.
slis_fieldcat_alv,
slis_t_fieldcat_alv,
slis_layout_alv,
slis_listheader,
slis_t_listheader,
slis_alv_event,
slis_t_event.
INITIALIZATION.
v_prog = sy-repid.
v_name = sy-uname.
v_date = sy-datum.
v_time = sy-uzeit.
SELECTION-SCREEN
PARAMETERS
SELECT-OPTIONS
SELECTION-SCREEN
START-OF-SELECTION.
PERFORM get_material.
PERFORM get_plant.
PERFORM get_storage.
PERFORM get_description.
PERFORM prepare_output.
END-OF-SELECTION.
PERFORM prepare_fieldcat.
PERFORM prepare_layout.
PERFORM declare_event.
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.
ELSE.
MESSAGE 'Material doesn''t exist' TYPE 'I'.
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 get_description .
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
AND spras = sy-langu.
IF sy-subrc = 0.
SORT it_makt BY matnr.
ENDIF.
ENDIF.
ENDFORM.
" GET_DESCRIPTION
*&--------------------------------------------------------------------*
*&
Form PREPARE_OUTPUT
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM prepare_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
= 1 + lv_col.
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= lv_col.
= 'MATNR'.
= 'IT_OUT'.
= 'Material No.'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= 1 + lv_col.
= lv_col.
= 'WERKS'.
= 'IT_OUT'.
= 'Plant'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= 1 + lv_col.
= lv_col.
= 'LGORT'.
= 'IT_OUT'.
= 'Storage Location'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= 1 + lv_col.
= lv_col.
= 'MTART'.
= 'IT_OUT'.
= 'Material Type'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= 1 + lv_col.
= lv_col.
= 'ERSDA'.
= 'IT_OUT'.
= 'Date'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
= 1 + lv_col.
= lv_col.
= 'ERNAM'.
= 'IT_OUT'.
= 'Name'.
it_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
lv_col
wa_fcat_out-col_pos
wa_fcat_out-fieldname
wa_fcat_out-tabname
wa_fcat_out-seltext_l
APPEND wa_fcat_out TO
CLEAR wa_fcat_out.
ENDIF.
= 1 + lv_col.
= lv_col.
= 'XCHAR'.
= 'IT_OUT'.
= 'Batch No.'.
it_fcat_out.
= 1 + lv_col.
= lv_col.
= 'MAKTX'.
= 'IT_OUT'.
= 'Material Description'.
it_fcat_out.
ENDFORM.
" PREPARE_FIELDCAT
*&--------------------------------------------------------------------*
*&
Form DECLARE_EVENT
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM declare_event .
CLEAR wa_event.
REFRESH it_event.
*
*
IF sy-subrc = 0.
wa_event-form = 'TOP_OF_PAGE'.
MODIFY it_event FROM wa_event
INDEX sy-tabix TRANSPORTING form.
ENDIF.
ENDIF.
ENDFORM.
" DECLARE_EVENT
*&--------------------------------------------------------------------*
*&
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
AND it_event IS NOT INITIAL.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
IT_EVENT_EXIT
IS_PRINT
IS_REPREP_ID
I_SCREEN_START_COLUMN
I_SCREEN_START_LINE
I_SCREEN_END_COLUMN
I_SCREEN_END_LINE
IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA
IMPORTING
E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER
TABLES
t_outtab
EXCEPTIONS
program_error
OTHERS
ENDIF.
=
=
=
=
=
=
=
=
=
=
0
0
0
0
ABAP_FALSE
=
=
= it_out
= 1
= 2.
ENDFORM.
" ALV_LIST_DISPLAY
*&--------------------------------------------------------------------*
*&
Form TOP_OF_PAGE
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM top_of_page .
WRITE: /
/
/
/
/
SKIP.
ENDFORM.
" TOP_OF_PAGE
*&--------------------------------------------------------------------*
*&
Form PREPARE_LAYOUT
*&--------------------------------------------------------------
-------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM prepare_layout .
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-box_fieldname = 'SEL'.
ENDFORM.
" PREPARE_LAYOUT
Selection Screen:
Output Screen:
Another Selection:
Output: