使用BAPI_NETWORK_COMP_*实现生产订单组件的增删改查

news/2025/1/31 13:53:01/

1、文档说明

对于生产订单组件的增删改有多种办法,比较常用的有使用内部函数CO_XT_COMPONENT_*,有改造BAPI_ALM_ORDER_MAINTAIN来实现,各有千秋。

本文档介绍,通过PS的BAPI_NETWORK_COMP_*系列BAPI,来实现常见的组件先删后建的覆盖式操作,组件部分字段修改,组件信息查询等功能

2、BAPI用法

2.1、组件列表查询

查询组件基本数据

"--------------------@斌将军--------------------
DATA:lv_number          TYPE bapi_network_list-network,ls_return          TYPE bapiret2,lt_activity        TYPE TABLE OF bapi_network_comp_act_rng,lt_components_list TYPE TABLE OF bapi_network_comp_list.lv_number = '000001001211'."工单号CALL FUNCTION 'BAPI_NETWORK_COMP_GETLIST'EXPORTINGnumber            = lv_number
*   MAX_ROWS          = 0IMPORTINGreturn            = ls_returnTABLESi_activity_range  = lt_activitye_components_list = lt_components_list.
"--------------------@斌将军--------------------

2.2、组件列表详细信息查询

查询组件详细的数据

"--------------------@斌将军--------------------
DATA:lv_number TYPE bapi_network_list-network,lt_detail TYPE TABLE OF bapi_network_comp_detail.lv_number = '000001001211'."工单号CALL FUNCTION 'BAPI_NETWORK_COMP_GETDETAIL'EXPORTINGnumber              = lv_numberTABLESe_components_detail = lt_detail.
"--------------------@斌将军--------------------

2.3、组件删除

移除组件

"--------------------@斌将军--------------------
DATA:lv_number TYPE bapi_network_list-network,lt_remove  TYPE TABLE OF bapi_network_comp_id,ls_remove  TYPE bapi_network_comp_id,lt_message TYPE TABLE OF bapi_meth_message,ls_message TYPE bapi_meth_message.DATA:lv_check   TYPE char1,lv_message TYPE char255."此处使用查询BAPI得到的组件列表,赋值给移除内表
LOOP AT lt_detail INTO ls_detail.CLEAR ls_remove.ls_remove-component = ls_detail-component.APPEND ls_remove TO lt_remove.
ENDLOOP.lv_number = '000001001211'."工单号CALL FUNCTION 'BAPI_NETWORK_COMP_REMOVE'EXPORTINGnumber              = lv_numberTABLESi_components_remove = lt_removee_message_table     = lt_message.LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.lv_check = 'E'.lv_message = lv_message && ls_message-message_text.
ENDLOOP.IF lv_check = 'E'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = abap_true.
ENDIF.
"--------------------@斌将军--------------------

2.4、组件新增

新增组件

"--------------------@斌将军--------------------
DATA:lv_number     TYPE bapi_network_list-network,lt_components TYPE TABLE OF bapi_network_comp_add,ls_components TYPE bapi_network_comp_add,lt_message    TYPE TABLE OF bapi_meth_message,ls_message    TYPE bapi_meth_message.DATA:lv_check   TYPE char1,lv_message TYPE char255.lv_number = '000001001211'."工单号ls_components-item_number = '0030'."项目编号
ls_components-activity = '0010'."必输 作业
ls_components-material = '000000000003000135'."物料
ls_components-plant = 'P010'."工厂
ls_components-type_of_pur_resv = 'F'."beskz."必输 采购类型
ls_components-entry_quantity = 1."数量
ls_components-base_uom = 'KG'."单位
ls_components-backflush = 'X'."反冲
*ls_components-batch = ''."批次
ls_components-item_cat = 'L'."项目类别
APPEND ls_components TO lt_components.CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'EXPORTINGnumber           = lv_numberTABLESi_components_add = lt_componentse_message_table  = lt_message.LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.lv_check = 'E'.lv_message = lv_message && ls_message-message_text.
ENDLOOP.IF lv_check = 'E'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = abap_true.
ENDIF.
"--------------------@斌将军--------------------

