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' EXPORTING number = lv_number * MAX_ROWS = 0 IMPORTING return = ls_return TABLES i_activity_range = lt_activity e_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' EXPORTING number = lv_number TABLES e_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' EXPORTING number = lv_number TABLES i_components_remove = lt_remove e_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' EXPORTING wait = 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' EXPORTING number = lv_number TABLES i_components_add = lt_components e_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' EXPORTING wait = 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' EXPORTING number = lv_number IMPORTING return = ls_return TABLES i_components_change = lt_components_change i_components_change_update = lt_components_change_update e_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' EXPORTING wait = abap_true. ENDIF. "--------------------@斌将军--------------------
定期更文,欢迎关注
TRANSLATE with x English TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back 此页面的语言为英语 翻译为中文(简体)
- 中文(简体)
- 中文(繁体)
- 丹麦语
- 乌克兰语
- 乌尔都语
- 亚美尼亚语
- 俄语
- 保加利亚语
- 克罗地亚语
- 冰岛语
- 加泰罗尼亚语
- 匈牙利语
- 卡纳达语
- 印地语
- 印尼语
- 古吉拉特语
- 哈萨克语
- 土耳其语
- 威尔士语
- 孟加拉语
- 尼泊尔语
- 布尔语(南非荷兰语)
- 希伯来语
- 希腊语
- 库尔德语
- 德语
- 意大利语
- 拉脱维亚语
- 挪威语
- 捷克语
- 斯洛伐克语
- 斯洛文尼亚语
- 旁遮普语
- 日语
- 普什图语
- 毛利语
- 法语
- 波兰语
- 波斯语
- 泰卢固语
- 泰米尔语
- 泰语
- 海地克里奥尔语
- 爱沙尼亚语
- 瑞典语
- 立陶宛语
- 缅甸语
- 罗马尼亚语
- 老挝语
- 芬兰语
- 英语
- 荷兰语
- 萨摩亚语
- 葡萄牙语
- 西班牙语
- 越南语
- 阿塞拜疆语
- 阿姆哈拉语
- 阿尔巴尼亚语
- 阿拉伯语
- 韩语
- 马尔加什语
- 马拉地语
- 马拉雅拉姆语
- 马来语
- 马耳他语
- 高棉语