当前位置: 首页 > news >正文

SAP-PLM创建物料主数据接口

FUNCTION zplm_d_0001_mm01.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     VALUE(EX_TOTAL) TYPE  CHAR4
*"     VALUE(EX_SUCCESSFUL) TYPE  CHAR4
*"     VALUE(EX_FAIL) TYPE  CHAR4
*"  TABLES
*"      IT_DATA STRUCTURE  ZSTRU_PLM_D_0001_INPUT OPTIONAL
*"      ET_DATA STRUCTURE  ZSTRU_PLM_D_0001_OUTPUT OPTIONAL
*"----------------------------------------------------------------------
*  1  检查传入工厂+物料是否已存在SAP,如果已存在就更新,不存在就创建
*  2  需要设置默认值的字段,如果传入空白,自动给默认值(无论是创建还是修改,比如利润中心)
*  3  调用BAPI - BAPI_MATERIAL_SAVEDATA 创建&修改物料主数据
*  4  返回成功/失败的消息和条目数DATA: gs_input  LIKE zstru_plm_d_0001_input,gs_output LIKE zstru_plm_d_0001_output.DATA: gt_marc LIKE TABLE OF marc,gs_marc LIKE marc.*-- rfc log - first phaseINCLUDE zgen_bc_x_fmlog_first_phase.IF it_data[] IS INITIAL.gs_output-retype = 'E'.gs_output-remessage = '没有传入任何数据'.APPEND gs_output TO et_data.CLEAR gs_output.
*-- rfc log - last phaseINCLUDE zgen_bc_x_fmlog_last_phase.RETURN.ENDIF.LOOP AT it_data INTO gs_input.
**1  检查传入值*检查传入工厂IF gs_input-plant IS INITIAL.gs_output-werks = gs_input-plant.gs_output-matnr = gs_input-material.gs_output-retype = 'E'.gs_output-remessage = '没有传入工厂'.APPEND gs_output TO et_data.CLEAR gs_output.ADD 1 TO ex_total.ADD 1 TO ex_fail.CONTINUE.ELSE.SELECT COUNT( * ) FROM t001w WHERE werks = gs_input-plant.IF sy-subrc <> 0.gs_output-werks = gs_input-plant.gs_output-matnr = gs_input-material.gs_output-retype = 'E'.
*        gs_output-remessage = '工厂编码不存在SAP,请检查'.MESSAGE s011(zplm01) WITH gs_input-plant INTO gs_output-remessage.APPEND gs_output TO et_data.CLEAR gs_output.ADD 1 TO ex_total.ADD 1 TO ex_fail.CONTINUE.ENDIF.ENDIF.*物料号补0CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGinput        = gs_input-materialIMPORTINGoutput       = gs_input-materialEXCEPTIONSlength_error = 1OTHERS       = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.*传入单位转内部DATA: l_out_meins TYPE meins.CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'EXPORTINGinput          = gs_input-base_uom
*       LANGUAGE       = SY-LANGUIMPORTINGoutput         = l_out_meinsEXCEPTIONSunit_not_found = 1OTHERS         = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereELSE.gs_input-base_uom =  l_out_meins.ENDIF.*2  设置默认值PERFORM frm_0001_init_data CHANGING gs_input.*3  调用BAPI - BAPI_MATERIAL_SAVEDATA 创建物料主数据PERFORM frm_0001_bapi_mm01 TABLES et_dataUSING gs_input.*3  返回成功/失败的消息和条目数ADD 1 TO ex_total.IF gs_output-retype = 'S'.ADD 1 TO ex_successful.ELSE.ADD 1 TO ex_fail.ENDIF.ENDLOOP.*-- rfc log - last phaseINCLUDE zgen_bc_x_fmlog_last_phase.ENDFUNCTION.FORM frm_0001_init_data CHANGING gs_input LIKE zstru_plm_d_0001_input.DATA: lv_matnr LIKE gs_input-material.DATA: ls_mara LIKE mara,ls_marc LIKE marc.SELECT SINGLE * FROM mara INTO CORRESPONDING FIELDS OF ls_mara WHERE matnr = gs_input-material.SELECT SINGLE * FROM marc INTO CORRESPONDING FIELDS OF ls_marc WHERE werks = gs_input-plant AND matnr = gs_input-material."行业领域IF gs_input-ind_sector IS INITIAL.gs_input-ind_sector = 'M'.ENDIF."普通项目类别组IF gs_input-item_cat IS INITIAL.gs_input-item_cat = 'NORM'.ENDIF."货架寿命到期日的期间标识IF gs_input-period_ind_expiration_date IS INITIAL.gs_input-period_ind_expiration_date = 'D'.ENDIF.""修改物料时,关键字段如果传入空值,自动填充SAP原值IF ls_mara IS NOT INITIAL.IF gs_input-matl_type IS INITIAL."物料类型gs_input-matl_type = ls_mara-mtart.ENDIF.IF gs_input-base_uom IS INITIAL."单位gs_input-base_uom = ls_mara-meins.ENDIF.IF gs_input-matl_group IS INITIAL."物料组gs_input-matl_group = ls_mara-matkl.ENDIF.ENDIF."利润中心IF ls_marc-prctr IS INITIAL."增加利润中心判断逻辑IF gs_input-matl_type = 'ROH'.IF gs_input-plant = '1301'.gs_input-profit_ctr = '1300KL'.ELSEIF gs_input-plant = '1101'.gs_input-profit_ctr = '1100HT'.ENDIF.ELSEIF gs_input-matl_type = 'HALB'.IF gs_input-plant = '1301'.gs_input-profit_ctr = '1300KL'.ELSEIF gs_input-plant = '1101'.gs_input-profit_ctr = '1100HT'.ENDIF.ELSEIF gs_input-matl_type = 'FERT'.IF gs_input-plant = '1301'.gs_input-profit_ctr = '1300KL'.ELSEIF gs_input-plant = '1101'.gs_input-profit_ctr = '1100HT'.ENDIF.ELSEIF gs_input-matl_type = 'Z001'.IF gs_input-plant = '1301'.gs_input-profit_ctr = '1300KL'.ELSEIF gs_input-plant = '1101'.gs_input-profit_ctr = '1100HT'.ENDIF.*          gs_input-STOR_CONDS = '02'.ENDIF.ELSE.IF gs_input-profit_ctr IS INITIAL.gs_input-profit_ctr = ls_marc-prctr.ENDIF.ENDIF.""物料描述IF gs_input-matl_desc IS INITIAL.SELECT SINGLE maktxFROM maktINTO gs_input-matl_descWHERE matnr = gs_input-materialAND spras = sy-langu.ENDIF.""存储条件IF gs_input-stor_conds IS INITIAL.IF gs_input-matl_type = 'FERT'.CLEAR lv_matnr.lv_matnr = gs_input-material."物料编码以31/33开头的存储条件为01,32/34/35开头的存储条件为04CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'EXPORTINGinput  = lv_matnrIMPORTINGoutput = lv_matnr.IF lv_matnr+0(2) = '31' OR lv_matnr+0(2) = '33' OR lv_matnr+0(2) = '36' ."增加36到01gs_input-stor_conds = '01'.ELSEIF lv_matnr+0(2) = '32' OR lv_matnr+0(2) = '34' OR lv_matnr+0(2) = '35'.gs_input-stor_conds = '04'.ENDIF.ELSE."原材料,半成品,营销配件的存储条件全部默认03。gs_input-stor_conds = '03'.ENDIF.ENDIF.ENDFORM.FORM frm_0001_bapi_mm01 TABLES et_data STRUCTURE zstru_plm_d_0001_outputUSING gs_input LIKE zstru_plm_d_0001_input.DATA: gs_output LIKE zstru_plm_d_0001_output.DATA: lt_export LIKE TABLE OF zst_ims_d_0001 WITH HEADER LINE ."下发返回消息DATA: ls_marc LIKE marc.SELECT SINGLE * FROM marcINTO CORRESPONDING FIELDS OF ls_marcWHERE werks = gs_input-plantAND matnr = gs_input-material.DATA:ls_headdata            TYPE          bapimathead,ls_clientdata          TYPE          bapi_mara,ls_clientdatax         TYPE          bapi_marax,ls_plantdata           TYPE          bapi_marc,ls_plantdatax          TYPE          bapi_marcx,ls_mard                LIKE  bapi_mard,ls_mardx               LIKE  bapi_mardx,lt_materialdescription LIKE TABLE OF bapi_makt WITH HEADER LINE. "物料描述
*    LT_materiallongtext    LIKE TABLE OF bapi_mltx WITH HEADER LINE. "物料描述DATA: lt_unitsofmeasure  TYPE TABLE OF bapi_marm WITH HEADER LINE, "单位                  "维护  毛重和体积单位lt_unitsofmeasurex TYPE TABLE OF bapi_marmx WITH HEADER LINE."add D20210324DATA zzbapi_te_mara  LIKE bapi_te_mara. "客户定义字段:客户级别的物料数据DATA zzbapi_te_marax LIKE bapi_te_marax. "客户定义字段:客户级别的物料数据DATA w_extensionin TYPE TABLE OF   bapiparex WITH HEADER LINE.DATA w_extensioninx TYPE TABLE OF bapiparexx WITH HEADER LINE.CLEAR gs_output.CLEAR: ls_headdata,ls_clientdata, "基本数据ls_clientdatax,ls_plantdata, "工厂数据 MRP视图ls_plantdatax,ls_mard,ls_mardx.REFRESH: lt_materialdescription[],lt_unitsofmeasure,lt_unitsofmeasurex.ls_headdata-material        = gs_input-material. "物料碼ls_headdata-ind_sector      = gs_input-ind_sector."產業別ls_headdata-matl_type       = gs_input-matl_type. "物料類型""基本数据1&2IF ls_headdata IS NOT INITIAL.ls_headdata-basic_view = 'X'.MOVE-CORRESPONDING gs_input TO ls_clientdata.
*    ls_clientdata-sled_bbd = 'B'.ls_clientdatax-matl_group = 'X'.ls_clientdatax-base_uom = 'X'.ls_clientdatax-item_cat = 'X'.
*    ls_clientdatax-period_ind_expiration_date = 'X'.ls_clientdatax-pack_vo_un = 'X'.ls_clientdatax-size_dim = 'X'.ls_clientdatax-stor_conds = 'X'.
*    ls_clientdatax-sled_bbd = 'X'.ls_clientdatax-document = 'X'."增加单位D2022.03.03IF  ls_clientdata-std_descr IS NOT INITIAL.ls_clientdatax-std_descr = 'X'.ENDIF."增加单位D20210317
*    IF  ls_clientdata-net_weight IS NOT INITIAL.
*      ls_clientdatax-net_weight = 'X'.
*    ENDIF.IF  ls_clientdata-unit_of_wt IS NOT INITIAL.ls_clientdatax-unit_of_wt = 'X'.ENDIF.ENDIF.""工厂数据 MRP视图IF gs_input-plant IS NOT INITIAL.ls_headdata-storage_view  = 'X'."存储视图MOVE-CORRESPONDING gs_input TO ls_plantdata.
*    ls_plantdata-period_ind = 'M'.ls_plantdatax-plant = gs_input-plant.ls_plantdatax-profit_ctr = 'X'.ls_plantdatax-pur_status = 'X'.
*    ls_plantdatax-period_ind = 'X'.ENDIF."物料描述lt_materialdescription-langu     = '1'.lt_materialdescription-langu_iso = 'ZH'.lt_materialdescription-matl_desc = gs_input-matl_desc.APPEND lt_materialdescription.CLEAR lt_materialdescription.IF gs_input-volum IS NOT INITIAL."单位CLEAR lt_unitsofmeasure[].lt_unitsofmeasure-alt_unit = gs_input-base_uom.lt_unitsofmeasure-volume = gs_input-volum.lt_unitsofmeasure-volumeunit = gs_input-voleh.IF gs_input-unit_of_wt IS NOT INITIAL.lt_unitsofmeasure-unit_of_wt = gs_input-unit_of_wt.ENDIF.APPEND lt_unitsofmeasure.CLEAR lt_unitsofmeasurex[].lt_unitsofmeasurex-alt_unit = gs_input-base_uom.lt_unitsofmeasurex-volume = 'X'.lt_unitsofmeasurex-volumeunit = 'X'.IF gs_input-unit_of_wt IS NOT INITIAL.lt_unitsofmeasurex-unit_of_wt = 'X'.ENDIF.APPEND lt_unitsofmeasurex.ENDIF."增加毛重字段D20210324zzbapi_te_mara-material = ls_headdata-material.zzbapi_te_mara-brgew = gs_input-gross_wt. "毛重zzbapi_te_marax-material = ls_headdata-material.zzbapi_te_marax-brgew = 'X'.w_extensionin-structure = 'BAPI_TE_MARA'.w_extensionin-valuepart1 = zzbapi_te_mara.APPEND w_extensionin.w_extensioninx-structure = 'BAPI_TE_MARAX'.w_extensioninx-valuepart1 = zzbapi_te_marax.APPEND w_extensioninx."""当物料已存在SAP时,不再更新以下三个字段"""【因为接口设置的默认值,但SAP此时的值已被修改,不能再还原为默认值】IF ls_marc IS NOT INITIAL.CLEAR: ls_clientdatax-item_cat,"普通项目类别组ls_plantdatax-profit_ctr,"利润中心ls_clientdatax-stor_conds."存储条件ENDIF.DATA: msgreturn LIKE bapi_matreturn2 OCCURS 0 WITH HEADER LINE.DATA: BEGIN OF wa_errmsg.INCLUDE STRUCTURE bapiret2.DATA:END OF wa_errmsg.DATA it_return TYPE /eacc/t_bapiret2 .REFRESH msgreturn.CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'EXPORTINGheaddata            = ls_headdataclientdata          = ls_clientdata "基本数据clientdatax         = ls_clientdataxplantdata           = ls_plantdata "工厂数据 MRP视图plantdatax          = ls_plantdatax
*     storagelocationdata = ls_mard
*     storagelocationdatax = ls_mardxTABLESmaterialdescription = lt_materialdescription "物料描述unitsofmeasure      = lt_unitsofmeasureunitsofmeasurex     = lt_unitsofmeasurexextensionin         = w_extensioninextensioninx        = w_extensioninxreturnmessages      = msgreturn.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.LOOP AT msgreturn WHERE type = 'E' ."OR ( TYPE = 'S' AND ID = 'M3' AND ( NUMBER = 800 OR NUMBER = 810 ) ).MOVE-CORRESPONDING msgreturn TO wa_errmsg.APPEND wa_errmsg TO it_return.ENDLOOP.LOOP AT it_return INTO wa_errmsg.gs_output-werks = gs_input-plant.gs_output-matnr = gs_input-material.gs_output-retype = wa_errmsg-type.MESSAGE ID wa_errmsg-idTYPE wa_errmsg-typeNUMBER wa_errmsg-numberWITH wa_errmsg-message_v1wa_errmsg-message_v2wa_errmsg-message_v3wa_errmsg-message_v4INTO gs_output-remessage.APPEND gs_output TO et_data.CLEAR gs_output.ENDLOOP.IF sy-subrc <> 0.gs_output-werks = gs_input-plant.gs_output-matnr = gs_input-material.gs_output-retype = 'S'.IF ls_marc IS INITIAL.MESSAGE s800(m3) WITH  gs_input-material INTO gs_output-remessage.ELSE.MESSAGE s801(m3) WITH  gs_input-material INTO gs_output-remessage.ENDIF.APPEND gs_output TO et_data.CLEAR gs_output.
*---当物料创建或者修改成功执行下发CALL FUNCTION 'ZIMS_D_0001_MATNR_SYNC'TABLESit_data   = et_dataet_export = lt_export.IF sy-subrc = 0.LOOP AT lt_export.gs_output-retype = lt_export-retype.CONCATENATE '物料'  gs_input-material lt_export-remessage INTO gs_output-remessage.
*        gs_output-remessage = ls_export-remessage.APPEND gs_output TO et_data.CLEAR: gs_output,lt_export.ENDLOOP.ENDIF."添加更改日志PERFORM frm_0001_update_log USING gs_input.UPDATE mara SET texture = gs_input-texturezz_spec = gs_input-zz_speczz_model = gs_input-zz_modelzz_fcode = gs_input-zz_fcodezz_func = gs_input-zz_funczz_ibin = gs_input-zz_ibin"增加是否激活D20220422zz_pjcode = gs_input-zz_pjcode"增加是否激活D20220422zz_mode = gs_input-zz_mode"增加激活方式D20231024WHERE matnr = gs_input-material.COMMIT WORK AND WAIT.ENDIF.ENDFORM.FORM frm_0001_update_log USING gs_input LIKE zstru_plm_d_0001_input.DATA: zz_spec_chang   TYPE mara-zz_spec, ""规格texture_chang   TYPE mara-texture, ""材质zz_model_chang  TYPE mara-zz_model, ""型号zz_fcode_chang  TYPE mara-zz_fcode, ""功能码zz_func_chang   TYPE mara-zz_func,  "功能配置zz_ibin_chang   TYPE mara-zz_ibin, "是否激活D20220422zz_pjcode_chang TYPE mara-zz_pjcode, "配件码D20220522zz_mode_chang   TYPE mara-zz_mode. "激活方式D20231024DATA: it_zmm02ul TYPE TABLE OF  zmm02ul  WITH HEADER LINE .DATA wk_number TYPE c LENGTH 10.REFRESH it_zmm02ul[].CLEAR it_zmm02ul."规格SELECT SINGLE zz_spec FROM mara INTO zz_spec_chang WHERE matnr =  gs_input-material.IF zz_spec_chang IS INITIAL.IF gs_input-zz_spec IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_SPEC'.it_zmm02ul-zfield1n = '规格'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_spec_chang.it_zmm02ul-znewvl   = gs_input-zz_spec.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_spec IS  INITIAL.it_zmm02ul-matnr    = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_SPEC'.it_zmm02ul-zfield1n = '规格'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_spec_chang.it_zmm02ul-znewvl   = gs_input-zz_spec.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_spec <> zz_spec_chang.it_zmm02ul-matnr    = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_SPEC'.it_zmm02ul-zfield1n = '规格'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_spec_chang.it_zmm02ul-znewvl   = gs_input-zz_spec.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul."材质SELECT SINGLE texture FROM mara INTO texture_chang WHERE matnr =  gs_input-material.IF texture_chang IS INITIAL.IF gs_input-texture IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'TEXTURE'.it_zmm02ul-zfield1n = '材质'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = texture_chang.it_zmm02ul-znewvl   = gs_input-texture.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-texture IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'TEXTURE'.it_zmm02ul-zfield1n = '材质'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = texture_chang.it_zmm02ul-znewvl   = gs_input-texture.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-texture <> texture_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'TEXTURE'.it_zmm02ul-zfield1n = '材质'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = texture_chang.it_zmm02ul-znewvl   = gs_input-texture.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul."型号SELECT SINGLE zz_model FROM mara INTO zz_model_chang WHERE matnr =  gs_input-material.IF zz_model_chang IS INITIAL.IF gs_input-zz_model IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODEL'.it_zmm02ul-zfield1n = '型号'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_model_chang.it_zmm02ul-znewvl   = gs_input-zz_model.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_model IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODEL'.it_zmm02ul-zfield1n = '型号'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_model_chang.it_zmm02ul-znewvl   = gs_input-zz_model.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_model <> zz_model_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODEL'.it_zmm02ul-zfield1n = '型号'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_model_chang.it_zmm02ul-znewvl   = gs_input-zz_model.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul."功能码SELECT SINGLE zz_fcode FROM mara INTO zz_fcode_chang WHERE matnr =  gs_input-material.IF zz_fcode_chang IS INITIAL.IF gs_input-zz_fcode IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FCODE'.it_zmm02ul-zfield1n = '功能码'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_fcode_chang.it_zmm02ul-znewvl   = gs_input-zz_fcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_fcode IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FCODE'.it_zmm02ul-zfield1n = '功能码'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_fcode_chang.it_zmm02ul-znewvl   = gs_input-zz_fcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_fcode <> zz_fcode_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FCODE'.it_zmm02ul-zfield1n = '功能码'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_fcode_chang.it_zmm02ul-znewvl   = gs_input-zz_fcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul."功能配置SELECT SINGLE zz_func FROM mara INTO zz_func_chang WHERE matnr =  gs_input-material.IF zz_func_chang IS INITIAL.IF gs_input-zz_func IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FUNC'.it_zmm02ul-zfield1n = '功能配置'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_func_chang.it_zmm02ul-znewvl   = gs_input-zz_func.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_func IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FUNC'.it_zmm02ul-zfield1n = '功能配置'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_func_chang.it_zmm02ul-znewvl   = gs_input-zz_func.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_func <> zz_func_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_FUNC'.it_zmm02ul-zfield1n = '功能配置'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_func_chang.it_zmm02ul-znewvl   = gs_input-zz_func.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul."是否激活字段addD20220422SELECT SINGLE zz_ibin FROM mara INTO zz_ibin_chang WHERE matnr =  gs_input-material.IF zz_ibin_chang IS INITIAL.IF gs_input-zz_func IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_IBIN'.it_zmm02ul-zfield1n = '是否激活'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_ibin_chang.it_zmm02ul-znewvl   = gs_input-zz_ibin.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_ibin IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_IBIN'.it_zmm02ul-zfield1n = '是否激活'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_ibin_chang.it_zmm02ul-znewvl   = gs_input-zz_ibin.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_ibin <> zz_ibin_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_IBIN'.it_zmm02ul-zfield1n = '是否激活'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_ibin_chang.it_zmm02ul-znewvl   = gs_input-zz_ibin.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF."配件码addD20220522SELECT SINGLE zz_pjcode FROM mara INTO zz_pjcode_chang WHERE matnr =  gs_input-material.IF zz_pjcode_chang IS INITIAL.IF gs_input-zz_pjcode IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_PJCODE'.it_zmm02ul-zfield1n = '配件码'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_pjcode_chang.it_zmm02ul-znewvl   = gs_input-zz_pjcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_pjcode IS  INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_PJCODE'.it_zmm02ul-zfield1n = '配件码'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_pjcode_chang.it_zmm02ul-znewvl   = gs_input-zz_pjcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_pjcode <> zz_pjcode_chang.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_PJCODE'.it_zmm02ul-zfield1n = '配件码'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_pjcode_chang.it_zmm02ul-znewvl   = gs_input-zz_pjcode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.REFRESH it_zmm02ul[].CLEAR it_zmm02ul."激活方式addD20231024SELECT SINGLE zz_mode FROM mara INTO zz_mode_chang  WHERE matnr =  gs_input-material.IF zz_mode_chang  IS INITIAL.IF gs_input-zz_spec IS NOT INITIAL.it_zmm02ul-matnr   = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODE'.it_zmm02ul-zfield1n = '激活方式'.it_zmm02ul-zu_type  =  '插入'.it_zmm02ul-zoldvl   = zz_mode_chang .it_zmm02ul-znewvl   = gs_input-zz_mode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ELSE.IF gs_input-zz_spec IS  INITIAL.it_zmm02ul-matnr    = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODE'.it_zmm02ul-zfield1n = '激活方式'.it_zmm02ul-zu_type  =  '删除'.it_zmm02ul-zoldvl   = zz_mode_chang .it_zmm02ul-znewvl   = gs_input-zz_mode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ELSE.IF  gs_input-zz_spec <> zz_spec_chang.it_zmm02ul-matnr    = gs_input-material.it_zmm02ul-zfield1  = 'ZZ_MODE'.it_zmm02ul-zfield1n = '激活方式'.it_zmm02ul-zu_type  =  '变更'.it_zmm02ul-zoldvl   = zz_mode_chang.it_zmm02ul-znewvl   = gs_input-zz_mode.it_zmm02ul-zdata    = sy-datum.it_zmm02ul-ztime    = sy-uzeit.it_zmm02ul-bname    = sy-uname.ENDIF.ENDIF.ENDIF.IF it_zmm02ul IS NOT INITIAL.APPEND it_zmm02ul.ENDIF.CLEAR it_zmm02ul.IF it_zmm02ul[] IS NOT INITIAL.CLEAR wk_number.CALL FUNCTION 'NUMBER_RANGE_ENQUEUE 'EXPORTINGobject           = 'ZMMRP002'EXCEPTIONSforeign_lock     = 1object_not_found = 2system_failure   = 3OTHERS           = 4.IF sy-subrc = 0.CALL FUNCTION 'NUMBER_GET_NEXT'EXPORTINGnr_range_nr             = '00'object                  = 'ZMMRP002'IMPORTINGnumber                  = wk_numberEXCEPTIONSinterval_not_found      = 1number_range_not_intern = 2object_not_found        = 3quantity_is_0           = 4quantity_is_not_1       = 5interval_overflow       = 6buffer_overflow         = 7OTHERS                  = 8.CALL FUNCTION 'NUMBER_RANGE_DEQUEUE 'EXPORTINGobject           = 'ZMMRP002'EXCEPTIONSobject_not_found = 1OTHERS           = 2.ELSE .RAISE num_range_error .ENDIF .LOOP AT it_zmm02ul.it_zmm02ul-zul_no = wk_number.MODIFY it_zmm02ul TRANSPORTING zul_no.CLEAR it_zmm02ul.ENDLOOP.MODIFY zmm02ul FROM TABLE it_zmm02ul[].ENDIF.
ENDFORM.

