Như các bạn có thể thấy trong cấu trúc BOM trong hình, BOM sẽ cần có các thông tin về nhà máy sản xuất, và danh sách các nguyên vật liệu thành phần và đặc biệt BOM cũng là một mã hàng hoá trong SAP.
SAP cung cấp cho chúng ta các Function Module để chúng ta có thể thực hiện tạo BOM thông qua các dữ liệu được cung cấp bằng programming. FM mình sẽ sử dụng trong bài viết là FM CSAP_MAT_BOM_CREATE.
Để thực hiện việc tạo ra một BOM từ chương trình, trước tiên cần phải sửa soạn các thông tin dư liệu cần thiết cho một BOM như: mã hàng hoá, mã nhà máy, và danh sách các thành phần bên trong BOM. Sau khi thu thập đủ các thông tin, chúng ta tiến hành lập trình cho chức năng tạo BOM như sau:
+ Khai báo các biến:
Code: Select all
DATA: lt_stpo TYPE TABLE OF stpo_api01,
lt_depdat TYPE TABLE OF csdep_dat,
lt_depsrce TYPE TABLE OF csdep_sorc.
DATA: lt_lines TYPE TABLE OF dep_line.
DATA: ls_stko TYPE stko_api01.
DATA: lv_itemno TYPE stpo_api01-item_no.
Code: Select all
ls_stko-base_quan = 1.
ls_stko-bom_text = 'Example BOM'.
Code: Select all
UNPACK '10' TO lv_itemno.
APPEND INITIAL LINE TO lt_stpo ASSIGNING FIELD-SYMBOL(<fs_stpo>).
<fs_stpo>-item_categ = 'L'.
<fs_stpo>-component = 'BRCDRDER'. "Material Number
<fs_stpo>-comp_qty = 10. "Quantity
<fs_stpo>-comp_unit = 'ST'. 'Unit'
<fs_stpo>-item_no = lv_itemno.
Code: Select all
DATA: lv_cond TYPE string VALUE 'COLOR = ''RED'' OR COLOR = ''BLUE'''.
<fs_stpo>-identifier = 'P' && lv_count.
APPEND INITIAL LINE TO lt_depdat ASSIGNING FIELD-SYMBOL(<fs_depdat>).
<fs_depdat>-identifier = <fs_stpo>-identifier.
<fs_depdat>-object_id = '2'.
<fs_depdat>-status = '1'.
<fs_depdat>-dep_type = '5'.
<fs_depdat>-dep_extern = 'B1'.
CALL FUNCTION 'RKD_WORD_WRAP'
EXPORTING
textline = lv_cond
outputlen = 72
TABLES
out_lines = lt_lines.
DATA: lv_count TYPE i VALUE 1.
LOOP AT lt_lines INTO DATA(lv_part).
APPEND INITIAL LINE TO lt_depsrce ASSIGNING FIELD-SYMBOL(<fs_source>).
MOVE-CORRESPONDING <fs_depdat> TO <fs_source>.
MOVE-CORRESPONDING ls_cond TO <fs_source>.
ENDLOOP.
Code: Select all
CALL FUNCTION 'CSAP_MAT_BOM_CREATE'
EXPORTING
material = iv_matnr
plant = iv_werks
bom_usage = '1'
i_stko = ls_stko
TABLES
t_stpo = lt_stpo
t_dep_data = lt_depdat
t_dep_source = lt_depsrce
EXCEPTIONS
error = 1
OTHERS = 2.