Implict Enhancement란 스탠다드 오브젝트(펑션, 서브루틴 등)의 처음이나 끝에 소스를 추가하여 우회할 수 있는 방법을 의미한다.
오브젝트의 시작과 끝에 CBO로직을 추가함으로써 기존 로직은 유지하되 요구사항은 충족시킬 수 있는 것이다.
가령 사용자가 이런 요구를 했다고 가정해보자.
화면에 그리드가 출력될 때 어떤 프로그램에서 호출된 것인지 알 수 있도록 팝업을 띄워주세요!
물론 정석은.. alv를 띄워주는 펑션 앞에 type i 메세지를 뿌려주는 것이다.
alv 펑션이 쓰인 곳이 100곳이라고 해도 일일이 다 쫒아가서 수정하는 것도 고되지만 좋은 방법이다.
하지만 좀 더 쉬운 방법이 없을까?
펑션을 호출하는 프로그램을 알려주는 시스템 값인 SY-CPROG 값을 이용한다면,
SY-CPROG를 alv 펑션 앞에 띄워준다면 모든 프로그램에 일괄 적용되어 사용가능하지 않을까?
>>>>

데이터를 끌고 와 reuse alv 펑션으로 뿌려주는 기초적인 프로그램이다.

수행하면 당연히 아무런 액션 없이 기본적인 alv가 출력된다.
여기서 요구사항을 충족시키기 위해 alv 펑션내에서 소스코드 에디터(ctrl + f1)를 열어보자.

아.. 막혔다.
바로 이럴 때 Implicit Enhancement를 통해 기존 소스코드를 건드리는 것 없이 상단에 cbo 로직을 추가함으로써 우회할 수 있다.

스탠다드 펑션 소스코드에서 상단 동글뱅이 버튼(ctrl + f4)를 누르자.
그러면 이렇게 소스코드 라인 옆에 망사가 생긴다.


그리고 상단 메뉴바에서 Edit->Enhancement Operations -> Show Implicit Enhancement Options 경로를 차례대로 선택한다.
그러면 소스코드에 아래처럼 """""""""""""""""" 라인이 한 줄 생긴다.

그 라인에 정확하게 커서를 두고 우클릭을 한 뒤에
Enhancement Operations -> Create Implementation 을 차례대로 선택한다.

Code를 선택한다(Declaration과 Code는 무슨 차이인지 모르겠다. Declaration을 선택한 뒤 소스코드를 집어넣어도 되는 것 같은데).

Enhancement ID와 설명을 입력을 입력하고 체크를 선택한다.
*Enhancement ID: 스탠다드 오브젝트 내에서 관리 될 Enhancement 소스구역 이름

Enhancement도 개발->테스트->운영 이관의 절차를 걸쳐야 하므로 패키지를 할당하고 CTS를 채번해야한다.
(본인은 로컬 오브젝트로...)
그렇게 하면...

소스코드가 열렸다.


요구사항인 ALV 출력 시 호출 프로그램 정보를 나타내는 팝업출력 소스코드를 작성한 뒤 활성화 시킨다.
소스에 오류가 없다면 활성화되면서 위 표시된 주석이 inactive version에서 active version으로 바뀐다.
active가 완료되면 다시 SE37에서 해당 펑션 소스코드를 조회해보면 내가 위에서 작성한 소스코드가 저장되어 있음을 확인할 수 있다. 일반적인 소스코드 에디터 편집방법으로는 절대 수정 불가능하다.

이제 요구사항이 잘 반영되었는지 최초의 레포트 프로그램을 수행해보자.


팝업이 성공적으로 출력되면서...

ALV도 성공적으로 출력되었다.
* 스탠다드는 전사 공통으로 쓰는 오브젝트이므로.. 연습이 끝나면 원복해놓아야 한다.
소스코드에서 Enhance 버튼을 누른 뒤에 cbo 소스 안에 커서를 두고 Undo 버튼을 누른다.
그러면 작성했던 cbo 로직이 사라지는데 그 상태로 active를 하면 소스가 원복된다.


프로그램 오브젝트 리스트에서도 삭제해줘야 한다.
* 틀린 내용은 댓글로 지적해주시면 감사히 받겠습니다 :)

'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] 04. SAP Customer Exit (0) | 2024.11.04 |
[ABAP] 00. SAP Enhancement & Modification (0) | 2024.11.04 |