BAPI_MATERIAL_SAVEDATA - ooxxvv/MySAPnotes GitHub Wiki
- 新增或修改 Material Master 。
- 當 Material 不存在時新增,存在時將資料覆蓋 。
- 可參考系統中的文件。
- Classification 需用 BAPI_OBJCL_CHANGE 。
{{{#!abap DATA: lt_headdata LIKE bapimathead, lt_clientdata LIKE bapi_mara, lt_clientdatax LIKE bapi_marax, lt_materialdescription LIKE bapi_makt OCCURS 0 WITH HEADER LINE, lt_materiallongtext LIKE bapi_mltx OCCURS 0 WITH HEADER LINE. FIELD-SYMBOLS <text_line> TYPE ANY. DATA: ls_return LIKE bapiret2, l_msg LIKE zpmara-msg, l_text_line(17) TYPE c.
CLEAR p_err. *------------Insert material master lt_headdata-material =lw_zpmara-matnr. "物料號碼 lt_headdata-ind_sector ='M'. "產業領域 lt_headdata-matl_type =lw_zpmara-mtart. "物料類型 lt_headdata-basic_view ='X'. "基本資料檢視
- lt_headdata-sales_view =space. "銷售檢視
- lt_headdata-purchase_view =space. "採購檢視
- lt_headdata-mrp_view =space. "物料需求計畫 (MRP) 檢視
- lt_headdata-forecast_view =space. "預測檢視
- lt_headdata-work_sched_view=space. "工作排程檢視
- lt_headdata-prt_view =space. "生產資源 / 工具 (PRT) 檢視
- lt_headdata-storage_view =space. "儲存檢視
- lt_headdata-warehouse_view=space. "倉庫管理檢視
- lt_headdata-quality_view =space. "品質管理檢視
- lt_headdata-account_view =space. "會計檢視
- lt_headdata-cost_view =space . "成本計算檢視
基本資料******** *填入所需的資料 lt_clientdata-matl_group=lw_zpmara-matkl. *如果此資料要修改,則也要加上flag,否則不會有動作 lt_clientdatax-matl_group='X'. lt_clientdata-old_mat_no=lw_zpmara-bismt. lt_clientdatax-old_mat_no='X'. lt_clientdata-base_uom=lw_zpmara-meins. lt_clientdatax-base_uom='X'. lt_clientdata-pur_status=lw_zpmara-mstae. lt_clientdatax-pur_status='X'. lt_clientdata-division=lw_zpmara-spart. lt_clientdatax-division='X'. lt_clientdata-extmatlgrp=lw_zpmara-extwg. lt_clientdatax-extmatlgrp='X'.
基本資料內文***** CLEAR lt_materialdescription[]. lt_materialdescription-langu='E'. lt_materialdescription-matl_desc=lw_zpmara-maktx. APPEND lt_materialdescription. lt_materialdescription-langu='M'. APPEND lt_materialdescription.
寫EN語言內文********** CLEAR lt_materiallongtext[]. l_text_line='lw_zpmara-bdtxt00'. lt_materiallongtext-applobject='MATERIAL'. lt_materiallongtext-text_name=lw_zpmara-matnr. lt_materiallongtext-text_id='GRUN'. lt_materiallongtext-langu='E'. 換行符號 lt_materiallongtext-format_col=''.
DO 10 TIMES. l_text_line+15=sy-index. ASSIGN (l_text_line) TO <text_line>. IF sy-subrc EQ 0. lt_materiallongtext-text_line=<text_line>. APPEND lt_materiallongtext. ENDIF. ENDDO.
寫ZF語言內文*************** l_text_line='lw_zpmara-bdtxt00'. lt_materiallongtext-langu='M'. DO 10 TIMES. l_text_line+15=sy-index. ASSIGN (l_text_line) TO <text_line>. IF sy-subrc EQ 0. lt_materiallongtext-text_line=<text_line>. APPEND lt_materiallongtext. ENDIF. ENDDO.
CLEAR ls_return.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING headdata =lt_headdata clientdata =lt_clientdata clientdatax =lt_clientdatax IMPORTING return =ls_return TABLES materialdescription=lt_materialdescription materiallongtext =lt_materiallongtext.
****************check error & save message & commit & rollback IF ls_return-type EQ 'S' . lw_zpmara-msg=space. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. WAIT UP TO 5 SECONDS. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CLEAR l_msg. CONCATENATE '(' ls_return-type ')' ls_return-message INTO l_msg. CONDENSE l_msg. ENDIF. }}}