enhancement 7

[ABAP] 08. SAP Customer Exit: 정리

Customer Exit은 스크린, 메뉴, 로직에 대해 Function을 통해 스탠다드 티코드를 Enhancement 할 수 있는 방법이다.​티코드 'CMOD' 에서 프로젝트 라고 하는 Exit을 관리하는 묶음 단위를 먼저 정의(생성)해야한다.​정의했다면 프로젝트 안에 들어갈 Exit 명을 입력해야 한다.​Exit을 찾기 위해서는 가장 먼저,소스 혹은 오브젝트 내에 단서를 기준으로 Enhance 가능한 티코드인지 확인이 필요하다. Exit단서Function ExitCall customer-function 'xxx'Menu Exit+'xxx'Screen ExitCall customer-subscreen 단서를 찾았다면해당 부분의 티코드를 포함하는 개발클래스, 프로그램 정보, 스크린정보 등을 종합하여 SMO..

SAP/Enhancement 2024.11.05

[ABAP] 07. SAP Customer Exit: Screen Exit

Screen Exit이란 스탠다드 티코드의 화면에 cbo 필드를 추가하는 것이다.​SAP는 스크린의 서브스크린에 필드를 추가할 수 있도록 열어놓았는데, 바로 그 부분에 개입하여 exit을 수행하는 것이다.​앞서 봤던 Function Exit, Menu Exit과 동일하게 Screen Exit도 어떻게 수정포인트(Exit)를 찾을 수 있을까?​Function Exit이 'Call Customer-function'으로 시작하는 것 처럼Screen Exit도 'Call Customer-Subscreen'으로 시작한다.즉, 스크린 PBO 내에 'Call Customer-Subscreen' 이 있어야 하는데, 찾는 방법은 다음과 같다.    찾고자 하는 티코드 스테이터스를 띄우고 스크린 넘버를 더블클릭하여 로직을..

SAP/Enhancement 2024.11.05

[ABAP] 06. SAP Customer Exit: Menu Exit

SAP는 상단 메뉴바에도 유저 메뉴를 심을 수 있도록 열어놓았는데 해당 Exit 포인트를 Menu Exit이라고 한다.​먼저 티코드에 메뉴 Exit이 가능하도록 열려있는 티코드인지 확인이 되어야한다. 확인 방법은 다음과 같다. 스탠다드의 gui status 를 연다 MENU EXIT은 + 라는 문자와 3가지 문자로 구성되어 있다.설명에는 Customer Exit이라고 적혀있으므로 쉽게 식별 가능하다.​프로그램명(SAPLS38E)과 Exit 펑션코드(+PGE)를 찾았다면 Exit 명을 찾을 수 있다. 내가 수정하려는 Exit의 명칭은 SEUED001 이다.Exit 명을 찾았다면 이후 절차는 Function exit과 같다.티코드 CMOD -> 프로젝트 생성 -> Enhancement Assignment에 ..

SAP/Enhancement 2024.11.04

[ABAP] 05. SAP Customer Exit: Function Exit

수정해야 할 부분에 걸려있는 Function 모듈을 찾았다면, 어떻게 수정해야 할까?​​먼저 티코드 CMOD에서 *프로젝트를 정의한다.*프로젝트: Exit(customer function)을 묶어 관리하는 하나의 묶음단위프로젝트를 만들었다면 프로젝트 안에 Exit(Function)명을 입력해야 하므로 스탠다드 티코드 로직 안에 있는 Exit 포인트(Call Customer~)를 찾아야 한다.단, 해당 Exit 포인트가 내가 수정할 부분이 맞는지 점검이 필요하다. 위 단계에 따라 Exit 명을 확인했다면 프로젝트에 Exit을 입력한다. 프로젝트에 Exit 할당이 끝났다면, 해당 Exit(Function)에 CBO 로직을 삽입해야 한다. Z INCLUDE문은 로직을 입력할 수 있다.​본 포스팅에서 예제로 해..

SAP/Enhancement 2024.11.04

[ABAP] 04. SAP Customer Exit

Customer Exit은 Function 기반의 Exit이다.SAP는 스탠다드 티코드 곳곳에 customer function을 심어놓았다.해당 customer function에는 Z네이밍의 INCLUDE 프로그램이 선입력되어있다.​알다시피 우리는 Z프로그램을 수정할 수 있다.즉, SAP는 유저에게 스탠다드 티코드의 수정 포인트로써 Z프로그램을 customer function이라는 이름의 특수 function에 심어놓은 것이다.​customer function도 결국 function이므로 sap의 가이드에 따라 파라미터를 넣고 받아야 한다는 점은 있지만,기존 스탠다드 티코드의 정합성을 깨트리지 않기 위함이 아닐까?​먼저 Customer Exit은 3가지 종류가 있다.프로그램 로직을 수정할 수 있는 Fun..

SAP/Enhancement 2024.11.04

[ABAP] 01. SAP Implicit Enhancement

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

SAP/Enhancement 2024.11.04

[ABAP] 00. SAP Enhancement & Modification

SAP 유저가 쓸 수 있는 프로그램은 2가지다, CBO와 스탠다드.​사용자가 자신의 요구사항을 들며 CBO를 개발해 달라고 하는 것은 SAP 개발 프레임워크가 제공하지 않는 기능을 요구하지 않는 이상 불가능할 건 없다.하지만 스탠다드 프로그램 수정을 요구한다면 어떻게 해야할까?​수 많은 티코드에서 공용으로 쓰는 INCLUDE 프로그램들과 의미를 알 수 없는 영어로 쓰여진 독일어 소스코드들, 끝없이 안으로 타고 내려가는 계단식 프로그램 구조.​해괴하고 매우 난이도 높은 프로그램의 구조를 문제삼는건 둘째치고 일반 개발자가 SAP 스탠다드 프로그램을 수정하는 것은 Access key를 받기 전까진 불가능하다. ​이런 상황에서 사업부서에서 스탠다드 티코드에 업무상 필요한 기능을 구현해달라고 요구한다면 일반 개발..

SAP/Enhancement 2024.11.04