Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Report ZPP_MASS_LOAD_BOM
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT zpp_bom_one_line_from_table.
- DATA:
- BEGIN OF s_bom,
- werks(004) TYPE c, "zakład
- prod(018) TYPE c, "produkt
- qty_prd(013) TYPE c, "ilość
- uom_prd(003) TYPE c, "jednostka miary
- comp(018) TYPE c, "komponent
- qty_comp(013) TYPE c, "ilość
- uom_comp(003) TYPE c, "jednostka miary
- END OF s_bom.
- DATA: BEGIN OF lt_bom OCCURS 0.
- INCLUDE STRUCTURE s_bom.
- DATA: END OF lt_bom.
- DATA: lv_file TYPE string.
- DATA: ls_return TYPE bapiret2.
- DATA: lv_qty LIKE bapi1080_bom_c-base_qty,
- lv_item TYPE i,
- lv_item_c(4) TYPE c,
- lv_mat_missing(1) TYPE c,
- lv_matnr TYPE matnr,
- lv_matnr_found TYPE matnr,
- lv_create(1) TYPE c,
- lv_lines TYPE i,
- lv_tabix TYPE sy-tabix,
- lv_last_step TYPE i,
- lv_error(1) TYPE c.
- DATA: ls_log TYPE bal_s_log,
- lv_loghandler TYPE balloghndl,
- ls_message TYPE bal_s_msg,
- ls_mhandler TYPE balmsghndl,
- lv_mlogged TYPE boolean,
- lv_mdisplayed TYPE boolean,
- lt_loghandler TYPE bal_t_logh.
- * Data Declaration
- DATA:
- lt_bomgroup LIKE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE,
- lt_variants LIKE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,
- lt_items LIKE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,
- lt_matrel LIKE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,
- lt_itemas LIKE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE,
- lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
- DATA: lt_zpp_master_data TYPE TABLE OF zpp_master_data,
- lt_zpp_master_data_tmp TYPE TABLE OF zpp_master_data,
- ls_zpp_master_data TYPE zpp_master_data,
- ls_zpp_check TYPE zpp_master_data.
- DATA: lt_mvke TYPE TABLE OF mvke,
- lt_mbew TYPE TABLE OF mbew,
- lt_marc TYPE TABLE OF marc,
- lt_mard TYPE TABLE OF mard,
- lt_makt TYPE TABLE OF makt,
- lt_marm TYPE TABLE OF marm,
- lt_mean TYPE TABLE OF mean,
- lt_mlan TYPE TABLE OF mlan.
- DATA: ls_mvke TYPE mvke,
- ls_mbew TYPE mbew,
- ls_marc TYPE marc,
- ls_mard TYPE mard,
- ls_makt TYPE makt,
- ls_marm TYPE marm,
- ls_mean TYPE mean,
- ls_mlan TYPE mlan.
- DATA: lv_meins TYPE meins.
- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
- PARAMETERS:p_obj_id LIKE lt_bomgroup-object_id DEFAULT 'LOAD002',
- p_text LIKE lt_bomgroup-bom_text DEFAULT 'Załadunek BOM próbniki',
- p_gr_id LIKE lt_bomgroup-bom_group_identification DEFAULT 'BOM_GR_002',
- p_usage LIKE lt_bomgroup-bom_usage,
- p_labor LIKE lt_variants-lab_design.
- SELECTION-SCREEN END OF BLOCK b1 .
- START-OF-SELECTION.
- SELECT * FROM zpp_master_data INTO CORRESPONDING FIELDS OF TABLE lt_zpp_master_data.
- lt_zpp_master_data_tmp[] = lt_zpp_master_data[].
- LOOP AT lt_zpp_master_data INTO ls_zpp_master_data WHERE zz_werks = 'SKXX'.
- REFRESH lt_marc.
- CALL FUNCTION 'CRS_MATERIAL_READ_ALL'
- EXPORTING
- iv_matnr = ls_zpp_master_data-zz_matnr_master
- TABLES
- et_mvke = lt_mvke
- et_mbew = lt_mbew
- et_marc = lt_marc
- et_mard = lt_mard
- et_makt = lt_makt
- et_marm = lt_marm
- et_mean = lt_mean
- et_mlan = lt_mlan.
- DELETE lt_marc WHERE werks = 'CDXX'.
- DELETE lt_marc WHERE werks = 'SKXX'.
- IF p_usage = '5'.
- DELETE lt_marc WHERE werks = 'M100'.
- ENDIF.
- LOOP AT lt_marc INTO ls_marc.
- READ TABLE lt_zpp_master_data_tmp INTO ls_zpp_check
- WITH KEY zz_matnr_master = ls_zpp_master_data-zz_matnr_master zz_werks = ls_marc-werks.
- IF sy-subrc = 0 AND ls_zpp_check-zz_bom = 'X'.
- ELSE.
- lt_bom-werks = ls_marc-werks.
- lt_bom-prod = ls_zpp_master_data-zz_matnr_master.
- lt_bom-qty_prd = '1'.
- SELECT SINGLE meins INTO lv_meins FROM mara
- WHERE matnr = ls_zpp_master_data-zz_matnr_master.
- lt_bom-uom_prd = lv_meins.
- CLEAR lv_meins.
- lt_bom-comp = ls_zpp_master_data-zz_matnr_slave.
- lt_bom-qty_comp = '1'.
- SELECT SINGLE meins INTO lv_meins FROM mara
- WHERE matnr = ls_zpp_master_data-zz_matnr_slave.
- lt_bom-uom_comp = lv_meins.
- CLEAR lv_meins.
- APPEND lt_bom.
- ENDIF.
- ENDLOOP.
- * ENDLOOP.
- DESCRIBE TABLE lt_bom LINES lv_lines.
- LOOP AT lt_bom.
- lv_tabix = sy-tabix.
- lv_last_step = 1.
- CLEAR lv_mat_missing.
- * szukaj materiału!!!
- CLEAR lv_matnr.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- input = lt_bom-prod
- IMPORTING
- output = lv_matnr.
- SELECT SINGLE matnr INTO lv_matnr_found FROM mara
- WHERE matnr = lv_matnr.
- IF sy-subrc = 0.
- lv_matnr = lv_matnr_found.
- ELSE.
- SELECT SINGLE matnr INTO lv_matnr_found FROM mara
- WHERE bismt = lt_bom-prod.
- IF sy-subrc = 0.
- lv_matnr = lv_matnr_found.
- ELSE.
- lv_mat_missing = 'X'.
- ENDIF.
- ENDIF.
- lv_item = 0.
- * Fill the data
- * Material BoM Group Header Data
- CLEAR lt_bomgroup.
- lt_bomgroup-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
- lt_bomgroup-object_type = 'BGR'.
- lt_bomgroup-object_id = p_obj_id. "'SIMPLE1'.
- lt_bomgroup-bom_usage = p_usage. "'1'.
- lt_bomgroup-ltxt_lang = sy-langu.
- lt_bomgroup-technical_type = ' '.
- lt_bomgroup-bom_text = p_text. "'Simple BoM - FM'.
- lt_bomgroup-created_in_plant = lt_bom-werks.
- APPEND lt_bomgroup.
- * Header Details of the different variants
- CLEAR lt_variants.
- lt_variants-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
- lt_variants-object_type = 'BOM'.
- lt_variants-object_id = p_obj_id. "'SIMPLE1'.
- lt_variants-alternative_bom = '01'.
- lt_variants-bom_status = '01'.
- lt_variants-lab_design = p_labor.
- lv_qty = lt_bom-qty_prd.
- CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
- EXPORTING
- input = lt_bom-uom_prd
- language = sy-langu
- IMPORTING
- output = lt_variants-base_unit
- EXCEPTIONS
- unit_not_found = 1
- OTHERS = 2.
- lt_variants-base_qty = lv_qty. "'1.000'.
- lt_variants-valid_from_date = sy-datum.
- lt_variants-function = 'NEW'.
- APPEND lt_variants.
- * Details of the materials of the different variants
- CLEAR lt_matrel.
- lt_matrel-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
- lt_matrel-material = lv_matnr. "'000000000100000457'.
- lt_matrel-bom_usage = p_usage. "'1'.
- lt_matrel-alternative_bom = '01'.
- lt_matrel-plant = lt_bom-werks.
- APPEND lt_matrel.
- * Linking items to the corresponding variants
- CLEAR lt_itemas.
- lt_itemas-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
- lt_itemas-sub_object_type = 'ITM'.
- lt_itemas-sub_object_id = p_obj_id. "'SIMPLE1'.
- lt_itemas-super_object_type = 'BOM'.
- lt_itemas-super_object_id = p_obj_id. "'SIMPLE1'.
- lt_itemas-valid_from_date = sy-datum.
- lt_itemas-function = 'NEW'.
- APPEND lt_itemas.
- * szukaj komponentu!!!
- CLEAR lv_matnr.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- input = lt_bom-comp
- IMPORTING
- output = lv_matnr.
- SELECT SINGLE matnr INTO lv_matnr_found FROM mara
- WHERE matnr = lv_matnr.
- IF sy-subrc = 0.
- lv_matnr = lv_matnr_found.
- ELSE.
- SELECT SINGLE matnr INTO lv_matnr_found FROM mara
- WHERE bismt = lt_bom-comp.
- IF sy-subrc = 0.
- lv_matnr = lv_matnr_found.
- ELSE.
- lv_mat_missing = 'X'.
- ENDIF.
- ENDIF.
- lv_item = lv_item + 10.
- lv_item_c = lv_item.
- * Details of the items of the variants
- CLEAR lt_items.
- lt_items-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
- lt_items-object_type = 'ITM'.
- lt_items-object_id = p_obj_id. "'SIMPLE1'.
- lt_items-item_no = lv_item_c. "'0010'.
- lt_items-item_cat = 'L'.
- lt_items-component = lv_matnr. "'000000000100000445'.
- lv_qty = lt_bom-qty_comp.
- lt_items-comp_qty = lv_qty. "'2'.
- * lt_items-comp_unit = 'PAC'.
- * lt_bom-uom = 'PAC'.
- CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
- EXPORTING
- input = lt_bom-uom_comp
- language = sy-langu
- IMPORTING
- output = lt_items-comp_unit
- EXCEPTIONS
- unit_not_found = 1
- OTHERS = 2.
- lt_items-valid_from_date = sy-datum.
- APPEND lt_items.
- lv_last_step = 2.
- **CLEAR it_items.
- **it_items-bom_group_identification = 'BAPI_SMP_COL1'.
- **it_items-object_type = 'ITM'.
- **it_items-object_id = 'SIMPLE1'.
- **it_items-item_no = '0020'.
- **it_items-item_cat = 'L'.
- **it_items-component = 'COMPON2'.
- **it_items-comp_qty = '3'.
- **it_items-valid_from_date = sy-datum.
- **APPEND it_items.
- * Create variants
- CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
- EXPORTING
- all_error = 'X'
- TABLES
- bomgroup = lt_bomgroup
- variants = lt_variants
- items = lt_items
- materialrelations = lt_matrel
- itemassignments = lt_itemas
- return = lt_return.
- LOOP AT lt_return WHERE type = 'A' OR type = 'E'.
- WRITE:/ 'błąd ', lt_return-type, lt_return-id, lt_return-number,
- lt_return-message.
- lv_error = 'X'.
- ENDLOOP.
- IF lv_error <> 'X'.
- CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
- ls_zpp_master_data-zz_matnr_master = lt_bom-prod.
- ls_zpp_master_data-zz_werks = lt_bom-werks.
- ls_zpp_master_data-zz_matnr_slave = lt_bom-comp.
- ls_zpp_master_data-zz_bom = 'X'.
- APPEND ls_zpp_master_data TO lt_zpp_master_data.
- MODIFY zpp_master_data FROM TABLE lt_zpp_master_data.
- COMMIT WORK.
- LOOP AT lt_return.
- WRITE:/ lt_return-type, lt_return-id, lt_return-number,
- lt_return-message.
- ENDLOOP.
- ELSE.
- CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
- ENDIF.
- REFRESH lt_bomgroup.
- REFRESH lt_variants.
- REFRESH lt_items.
- REFRESH lt_matrel.
- REFRESH lt_itemas.
- REFRESH lt_return.
- CLEAR lv_error.
- ENDLOOP.
- CLEAR lt_bom.
- REFRESH lt_bom.
- ENDLOOP.
- **** This code will create a material BoM for the material
- **** MAINMATERIAL with the components COMPON1 and COMPON2.
- ***
- **** Data Declaration
- ***DATA:
- ***it_bomgroup LIKE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE,
- ***it_variants LIKE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,
- ***it_items LIKE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,
- ***it_matrel LIKE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,
- ***it_itemas LIKE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE,
- ***it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
- ***
- **** Fill the data
- **** Material BoM Group Header Data
- ***CLEAR it_bomgroup.
- ***it_bomgroup-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_bomgroup-object_type = 'BGR'.
- ***it_bomgroup-object_id = 'SIMPLE1'.
- ***it_bomgroup-bom_usage = '5'. " YOU COULD CHANGE THE BOM USAGE TO YOUR
- ***NEEDS
- ***it_bomgroup-ltxt_lang = sy-langu.
- ***it_bomgroup-technical_type = ' '.
- ***it_bomgroup-bom_text = 'Simple BoM - FM'.
- ***APPEND it_bomgroup.
- ***
- **** Header Details of the different variants
- ***CLEAR it_variants.
- ***it_variants-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_variants-object_type = 'BOM'.
- ***it_variants-object_id = 'SIMPLE1'.
- ***it_variants-alternative_bom = '01'.
- ***it_variants-bom_status = '01'.
- ***it_variants-base_qty = '1.000'.
- ***it_variants-valid_from_date = sy-datum.
- ***it_variants-function = 'NEW'.
- ***APPEND it_variants.
- ***
- **** Details of the items of the variants
- ***CLEAR it_items.
- ***it_items-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_items-object_type = 'ITM'.
- ***it_items-object_id = 'SIMPLE1'.
- ***it_items-item_no = '0010'.
- ***it_items-item_cat = 'L'.
- ***it_items-component = 'COMPON1'.
- ***it_items-comp_qty = '2'.
- ***it_items-valid_from_date = sy-datum.
- ***APPEND it_items.
- ***
- ***CLEAR it_items.
- ***it_items-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_items-object_type = 'ITM'.
- ***it_items-object_id = 'SIMPLE1'.
- ***it_items-item_no = '0020'.
- ***it_items-item_cat = 'L'.
- ***it_items-component = 'COMPON2'.
- ***it_items-comp_qty = '3'.
- ***it_items-valid_from_date = sy-datum.
- ***APPEND it_items.
- ***
- ***
- **** Details of the materials of the different variants
- ***CLEAR it_matrel.
- ***it_matrel-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_matrel-material = 'MAINMATERIAL'.
- ***it_matrel-bom_usage = '5'.
- ***it_matrel-alternative_bom = '01'.
- ***APPEND it_matrel.
- ***
- **** Linking items to the corresponding variants
- ***CLEAR it_itemas.
- ***it_itemas-bom_group_identification = 'BAPI_SMP_COL1'.
- ***it_itemas-sub_object_type = 'ITM'.
- ***it_itemas-sub_object_id = 'SIMPLE1'.
- ***it_itemas-super_object_type = 'BOM'.
- ***it_itemas-super_object_id = 'SIMPLE1'.
- ***it_itemas-valid_from_date = sy-datum.
- ***it_itemas-function = 'NEW'.
- ***APPEND it_itemas.
- ***
- **** Create variants
- ***CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
- ***EXPORTING
- ***all_error = 'X'
- ***TABLES
- ***bomgroup = it_bomgroup
- ***variants = it_variants
- ***items = it_items
- ***materialrelations = it_matrel
- ***itemassignments = it_itemas
- ***return = it_return.
- ***
- ***CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
- ***
- ***LOOP AT it_return.
- ***WRITE:/ it_return-type, it_return-id, it_return-number,
- ***it_return-message.
- ***ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement