一、新增组件BAPI

"-----------------------------------------@斌将军-------------------------------------------- 
DATA:lv_number LIKE bapi_network_list-network,
lv_return LIKE bapiret2,
lt_components TYPE TABLE OF bapi_network_comp_add,
ls_components TYPE bapi_network_comp_add,
lt_message_table TYPE TABLE OF bapi_meth_message WITH HEADER LINE,
ls_message_table TYPE bapi_meth_message,
lt_activity TYPE TABLE OF bapi_network_comp_act_rng WITH HEADER LINE,
lt_components_list TYPE TABLE OF bapi_network_comp_list WITH HEADER LINE,
lt_components_id TYPE TABLE OF bapi_network_comp_id WITH HEADER LINE,
lt_components_detail TYPE TABLE OF bapi_network_comp_detail,
ls_components_detail TYPE bapi_network_comp_detail,
lt_components_remove TYPE TABLE OF bapi_network_comp_id WITH HEADER LINE,
lt_components_change TYPE TABLE OF bapi_network_comp_change WITH HEADER LINE,
lt_components_change_update TYPE TABLE OF bapi_network_comp_cng_upd WITH HEADER LINE. CALL FUNCTION 'BAPI_PS_INITIALIZATION'. "------------------------ADD----------------------------
LOOP AT lt_zin INTO ls_in.
lv_number = ls_in-aufnr."网络编号 CLEAR:ls_components.
ls_components-activity = ls_in-vornr."活动编号
ls_components-material = ls_in-matnr."物料编码
ls_components-plant = ls_in-werks."工厂
ls_components-entry_quantity = ls_in-bdmng."需求数量
* ls_components-base_uom = ls_in-VORNR."工厂
ls_components-req_date = ls_in-bdter."需求日期
ls_components-cost_relevant = 'X'."与成本核算相关标识 ls_components-item_cat = 'L'."项目类别
CASE ls_in-zqdlx.
WHEN 'G1'.
ls_components-type_of_pur_resv = '7'."生成WBS元素的初步采购需求
WHEN 'G2'.
READ TABLE lt_marc INTO DATA(ls_marc) WITH KEY matnr = ls_in-matnr werks = ls_in-werks.
IF ls_marc-sbdkz = '' OR ls_marc-sbdkz = '1'.
ls_components-type_of_pur_resv = '8'."生成WBS预留
ELSEIF ls_marc-sbdkz = '2'.
ls_components-type_of_pur_resv = '3'."生成网络预留
ENDIF.
WHEN 'G3'.
ls_components-type_of_pur_resv = '1'."网络的采购需求
ls_components-item_cat = 'N'."项目类别
WHEN OTHERS.
ENDCASE. ls_components-mrp_relevant = '3'."预留相关性/生成采购申请(立即)
ls_components-item_text = ls_in-zbz."长文本
APPEND ls_components TO lt_components. MOVE-CORRESPONDING ls_in TO ls_out.
APPEND ls_out TO lt_zout.
ENDLOOP. CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'
EXPORTING
number = lv_number
IMPORTING
return = lv_return
TABLES
i_components_add = lt_components
e_message_table = lt_message_table.
"-----------------------------------------@斌将军--------------------------------------------

二、获取组件列表

"-----------------------------------------@斌将军--------------------------------------------    
lv_number = ls_in-aufnr. CLEAR:lt_components_list[],lv_return.
CALL FUNCTION 'BAPI_NETWORK_COMP_GETLIST'
EXPORTING
number = lv_number
* MAX_ROWS = 0
IMPORTING
return = lv_return
TABLES
i_activity_range = lt_activity
e_components_list = lt_components_list.
"-----------------------------------------@斌将军--------------------------------------------

三、获取组件详细信息

"-----------------------------------------@斌将军--------------------------------------------   
lv_number = ls_in-aufnr.
"获取详细信息
CLEAR:lv_return,lt_components_detail[].
CALL FUNCTION 'BAPI_NETWORK_COMP_GETDETAIL'
EXPORTING
number = lv_number
* MAX_ROWS = 0
IMPORTING
return = lv_return
TABLES
i_activity_range = lt_activity
i_components_id = lt_components_id
e_components_detail = lt_components_detail.
"-----------------------------------------@斌将军--------------------------------------------

四、修改组件信息

"-----------------------------------------@斌将军--------------------------------------------
"修改组件数量
CALL FUNCTION 'BAPI_PS_INITIALIZATION'. lt_components_change-component = ls_list-component."详细信息BAPI获取到的组件唯一标识
lt_components_change-entry_quantity = lv_syxqsl.
lt_components_change-item_text = ls_in-zbz.
APPEND lt_components_change. lt_components_change_update-component = ls_list-component.
lt_components_change_update-entry_quantity = 'X'.
lt_components_change_update-item_text = 'X'.
APPEND lt_components_change_update. IF lt_components_change[] IS NOT INITIAL.
CLEAR:lv_return,lt_message_table[].
CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE'
EXPORTING
number = lv_number
IMPORTING
return = lv_return
TABLES
i_components_change = lt_components_change
i_components_change_update = lt_components_change_update
e_message_table = lt_message_table. CLEAR:lv_message.
LOOP AT lt_message_table WHERE message_type CA 'EAX'.
lv_check = 'E'.
lv_message = lv_message && lt_message_table-message_text.
ENDLOOP.
ENDIF.
"-----------------------------------------@斌将军--------------------------------------------

五、移除组件

