일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ABAP
- docker
- SAP ABAP
- 오라클
- 자바
- IT
- JavaScript
- 영어
- Programming
- 머신러닝
- 딥러닝
- Mac
- SAP ERP
- 유럽여행
- oracle
- 노드
- node.js
- sap mm
- Python
- Spring Framework
- 비지니스영어
- 오라클 디비
- 자바스크립트
- 도커
- SAP
- db
- Oracle DB
- Java
- 파이썬
- nodejs
- Today
- Total
JIHYUN JEONG
[SAP 용어정리 ] 본문
<TAW 12_2: 5주차>
핵심 개념들: Enhancement(Using Customer exits)/Modification/new enhancement/BAdI/Web DynPro
Modification: SAP에서 Enhancement를 제공하지 않을 때, Standard program을 강제적으로 수정하는 것. SAP에서 권장하지 않으며 현재는 거의 쓰지 않음. (new enhancement에 의해 거의 커버 가능)
SAP 시스템의 업그레이드에 문제가 생길 수 있음.
User Exit
Enhancement : SAP application에 고객의 변경을 예상하고 미리 구멍을 만들어 놓아, 그 구멍에 원하는 부분을 구현하여 끼워넣는 것.
Enhancement 가 가능한 것
ABAP Dictionary상의 Tables, Data elements
Customer exits
Business Transaction Events (BTE)
Business Add-Ins(BAdI)
Unit 1. Changing the SAP standard system. (overview)
ABAP workbench 입장에서 SAP R/3 시스템을 change할 수 있는 3가지 방법
Modification
Enhancement
Customer development(개발)
Enhancement를 통한 table 변경(추가) 방법 2가지 : customer request에 의해서 추가하고 싶은 column이 있을 때, 추가 가능. column이름을 반드시 ‘YY’나 ‘ZZ’으로 시작해야 한다. (이유: SAP 시스템 업그레이드시 업버전에서 추가된 필드명과 사용자가 추가한 필드명이 충돌하지 않게 하기 위해서)
Append structure: 추가하고 싶은 필드가 생겼을 때
Customizing includes(“CI includes”) : SAP가 이미 사용자의 변경(확장 요청)을 예상하고 테이블을 만들어놓은 것.
A를 통해 B를 확장.
user exit : subroutine
customer exit : function module
Business Transaction event(BTE): function module
Business Add-In : Method
Unit 2.Enhancing Dictionary Elements
Table Enhancements (Enhancement 중 append structure/customizing includes(=CI include))
Append structure: SAP에서 미리 예상하지 않은 것. 해당 table만 변경됨.
Customizing include : SAP에서 미리 예상한 것. 해당 테이블 변경 시 이를 참조하는 다른 모든 테이블들도 변경분이 반영됨. SAP가 그렇게 구성해 놓았기 때문.) 즉 CI_ABC라는 CI include를 사용하는 모든 테이블은 사용자의 변경확장분이 적용된다.
SE11 화면 상단 오른쪽에 버튼 눌러 Standard table 확장 가능. YY, ZZ 명명규칙 지켜서 필드 이름 지정.
새로운 version에서 필드가 추가되면 Enhancement에 의해 확장된 table의 (YY, ZZ) 뒤쪽에 새로운 칼럼이 추가됨.
Text Enhancements
T-code: CMOD 사용해서 특정 data element를 enhancement할 수 있다. (overwriting)
SAP 시스템 업그레이드 시 SAP 스탠다드의 내용으로 restore, 즉 복원됨. 사용자는 자기가 변경한 내용을 유지하고 싶음. -> ‘restoring SAP field labels(기능 이름)’를 통해 원하는 버전으로 복원 가능.
Restoring SAP field labels
SAP standard의 특정 시점으로 복원 가능
Customer가 변경한 특정 시점으로도 복원 가능.
Customer가 변경한 data element에 대한 documentation을 standard documentation 밑에 추가할 수 있음. (역시 t-code CMOD, Goto->…->EN-New Customer Documentation 선택 시 해당 documentation에 추가 가능(수정&재작성하는 것이 아님!). Enhancement 통해서)
Unit 3. Enhancements Using Customer Exits
Customer exit의 종류 (MFC로 외우자)
Program exit (Function module을 확장)
Standard 프로그램 안에 ‘CALL CUSTOMER’가 있으면 확장 가능.
Menu exit (메뉴 확장)
키워드는 동일하게 ‘CALL CUSTOMER’
Menu exit에 해당하는 function 이름은 ‘+’로 시작함.
Screen exit (화면 내용 확장)
SAP에서 미리 확장을 예상하고 subscreen area 공간을 확보해놓음.
program끼리의 data 전달은 importing/exporting parameter를 통해 이루어진다.
Standard 프로그램 안에 ‘CALL SUBSCREEN’이 있으면 확장 가능.
하나의 Enhancement는 반드시 하나의 Enhancement project에만 종속적이어야함.
Enhancement project 만드는 t-code: CMOD
SAP에서 제공해준 Enhancement 조회하는 t-code: SMOD
Enhancement project의 이름은 Z또는 Y로 시작하지 않아도 된다.
Enhancement project에는 여러 개의 Enhancement를 assign할 수 있다.
Enhancement project 완료 시 request No. 이관(transport)을 통해 타시스템(운영서버 등)에도 적용 가능.
Customer exit을 위한 function group의 이름에는 ‘X’를 넣는다. ex. SAPLXAAA
Unit 4. Business Add-Ins (classic BAdI)
: Class로 이루어져 있는, Enhancement를 할 수 있는 부분.
기존 Enhancement를 구현한 부분은 오직 한 번만 사용 가능했으나 BAdI를 통해 여러 프로젝트에서 해당 Enhancement를 사용 가능해짐.
사용 방법
BAdI의 reference를 얻는다. (‘CL_EXITHANDLER’ : 일종의 도우미 클래스. 코드에 이게 존재하면 BADI도 존재.)
필요한 BAdI instance의 method를 호출한다.
program에서 ‘cl_exithandler’를 찾아서 BAdI의 사용 여부를 확인 가능.
SE18: BAdI에 대한 정의를 볼 수 있는 t-code.
SE19: BAdI를 구현할 때 쓰는 t-code.
BAdI 사용시 multiple use가 enable되어 있으면 어떤 BAdI가 먼저 호출될지 모르므로 시간종속적인 로직을 넣으면 안됨.
filter types: 특정 필터 값에 따라 BAdI의 implementation이 틀리게 동작하고 싶을 때 사용.
BAdI implementation class이름: ZCL_IM_ 또는 CL_IM_으로 시작.
BAdI interface 이름: IF_EX_또는 ZIF_EX로 시작.
Unit 5. Modifications
:user exit
corrections and repairs.
correction: original에 대한 수정을 하는 것. (original: 최초로 만들어진 것. original을 install하면 copy본이 내 시스템에 복사되는 것)
repair: copy본에 대한 수정을 하는 것.
Modification은 SSCR에 등록하고 key값을 SAP로부터 받아야 할 수 있다.
Modification 과정
standard program에서 수정버튼 누름(연필모양)
SSCR 키값 넣기
warning message 뜸
Change request no.입력.
Modification 작업을 하는 동안 change lock이 걸려 다른 user들은 사용할 수 없게 된다. release되기까지 import 불가. 빨리 수정/test/release해야함.
Modification assistant
사용을 위한 전제조건 3가지
SSCR Key 존재
Change request no. 존재
“eu/controlled modification” profile이 on으로 켜있어야함. (주로 BC가 시스템에 설정)
User exit : modification 중 하나의 기능. Enhancement인데 기술적으로는 modification에 속한다. include 프로그램 이름 뒤에서 두 번째에 ‘Z’가 있다. (ex. MV45AFZB)
include 프로그램 안의 subroutine들이 이미 들어가 있고 이를 수정하여 사용.
subroutine들의 이름은 ‘userexit_’으로 시작
특징
blank subprograms
includes delivered once: upgrade시 다시 제공되지 않는다. 다른 이름으로 새로운 include는 제공 가능)
mainly used in SD
Technically: modification (해당 include가 MV로 시작하는 standard니까)
코드 내에 ‘perform userexit’가 있으면 user exit이 존재함.
Note assistant : SSCR key가 필요 없다.
버그 수정, 작은 개선 작업 등에 사용.
Correction of individual errors. does not resupport packages
: note를 통해서 system에 대량의 변경을 가하는 것은 아니다. 사소한 문제에 대한 변경을 하는 것.
‘SNOTE’ : 현재 시스템에 어떤 notes가 적용되어 있는지, 각 note의 진행상황도 볼 수 있다.
Modification Adjustment: 스탠다드와 사용자에 의해 개발된 또는 modify된 부분이 겹치면->adjustment 필요.
이를 위한 t-code: SPDD(Dictionary object adjustment- Domains/Data elements/tables), SPAU(all other ABAP Repository objects)
Unit 6. Enhancements
: 7.0 new feature. 기존의 customer exit을 통해 했던 기능을 대체 가능. implicit enhancement/explicit enhancement, new BAdI, Switch Framework
Enhancement points (2가지) : modification 없이 SAP program, SAP function module, SAP methods 등에 소스코드 추가, 변수나 파라미터 선언이 가능해졌다.
implicit: No SAP preparation. 새로 도입된 개념. 프로그램 단에 코드 추가하여 사용가능.
explicit: prepared by SAP developers.
ENHANCEMENT-POINT : 원하는 로직을 추가 가능.
ENHANCEMENT-SECTION : 원래 SAP 코드를 REPLACE하고 싶을 때 사용
Enhancement spot: Explicit enhancement points(추가의 개념)/Explicit enhancement sections(변경, replace의 개념)/ New BAdI는 enhancement spot을 통해 관리된다. (composite enhancement spots: Enhancement spot들의 조합)
New BAdI
classic BAdI에 비해 performance가 개선됨.
추가적인 기능이 구현됨
Enhanced(확장된) filter concept.
option to inherit attributes from sample implementation classes
…
Integration into the new Enhancement Framework
Integration into the Switch Framework. (on/off로 사용여부 선택 가능)
classic BAdI 구현:’cl_exithandler’ 찾아보면 됨. class를 통해 handler 취득.
New BAdI 구현: ‘GET BADI’/’CALL BADI’ 찾아보면 됨. (전자는 handle을 얻어오는 것, 후자는 BAdI handle의 method를 호출하는 것.
New BAdI는 커널 안의 BAdI handle을 이용하여 method들을 호출 (관리가 집중화 되었다. 효율적인 관리가 가능.)
New BAdI 개념은 classic과 동일
Adapter class를 사용하는 것이 아니라 core kernel안에서 BAdI에 대한 handle을 얻어오고 이를 통해 각각의 implementation된 method들을 호출해줌.
New BAdI는 개선된 filter 기능 제공: filter – 필터값에 따라서 어떤 implementation을 호출할지를 결정할 수 있다.
Switch Framework : New Enhancement 기술은 모두 여기서 통합 관리됨. 원하는 기능만 스위치를 켜고 꺼서 사용 가능. 관련 t-code: SFW5
주의: New enhancement만 관리 가능. activate/deactivate와 다른 개념임.
실습!
call customer 찾기 -> customer exit 존재여부 확인
cl_exithandler 찾기 -> classic BAdI 있는지 확인
GET BADI 찾기 -> New BAdI 있는지 확인
셋 다 없으면 SAP가 enhancement를 미리 마련하지 않은 것!
코드를 추가해야…. explicit enhancement가 없으면 implicit enhancement로..