일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- alv 정형화
- ole
- 스마트폼
- ALV
- 이명박
- 방화벽
- Enhancement
- EXIT
- badi
- KOSA
- SAP
- 유닉스
- UTF-8
- 동적 쿼리
- 오라클 함수
- Smart Forms
- ABAP
- 머니플랜
- Java
- FI 용어정리
- selection screen
- fi
- List box
- EUC-kr
- sapa
- 엑소버드
- function
- gimp
- 가계부
- Standard Function
- Today
- Total
Drunken Lion
USER EXIT_BADI 간단정리 본문
<< USER-EXIT >>
※ [tcode] - [ 설 명 ]
CMOD - Project Management of Sap Enhancements
: 프로젝트를 생성한다.
SMOD - SAP Enhancements
: User-Exit Enhancements를 설정할 수 있다.
(component를 생성하여 소스코드로 설정)
※ 설명 : Standard Program에서 약간의 modification을 할 수 있게 하는 것으로,
SAP에서 User-Exit point를 제공한다.
※ USER-EXIT 첨부자료,
USER-EXIT_개요.gul
(출처: ??)
USER-EXIT이란(SDN 영어).doc
User Exit Examples.doc
(출처: SDN, SAP HELP)
===================================================================
<< BAdIs (Business Add-Ins) >>
※ [tcode] - [ 설 명 ]
SE18 - BAdI Builder: Initial Screen for Definitions
: BAdI 를 정의한다.(보통 정의되어 있다.)
SE19 - BAdI Builder: Initial Screen for Implementations
: BAdI 를 적용한다.
※ 설명 : BAdIs는 USER-EXIT과 비슷한 역할을 하지만, 클래스로 이루어져 있다.
선언부(Definition)와 적용부(Implementation)로 나뉜다.
※ BAdI 첨부자료,
Business Add-Ins(BADIs).gul
(출처: 아리샘)
Implementing a BADI(SDN 영어).pdf
BAdI(SDN 영어).doc
(출처: SDN, SAP HELP)
Business Add-Ins사용예.doc
(출처: ??)
※ 트랜잭션시 해당되는 BAdI 를 검색하는 방법 (출처 : SDN)
우선, 창을 2개 띄우고
첫번째 창에서
1> SE24로 가서 CL_EXITHANDLER 라는 클래스를 연다.
2> GET_INSTANCE 를 더블클릭한다.
3> 소스 코드 28행 정도에서 sy-subrc가 포함되어 있는 줄을 breakpoint 설정한다.
두번째 창에서
4> SAP standard transaction을 실행한다.
5> exit 로직이 필요한 곳에서 버튼을 누르면 breakpoint가 걸리며 debugging 이 시작된다.
6> Field names 란에 exit_name이라 치면 그 당시의 BAdI 이름이 나온다.
7> F8 을 눌러가며 해당하는 BAdI를 찾아 SE18에서 확인한다.
원문
====================================================================
Follow the below steps to find out what all BADI's are called when you press any button in any transaction.
1) Goto se24 (Display class cl_exithandler)
2) Double click on the method GET_INSTANCE.
3) Put a break point at Line no.25 (CASE sy-subrc).
Now
4) Execute SAP standard transaction
5) Press the required button for which you need to write an exit logic, the execution will stop at the break point.
6) Check the values of variable 'exit_name', it will give you the BADI name called at that time.
7) This way you will find all the BADIs called on click of any button in any transaction.
<< 관련 CBO 프로그램 ( 출처 : SDN ) >>
프로그램 명 : ZSEARCH_BADI_USER_EXIT
프로그램 설명 :
각 트랜잭션 코드나 프로그램에 있는
USER-EXIT 와 BAdI(Business Add-In)를 찾아서 list-up 하는 프로그램
USER-EXIT 클릭 -> SAP Enhancements(SMOD)로 연결
BAdI 클릭 -> BAdI Builder: Definition (SE18)로 연결
소스코드 :
====================================================================
*Hi, you can use this code to search badi/user exits for tc or program name
*&---------------------------------------------------------------------*
*& Report ZSEARCH_BADI_USER_EXIT
*&
*&---------------------------------------------------------------------*
*&
*& Wyszukiwanie User exit i Badi na podstawie numeru transakcji
*&
*&---------------------------------------------------------------------*
REPORT zsearch_badi_user_exit.
TABLES : tstc,
tadir,
modsapt,
modact,
trdir,
tfdir,
enlfdir,
sxs_attrt ,
tstct.
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA : field1(30).
DATA : v_devclass LIKE tadir-devclass.
PARAMETERS : p_tcode LIKE tstc-tcode,
p_pgmna LIKE tstc-pgmna .
DATA wa_tadir TYPE tadir.
START-OF-SELECTION.
IF NOT p_tcode IS INITIAL.
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
ELSEIF NOT p_pgmna IS INITIAL.
tstc-pgmna = p_pgmna.
ENDIF.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.
MOVE : tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name EQ enlfdir-area.
MOVE : tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
SELECT * FROM tadir INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object IN ('SMOD', 'SXSD')
AND devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:/(19) 'Transaction Code - ',
20(20) p_tcode,
45(50) tstct-ttext.
SKIP.
IF NOT jtab[] IS INITIAL.
WRITE:/(105) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
* Sorting the internal Table
SORT jtab BY object.
DATA : wf_txt(60) TYPE c,
wf_smod TYPE i ,
wf_badi TYPE i ,
wf_object2(30) TYPE c.
CLEAR : wf_smod, wf_badi , wf_object2.
* Get the total SMOD.
LOOP AT jtab INTO wa_tadir.
AT FIRST.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:/1 sy-vline,
2 'Enhancement/ Business Add-in',
41 sy-vline ,
42 'Description',
105 sy-vline.
WRITE:/(105) sy-uline.
ENDAT.
CLEAR wf_txt.
AT NEW object.
IF wa_tadir-object = 'SMOD'.
wf_object2 = 'Enhancement' .
ELSEIF wa_tadir-object = 'SXSD'.
wf_object2 = ' Business Add-in'.
ENDIF.
FORMAT COLOR COL_GROUP INTENSIFIED ON.
WRITE:/1 sy-vline,
2 wf_object2,
105 sy-vline.
ENDAT.
CASE wa_tadir-object.
WHEN 'SMOD'.
wf_smod = wf_smod + 1.
SELECT SINGLE modtext INTO wf_txt
FROM modsapt
WHERE sprsl = sy-langu
AND name = wa_tadir-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WHEN 'SXSD'.
* For BADis
wf_badi = wf_badi + 1 .
SELECT SINGLE text INTO wf_txt
FROM sxs_attrt
WHERE sprsl = sy-langu
AND exit_name = wa_tadir-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
ENDCASE.
WRITE:/1 sy-vline,
2 wa_tadir-obj_name
41 sy-vline ,
42 wf_txt,
105 sy-vline.
AT END OF object.
WRITE : /(105) sy-uline.
ENDAT.
ENDLOOP.
WRITE:/(105) sy-uline.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:/ 'No.of Exits:' , wf_smod.
WRITE:/ 'No.of BADis:' , wf_badi.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'No userexits or BADis exist'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:/(105) 'Transaction does not exist'.
ENDIF.
AT LINE-SELECTION.
DATA : wf_object TYPE tadir-object.
CLEAR wf_object.
GET CURSOR FIELD field1.
CHECK field1(8) EQ 'WA_TADIR'.
READ TABLE jtab WITH KEY obj_name = sy-lisel+1(20).
MOVE jtab-object TO wf_object.
CASE wf_object.
WHEN 'SMOD'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
WHEN 'SXSD'.
SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
ENDCASE.
출처: http://kr.blog.yahoo.com/cykim1973/
'SAP > ABAP' 카테고리의 다른 글
셀렉션 스크린에 List Box 만들기 (0) | 2008.08.19 |
---|---|
SD 관련 T-code (0) | 2008.08.05 |
HELP 에 추가로 달기 (0) | 2008.07.16 |
[USER_EXIT] 로그인 시 EXIT. (0) | 2008.07.14 |
BADI 검색 프로그램 (0) | 2008.06.05 |