SY-REPID 와 SY-CPROG 차이
가끔씩 개발자분들이 SY-REPID와 SY-CPROG에 대해 혼동을 하거나, 잘못된 의미로 사용하는 경우가 있습니다.
아마도 CPROG 를 Current Program으로 이해해서 발생한 현상으로 생각됩니다.
결론은 아래와 같습니다.
SY-REPID : Current Program, 현재 프로그램의 ID
SY-CPROG : Calling Program, 현재 프로그램(Function, Class method 등)을 호출한 프로그램의 ID
참고로, IF SY-CALLD eq 'X' 이면 현재 프로그램은 다른 프로그램에서 Call Transaction, Call Dialog, Submit..[and return]을 통해 실행된 프로그램임을 의미합니다.
# 테스트
REPORT YINPIMS01_TEST04.
WRITE:/ 'SY-REPID : ', SY-REPID.
WRITE:/ 'SY-CPROG : ', SY-CPROG.
SKIP 1.
DATA: LV_REPID TYPE SY-REPID,
LV_CPROG TYPE SY-CPROG.
WRITE:/ 'Call Function'.
CALL FUNCTION 'YINPUMS01_TEST11'
IMPORTING
E_REPID = LV_REPID "Function내에서 SY-REPID 반환
E_CPROG = LV_CPROG "Function내에서 SY-CPROG 반환
.
WRITE:/ 'SY-REPID : ', LV_REPID.
WRITE:/ 'SY-CPROG : ', LV_CPROG.
SKIP 1.
WRITE:/ 'Call Class Method'.
YCL_INPIMS01_TEST1=>TEST_METHOD( IMPORTING E_REPID = LV_REPID "Method내에서 SY-REPID 반환
E_CPROG = LV_CPROG "Method내에서 SY-CPROG 반환
).
WRITE:/ 'SY-REPID : ', LV_REPID.
WRITE:/ 'SY-CPROG : ', LV_CPROG.
'ABAP > 개발Tip' 카테고리의 다른 글
[개발Tip] ALV 레이아웃 필드(LVC_S_LAYO) 설명 (0) | 2023.11.17 |
---|---|
[개발Tip] SYST 필드(SY-) 설명 (0) | 2023.10.30 |
[개발Tip] Simple, Column, List Tree 비교 (0) | 2023.10.16 |
[개발Tip] CL_GUI_LIST_TREE 사용 방법 (0) | 2023.10.16 |
[개발Tip] CL_GUI_COLUMN_TREE 사용 방법 (0) | 2023.10.16 |
댓글