SAP/Enhancement

[ABAP] 06. SAP Customer Exit: Menu Exit

쌥돌이 2024. 11. 4. 23:54

SAP는 상단 메뉴바에도 유저 메뉴를 심을 수 있도록 열어놓았는데 해당 Exit 포인트를 Menu Exit이라고 한다.

먼저 티코드에 메뉴 Exit이 가능하도록 열려있는 티코드인지 확인이 되어야한다.

확인 방법은 다음과 같다.

 

스탠다드의 gui status 를 연다

 

menu exit 펑션 코드는 +PGE

MENU EXIT은 + 라는 문자와 3가지 문자로 구성되어 있다.

설명에는 Customer Exit이라고 적혀있으므로 쉽게 식별 가능하다.

프로그램명(SAPLS38E)과 Exit 펑션코드(+PGE)를 찾았다면 Exit 명을 찾을 수 있다.

 
필자는 SE11에서 펑션코드를 힌트로 해서 Exit명을 찾았다

내가 수정하려는 Exit의 명칭은 SEUED001 이다.

Exit 명을 찾았다면 이후 절차는 Function exit과 같다.

티코드 CMOD -> 프로젝트 생성 -> Enhancement Assignment에 Exit 명 입력 -> 로직 수정 -> 테스트

난 앞서 생성한 프로젝트에 추가 exit 입력

프로젝트에 exit 명을 입력하여 exit을 assign한다.

이후 해당 Exit의 component에 menu를 먼저 정의한다.

 
메뉴버튼 정의 후 활성화

 

 

활성화 후 다시 티코드를 찾아보면 해당 경로에 내가 정의한 메뉴가 들어가 있음을 볼 수 있다.

커맨드라인에 /h 를 입력하고 위 추가한 메뉴를 클릭하면 이제 어떤 Customer function을 타는지 확인 할 수 있다.

 
디버깅에서 call customer-function 조건 넣고 펑션확인

 

 

확인된 펑션명은 EXIT_SAPLLOCAL_EDT1_002.

즉, 추가한 메뉴를 누른다면 펑션코드 +PGE를 갖고 위 Customer Function을 타게 된다는 것이다.

펑션을 확인했다면, Z include 프로그램에 로직을 집어넣는다.

로직 입력이 다 되었다면 프로젝트를 active한다.

그리고 대망의 테스트..

클릭

 

이렇게 menu exit이 성공했다.

 

정리

  1. Menu Exit이 가능한 티코드인지 gui 확인
  2. 메뉴바에 +로 시작하는 임의의 3글자 펑션코드 확인(ex. +ABC)
  3. 해당 메뉴의 Exit 명 확인
  4. CMOD에서 프로젝트에 해당 EXIT명을 입력하여 assign하고 메뉴 먼저 정의 후 활성화
  5. 다시 티코드에서 디버깅 걸고 추가된 메뉴 클릭하여 어떤 펑션 타는지 확인
  6. 펑션 확인 후 메뉴 클릭 시 동작할 CBO 로직 입력
  7. 프로젝트 다시 활성화
  8. Menu Exit 확인

* 틀린 내용은 댓글로 지적해주시면 감사히 받겠습니다 :)