Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report Z_EXERCISE1_ALV_NEW
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_EXERCISE3_HIERARCHICAL_LEVEL MESSAGE-ID z_msg_class_all.
TABLES: mara, mard, marc, t134t, t001w, makt. " Deklare Tables
TYPE-POOLS: slis.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: s_fac FOR marc-werks NO INTERVALS, " Multiple Selection for Factory
s_loc FOR mard-lgort, " For Location
s_mat FOR mara-matnr. " For Material
PARAMETERS: chk_alv AS CHECKBOX DEFAULT 'X'. " Checkbox if ALV = Yes
SELECTION-SCREEN END OF BLOCK a1.
DATA: count TYPE i,
index TYPE i,
counter TYPE i VALUE 0.
" For ALV-Grid
DATA: g_repid LIKE sy-repid.
DATA: itab_feldkatalog TYPE slis_t_fieldcat_alv,
wa_feldkatalog TYPE LINE OF slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv.
" End: For ALV-Grid
" iTable with all required Fields
DATA: BEGIN OF itab_alv OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF itab_alv.
" End: iTable with all required Fields
" iTable with all required Fields
DATA: BEGIN OF itab_temp OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF itab_temp.
" End: iTable with all required Fields
DATA: wa_itab_alv LIKE LINE OF itab_alv. " WA for i-Tab
DATA: wa_itab_temp LIKE LINE OF itab_alv. " WA for i-Tab
DATA: BEGIN OF itab OCCURS 0,
werks LIKE t001w-name1,
lgort LIKE mard-lgort,
matnr LIKE mard-matnr,
mdes LIKE makt-maktx,
mtype LIKE t134t-mtbez,
cdate LIKE mara-ersda,
mgroup LIKE mara-matkl,
uom LIKE mara-meins,
END OF itab.
DATA: wa_itab LIKE LINE OF itab. " WA for i-Tab
START-OF-SELECTION.
IF chk_alv = 'X'. " When Checkbox checked
" Selection with Inner Join
SELECT w~name1 d~lgort d~matnr md~maktx t~mtbez a~ersda a~matkl a~meins
INTO wa_itab FROM ( ( ( ( mard AS d
INNER JOIN mara AS a ON a~matnr = d~matnr )
INNER JOIN t134t AS t ON a~mtart = t~mtart AND t~spras = sy-langu )
INNER JOIN t001w AS w ON d~werks = w~werks )
INNER JOIN makt AS md ON d~matnr = md~matnr AND md~spras = sy-langu )
WHERE d~werks IN s_fac AND d~lgort IN s_loc AND d~matnr IN s_mat.
APPEND wa_itab TO itab. " Glicht: INTO CORRESPONDING TABLE somehow isn't working
ENDSELECT.
SORT itab BY werks lgort matnr. " Sort i-Tab
LOOP AT itab INTO wa_itab.
counter = counter + 1.
IF counter > 1.
EXIT.
ENDIF.
ENDLOOP.
IF NOT counter = 0.
* Feldkatalog fuellen.
PERFORM feldkatalog_fuellen.
* Layout bestimmen.
PERFORM layout_allg_build USING gs_layout.
* Daten als ALV-Liste anzeigen.
PERFORM alv_anzeigen.
ELSE.
MESSAGE i000(z_msg_class_all). "MSG No data found!
ENDIF.
ELSE.
" Some Selection for WRITE
SELECT a~werks w~name1 a~lgort FROM mard AS a INNER JOIN t001w AS w ON a~werks = w~werks
INTO wa_itab_temp WHERE a~werks IN s_fac AND a~lgort IN s_loc AND a~matnr IN s_mat.
count = 0.
LOOP AT itab_alv INTO wa_itab_alv.
IF wa_itab_temp-werks = wa_itab_alv-werks AND wa_itab_temp-lgort = wa_itab_alv-lgort.
count = wa_itab_alv-count.
index = sy-tabix.
ENDIF.
ENDLOOP.
wa_itab_alv-werks = wa_itab_temp-werks.
wa_itab_alv-werksd = wa_itab_temp-werksd.
wa_itab_alv-lgort = wa_itab_temp-lgort.
IF count = 0.
wa_itab_alv-count = 1.
APPEND wa_itab_alv TO itab_alv.
ELSE.
wa_itab_alv-count = count + 1.
MODIFY itab_alv INDEX index FROM wa_itab_alv.
ENDIF.
ENDSELECT.
SORT itab_alv BY werks lgort count. " Sort i-Tab
SKIP 1.
ULINE /3(71).
" Write Headings
WRITE: /3 '|',
5 'Plant' COLOR COL_HEADING,
12 '|',
18 'Plant description' COLOR COL_HEADING,
42 '|',
44 'Location' COLOR COL_HEADING,
54 '|',
56 'n° of Materials' COLOR COL_HEADING,
73 '|'.
ULINE /3(71).
LOOP AT itab_alv.
" Write if found
WRITE: /3 '|',
5 itab_alv-werks,
12 '|',
14 itab_alv-werksd,
42 '|',
46 itab_alv-lgort,
54 '|',
55 itab_alv-count,
73 '|'.
ENDLOOP.
ULINE /3(71).
ENDIF.
*&---------------------------------------------------------------------*
*& Form alv_anzeigen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_anzeigen.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_grid_title = 'ALV Grid'
it_fieldcat = itab_feldkatalog
is_layout = gs_layout
TABLES
t_outtab = itab.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "alv_anzeigen.
*&---------------------------------------------------------------------*
*& Form feldkatalog_fuellen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM feldkatalog_fuellen.
CLEAR itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'WERKS'.
wa_feldkatalog-seltext_m = 'Factory'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'LGORT'.
wa_feldkatalog-seltext_m = 'Location'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MATNR'.
wa_feldkatalog-seltext_m = 'Material Number'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MDES'.
wa_feldkatalog-seltext_m = 'Description'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MTYPE'.
wa_feldkatalog-seltext_m = 'Type Description'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'CDATE'.
wa_feldkatalog-seltext_m = 'Creation Date'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MGROUP'.
wa_feldkatalog-seltext_m = 'Material Group'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'UOM'.
wa_feldkatalog-seltext_m = 'Unit of Measure'.
APPEND wa_feldkatalog TO itab_feldkatalog.
ENDFORM. "feldkatalog_fuellen.
*&---------------------------------------------------------------------*
*& Form layout_allg_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LS_LAYOUT text
*----------------------------------------------------------------------*
FORM layout_allg_build USING ls_layout TYPE slis_layout_alv.
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ENDFORM. "layout_allg_build.Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report Z_EXERCISE1_ALV_NEW
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_exercise3_hierarchical_level MESSAGE-ID z_msg_class_all.
TABLES: mara, mard, marc, t134t, t001w, makt. " Deklare Tables
TYPE-POOLS: slis.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: s_fac FOR marc-werks NO INTERVALS, " Multiple Selection for Factory
s_loc FOR mard-lgort, " For Location
s_mat FOR mara-matnr. " For Material
PARAMETERS: chk_alv AS CHECKBOX DEFAULT 'X'. " Checkbox if ALV = Yes
SELECTION-SCREEN END OF BLOCK a1.
DATA: count TYPE i,
index TYPE i,
counter TYPE i VALUE 0.
" For ALV-Grid
DATA: g_repid LIKE sy-repid.
DATA: itab_feldkatalog TYPE slis_t_fieldcat_alv,
wa_feldkatalog TYPE LINE OF slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gs_keyinfo TYPE slis_keyinfo_alv,
G_TABNAME_HEADER TYPE SLIS_TABNAME,
G_TABNAME_ITEM TYPE SLIS_TABNAME.
" End: For ALV-Grid
" iTable with all required Fields
DATA: BEGIN OF itab_alv OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF itab_alv.
" End: iTable with all required Fields
" iTable with all required Fields
DATA: BEGIN OF itab_temp OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF itab_temp.
" End: iTable with all required Fields
DATA: wa_itab_alv LIKE LINE OF itab_alv. " WA for i-Tab
DATA: wa_itab_temp LIKE LINE OF itab_alv. " WA for i-Tab
DATA: BEGIN OF itab OCCURS 0,
werks LIKE t001w-name1,
lgort LIKE mard-lgort,
matnr LIKE mard-matnr,
mdes LIKE makt-maktx,
mtype LIKE t134t-mtbez,
cdate LIKE mara-ersda,
mgroup LIKE mara-matkl,
uom LIKE mara-meins,
END OF itab.
DATA: wa_itab LIKE LINE OF itab. " WA for i-Tab
START-OF-SELECTION.
G_TABNAME_HEADER = 'Blub'.
G_TABNAME_ITEM = 'Blub'.
IF chk_alv = 'X'. " When Checkbox checked
" Selection with Inner Join
SELECT w~name1 d~lgort d~matnr md~maktx t~mtbez a~ersda a~matkl a~meins
INTO wa_itab FROM ( ( ( ( mard AS d
INNER JOIN mara AS a ON a~matnr = d~matnr )
INNER JOIN t134t AS t ON a~mtart = t~mtart AND t~spras = sy-langu )
INNER JOIN t001w AS w ON d~werks = w~werks )
INNER JOIN makt AS md ON d~matnr = md~matnr AND md~spras = sy-langu )
WHERE d~werks IN s_fac AND d~lgort IN s_loc AND d~matnr IN s_mat.
APPEND wa_itab TO itab. " Glicht: INTO CORRESPONDING TABLE somehow isn't working
ENDSELECT.
SORT itab BY werks lgort matnr. " Sort i-Tab
LOOP AT itab INTO wa_itab.
counter = counter + 1.
IF counter > 1.
EXIT.
ENDIF.
ENDLOOP.
IF NOT counter = 0.
* Feldkatalog fuellen.
PERFORM feldkatalog_fuellen.
* Layout bestimmen.
PERFORM layout_allg_build USING gs_layout.
* Daten als ALV-Liste anzeigen.
PERFORM alv_anzeigen.
ELSE.
MESSAGE i000(z_msg_class_all). "MSG No data found!
ENDIF.
ELSE.
" Some Selection for WRITE
SELECT a~werks w~name1 a~lgort FROM mard AS a INNER JOIN t001w AS w ON a~werks = w~werks
INTO wa_itab_temp WHERE a~werks IN s_fac AND a~lgort IN s_loc AND a~matnr IN s_mat.
count = 0.
LOOP AT itab_alv INTO wa_itab_alv.
IF wa_itab_temp-werks = wa_itab_alv-werks AND wa_itab_temp-lgort = wa_itab_alv-lgort.
count = wa_itab_alv-count.
index = sy-tabix.
ENDIF.
ENDLOOP.
wa_itab_alv-werks = wa_itab_temp-werks.
wa_itab_alv-werksd = wa_itab_temp-werksd.
wa_itab_alv-lgort = wa_itab_temp-lgort.
IF count = 0.
wa_itab_alv-count = 1.
APPEND wa_itab_alv TO itab_alv.
ELSE.
wa_itab_alv-count = count + 1.
MODIFY itab_alv INDEX index FROM wa_itab_alv.
ENDIF.
ENDSELECT.
SORT itab_alv BY werks lgort count. " Sort i-Tab
SKIP 1.
ULINE /3(71).
" Write Headings
WRITE: /3 '|',
5 'Plant' COLOR COL_HEADING,
12 '|',
18 'Plant description' COLOR COL_HEADING,
42 '|',
44 'Location' COLOR COL_HEADING,
54 '|',
56 'n° of Materials' COLOR COL_HEADING,
73 '|'.
ULINE /3(71).
LOOP AT itab_alv.
" Write if found
WRITE: /3 '|',
5 itab_alv-werks,
12 '|',
14 itab_alv-werksd,
42 '|',
46 itab_alv-lgort,
54 '|',
55 itab_alv-count,
73 '|'.
ENDLOOP.
ULINE /3(71).
ENDIF.
*&---------------------------------------------------------------------*
*& Form alv_anzeigen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_anzeigen.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = itab_feldkatalog
i_tabname_header = G_TABNAME_HEADER
i_tabname_item = G_TABNAME_item
is_keyinfo = gs_keyinfo
TABLES
t_outtab_header = itab_feldkatalog
t_outtab_item = itab.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "alv_anzeigen.
*&---------------------------------------------------------------------*
*& Form feldkatalog_fuellen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM feldkatalog_fuellen.
CLEAR itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'WERKS'.
wa_feldkatalog-seltext_m = 'Factory'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'LGORT'.
wa_feldkatalog-seltext_m = 'Location'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MATNR'.
wa_feldkatalog-seltext_m = 'Material Number'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MDES'.
wa_feldkatalog-seltext_m = 'Description'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MTYPE'.
wa_feldkatalog-seltext_m = 'Type Description'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'CDATE'.
wa_feldkatalog-seltext_m = 'Creation Date'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'MGROUP'.
wa_feldkatalog-seltext_m = 'Material Group'.
APPEND wa_feldkatalog TO itab_feldkatalog.
CLEAR wa_feldkatalog.
wa_feldkatalog-fieldname = 'UOM'.
wa_feldkatalog-seltext_m = 'Unit of Measure'.
APPEND wa_feldkatalog TO itab_feldkatalog.
ENDFORM. "feldkatalog_fuellen.
*&---------------------------------------------------------------------*
*& Form layout_allg_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LS_LAYOUT text
*----------------------------------------------------------------------*
FORM layout_allg_build USING ls_layout TYPE slis_layout_alv.
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ENDFORM. "layout_allg_build.Code: Alles auswählen.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_tabname_header = 'GT_VBAK'
i_tabname_item = 'GT_VBAP'
I_STRUCTURE_NAME_HEADER = 'VBAK'
I_STRUCTURE_NAME_ITEM = 'VBAP'
is_keyinfo = gs_keyinfo
tables
t_outtab_header = gt_vbak
t_outtab_item = gt_vbap
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.Code: Alles auswählen.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_tabname_header = 'GT_VBAK'
i_tabname_item = 'GT_VBAP'
i_structure_name_header = 'VBAK'
i_structure_name_item = 'VBAP'
is_keyinfo = gs_keyinfo
TABLES
t_outtab_header = itab
t_outtab_item = itab.Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report Z_EXERCISE3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_exercise3_hierarchical_level.
TYPE-POOLS: slis.
TABLES: mara, mard, marc, t134t, t001w, makt, vbap. " Deklare Tables
* Fieldcat's for ALV
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv.
* Some var's for Non-ALV
DATA: count TYPE i,
index TYPE i,
counter TYPE i VALUE 0.
" iTable with all required Fields
DATA: BEGIN OF it_nonalv OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF it_nonalv.
" End: iTable with all required Fields
DATA: wa_nonalv LIKE LINE OF it_nonalv.
" iTable with all required Fields
DATA: BEGIN OF itab_temp OCCURS 0,
werks LIKE mard-werks,
werksd LIKE t001w-name1,
lgort LIKE mard-lgort,
count TYPE i,
END OF itab_temp.
" End: iTable with all required Fields
DATA: wa_it_nonalv LIKE LINE OF it_nonalv. " WA for i-Tab
DATA: wa_itab_temp LIKE LINE OF it_nonalv. " WA for i-Tab
* iTab for ALV
DATA: BEGIN OF it_items OCCURS 0,
werks LIKE t001w-name1,
lgort LIKE mard-lgort,
matnr LIKE mard-matnr,
mdes LIKE makt-maktx,
mtype LIKE t134t-mtbez,
cdate LIKE mara-ersda,
mgroup LIKE mara-matkl,
uom LIKE mara-meins,
END OF it_items.
* SON for ALV
DATA: BEGIN OF it_infos OCCURS 0,
vbeln LIKE vbap-vbeln,
END OF it_infos.
DATA: wa_infos LIKE LINE OF it_infos.
DATA: wa_items LIKE LINE OF it_items.
* Selection
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: s_fac FOR marc-werks NO INTERVALS, " Multiple Selection for Factory
s_loc FOR mard-lgort, " For Location
s_mat FOR mara-matnr. " For Material
PARAMETERS: chk_alv AS CHECKBOX DEFAULT 'X'. " Checkbox if ALV = Yes
SELECTION-SCREEN END OF BLOCK a1.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS CLASSEX3 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS classex3 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
alv,
nonalv.
ENDCLASS. "CLASSEX3 DEFINITION
*----------------------------------------------------------------------*
* CLASS CLASSEX3 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS classex3 IMPLEMENTATION.
METHOD alv.
SELECT w~name1 d~lgort d~matnr md~maktx t~mtbez a~ersda a~matkl a~meins
INTO wa_items FROM ( ( ( ( mard AS d
INNER JOIN mara AS a ON a~matnr = d~matnr )
INNER JOIN t134t AS t ON a~mtart = t~mtart AND t~spras = sy-langu )
INNER JOIN t001w AS w ON d~werks = w~werks )
INNER JOIN makt AS md ON d~matnr = md~matnr AND md~spras = sy-langu )
WHERE d~werks IN s_fac AND d~lgort IN s_loc AND d~matnr IN s_mat.
APPEND wa_items TO it_items. " Glicht: INTO CORRESPONDING TABLE somehow isn't working
ENDSELECT.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-seltext_m = 'Factory'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'LGORT'.
wa_fieldcat-seltext_m = 'Location'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'Material Number'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'MTYPE'.
wa_fieldcat-seltext_m = 'Type Description'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'CDATE'.
wa_fieldcat-seltext_m = 'Creation Date'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'MGROUP'.
wa_fieldcat-seltext_m = 'Material Group'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-tabname = 'IT_ITEMS'.
wa_fieldcat-fieldname = 'UOM'.
wa_fieldcat-seltext_m = 'Unit of Measure'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
* Call ALV
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_bypassing_buffer = 'X'
i_buffer_active = ' '
i_callback_program = sy-repid
i_callback_user_command = 'EXECUTE_COMMAND'
it_fieldcat = i_fieldcat[]
is_layout = ls_layout
i_save = 'A'
TABLES
t_outtab = it_items
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDMETHOD. "alv
METHOD nonalv.
" Some Selection for WRITE
SELECT a~werks w~name1 a~lgort FROM mard AS a INNER JOIN t001w AS w ON a~werks = w~werks
INTO wa_itab_temp WHERE a~werks IN s_fac AND a~lgort IN s_loc AND a~matnr IN s_mat.
count = 0.
LOOP AT it_nonalv INTO wa_it_nonalv.
IF wa_itab_temp-werks = wa_it_nonalv-werks AND wa_itab_temp-lgort = wa_it_nonalv-lgort.
count = wa_it_nonalv-count.
index = sy-tabix.
ENDIF.
ENDLOOP.
wa_it_nonalv-werks = wa_itab_temp-werks.
wa_it_nonalv-werksd = wa_itab_temp-werksd.
wa_it_nonalv-lgort = wa_itab_temp-lgort.
IF count = 0.
wa_it_nonalv-count = 1.
APPEND wa_it_nonalv TO it_nonalv.
ELSE.
wa_it_nonalv-count = count + 1.
MODIFY it_nonalv INDEX index FROM wa_it_nonalv.
ENDIF.
ENDSELECT.
SORT it_nonalv BY werks lgort count. " Sort i-Tab
SKIP 1.
ULINE /3(71).
" Write Headings
WRITE: /3 '|',
5 'Plant' COLOR COL_HEADING,
12 '|',
18 'Plant description' COLOR COL_HEADING,
42 '|',
44 'Location' COLOR COL_HEADING,
54 '|',
56 'n° of Materials' COLOR COL_HEADING,
73 '|'.
ULINE /3(71).
LOOP AT it_nonalv INTO wa_nonalv.
" Write if found
WRITE: /3 '|',
5 wa_nonalv-werks,
12 '|',
14 wa_nonalv-werksd,
42 '|',
46 wa_nonalv-lgort,
54 '|',
55 wa_nonalv-count,
73 '|'.
ENDLOOP.
ULINE /3(71).
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Event when clicked
FORM execute_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
CLEAR it_infos[].
READ TABLE it_items INDEX selfield-tabindex INTO wa_items.
SELECT vbeln FROM vbap INTO wa_infos WHERE matnr = wa_items-matnr.
APPEND wa_infos TO it_infos.
ENDSELECT.
IF sy-subrc = 0.
CASE ucomm.
WHEN '&IC1'. "Handle the 'double-click' event
CASE selfield-sel_tab_field.
WHEN 'IT_ITEMS-MATNR'.
count = 1.
CALL FUNCTION 'POPUP_WITH_TABLE'
EXPORTING
endpos_col = 50
endpos_row = 35
startpos_col = 20
startpos_row = 30
titletext = 'Sales Order Nr'
TABLES
valuetab = it_infos
EXCEPTIONS
break_off = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDCASE.
ENDCASE.
ELSE.
MESSAGE 'No data found!' TYPE 'I'.
ENDIF.
ENDFORM. "execute_command
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
START-OF-SELECTION.
IF chk_alv = 'X'. " When Checkbox checked
classex3=>alv( ).
ELSE.
classex3=>nonalv( ).
ENDIF.