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 创建预留+采购申请相关推荐

  1. SAP MM 无料号采购申请单中'评估价格'之填写

    SAP MM 无料号采购申请单中'评估价格'之填写 1),SAP系统中,采购申请里的'评估价格'来源有二, a)如果是有物料号的采购,则该价格来自于物料主数据里里的成本价(移动平均价或者标准价),自动 ...

  2. SAP MM服务类采购申请里的总账科目的修改

    SAP MM服务类采购申请里的总账科目的修改 服务类的采购申请,与其它有形物品的采购申请,有很多不同的地方. D项目中,业务人员报了一个问题,说是某服务采购申请中总账科目输入错误,但是使用ME52N试 ...

  3. 【MM小贴士】SAP采购订单创建参考采购申请的强控

    [业务背景] SAP里面的采购订单可以依据采购申请.合同.计划协议等信息进行创建,当然也可以自行创建.这就有一个选择,就是采购订单是否必须要有依据,这个是根据企业的实际情况来进行的. 这个小贴士,记录 ...

  4. SAP PS 创建WBS 报错 CJ026 WBS XXX 版本released 已存在

    SAP PS 在用bapi:BAPI_PROJECT_MAINTAIN 创建WBS时 报错 WBS XXX 版本 released 已存在 如图: 经查阅发现,报错的 WBS元素之前是创建过的,但是被 ...

  5. SAP可以创建预留的移动类型

    我们知道使用MB21创建预留时,有个搜索帮助仅能从中选择,不在范围内的移动类型是不能够创建的,比如说101.313是不能再MB21创建的 允许创建预留的移动类型的2个条件 1.OMJJ移动类型配置,移 ...

  6. SAP MM批量删除采购申请、采购订单

    采购订单:事务码MEMASSPO 采购申请:ME57(好像一次最多批量删除50个,需要测试一下) 以上纯属个人笔记,只供参考!如有侵权请联系本人删除哈!如果有用帮忙点个赞,感谢!

  7. SAP批量创建物料采购信息记录的阶梯价格

    使用说明 1. 输入事务代码ZME1X运行后,先点击下载模板,保存上传数据模板到本地. 2. 模板中目前所填写的数据导入必须要录入的,除阶梯价格外,目前阶梯价格只设置了五个阶梯,如需要增加请告知.如果 ...

  8. SAP实施项目中采购员在非生产性采购申请审批流中的角色安排

    SAP实施项目中采购员在非生产性采购申请审批流中的角色安排 所谓非生产性物料,也叫间接物料,也有些企业称之为MRO物料.它主要包括而不限于如下物料:办公用品,劳保用品,备品备件,服务,固定资产等等.这 ...

  9. SAP License:关于MRP产生的采购申请检查、与采购部的衔接处理

    一般来说,由于主数据设置不见得非常合理和准确,MRP运行出来的采购申请,往往需要MRP控制者(真正的员工,不是系统概念)去进行检查和干预,确保数量.日期等内容的正确.而这种采购申请一般来说是不需要进行 ...

  10. CO40/CO41转生产订单下达时不能创建采购申请

    一.配置 CO01创建生产订单,创建时生成采购申请,改为下达时创建采购申请.通过配置,将预留/采购申请 更改为2即可. 但是CO41和CO40通过配置,并不能达到更改预留/采购申请 为2. 二.调试源 ...

最新文章

  1. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
  2. 物理哲学和生物哲学的对抗
  3. jsonp解决跨域问题
  4. arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”
  5. kotlin 扩展类的功能_Kotlin程序| 扩展功能功能
  6. python怎么做软件界面_python – 如何自定义桌面应用程序的标题栏和窗口
  7. mysql跳脱字符 单引号_MYSQL特殊字符(单引号,行尾斜杠)的处理
  8. 钢结构计算机模拟拼装,钢结构技术-钢结构虚拟预拼装技术
  9. linux内存查看命令
  10. 4 基于pyecharts的python数据可视化——散点图和折线图的绘制
  11. 校验社会统一信用代码JAVA
  12. P1427 小鱼的数字游戏——栈的初次会面
  13. 油猴Tampermonkey安装使用教程
  14. Bugku MISC 再也没有纯白的灵魂
  15. html鼠标悬浮更换图片,Vue.js鼠标悬浮更换图片功能
  16. 图像特征之傅里叶描述子
  17. 法拉科机器人接头_图解FANUC机器人I/O信号板接口定义与拆装
  18. 托攻击的多种攻击方式-----WZW托攻击学习日记(五)
  19. 聚合数据api的使用
  20. linux开机自动执行命令

热门文章

  1. Web与小程序AR技术原理
  2. Vue.js---关闭语法检查
  3. C++程序设计技巧 NVI(Non-Virtual Interface )
  4. 每天多抽出一分钟看书,让你的什么更加精彩。1111节当当购书码
  5. 以艺术教育培养大学生艺术素质
  6. 常用的正则表达式,复制粘贴,正则就这么简单
  7. 求关系模式的候选码的方法
  8. 插入馈电的微带贴片天线
  9. gdal+python计算NDVI
  10. 卡农c语言编程,c调卡农钢琴曲谱_卡农C大调钢琴谱(五线谱)