Customer Exit은 Function 기반의 Exit이다.
SAP는 스탠다드 티코드 곳곳에 customer function을 심어놓았다.
해당 customer function에는 Z네이밍의 INCLUDE 프로그램이 선입력되어있다.
알다시피 우리는 Z프로그램을 수정할 수 있다.
즉, SAP는 유저에게 스탠다드 티코드의 수정 포인트로써 Z프로그램을 customer function이라는 이름의 특수 function에 심어놓은 것이다.
customer function도 결국 function이므로 sap의 가이드에 따라 파라미터를 넣고 받아야 한다는 점은 있지만,
기존 스탠다드 티코드의 정합성을 깨트리지 않기 위함이 아닐까?
먼저 Customer Exit은 3가지 종류가 있다.
- 프로그램 로직을 수정할 수 있는 Function Exit
- 스크린에 스크린요소(버튼, 필드 등)를 추가할 수 있는 Screen Exit
- 메뉴바에 추가 메뉴를 심을 수 있는 Menu Exit
implicit Enhancement는 펑션 등의 오브젝트의 시작과 끝에 로직을 추가함으로써 enhance 할 수 있었다.
그렇다면 Customer Exit도 로직의 시작과 끝에 추가하면 되는 것일까?
아니다.
위에서 한 번 언급한 것 처럼, 스탠다드 소스 내 사이사이에 customer exit이 삽입되어 있다. 따라서 장대한 스탠다드 소스 내에서 수정가능한 지점, 즉 customer function을 찾아야 한다.
* Customer Exit은 'Call Customer-Function xxx' 라는 명칭의 펑션코드로 시작하며 xxx는 001, 002 처럼 세자리 숫자로 네이밍되어 있다.
찾는 방법은 여러가지가 있으며 다음 방법들을 상황에 맞게 조합하여 찾아보면 되는 것 같다.
- Break-point
개발/테스트서버에서 내가 돌리고 싶은 티코드를 돌려본다.
단 티코드 수행 전 커맨드라인에 '/H'를 넣어 디버깅과 함께 시작한다.

디버깅이 시작되면 메뉴바에서 Breakpoints 메뉴를 클릭하고 위 경로를 차례대로 선택한다.

커맨드라인 탭에 위 커맨드라인을 입력한 뒤 체크버튼을 누른다.
이렇게 되면 소스코드 내에 'CALL CUSTOMER-FUNCTION' 텍스트가 있다면 해당 부분에 자동으로 브레이크포인트가 걸리게 된다.
즉, 브레이크 포인트에 조건을 걸어 exit 포인트를 찾는 것이다.

디버깅을 걸고 문장단위의 브레이킹포인트를 잡는다.

CALL CUSTOMER-FUNCTION 을 입력 후 수행하면 해당 문장이 적힌 소스코드에 걸린다.

펑션에 브레이킹이 걸렸다면
해당 펑션이 내 수정포인트에 부합하는 부분인지 펑션의 Short text를 보고 확인해야 한다.
디버깅 스탠다드 폼에서 Navigator 아이콘을 눌러 해당 소스를 새 창으로 띄운다.


펑션 번호는 3자리 숫자로 정의된다.
숫자를 더블클릭하면 SE37화면에서 Function을 볼 수 있다.

Attribute 탭의 숏텍스트란에 이게 어떤 Enhancement 인지 설명한다
2. Package
Customer exit도 Function이므로 하나의 패키지에 assign 되어 있다.
그러므로 패키지 단위로 펑션리스트(Exit리스트)를 찾을 수도 있다.



해당 패키지 내에 전체 Exit을 확인할 수 있다.
여기서 내가 수정하고 싶은 펑션을 찾아 들어가면 된다.
* 단 내가 수정하고 싶은 티코드의 패키지 내에 Exit Function이 없을 수도 있다.
mm01은 MG라는 펑션인데 내부/외부 자재코드를 채번하는 Exit function은 MGA에 assign 되어 있다.
그렇기 때문에, 디버깅을 통해 펑션을 먼저 체크해보는게 맞는 방법이 아닐까 하는 는생각이 든다...
연관 DB테이블
MODSAP: Exit 내역
MODACT: Exit이 할당된 프로젝트 내역
* 틀린 내용은 댓글로 지적해주시면 감사히 받겠습니다 :)

'SAP > Enhancement' 카테고리의 다른 글
[ABAP] 07. SAP Customer Exit: Screen Exit (0) | 2024.11.05 |
---|---|
[ABAP] 06. SAP Customer Exit: Menu Exit (0) | 2024.11.04 |
[ABAP] 05. SAP Customer Exit: Function Exit (0) | 2024.11.04 |
[ABAP] 01. SAP Implicit Enhancement (0) | 2024.11.04 |
[ABAP] 00. SAP Enhancement & Modification (0) | 2024.11.04 |