创建生产订单和 创建生产订单长文本肯下达的BAPI

本文将指导你通过BAPI实现生产订单的创建和下达,包括设置基本数据、调用API函数、错误处理和事务管理,适合对ERP系统API有一定了解的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

1 Overall

In the blog I will demostrote that how to create production order by BAPI.

2 Code

 DATA LS_ORDERDATA TYPE BAPI_PP_ORDER_CREATE.
  DATA LV_ORDER_NUMBER TYPE BAPI_ORDER_KEY-ORDER_NUMBER.
  DATA LV_ORDER_TYPE TYPE BAPI_ORDER_COPY-ORDER_TYPE.
  DATA LS_RETURN TYPE BAPIRET2.

  DATA: LT_ORDERS        TYPE TABLE OF BAPI_ORDER_KEY,
        LW_ORDERS        TYPE BAPI_ORDER_KEY,
        LT_RETURN        TYPE TABLE OF BAPI_ORDER_RETURN,
        LW_RETURN        TYPE BAPI_ORDER_RETURN.

  DATA: LT_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL,
        LW_MESSTAB LIKE LINE OF LT_MESSTAB,
        L_MENGE TYPE CHAR10,
        L_MEINS TYPE MEINS,
        L_AUFNR TYPE AUFNR.

  DATA: GW_TLINE LIKE  TLINE.
  DATA: GT_TLINE LIKE TABLE OF GW_TLINE.

  DATA  L_AUFNR1 LIKE THEAD-TDNAME .


    "  创建生产订单

      LOOP AT ITAB  ASSIGNING <FS_ITAB>   WHERE SEL = 'X' .


        CHECK  <FS_ITAB>-AUFNR IS  INITIAL.

        CLEAR:LS_ORDERDATA,LS_RETURN,LV_ORDER_NUMBER,LV_ORDER_TYPE.
        LS_ORDERDATA-MATERIAL    =   <FS_ITAB>-MATNR .
        LS_ORDERDATA-PLANT       = <FS_ITAB>-WERKS.

        LS_ORDERDATA-ORDER_TYPE  = <FS_ITAB>-AUART.
        LS_ORDERDATA-BASIC_START_DATE = <FS_ITAB>-SERDAT. "开始日期


        LS_ORDERDATA-BASIC_END_DATE =  <FS_ITAB>-EERDAT . "完成日期
        LS_ORDERDATA-QUANTITY    = <FS_ITAB>-MENGE.


        LS_ORDERDATA-STORAGE_LOCATION    = <FS_ITAB>-LGORT.

        CLEAR LS_RETURN.
        CALL FUNCTION 'BAPI_PRODORD_CREATE'
          EXPORTING
            ORDERDATA    = LS_ORDERDATA
          IMPORTING
            RETURN       = LS_RETURN
            ORDER_NUMBER = LV_ORDER_NUMBER
            ORDER_TYPE   = LV_ORDER_TYPE.
        IF LS_RETURN-TYPE = 'E' OR LS_RETURN-TYPE = 'A'.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
          <FS_ITAB>-MSG = LS_RETURN-MESSAGE.

        ELSE.

          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              WAIT = 'X'.
          <FS_ITAB>-MSG = LS_RETURN-MESSAGE.
          <FS_ITAB>-AUFNR =  LV_ORDER_NUMBER.
        ENDIF.


        CHECK <FS_ITAB>-LCHAR IS NOT INITIAL.




        GW_TLINE-TDFORMAT = 1.
        GW_TLINE-TDLINE = <FS_ITAB>-LCHAR .
        APPEND GW_TLINE TO GT_TLINE.

        CONCATENATE SY-MANDT <FS_ITAB>-AUFNR INTO L_AUFNR.


        CALL FUNCTION 'CREATE_TEXT'
          EXPORTING
            FID       = 'KOPF'
            FLANGUAGE = SY-LANGU
            FNAME     = L_AUFNR1
            FOBJECT   = 'AUFK'
          TABLES
            FLINES    = GT_TLINE.

        COMMIT WORK.

        IF SY-SUBRC = 0.

          UPDATE AUFK SET LTEXT = '1' WHERE  AUFNR = <FS_ITAB>-AUFNR .

        ELSE.

          <FS_ITAB>-MSG =  '长文本更新失败' .

        ENDIF.



        CLEAR:GW_TLINE, GT_TLINE .

      ENDLOOP.


    " 下达生产订单

*      DATA: LT_ORDERS        TYPE TABLE OF BAPI_ORDER_KEY,
*       LW_ORDERS        TYPE BAPI_ORDER_KEY,
*       LT_RETURN        TYPE TABLE OF BAPI_ORDER_RETURN,
*       LW_RETURN        TYPE BAPI_ORDER_RETURN.



      LOOP AT  ITAB  ASSIGNING <FS_ITAB>  WHERE SEL = 'X'.
        LW_ORDERS-ORDER_NUMBER = <FS_ITAB>-AUFNR.
        APPEND LW_ORDERS TO LT_ORDERS.

        CLEAR:LW_ORDERS .
      ENDLOOP.


      CALL FUNCTION 'BAPI_PRODORD_RELEASE'
          EXPORTING
            RELEASE_CONTROL          = '1'
            WORK_PROCESS_GROUP       = 'COWORK_BAPI'
            WORK_PROCESS_MAX         = 99

          TABLES
            ORDERS                 = LT_ORDERS
            DETAIL_RETURN          = LT_RETURN.
      READ TABLE LT_RETURN INTO  LW_RETURN WITH KEY TYPE = 'E'.
      IF SY-SUBRC = 0.
        CONCATENATE '订单' <FS_ITAB>-AUFNR '下达失败:' LW_RETURN-MESSAGE '' INTO <FS_ITAB>-MSG.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT = 'X'.
      ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值