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,