ID中配置:
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.