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


    1、文档说明

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

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

    2、BAPI用法

    2.1、组件列表查询

    查询组件基本数据

    1. "--------------------@斌将军--------------------
    2. DATA:lv_number TYPE bapi_network_list-network,
    3. ls_return TYPE bapiret2,
    4. lt_activity TYPE TABLE OF bapi_network_comp_act_rng,
    5. lt_components_list TYPE TABLE OF bapi_network_comp_list.
    6. lv_number = '000001001211'."工单号
    7. CALL FUNCTION 'BAPI_NETWORK_COMP_GETLIST'
    8. EXPORTING
    9. number = lv_number
    10. * MAX_ROWS = 0
    11. IMPORTING
    12. return = ls_return
    13. TABLES
    14. i_activity_range = lt_activity
    15. e_components_list = lt_components_list.
    16. "--------------------@斌将军--------------------

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

    查询组件详细的数据

    1. "--------------------@斌将军--------------------
    2. DATA:lv_number TYPE bapi_network_list-network,
    3. lt_detail TYPE TABLE OF bapi_network_comp_detail.
    4. lv_number = '000001001211'."工单号
    5. CALL FUNCTION 'BAPI_NETWORK_COMP_GETDETAIL'
    6. EXPORTING
    7. number = lv_number
    8. TABLES
    9. e_components_detail = lt_detail.
    10. "--------------------@斌将军--------------------

    2.3、组件删除

    移除组件

    1. "--------------------@斌将军--------------------
    2. DATA:lv_number TYPE bapi_network_list-network,
    3. lt_remove TYPE TABLE OF bapi_network_comp_id,
    4. ls_remove TYPE bapi_network_comp_id,
    5. lt_message TYPE TABLE OF bapi_meth_message,
    6. ls_message TYPE bapi_meth_message.
    7. DATA:lv_check TYPE char1,
    8. lv_message TYPE char255.
    9. "此处使用查询BAPI得到的组件列表,赋值给移除内表
    10. LOOP AT lt_detail INTO ls_detail.
    11. CLEAR ls_remove.
    12. ls_remove-component = ls_detail-component.
    13. APPEND ls_remove TO lt_remove.
    14. ENDLOOP.
    15. lv_number = '000001001211'."工单号
    16. CALL FUNCTION 'BAPI_NETWORK_COMP_REMOVE'
    17. EXPORTING
    18. number = lv_number
    19. TABLES
    20. i_components_remove = lt_remove
    21. e_message_table = lt_message.
    22. LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.
    23. lv_check = 'E'.
    24. lv_message = lv_message && ls_message-message_text.
    25. ENDLOOP.
    26. IF lv_check = 'E'.
    27. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    28. ELSE.
    29. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    30. EXPORTING
    31. wait = abap_true.
    32. ENDIF.
    33. "--------------------@斌将军--------------------

    2.4、组件新增

    新增组件,LCNIF_MATF27做移动类型增强

     参考代码

    1. "--------------------@斌将军--------------------
    2. DATA:lv_number TYPE bapi_network_list-network,
    3. lt_components TYPE TABLE OF bapi_network_comp_add,
    4. ls_components TYPE bapi_network_comp_add,
    5. lt_message TYPE TABLE OF bapi_meth_message,
    6. ls_message TYPE bapi_meth_message.
    7. DATA:lv_check TYPE char1,
    8. lv_message TYPE char255.
    9. lv_number = '000001001211'."工单号
    10. ls_components-item_number = '0030'."项目编号
    11. ls_components-activity = '0010'."必输 作业
    12. ls_components-material = '000000000003000135'."物料
    13. ls_components-plant = 'P010'."工厂
    14. ls_components-type_of_pur_resv = 'F'."beskz."必输 采购类型
    15. ls_components-entry_quantity = 1."数量
    16. ls_components-base_uom = 'KG'."单位
    17. ls_components-backflush = 'X'."反冲
    18. *ls_components-batch = ''."批次
    19. ls_components-item_cat = 'L'."项目类别
    20. APPEND ls_components TO lt_components.
    21. CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    22. CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'
    23. EXPORTING
    24. number = lv_number
    25. TABLES
    26. i_components_add = lt_components
    27. e_message_table = lt_message.
    28. LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.
    29. lv_check = 'E'.
    30. lv_message = lv_message && ls_message-message_text.
    31. ENDLOOP.
    32. IF lv_check = 'E'.
    33. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    34. ELSE.
    35. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    36. EXPORTING
    37. wait = abap_true.
    38. ENDIF.
    39. "--------------------@斌将军--------------------

    2.5、组件修改

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

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

    1. "--------------------@斌将军--------------------
    2. DATA:lv_number TYPE bapi_network_list-network,
    3. ls_return TYPE bapiret2,
    4. lt_components_change TYPE TABLE OF bapi_network_comp_change,
    5. ls_components_change TYPE bapi_network_comp_change,
    6. lt_components_change_update TYPE TABLE OF bapi_network_comp_cng_upd,
    7. ls_components_change_update TYPE bapi_network_comp_cng_upd,
    8. lt_message TYPE TABLE OF bapi_meth_message,
    9. ls_message TYPE bapi_meth_message.
    10. DATA:lv_check TYPE char1,
    11. lv_message TYPE char255.
    12. lv_number = '000001001211'."工单号
    13. CLEAR:ls_components_change.
    14. ls_components_change-component = '00000039290006'."BAPI获取到的组件唯一标识
    15. *ls_components_change-activity = '0020'."工序
    16. ls_components_change-entry_quantity = 2."数量
    17. ls_components_change-backflush = ''."反冲
    18. APPEND ls_components_change TO lt_components_change.
    19. CLEAR:ls_components_change_update.
    20. ls_components_change_update-component = '00000039290006'.
    21. *ls_components_change_update-activity = 'X'.
    22. ls_components_change_update-entry_quantity = 'X'.
    23. ls_components_change_update-backflush = 'X'.
    24. APPEND ls_components_change_update TO lt_components_change_update.
    25. CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
    26. CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE'
    27. EXPORTING
    28. number = lv_number
    29. IMPORTING
    30. return = ls_return
    31. TABLES
    32. i_components_change = lt_components_change
    33. i_components_change_update = lt_components_change_update
    34. e_message_table = lt_message.
    35. LOOP AT lt_message INTO ls_message WHERE message_type CA 'AEX'.
    36. lv_check = 'E'.
    37. lv_message = lv_message && ls_message-message_text.
    38. ENDLOOP.
    39. IF lv_check = 'E'.
    40. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    41. ELSE.
    42. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    43. EXPORTING
    44. wait = abap_true.
    45. ENDIF.
    46. "--------------------@斌将军--------------------

    定期更文,欢迎关注

  • 相关阅读:
    Oracle数据库备份与恢复exp/imp命令
    uniapp实现微信小程序隐私协议组件封装
    Android 答题App
    微信小程序——<image>图片组件图片显示闪烁
    Java项目如何实现限流?
    我开始使用了Typescript
    数据结构-leetcode-环形链表Ⅱ
    齐岳|脂质体磷酸钙纳米粒RNA核糖核酸|淫羊藿苷固体纳米脂质体(ICA-SLN)修饰负载RNA核糖核酸
    【做算法学数据结构】【链表】删除排序链表中的重复元素
    COIN++: Neural Compression Across Modalities 论文阅读笔记
  • 原文地址:https://blog.csdn.net/BinGeneral/article/details/133714975