BAPI_PRODORDCONF_CREATE_TT 報工(CO11N)


        在LC項目中,根據客戶需求,需要封裝CO11N,做一個Dialog程序,只對最后一道工序報工,感覺很簡單,用BDC方式做了一版,運行期間,問題百出,后來找到函數BAPI_PRODORDCONF_CREATE_TT,解決了問題,代碼如下,分享一下,資源共享。

      DATA:IT_TT        TYPE TABLE OF BAPI_PP_TIMETICKET,
               WA_TT        TYPE BAPI_PP_TIMETICKET,
               IT_DR        TYPE TABLE OF BAPI_CORU_RETURN,
               WA_DR        TYPE BAPI_CORU_RETURN,
               WA_RETURN    TYPE BAPIRET1,
               I_ERRMSG     TYPE BAPIRET2-MESSAGE,"記錄返回消息中的錯誤消息
               I_TIME(14)   TYPE C, "傳送時間
               I_ERRFLG     TYPE C,
               I_COUNT      TYPE I."用於對導入數據的行數記錄

              CLEAR:WA_TT,
                    I_COUNT,
                    I_ERRMSG,
                    I_ERRFLG,
                    WA_RETURN.

*          * 訂單號轉換
              CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  INPUT = ITAB_SER05-PPAUFNR
                IMPORTING
                  OUTPUT = WA_TT-ORDERID.
              WA_TT-OPERATION = V_VORNR.
              WA_TT-YIELD      = '1'.
              WA_TT-POSTG_DATE = SY-DATUM.


          DATA:C_VORNR TYPE AFVC-VORNR,
               C_AUFNR TYPE AFKO-AUFNR,
               C_APLZL TYPE AFVC-APLZL,
               C_AUFPL TYPE AFVC-AUFPL,
               WA_AFVV TYPE AFVV.

              CLEAR IT_TT.
              REFRESH IT_TT.

              CLEAR IT_DR.
              REFRESH IT_DR.

              SELECT SINGLE AFVC~APLZL AFVC~AUFPL
                            INTO (C_APLZL, C_AUFPL)
                            FROM AFVC INNER JOIN AFKO
                            ON    AFVC~AUFPL = AFKO~AUFPL
                            WHERE AFKO~AUFNR = WA_TT-ORDERID
                            AND   AFVC~VORNR = V_VORNR.

              SELECT SINGLE * FROM AFVV INTO WA_AFVV
                              WHERE AUFPL = C_AUFPL
                              AND   APLZL = C_APLZL.

              WA_TT-FIN_CONF = '1'.

              WA_TT-CONF_ACTI_UNIT1 = WA_AFVV-VGE01.
              WA_TT-CONF_ACTI_UNIT2 = WA_AFVV-VGE02.
              WA_TT-CONF_ACTI_UNIT3 = WA_AFVV-VGE03.
              WA_TT-CONF_ACTI_UNIT4 = WA_AFVV-VGE04.
              WA_TT-CONF_ACTI_UNIT5 = WA_AFVV-VGE05.
              WA_TT-CONF_ACTI_UNIT6 = WA_AFVV-VGE06.
              WA_TT-CONF_ACTIVITY1 = WA_TT-YIELD * WA_AFVV-VGW01 / WA_AFVV-BMSCH.
              WA_TT-CONF_ACTIVITY2 = WA_TT-YIELD * WA_AFVV-VGW02 / WA_AFVV-BMSCH.
              WA_TT-CONF_ACTIVITY3 = WA_TT-YIELD * WA_AFVV-VGW03 / WA_AFVV-BMSCH.
              WA_TT-CONF_ACTIVITY4 = WA_TT-YIELD * WA_AFVV-VGW04 / WA_AFVV-BMSCH.
              WA_TT-CONF_ACTIVITY5 = WA_TT-YIELD * WA_AFVV-VGW05 / WA_AFVV-BMSCH.
              WA_TT-CONF_ACTIVITY6 = WA_TT-YIELD * WA_AFVV-VGW06 / WA_AFVV-BMSCH.
*          ************************

              APPEND WA_TT TO IT_TT.
              CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'   "主要是這個BAPI
                IMPORTING
                  RETURN        = WA_RETURN
                TABLES
                  TIMETICKETS   = IT_TT
                  DETAIL_RETURN = IT_DR.

*             處理BAPI錯誤
              CLEAR I_ERRFLG.
              CLEAR I_ERRMSG.
              LOOP AT IT_DR INTO WA_DR.
                IF WA_DR-TYPE = 'E'.
                  I_ERRFLG = 'X'.

                  I_ERRMSG = WA_DR-MESSAGE.
                ELSE.

                ENDIF.

                IF I_ERRFLG IS INITIAL.
                  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                    EXPORTING
                      WAIT = 'X'.

                ELSE.
                  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

                      MESSAGE E232(ZLC) WITH I_ERRMSG.
                      DELETE FROM ZPPBG  WHERE SERNR = RESULT1-SERNR.

                ENDIF.
              ENDLOOP.

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM