Documente Academic
Documente Profesional
Documente Cultură
*&-->selection-screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS:s_werks FOR mseg-werks,
s_matnr FOR mseg-matnr,
s_budat FOR mkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
PERFORM process_data.
PERFORM events_handling.
PERFORM display_data.
*&---------------------------------------------------------------------*
*&
Form get_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_data.
*&-->Get data
* SELECT b~matnr
*
b~werks
*
b~bwart
*
b~shkzg
*
b~erfmg
*
INTO CORRESPONDING FIELDS OF TABLE g_t_scrap
*
FROM mkpf AS a INNER JOIN mseg AS b ON
*
a~mblnr = b~mblnr AND
*
a~mjahr = b~mjahr
*
WHERE b~werks IN s_werks AND
*
b~matnr IN s_matnr AND
*
a~budat IN s_budat AND
*
b~lgort EQ 'PR99' AND
*
b~bwart IN ('131','132','311','551').
SELECT a~mblnr
a~budat
a~mjahr
a~bktxt
a~usnam
b~matnr
b~werks
b~lgort
b~bwart
b~shkzg
b~zeile
b~erfmg
b~erfme
b~exbwr
INTO CORRESPONDING FIELDS OF TABLE g_t_final_2
FROM mkpf AS a INNER JOIN mseg AS b ON
a~mblnr = b~mblnr AND
a~mjahr = b~mjahr
WHERE b~werks IN s_werks AND
b~matnr IN s_matnr AND
a~budat IN s_budat AND
b~lgort EQ 'PR99' AND
b~bwart IN ('131','132','311','551','312','561',
'565','601','701','711','Z11','201',
'261','309').
IF sy-subrc EQ 0.
*&-->material description
SELECT matnr
maktx
INTO TABLE g_t_makt FROM makt
FOR ALL ENTRIES IN g_t_final_2
WHERE matnr = g_t_final_2-matnr.
*&-->Production line (MKAL-MDV01)
SELECT matnr
werks
mdv01
INTO TABLE g_t_mkal FROM mkal
FOR ALL ENTRIES IN g_t_final_2
g_w_final-matnr
g_w_final-werks.
g_w_final-matnr
g_w_final-werks
'PR99'.
ENDIF.
ELSEIF g_w_temp-bwart = 551.
g_w_final-monolith_stk_tr = g_w_temp-erfmg.
MODIFY g_t_final FROM g_w_final INDEX idx.
ENDIF.
ELSE.
IF g_w_temp-bwart = 131.
g_w_final-prd_qty = g_w_temp-erfmg.
APPEND g_w_final TO g_t_final.
ELSEIF g_w_temp-bwart = 132.
g_w_final-scrap_qty = g_w_temp-erfmg.
APPEND g_w_final TO g_t_final.
ELSEIF g_w_temp-bwart = 311.
IF g_w_temp-shkzg = 'H'.
g_w_final-stk_tr_fr = g_w_temp-erfmg.
APPEND g_w_final TO g_t_final.
ELSE.
g_w_final-stk_tr_to = g_w_temp-erfmg.
APPEND g_w_final TO g_t_final.
ENDIF.
ELSEIF g_w_temp-bwart = 551.
g_w_final-monolith_stk_tr = g_w_temp-erfmg.
APPEND g_w_final TO g_t_final.
ENDIF.
ENDIF.
CLEAR:g_w_temp,
g_w_final.
ENDLOOP.
CLEAR g_w_unique.
ENDLOOP.
ENDFORM.
" process_data
*&---------------------------------------------------------------------*
*&
Form events_handling
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM events_handling.
g_w_events-form = 'USER_COMMAND'.
APPEND g_w_events TO g_t_events.
CLEAR g_w_events.
ENDIF.
ENDIF.
ENDFORM.
" events_handling
*&---------------------------------------------------------------------*
*&
Form display_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_data.
*&-->display data
PERFORM field_cat_basic_list.
repid = sy-repid.
g_t_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= repid
is_layout
= g_t_layout
it_fieldcat
= g_t_fcat
i_save
= 'A'
* IS_VARIANT
=
it_events
= g_t_events
*
TABLES
t_outtab
= g_t_final
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.
ENDFORM.
" display_data
*&---------------------------------------------------------------------*
*&
Form field_cat
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM field_cat_basic_list.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'WERKS'.
'G_T_FINAL'.
= 'Plant'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'MATNR'.
'G_T_FINAL'.
= 'Material'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'MAKTX'.
'G_T_FINAL'.
= 'Material Description'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'MDV01'.
'G_T_FINAL'.
= 'Production Line'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'PRD_QTY'.
'G_T_FINAL'.
= 'Total Production Qty'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'SCRAP_QTY'.
'G_T_FINAL'.
= 'Total scrap Qty'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
vl_no.
= 'STK_TR_FR'.
'G_T_FINAL'.
= 'Stock Transfer From'.
g_t_fcat.
"'Material Code'.
CLEAR g_w_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'STK_TR_TO'.
'G_T_FINAL'.
= 'Stock Transfer To'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'MONOLITH_STK_TR'.
'G_T_FINAL'.
= 'Monolith Stock Transfer'.
g_t_fcat.
vl_no = vl_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
vl_no.
= 'LABST'.
'G_T_FINAL'.
= 'Stock in PR99'.
g_t_fcat.
ENDFORM.
" field_cat
*&---------------------------------------------------------------------*
*&
Form user_command
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: lv_fieldname TYPE slis_selfield-fieldname.
*&--> Check function code
CASE r_ucomm.
WHEN '&IC1'. "Double click
READ TABLE g_t_final INTO g_w_final INDEX rs_selfield-tabindex.
CLEAR:r_ucomm,
lv_fieldname.
lv_fieldname = rs_selfield-fieldname.
CASE lv_fieldname.
WHEN 'PRD_QTY'.
refresh r_bwart.
r_bwart-sign = 'I'.
r_bwart-option = 'EQ'.
r_bwart-low = '131'.
APPEND r_bwart.
clear r_bwart.
*
*
*
*
*
*
*
*
*
WHEN 'MONOLITH_STK_TR'.
refresh r_bwart[].
r_bwart-sign = 'I'.
r_bwart-option = 'EQ'.
r_bwart-low = '551'.
APPEND r_bwart.
clear r_bwart.
PERFORM get_all_documents USING lv_fieldname.
WHEN 'LABST'.
REFRESH r_bwart[].
g_w_bwart-bwart = ''.
APPEND g_w_bwart TO g_t_bwart.
CLEAR g_w_bwart.
PERFORM get_all_documents USING lv_fieldname.
ENDCASE.
ENDCASE.
ENDFORM.
"user_command
*&---------------------------------------------------------------------*
*&
Form get_all_documents
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_all_documents USING lv_fieldname .
REFRESH g_t_sec_list.
LOOP AT g_t_final_2 INTO g_w_final_2
WHERE matnr = g_w_final-matnr AND
werks = g_w_final-werks AND
bwart IN r_bwart.
IF lv_fieldname = 'STK_TR_FR'.
IF g_w_final_2-shkzg = 'H'.
*
Internal table for 'STK_TR_FR'.
APPEND g_w_final_2 TO g_t_sec_list.
CLEAR g_w_final_2.
ENDIF.
ELSEIF lv_fieldname = 'STK_TR_TO'.
IF g_w_final_2-shkzg = 'S'.
*
Internal table for 'STK_TR_TO'
APPEND g_w_final_2 TO g_t_sec_list.
CLEAR g_w_final_2.
ENDIF.
ELSE.
APPEND g_w_final_2 TO g_t_sec_list.
CLEAR g_w_final_2.
ENDIF.
ENDLOOP.
* IF sy-subrc EQ 0.
*&--> get the movement type text
SELECT bwart
btext FROM t156t INTO TABLE g_t_btext
FOR ALL ENTRIES IN g_t_sec_list
WHERE bwart = g_t_sec_list-bwart AND
spras = sy-langu.
* ENDIF.
CLEAR idx.
LOOP AT g_t_sec_list INTO g_w_sec_list.
idx = sy-tabix.
READ TABLE g_t_makt INTO g_w_makt
WITH KEY matnr = g_w_sec_list-matnr.
IF sy-subrc EQ 0.
g_w_sec_list-maktx = g_w_makt-maktx.
MODIFY g_t_sec_list FROM g_w_sec_list INDEX idx.
CLEAR g_w_makt.
ENDIF.
READ TABLE g_t_btext INTO g_w_btext
WITH KEY bwart = g_w_sec_list-bwart.
IF sy-subrc EQ 0.
g_w_sec_list-btext = g_w_btext-btext.
MODIFY g_t_sec_list FROM g_w_sec_list INDEX idx.
CLEAR g_w_btext.
ENDIF.
ENDLOOP.
*&-->display secondary list.
PERFORM display_sec_list_data.
ENDFORM.
" get_all_documents
*&---------------------------------------------------------------------*
*&
Form display_sec_list_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_sec_list_data.
PERFORM field_cat_secondary_list.
lv_no.
= 'MATNR'.
'G_T_FINAL_2'.
= 'Material'.
g_t_fcat.
CLEAR g_w_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'WERKS'.
'G_T_FINAL_2'.
= 'Plant'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'MAKTX'.
'G_T_FINAL_2'.
= 'Material description'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'LGORT'.
'G_T_FINAL_2'.
= 'Storage location'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'BWART'.
'G_T_FINAL_2'.
= 'Movement type'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'BTEXT'.
'G_T_FINAL_2'.
= 'Movement type text'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'MBLNR'.
'G_T_FINAL_2'.
= 'Material Document'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'ZEILE'.
'G_T_FINAL_2'.
= 'Item'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'BUDAT'.
'G_T_FINAL_2'.
= 'Posting Date'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'ERFMG'.
'G_T_FINAL_2'.
= 'Qty'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'ERFME'.
'G_T_FINAL_2'.
= 'UOM'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'MJAHR'.
'G_T_FINAL_2'.
= 'Material document Year'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'EXBWR'.
'G_T_FINAL_2'.
= 'Amount in LC'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
APPEND g_w_fcat TO
CLEAR g_w_fcat.
lv_no.
= 'BKTXT'.
'G_T_FINAL_2'.
= 'Document header text'.
g_t_fcat.
lv_no = lv_no + 1.
g_w_fcat-col_pos =
g_w_fcat-fieldname
g_w_fcat-tabname =
g_w_fcat-seltext_l
lv_no.
= 'USNAM'.
'G_T_FINAL_2'.
= 'User name'.
ENDFORM.
" field_cat_secondary_list