본문 바로가기
ABAP/개발Tip

[개발Tip] SY-REPID 와 SY-CPROG 차이

by name_text 2023. 10. 30.

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.

댓글