Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Report ZPP_MASS_LOAD_BOM
- *&---------------------------------------------------------------------*
- *&
- *&---------------------------------------------------------------------*
- REPORT zpp_mass_load_bom.
- DATA:
- BEGIN OF s_bom,
- material(018) TYPE c, "stary lub nowy numer materiału
- werks(004) TYPE c, "zakład
- version(002) TYPE c, "wersja
- usage(001) TYPE c, "wykorzystanie
- qty(013) TYPE c, "ilość
- uom(003) TYPE c, "jednostka miary
- component(018) TYPE c, "stary lub nowy numer komponentu
- qty_comp(013) TYPE c, "ilość komponentu
- uom_comp(003) TYPE c, "jednostkam miary komponentu
- typ(001) TYPE c, "typ pozycji BOM
- 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.
- SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
- PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY,
- p_obj_id LIKE lt_bomgroup-object_id DEFAULT 'LOAD001',
- p_text LIKE lt_bomgroup-bom_text DEFAULT 'Załadunek BOM pasy',
- p_gr_id LIKE lt_bomgroup-bom_group_identification DEFAULT 'BOM_GR_001',
- p_labor LIKE lt_variants-lab_design OBLIGATORY.
- SELECTION-SCREEN END OF BLOCK b1 .
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
- CALL FUNCTION 'F4_FILENAME'
- EXPORTING
- program_name = syst-cprog
- dynpro_number = syst-dynnr
- field_name = 'P_FILE'
- IMPORTING
- file_name = p_file.
- START-OF-SELECTION.
- lv_file = p_file.
- CALL FUNCTION 'GUI_UPLOAD'
- EXPORTING
- filename = lv_file
- filetype = 'ASC'
- has_field_separator = 'X'
- header_length = 0
- read_by_line = 'X'
- dat_mode = ' '
- *** IMPORTING
- *** filelength =
- *** header =
- TABLES
- data_tab = lt_bom
- EXCEPTIONS
- file_open_error = 1
- file_read_error = 2
- no_batch = 3
- gui_refuse_filetransfer = 4
- invalid_type = 5
- no_authority = 6
- unknown_error = 7
- bad_data_format = 8
- header_not_allowed = 9
- separator_not_allowed = 10
- header_too_long = 11
- unknown_dp_error = 12
- access_denied = 13
- dp_out_of_memory = 14
- disk_full = 15
- dp_timeout = 16
- OTHERS = 17.
- IF sy-subrc <> 0.
- MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
- WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
- ENDIF.
- DESCRIBE TABLE lt_bom LINES lv_lines.
- LOOP AT lt_bom.
- lv_tabix = sy-tabix.
- IF lt_bom-material IS NOT INITIAL.
- IF lv_last_step = 2.
- * 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'.
- LOOP AT lt_return.
- WRITE:/ lt_return-type, lt_return-id, lt_return-number,
- lt_return-message.
- ENDLOOP.
- ENDIF.
- CLEAR lv_error.
- REFRESH lt_bomgroup.
- REFRESH lt_variants.
- REFRESH lt_items.
- REFRESH lt_matrel.
- REFRESH lt_itemas.
- REFRESH lt_return.
- ENDIF.
- lv_last_step = 1.
- CLEAR lv_mat_missing.
- * szukaj materiału!!!
- CLEAR lv_matnr.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- input = lt_bom-material
- 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-material.
- IF sy-subrc = 0.
- lv_matnr = lv_matnr_found.
- ELSE.
- lv_mat_missing = 'X'.
- ENDIF.
- ENDIF.
- IF lv_mat_missing IS INITIAL.
- 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 = lt_bom-usage. "'5'.
- 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 = lt_bom-version. "'10'.
- lt_variants-bom_status = '01'.
- lt_variants-lab_design = p_labor.
- lv_qty = lt_bom-qty.
- CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
- EXPORTING
- input = lt_bom-uom
- 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 = lt_bom-usage. "'5'.
- lt_matrel-alternative_bom = lt_bom-version. "'10'.
- 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.
- ENDIF. "material is not missing
- ELSE.
- IF lt_bom-component IS NOT INITIAL AND lv_mat_missing IS INITIAL.
- * szukaj komponentu!!!
- CLEAR lv_matnr.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- input = lt_bom-component
- 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-component.
- 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 = lt_bom-typ. "'L'.
- lt_items-component = lv_matnr. "'000000000100000445'.
- lv_qty = lt_bom-qty_comp.
- lt_items-comp_qty = lv_qty. "'2'.
- 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.
- ENDIF.
- ENDIF.
- IF lv_tabix = lv_lines.
- * 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'.
- LOOP AT lt_return.
- WRITE:/ lt_return-type, lt_return-id, lt_return-number,
- lt_return-message.
- ENDLOOP.
- ENDIF.
- CLEAR lv_error.
- REFRESH lt_bomgroup.
- REFRESH lt_variants.
- REFRESH lt_items.
- REFRESH lt_matrel.
- REFRESH lt_itemas.
- REFRESH lt_return.
- ENDIF.
- 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