• 使用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. "--------------------@斌将军--------------------

    定期更文,欢迎关注

  • 相关阅读:
    疆御3行业版无人机基础飞行操作教程,教程适用于DJI Mavic 3E、DJI Mavic 3T
    Tailscale 的 TLS 证书过期,网站挂了 90 分钟!
    计算机毕设(附源码)JAVA-SSM家乡旅游宣传书册
    单词故事嵌入:通过自然语言处理解开叙事
    数据挖掘-05
    【Unity3D日常BUG】Unity3D解决“找不到类型或命名空间名称“XXX”(您是否缺少using指令或程序集引用?)”等问题
    npm离线安装全局模块包
    第 367 场 LeetCode 周赛题解
    Java的HTML转义工具
    JAVA计算机毕业设计易医就医购药交互平台Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/BinGeneral/article/details/133714975