SAP/Enhancement

[ABAP] 05. SAP Customer Exit: Function Exit

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

수정해야 할 부분에 걸려있는 Function 모듈을 찾았다면,

어떻게 수정해야 할까?

먼저 티코드 CMOD에서 *프로젝트를 정의한다.

*프로젝트: Exit(customer function)을 묶어 관리하는 하나의 묶음단위

프로젝트 명 입력 후 Create버튼 클릭
숏텍스트 입력 후 저장하고 패키지 assign(필자는 local에..)

프로젝트를 만들었다면 프로젝트 안에 Exit(Function)명을 입력해야 하므로

스탠다드 티코드 로직 안에 있는 Exit 포인트(Call Customer~)를 찾아야 한다.

단, 해당 Exit 포인트가 내가 수정할 부분이 맞는지 점검이 필요하다.

MM01 동작 시 호출되는 Func.Exit
호출되는 Exit Function 정보 확인
 
위 정보를 바탕으로 SMOD에서 펑션 찾기, 소스에서 본 펑션이 맞다. Exit은 MGA00002

위 단계에 따라 Exit 명을 확인했다면 프로젝트에 Exit을 입력한다.

 
프로젝트에 Enhancement Assignment

프로젝트에 Exit 할당이 끝났다면, 해당 Exit(Function)에 CBO 로직을 삽입해야 한다.

 

Z INCLUDE문은 로직을 입력할 수 있다.

본 포스팅에서 예제로 해보려는 Exit은 mm01에서 자재마스터 생성 시 특정 자재타입일 경우 팝업으로 Enhancement임을 알려주는 메세지를 띄우는 것이다.

산업군 M, 자재유형PERS 일 때 Enhancement 발동

그러려면 Exit 펑션에게 파라미터로 자재타입을 넣어주고 펑션 내에 Message를 띄우는 팝업을 출력시키는 로직을 집어넣어야 한다.

Exit 펑션의 Importing 탭에서 파라미터를 확인하거나 디버깅을 통해 변수를 확인하여 설계할 수 있을 것이다.

디버깅 통해 파라미터 확인
로직 입력

 

위 Exit 펑션내에 위치한 Include 문에 확인한 파라미터를 조건으로 하여 cbo로직을 입력하고 활성화 한다.

그리고 마지막으로, CMOD에서 프로젝트를 활성화 시킨다.

빨간 불을 파랗게

이제 잘 적용되었는지 테스트 시간이다.

MM01에서 산업군 M, 자재유형 PERS로 넣고 티코드를 돌리면...

이 맛에 SAP하지

잘 적용이 된 모습이다.

자재도 잘 저장된다.

정리

  1. CMOD에서 프로젝트 생성
  2. 티코드 내에 요구사항을 충족할 수 있는 Customer Function이 있는지 확인
  3. Customer Function 정보 확인
  4. 프로젝트에 Exit명 Assign
  5. Exit 펑션에 로직 넣고 CMOD에 프로젝트 Active
  6. 테스트

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