生产订单修改

loop at i_itab.
  CLEAR: ITAB.
  AUFNR = i_itab-ORDERID.


  ITAB-QUANTITY  = i_itab-QTY.
  ITABX-QUANTITY  = 'X'.

CALL FUNCTION 'BAPI_PRODORD_CHANGE'
  EXPORTING
    NUMBER                 = AUFNR
    ORDERDATA              = ITAB
    ORDERDATAX             = ITABX
IMPORTING
   RETURN                 = errmsg
*   ORDER_TYPE             =
*   ORDER_STATUS           =
*   MASTER_DATA_READ       =.
          
    IF errmsg-TYPE = 'E' OR errmsg-TYPE = 'A'.
         WRITE:/ AUFNR,errmsg-MESSAGE.
    ELSE.
    WRITE:/ AUFNR,'Updated successfully.'.

    ENDIF.

endloop.

生产订单物料组件修改:

FUNCTION ZBAPI_NETWORK_COMP_CHANGE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  TABLES
*"      INPUT STRUCTURE  ZBAPI_NETWORK_COMP_CHANGE OPTIONAL
*"      OUTPUT STRUCTURE  ZBAPI_NETWORK_COMP_CHANGE_OUT OPTIONAL
*"----------------------------------------------------------------------
DATA: G_INFO TYPE STRING.
DATA:FLAG(1),
     m_MESSAGE(100),
     m_DATE TYPE D,
     m_RSNUM TYPE RESB-RSNUM,
     m_RSPOS TYPE RESB-RSPOS,
     m_RSART TYPE RESB-RSART,
     m_ENMNG TYPE RESB-ENMNG.


DATA:NUMBER TYPE BAPI_NETWORK_LIST-NETWORK,
     I_COMPONENTS_CHANGE TYPE TABLE OF BAPI_NETWORK_COMP_CHANGE WITH HEADER LINE,
     I_COMPONENTS_CHANGE_UPDATE  TYPE TABLE OF BAPI_NETWORK_COMP_CNG_UPD WITH HEADER LINE,
     E_MESSAGE_TABLE  TYPE TABLE OF BAPI_METH_MESSAGE WITH HEADER LINE.


DATA:t_OBJNR TYPE AFVC-OBJNR,
     m_STAT  TYPE JEST-STAT.
LOOP AT INPUT.
      CLEAR m_RSNUM.
      CLEAR m_RSPOS.
      CLEAR m_RSART.
      CLEAR m_ENMNG.
      CLEAR NUMBER.


      SELECT SINGLE
             ENMNG
             INTO m_ENMNG
             FROM RESB
             WHERE AUFNR = INPUT-AUFNR
               AND VORNR = INPUT-ACTIVITY
               AND POSNR = INPUT-POSNR
               AND XLOEK <> 'X'.
      MOVE-CORRESPONDING INPUT TO OUTPUT.


*     以下代码如果活动TECO之后,则不允许新增物料
      CLEAR t_OBJNR.
      CLEAR m_STAT.
      SELECT SINGLE
             B~OBJNR
             INTO t_OBJNR
             FROM CAUFV AS A INNER JOIN AFVC AS B ON A~AUFPL = B~AUFPL
             WHERE A~AUFNR = INPUT-AUFNR
               AND B~VORNR = INPUT-ACTIVITY.


      SELECT SINGLE
             A~STAT
             INTO m_STAT
             FROM JEST AS A INNER JOIN TJ02T AS B ON A~STAT = B~ISTAT AND B~SPRAS = '1'
             WHERE A~OBJNR = t_OBJNR
               AND B~TXT04 = 'TECO'
               AND A~INACT <> 'X'.
      IF m_STAT <> ''.


          OUTPUT-FLAG = 'E'.
          CONCATENATE '网络:' INPUT-AUFNR '活动:' INPUT-ACTIVITY '已TECO,不能修改物料' INTO OUTPUT-MESSAGE.
          APPEND OUTPUT.
          CLEAR OUTPUT.
      ELSE.


          IF  INPUT-ENTRY_QUANTITY < m_ENMNG.
              OUTPUT-FLAG = 'E'.
              CONCATENATE '修改失败:' '数量不能小于提货数!' INTO OUTPUT-MESSAGE.
              APPEND OUTPUT.
              CLEAR OUTPUT.
          ELSE.
              SELECT SINGLE
                     RSNUM
                     RSPOS
                     RSART
                     INTO (m_RSNUM,m_RSPOS,m_RSART )
                     FROM RESB
                     WHERE AUFNR = INPUT-AUFNR
                       AND VORNR = INPUT-ACTIVITY
                       AND POSNR = INPUT-POSNR
                       AND XLOEK <> 'X'.

              NUMBER = INPUT-AUFNR.
*             明细记录
              CONCATENATE m_RSNUM m_RSPOS m_RSART INTO I_COMPONENTS_CHANGE-COMPONENT.
              I_COMPONENTS_CHANGE-ACTIVITY        = INPUT-ACTIVITY.
              I_COMPONENTS_CHANGE-ENTRY_QUANTITY  = INPUT-ENTRY_QUANTITY.
              I_COMPONENTS_CHANGE-ITEM_TEXT       = INPUT-ITEM_TEXT.
              I_COMPONENTS_CHANGE-BASE_UOM        = INPUT-BASE_UOM.


              APPEND I_COMPONENTS_CHANGE.
              CLEAR I_COMPONENTS_CHANGE.

              CONCATENATE m_RSNUM m_RSPOS m_RSART INTO I_COMPONENTS_CHANGE_UPDATE-COMPONENT.
              I_COMPONENTS_CHANGE_UPDATE-ACTIVITY = 'X'.
              I_COMPONENTS_CHANGE_UPDATE-ENTRY_QUANTITY = 'X'.
              I_COMPONENTS_CHANGE_UPDATE-ITEM_TEXT = 'X'.
              APPEND I_COMPONENTS_CHANGE_UPDATE.
              CLEAR I_COMPONENTS_CHANGE_UPDATE.


*             在结尾的时候,保存记录
*              AT END OF AUFNR.
                  CALL FUNCTION 'BAPI_NETWORK_COMP_CHANGE'
                    EXPORTING
                       NUMBER                     = NUMBER
                    TABLES
                       I_COMPONENTS_CHANGE        = I_COMPONENTS_CHANGE
                       I_COMPONENTS_CHANGE_UPDATE = I_COMPONENTS_CHANGE_UPDATE
                       E_MESSAGE_TABLE            = E_MESSAGE_TABLE.


                  CLEAR E_MESSAGE_TABLE.
                  LOOP AT E_MESSAGE_TABLE WHERE MESSAGE_TYPE = 'E' OR MESSAGE_TYPE = 'A'.
                      FLAG = 'X'.
                      OUTPUT-FLAG = 'E'.
                      CONCATENATE OUTPUT-MESSAGE '&' E_MESSAGE_TABLE-MESSAGE_TEXT INTO OUTPUT-MESSAGE.
                  ENDLOOP.
                  IF FLAG = 'X'.
                      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
                  ELSE.
                      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
                      WAIT UP TO 1 SECONDS.
                      OUTPUT-FLAG = 'S'.


                      LOOP AT E_MESSAGE_TABLE WHERE MESSAGE_TYPE = 'I' OR MESSAGE_TYPE = 'S'.
                           m_MESSAGE = E_MESSAGE_TABLE-MESSAGE_TEXT.
                      ENDLOOP.
                      CONCATENATE '修改成功:' m_MESSAGE INTO OUTPUT-MESSAGE.
                  ENDIF.
                  APPEND OUTPUT.
                  CLEAR OUTPUT.
                  CLEAR I_COMPONENTS_CHANGE.
                  REFRESH I_COMPONENTS_CHANGE.


                  CLEAR I_COMPONENTS_CHANGE_UPDATE.
                  REFRESH I_COMPONENTS_CHANGE_UPDATE.


                  REFRESH E_MESSAGE_TABLE.
                  CLEAR E_MESSAGE_TABLE.
                  CLEAR FLAG.
                  CLEAR m_MESSAGE.
*              ENDAT.
          ENDIF.
      ENDIF.
ENDLOOP.


ENDFUNCTION.
————————————————
版权声明:本文为CSDN博主「ChampaignWolf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/champaignwolf/article/details/47155597

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值