|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > ABAP Source Code > YPRACTICE_503 |
*&---------------------------------------------------------------------*
*& Report YPRACTICE_503 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ypractice_503 .
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
TABLES : t023t, mara, makt, t006a.
INCLUDE ypractice_503_alv.
*INCLUDE ypractice_501_alv.
*----------------------------------------------------------------------*
*GLOBAL VARIABLE DECRALATION
*----------------------------------------------------------------------*
TYPES : BEGIN OF ty_header,
chbox,
exp,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez,
END OF ty_header.
TYPES: BEGIN OF ty_detail,
matkl LIKE mara-matkl, " Material Group
matnr LIKE mara-matnr, " Material Number
maktx LIKE makt-maktx, " Material Description
bismt LIKE mara-bismt, " Old material number
meins LIKE mara-meins, " Base Unit of Measure
mseht LIKE t006a-mseht, " Unit of Measurement Text
END OF ty_detail.
DATA: gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,
gi_detail TYPE STANDARD TABLE OF ty_detail WITH HEADER LINE,
gi_makt LIKE STANDARD TABLE OF makt WITH HEADER LINE,
gi_t006a LIKE STANDARD TABLE OF t006a WITH HEADER LINE.
DATA: gv_width TYPE i. " Width of list
*----------------------------------------------------------------------*
*Input Screen/Selection
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK groupbox1 WITH FRAME TITLE text_101. "Declare Group Box 1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_102 FOR FIELD so_matkl.
SELECT-OPTIONS so_matkl FOR mara-matkl.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text_103 FOR FIELD so_matnr.
SELECT-OPTIONS so_matnr FOR mara-matnr.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK groupbox1. "End Group Box 1
*----------------------------------------------------------------------*
*EVENT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
text_101 = 'Selection Parameter'.
text_102 = 'Material Group'.
text_103 = 'Material Number'.
*----------------------------------------------------------------------*
*INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
*======================================================================*
*MAIN PROGRAM
*Execute after Input Screen
*======================================================================*
START-OF-SELECTION.
gv_width = 113.
PERFORM fm_collect_data.
PERFORM fm_process_data.
PERFORM fm_display_data.
END-OF-SELECTION.
*======================================================================*
*SUB PROGRAM / SUB ROUTINE
*======================================================================*
*&--------------------------------------------------------------------*
*& Form fm_collect_data
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_collect_data.
*Collect Material Group
SELECT matkl wgbez
INTO CORRESPONDING FIELDS OF TABLE gi_header
FROM t023t
WHERE matkl IN so_matkl AND
spras = sy-langu.
* "For SAP 4.6C
* DATA : lv_total_data type i.
* DESCRIBE TABLE gi_header LINES lv_total_data.
* IF lv_total_data > 0.
IF LINES( gi_header ) > 0." For SAP 4.7 above
* Collect Master Material
SELECT matnr matkl bismt meins
INTO CORRESPONDING FIELDS OF TABLE gi_detail
FROM mara
FOR ALL ENTRIES IN gi_header
WHERE
matkl = gi_header-matkl AND
matnr IN so_matnr.
IF LINES( gi_detail ) > 0." For SAP 4.7 above
* Collect Material Decription
SELECT matnr maktx
INTO CORRESPONDING FIELDS OF TABLE gi_makt
FROM makt
FOR ALL ENTRIES IN gi_detail
WHERE
matnr = gi_detail-matnr AND
spras = sy-langu.
* Collect Measurement Text
SELECT msehi mseht
INTO CORRESPONDING FIELDS OF TABLE gi_t006a
FROM t006a
FOR ALL ENTRIES IN gi_detail
WHERE
msehi = gi_detail-meins AND
spras = sy-langu.
ENDIF.
ENDIF.
* Notes :
* Avoid using inner join
ENDFORM. "FM_COLLECT_DATA
*&--------------------------------------------------------------------*
*& Form FM_PROCESS_DATA
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_process_data.
*Get other requirement information
LOOP AT gi_detail.
* Get Material Description
READ TABLE gi_makt WITH KEY matnr = gi_detail-matnr.
IF sy-subrc = 0.
gi_detail-maktx = gi_makt-maktx.
ENDIF.
* Get Measurement Text
READ TABLE gi_t006a WITH KEY msehi = gi_detail-meins.
IF sy-subrc = 0.
gi_detail-mseht = gi_t006a-mseht.
ENDIF.
MODIFY gi_detail.
ENDLOOP.
ENDFORM. "FM_PROCESS_DATA
*&--------------------------------------------------------------------*
*& Form fm_display_data
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_display_data.
PERFORM fm_alv_reset_data.
* Mengatur Parameter dan Data ALV
PERFORM fm_alv_set_layout USING 'Display List of Master Material'.
PERFORM fm_alv_set_print.
PERFORM fm_alv_set_column.
gv_i_default = 'X'.
gv_i_save = 'A'.
PERFORM fm_alv_show_hier TABLES gi_header gi_detail.
ENDFORM. "fm_display_data
*======================================================================
*Set ALV
*======================================================================
*&--------------------------------------------------------------------*
*& Form fm_alv_set_column
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_set_column.
* matkl LIKE mara-matkl, " Material Group
* matnr LIKE mara-matnr, " Material Number
* maktx LIKE makt-maktx, " Material Description
* bismt LIKE mara-bismt, " Old material number
* meins LIKE mara-meins, " Base Unit of Measure
* mseht LIKE t006a-mseht, " Unit of Measurement Text
* Set Header Column
PERFORM fm_alv_add_fieldcat USING 'GI_HEADER':
'MATKL' 'T023T' 'MATKL' '' '' 'Mat. Group' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'WGBEZ' 'T023T' 'WGBEZ' '' '' 'Mat. Number' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_HEADER'
* i_structure_name = ''
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Set Detail Column
PERFORM fm_alv_add_fieldcat USING 'GI_DETAIL':
'MATKL' 'MARA' 'MATKL' '' '' 'Mat. Group' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'MATNR' 'MARA' 'MATNR' '' '' 'Mat. Number' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'MAKTX' 'MAKT' 'MAKTX' '' '' 'Decription' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',
'BISMT' 'MARA' 'BISMT' '' '' 'Old Mat. No' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',
'MEINS' 'MARA' 'MEINS' '' '' 'Base Unit' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '',
'MSEHT' 'T006A' 'MSEHT' '' '' 'Measure' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_DETAIL'
* i_structure_name = ''
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Sort and Group by Field
* CLEAR gi_it_sort.
* gi_it_sort-fieldname = 'MATKL'. ">> Filled by Fieldname
* gi_it_sort-up = 'X'. ">> 'X' = Ascending ; ' ' = Descending
* gi_it_sort-subtot = 'X'.
* gi_it_sort-group = '*'. ">> '*' = Grouped by field ; ' ' = Not grouped by this field
* APPEND gi_it_sort.
ENDFORM. "fm_alv_set_column
*&---------------------------------------------------------------------*
*& Form fm_build_keyinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FU_KEYINFO text
*----------------------------------------------------------------------*
FORM fm_build_keyinfo USING fu_keyinfo TYPE slis_keyinfo_alv .
fu_keyinfo-header01 = 'MATKL'.
* fu_keyinfo-header02 = 'VKORG'.
* fu_keyinfo-header03 = 'VTWEG'.
* fu_keyinfo-header04 = 'NETWR'.
* fu_keyinfo-header05 = 'WAERK'.
fu_keyinfo-item01 = 'MATKL'.
* fu_keyinfo-item02 = 'POSNR'.
* fu_keyinfo-item03 = 'VTWEG'.
* fu_keyinfo-item04 = 'SPART'.
* fu_keyinfo-item05 = 'NORM'.
ENDFORM. "fm_build_keyinfo