Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
*---------------------------------------------------------------------*
* T Y P E S *
*---------------------------------------------------------------------*
TYPES:
BEGIN OF type_mast,
matnr LIKE mast-matnr, " Material Number
werks LIKE mast-werks, " Plant
stlan LIKE mast-stlan, " BOM Usage
stlnr LIKE mast-stlnr, " Bill of material
stlal LIKE mast-stlal, " Alternative BOM
END OF type_mast,
BEGIN OF type_makt,
matnr LIKE makt-matnr, " Material Number
maktx LIKE makt-maktx, " Material Description
END OF type_makt,
BEGIN OF type_bom_hdr,
stlty LIKE stko-stlty, " BOM category
stlnr LIKE stko-stlnr, " Bill of material
datuv LIKE stko-datuv, " Valid-From Date
bmeng LIKE stko-bmeng, " Base Quantity
stktx LIKE stko-stktx, " Alternative BOM Text
stlst LIKE stko-stlst, " BOM status
END OF type_bom_hdr,
BEGIN OF type_bom_item,
stlty LIKE stpo-stlty, " BOM category
stlnr LIKE stpo-stlnr, " Bill of material
idnrk LIKE stpo-idnrk, " BOM component
postp LIKE stpo-postp, " Item Category(BOM)
posnr LIKE stpo-posnr, " BOM Item Number
menge LIKE stpo-menge, " Component quantity
END OF type_bom_item,
BEGIN OF type_bom_text,
stlty LIKE stpo-stlty, " BOM category
stlnr LIKE stpo-stlnr, " Bill of material
ztext TYPE stzu-ztext, " BOM Text
END OF type_bom_text,
BEGIN OF type_output,
matnr LIKE mast-matnr, " Material Number
werks LIKE mast-werks, " Plant
stlan LIKE mast-stlan, " BOM Usage
stlnr LIKE mast-stlnr, " Bill of material
ztext TYPE stzu-ztext, " BOM Text
stlal LIKE mast-stlal, " Alternative BOM
maktx LIKE makt-maktx, " Material Description
stlty LIKE stko-stlty, " BOM category
datuv LIKE stko-datuv, " Valid-From Date
bmeng LIKE stko-bmeng, " Base Quantity
stktx LIKE stko-stktx, " Alternative BOM Text
stlst LIKE stko-stlst, " BOM status
idnrk LIKE stpo-idnrk, " BOM component
postp LIKE stpo-postp, " Item Category(BOM)
posnr LIKE stpo-posnr, " BOM Item Number
menge LIKE stpo-menge, " Component quantity
END OF type_output.
*----------------------------------------------------------------------*
* D A T A *
*----------------------------------------------------------------------*
DATA:
w_matnr TYPE mast-matnr, " Material Number
w_werks TYPE mast-werks, " Plant
w_stlan TYPE mast-stlan, " BOM Usage
w_stlst TYPE stko-stlst, " BOM status
w_stlty TYPE stko-stlty, " BOM category
ok_code LIKE sy-ucomm, " User Command
*---------------------------------------------------------------------*
* I N T E R N A L T A B L E S *
*---------------------------------------------------------------------*
DATA:
* Material Data
i_mast TYPE STANDARD TABLE OF type_mast,
wa_mast TYPE type_mast,
* Output table
i_output TYPE STANDARD TABLE OF type_output,
wa_output TYPE type_output,
* BOM Text
i_bom_text TYPE STANDARD TABLE OF type_bom_text,
wa_bom_text TYPE type_bom_text,
*---------------------------------------------------------------------*
* S E L E C T I O N S C R E E N *
*---------------------------------------------------------------------*
SELECT-OPTIONS:
s_matnr FOR w_matnr, " Material Number
s_werks FOR w_werks OBLIGATORY, " Plant
s_stlan FOR w_stlan, " BOM Usage
s_stlst FOR w_stlst, " BOM status
s_stlty FOR w_stlty. " BOM category
*----------------------------------------------------------------------*
* A T S E L E C T I O N S C R E E N *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
PERFORM f010_validate_material.
PERFORM f020_validate_plant.
PERFORM f030_validate_bom_usage.
PERFORM f040_validate_bom_status.
PERFORM f050_validate_bom_category.
*---------------------------------------------------------------------*
* S T A R T O F S E L E C T I O N *
*---------------------------------------------------------------------*
START-OF-SELECTION .
PERFORM f200_fetch_bom_link_data.
PERFORM f210_fetch_material_des_data.
PERFORM f220_fetch_bom_header_data.
PERFORM f230_fetch_bom_text.
PERFORM f240_fetch_bom_item_data.
*---------------------------------------------------------------------*
* E N D O F S E L E C T I O N *
*---------------------------------------------------------------------*
END-OF-SELECTION.
PERFORM f600_display_data.
PERFORM f650_field_catlog .
CALL SCREEN 100.
*&--------------------------------------------------------------------*
*& Form F010_VALIDATE_MATERIAL *
*&--------------------------------------------------------------------*
* --Validate Material *
*---------------------------------------------------------------------*
FORM f010_validate_material .
* Validate Material
IF s_matnr IS NOT INITIAL.
SELECT matnr
INTO w_matnr
FROM mara
UP TO 1 ROWS
WHERE matnr IN s_matnr.
ENDSELECT.
CHECK sy-subrc NE 0.
SET CURSOR FIELD 'S_MATNR'.
MESSAGE e000. " Invalid Material
ENDIF.
ENDFORM. " F010_VALIDATE_MATERIAL
*&--------------------------------------------------------------------*
*& Form F020_VALIDATE_PLANT *
*&--------------------------------------------------------------------*
* - Validate Plant *
*---------------------------------------------------------------------*
FORM f020_validate_plant .
* Validate Plant
SELECT werks
INTO w_werks
FROM t001w
UP TO 1 ROWS
WHERE werks IN s_werks.
ENDSELECT.
CHECK sy-subrc NE 0.
SET CURSOR FIELD 'S_WERKS-LOW'.
MESSAGE e001. " Invalid Plant
*&--------------------------------------------------------------------*
*& Form F030_VALIDATE_BOM_USAGE *
*&--------------------------------------------------------------------*
* -Validate BOM Usage *
*---------------------------------------------------------------------*
FORM f030_validate_bom_usage .
CHECK sy-subrc NE 0.
SET CURSOR FIELD 'S_STLAN'.
MESSAGE e002. " Invalid BOM Usage
ENDIF.
ENDFORM. " F030_VALIDATE_BOM_USAGE
*&--------------------------------------------------------------------*
*& Form F040_VALIDATE_BOM_STATUS *
*&--------------------------------------------------------------------*
* - Validate BOM Status *
*---------------------------------------------------------------------*
FORM f040_validate_bom_status .
SELECT stlst
INTO w_stlst
FROM t415s
UP TO 1 ROWS
WHERE stlst IN s_stlst.
ENDSELECT.
CHECK sy-subrc NE 0.
SET CURSOR FIELD 'S_STLST'.
MESSAGE e003. " Invalid BOM Status
ENDIF.
*&--------------------------------------------------------------------*
*& Form F050_VALIDATE_BOM_CATEGORY *
*&--------------------------------------------------------------------*
* -Validate BOM Category *
*---------------------------------------------------------------------*
FORM f050_validate_bom_category .
CHECK sy-subrc NE 0.
SET CURSOR FIELD 'S_STLTY'.
MESSAGE e004. " Invalid BOM Category
ENDIF.
ENDFORM. " F050_VALIDATE_BOM_CATEGORY
*&--------------------------------------------------------------------*
*& Form F200_FETCH_BOM_LINK_DATA *
*&--------------------------------------------------------------------*
* - Fetch Material BOM Link data *
*---------------------------------------------------------------------*
FORM f200_fetch_bom_link_data .
IF sy-subrc NE 0.
MESSAGE s008. " No Data Found
STOP.
ENDIF. " IF sy-subrc NE 0.
SORT i_mast ASCENDING BY stlnr .
ENDFORM. " F200_FETCH_BOM_LINK_DATA
*&--------------------------------------------------------------------*
*& Form F210_FETCH_MATERIAL_DES_DATA *
*&--------------------------------------------------------------------*
* -Fetch Material Description Data *
*---------------------------------------------------------------------*
FORM f210_fetch_material_des_data .
DATA:
i_mast_temp LIKE TABLE OF wa_mast.
i_mast_temp = i_mast.
SORT i_mast_temp BY matnr.
DELETE ADJACENT DUPLICATES FROM i_mast_temp.
SELECT matnr
maktx
INTO TABLE i_makt
FROM makt
FOR ALL ENTRIES IN i_mast_temp
WHERE matnr EQ i_mast_temp-matnr.
IF sy-subrc NE 0.
MESSAGE s008. " No Data Found
STOP.
ENDIF. " IF sy-subrc NE 0.
*&--------------------------------------------------------------------*
*& Form F220_FETCH_BOM_HEADER_DATA *
*&--------------------------------------------------------------------*
* - Fetch BOM Header data *
*---------------------------------------------------------------------*
FORM f220_fetch_bom_header_data .
IF sy-subrc NE 0.
MESSAGE s008. " No Data Found
STOP.
ENDIF. " IF sy-subrc NE 0.
SORT i_stko ASCENDING BY stlty stlnr.
ENDFORM. " f220_fetch_bom_header_data
*&---------------------------------------------------------------------*
*& Form F230_FETCH_BOM_TEXT *
*&---------------------------------------------------------------------*
* Fetch Bill of Material Text *
*----------------------------------------------------------------------*
FORM f230_fetch_bom_text .
DATA:
i_stko_temp LIKE TABLE OF wa_stko.
i_stko_temp = i_stko.
SORT i_stko_temp BY stlty stlnr.
DELETE ADJACENT DUPLICATES FROM i_stko_temp
COMPARING stlty stlnr.
SELECT stlty
stlnr
ztext
FROM stzu
INTO TABLE i_bom_text
FOR ALL ENTRIES IN i_stko_temp
WHERE stlty EQ i_stko_temp-stlty
AND stlnr EQ i_stko_temp-stlnr.
IF sy-subrc NE 0.
MESSAGE s008. " No Data Found
STOP.
ENDIF. " IF sy-subrc NE 0.
SORT i_bom_text BY stlty stlnr.
*&--------------------------------------------------------------------*
*& Form F240_FETCH_BOM_ITEM_DATA *
*&--------------------------------------------------------------------*
* - Fetch BOM Item data *
*---------------------------------------------------------------------*
FORM f240_fetch_bom_item_data .
IF sy-subrc NE 0.
MESSAGE s008. " No Data Found
STOP.
ENDIF. " IF sy-subrc NE 0.
*&--------------------------------------------------------------------*
*& Form f600_display_data *
*&--------------------------------------------------------------------*
* - Displaying the data *
*---------------------------------------------------------------------*
FORM f600_display_data .
CHECK sy-subrc EQ 0.
MOVE :
wa_stko-stlty TO wa_output-stlty,
wa_stko-datuv TO wa_output-datuv,
wa_stko-bmeng TO wa_output-bmeng,
wa_stko-stktx TO wa_output-stktx,
wa_stko-stlst TO wa_output-stlst.
CHECK sy-subrc EQ 0.
READ TABLE i_bom_text INTO wa_bom_text
WITH KEY stlnr = wa_stko-stlnr
stlty = wa_stko-stlty
BINARY SEARCH.
MOVE wa_bom_text-ztext TO wa_output-ztext.
CHECK sy-subrc EQ 0.
READ TABLE i_mast INTO wa_mast WITH KEY stlnr = wa_stko-stlnr
BINARY SEARCH.
MOVE:
wa_mast-werks TO wa_output-werks,
wa_mast-matnr TO wa_output-matnr,
wa_mast-stlnr TO wa_output-stlnr,
wa_mast-stlan TO wa_output-stlan,
wa_mast-stlal TO wa_output-stlal.
CHECK sy-subrc EQ 0.
READ TABLE i_makt INTO wa_makt WITH KEY matnr = wa_mast-matnr.
CHECK sy-subrc EQ 0.
MOVE wa_makt-maktx TO wa_output-maktx.
APPEND wa_output TO i_output.
*&---------------------------------------------------------------------*
*& Form F650_Field_CATALOG *
*&---------------------------------------------------------------------*
* Field Catlog Structure *
*----------------------------------------------------------------------*
FORM f650_field_catlog .
wa_fcat-fieldname = 'WERKS'.
wa_fcat-ref_table = 'MAST'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-ref_table = 'MAST'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-ref_table = 'MAKT'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STLTY'.
wa_fcat-ref_table = 'STKO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STLAN'.
wa_fcat-ref_table = 'MAST'.
wa_fcat-ref_field = 'STLAN'.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STLNR'.
wa_fcat-ref_table = 'MAST'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'ZTEXT'.
wa_fcat-ref_table = 'STZU'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STLAL'.
wa_fcat-ref_table = 'MAST'.
wa_fcat-ref_field = 'STLAL'.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STKTX'.
wa_fcat-ref_table = 'STKO'.
wa_fcat-ref_field = 'STKTX'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'DATUV'.
wa_fcat-ref_table = 'STKO'.
wa_fcat-ref_field = 'DATUV'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'BMENG'.
wa_fcat-ref_table = 'STKO'.
wa_fcat-ref_field = 'BMENG'.
CLEAR wa_fcat.
wa_fcat-fieldname = 'STLST'.
wa_fcat-ref_table = 'STKO'.
wa_fcat-ref_field = 'STLST'.
CLEAR wa_fcat.
wa_fcat-fieldname = 'IDNRK'.
wa_fcat-ref_table = 'STPO'.
wa_fcat-ref_field = 'IDNRK'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'POSTP'.
wa_fcat-ref_table = 'STPO'.
wa_fcat-ref_field = 'POSTP'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'POSNR'.
wa_fcat-ref_table = 'STPO'.
wa_fcat-ref_field = 'POSNR'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-ref_table = 'STPO'.
wa_fcat-ref_field = 'MENGE'.
APPEND wa_fcat TO it_fcat.
CASE ok_code.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.