天天看點

Webservice篇4 ABAP調用PI webservice案例

ID中配置:

Webservice篇4 ABAP調用PI webservice案例
Webservice篇4 ABAP調用PI webservice案例
Webservice篇4 ABAP調用PI webservice案例
Webservice篇4 ABAP調用PI webservice案例

 Abap :  YHFII110

*& 進行PI下發與更新;
    IF L_COUNT EQ P_COUNT.

      CALL FUNCTION'YH_FI_PROXY_ECC_TFS110A_EXPORT'
        EXPORTING
         I_OUTPUT         = LT_OUT
         I_COMMIT         = 'X'
         I_JIEKNO         = C_TFS110
       IMPORTING
         E_JKLSH          = L_JKLSH
       TABLES
         IN_TAB           = LT_LIFNR
       EXCEPTIONS
         PROXY_ERR        = 1
         MSG_ID_GET_ERROR = 2
         UPDATE_TABLE_ERR = 3.
     IF SY-SUBRC NE 0.
       G_ERR = 'X'.

*& 處理結果
       LOOP AT LT_LIFNR INTO LS_LIFNR.
         GS_DATA-STATS   = 'E'.
         GS_DATA-MESSAGE = '接口連接配接失敗'(666).
         GS_DATA-JKLSH = L_JKLSH.

*& 更新螢幕值
         MODIFY GT_DATA FROM GS_DATA TRANSPORTING MESSAGE STATS JKLSH
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.

*& 更新表
         UPDATE YTBSIKKZ SET STATS = GS_DATA-STATS
                              MESSAGE =GS_DATA-MESSAGE
                              JKLSH = L_JKLSH
                              XSUSR = SY-UNAME
                              XSDAT = SY-DATUM
                              XSTIM = SY-UZEIT
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.
       ENDLOOP.

     ELSE.

*& 處理結果
       LOOP AT LT_LIFNR INTO LS_LIFNR.
         GS_DATA-STATS  = LS_LIFNR-STATS.
         GS_DATA-MESSAGE = LS_LIFNR-MESSAGE.
         GS_DATA-JKLSH = L_JKLSH.

*& 更新螢幕值
         MODIFY GT_DATA FROM GS_DATA TRANSPORTING MESSAGE STATS JKLSH
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.

       ENDLOOP.


     ENDIF.

     ADD 1 TO L_TIMES. "分包數
     CLEAR : L_COUNT , LT_OUT.
     REFRESH: LT_LIFNR.
   ENDIF.

 ENDLOOP.

*& 對于不足分包的記錄進行更新:
 IF L_COUNT NE 0.
   CALL FUNCTION 'YH_FI_PROXY_ECC_TFS110A_EXPORT'
     EXPORTING
       I_OUTPUT         = LT_OUT
       I_COMMIT         = 'X'
       I_JIEKNO         = C_TFS110
     IMPORTING
       E_JKLSH          = L_JKLSH
     TABLES
       IN_TAB           = LT_LIFNR
     EXCEPTIONS
       PROXY_ERR        = 1
       MSG_ID_GET_ERROR = 2
       UPDATE_TABLE_ERR = 3.
   IF SY-SUBRC NE 0.
     G_ERR = 'X'.


*& 處理結果
     LOOP AT LT_LIFNR INTO LS_LIFNR.
       GS_DATA-STATS   = 'E'.
       GS_DATA-MESSAGE = '接口連接配接失敗'(666).
       GS_DATA-JKLSH = L_JKLSH.

*& 更新螢幕值
       MODIFY GT_DATA FROM GS_DATA TRANSPORTING MESSAGE STATS JKLSH
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.

*& 更新表
       UPDATE YTBSIKKZ SET STATS =GS_DATA-STATS
                            MESSAGE =GS_DATA-MESSAGE
                            JKLSH = L_JKLSH
                            XSUSR = SY-UNAME
                            XSDAT = SY-DATUM
                            XSTIM = SY-UZEIT
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.

     ENDLOOP.

   ELSE.

*& 處理結果
     LOOP AT LT_LIFNR INTO LS_LIFNR.
       GS_DATA-STATS  = LS_LIFNR-STATS.
       GS_DATA-MESSAGE = LS_LIFNR-MESSAGE.
       GS_DATA-JKLSH = L_JKLSH.

*& 更新螢幕值
       MODIFY GT_DATA FROM GS_DATA TRANSPORTING MESSAGE STATS JKLSH
              WHERE BUKRS = LS_LIFNR-BUKRS
              AND BELNZ = LS_LIFNR-BELNZ
              AND LIFNR = LS_LIFNR-LIFNR
              AND UMSKZ = LS_LIFNR-UMSKZ.

     ENDLOOP.


   ENDIF.
   ADD 1 TO L_TIMES. "分包數
   CLEAR : L_COUNT , LT_OUT.
   REFRESH LT_LIFNR.
 ENDIF.

*& 更新接口處理日志表,當全部成功時才更新:
 IF G_ERR EQ SPACE.
   UPDATE YTIFLOG SET LREPID = SY-REPID
                       LASTP  = G_CURSTP
                       LASTN  = SY-UNAME
                       LTCODE = SY-TCODE
                   WHERE JIEKNO EQ G_JIEKNO.
   IF SY-SUBRC EQ 0.
     COMMIT WORK AND WAIT.
*& 給出提示成功資訊:
     MESSAGE I014 WITH '總執行記錄數:' L_LINES.
     MESSAGE I014 WITH '分為 ' L_TIMES '個消息包執行'.
     MESSAGE S013 WITH '接口:' G_JIEKNO '更新處理日志表成功!'.
   ELSE.
     ROLLBACK WORK.
     PERFORM FRM_UPDATE_TRAN_LOG.
     MESSAGE I013 WITH '接口:' G_JIEKNO'更新處理日志表失敗!'.

    ENDIF.
  ENDIF.      

繼續閱讀