返回的结果表在这里插入图片描述
数据的传入表
在这里插入图片描述在这里插入图片描述
在这里插入图片描述数据的传出表
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript和vue实现左右两栏,中间拖动按钮可以拖动左右两边的宽度
  • 全排列的 Java 实现
  • Springcloud-Nacos
  • OpenStack入门体验
  • 掩码、反掩码、通配符的区别和计算方式
  • 使用s3cmd 2.x 与 Cyberduck 管理在 DigitalOcean Spaces 对象存储中的数据
  • 全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
  • 缓存策略自定义:Laravel应用性能优化秘籍
  • 虚拟机(CentOS7)安装jenkins
  • ubuntu安装nginx以及php的部署
  • STL—vector—模拟实现【深度理解vector】【模拟实现vector基本接口】
  • WebLogic: CVE-2020-14882/14883【getshell】
  • C语言自定义类型结构体与位段超详解
  • 如果一台Riscv FreeBSD系统没有pkg怎么办?
  • 基于深度学习的自动化模型设计
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Android Volley源码解析
  • Apache Spark Streaming 使用实例
  • bootstrap创建登录注册页面
  • Debian下无root权限使用Python访问Oracle
  • Java超时控制的实现
  • java取消线程实例
  • java中的hashCode
  • Js基础知识(一) - 变量
  • NSTimer学习笔记
  • React-redux的原理以及使用
  • Unix命令
  • Zsh 开发指南(第十四篇 文件读写)
  • 阿里云购买磁盘后挂载
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 我从编程教室毕业
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #VERDI# 关于如何查看FSM状态机的方法
  • $.ajax()方法详解
  • (1)Android开发优化---------UI优化
  • (JS基础)String 类型
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十五)使用Nexus创建Maven私服
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (五)activiti-modeler 编辑器初步优化
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET IoC 容器(三)Autofac
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Async注解的坑,小心
  • @WebService和@WebMethod注解的用法
  • [ NOI 2001 ] 食物链