Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 14.31 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report ZPP_MASS_LOAD_BOM
  3. *&---------------------------------------------------------------------*
  4. *&
  5. *&---------------------------------------------------------------------*
  6. REPORT zpp_mass_load_bom.
  7.  
  8. DATA:
  9.   BEGIN OF s_bom,
  10.     material(018)  TYPE c, "stary lub nowy numer materiału
  11.     werks(004)     TYPE c, "zakład
  12.     version(002)   TYPE c, "wersja
  13.     usage(001)     TYPE c, "wykorzystanie
  14.     qty(013)       TYPE c, "ilość
  15.     uom(003)       TYPE c, "jednostka miary
  16.     component(018) TYPE c, "stary lub nowy numer komponentu
  17.     qty_comp(013)  TYPE c, "ilość komponentu
  18.     uom_comp(003)  TYPE c, "jednostkam miary komponentu
  19.     typ(001)       TYPE c, "typ pozycji BOM
  20.   END OF s_bom.
  21.  
  22. DATA: BEGIN OF lt_bom OCCURS 0.
  23.     INCLUDE STRUCTURE s_bom.
  24. DATA: END OF lt_bom.
  25.  
  26. DATA: lv_file TYPE string.
  27.  
  28. DATA: ls_return TYPE bapiret2.
  29.  
  30. DATA: lv_qty            LIKE bapi1080_bom_c-base_qty,
  31.       lv_item           TYPE i,
  32.       lv_item_c(4)      TYPE c,
  33.       lv_mat_missing(1) TYPE c,
  34.       lv_matnr          TYPE matnr,
  35.       lv_matnr_found    TYPE matnr,
  36.       lv_create(1)      TYPE c,
  37.       lv_lines          TYPE i,
  38.       lv_tabix          TYPE sy-tabix,
  39.       lv_last_step      TYPE i,
  40.       lv_error(1)       TYPE c.
  41.  
  42.  
  43. DATA: ls_log        TYPE bal_s_log,
  44.       lv_loghandler TYPE balloghndl,
  45.       ls_message    TYPE bal_s_msg,
  46.       ls_mhandler   TYPE balmsghndl,
  47.       lv_mlogged    TYPE boolean,
  48.       lv_mdisplayed TYPE boolean,
  49.       lt_loghandler TYPE bal_t_logh.
  50.  
  51. * Data Declaration
  52. DATA:
  53.   lt_bomgroup LIKE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE,
  54.   lt_variants LIKE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,
  55.   lt_items    LIKE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,
  56.   lt_matrel   LIKE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,
  57.   lt_itemas   LIKE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE,
  58.   lt_return   LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
  59.  
  60. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
  61. PARAMETERS:p_file   LIKE rlgrap-filename OBLIGATORY,
  62.            p_obj_id LIKE lt_bomgroup-object_id DEFAULT 'LOAD001',
  63.            p_text   LIKE lt_bomgroup-bom_text DEFAULT 'Załadunek BOM pasy',
  64.            p_gr_id  LIKE lt_bomgroup-bom_group_identification  DEFAULT 'BOM_GR_001',
  65.            p_labor  LIKE lt_variants-lab_design OBLIGATORY.
  66. SELECTION-SCREEN END OF BLOCK b1 .
  67.  
  68. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  69.  
  70.   CALL FUNCTION 'F4_FILENAME'
  71.     EXPORTING
  72.       program_name  = syst-cprog
  73.       dynpro_number = syst-dynnr
  74.       field_name    = 'P_FILE'
  75.     IMPORTING
  76.       file_name     = p_file.
  77.  
  78. START-OF-SELECTION.
  79.  
  80.   lv_file = p_file.
  81.  
  82.   CALL FUNCTION 'GUI_UPLOAD'
  83.     EXPORTING
  84.       filename                = lv_file
  85.       filetype                = 'ASC'
  86.       has_field_separator     = 'X'
  87.       header_length           = 0
  88.       read_by_line            = 'X'
  89.       dat_mode                = ' '
  90. ***    IMPORTING
  91. ***      filelength              =
  92. ***      header                  =
  93.     TABLES
  94.       data_tab                = lt_bom
  95.     EXCEPTIONS
  96.       file_open_error         = 1
  97.       file_read_error         = 2
  98.       no_batch                = 3
  99.       gui_refuse_filetransfer = 4
  100.       invalid_type            = 5
  101.       no_authority            = 6
  102.       unknown_error           = 7
  103.       bad_data_format         = 8
  104.       header_not_allowed      = 9
  105.       separator_not_allowed   = 10
  106.       header_too_long         = 11
  107.       unknown_dp_error        = 12
  108.       access_denied           = 13
  109.       dp_out_of_memory        = 14
  110.       disk_full               = 15
  111.       dp_timeout              = 16
  112.       OTHERS                  = 17.
  113.  
  114.   IF sy-subrc <> 0.
  115.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  116.     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  117.   ENDIF.
  118.  
  119.  
  120.  
  121.   DESCRIBE TABLE lt_bom LINES lv_lines.
  122.  
  123.   LOOP AT lt_bom.
  124.  
  125.     lv_tabix = sy-tabix.
  126.  
  127.     IF lt_bom-material IS NOT INITIAL.
  128.  
  129.       IF lv_last_step = 2.
  130.  
  131. * Create variants
  132.         CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
  133.           EXPORTING
  134.             all_error         = 'X'
  135.           TABLES
  136.             bomgroup          = lt_bomgroup
  137.             variants          = lt_variants
  138.             items             = lt_items
  139.             materialrelations = lt_matrel
  140.             itemassignments   = lt_itemas
  141.             return            = lt_return.
  142.  
  143.         LOOP AT lt_return WHERE type = 'A' OR type = 'E'.
  144.           WRITE:/ 'błąd ', lt_return-type, lt_return-id, lt_return-number,
  145.             lt_return-message.
  146.           lv_error = 'X'.
  147.         ENDLOOP.
  148.  
  149.         IF lv_error <> 'X'.
  150.           CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  151.           LOOP AT lt_return.
  152.             WRITE:/ lt_return-type, lt_return-id, lt_return-number,
  153.             lt_return-message.
  154.           ENDLOOP.
  155.         ENDIF.
  156.  
  157.         CLEAR lv_error.
  158.  
  159.         REFRESH lt_bomgroup.
  160.         REFRESH lt_variants.
  161.         REFRESH lt_items.
  162.         REFRESH lt_matrel.
  163.         REFRESH lt_itemas.
  164.         REFRESH lt_return.
  165.  
  166.       ENDIF.
  167.  
  168.       lv_last_step = 1.
  169.  
  170.       CLEAR lv_mat_missing.
  171. * szukaj materiału!!!
  172.       CLEAR lv_matnr.
  173.  
  174.       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  175.         EXPORTING
  176.           input  = lt_bom-material
  177.         IMPORTING
  178.           output = lv_matnr.
  179.  
  180.       SELECT SINGLE matnr INTO lv_matnr_found FROM mara
  181.         WHERE matnr = lv_matnr.
  182.  
  183.       IF sy-subrc = 0.
  184.         lv_matnr = lv_matnr_found.
  185.       ELSE.
  186.  
  187.         SELECT SINGLE matnr INTO lv_matnr_found FROM mara
  188.           WHERE bismt = lt_bom-material.
  189.  
  190.         IF sy-subrc = 0.
  191.           lv_matnr = lv_matnr_found.
  192.         ELSE.
  193.           lv_mat_missing = 'X'.
  194.         ENDIF.
  195.       ENDIF.
  196.  
  197.       IF lv_mat_missing IS INITIAL.
  198.         lv_item = 0.
  199. * Fill the data
  200. * Material BoM Group Header Data
  201.         CLEAR lt_bomgroup.
  202.         lt_bomgroup-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
  203.         lt_bomgroup-object_type = 'BGR'.
  204.         lt_bomgroup-object_id = p_obj_id. "'SIMPLE1'.
  205.         lt_bomgroup-bom_usage = lt_bom-usage. "'5'.
  206.         lt_bomgroup-ltxt_lang = sy-langu.
  207.         lt_bomgroup-technical_type = ' '.
  208.         lt_bomgroup-bom_text = p_text. "'Simple BoM - FM'.
  209.         lt_bomgroup-created_in_plant = lt_bom-werks.
  210.         APPEND lt_bomgroup.
  211.  
  212. * Header Details of the different variants
  213.         CLEAR lt_variants.
  214.         lt_variants-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
  215.         lt_variants-object_type = 'BOM'.
  216.         lt_variants-object_id = p_obj_id. "'SIMPLE1'.
  217.         lt_variants-alternative_bom = lt_bom-version. "'10'.
  218.         lt_variants-bom_status = '01'.
  219.         lt_variants-lab_design = p_labor.
  220.  
  221.         lv_qty = lt_bom-qty.
  222.  
  223.         CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  224.           EXPORTING
  225.             input          = lt_bom-uom
  226.             language       = sy-langu
  227.           IMPORTING
  228.             output         = lt_variants-base_unit
  229.           EXCEPTIONS
  230.             unit_not_found = 1
  231.             OTHERS         = 2.
  232.  
  233.         lt_variants-base_qty = lv_qty. "'1.000'.
  234.         lt_variants-valid_from_date = sy-datum.
  235.         lt_variants-function = 'NEW'.
  236.         APPEND lt_variants.
  237.  
  238. * Details of the materials of the different variants
  239.         CLEAR lt_matrel.
  240.         lt_matrel-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
  241.         lt_matrel-material = lv_matnr. "'000000000100000457'.
  242.         lt_matrel-bom_usage = lt_bom-usage. "'5'.
  243.         lt_matrel-alternative_bom = lt_bom-version. "'10'.
  244.         lt_matrel-plant = lt_bom-werks.
  245.         APPEND lt_matrel.
  246.  
  247. * Linking items to the corresponding variants
  248.         CLEAR lt_itemas.
  249.         lt_itemas-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
  250.         lt_itemas-sub_object_type = 'ITM'.
  251.         lt_itemas-sub_object_id = p_obj_id. "'SIMPLE1'.
  252.         lt_itemas-super_object_type = 'BOM'.
  253.         lt_itemas-super_object_id = p_obj_id. "'SIMPLE1'.
  254.         lt_itemas-valid_from_date = sy-datum.
  255.         lt_itemas-function = 'NEW'.
  256.         APPEND lt_itemas.
  257.  
  258.       ENDIF. "material is not missing
  259.     ELSE.
  260.  
  261.       IF lt_bom-component IS NOT INITIAL AND lv_mat_missing IS INITIAL.
  262.  
  263. * szukaj komponentu!!!
  264.         CLEAR lv_matnr.
  265.         CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  266.           EXPORTING
  267.             input  = lt_bom-component
  268.           IMPORTING
  269.             output = lv_matnr.
  270.  
  271.         SELECT SINGLE matnr INTO lv_matnr_found FROM mara
  272.           WHERE matnr = lv_matnr.
  273.  
  274.         IF sy-subrc = 0.
  275.           lv_matnr = lv_matnr_found.
  276.         ELSE.
  277.  
  278.           SELECT SINGLE matnr INTO lv_matnr_found FROM mara
  279.             WHERE bismt = lt_bom-component.
  280.  
  281.           IF sy-subrc = 0.
  282.             lv_matnr = lv_matnr_found.
  283.           ELSE.
  284.             lv_mat_missing = 'X'.
  285.           ENDIF.
  286.         ENDIF.
  287.  
  288.         lv_item = lv_item + 10.
  289.         lv_item_c = lv_item.
  290. * Details of the items of the variants
  291.         CLEAR lt_items.
  292.         lt_items-bom_group_identification = p_gr_id. "'BAPI_SMP_COL1'.
  293.         lt_items-object_type = 'ITM'.
  294.         lt_items-object_id = p_obj_id. "'SIMPLE1'.
  295.         lt_items-item_no = lv_item_c. "'0010'.
  296.         lt_items-item_cat = lt_bom-typ. "'L'.
  297.         lt_items-component = lv_matnr. "'000000000100000445'.
  298.  
  299.         lv_qty = lt_bom-qty_comp.
  300.         lt_items-comp_qty = lv_qty. "'2'.
  301.  
  302.         CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
  303.           EXPORTING
  304.             input          = lt_bom-uom_comp
  305.             language       = sy-langu
  306.           IMPORTING
  307.             output         = lt_items-comp_unit
  308.           EXCEPTIONS
  309.             unit_not_found = 1
  310.             OTHERS         = 2.
  311.  
  312.         lt_items-valid_from_date = sy-datum.
  313.         APPEND lt_items.
  314.  
  315.         lv_last_step = 2.
  316. **CLEAR it_items.
  317. **it_items-bom_group_identification = 'BAPI_SMP_COL1'.
  318. **it_items-object_type = 'ITM'.
  319. **it_items-object_id = 'SIMPLE1'.
  320. **it_items-item_no = '0020'.
  321. **it_items-item_cat = 'L'.
  322. **it_items-component = 'COMPON2'.
  323. **it_items-comp_qty = '3'.
  324. **it_items-valid_from_date = sy-datum.
  325. **APPEND it_items.
  326.       ENDIF.
  327.     ENDIF.
  328.  
  329.     IF lv_tabix = lv_lines.
  330. * Create variants
  331.       CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
  332.         EXPORTING
  333.           all_error         = 'X'
  334.         TABLES
  335.           bomgroup          = lt_bomgroup
  336.           variants          = lt_variants
  337.           items             = lt_items
  338.           materialrelations = lt_matrel
  339.           itemassignments   = lt_itemas
  340.           return            = lt_return.
  341.  
  342.  
  343.       LOOP AT lt_return WHERE type = 'A' OR type = 'E'.
  344.         WRITE:/ 'błąd ', lt_return-type, lt_return-id, lt_return-number,
  345.           lt_return-message.
  346.         lv_error = 'X'.
  347.       ENDLOOP.
  348.  
  349.       IF lv_error <> 'X'.
  350.         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  351.         LOOP AT lt_return.
  352.           WRITE:/ lt_return-type, lt_return-id, lt_return-number,
  353.           lt_return-message.
  354.         ENDLOOP.
  355.       ENDIF.
  356.  
  357.       CLEAR lv_error.
  358.  
  359.       REFRESH lt_bomgroup.
  360.       REFRESH lt_variants.
  361.       REFRESH lt_items.
  362.       REFRESH lt_matrel.
  363.       REFRESH lt_itemas.
  364.       REFRESH lt_return.
  365.  
  366.     ENDIF.
  367.   ENDLOOP.
  368.  
  369. **** This code will create a material BoM for the material
  370. **** MAINMATERIAL with the components COMPON1 and COMPON2.
  371. ***
  372. **** Data Declaration
  373. ***DATA:
  374. ***it_bomgroup LIKE bapi1080_bgr_c OCCURS 0 WITH HEADER LINE,
  375. ***it_variants LIKE bapi1080_bom_c OCCURS 0 WITH HEADER LINE,
  376. ***it_items LIKE bapi1080_itm_c OCCURS 0 WITH HEADER LINE,
  377. ***it_matrel LIKE bapi1080_mbm_c OCCURS 0 WITH HEADER LINE,
  378. ***it_itemas LIKE bapi1080_rel_itm_bom_c OCCURS 0 WITH HEADER LINE,
  379. ***it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
  380. ***
  381. **** Fill the data
  382. **** Material BoM Group Header Data
  383. ***CLEAR it_bomgroup.
  384. ***it_bomgroup-bom_group_identification = 'BAPI_SMP_COL1'.
  385. ***it_bomgroup-object_type = 'BGR'.
  386. ***it_bomgroup-object_id = 'SIMPLE1'.
  387. ***it_bomgroup-bom_usage = '5'. " YOU COULD CHANGE THE BOM USAGE TO YOUR
  388. ***NEEDS
  389. ***it_bomgroup-ltxt_lang = sy-langu.
  390. ***it_bomgroup-technical_type = ' '.
  391. ***it_bomgroup-bom_text = 'Simple BoM - FM'.
  392. ***APPEND it_bomgroup.
  393. ***
  394. **** Header Details of the different variants
  395. ***CLEAR it_variants.
  396. ***it_variants-bom_group_identification = 'BAPI_SMP_COL1'.
  397. ***it_variants-object_type = 'BOM'.
  398. ***it_variants-object_id = 'SIMPLE1'.
  399. ***it_variants-alternative_bom = '01'.
  400. ***it_variants-bom_status = '01'.
  401. ***it_variants-base_qty = '1.000'.
  402. ***it_variants-valid_from_date = sy-datum.
  403. ***it_variants-function = 'NEW'.
  404. ***APPEND it_variants.
  405. ***
  406. **** Details of the items of the variants
  407. ***CLEAR it_items.
  408. ***it_items-bom_group_identification = 'BAPI_SMP_COL1'.
  409. ***it_items-object_type = 'ITM'.
  410. ***it_items-object_id = 'SIMPLE1'.
  411. ***it_items-item_no = '0010'.
  412. ***it_items-item_cat = 'L'.
  413. ***it_items-component = 'COMPON1'.
  414. ***it_items-comp_qty = '2'.
  415. ***it_items-valid_from_date = sy-datum.
  416. ***APPEND it_items.
  417. ***
  418. ***CLEAR it_items.
  419. ***it_items-bom_group_identification = 'BAPI_SMP_COL1'.
  420. ***it_items-object_type = 'ITM'.
  421. ***it_items-object_id = 'SIMPLE1'.
  422. ***it_items-item_no = '0020'.
  423. ***it_items-item_cat = 'L'.
  424. ***it_items-component = 'COMPON2'.
  425. ***it_items-comp_qty = '3'.
  426. ***it_items-valid_from_date = sy-datum.
  427. ***APPEND it_items.
  428. ***
  429. ***
  430. **** Details of the materials of the different variants
  431. ***CLEAR it_matrel.
  432. ***it_matrel-bom_group_identification = 'BAPI_SMP_COL1'.
  433. ***it_matrel-material = 'MAINMATERIAL'.
  434. ***it_matrel-bom_usage = '5'.
  435. ***it_matrel-alternative_bom = '01'.
  436. ***APPEND it_matrel.
  437. ***
  438. **** Linking items to the corresponding variants
  439. ***CLEAR it_itemas.
  440. ***it_itemas-bom_group_identification = 'BAPI_SMP_COL1'.
  441. ***it_itemas-sub_object_type = 'ITM'.
  442. ***it_itemas-sub_object_id = 'SIMPLE1'.
  443. ***it_itemas-super_object_type = 'BOM'.
  444. ***it_itemas-super_object_id = 'SIMPLE1'.
  445. ***it_itemas-valid_from_date = sy-datum.
  446. ***it_itemas-function = 'NEW'.
  447. ***APPEND it_itemas.
  448. ***
  449. **** Create variants
  450. ***CALL FUNCTION 'BAPI_MATERIAL_BOM_GROUP_CREATE'
  451. ***EXPORTING
  452. ***all_error = 'X'
  453. ***TABLES
  454. ***bomgroup = it_bomgroup
  455. ***variants = it_variants
  456. ***items = it_items
  457. ***materialrelations = it_matrel
  458. ***itemassignments = it_itemas
  459. ***return = it_return.
  460. ***
  461. ***CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  462. ***
  463. ***LOOP AT it_return.
  464. ***WRITE:/ it_return-type, it_return-id, it_return-number,
  465. ***it_return-message.
  466. ***ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement