SAP BAPI_PO_CHANGE修改PO组件(数量)

107 篇文章 118 订阅
59 篇文章 32 订阅
    DATA: C_FLAG(1) TYPE C.
    DATA: G_POHEADER       LIKE BAPIMEPOHEADER,
          G_RETURN         LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
          G_POITEM         LIKE BAPIMEPOITEM OCCURS 0 WITH HEADER LINE,
          G_POCOMPONENTS   LIKE BAPIMEPOCOMPONENT OCCURS 0 WITH HEADER LINE,
          G_POCOMPONENTSX  LIKE BAPIMEPOCOMPONENTX OCCURS 0 WITH HEADER LINE.

    "查询PO及组件
    CALL FUNCTION 'BAPI_PO_GETDETAIL1'
      EXPORTING
        PURCHASEORDER = OEBELN
      IMPORTING
        POHEADER      = G_POHEADER
      TABLES
        RETURN        = G_RETURN
        POITEM        = G_POITEM
        POCOMPONENTS  = G_POCOMPONENTS.
    READ TABLE G_RETURN WITH KEY TYPE = 'E'.
    IF SY-SUBRC EQ 0.
      LOOP AT G_RETURN WHERE TYPE = 'E'.
        MESSAGE ID G_RETURN-ID TYPE G_RETURN-TYPE
            NUMBER G_RETURN-NUMBER WITH G_RETURN-MESSAGE_V1
                                         G_RETURN-MESSAGE_V2
                                         G_RETURN-MESSAGE_V3
                                         G_RETURN-MESSAGE_V4
                             INTO L_TEMP.
        CONCATENATE L_MSG L_TEMP INTO L_MSG SEPARATED BY ';'.
      ENDLOOP.
      CONCATENATE '采购订单' OEBELN  '读取失败;'
            L_MSG INTO OMESSG.
      MOVE 'X' TO C_FLAG.
    ENDIF.
    CHECK C_FLAG IS INITIAL.
    DATA: CT_RETURN         LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
          CT_POCOMPONENTS   LIKE BAPIMEPOCOMPONENT OCCURS 0 WITH HEADER LINE,
          CT_POCOMPONENTSX  LIKE BAPIMEPOCOMPONENTX OCCURS 0 WITH HEADER LINE,
          CT_POSCHEDULE     LIKE BAPIMEPOSCHEDULE OCCURS 0 WITH HEADER LINE,
          CT_POSCHEDULEX    LIKE BAPIMEPOSCHEDULX OCCURS 0 WITH HEADER LINE,
          CHG_FLAG(1)       TYPE C.

    LOOP AT G_POITEM.
      READ TABLE G_POCOMPONENTS WITH KEY PO_ITEM = G_POITEM-PO_ITEM.
      "修改组件数量为行项目数量,修改组件数量
      CHECK G_POCOMPONENTS-ENTRY_QUANTITY NE G_POITEM-QUANTITY.
      G_POCOMPONENTS-ENTRY_QUANTITY = G_POITEM-QUANTITY.
      G_POCOMPONENTS-CHANGE_ID = 'U'.
      APPEND G_POCOMPONENTS TO CT_POCOMPONENTS.

      G_POCOMPONENTSX-PO_ITEM = G_POCOMPONENTS-PO_ITEM.
      G_POCOMPONENTSX-SCHED_LINE = G_POCOMPONENTS-SCHED_LINE.
      G_POCOMPONENTSX-ITEM_NO = G_POCOMPONENTS-ITEM_NO.
      G_POCOMPONENTSX-ENTRY_QUANTITY = 'X'.
      G_POCOMPONENTSX-CHANGE_ID = 'X'.
      APPEND G_POCOMPONENTSX TO CT_POCOMPONENTSX.

      MOVE: 'X' TO CHG_FLAG.
    ENDLOOP.

    CHECK CHG_FLAG IS NOT INITIAL.
    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        PURCHASEORDER = OEBELN
      TABLES
        RETURN        = CT_RETURN
        POCOMPONENTS  = CT_POCOMPONENTS
        POCOMPONENTSX = CT_POCOMPONENTSX.

    "COMMIT WORK
    READ TABLE CT_RETURN WITH KEY TYPE = 'E'.
    IF SY-SUBRC NE 0.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LOOP AT CT_RETURN WHERE TYPE = 'E'.
        MESSAGE ID CT_RETURN-ID TYPE CT_RETURN-TYPE
            NUMBER CT_RETURN-NUMBER WITH CT_RETURN-MESSAGE_V1
                                         CT_RETURN-MESSAGE_V2
                                         CT_RETURN-MESSAGE_V3
                                         CT_RETURN-MESSAGE_V4
                             INTO L_TEMP.
        CONCATENATE L_MSG L_TEMP INTO L_MSG SEPARATED BY ';'.
      ENDLOOP.
      CONCATENATE '采购订单' OEBELN  '组件数量更新失败:' 
             INTO OMESSG.
    ENDIF.

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SAP BAPI_PO_CREATE1是一个SAP系统中的功能模块,用于创建采购订单(Purchase Order)。通过该功能模块,我们可以使用SAP系统来快速创建和维护采购订单的相关数据。 使用BAPI_PO_CREATE1,我们可以通过调用该功能模块来向SAP系统中创建新的采购订单。在调用该功能模块时,我们需要提供一些必要的输入参数,如采购订单的相关信息、采购组织和公司代码等。 这个功能模块可以帮助我们在SAP系统中自动化采购订单的创建流程。它可以根据输入的参数,自动生成采购订单,并将相关的物料、供应商和价格等信息添加到订单中。 通过使用BAPI_PO_CREATE1,我们可以实现以下功能: 1. 创建采购订单:我们可以通过调用该功能模块来创建新的采购订单。在调用时,我们需要提供订单的相关信息,如供应商、物料、数量、交货日期等。系统会根据提供的信息自动创建采购订单。 2. 修改采购订单:除了创建新的采购订单,我们还可以使用BAPI_PO_CREATE1来修改现有的采购订单。在调用时,我们需要提供订单的标识符和要修改的字段及对应的值。系统将根据提供的信息来更新采购订单的数据。 3. 检查采购订单:在调用BAPI_PO_CREATE1之前,我们可以先使用BAPI_PO_EXISTENCE_CHECK来检查采购订单是否存在。这可以帮助我们避免重复创建订单或更新不存在的订单。 总而言之,SAP BAPI_PO_CREATE1是一个用于创建和维护采购订单的功能模块。它可以帮助我们在SAP系统中实现自动化的采购订单处理,并提高采购过程的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willie Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值