物料¶
物料维护¶
-
BAPI_MATERIAL_SAVEDATA,每次只能扩展一个工厂。
-
BAPI_MATERIAL_SAVEREPLICA,允许扩展多个工厂,下面使用该函数维护物料。
示例代码
FUNCTION zfm_demo_material_save_2
" You can use the template 'functionModuleParameter' to add here the signature!
.
*&---------------------------------------------------------------------*
*& 批导数据
*&---------------------------------------------------------------------*
" 演示用,假设这是程序的入参和出参
TYPES:
BEGIN OF ty_data,
matnr TYPE mara-matnr,
mbrsh TYPE mara-mbrsh,
mtart TYPE mara-mtart,
maktx TYPE makt-maktx,
werks TYPE werks_d,
vkorg TYPE vkorg,
mtype TYPE bapi_mtype,
msg TYPE bapi_msg,
END OF ty_data.
TYPES tt_data TYPE STANDARD TABLE OF ty_data.
DATA lt_data TYPE tt_data.
DATA l_matnr TYPE matnr.
DATA l_mtype TYPE bapi_mtype.
DATA l_msg TYPE bapi_msg.
*&---------------------------------------------------------------------*
*& BAPI数据声明
*&---------------------------------------------------------------------*
DATA l_global_data TYPE bapie1global_data.
DATA:
lt_headdata TYPE STANDARD TABLE OF bapie1matheader,
lt_clientdata TYPE STANDARD TABLE OF bapie1mara,
lt_clientdatax TYPE STANDARD TABLE OF bapie1marax,
lt_plantdata TYPE STANDARD TABLE OF bapie1marc,
lt_plantdatax TYPE STANDARD TABLE OF bapie1marcx,
lt_forecastparameters TYPE STANDARD TABLE OF bapie1mpop,
lt_forecastparametersx TYPE STANDARD TABLE OF bapie1mpopx,
lt_planningdata TYPE STANDARD TABLE OF bapie1mpgd,
lt_planningdatax TYPE STANDARD TABLE OF bapie1mpgdx,
lt_storagelocationdata TYPE STANDARD TABLE OF bapie1mard,
lt_storagelocationdatax TYPE STANDARD TABLE OF bapie1mardx,
lt_valuationdata TYPE STANDARD TABLE OF bapie1mbew,
lt_valuationdatax TYPE STANDARD TABLE OF bapie1mbewx,
lt_warehousenumberdata TYPE STANDARD TABLE OF bapie1mlgn,
lt_warehousenumberdatax TYPE STANDARD TABLE OF bapie1mlgnx,
lt_salesdata TYPE STANDARD TABLE OF bapie1mvke,
lt_salesdatax TYPE STANDARD TABLE OF bapie1mvkex,
lt_storagetypedata TYPE STANDARD TABLE OF bapie1mlgt,
lt_storagetypedatax TYPE STANDARD TABLE OF bapie1mlgtx,
lt_materialdescription TYPE STANDARD TABLE OF bapie1makt,
lt_unitsofmeasure TYPE STANDARD TABLE OF bapie1marm,
lt_unitsofmeasurex TYPE STANDARD TABLE OF bapie1marmx,
lt_internationalartnos TYPE STANDARD TABLE OF bapie1mean,
lt_materiallongtext TYPE STANDARD TABLE OF bapie1mltx,
lt_taxclassifications TYPE STANDARD TABLE OF bapie1mlan,
lt_prtdata TYPE STANDARD TABLE OF bapie1mfhm,
lt_prtdatax TYPE STANDARD TABLE OF bapie1mfhmx,
lt_extensionin TYPE STANDARD TABLE OF bapie1parex,
lt_extensioninx TYPE STANDARD TABLE OF bapie1parexx,
lt_forecastvalues TYPE STANDARD TABLE OF bapie1mprw,
lt_unplndconsumption TYPE STANDARD TABLE OF bapie1mveu,
lt_totalconsumption TYPE STANDARD TABLE OF bapie1mveg.
DATA:
ls_headdata TYPE bapie1matheader,
ls_clientdata TYPE bapie1mara,
ls_clientdatax TYPE bapie1marax,
ls_plantdata TYPE bapie1marc,
ls_plantdatax TYPE bapie1marcx,
ls_forecastparameters TYPE bapie1mpop,
ls_forecastparametersx TYPE bapie1mpopx,
ls_planningdata TYPE bapie1mpgd,
ls_planningdatax TYPE bapie1mpgdx,
ls_storagelocationdata TYPE bapie1mard,
ls_storagelocationdatax TYPE bapie1mardx,
ls_valuationdata TYPE bapie1mbew,
ls_valuationdatax TYPE bapie1mbewx,
ls_warehousenumberdata TYPE bapie1mlgn,
ls_warehousenumberdatax TYPE bapie1mlgnx,
ls_salesdata TYPE bapie1mvke,
ls_salesdatax TYPE bapie1mvkex,
ls_storagetypedata TYPE bapie1mlgt,
ls_storagetypedatax TYPE bapie1mlgtx,
ls_materialdescription TYPE bapie1makt,
ls_unitsofmeasure TYPE bapie1marm,
ls_unitsofmeasurex TYPE bapie1marmx,
ls_internationalartnos TYPE bapie1mean,
ls_materiallongtext TYPE bapie1mltx,
ls_taxclassifications TYPE bapie1mlan,
ls_prtdata TYPE bapie1mfhm,
ls_prtdatax TYPE bapie1mfhmx,
ls_extensionin TYPE bapie1parex,
ls_extensioninx TYPE bapie1parexx,
ls_forecastvalues TYPE bapie1mprw,
ls_unplndconsumption TYPE bapie1mveu,
ls_totalconsumption TYPE bapie1mveg.
DATA:
lt_return TYPE STANDARD TABLE OF bapie1ret2,
ls_return TYPE bapiret2.
*&---------------------------------------------------------------------*
*& 分批处理
*&---------------------------------------------------------------------*
LOOP AT lt_data INTO DATA(ls_data)
GROUP BY (
matnr = ls_data-matnr
) INTO DATA(ls_data_grp).
" 任取一行作为抬头
LOOP AT GROUP ls_data_grp INTO DATA(ls_data_head).
EXIT.
ENDLOOP.
*&---------------------------------------------------------------------*
*& 物料号
*&---------------------------------------------------------------------*
" 大多都是外部指定物料号,如需流水可自行调整
CLEAR l_matnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ls_data_head-matnr
IMPORTING
output = l_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
*&---------------------------------------------------------------------*
*& 设置需要导入的物料和视图
*&---------------------------------------------------------------------*
CLEAR ls_headdata.
ls_headdata-material_long = l_matnr. " 物料
ls_headdata-ind_sector = ls_data_head-mbrsh. " 行业领域
ls_headdata-matl_type = ls_data_head-mtart. " 物料类型
ls_headdata-basic_view = abap_true.
ls_headdata-sales_view = abap_true.
ls_headdata-purchase_view = abap_true.
ls_headdata-mrp_view = abap_true.
ls_headdata-forecast_view = abap_true.
ls_headdata-work_sched_view = abap_true.
ls_headdata-prt_view = abap_true.
ls_headdata-storage_view = abap_true.
ls_headdata-warehouse_view = abap_true.
ls_headdata-quality_view = abap_true.
ls_headdata-account_view = abap_true.
ls_headdata-cost_view = abap_true.
INSERT ls_headdata INTO TABLE lt_headdata.
*&---------------------------------------------------------------------*
*& 基础视图
*&---------------------------------------------------------------------*
DATA ls_mara_ga TYPE mara.
DATA ls_bapi_mara_ga TYPE bapi_mara_ga.
CLEAR ls_mara_ga.
CLEAR ls_bapi_mara_ga.
ls_mara_ga = CORRESPONDING #( ls_data_head ).
CALL FUNCTION 'MAP2E_MARA_TO_BAPI_MARA_GA'
EXPORTING
mara = ls_mara_ga
CHANGING
bapi_mara_ga = ls_bapi_mara_ga.
CLEAR ls_clientdata.
ls_clientdata = CORRESPONDING #( ls_bapi_mara_ga ).
ls_clientdata-material_long = l_matnr.
CLEAR ls_clientdatax.
PERFORM map_data_to_datax USING 'BAPIE1MARAX' ls_clientdata CHANGING ls_clientdatax.
INSERT ls_clientdata INTO TABLE lt_clientdata.
INSERT ls_clientdatax INTO TABLE lt_clientdatax.
*&---------------------------------------------------------------------*
*& 工厂视图
*&---------------------------------------------------------------------*
DATA ls_marc_ga TYPE marc.
DATA ls_bapi_marc_ga TYPE bapi_marc_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_marc_ga.
CLEAR ls_bapi_marc_ga.
ls_marc_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MARC_TO_BAPI_MARC_GA'
EXPORTING
marc = ls_marc_ga
h_waers = 'CNY'
CHANGING
bapi_marc_ga = ls_bapi_marc_ga
EXCEPTIONS
error_converting_curr_amount = 1.
IF sy-subrc = 0.
CONTINUE.
ENDIF.
CLEAR ls_plantdata.
ls_plantdata = CORRESPONDING #( ls_bapi_marc_ga ).
ls_plantdata-material_long = l_matnr.
CLEAR ls_plantdatax.
PERFORM map_data_to_datax USING 'BAPIE1MARCX' ls_plantdata CHANGING ls_plantdatax.
INSERT ls_plantdata INTO TABLE lt_plantdata.
INSERT ls_plantdatax INTO TABLE lt_plantdatax.
ENDLOOP.
SORT lt_plantdata BY plant.
SORT lt_plantdatax BY plant.
DELETE ADJACENT DUPLICATES FROM lt_plantdata COMPARING plant.
DELETE ADJACENT DUPLICATES FROM lt_plantdatax COMPARING plant.
**&---------------------------------------------------------------------*
**& MPOP
**&---------------------------------------------------------------------*
* DATA ls_mpop_ga TYPE mpop.
* DATA ls_bapi_mpop_ga TYPE bapi_mpop_ga.
*
* LOOP AT GROUP ls_data_grp INTO ls_data.
* CLEAR ls_mpop_ga.
* CLEAR ls_bapi_mpop_ga.
* ls_mpop_ga = CORRESPONDING #( ls_data ).
* CALL FUNCTION 'MAP2E_MPOP_TO_BAPI_MPOP_GA'
* EXPORTING
* mpop = ls_mpop_ga
* CHANGING
* bapi_mpop_ga = ls_bapi_mpop_ga.
*
* CLEAR ls_forecastparameters.
* ls_forecastparameters = CORRESPONDING #( ls_bapi_mpop_ga ).
* ls_forecastparameters-material_long = l_matnr.
*
* CLEAR ls_forecastparametersx.
* PERFORM map_data_to_datax USING 'BAPIE1MPOPX' ls_forecastparameters CHANGING ls_forecastparametersx.
*
* INSERT ls_forecastparameters INTO TABLE lt_forecastparameters.
* INSERT ls_forecastparametersx INTO TABLE lt_forecastparametersx.
* ENDLOOP.
*
* SORT lt_forecastparameters BY plant.
* SORT lt_forecastparametersx BY plant.
* DELETE ADJACENT DUPLICATES FROM lt_forecastparameters COMPARING plant.
* DELETE ADJACENT DUPLICATES FROM lt_forecastparametersx COMPARING plant.
**&---------------------------------------------------------------------*
**& MPGD
**&---------------------------------------------------------------------*
* DATA ls_mpgd_ga TYPE mpgd.
* DATA ls_bapi_mpgd_ga TYPE bapi_mpgd_ga.
*
* LOOP AT GROUP ls_data_grp INTO ls_data.
* CLEAR ls_mpgd_ga.
* CLEAR ls_bapi_mpgd_ga.
* ls_mpgd_ga = CORRESPONDING #( ls_data ).
* CALL FUNCTION 'MAP2E_MPGD_TO_BAPI_MPGD_GA'
* EXPORTING
* mpgd = ls_mpgd_ga
* CHANGING
* bapi_mpgd_ga = ls_bapi_mpgd_ga.
*
* CLEAR ls_planningdata.
* ls_planningdata = CORRESPONDING #( ls_bapi_mpgd_ga ).
* ls_planningdata-material_long = l_matnr.
*
* CLEAR ls_planningdatax.
* PERFORM map_data_to_datax USING 'BAPIE1MPGDX' ls_planningdata CHANGING ls_planningdatax.
*
* INSERT ls_planningdata INTO TABLE lt_planningdata.
* INSERT ls_planningdatax INTO TABLE lt_planningdatax.
* ENDLOOP.
*
* SORT lt_planningdata BY plant.
* SORT lt_planningdatax BY plant.
* DELETE ADJACENT DUPLICATES FROM lt_planningdata COMPARING plant.
* DELETE ADJACENT DUPLICATES FROM lt_planningdatax COMPARING plant.
*&---------------------------------------------------------------------*
*& 库位视图
*&---------------------------------------------------------------------*
DATA ls_mard_ga TYPE mard.
DATA ls_bapi_mard_ga TYPE bapi_mard_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_mard_ga.
CLEAR ls_bapi_mard_ga.
ls_mard_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MARD_TO_BAPI_MARD_GA'
EXPORTING
mard = ls_mard_ga
CHANGING
bapi_mard_ga = ls_bapi_mard_ga.
CLEAR ls_storagelocationdata.
ls_storagelocationdata = CORRESPONDING #( ls_bapi_mard_ga ).
ls_storagelocationdata-material_long = l_matnr.
CLEAR ls_storagelocationdatax.
PERFORM map_data_to_datax USING 'BAPIE1MARDX' ls_storagelocationdata CHANGING ls_storagelocationdatax.
INSERT ls_storagelocationdata INTO TABLE lt_storagelocationdata.
INSERT ls_storagelocationdatax INTO TABLE lt_storagelocationdatax.
ENDLOOP.
SORT lt_storagelocationdata BY plant stge_loc.
SORT lt_storagelocationdatax BY plant stge_loc.
DELETE ADJACENT DUPLICATES FROM lt_storagelocationdata COMPARING plant stge_loc.
DELETE ADJACENT DUPLICATES FROM lt_storagelocationdatax COMPARING plant stge_loc.
*&---------------------------------------------------------------------*
*& 评估视图
*&---------------------------------------------------------------------*
DATA ls_mbew_ga TYPE mbew.
DATA ls_bapi_mbew_ga TYPE bapi_mbew_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_mbew_ga.
CLEAR ls_bapi_mbew_ga.
ls_mbew_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MBEW_TO_BAPI_MBEW_GA'
EXPORTING
mbew = ls_mbew_ga
h_waers = 'CNY'
CHANGING
bapi_mbew_ga = ls_bapi_mbew_ga
EXCEPTIONS
error_converting_curr_amount = 1.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
CLEAR ls_valuationdata.
ls_valuationdata = CORRESPONDING #( ls_bapi_mbew_ga ).
ls_valuationdata-material_long = l_matnr.
CLEAR ls_valuationdatax.
PERFORM map_data_to_datax USING 'BAPIE1MBEWX' ls_valuationdata CHANGING ls_valuationdatax.
INSERT ls_valuationdata INTO TABLE lt_valuationdata.
INSERT ls_valuationdatax INTO TABLE lt_valuationdatax.
ENDLOOP.
SORT lt_valuationdata BY val_area val_type.
SORT lt_valuationdatax BY val_area val_type.
DELETE ADJACENT DUPLICATES FROM lt_valuationdata COMPARING val_area val_type.
DELETE ADJACENT DUPLICATES FROM lt_valuationdatax COMPARING val_area val_type.
*&---------------------------------------------------------------------*
*& MLGN
*&---------------------------------------------------------------------*
DATA ls_mlgn_ga TYPE mlgn.
DATA ls_bapi_mlgn_ga TYPE bapi_mlgn_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_mlgn_ga.
CLEAR ls_bapi_mlgn_ga.
ls_mlgn_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MLGN_TO_BAPI_MLGN_GA'
EXPORTING
mlgn = ls_mlgn_ga
CHANGING
bapi_mlgn_ga = ls_bapi_mlgn_ga.
CLEAR ls_plantdata.
ls_plantdata = CORRESPONDING #( ls_bapi_mlgn_ga ).
ls_plantdata-material_long = l_matnr.
CLEAR ls_plantdatax.
PERFORM map_data_to_datax USING 'BAPIE1MLGNX' ls_plantdata CHANGING ls_plantdatax.
INSERT ls_plantdata INTO TABLE lt_plantdata.
INSERT ls_plantdatax INTO TABLE lt_plantdatax.
ENDLOOP.
SORT lt_plantdata BY plant.
SORT lt_plantdatax BY plant.
DELETE ADJACENT DUPLICATES FROM lt_plantdata COMPARING plant.
DELETE ADJACENT DUPLICATES FROM lt_plantdatax COMPARING plant.
*&---------------------------------------------------------------------*
*& 销售视图
*&---------------------------------------------------------------------*
DATA ls_mvke_ga TYPE mvke.
DATA ls_bapi_mvke_ga TYPE bapi_mvke_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_mvke_ga.
CLEAR ls_bapi_mvke_ga.
ls_mvke_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MVKE_TO_BAPI_MVKE_GA'
EXPORTING
mvke = ls_mvke_ga
CHANGING
bapi_mvke_ga = ls_bapi_mvke_ga.
CLEAR ls_salesdata.
ls_salesdata = CORRESPONDING #( ls_bapi_mvke_ga ).
ls_salesdata-material_long = l_matnr.
CLEAR ls_salesdatax.
PERFORM map_data_to_datax USING 'BAPIE1MVKEX' ls_salesdata CHANGING ls_salesdatax.
INSERT ls_salesdata INTO TABLE lt_salesdata.
INSERT ls_salesdatax INTO TABLE lt_salesdatax.
ENDLOOP.
SORT lt_salesdata BY sales_org distr_chan.
SORT lt_salesdatax BY sales_org distr_chan.
DELETE ADJACENT DUPLICATES FROM lt_salesdata COMPARING sales_org distr_chan.
DELETE ADJACENT DUPLICATES FROM lt_salesdatax COMPARING sales_org distr_chan.
*&---------------------------------------------------------------------*
*& MLGT
*&---------------------------------------------------------------------*
DATA ls_mlgt_ga TYPE mlgt.
DATA ls_bapi_mlgt_ga TYPE bapi_mlgt_ga.
LOOP AT GROUP ls_data_grp INTO ls_data.
CLEAR ls_mlgt_ga.
CLEAR ls_bapi_mlgt_ga.
ls_mlgt_ga = CORRESPONDING #( ls_data ).
CALL FUNCTION 'MAP2E_MLGT_TO_BAPI_MLGT_GA'
EXPORTING
mlgt = ls_mlgt_ga
CHANGING
bapi_mlgt_ga = ls_bapi_mlgt_ga.
CLEAR ls_storagetypedata.
ls_storagetypedata = CORRESPONDING #( ls_bapi_mlgt_ga ).
ls_storagetypedata-material_long = l_matnr.
CLEAR ls_storagetypedatax.
PERFORM map_data_to_datax USING 'BAPIE1MLGTX' ls_storagetypedata CHANGING ls_storagetypedatax.
INSERT ls_storagetypedata INTO TABLE lt_storagetypedata.
INSERT ls_storagetypedatax INTO TABLE lt_storagetypedatax.
ENDLOOP.
SORT lt_storagetypedata BY whse_no stge_type.
SORT lt_storagetypedatax BY whse_no stge_type.
DELETE ADJACENT DUPLICATES FROM lt_storagetypedata COMPARING whse_no stge_type.
DELETE ADJACENT DUPLICATES FROM lt_storagetypedatax COMPARING whse_no stge_type.
*&---------------------------------------------------------------------*
*& 物料描述
*&---------------------------------------------------------------------*
CLEAR ls_materialdescription.
ls_materialdescription-material_long = l_matnr.
ls_materialdescription-langu = '1'.
ls_materialdescription-matl_desc = ls_data_head-maktx.
INSERT ls_materialdescription INTO TABLE lt_materialdescription.
SORT lt_materialdescription BY langu.
DELETE ADJACENT DUPLICATES FROM lt_materialdescription COMPARING langu.
**&---------------------------------------------------------------------*
**& 税
**&---------------------------------------------------------------------*
* CLEAR ls_taxclassifications.
* ls_taxclassifications-material_long = l_matnr.
* ls_taxclassifications-depcountry = ls_data_head-aland.
* ls_taxclassifications-tax_ind = ls_data_head-taxim.
*
* IF ls_data_head-taxm1 IS NOT INITIAL.
* ls_taxclassifications-tax_type_1 = ls_data_head-taxm1.
* ls_taxclassifications-taxclass_1 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm2 IS NOT INITIAL.
* ls_taxclassifications-tax_type_2 = ls_data_head-taxm2.
* ls_taxclassifications-taxclass_2 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm3 IS NOT INITIAL.
* ls_taxclassifications-tax_type_3 = ls_data_head-taxm3.
* ls_taxclassifications-taxclass_3 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm4 IS NOT INITIAL.
* ls_taxclassifications-tax_type_4 = ls_data_head-taxm4.
* ls_taxclassifications-taxclass_4 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm5 IS NOT INITIAL.
* ls_taxclassifications-tax_type_5 = ls_data_head-taxm5.
* ls_taxclassifications-taxclass_5 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm6 IS NOT INITIAL.
* ls_taxclassifications-tax_type_6 = ls_data_head-taxm6.
* ls_taxclassifications-taxclass_6 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm7 IS NOT INITIAL.
* ls_taxclassifications-tax_type_7 = ls_data_head-taxm7.
* ls_taxclassifications-taxclass_7 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm8 IS NOT INITIAL.
* ls_taxclassifications-tax_type_8 = ls_data_head-taxm8.
* ls_taxclassifications-taxclass_8 = ls_data_head-taxim.
* ENDIF.
*
* IF ls_data_head-taxm9 IS NOT INITIAL.
* ls_taxclassifications-tax_type_9 = ls_data_head-taxm9.
* ls_taxclassifications-taxclass_9 = ls_data_head-taxim.
* ENDIF.
*
* INSERT ls_taxclassifications INTO TABLE lt_taxclassifications.
**&---------------------------------------------------------------------*
**& MARM
**&---------------------------------------------------------------------*
* DATA ls_marm_ga TYPE marm.
* DATA ls_bapi_marm_ga TYPE bapi_marm_ga.
*
* LOOP AT GROUP ls_data_grp INTO ls_data.
* CLEAR ls_marm_ga.
* CLEAR ls_unitsofmeasure.
* ls_marm_ga = CORRESPONDING #( ls_data ).
* CALL FUNCTION 'MAP2E_MARM_TO_BAPIE1MARM'
* EXPORTING
* marm = ls_marm_ga
* CHANGING
* bapie1marm = ls_unitsofmeasure.
* ls_unitsofmeasure-material_long = l_matnr.
*
* CLEAR ls_unitsofmeasurex.
* PERFORM map_data_to_datax USING 'BAPIE1MARMX' ls_unitsofmeasure CHANGING ls_unitsofmeasurex.
*
* INSERT ls_unitsofmeasure INTO TABLE lt_unitsofmeasure.
* INSERT ls_unitsofmeasurex INTO TABLE lt_unitsofmeasurex.
* ENDLOOP.
*
* SORT lt_unitsofmeasure BY alt_unit alt_unit_iso.
* SORT lt_unitsofmeasurex BY alt_unit alt_unit_iso.
* DELETE ADJACENT DUPLICATES FROM lt_unitsofmeasure COMPARING alt_unit alt_unit_iso.
* DELETE ADJACENT DUPLICATES FROM lt_unitsofmeasurex COMPARING alt_unit alt_unit_iso.
*&---------------------------------------------------------------------*
*& 导入物料
*&---------------------------------------------------------------------*
CLEAR lt_return.
CALL FUNCTION 'BAPI_MATERIAL_SAVEREPLICA'
EXPORTING
noappllog = l_global_data-no_appl_log
nochangedoc = l_global_data-no_change_doc
testrun = l_global_data-testrun
inpfldcheck = l_global_data-inp_fld_check
TABLES
headdata = lt_headdata
clientdata = lt_clientdata
clientdatax = lt_clientdatax
plantdata = lt_plantdata
plantdatax = lt_plantdatax
forecastparameters = lt_forecastparameters
forecastparametersx = lt_forecastparametersx
planningdata = lt_planningdata
planningdatax = lt_planningdatax
storagelocationdata = lt_storagelocationdata
storagelocationdatax = lt_storagelocationdatax
valuationdata = lt_valuationdata
valuationdatax = lt_valuationdatax
warehousenumberdata = lt_warehousenumberdata
warehousenumberdatax = lt_warehousenumberdatax
salesdata = lt_salesdata
salesdatax = lt_salesdatax
storagetypedata = lt_storagetypedata
storagetypedatax = lt_storagetypedatax
materialdescription = lt_materialdescription
unitsofmeasure = lt_unitsofmeasure
unitsofmeasurex = lt_unitsofmeasurex
* internationalartnos = lt_internationalartnos
* materiallongtext = lt_materiallongtext
taxclassifications = lt_taxclassifications
* prtdata = lt_prtdata
* prtdatax = lt_prtdatax
extensionin = lt_extensionin
extensioninx = lt_extensioninx
* forecastvalues = lt_forecastvalues
* unplndconsumption = lt_unplndconsumption
* totalconsumption = lt_totalconsumption
returnmessages = lt_return.
CLEAR l_mtype.
CLEAR l_msg.
LOOP AT lt_return INTO ls_return WHERE type CA 'AXE'.
MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number
WITH ls_return-message_v1
ls_return-message_v2
ls_return-message_v3
ls_return-message_v4
INTO ls_return-message.
l_msg = |{ l_msg }{ ls_return-message }|.
ENDLOOP.
IF sy-subrc = 0.
l_mtype = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
l_matnr = lt_headdata[ 1 ]-material_long.
l_mtype = 'S'.
l_msg = '已处理'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ENDIF.
" 回写消息
LOOP AT GROUP ls_data_grp REFERENCE INTO DATA(lr_data).
lr_data->mtype = l_mtype.
lr_data->msg = l_msg.
ENDLOOP.
ENDLOOP.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& 同名BAPIUPDATE字段赋值
*&---------------------------------------------------------------------*
FORM map_data_to_datax USING i_name TYPE tabname
i_data TYPE data
CHANGING c_datax TYPE data.
FIELD-SYMBOLS <wa> TYPE any.
FIELD-SYMBOLS <wax> TYPE any.
SELECT
fieldname,
rollname
FROM dd03l
WHERE tabname = @i_name
INTO TABLE @DATA(lt_field).
LOOP AT lt_field INTO DATA(ls_field).
ASSIGN COMPONENT ls_field-fieldname OF STRUCTURE i_data TO <wa>.
ASSIGN COMPONENT ls_field-fieldname OF STRUCTURE c_datax TO <wax>.
IF <wa> IS ASSIGNED AND <wax> IS ASSIGNED.
IF ls_field-rollname = 'BAPIUPDATE'.
IF <wa> IS NOT INITIAL AND <wa> <> ''.
<wax> = abap_true.
ENDIF.
ELSE.
<wax> = <wa>.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
物料分类视图¶
-
BAPI_OBJCL_EXISTENCECHECK,检查物料是否存在分类视图
-
BAPI_OBJCL_CREATE,创建物料分类视图
-
BAPI_OBJCL_CHANGE,修改物料分类视图
-
BAPI_OBJCL_GETDETAIL,获取物料分类特征值
示例代码
IDOC物料同步¶
SAP系统间迁移或同步物料,推荐使用IDOC实现,下面讲述实现过程。
示例代码