앞 전에 우리는 SAP R/3 구현 방법의 4가지를 알아보았다.

2020/08/11 - [분류 전체보기] - SAP R/3 구현 방법

 

그 중 하나인 Enhancement는 실무에서는 흔히 'EXIT' 이라고 불리고 있지만 

사실 Enhancement를 구현하기 위한 방법 중 하나이지 그 외 다양한 방법이 존재한다. 

 

오늘은 가장 많이 사용하는 Enhancement 중 모듈에서 공통적으로 많이 사용하는

Customer ExitBadi에 대해서 포스팅 해보도록 하겠다.

 

Enhancement는 일반적으로 표준 프로그램 아무 곳에나 개발 소스를 확장할 수는 없으며

표준에서 미리 정해진 곳에서만 적용할 수 있다.

그 정해진 위치는 일반적으로 프로그램의 프로세스 구간구간 별로 나누어 놓았으며, 

프로그램 시작 시점, 저장 전 시점. 저장 후 시점 등을 예로 들 수 있다.


  Customer Exit  

 가장 많이 사용하는 Enhancement 방법으로 Enhancement를 흔히 'EXIT'이라 불리는 이유가 여기에 있다.

 T-Code 'SMOD'를 통해 SAP에서 제공하는 Enhancement 를 조회하여 해당하는 Customer Exit을 찾아볼 수 있다.  

 

< MM모듈 PO 관련 Customer Exit 화면 >

화면과 같이 Customer Exit은 4가지 영역으로 나눈다. 

  •      Function Exits - 프로그램 Source Code 확장 
  •      Function codes - 프로그램 Menu Path 확장 ,
  •      Screen Area -  프로그램 Screen확장   
  •      Includes - Table의 확장 구조의 필드 확장  

원하는 Customer Exit( Enhancement 번호) 을 찾았으면 필요한 Enhancement 들을 Group 화하고

관리할 수 있는 단위인 'Project'를 생성하고 그 곳에 Assign을 한다. ( T-Code 'CMOD' )

해당 Enhancement 번호를 Assign한 후 Component 내역 중 원하는 Customer Exit에 작업을 하면 된다. 

Function Exit은 Function 내의 'Z~'  시작하는 인클루드 프로그램을 통해 원하는 로직을 적용한다.


  Badi ( Business Add-In )  

Customer Exit 과 유사하지만 좀 더 확장된 개념으로 OO( Oriented Object )가 도입되면서

Class기반으로 구현되어져 있다.

즉, Customer Exit은 Function BaseBadi는 Class Base로 구현되어 있는 점이 큰 차이점이다. 

기본적으로 Customer Exit 처럼 Source Code, Screen, Menu 를 확장할 수 있다.

추가 속성으로는 Multiple-Use 와 Filter-Depend 옵션이 존재하며 Customer Exit에는 존재하지 않는 부분이다.

   * Multiple Use는 해당 Badi의 구현부를 여러개 만들 수 있음을 말한다. 

   * Filter-Depend. 적용시 해당 Type의 정해진 값인 경우만 구현부를 호출하도록 한다. 

< SD-Delivery 관련 BADI 화면 >
< SD-Delivery 관련 BADI의 Method >

Badi 는 정의부와 구현부로 나뉘어 있으며, 표준에서는 사전에 Badi가 정의되어 프로그램 

프로세스 구간별로 심어져 있다. 

구현부 클래스는 정의부를 기반으로 생성하고 그 안의 Method에 확장할 추가 로직을

삽입하여 적용한다.


어떤 경우에서는 표준 프로그램에서 동일 프로세스 구간에 Customer Exit 과 Badi 둘 다 

확장 공간이 존재하는 경우도 있다. 

딱히 정답은 없으므로 원하는 Enhancement 방법을 택해도 무방하다.

유지보수 측면에서는 이미 Enhancement가 반영된 곳이 있다면 그 곳에 이어서

추가하는 것을 좀 더 권장하는게 양쪽에 로직이 분산되면 그 만큼 관리포인트가 늘어나기 때문이다. 

+ Recent posts