2.5、组件修改

修改组件的数量和反冲标识。

其中修改工序时,同时修改反冲标识会不起作用,这个需要注意

"--------------------@斌将军--------------------
DATA:lv_number                   TYPE bapi_network_list-network,ls_return                   TYPE bapiret2,lt_components_change        TYPE TABLE OF bapi_network_comp_change,ls_components_change        TYPE bapi_network_comp_change,lt_components_change_update TYPE TABLE OF bapi_network_comp_cng_upd,ls_components_change_update TYPE bapi_network_comp_cng_upd,lt_message                  TYPE TABLE OF bapi_meth_message,ls_message                  TYPE bapi_meth_message.DATA:lv_check   TYPE char1,lv_message TYPE char255.lv_number = '000001001211'."工单号CLEAR:ls_components_change.
ls_components_change-component = '00000039290006'."BAPI获取到的组件唯一标识
*ls_components_change-activity = '0020'."工序
ls_components_change-entry_quantity = 2."数量
ls_components_change-backflush = ''."反冲
APPEND ls_components_change TO lt_components_change.CLEAR:ls_components_change_update.
ls_components_change_update-component = '00000039290006'.
*ls_components_change_update-activity = 'X'.
ls_components_change_update-entry_quantity = 'X'.
ls_components_change_update-backflush = 'X'.
APPEND ls_components_change_update TO lt_components_change_update.CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE'EXPORTINGnumber                     = lv_numberIMPORTINGreturn                     = ls_returnTABLESi_components_change        = lt_components_changei_components_change_update = lt_components_change_updatee_message_table            = lt_message.LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.lv_check = 'E'.lv_message = lv_message && ls_message-message_text.
ENDLOOP.IF lv_check = 'E'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = abap_true.
ENDIF.
"--------------------@斌将军--------------------

定期更文,欢迎关注


http://www.ppmy.cn/news/1143976.html

相关文章

SpringBoot-黑马程序员-学习笔记(二)

22.读取yaml文件中的属性 3个步骤: 1.写yaml文件 2.在控制类里面定义变量 3.在变量上面用 " Value注解 ${} " 获取yaml文件的属性 代码演示: yaml文件 控制类: 访问网址books后: 读取到了对应了值 23.yaml文件中…

【window10】Dart+Android Studio+Flutter安装及运行

安装Dart SDK安装Android Studio安装Flutter在Android Studio中创建并运行Flutter项目 安装前,请配置好你的jdk环境,准备好你的梯子~ 安装Dart SDK 浅浅了解一下Dart: Dart 诞生于2011年,是由谷歌开发的一种强类型、跨平台的客户…

苍穹外卖项目

1. 苍穹外卖项目介绍 1.1 项目介绍 定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品 项目架构:体现项目中的业务功能模块 1.2 产品原型 产品原型:用于展示项目的业务功能,一般由产品经理进行设计 …

javaee SpringMVC 乱码问题解决

方法一 在web.xml文件中注册过滤器 <!-- 注册过滤器 设置编码 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param&…

php实战案例记录(21)sprintf函数

在PHP中&#xff0c;sprintf()函数用于格式化字符串并返回一个字符串。它可以根据指定的格式对参数进行格式化&#xff0c;并将结果存储在一个字符串中。 sprintf()函数的语法如下&#xff1a; sprintf(format, var1, var2, ...)其中&#xff0c;format是一个包含格式说明符的…

计算机竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍&#xff1a;3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…

TensorFlow案例学习:对服装图像进行分类

前言 官方为我们提供了一个 对服装图像进行分类 的案例&#xff0c;方便我们快速学习 学习 预处理数据 案例中有下面这段代码 # 预处理数据&#xff0c;检查训练集中的第一个图像可以看到像素值处于0~255之间 plt.figure() # 创建图像窗口 plt.imshow(train_images[0]) # …

JS实现防抖(Debounce)和节流(Throttle)

防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是用于限制函数调用频率的两种常用技术&#xff0c;可以帮助你控制事件处理函数的执行次数。下面分别是防抖和节流函数的实现示例。 防抖函数&#xff08;Debounce&#xff09; 防抖函数意味着当…