CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
*&---------------------------------------------------------------------* *& Report ZMMPL001 *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZMMPL001. DATA: pr_unit TYPE meins,"基本計量單位 bapi_exe_result(1) TYPE c."bapi執行結果標識 *原材料 DATA: BEGIN OF wa_y_material, marc_plant TYPE werks_d, "工廠 mard_stge_loc TYPE lgort_d,"庫存地點 mvke_sales_org TYPE vkorg,"銷售組織 mvke_distr_chan TYPE vtweg,"分銷渠道 head_material TYPE matnr,"物料號 head_ind_sector TYPE mbrsh,"行業領域 head_matl_type TYPE mtart,"物料類型 t_makt_matl_desc TYPE maktx,"物料描述 mara_base_uom TYPE meins,"基本計量單位 mara_matl_group TYPE matkl,"物料組 mara_extmatlgrp TYPE extwg,"外部物料組 mara_item_cat TYPE mtpos_mara,"普通項目組類別 t_marm_gross_wt TYPE brgew,"毛重 t_marm_unit_of_wt TYPE gewei,"重量單位 mara_net_weight TYPE ntgew,"凈重 t_marm_volume TYPE volum,"標准箱 t_marm_volumeunit TYPE voleh,"體積單位 mvke_sales_unit TYPE vrkme,"銷售單位 t_mlan_taxclass1 TYPE taxkm, "稅分類1 t_mlan_taxclass2 TYPE taxkm, "稅分類2 mvke_matl_stats TYPE stgma,"物料統計組 mvke_acct_assgt TYPE ktgrm,"科目設置組 mvke_item_cat TYPE mtpos,"來自物料主文件的項目主類別 marc_availcheck TYPE mtvfp,"可用性檢查 mara_trans_grp TYPE tragr,"運輸組 marc_loadinggrp TYPE ladgr,"裝載組 marc_pur_group TYPE ekgrp,"采購組 marc_batch_mgmt TYPE xchpf,"批次管理標示 marc_auto_p_ord TYPE kautb,"自動采購訂單 marc_ind_post_to_insp_stock TYPE insmk_mat,"過賬到檢驗庫存 marc_quotausage TYPE usequ,"配額安排 marc_sourcelist TYPE kordb,"源清單 marc_mrp_group TYPE disgr,"MRP組 marc_mrp_type TYPE dismm,""MRP類型 marc_mrp_ctrler TYPE dispo,"MRP控制者 marc_lotsizekey TYPE disls,"批量 marc_minlotsize TYPE bstmi,"最小批量 marc_maxlotsize TYPE bstma,"最大批量 marc_round_val TYPE bstrf,"舍入值 marc_proc_type TYPE beskz,"采購類型 marc_backflush TYPE rgekm,"反沖 marc_plnd_delry TYPE plifz,"計划交貨時間 marc_gr_pr_time TYPE webaz,"收貨處理時間 marc_safety_stk TYPE eisbe,"安全庫存 marc_sm_key TYPE fhori," 計划邊際碼 marc_plan_strgp TYPE strgp,"策略組 marc_alt_bom_id TYPE altsl,"選擇方法 stge_loc TYPE lgort_d,"庫存地點,占位,不用取出賦值,同上邊庫存地點 mbew_val_class TYPE bklas,"評估類 mbew_price_ctrl TYPE vprsv,"價格控制 mbew_price_unit TYPE peinh,"價格單位 mbew_moving_pr TYPE verpr_bapi,"移動平均價 mbew_std_price TYPE stprs_bapi,"標准價格 mbew_qty_struct TYPE ck_ekalrel,"用QS的成本估算 mbew_orig_mat TYPE hkmat,"物料來源 END OF wa_y_material. DATA: it_y_material LIKE TABLE OF wa_y_material. DATA: BEGIN OF wa_message, material TYPE matnr, description TYPE maktx, message(97) TYPE c, END OF wa_message. DATA: it_message LIKE TABLE OF wa_message. *輸入參數 DATA: headdata TYPE bapimathead, "表頭數據 clientdata TYPE bapi_mara, "基本數據 clientdatax TYPE bapi_marax, plantdata TYPE bapi_marc, "工廠級別數據 plantdatax TYPE bapi_marcx, forecastparameters TYPE bapi_mpop, "預測 forecastparametersx TYPE bapi_mpopx, planningdata TYPE bapi_mpgd, "計划 planningdatax TYPE bapi_mpgdx, storagelocationdata TYPE bapi_mard, "存儲位置 storagelocationdatax TYPE bapi_mardx, valuationdata TYPE bapi_mbew, "評估數據 valuationdatax TYPE bapi_mbewx, warehousenumberdata TYPE bapi_mlgn, "倉庫數據 warehousenumberdatax TYPE bapi_mlgnx, salesdata TYPE bapi_mvke, "銷售數據 salesdatax TYPE bapi_mvkex, storagetypedata TYPE bapi_mlgt, "存儲類型數據 storagetypedatax TYPE bapi_mlgtx. *Table參數 DATA: materialdescription TYPE TABLE OF bapi_makt WITH HEADER LINE,"描述 unitsofmeasure TYPE TABLE OF bapi_marm WITH HEADER LINE,"單位 unitsofmeasurex TYPE TABLE OF bapi_marmx WITH HEADER LINE, taxclassifications TYPE TABLE OF bapi_mlan WITH HEADER LINE."稅分類 *Return DATA return TYPE bapiret2. *以上都是准備的參數,it_y_material 存放的就是物料信息內表,具體數據怎么來的省略(一般就是上傳文本) *往往調用一個bapi的時候不知道哪里賦值,怎么賦值,賦什么值,下邊是參數賦值、調用示例 FORM create_y_matnr_data. DATA: total TYPE i, num type i. num = 0. DESCRIBE TABLE it_y_material LINES total. CLEAR it_message. LOOP AT it_y_material INTO wa_y_material. num = num + 1. CLEAR headdata. headdata-material = wa_y_material-head_material. headdata-matl_type = wa_y_material-head_matl_type. headdata-ind_sector = wa_y_material-head_ind_sector. headdata-basic_view = 'X'. headdata-sales_view = 'X'. headdata-purchase_view = 'X'. headdata-mrp_view = 'X'. * headdata-forecast_view = 'X'. headdata-warehouse_view = 'X'. headdata-account_view = 'X'. headdata-cost_view = 'X'. "基本數據 CLEAR clientdata. clientdata-matl_group = wa_y_material-mara_matl_group. PERFORM get_pr_unit USING wa_y_material-mara_base_uom CHANGING pr_unit. clientdata-base_uom = pr_unit. clientdata-extmatlgrp = wa_y_material-mara_extmatlgrp. clientdata-item_cat = wa_y_material-mara_item_cat. clientdata-net_weight = wa_y_material-mara_net_weight. clientdata-trans_grp = wa_y_material-mara_trans_grp. CLEAR clientdatax. clientdatax-matl_group = 'X'. clientdatax-base_uom = 'X'. clientdatax-extmatlgrp = 'X'. clientdatax-item_cat = 'X'. clientdatax-net_weight = 'X'. clientdatax-trans_grp = 'X'. "工廠級別數據 CLEAR plantdata. plantdata-plant = wa_y_material-marc_plant. plantdata-availcheck = wa_y_material-marc_availcheck. plantdata-loadinggrp = wa_y_material-marc_loadinggrp. plantdata-pur_group = wa_y_material-marc_pur_group. plantdata-batch_mgmt = wa_y_material-marc_batch_mgmt. plantdata-auto_p_ord = wa_y_material-marc_auto_p_ord. plantdata-ind_post_to_insp_stock = wa_y_material-marc_ind_post_to_insp_stock. plantdata-quotausage = wa_y_material-marc_quotausage. plantdata-sourcelist = wa_y_material-marc_sourcelist. plantdata-mrp_group = wa_y_material-marc_mrp_group. plantdata-mrp_type = wa_y_material-marc_mrp_type. plantdata-mrp_ctrler = wa_y_material-marc_mrp_ctrler. plantdata-lotsizekey = wa_y_material-marc_lotsizekey. plantdata-minlotsize = wa_y_material-marc_minlotsize. plantdata-maxlotsize = wa_y_material-marc_maxlotsize. plantdata-round_val = wa_y_material-marc_round_val. plantdata-proc_type = wa_y_material-marc_proc_type. plantdata-backflush = wa_y_material-marc_backflush. plantdata-plnd_delry = wa_y_material-marc_plnd_delry. plantdata-gr_pr_time = wa_y_material-marc_gr_pr_time. plantdata-safety_stk = wa_y_material-marc_safety_stk. plantdata-sm_key = wa_y_material-marc_sm_key. plantdata-plan_strgp = wa_y_material-marc_plan_strgp. plantdata-alt_bom_id = wa_y_material-marc_alt_bom_id. CLEAR plantdatax. plantdatax-plant = wa_y_material-marc_plant. plantdatax-availcheck = 'X'. plantdatax-loadinggrp = 'X'. plantdatax-pur_group = 'X'. plantdatax-batch_mgmt = 'X'. plantdatax-auto_p_ord = 'X'. plantdatax-ind_post_to_insp_stock = 'X'. plantdatax-quotausage = 'X'. plantdatax-sourcelist = 'X'. plantdatax-mrp_group = 'X'. plantdatax-mrp_type = 'X'. plantdatax-mrp_ctrler = 'X'. plantdatax-lotsizekey = 'X'. plantdatax-minlotsize = 'X'. plantdatax-maxlotsize = 'X'. plantdatax-round_val = 'X'. plantdatax-proc_type = 'X'. plantdatax-backflush = 'X'. plantdatax-plnd_delry = 'X'. plantdatax-gr_pr_time = 'X'. plantdatax-safety_stk = 'X'. plantdatax-sm_key = 'X'. plantdatax-plan_strgp = 'X'. plantdatax-alt_bom_id = 'X'. "倉庫存儲數據 CLEAR storagelocationdata. storagelocationdata-plant = wa_y_material-marc_plant. storagelocationdata-stge_loc = wa_y_material-mard_stge_loc. CLEAR storagelocationdatax. storagelocationdatax-plant = wa_y_material-marc_plant. storagelocationdatax-stge_loc = wa_y_material-mard_stge_loc. "銷售數據 CLEAR salesdata. salesdata-sales_org = wa_y_material-mvke_sales_org. salesdata-distr_chan = wa_y_material-mvke_distr_chan. salesdata-sales_unit = wa_y_material-mvke_sales_unit. salesdata-matl_stats = wa_y_material-mvke_matl_stats. salesdata-acct_assgt = wa_y_material-mvke_acct_assgt. salesdata-item_cat = wa_y_material-mvke_item_cat. CLEAR salesdatax. salesdatax-sales_org = wa_y_material-mvke_sales_org. salesdatax-distr_chan = wa_y_material-mvke_distr_chan. salesdatax-sales_unit = 'X'. salesdatax-matl_stats = 'X'. salesdatax-acct_assgt = 'X'. salesdatax-item_cat = 'X'. "會計、成本 CLEAR valuationdata. valuationdata-val_area = wa_y_material-marc_plant. valuationdata-val_class = wa_y_material-mbew_val_class. valuationdata-price_ctrl = wa_y_material-mbew_price_ctrl. valuationdata-price_unit = wa_y_material-mbew_price_unit. valuationdata-moving_pr = wa_y_material-mbew_moving_pr. valuationdata-std_price = wa_y_material-mbew_std_price. valuationdata-qty_struct = wa_y_material-mbew_qty_struct. valuationdata-orig_mat = wa_y_material-mbew_orig_mat. CLEAR valuationdatax. valuationdatax-val_area = wa_y_material-marc_plant. valuationdatax-val_class = 'X'. valuationdatax-price_ctrl = 'X'. valuationdatax-price_unit = 'X'. valuationdatax-moving_pr = 'X'. valuationdatax-std_price = 'X'. valuationdatax-qty_struct = 'X'. valuationdatax-orig_mat = 'X'. "物料描述 CLEAR materialdescription[]. materialdescription-langu_iso = 'ZH'. materialdescription-matl_desc = wa_y_material-t_makt_matl_desc. APPEND materialdescription. "單位 CLEAR unitsofmeasure[]. unitsofmeasure-alt_unit = pr_unit. unitsofmeasure-gross_wt = wa_y_material-t_marm_gross_wt. unitsofmeasure-unit_of_wt = wa_y_material-t_marm_unit_of_wt. unitsofmeasure-volume = wa_y_material-t_marm_volume. unitsofmeasure-volumeunit = wa_y_material-t_marm_volumeunit. APPEND unitsofmeasure. CLEAR unitsofmeasurex[]. unitsofmeasurex-alt_unit = pr_unit. unitsofmeasurex-gross_wt = 'X'. unitsofmeasurex-unit_of_wt = 'X'. unitsofmeasurex-volume = 'X'. unitsofmeasurex-volumeunit = 'X'. APPEND unitsofmeasurex. "稅分類 CLEAR taxclassifications[]. taxclassifications-depcountry = 'CN'. taxclassifications-tax_type_1 = 'MWST'. taxclassifications-taxclass_1 = wa_y_material-t_mlan_taxclass1. taxclassifications-taxclass_2 = wa_y_material-t_mlan_taxclass2. APPEND taxclassifications. PERFORM savedata USING num total. CLEAR wa_message. wa_message-material = wa_y_material-head_material. wa_message-description = wa_y_material-t_makt_matl_desc. wa_message-message = return-message. APPEND wa_message TO it_message. ENDLOOP. ENDFORM. "fill_matnr_data *保存數據,調用BAPI_MATERIAL_SAVEDATA FORM savedata USING num total. CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING headdata = headdata clientdata = clientdata clientdatax = clientdatax plantdata = plantdata plantdatax = plantdatax * forecastparameters = forecastparameters * forecastparametersx = forecastparametersx * planningdata = planningdata * planningdatax = planningdatax storagelocationdata = storagelocationdata storagelocationdatax = storagelocationdatax valuationdata = valuationdata valuationdatax = valuationdatax * warehousenumberdata = warehousenumberdata * warehousenumberdatax = warehousenumberdatax salesdata = salesdata salesdatax = salesdatax * storagetypedata = storagetypedata * storagetypedatax = storagetypedatax * flag_online = ' ' * flag_cad_call = ' ' * no_dequeue = ' ' IMPORTING return = return TABLES materialdescription = materialdescription[] unitsofmeasure = unitsofmeasure[] unitsofmeasurex = unitsofmeasurex * INTERNATIONALARTNOS = * MATERIALLONGTEXT = taxclassifications = taxclassifications[] * RETURNMESSAGES = * PRTDATA = * PRTDATAX = * EXTENSIONIN = * EXTENSIONINX = . IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' * IMPORTING * RETURN = . bapi_exe_result = 'X'. ELSE. bapi_exe_result = ''. ENDIF. WAIT UP TO 1 SECONDS. DATA: per TYPE f, txt TYPE string. per = ( num / total ) * 100. DATA: str1 TYPE string, str2 TYPE string. str1 = num. str2 = total. CONCATENATE '正在批量創建物料...已完成:(' str1 '/' str2 ')' INTO txt. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = per text = txt. ENDFORM. "SAVEDATA *獲取基本計量單位內碼 FORM get_pr_unit USING unit1 CHANGING unit2. SELECT SINGLE msehi INTO unit2 FROM t006a WHERE spras = 1 AND mseh3 = unit1. IF sy-subrc <> 0. unit2 = unit1. ENDIF. ENDFORM.