SAP PS 创建预留+采购申请
SPAN {
font-family: “隶书”;
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
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.
"写自建表
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.
* ls_zpspr-zfkzt = ls_input-zfkzt.
* ls_zpspr-banfn = ls_input-banfn.
* ls_zpspr-bnfpo = ls_input-bnfpo.
* ls_zpspr-rsnum = ls_input-rsnum.
* ls_zpspr-rspos = ls_input-rspos.
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-control_key = ‘LG01’. "控制码-内协(ZPS1)和成本(ZPS3)
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-calculation_key = 0. "用于计算的码
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.
* WRITE:/ ‘创建时报错:’,wa_bapiret2-message.
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.
* WRITE:/ ‘预提交时报错:’,wa_bapiret2-message.
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物料组件****
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.
* UPDATE zpspr SET matnr = ls_hxm-matnr ekgrp = ls_hxm-ekgrp menge = ls_hxm-menge meins = ls_hxm-meins loekz = ls_hxm-loekz
* WHERE msgid = ls_input-itemid AND zflag = ls_input-zflag AND itemid = ls_hxm-itemid .
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’. "基本计量单位
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-req_date = ‘20220830’."需求日期
* wa_i_components_add-item_text = ‘测试bapi物料挂载’. "项目文本行
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 ‘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 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.
* WRITE:/ ‘预提交时报错:’,wa_bapiret2-message.
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 .
"创建完反馈
ls_output_bd-itemid = ls_hxm-itemid.
* ls_output_bd-itemid = wa_e_component-preq_no.
* ls_output_bd-order1 = wa_e_component-preq_item.
* ls_output_bd-msgid = wa_e_component-reserv_no.
* ls_output_bd-tlgid = wa_e_component-res_item.
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.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
* IF ls_input-zflag = ‘D’.
* DATA:
* is_network_exist TYPE bapi_network_list-network,
* it_bapireturn1 TYPE STANDARD TABLE OF bapireturn1,
* wa_bapireturn1 TYPE bapireturn1.
* is_network_exist = ‘722000000015’. "网络删除只要网络号
* CALL FUNCTION ‘BAPI_NETWORK_EXISTENCECHECK’
* EXPORTING
* number = is_network_exist
* IMPORTING
* return = wa_bapireturn1.
* IF wa_bapireturn1-type = ‘E’.
* WRITE:/ ‘网络不存在:’,is_network_exist.
* ENDIF.
* CALL FUNCTION ‘BAPI_PS_INITIALIZATION’.
* CALL FUNCTION ‘BAPI_BUS2002_DELETE’
* EXPORTING
* i_number = is_network_exist
* TABLES
* et_return = it_bapiret2
** EXTENSIONIN =
** EXTENSIONOUT =
* .
* "第四步:判断是否有错误消息
* 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.
** WRITE:/ ‘创建时报错:’,wa_bapiret2-message.
* 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.
** WRITE:/ ‘预提交时报错:’,wa_bapiret2-message.
* 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’.
* ELSE.
* "第五步:预提交无错误消息则执行正式提交
* CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
* EXPORTING
* wait = ‘X’
* IMPORTING
* return = wa_bapiret2.
** WRITE:/ ‘网络删除成功:’,wa_bapiret2-message.
* 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 = 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_hxm2-rspos 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.
"获取网络号
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.
APPEND ls_com_change TO lt_com_change.
ls_com_upd-component = ls_comp-component.
ls_com_upd-entry_quantity = ‘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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm2-itemid.
ls_output_bd-rettxt = 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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm2-itemid.
ls_output_bd-rettxt = 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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm2-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 = 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_hxm3-rspos 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.
"获取网络号
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
* IMPORTING
* RETURN =
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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm3-itemid.
ls_output_bd-rettxt = 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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm3-itemid.
ls_output_bd-rettxt = 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 = input-mt_xm_cgsq-msghd-msgid.
ls_output_bd-itemid = ls_hxm3-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.
SAP PS 创建预留+采购申请相关推荐
- SAP MM 无料号采购申请单中'评估价格'之填写
SAP MM 无料号采购申请单中'评估价格'之填写 1),SAP系统中,采购申请里的'评估价格'来源有二, a)如果是有物料号的采购,则该价格来自于物料主数据里里的成本价(移动平均价或者标准价),自动 ...
- SAP MM服务类采购申请里的总账科目的修改
SAP MM服务类采购申请里的总账科目的修改 服务类的采购申请,与其它有形物品的采购申请,有很多不同的地方. D项目中,业务人员报了一个问题,说是某服务采购申请中总账科目输入错误,但是使用ME52N试 ...
- 【MM小贴士】SAP采购订单创建参考采购申请的强控
[业务背景] SAP里面的采购订单可以依据采购申请.合同.计划协议等信息进行创建,当然也可以自行创建.这就有一个选择,就是采购订单是否必须要有依据,这个是根据企业的实际情况来进行的. 这个小贴士,记录 ...
- SAP PS 创建WBS 报错 CJ026 WBS XXX 版本released 已存在
SAP PS 在用bapi:BAPI_PROJECT_MAINTAIN 创建WBS时 报错 WBS XXX 版本 released 已存在 如图: 经查阅发现,报错的 WBS元素之前是创建过的,但是被 ...
- SAP可以创建预留的移动类型
我们知道使用MB21创建预留时,有个搜索帮助仅能从中选择,不在范围内的移动类型是不能够创建的,比如说101.313是不能再MB21创建的 允许创建预留的移动类型的2个条件 1.OMJJ移动类型配置,移 ...
- SAP MM批量删除采购申请、采购订单
采购订单:事务码MEMASSPO 采购申请:ME57(好像一次最多批量删除50个,需要测试一下) 以上纯属个人笔记,只供参考!如有侵权请联系本人删除哈!如果有用帮忙点个赞,感谢!
- SAP批量创建物料采购信息记录的阶梯价格
使用说明 1. 输入事务代码ZME1X运行后,先点击下载模板,保存上传数据模板到本地. 2. 模板中目前所填写的数据导入必须要录入的,除阶梯价格外,目前阶梯价格只设置了五个阶梯,如需要增加请告知.如果 ...
- SAP实施项目中采购员在非生产性采购申请审批流中的角色安排
SAP实施项目中采购员在非生产性采购申请审批流中的角色安排 所谓非生产性物料,也叫间接物料,也有些企业称之为MRO物料.它主要包括而不限于如下物料:办公用品,劳保用品,备品备件,服务,固定资产等等.这 ...
- SAP License:关于MRP产生的采购申请检查、与采购部的衔接处理
一般来说,由于主数据设置不见得非常合理和准确,MRP运行出来的采购申请,往往需要MRP控制者(真正的员工,不是系统概念)去进行检查和干预,确保数量.日期等内容的正确.而这种采购申请一般来说是不需要进行 ...
- CO40/CO41转生产订单下达时不能创建采购申请
一.配置 CO01创建生产订单,创建时生成采购申请,改为下达时创建采购申请.通过配置,将预留/采购申请 更改为2即可. 但是CO41和CO40通过配置,并不能达到更改预留/采购申请 为2. 二.调试源 ...
最新文章
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
- 物理哲学和生物哲学的对抗
- jsonp解决跨域问题
- arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”
- kotlin 扩展类的功能_Kotlin程序| 扩展功能功能
- python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口
- mysql跳脱字符 单引号_MYSQL特殊字符(单引号,行尾斜杠)的处理
- 钢结构计算机模拟拼装,钢结构技术-钢结构虚拟预拼装技术
- linux内存查看命令
- 4 基于pyecharts的python数据可视化——散点图和折线图的绘制
- 校验社会统一信用代码JAVA
- P1427 小鱼的数字游戏——栈的初次会面
- 油猴Tampermonkey安装使用教程
- Bugku MISC 再也没有纯白的灵魂
- html鼠标悬浮更换图片,Vue.js鼠标悬浮更换图片功能
- 图像特征之傅里叶描述子
- 法拉科机器人接头_图解FANUC机器人I/O信号板接口定义与拆装
- 托攻击的多种攻击方式-----WZW托攻击学习日记(五)
- 聚合数据api的使用
- linux开机自动执行命令