"-----------------------------------------@斌将军--------------------------------------------
lt_components_remove-component = ls_list-component."添加到移除内表
APPEND lt_components_remove. IF lt_components_remove[] IS NOT INITIAL.
CLEAR:lv_return,lt_message_table[].
CALL FUNCTION 'BAPI_NETWORK_COMP_REMOVE'
EXPORTING
number = lv_number
IMPORTING
return = lv_return
TABLES
i_components_remove = lt_components_remove
e_message_table = lt_message_table.
ENDIF.
"-----------------------------------------@斌将军--------------------------------------------

六、同时提交修改和移除BAPI,删除采购申请失败

业务场景中需要保证修改和移除操作同时成功和失败,需要同时COMMIT提交,这就会导致一下情况:

1.先修改后移除,COMMIT,修改成功,移除成功,删除组件对应的采购申请失败

2.先移除后修改,COMMIT,修改失败,移除成功,删除组件对应的采购申请成功

综合考虑,采用第一种方式,对于删除采购申请失败,则调用同步程序RLORD035,同步删除采购申请。

因为该程序修改会弹出文本界面,在接口中会导致接口中断,所以复制为ZRLORD035,将WRITE的文本全部注释,测试满足需求。

"-----------------------------------------@斌将军--------------------------------------------
REFRESH:s_banfn.
LOOP AT lt_eban.
s_banfn-sign = 'I'.
s_banfn-option = 'EQ'.
s_banfn-low = lt_eban-banfn.
APPEND s_banfn.
ENDLOOP. SUBMIT zrlord035"调用采购申请不符项,将删除数据同步到采购申请,这样采购申请就会被打上删除标识
WITH p_reqs IN s_banfn
WITH sim = ''
WITH set_del = 'X'
AND RETURN.
"-----------------------------------------@斌将军--------------------------------------------

定期更文,欢迎关注

 
 
 
此页面的语言为英语
 
翻译为中文(简体)
 
 
 
 
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 
随时将英语翻译为中文(简体)PRO
一律不翻译英语
一律不翻译i.cnblogs.com

PS组件相关BAPI的更多相关文章

  1. 【目录】Newlife XCode组件相关文章目录

    本博客所有文章分类的总目录链接:本博客博文总目录-实时更新  1.Newlife XCode组件相关文章目录  1.Newlife XCode组件资源目录汇总[2013年版]    2.Newlife ...

  2. SpringCloud组件相关

    一.前言 原文地址:https://mp.weixin.qq.com/s/mwn2X0G9UgUDz1sgGgL1mA 认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但 ...

  3. HubbleDotNet开源全文搜索组件相关资源

    系统简介 HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使 ...

  4. react中受控组件相关的warning

    在表单中,报如下的错,意思是非受控的输入框变成了受控的,报错信息如下 Warning: A component is changing an uncontrolled input of type te ...

  5. VUE组件相关总结!

    定义使用一个组件 <!doctype html> <html lang="en"> <head> <meta charset=" ...

  6. TR-银行主数据相关BAPI

    BAPI_BANKDETAIL_CREATE FI01:BAPI_BANK_CREATE FI12:BAPI_HOUSE_BANK_REPLICATE 1011 Business Object Ban ...

  7. Rigidbody组件及相关API

    Rigidbody:刚体组件,物理类.(与Rigidbody组件相关的代码尽量都写在FixedUpdate()方法中,如果写在Update()中有可能会卡顿) 属性:Mass:质量.         ...

  8. 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

    前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ..... ...

  9. 业务对象和BAPI

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. 关于vue组件的一个小结

    用vue进行开发到目前为止也有将近一年的时间了,在项目技术选型的时候隔壁组选 react的时候我们坚持使用vue作为前端的开发框架.虽然两者思想上的差异不大,但是vue的语法在代码的可读性以及后期的维 ...

随机推荐

  1. Golang中如何自定义时间类型进行xml、json的序列化/反序列化

    在日常开发工作中,我们进行会遇到将 struct 序列化 json字符串以及将 json字符串 反序列化为 struct 的场景,大家也对此十分熟悉. 最近工作中,遇到了需要将 struct 序列化 ...

  2. eclipse的问题

    在我使用eclipse的时候出现的一个问题 就是因为汉化之后出现的问题 问题的解决办法 点击帮助 关于 安装细节 选中Babel Language Pack for rt.rap in Chinese ...

  3. MybatisPlus入门到进阶

    1.创建一个SpringBoot项目 2.导入相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  4. Educational Codeforces Round 160 (Rated for Div. 2) 题解A~D

    Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 纯暴力,分割字符串,如果n1<n2就输出,如果遍历完 ...

  5. C#如何对List中的Object进行排序

    首先定义一个List类,这个类里面包含了Name和Total两个属性变量,下面就是针对这两个变量进行排序. public class Player { public string Name { get ...

  6. JS的对象

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. 从零玩转Websocket实时通讯服务之前后端分离版本-websocket

    title: 从零玩转Websocket实时通讯服务之前后端分离版本 date: 2021-10-25 00:47:12.945 updated: 2021-12-26 17:43:10.496 ur ...

  8. linux中iptables防火墙相关命令

    https://www.cnblogs.com/seven1979/p/4173927.html https://blog.csdn.net/shenjianxz/article/details/62 ...

  9. windows 和 Linux 下 git status 结果不一致

    解决该问题 运行一下命令即可 git config core.autocrlf true 解释 git config core.autocrlf true 这个命令是在任何支持的操作系统上都可以运行的 ...

  10. 简单介绍JDK、JRE、JVM三者区别

    简单介绍JDK vs JRE vs JVM三者区别 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习, ...