Syntax
CALL FUNCTION func IN BACKGROUND TASK
[AS SEPARATE UNIT]
[DESTINATION dest]
parameter_list.
설명
AS SEPARATE UNIT
AS SEPARATE UNIT을 사용할 경우, 관련된 function module은 function group의 global data에 영향받지 않는 별도의 RFC Session에서 실행됩니다. Function Module은 별도의 Transaction ID가 부여된 SEPARATE UNIT에 추가 등록됩니다. AS SEPARATE UNIT을 추가하지 않으면 일반적인 Function Module 방식으로 RFC session이 적용됩니다. 즉, 동일한 function group에 속하는 여러 function modules의 호출에 대해 동일한 DESTINATION를 사용할 경우 이 function group의 global data는 집합적으로 액세스 되어집니다.
DESTINATION
RFC(Remote-enabled function module)을 사용할 때 지정할 수 있는것으로, DESTINATION을 사용하여 목적지를 지정할 수 있다. 만약 destination의 값을 지정하지 않을 경우에는 암묵적으로 "NONE"을 사용하게 된다. 보통은 func과 dest는 비슷한 명칭으로 사용한다.
DESTINATION은 Queue를 지정하는데 있어 로그온 그룹을 지정할때 사용되어진다.
transactional call이 발생하게 되면 고유한 transaction ID를 가지고 AS ABAP(Application)의 데이터베이스 테이블인 'ARFCSSTATE' 와 'ARFCSDATA' 안에 SAP LUW(SAP Logical Unit of Work)에 호출된 함수의 이름과 함께 전달된 destination과 parameter_list을 등록한다.(Transaction ID는 structure 유형의 ARFCTID Type으로 저장되어 T-Code: SM58에서 확인할 수 있습니다.)
COMMIT WORK문이 실행되어지면, 현재 SAP LUW에 등록된 function modules은 등록된 순서대로 처리되어 집니다.
ROLBACK WORK문은 현재 SAP LUW에 대한 이전 등록을 모두 삭제합니다.
만약, COMMIT WORK문이 실행되어질 때 지정된 destination을 사용할 수 없을경우 RSARFCSE라는 실행 프로그램이 background process에서 처리되어집니다. 기본적으로는 SAP LUW에 등록된 function modules은 등록된 destination에서 15분마다 최대 30회 시도되어집니다.(해당 parameters 값의 경우 T-Code: SM59 에서 변경할 수 있습니다.)
만약, 정의된 destination에 지정된 시간 내에 처리되지 않을 경우 데이터베이스 테이블인 'ARFCSDATA'에 "CPICERR" 항목에 기록되어 집니다.(기본적으로는 데이터베이스 테이블 'ARFCSSTATE의 항목은 8일 후에 삭제되어집니다.)
PARAMETER_LIST
... [EXPORTING p1 = a1 p2 = a2 ... ]
[TABLES t1 = itab1 t2 = itab2 ...] ...
참고 URL: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapcall_function_background_task.htm#!ABAP_ONE_ADD@1@
'SAP > ABAP' 카테고리의 다른 글
[SAP ABAP] SM59 SAP tcode - RFC Destination (Display/Maintain (0) | 2021.03.29 |
---|---|
[ABAP] ERROR - CX_SY_CONVERSION_OVERFLOW (0) | 2020.11.26 |
[ABAP] SAP T-CODE 모음 (0) | 2020.02.12 |