REPORT zpp_stk_rqmt_report.
INCLUDE zpp_stk_rqmt_dat.
INCLUDE zpp_stk_rqmt_sub.
*&---------------------------------------------------------------------*
*& Include ZPP_STK_RQMT_DAT
*&---------------------------------------------------------------------*
TABLES: afko,
afpo,
plaf,
mara,
makt,
marc.
TYPES:BEGIN OF ty_mara,
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
END OF ty_mara.
TYPES:BEGIN OF ty_marc,
matnr TYPE matnr, " Material Number
werks TYPE werks, " Plant
plifz TYPE plifz, " Lead Time
END OF ty_marc.
TYPES:BEGIN OF ty_makt,
matnr TYPE matnr, " Material Number
maktx TYPE maktx, " Material Desc
END OF ty_makt.
TYPES:BEGIN OF ty_afko,
aufnr TYPE aufnr, " Order Number
plnbez TYPE matnr, " Material Number
* plwrk TYPE plwrk, " Planning Plant
END OF ty_afko.
TYPES:BEGIN OF ty_afpo,
aufnr TYPE aufnr, " Order Number
plnum TYPE plnum, " Planned order number
matnr TYPE co_matnr, " Material Number for Order
meins TYPE meins, " Base Unit of Measure
pgmng TYPE gsmng, " Total planned order quantity
ltrmp TYPE co_ltrmp, " Delivery date from planned order
dnrel TYPE co_dnrel, " Indicator: Order item not relevant for MRP
END OF ty_afpo.
TYPES: BEGIN OF ty_plaf,
plnum TYPE plnum, " Planned order number
matnr TYPE plmat, " Planning material
plwrk TYPE plwrk, " Planning Plant
meins TYPE meins, " Base Unit of Measure
gsmng TYPE gsmng, " Total planned order quantity
pedtr TYPE pedtr, " Order finish date in the planned order
END OF ty_plaf.
TYPES: BEGIN OF ty_final1, " For Material Plan Order
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
maktx TYPE maktx, " Material Desc
meins TYPE meins, " Base Unit of Measure
plifz TYPE plifz, " Lead Time
pgmng TYPE gsmng, " Order Qty
ltrmp TYPE co_ltrmp, " Original Date
aufnr TYPE aufnr, " Order Number
END OF ty_final1.
TYPES: BEGIN OF ty_final2, " For Stock Plan Order
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
maktx TYPE maktx, " Material Desc
meins TYPE meins, " Base Unit of Measure
plifz TYPE plifz, " Lead Time
gsmng TYPE gsmng, " Order Qty
pedtr TYPE pedtr, " Original Date
plnum TYPE plnum, " Order Number
END OF ty_final2.
DATA: it_mara TYPE TABLE OF ty_mara, " MARA
wa_mara TYPE ty_mara.
DATA: it_marc TYPE TABLE OF ty_marc, " MARC
wa_marc TYPE ty_marc.
DATA: it_makt TYPE TABLE OF ty_makt, " MAKT
wa_makt TYPE ty_makt.
DATA: it_afko TYPE TABLE OF ty_afko, " AFKO
wa_afko TYPE ty_afko.
DATA: it_afpo TYPE TABLE OF ty_afpo, " AFPO
wa_afpo TYPE ty_afpo.
DATA: it_plaf TYPE TABLE OF ty_plaf, " PLAF
wa_plaf TYPE ty_plaf.
DATA: it_final1 TYPE TABLE OF ty_final1, " ALV_1
wa_final1 TYPE ty_final1.
DATA: it_final2 TYPE TABLE OF ty_final2, " ALV_2
wa_final2 TYPE ty_final2.
* Material Plan Order ALV
DATA: ok_code TYPE sy-ucomm. " OK_CODE
DATA : v_pos TYPE i . " Column Increase
DATA : alv_cont1 TYPE REF TO cl_gui_custom_container. " Call Screen 100 (ALV_CONT1)
DATA : alv_grid TYPE REF TO cl_gui_alv_grid. " ALV Grid For Screen 100.
DATA : c_logo TYPE REF TO cl_gui_custom_container. " Logo
DATA : dd TYPE REF TO cl_dd_document.
DATA : i_fcat TYPE lvc_t_fcat. " Fieldcatalog 1
DATA : wa_fcat LIKE LINE OF i_fcat.
CONSTANTS: lc_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
* Stock Order Plan ALV
DATA : alv_cont2 TYPE REF TO cl_gui_custom_container. " Call Screen 100 (ALV_CONT2)
DATA : alv_grid2 TYPE REF TO cl_gui_alv_grid. " ALV Grid For Screen 100.
DATA : it_fcat2 TYPE lvc_t_fcat . " Fieldcatalog 2
DATA : wa_fcat2 LIKE LINE OF it_fcat2.
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR marc-matnr NO-EXTENSION NO INTERVALS OBLIGATORY DEFAULT '1010020001' s_werks FOR marc-werks NO-EXTENSION NO INTERVALS OBLIGATORY DEFAULT '2100'.
SELECTION-SCREEN: END OF BLOCK a1.
**&---------------------------------------------------------------------*
**& START-OF-SELECTION SCREEN EVENT DECLARATION
**&---------------------------------------------------------------------*
START-OF-SELECTION .
PERFORM data_check.
IF it_afko[] IS INITIAL.
MESSAGE text-003 TYPE 'I'.
ELSE.
CALL SCREEN 0100.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZPP_STK_RQMT_SUB
*&---------------------------------------------------------------------*
INITIALIZATION.
*clearing workareas
CLEAR: wa_final1,
wa_final2,
wa_makt,
wa_mara,
wa_marc,
wa_afko,
wa_afpo,
wa_plaf.
*refreshing internal table
REFRESH: it_final1,
it_final2,
it_makt,
it_mara,
it_marc,
it_afko,
it_afpo,
it_plaf.
*&---------------------------------------------------------------------*
*& AT SELECTION SCREEN EVENT DECLARATION
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
* validating Material No and Plant
*&---------------------------------------------------------------------*
SELECT matnr " Material number
werks " Plant
INTO CORRESPONDING FIELDS OF TABLE it_marc
FROM marc
WHERE matnr IN s_matnr
AND werks IN s_werks.
IF sy-subrc NE 0 .
MESSAGE: text-002 TYPE 'E'.
ENDIF.
**&---------------------------------------------------------------------*
***********************************************************************************************************
"Create screen 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZPP_STK_RQMT'. "
SET TITLEBAR 'ZPP_STK_RQMT'.
PERFORM create_objects_1.
PERFORM get_data_1. " Material Plan Order
PERFORM get_data_2. " Stock Plan Order
PERFORM create_fcat_1 .
PERFORM create_fcat_2 .
PERFORM display_alv.
* CREATE OBJECT obj. "create object for local class
* SET HANDLER obj->handle_double_click FOR alv_grid . "use set handler
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code .
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_OBJECTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_objects_1 .
CREATE OBJECT alv_cont1
EXPORTING
container_name = 'ALV_CONT1'.
CREATE OBJECT alv_grid
EXPORTING
i_parent = alv_cont1.
**************************************************************************
CREATE OBJECT alv_cont2
EXPORTING
container_name = 'ALV_CONT2'.
CREATE OBJECT alv_grid2
EXPORTING
i_parent = alv_cont2.
ENDFORM. " CREATE_OBJECTS
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_1 .
SELECT aufnr " Order Number
plnbez " Material Number
FROM afko
INTO CORRESPONDING FIELDS OF TABLE it_afko
WHERE plnbez IN s_matnr.
DELETE ADJACENT DUPLICATES FROM it_afko COMPARING plnbez.
IF sy-subrc NE 0.
MESSAGE text-003 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
IF it_afko IS NOT INITIAL.
IF s_matnr IS INITIAL.
SELECT aufnr " Order Number
plnum " Planned order number
matnr " Material Number for Order
meins " Base Unit of Measure
pgmng " Total planned order quantity
ltrmp " Delivery date from planned order
dnrel " Indicator: Order item not relevant for MRP
FROM afpo
INTO CORRESPONDING FIELDS OF TABLE it_afpo
FOR ALL ENTRIES IN it_afko
WHERE matnr = it_afko-plnbez
AND dnrel NE 'X'.
ELSE.
SELECT aufnr " Order Number
plnum " Planned order number
matnr " Material Number for Order
meins " Base Unit of Measure
pgmng " Total planned order quantity
ltrmp " Delivery date from planned order
dnrel " Indicator: Order item not relevant for MRP
FROM afpo
INTO CORRESPONDING FIELDS OF TABLE it_afpo
WHERE matnr IN s_matnr
AND dnrel NE 'X'.
ENDIF.
ENDIF.
IF it_afpo IS NOT INITIAL.
IF s_matnr AND s_werks IS INITIAL .
SELECT plnum " Planned order number
matnr " Planning material
plwrk " Planning Plant
gsmng " Total planned order quantity
pedtr " Order finish date in the planned order
FROM plaf
INTO CORRESPONDING FIELDS OF TABLE it_plaf
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr
AND plwrk IN s_werks.
ELSE.
SELECT plnum " Planned order number
matnr " Planning material
plwrk " Planning Plant
meins " Base Unit of Measure
gsmng " Total planned order quantity
pedtr " Order finish date in the planned order
FROM plaf
INTO CORRESPONDING FIELDS OF TABLE it_plaf
WHERE matnr IN s_matnr
AND plwrk IN s_werks.
ENDIF.
SELECT matnr " Material Number
bismt " Old Material Code
FROM mara
INTO CORRESPONDING FIELDS OF TABLE it_mara
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr.
SELECT matnr " Material Number
maktx " Material Desc
FROM makt
INTO CORRESPONDING FIELDS OF TABLE it_makt
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr
AND spras = 'E'.
ENDIF.
CHECK it_plaf IS NOT INITIAL.
SELECT matnr " Material Number
werks " Plant
plifz " Lead Time
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_plaf
WHERE matnr = it_plaf-matnr
AND werks = it_plaf-plwrk.
LOOP AT it_afpo INTO wa_afpo.
wa_final1-aufnr = wa_afpo-aufnr. " Order Number
wa_final1-matnr = wa_afpo-matnr. " Material Number for Order
wa_final1-meins = wa_afpo-meins. " Base Unit of Measure
wa_final1-pgmng = wa_afpo-pgmng. " Total planned order quantity
wa_final1-ltrmp = wa_afpo-ltrmp. " Delivery date from planned order
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_afpo-matnr.
wa_final1-bismt = wa_mara-bismt.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_afpo-matnr.
wa_final1-plifz = wa_marc-plifz.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_afpo-matnr.
wa_final1-maktx = wa_makt-maktx.
APPEND wa_final1 TO it_final1.
CLEAR: wa_final1.
ENDLOOP.
ENDFORM. " GET_DATA
***********************************************************************************************************
*&---------------------------------------------------------------------*
*& Form GET_DATA_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_2 .
LOOP AT it_plaf INTO wa_plaf.
*
wa_final2-plnum = wa_plaf-plnum. " Order Number
wa_final2-matnr = wa_plaf-matnr. " Material Number for Order
wa_final2-gsmng = wa_plaf-gsmng. " Total planned order quantity
wa_final2-meins = wa_plaf-meins. " Base Unit of Measure
wa_final2-pedtr = wa_plaf-pedtr. " Delivery date from planned order
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_afpo-matnr.
wa_final2-bismt = wa_mara-bismt.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_afpo-matnr.
wa_final2-plifz = wa_marc-plifz.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_afpo-matnr.
wa_final2-maktx = wa_makt-maktx.
APPEND wa_final2 TO it_final2.
CLEAR: wa_final2.
ENDLOOP.
ENDFORM. " GET_DATA_2
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv .
CALL METHOD alv_grid->set_table_for_first_display
CHANGING
it_outtab = it_final1
it_fieldcatalog = i_fcat.
CALL METHOD alv_grid2->set_table_for_first_display
CHANGING
it_outtab = it_final2
it_fieldcatalog = it_fcat2.
ENDFORM. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_fcat_1 .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MATNR' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Material No'.
wa_fcat-outputlen = '18'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'BISMT' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Old Mat No'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MAKTX' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Mat Desc'.
wa_fcat-outputlen = '18'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MEINS' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'UOM'.
wa_fcat-outputlen = '4'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'PLIFZ' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Lead Time'.
wa_fcat-outputlen = '6'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'PGMNG' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Qty'.
wa_fcat-outputlen = '6'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'LTRMP' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Original Date'.
wa_fcat-outputlen = '10'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'AUFNR' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Order NO'.
wa_fcat-outputlen = '13'.
APPEND wa_fcat TO i_fcat .
*************************************************************
ENDFORM. " CREATE_FCAT
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_fcat_2 .
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MATNR' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Material No'.
wa_fcat2-outputlen = '18'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'BISMT' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Old Mat No'.
wa_fcat2-outputlen = '15'.
APPEND wa_fcat2 TO it_fcat2 .
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MAKTX' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Mat Desc'.
wa_fcat2-outputlen = '18'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MEINS' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'UOM'.
wa_fcat2-outputlen = '4'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PLIFZ' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Lead Time'.
wa_fcat2-outputlen = '6'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'GSMNG' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Qty'.
wa_fcat2-outputlen = '6'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PEDTR' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Original Date'.
wa_fcat2-outputlen = '10'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PLNUM' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Order NO'.
wa_fcat2-outputlen = '13'.
APPEND wa_fcat2 TO it_fcat2.
ENDFORM. " CREATE_FCAT_2
*&---------------------------------------------------------------------*
*& Form DATA_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_check .
SELECT aufnr " Order Number
plnbez " Material Number
FROM afko
INTO CORRESPONDING FIELDS OF TABLE it_afko
WHERE plnbez IN s_matnr.
ENDFORM. " DATA_CHECK
INCLUDE zpp_stk_rqmt_dat.
INCLUDE zpp_stk_rqmt_sub.
*&---------------------------------------------------------------------*
*& Include ZPP_STK_RQMT_DAT
*&---------------------------------------------------------------------*
TABLES: afko,
afpo,
plaf,
mara,
makt,
marc.
TYPES:BEGIN OF ty_mara,
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
END OF ty_mara.
TYPES:BEGIN OF ty_marc,
matnr TYPE matnr, " Material Number
werks TYPE werks, " Plant
plifz TYPE plifz, " Lead Time
END OF ty_marc.
TYPES:BEGIN OF ty_makt,
matnr TYPE matnr, " Material Number
maktx TYPE maktx, " Material Desc
END OF ty_makt.
TYPES:BEGIN OF ty_afko,
aufnr TYPE aufnr, " Order Number
plnbez TYPE matnr, " Material Number
* plwrk TYPE plwrk, " Planning Plant
END OF ty_afko.
TYPES:BEGIN OF ty_afpo,
aufnr TYPE aufnr, " Order Number
plnum TYPE plnum, " Planned order number
matnr TYPE co_matnr, " Material Number for Order
meins TYPE meins, " Base Unit of Measure
pgmng TYPE gsmng, " Total planned order quantity
ltrmp TYPE co_ltrmp, " Delivery date from planned order
dnrel TYPE co_dnrel, " Indicator: Order item not relevant for MRP
END OF ty_afpo.
TYPES: BEGIN OF ty_plaf,
plnum TYPE plnum, " Planned order number
matnr TYPE plmat, " Planning material
plwrk TYPE plwrk, " Planning Plant
meins TYPE meins, " Base Unit of Measure
gsmng TYPE gsmng, " Total planned order quantity
pedtr TYPE pedtr, " Order finish date in the planned order
END OF ty_plaf.
TYPES: BEGIN OF ty_final1, " For Material Plan Order
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
maktx TYPE maktx, " Material Desc
meins TYPE meins, " Base Unit of Measure
plifz TYPE plifz, " Lead Time
pgmng TYPE gsmng, " Order Qty
ltrmp TYPE co_ltrmp, " Original Date
aufnr TYPE aufnr, " Order Number
END OF ty_final1.
TYPES: BEGIN OF ty_final2, " For Stock Plan Order
matnr TYPE matnr, " Material Number
bismt TYPE bismt, " Old Material Code
maktx TYPE maktx, " Material Desc
meins TYPE meins, " Base Unit of Measure
plifz TYPE plifz, " Lead Time
gsmng TYPE gsmng, " Order Qty
pedtr TYPE pedtr, " Original Date
plnum TYPE plnum, " Order Number
END OF ty_final2.
DATA: it_mara TYPE TABLE OF ty_mara, " MARA
wa_mara TYPE ty_mara.
DATA: it_marc TYPE TABLE OF ty_marc, " MARC
wa_marc TYPE ty_marc.
DATA: it_makt TYPE TABLE OF ty_makt, " MAKT
wa_makt TYPE ty_makt.
DATA: it_afko TYPE TABLE OF ty_afko, " AFKO
wa_afko TYPE ty_afko.
DATA: it_afpo TYPE TABLE OF ty_afpo, " AFPO
wa_afpo TYPE ty_afpo.
DATA: it_plaf TYPE TABLE OF ty_plaf, " PLAF
wa_plaf TYPE ty_plaf.
DATA: it_final1 TYPE TABLE OF ty_final1, " ALV_1
wa_final1 TYPE ty_final1.
DATA: it_final2 TYPE TABLE OF ty_final2, " ALV_2
wa_final2 TYPE ty_final2.
* Material Plan Order ALV
DATA: ok_code TYPE sy-ucomm. " OK_CODE
DATA : v_pos TYPE i . " Column Increase
DATA : alv_cont1 TYPE REF TO cl_gui_custom_container. " Call Screen 100 (ALV_CONT1)
DATA : alv_grid TYPE REF TO cl_gui_alv_grid. " ALV Grid For Screen 100.
DATA : c_logo TYPE REF TO cl_gui_custom_container. " Logo
DATA : dd TYPE REF TO cl_dd_document.
DATA : i_fcat TYPE lvc_t_fcat. " Fieldcatalog 1
DATA : wa_fcat LIKE LINE OF i_fcat.
CONSTANTS: lc_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
* Stock Order Plan ALV
DATA : alv_cont2 TYPE REF TO cl_gui_custom_container. " Call Screen 100 (ALV_CONT2)
DATA : alv_grid2 TYPE REF TO cl_gui_alv_grid. " ALV Grid For Screen 100.
DATA : it_fcat2 TYPE lvc_t_fcat . " Fieldcatalog 2
DATA : wa_fcat2 LIKE LINE OF it_fcat2.
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR marc-matnr NO-EXTENSION NO INTERVALS OBLIGATORY DEFAULT '1010020001' s_werks FOR marc-werks NO-EXTENSION NO INTERVALS OBLIGATORY DEFAULT '2100'.
SELECTION-SCREEN: END OF BLOCK a1.
**&---------------------------------------------------------------------*
**& START-OF-SELECTION SCREEN EVENT DECLARATION
**&---------------------------------------------------------------------*
START-OF-SELECTION .
PERFORM data_check.
IF it_afko[] IS INITIAL.
MESSAGE text-003 TYPE 'I'.
ELSE.
CALL SCREEN 0100.
ENDIF.
*&---------------------------------------------------------------------*
*& Include ZPP_STK_RQMT_SUB
*&---------------------------------------------------------------------*
INITIALIZATION.
*clearing workareas
CLEAR: wa_final1,
wa_final2,
wa_makt,
wa_mara,
wa_marc,
wa_afko,
wa_afpo,
wa_plaf.
*refreshing internal table
REFRESH: it_final1,
it_final2,
it_makt,
it_mara,
it_marc,
it_afko,
it_afpo,
it_plaf.
*&---------------------------------------------------------------------*
*& AT SELECTION SCREEN EVENT DECLARATION
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
* validating Material No and Plant
*&---------------------------------------------------------------------*
SELECT matnr " Material number
werks " Plant
INTO CORRESPONDING FIELDS OF TABLE it_marc
FROM marc
WHERE matnr IN s_matnr
AND werks IN s_werks.
IF sy-subrc NE 0 .
MESSAGE: text-002 TYPE 'E'.
ENDIF.
**&---------------------------------------------------------------------*
***********************************************************************************************************
"Create screen 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZPP_STK_RQMT'. "
SET TITLEBAR 'ZPP_STK_RQMT'.
PERFORM create_objects_1.
PERFORM get_data_1. " Material Plan Order
PERFORM get_data_2. " Stock Plan Order
PERFORM create_fcat_1 .
PERFORM create_fcat_2 .
PERFORM display_alv.
* CREATE OBJECT obj. "create object for local class
* SET HANDLER obj->handle_double_click FOR alv_grid . "use set handler
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code .
WHEN 'BACK'.
SET SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_OBJECTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_objects_1 .
CREATE OBJECT alv_cont1
EXPORTING
container_name = 'ALV_CONT1'.
CREATE OBJECT alv_grid
EXPORTING
i_parent = alv_cont1.
**************************************************************************
CREATE OBJECT alv_cont2
EXPORTING
container_name = 'ALV_CONT2'.
CREATE OBJECT alv_grid2
EXPORTING
i_parent = alv_cont2.
ENDFORM. " CREATE_OBJECTS
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_1 .
SELECT aufnr " Order Number
plnbez " Material Number
FROM afko
INTO CORRESPONDING FIELDS OF TABLE it_afko
WHERE plnbez IN s_matnr.
DELETE ADJACENT DUPLICATES FROM it_afko COMPARING plnbez.
IF sy-subrc NE 0.
MESSAGE text-003 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
IF it_afko IS NOT INITIAL.
IF s_matnr IS INITIAL.
SELECT aufnr " Order Number
plnum " Planned order number
matnr " Material Number for Order
meins " Base Unit of Measure
pgmng " Total planned order quantity
ltrmp " Delivery date from planned order
dnrel " Indicator: Order item not relevant for MRP
FROM afpo
INTO CORRESPONDING FIELDS OF TABLE it_afpo
FOR ALL ENTRIES IN it_afko
WHERE matnr = it_afko-plnbez
AND dnrel NE 'X'.
ELSE.
SELECT aufnr " Order Number
plnum " Planned order number
matnr " Material Number for Order
meins " Base Unit of Measure
pgmng " Total planned order quantity
ltrmp " Delivery date from planned order
dnrel " Indicator: Order item not relevant for MRP
FROM afpo
INTO CORRESPONDING FIELDS OF TABLE it_afpo
WHERE matnr IN s_matnr
AND dnrel NE 'X'.
ENDIF.
ENDIF.
IF it_afpo IS NOT INITIAL.
IF s_matnr AND s_werks IS INITIAL .
SELECT plnum " Planned order number
matnr " Planning material
plwrk " Planning Plant
gsmng " Total planned order quantity
pedtr " Order finish date in the planned order
FROM plaf
INTO CORRESPONDING FIELDS OF TABLE it_plaf
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr
AND plwrk IN s_werks.
ELSE.
SELECT plnum " Planned order number
matnr " Planning material
plwrk " Planning Plant
meins " Base Unit of Measure
gsmng " Total planned order quantity
pedtr " Order finish date in the planned order
FROM plaf
INTO CORRESPONDING FIELDS OF TABLE it_plaf
WHERE matnr IN s_matnr
AND plwrk IN s_werks.
ENDIF.
SELECT matnr " Material Number
bismt " Old Material Code
FROM mara
INTO CORRESPONDING FIELDS OF TABLE it_mara
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr.
SELECT matnr " Material Number
maktx " Material Desc
FROM makt
INTO CORRESPONDING FIELDS OF TABLE it_makt
FOR ALL ENTRIES IN it_afpo
WHERE matnr = it_afpo-matnr
AND spras = 'E'.
ENDIF.
CHECK it_plaf IS NOT INITIAL.
SELECT matnr " Material Number
werks " Plant
plifz " Lead Time
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_plaf
WHERE matnr = it_plaf-matnr
AND werks = it_plaf-plwrk.
LOOP AT it_afpo INTO wa_afpo.
wa_final1-aufnr = wa_afpo-aufnr. " Order Number
wa_final1-matnr = wa_afpo-matnr. " Material Number for Order
wa_final1-meins = wa_afpo-meins. " Base Unit of Measure
wa_final1-pgmng = wa_afpo-pgmng. " Total planned order quantity
wa_final1-ltrmp = wa_afpo-ltrmp. " Delivery date from planned order
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_afpo-matnr.
wa_final1-bismt = wa_mara-bismt.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_afpo-matnr.
wa_final1-plifz = wa_marc-plifz.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_afpo-matnr.
wa_final1-maktx = wa_makt-maktx.
APPEND wa_final1 TO it_final1.
CLEAR: wa_final1.
ENDLOOP.
ENDFORM. " GET_DATA
***********************************************************************************************************
*&---------------------------------------------------------------------*
*& Form GET_DATA_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_2 .
LOOP AT it_plaf INTO wa_plaf.
*
wa_final2-plnum = wa_plaf-plnum. " Order Number
wa_final2-matnr = wa_plaf-matnr. " Material Number for Order
wa_final2-gsmng = wa_plaf-gsmng. " Total planned order quantity
wa_final2-meins = wa_plaf-meins. " Base Unit of Measure
wa_final2-pedtr = wa_plaf-pedtr. " Delivery date from planned order
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_afpo-matnr.
wa_final2-bismt = wa_mara-bismt.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_afpo-matnr.
wa_final2-plifz = wa_marc-plifz.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_afpo-matnr.
wa_final2-maktx = wa_makt-maktx.
APPEND wa_final2 TO it_final2.
CLEAR: wa_final2.
ENDLOOP.
ENDFORM. " GET_DATA_2
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv .
CALL METHOD alv_grid->set_table_for_first_display
CHANGING
it_outtab = it_final1
it_fieldcatalog = i_fcat.
CALL METHOD alv_grid2->set_table_for_first_display
CHANGING
it_outtab = it_final2
it_fieldcatalog = it_fcat2.
ENDFORM. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_fcat_1 .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MATNR' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Material No'.
wa_fcat-outputlen = '18'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'BISMT' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Old Mat No'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MAKTX' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Mat Desc'.
wa_fcat-outputlen = '18'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'MEINS' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'UOM'.
wa_fcat-outputlen = '4'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'PLIFZ' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Lead Time'.
wa_fcat-outputlen = '6'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'PGMNG' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Qty'.
wa_fcat-outputlen = '6'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'LTRMP' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Original Date'.
wa_fcat-outputlen = '10'.
APPEND wa_fcat TO i_fcat .
CLEAR wa_fcat.
v_pos = v_pos + 1.
wa_fcat-col_pos = v_pos .
wa_fcat-fieldname = 'AUFNR' .
wa_fcat-tabname = 'IT_FINAL1' .
wa_fcat-scrtext_m = 'Order NO'.
wa_fcat-outputlen = '13'.
APPEND wa_fcat TO i_fcat .
*************************************************************
ENDFORM. " CREATE_FCAT
*&---------------------------------------------------------------------*
*& Form CREATE_FCAT_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_fcat_2 .
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MATNR' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Material No'.
wa_fcat2-outputlen = '18'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'BISMT' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Old Mat No'.
wa_fcat2-outputlen = '15'.
APPEND wa_fcat2 TO it_fcat2 .
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MAKTX' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Mat Desc'.
wa_fcat2-outputlen = '18'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'MEINS' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'UOM'.
wa_fcat2-outputlen = '4'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PLIFZ' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Lead Time'.
wa_fcat2-outputlen = '6'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'GSMNG' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Qty'.
wa_fcat2-outputlen = '6'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PEDTR' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Original Date'.
wa_fcat2-outputlen = '10'.
APPEND wa_fcat2 TO it_fcat2.
CLEAR wa_fcat2.
v_pos = v_pos + 1.
wa_fcat2-col_pos = v_pos .
wa_fcat2-fieldname = 'PLNUM' .
wa_fcat2-tabname = 'IT_FINAL2' .
wa_fcat2-scrtext_m = 'Order NO'.
wa_fcat2-outputlen = '13'.
APPEND wa_fcat2 TO it_fcat2.
ENDFORM. " CREATE_FCAT_2
*&---------------------------------------------------------------------*
*& Form DATA_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_check .
SELECT aufnr " Order Number
plnbez " Material Number
FROM afko
INTO CORRESPONDING FIELDS OF TABLE it_afko
WHERE plnbez IN s_matnr.
ENDFORM. " DATA_CHECK
No comments:
Post a Comment