Вы находитесь на странице: 1из 3

远程处理链调用

FUNCTION MFICO_AA_RSPC_START.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_P_CHIAN) TYPE RSPC_CHAIN OPTIONAL
*" EXPORTING
*" VALUE(E_P_STATE) TYPE RSPC_CHAIN
*"----------------------------------------------------------------------
DATA: LOGID TYPE RSPC_LOGID,
STATE TYPE RSPC_STATE,
CHAIN TYPE RSPC_CHAIN VALUE 'UFI_AA_05_MANUL'.

DATA: BEGIN OF STRUC_ZRSPC_LOGID,


LS_CHAIN TYPE RSPC_CHAIN,
LS_LOGID TYPE RSPC_LOGID,
END OF STRUC_ZRSPC_LOGID.

DATA LS_ZRSPC_LOGID LIKE STRUC_ZRSPC_LOGID.

CLEAR: LOGID,
STATE.

IF I_P_CHIAN IS NOT INITIAL.


CHAIN = I_P_CHIAN.
ENDIF.

SELECT SINGLE LOGID


INTO LOGID
FROM ZRSPC_LOGID
WHERE CHAIN = CHAIN.

IF LOGID IS NOT INITIAL.


CALL FUNCTION 'RSPC_API_CHAIN_GET_STATUS'
EXPORTING
I_CHAIN = CHAIN
I_LOGID = LOGID
IMPORTING
E_STATUS = STATE
EXCEPTIONS
SYSTEM_FAILURE = 1
COMMUNICATION_FAILURE = 2.

IF SY-SUBRC <> 0.
E_P_STATE = '读取上次处理链运行状态失败,请重试!'.
ELSE.
CASE STATE.
WHEN 'G' OR 'F'.
CALL FUNCTION 'RSPC_API_CHAIN_START'
EXPORTING
I_CHAIN = CHAIN
IMPORTING
E_LOGID = LOGID
EXCEPTIONS
SYSTEM_FAILURE = 1
COMMUNICATION_FAILURE = 2
FAILED = 3
OTHERS = 4.

IF SY-SUBRC EQ 0.
UPDATE ZRSPC_LOGID
SET LOGID = LOGID
WHERE CHAIN = CHAIN.
E_P_STATE = '上次数据抽取已成功完成,本次抽取已开始!'.
ELSE.
E_P_STATE = '处理链启动失败,请重试!'.
ENDIF.

WHEN 'A'.
E_P_STATE = '上次数据抽取正在进行,请稍后重试!'.
WHEN 'R'.
E_P_STATE = '上次数据抽取因错误而结束,请联系BW顾问进行修复!'.
WHEN 'X'.
E_P_STATE = '上次数据抽取已取消,请联系BW顾问进行修复!'.
WHEN OTHERS.
E_P_STATE = '上次数据抽取发生未知错误,请联系BW顾问进行修复!'.
ENDCASE.

ENDIF.
ELSE.
CALL FUNCTION 'RSPC_API_CHAIN_START'
EXPORTING
I_CHAIN = CHAIN
IMPORTING
E_LOGID = LOGID
EXCEPTIONS
SYSTEM_FAILURE = 1
COMMUNICATION_FAILURE = 2
FAILED = 3
OTHERS = 4.

IF SY-SUBRC EQ 0.
LS_ZRSPC_LOGID-LS_CHAIN = CHAIN.
LS_ZRSPC_LOGID-LS_LOGID = LOGID.
INSERT INTO ZRSPC_LOGID VALUES LS_ZRSPC_LOGID.
E_P_STATE = '处理链成功启动!'.
ELSE.
E_P_STATE = '处理链启动失败,请重试!'.
ENDIF.

ENDIF.
ENDFUNCTION.

Вам также может понравиться