Sie sind auf Seite 1von 8

How to find BADI , Kernel BADI or USER EXIT for a particular

Transaction code or Progra


There are many options to do that:
Option No: 1:
For finding the BADI: put a break point in CL_EXITA!DLE" #$ass%s &ET_I!'TA!CE (ethod and e)e#ute the
Transa#tion #ode *hene+er it #a$$s a BADI debugger stops at that point,
Ad+antage: It is for sure that you *i$$ get the respe#ti+e BADI,
Disad+antage: It is not possib$e to get -'E".EXIT or kerne$ BADI /As 0erne$ BADI is using &ET BADI synta) to
get the instan#e of its #$ass1'o in that #ase you need to put a break point a$so at &ET BADI statements 2

Option No: 2
This is the most #ommon$y used option: &et the pa#kage in *hi#h the transa#tion #ode be$ongs and open that
pa#kage in 'E34:/you #an #he#k this using transa#tion 'E562
Option No 3:
Try out the Be$o* "eport 7rogram: &i+e a Transa#tion Code as an input and it *i$$ return you ALL the -ser EXIT
and BADI *hi#h #an be used,

*&*
*& Report zget_badi_exit
*&*
*&
*&
*&*
"E78"T 9get_badi_e)it,
TABLE' : tst#1
tadir1
modsapt1
moda#t1
trdir1
tfdir1
en$fdir1
s)s_attrt 1
tst#t,
DATA : :tab LI0E tadir 8CC-"' 4 ;IT EADE" LI!E,
T<7E' : BE&I! 8F stab 1
in#$ude T<7E tadir 1
t)t/=42 T<7E #1
E!D 8F stab,
DATA : it_tab T<7E 'TA!DA"D TABLE 8F stab,
DATA : *a_tab LI0E LI!E 8F it_tab,
DATA : fie$d>/642,
DATA : +_de+#$ass LI0E tadir.de+#$ass,
DATA : it_badi_spot T<7E 'TA!DA"D TABLE 8F badi_spot,
DATA : *a_badi_spot LI0E LI!E 8F it_badi_spot,
7A"A(ETE"' : p_t#ode LI0E tst#.t#ode1
p_pgmna LI0E tst#.pgmna ,
DATA: otr_#onte)t T<7E sotr_#nt)t1
otr_te)t T<7E sotr_te)t1
otr_key T<7E sotr_key,
DATA *a_tadir T<7E tadir,
'TA"T.8F.'ELECTI8!,
IF !8T p_t#ode I' I!ITIAL,
'ELECT 'I!&LE ? F"8( tst# ;E"E t#ode E@ p_t#ode,
EL'EIF !8T p_pgmna I' I!ITIAL,
tst#.pgmna A p_pgmna,
E!DIF,
IF sy.subr# E@ 4,
'ELECT 'I!&LE ? F"8( tadir into *a_tadir
;E"E pgmid A B"6T"%
A!D ob:e#t A B7"8&%
A!D ob:_name A tst#.pgmna,
(8CE : tadir.de+#$ass T8 +_de+#$ass,
IF sy.subr# !E 4,
'ELECT 'I!&LE ? F"8( trdir
;E"E name A tst#.pgmna,
IF trdir.sub# E@ BF%,
'ELECT 'I!&LE ? F"8( tfdir
;E"E pname A tst#.pgmna,
'ELECT 'I!&LE ? F"8( en$fdir
;E"E fun#name A tfdir.fun#name,
'ELECT 'I!&LE ? F"8( tadir
;E"E pgmid A B"6T"%
A!D ob:e#t A BF-&"%
A!D ob:_name E@ en$fdir.area,
(8CE : tadir.de+#$ass T8 +_de+#$ass,
E!DIF,
E!DIF,
'ELECT ? F"8( tadir I!T8 tab$e :tab
;E"E pgmid A B"6T"%
A!D ob:e#t I! /%'(8D%1 B'X'D%2
A!D de+#$ass A +_de+#$ass,
'ELECT 'I!&LE ? F"8( tst#t
;E"E sprs$ E@ sy.$angu
A!D t#ode E@ p_t#ode,
*Get Kernal BADIS
'ELECT ? F"8( badi_spot A' a
I!!E" D8I! enhspotheader A' b
8! aEenhspotname E@ bEenhspot
I!!E" D8I! tadir A' #
8! aEenhspotname E@ #Eob:_name
I!T8 C8""E'78!DI!& FIELD' 8F TABLE it_badi_spot
;E"E #Epgmid E@ B"6T"%
A!D #Eob:e#t E@ BE!'%
A!D #Ede+#$ass E@ +_de+#$ass,
IF sy.subr# E@ 4,
$oop at it_badi_spot into *a_badi_spot,
mo+e *a_badi_spot.BADI_!A(E to *a_tadir.8BD_!A(E,
mo+e BE!'% to *a_tadir.ob:e#t,
append *a_tadir to :tab,
E!DL887,
E!DIF,
F8"(AT C8L8" C8L_78'ITICE I!TE!'IFIED 8FF,
;"ITE:F/>52 BTransa#tion Code G B1
H4/H42 p_t#ode1
IJ/J42 tst#t.tte)t,
'0I7,
IF !8T :tabKL I' I!ITIAL,
;"ITE:F/>4J2 sy.u$ine,
F8"(AT C8L8" C8L_EADI!& I!TE!'IFIED 8!,
* Sorting the internal Table
'8"T :tab B< ob:e#t,
DATA : *f_t)t/=42 T<7E #1
*f_smod T<7E i 1
*f_badi T<7E i 1
*f_ob:e#tH/642 T<7E #,
CLEA" : *f_smod1 *f_badi 1 *f_ob:e#tH,
* Get the total SMOD
IF :tabKL I' !8T I!ITIAL,
F8"(AT C8L8" H I!TE!'IFIED 8!,
;"ITE : F BC$i#k on the -'E" EXIT or BADI to CIE;FEDIT%,
E!DIF,
L887 AT :tab I!T8 *a_tadir,
AT FI"'T,
F8"(AT C8L8" C8L_EADI!& I!TE!'IFIED 8!,
;"ITE:F> sy.+$ine1
H BEnhan#ementF Business Add.in%1
I> sy.+$ine 1
IH BDes#ription%1
>4J sy.+$ine,
;"ITE:F/>4J2 sy.u$ine,
E!DAT,
CLEA" *f_t)t,
AT !E; ob:e#t,
IF *a_tadir.ob:e#t A B'(8D%,
*f_ob:e#tH A BEnhan#ement% ,
EL'EIF *a_tadir.ob:e#t A B'X'D%,
*f_ob:e#tH A B Business Add.in%,
EL'EIF *a_tadir.ob:e#t A BE!'%,
*f_ob:e#tH A B 0erna$ Business Add.in%,
E!DIF,
F8"(AT C8L8" C8L_&"8-7 I!TE!'IFIED 8!,
;"ITE:F> sy.+$ine1
H *f_ob:e#tH1
>4J sy.+$ine,
E!DAT,
CA'E *a_tadir.ob:e#t,
;E! B'(8D%,
*f_smod A *f_smod M >,
'ELECT 'I!&LE modte)t I!T8 *f_t)t
F"8( modsapt
;E"E sprs$ A sy.$angu
A!D name A *a_tadir.ob:_name,
F8"(AT C8L8" C8L_!8"(AL I!TE!'IFIED 8FF,
;E! B'X'D%,
* !or BADi"
*f_badi A *f_badi M > ,
'ELECT 'I!&LE te)t I!T8 *f_t)t
F"8( s)s_attrt
;E"E sprs$ A sy.$angu
A!D e)it_name A *a_tadir.ob:_name,
F8"(AT C8L8" C8L_!8"(AL I!TE!'IFIED 8!,
;E! BE!'%,
*f_badi A *f_badi M >,
F8"(AT C8L8" C8L_!8"(AL I!TE!'IFIED 8!,
"EAD TABLE it_badi_spot I!T8 *a_badi_spot ;IT 0E<
badi_name A *a_tadir.ob:_name,
IF sy.subr# E@ 4,
otr_key.#on#ept A *a_badi_spot.shortte)t_ob:,
CALL F-!CTI8! B'8T"_"EAD_TEXT_;IT_0E<%
EX78"TI!&
$angu A sy.$angu
#onte)t A otr_#onte)t
sotr_key A otr_key
I(78"TI!&
entry A otr_te)t
EXCE7TI8!'
no_entry_found A >
$anguage_missing A H
8TE"' A 6,
IF sy.subr# NO 4,
(E''A&E ID sy.msgid T<7E sy.msgty !-(BE" sy.msgno
;IT sy.msg+> sy.msg+H sy.msg+6 sy.msg+I,
E!DIF,
(8CE otr_te)t.te)t T8 *f_t)t,
E!DIF,
E!DCA'E,
;"ITE:F> sy.+$ine1
H *a_tadir.ob:_name 8T'78T 8!1
I> sy.+$ine 1
IH *f_t)t1
>4J sy.+$ine,
AT E!D 8F ob:e#t,
;"ITE : F/>4J2 sy.u$ine,
E!DAT,
E!DL887,
;"ITE:F/>4J2 sy.u$ine,
'0I7,
F8"(AT C8L8" C8L_T8TAL I!TE!'IFIED 8!,
;"ITE:F B!o,of E)its:% 1 *f_smod,
;"ITE:F B!o,of BADis:% 1 *f_badi,
EL'E,
F8"(AT C8L8" C8L_!E&ATICE I!TE!'IFIED 8!,
;"ITE:F/>4J2 B!o usere)its or BADis e)ist%,
E!DIF,
EL'E,
F8"(AT C8L8" C8L_!E&ATICE I!TE!'IFIED 8!,
;"ITE: F/>4J2 BTransa#tion does not e)ist%,
E!DIF,
AT LI!E.'ELECTI8!,
DATA : *f_ob:e#t T<7E tadir.ob:e#t,
CLEA" *f_ob:e#t,
&ET C-"'8" FIELD fie$d>,
CEC0 fie$d>/32 E@ B;A_TADI"%,
"EAD TABLE :tab ;IT 0E< ob:_name A sy.$ise$M>/642,
(8CE :tab.ob:e#t T8 *f_ob:e#t,
CA'E *f_ob:e#t,
;E! B'(8D%,
'ET 7A"A(ETE" ID B(8!% FIELD sy.$ise$M>/>42,
CALL T"A!'ACTI8! B'(8D% A!D '0I7 FI"'T 'C"EE!,
;E! B'X'D%,
'ET 7A"A(ETE" ID BEX!% FIELD sy.$ise$M>/H42,
CALL T"A!'ACTI8! B'E>3P A!D '0I7 FI"'T 'C"EE!,
;E! BE!'%,
'ET 7A"A(ETE" ID BEX!% FIELD sy.$ise$M>/642,
CALL T"A!'ACTI8! B'E>3P A!D '0I7 FI"'T 'C"EE!,
E!DCA'E,

Das könnte Ihnen auch gefallen