METHOD zps_ii_si_xm_cgsq_in~si_xm_cgsq_in.
"定义返回参数
DATA:it_bapi_bus2002_new TYPE STANDARD TABLE OF bapi_bus2002_new,
wa_bapi_bus2002_new TYPE bapi_bus2002_new,
it_bapiret2 TYPE STANDARD TABLE OF bapiret2,
wa_bapiret2 TYPE bapiret2.
DATA : i_number TYPE bapi_network_list-network.
DATA:"定义输入活动
it_bapi_bus2002_act_new TYPE STANDARD TABLE OF bapi_bus2002_act_new,
wa_bapi_bus2002_act_new TYPE bapi_bus2002_act_new.
DATA:
"输入的组件信息
wa_i_components_add TYPE bapi_network_comp_add,
it_i_components_add TYPE STANDARD TABLE OF bapi_network_comp_add,
"输出的消息信息
wa_e_message_table TYPE bapi_meth_message,
it_e_message_table TYPE STANDARD TABLE OF bapi_meth_message.
"返回接口参数
DATA: lo_output TYPE REF TO zun_co_si_un_resp_out,
ls_output TYPE zun_mt_un_resp,
ls_output_hd TYPE zmmi005_dt_mesg_hd,
lt_output_bd TYPE zun_dt_un_resp_msgbd_tab,
ls_output_bd TYPE zun_dt_un_resp_msgbd.
DATA: ls_zpspr TYPE zpspr,
lt_zpspr TYPE STANDARD TABLE OF zpspr.
DATA: flag_head TYPE c,
flag_hxm TYPE c.
****修改组件
DATA: lt_comp TYPE TABLE OF bapi_network_comp_detail,
ls_comp TYPE bapi_network_comp_detail.
DATA:lt_com_change TYPE STANDARD TABLE OF bapi_network_comp_change,
ls_com_change TYPE bapi_network_comp_change,
ls_com_upd TYPE bapi_network_comp_cng_upd,
lt_com_upd TYPE STANDARD TABLE OF bapi_network_comp_cng_upd.
************删除组件
DATA: ls_comp_id TYPE bapi_network_comp_id,
lt_comp_id TYPE STANDARD TABLE OF bapi_network_comp_id.
LOOP AT input-mt_xm_cgsq-msgbd INTO DATA(ls_input).
IF ls_input-zflag = 'I'.
"校验
IF ls_input-profid IS INITIAL.
"错误反馈
ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 网络参数文件 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_input-auart IS INITIAL. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 网络类型 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_input-werks IS INITIAL. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 工厂 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_input-dispo IS INITIAL. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 MRP控制者 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_input-posnr IS INITIAL. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 WBS元素 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. "写自建表 ls_zpspr-msgid = ls_input-itemid. ls_zpspr-zflag = ls_input-zflag. ls_zpspr-posnr = ls_input-posnr. ls_zpspr-profid = ls_input-profid. ls_zpspr-aufnr = ls_input-aufnr. ls_zpspr-auart = ls_input-auart. ls_zpspr-werks = ls_input-werks. ls_zpspr-dispo = ls_input-dispo. ls_zpspr-ktext = ls_input-ktext. MODIFY zpspr FROM ls_zpspr. COMMIT WORK. CLEAR:wa_bapi_bus2002_new. wa_bapi_bus2002_new-project_definition = ls_input-psphi. " 'JG-112'. "项目定义 wa_bapi_bus2002_new-wbs_element = ls_input-posnr. "'JG-1121'. "工作分解结构元素 (WBS 元素) wa_bapi_bus2002_new-short_text = ls_input-ktext. "'BAPI测试创建网络11'. "描述 wa_bapi_bus2002_new-profile = ls_input-profid. "'AG00002'. "网络参数文件 wa_bapi_bus2002_new-network_type = ls_input-auart. " 'AG46'."网络类型 wa_bapi_bus2002_new-plant = ls_input-werks. " '2060'. "工厂 wa_bapi_bus2002_new-mrp_controller = ls_input-dispo. " 'PS1'. "MRP控制者 CALL FUNCTION 'BAPI_PS_INITIALIZATION'. CALL FUNCTION 'BAPI_BUS2002_CREATE' EXPORTING i_network = wa_bapi_bus2002_new TABLES et_return = it_bapiret2. "第四步:判断是否有错误消息 LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'. MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number INTO wa_bapiret2-message WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4. ENDLOOP. "第四步:如果有错误消息则退出 IF sy-subrc EQ 0. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = wa_bapiret2-message. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'. UPDATE zpspr SET zfkzt = '0' zfgtxt = wa_bapiret2-message WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag. COMMIT WORK. ENDIF. CHECK sy-subrc NE 0. "第四步:没有错误消息则执行预提交 CALL FUNCTION 'BAPI_PS_PRECOMMIT' TABLES et_return = it_bapiret2. LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'. MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number INTO wa_bapiret2-message WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4. ENDLOOP. "第五步:预提交有错误消息则执行回滚 IF sy-subrc EQ 0. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = wa_bapiret2-message. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'. UPDATE zpspr SET zfkzt = '0' zfgtxt = wa_bapiret2-message WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag. COMMIT WORK. ELSE. "第五步:预提交无错误消息则执行正式提交 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. READ TABLE it_bapiret2 INTO wa_bapiret2 WITH KEY type = 'S'. IF sy-subrc = 0. i_number = wa_bapiret2-message_v2+0(12). ENDIF. ENDIF. "网络创建成功后创建作业 IF i_number IS NOT INITIAL. CLEAR: it_bapiret2,wa_bapiret2,it_bapi_bus2002_act_new. "作业赋值 wa_bapi_bus2002_act_new-activity = '0010'. "在网络和库网络中的作业编号 wa_bapi_bus2002_act_new-description = ls_input-ktext. "工序短文本 wa_bapi_bus2002_act_new-wbs_element = ls_input-posnr. "工作分解结构元素 (WBS 元素) wa_bapi_bus2002_act_new-work_cntr = ''. "工作中心 wa_bapi_bus2002_act_new-work_activity = ''. "工作(时间单位H) wa_bapi_bus2002_act_new-acttype = ''. "活动类型 wa_bapi_bus2002_act_new-cost_elem = ''. "成本要素编码 wa_bapi_bus2002_act_new-profit_ctr = ''. "利润中心 wa_bapi_bus2002_act_new-activity_costs = ''. "作业中的成本 APPEND wa_bapi_bus2002_act_new TO it_bapi_bus2002_act_new. CLEAR:wa_bapi_bus2002_act_new. "第三步:调用函数 CALL FUNCTION 'BAPI_PS_INITIALIZATION'. CALL FUNCTION 'BAPI_BUS2002_ACT_CREATE_MULTI' EXPORTING i_number = i_number TABLES it_activity = it_bapi_bus2002_act_new et_return = it_bapiret2. "第四步:判断是否有错误消息 LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'. MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number INTO wa_bapiret2-message WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4. ENDLOOP. "第四步:如果有错误消息则退出 IF sy-subrc EQ 0. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = wa_bapiret2-message. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'. ENDIF. CHECK sy-subrc NE 0. "第四步:没有错误消息则执行预提交 CALL FUNCTION 'BAPI_PS_PRECOMMIT' TABLES et_return = it_bapiret2. LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'. MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number INTO wa_bapiret2-message WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4. ENDLOOP. "第五步:预提交有错误消息则执行回滚 IF sy-subrc EQ 0. "错误反馈 ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = wa_bapiret2-message. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' IMPORTING return = it_bapiret2. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'. ELSE. "第五步:预提交无错误消息则执行正式提交 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
********************************************8创建物料组件
SORT ls_input-hxm BY itemid.
LOOP AT ls_input-hxm INTO DATA(ls_hxm).
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = ls_hxm-matnr
IMPORTING
output = ls_hxm-matnr.
ls_zpspr-itemid = ls_hxm-itemid.
ls_zpspr-matnr = ls_hxm-matnr.
ls_zpspr-ekgrp = ls_hxm-ekgrp.
ls_zpspr-menge = ls_hxm-menge.
ls_zpspr-meins = ls_hxm-meins.
ls_zpspr-loekz = ls_hxm-loekz.
-
ls_zpspr-zfgtxt = ls_hxm-zfgtxt. MODIFY zpspr FROM ls_zpspr. COMMIT WORK. CLEAR: wa_bapiret2,it_bapiret2. "物料组件 wa_i_components_add-activity = '0010'. "活动编号 wa_i_components_add-mrp_relevant = '3'. "事件立即执行 wa_i_components_add-material = ls_hxm-matnr. "物料号 wa_i_components_add-entry_quantity = ls_hxm-menge. "数量 wa_i_components_add-base_uom = ls_hxm-meins. "'KG'. "基本计量单位 wa_i_components_add-price = ls_hxm-zyl-yl1. "价格20221213 wa_i_components_add-req_date = ls_hxm-zyl-yl2. "需求日期 IF ls_input-profid = 'AG00003'. wa_i_components_add-pur_group = ls_hxm-ekgrp. "采购组 wa_i_components_add-type_of_pur_resv = '5'. "采购类型 ENDIF. wa_i_components_add-item_cat = 'L'. "项目类别不传?????????????????? 固定、 APPEND wa_i_components_add TO it_i_components_add. CLEAR: wa_i_components_add. ENDLOOP. "第三步:调用函数 CALL FUNCTION 'BAPI_PS_INITIALIZATION'. CALL FUNCTION 'BAPI_NETWORK_COMP_ADD' EXPORTING number = i_number IMPORTING return = wa_bapiret2 TABLES i_components_add = it_i_components_add e_message_table = it_e_message_table. CLEAR:it_i_components_add. APPEND wa_bapiret2 TO it_bapiret2. "第四步:判断是否有错误消息 LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'. MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number INTO wa_bapiret2-message WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2 wa_bapiret2-message_v3 wa_bapiret2-message_v4. ENDLOOP. "第四步:如果有错误消息记录错误 IF sy-subrc EQ 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. LOOP AT it_e_message_table INTO wa_e_message_table WHERE message_type CA 'AE'. LOOP AT ls_input-hxm INTO DATA(ls_hxm10). IF wa_e_message_table-external_object_id CS ls_hxm10-matnr. "错误反馈 ls_output_bd-msgid = ls_input-itemid. ls_output_bd-itemid = ls_hxm10-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. "找完删后期 EXIT. ENDIF. ENDLOOP. IF lt_output_bd IS INITIAL. "错误反馈 ls_output_bd-msgid = ls_input-itemid. ls_output_bd-itemid = ls_hxm10-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CLEAR ls_output_bd. ENDIF. ENDLOOP.
-
"错误反馈
-
ls_output_bd-msgid = input-mt_xm_cgsq-msghd-msgid.
-
ls_output_bd-itemid = ls_input-itemid.
** ls_output_bd-order1 = ls_body-anln1.
-
ls_output_bd-rettxt = wa_e_message_table-message_text.
-
ls_output_bd-retid = '0'.
-
APPEND ls_output_bd TO lt_output_bd. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'.
*********************************"物料创建错误删除网络8
CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
CALL FUNCTION 'BAPI_BUS2002_DELETE'
EXPORTING
i_number = i_number
TABLES
et_return = it_bapiret2.
"第四步:判断是否有错误消息
LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'.
MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number
INTO wa_bapiret2-message
WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2
wa_bapiret2-message_v3 wa_bapiret2-message_v4.
ENDLOOP.
"第四步:如果有错误消息则退出
IF sy-subrc EQ 0.
CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
EXPORTING
i_precommit_ok = 'Y'.
ENDIF.
CHECK sy-subrc NE 0.
"第四步:没有错误消息则执行预提交
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
TABLES
et_return = it_bapiret2.
LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'.
MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number
INTO wa_bapiret2-message
WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2
wa_bapiret2-message_v3 wa_bapiret2-message_v4.
ENDLOOP.
"第五步:预提交有错误消息则执行回滚
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'.
CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS'
EXPORTING
i_precommit_ok = 'Y'.
ELSE.
"第五步:预提交无错误消息则执行正式提交
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF.
CLEAR:it_bapiret2,wa_bapiret2.
******************************************************************"删除网络。。。结束
UPDATE zpspr SET
zfkzt = ‘0’
zfgtxt = wa_bapiret2-message WHERE
msgid = ls_input-itemid AND
zflag = ls_input-zflag AND
itemid = ls_hxm-itemid.
COMMIT WORK.
ENDIF.
CHECK sy-subrc NE 0.
"第四步:没有错误消息则执行预提交
CALL FUNCTION 'BAPI_PS_PRECOMMIT'
TABLES
et_return = it_bapiret2.
LOOP AT it_bapiret2 INTO wa_bapiret2 WHERE type CA 'AE'.
MESSAGE ID wa_bapiret2-id TYPE wa_bapiret2-type NUMBER wa_bapiret2-number
INTO wa_bapiret2-message
WITH wa_bapiret2-message_v1 wa_bapiret2-message_v2
wa_bapiret2-message_v3 wa_bapiret2-message_v4.
ENDLOOP.
"第五步:预提交有错误消息则执行回滚
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
IMPORTING
-
return = it_bapiret2. CALL FUNCTION 'PS_FLAG_INIT_GLOBAL_FLAGS'. CALL FUNCTION 'PS_FLAG_SET_GLOBAL_FLAGS' EXPORTING i_precommit_ok = 'Y'. UPDATE zpspr SET zfkzt = '0' zfgtxt = wa_bapiret2-message WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag. COMMIT WORK. ELSE. "第五步:预提交无错误消息则执行正式提交 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
-
IMPORTING
-
return = wa_bapiret2. ENDIF.
8物料组件*
DATA:
"返回参数
ld_return TYPE bapireturn1,
it_e_component TYPE STANDARD TABLE OF bapi_component_exp,
wa_e_component LIKE LINE OF it_e_component.
CALL FUNCTION 'BAPI_NETWORK_GETDETAIL'
EXPORTING
number = i_number
-
i_without_network = ld_i_without_network
-
i_without_network_activity = ld_i_without_network_activity
-
i_without_relation = ld_i_without_relation
-
i_without_activity_element = ld_i_without_activity_element
-
i_without_activity_milestone = ld_i_without_activity_milestone
-
i_without_component = ld_i_without_component IMPORTING return = ld_return TABLES
-
e_network = it_e_network
-
e_activity = it_e_activity
-
e_relation = it_e_relation
-
e_message_table = it_e_message_table
-
e_activity_element = it_e_activity_element
-
e_activity_milestone = it_e_activity_milestone e_component = it_e_component . " BAPI_NETWORK_GETDETAIL LOOP AT it_e_component INTO wa_e_component . "创建完反馈 "上传item READ TABLE ls_input-hxm INTO DATA(l_hxm) INDEX sy-tabix. ls_output_bd-msgid = ls_input-itemid. "物料id不烦,他们只有wbs ls_output_bd-itemid = l_hxm-itemid. ls_output_bd-rettxt = wa_bapiret2-message. ls_output_bd-retid = '1'. ls_output_bd-yl-yl1 = wa_e_component-preq_no. ls_output_bd-yl-yl2 = wa_e_component-preq_item. ls_output_bd-yl-yl3 = wa_e_component-reserv_no. ls_output_bd-yl-yl4 = wa_e_component-res_item. APPEND ls_output_bd TO lt_output_bd. UPDATE zpspr SET aufnr = i_number banfn = wa_e_component-preq_no bnfpo = wa_e_component-preq_item rsnum = wa_e_component-reserv_no rspos = wa_e_component-res_item zfkzt = '1' zfgtxt = wa_bapiret2-message WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag AND itemid = wa_e_component-res_item. COMMIT WORK. CLEAR: l_hxm. ENDLOOP. ENDIF. ENDIF. ENDIF.
-
"只改数量20220819 IF ls_input-zflag = 'U'. LOOP AT ls_input-hxm INTO DATA(ls_hxm2). IF ls_hxm2-rsnum IS INITIAL. "错误反馈 ls_output_bd-msgid = ls_hxm2-itemid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 预留 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_hxm2-rspos IS INITIAL. "错误反馈 ls_output_bd-msgid = ls_hxm2-itemid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 预留行项目 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. "获取网络号 SELECT SINGLE aufnr INTO i_number FROM resb WHERE rsnum = ls_hxm2-rsnum AND rspos = ls_hxm2-rspos AND xloek NE 'X'. IF sy-subrc = 0. CALL FUNCTION 'BAPI_NETWORK_COMP_GETDETAIL' EXPORTING number = i_number
-
MAX_ROWS = 0
-
IMPORTING
-
RETURN = TABLES
-
I_ACTIVITY_RANGE =
-
I_COMPONENTS_ID = e_components_detail = lt_comp. IF lt_comp IS NOT INITIAL. DELETE lt_comp WHERE reserv_no NE ls_hxm2-rsnum. IF lt_comp IS NOT INITIAL. LOOP AT lt_comp INTO ls_comp WHERE res_item = ls_hxm2-rspos. ls_com_change-component = ls_comp-component. ls_com_change-entry_quantity = ls_hxm2-menge. ls_com_change-price = ls_hxm2-zyl-yl1. ls_com_change-req_date = ls_hxm2-zyl-yl2. "需求日期20230306 APPEND ls_com_change TO lt_com_change. ls_com_upd-component = ls_comp-component. ls_com_upd-entry_quantity = 'X'. ls_com_upd-price = 'X'. ls_com_upd-req_date = 'X'. APPEND ls_com_upd TO lt_com_upd. CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE' EXPORTING number = i_number
-
IMPORTING
-
RETURN = TABLES i_components_change = lt_com_change i_components_change_update = lt_com_upd e_message_table = it_e_message_table. LOOP AT it_e_message_table INTO wa_e_message_table WHERE message_type CA 'AE'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. "错误反馈 ls_output_bd-msgid = ls_hxm2-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text.. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. "反馈 ls_output_bd-msgid = ls_hxm2-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text.. ls_output_bd-retid = '1'. APPEND ls_output_bd TO lt_output_bd. ENDIF. CLEAR: ls_com_change,lt_com_change,ls_com_upd,lt_com_upd. ENDLOOP. ENDIF. ENDIF. ELSE. "错误反馈 ls_output_bd-msgid = ls_hxm2-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = '预留不存在,请检查'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. ENDIF. ENDLOOP. ENDIF.
修改结束**************************
删除**************************
IF ls_input-zflag = ‘D’.
LOOP AT ls_input-hxm INTO DATA(ls_hxm3).
IF ls_hxm3-rsnum IS INITIAL.
"错误反馈
ls_output_bd-msgid = ls_hxm3-itemid.
ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 预留 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. IF ls_hxm3-rspos IS INITIAL. "错误反馈 ls_output_bd-msgid = ls_hxm3-itemid. ls_output_bd-itemid = ls_input-itemid.
-
ls_output_bd-order1 = ls_body-anln1. ls_output_bd-rettxt = '关键字段 预留行项目 不能为空'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. CONTINUE. ENDIF. "获取网络号 SELECT SINGLE aufnr INTO i_number FROM resb WHERE rsnum = ls_hxm3-rsnum AND rspos = ls_hxm3-rspos AND xloek NE 'X'. IF sy-subrc = 0. CALL FUNCTION 'BAPI_NETWORK_COMP_GETDETAIL' EXPORTING number = i_number
-
MAX_ROWS = 0
-
IMPORTING
-
RETURN = TABLES
-
I_ACTIVITY_RANGE =
-
I_COMPONENTS_ID = e_components_detail = lt_comp. IF lt_comp IS NOT INITIAL. DELETE lt_comp WHERE reserv_no NE ls_hxm3-rsnum. IF lt_comp IS NOT INITIAL. LOOP AT lt_comp INTO ls_comp WHERE res_item = ls_hxm3-rspos. ls_comp_id-component = ls_comp-component. APPEND ls_comp_id TO lt_comp_id. CALL FUNCTION 'BAPI_NETWORK_COMP_REMOVE' EXPORTING number = i_number TABLES i_components_remove = lt_comp_id e_message_table = it_e_message_table. LOOP AT it_e_message_table INTO wa_e_message_table WHERE message_type CA 'AE'. ENDLOOP. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. "错误反馈 ls_output_bd-msgid = ls_hxm3-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text.. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. UPDATE zpspr SET zfkzt = '0' zfgtxt = wa_e_message_table-message_text WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag AND itemid = ls_hxm3-itemid.. COMMIT WORK. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. "反馈 ls_output_bd-msgid = ls_hxm3-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = wa_e_message_table-external_object_id && wa_e_message_table-message_text.. ls_output_bd-retid = '1'. APPEND ls_output_bd TO lt_output_bd. UPDATE zpspr SET zfkzt = '1' loekz = 'X' zfgtxt = wa_e_message_table-message_text WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag AND itemid = ls_hxm3-itemid.. COMMIT WORK. ENDIF. CLEAR: ls_comp_id,lt_comp_id. ENDLOOP. ENDIF. ENDIF. ELSE. "错误反馈 ls_output_bd-msgid = ls_hxm3-itemid. ls_output_bd-itemid = ls_input-itemid. ls_output_bd-rettxt = '预留不存在,请检查'. ls_output_bd-retid = '0'. APPEND ls_output_bd TO lt_output_bd. UPDATE zpspr SET zfkzt = '0' zfgtxt ='预留不存在,请检查' WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag AND itemid = ls_hxm3-itemid.. COMMIT WORK. ENDIF. ENDLOOP. ENDIF.
ENDLOOP.
"反馈头信息
ls_output_hd-msgid = input-mt_xm_cgsq-msghd-msgid.
ls_output_hd-tlgid = input-mt_xm_cgsq-msghd-tlgid.
ls_output_hd-tlgname = input-mt_xm_cgsq-msghd-tlgname.
ls_output_hd-dtsend = sy-datum && sy-uzeit.
ls_output_hd-sender = ‘ERP’.
ls_output_hd-receiver = input-mt_xm_cgsq-msghd-sender.
ls_output_hd-freeuse = i_number.ls_output-mt_un_resp-msghd = ls_output_hd.
ls_output-mt_un_resp-msgbd = lt_output_bd."调用返回接口,同时获取发送数据的xml消息id.
TRY .
CREATE OBJECT lo_output.
CALL METHOD lo_output->si_un_resp_out
EXPORTING
output = ls_output.COMMIT WORK AND WAIT. CALL FUNCTION 'ZFUN_PO_LOG' EXPORTING output1 = ls_output
-
output2 = out. . CATCH cx_ai_system_fault.
ENDTRY.
ENDMETHOD.