Sunteți pe pagina 1din 16

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Navigation
Navigation

Dicas A

Published on July 19th, 2012 | by Daiane Zigiotto

BADIs, User-exits,
Enhancements como encontrlos?
Faaaala Zumbizada! Estou de volta no modo zombie = ON por
causa do projeto, testes integrados que esto acabando com a
minha vida (e que nunca acabam!)
Bom, mas chega de mimimi e vamos l!!! Neste post vou falar sobre
alguns mtodos para encontrar Enhancements, User-exits, BADIs e
etc. Aposto que isso pode ajudar muito, principalmente para os
zumbis mais novinhos.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


No, isso no uma user-exit

CALL CUSTOMER FUNCTION


Voc pode colocar um BREAK-POINT nesse comando, que usado
para chamar as User-exits . J falamos dele aqui no blog e se quiser
saber mais, clique aqui.

BADIS
Mtodo 1: V_EXT_ACT e V_EXT_IMP
A BADI faz uma seleo nas tabelas de vises V_EXT_ACT e
V_EXT_IMP. Ento podemos ir na transao ST05 -> Selecionar
SQL Trace e Table Buffer Trace -> Activate Trace -> Executar a
transao -> Deactivate Trace -> Display Trace.
Ir aparecer a tela abaixo:

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Vamos selecionar os seguintes objetos:

No resultado final ir mostrar todas as BADIs na ordem em que elas


foram executadas:

Mtodo 2:
CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE
Na transao SE24, vamos selecionar a classe CL_EXITHANDLER,
ir para o mtodo GET_INSTANCE e colocar um BREAK-POINT.
Atravs do parmetro de exportao EXIT_NAME possvel saber o
nome da BADI que ser chamada.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Mtodo 3: FM SXV_GET_CLIF_BY_NAME.
Um outro mtodo colocando um BREAK-POINT na funo
SXV_GET_CLIF_BY_NAME, que chamada toda vez que alguma
BADI executada.
O parmetro de exportao NAME ir mostrar o nome da BADI.

E a, achou difcil, chato, deprimente? No se assuste, vou mostrar


algumas ferramentas que podem facilitar a sua vida!
H algum tempo atrs precisei encontrar uma user-exit de uma
transao X, e no meio de um frum no SCN encontrei um programa
bastante til! Ele lista todas as user-exits e BADIs de uma transao

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

ou programa.

Abaixo est o cdigo-fonte. No sei quem o autor e no ser


coincidncia encontrar esse mesmo programa em outros fruns (
bem manjado).

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
32
33
34

Default
REPORT z_enhancement_finder NO STANDARD PAGE HEADING
LINE-SIZE 201.

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'

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

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'.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

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 HOTSPOT ON,
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.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


173 WHEN 'SXSD'.
174 SET PARAMETER ID 'EXN' FIELD sy-lisel+1(20).
175 CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
ENDCASE.

Encontrei tambm esse outro relatrio abaixo. O cdigo-fonte est


aqui. Basicamente, tem a mesma funcionalidade, mas eu
particularmente prefiro o anterior.

Outras ferramentas
SNIF
E voc pode estar se perguntando: no existe nenhum relatrio
standard?. Sim, existe! A SAP disponibiliza o SNIF (esse o nome
do programa, no da transao) que lista todos os Costumer
Enhancements ativos:

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

ABAP X-RAY EYE


Pesquisando um pouco mais encontrei um SNIF melhorado, que
inclui algumas opes, como por exemplo, exits para Validao e
Substituio, frmulas (VOFM), Screen-exits e Field-exits. Esse
projeto est disponvel neste link:
http://code.google.com/p/abapexitrayeye/ e para implement-lo
voc precisar usar o SAP Link.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Links teis:
WIKI: Enhancements and Modifications BADI, Enhancement
Framework, User Exits, BTE
WIKI: Ways to find a userexit
Tags: badi, enhancement, user-exit

About the Author


Daiane Zigiotto Abapeira desde 2008, curte som

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

underground, arte urbana, bobeiras geek, luta krav


maga, fala grias idosas e jura que uma pessoa
normal.

Related Posts

User-Exit No deixe as brechas

ABAPZombie Guide to ABAP

descontroladas Parte 2

Parte 20 CALL CUSTOMER-

SMOD/CMOD

FUNCTION

User-Exit No deixe as brechas


descontroladas Parte 1 Clssicas

9 Responses to BADIs, User-exits, Enhancements


como encontr-los?

Renato Bonini says:


July 20, 2012 at 4:23 pm

S um pitaco para achar BADIs, standards


Por padro as Classes Standard da SAP para BADIs tem a
nomenclatura CL_EX_xxxxxxxx. Desta forma, acessando a
transao SE24 e buscar por CL_EX_*, no campo nome da
classe. Vai listar quase todas as BADIs e caso voc no
consiga chegar na BADI em si pela SE24. Use o complemento
do nome da classe na SE18 ou SE19, exemplo:
classe: CL_EX_AC_DOCUMENT => BADI: AC_DOCUMENT
[]s
Reply

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Mauricio Cruz says:


July 23, 2012 at 10:16 am

Animal o post Daiane, eu no manjava desses relatrios no


eu sou meio old-school, sempre tento acha exits c/ os breakpoints em funes e etcs! haha. Mas talvez eu tenha que mudar
um pouco, esses relatrios que voc postou me parecem muito
teis!
Viva o Open Source, e valeu pelo post!
Reply

Danilo Cardoso says:


September 5, 2012 at 7:10 pm

Fala galera!
Esse post ficou muito loko Daiane!
Eu tbm no manjava esses relatrios no. Curto muito aprender
essas paradas, obrigado pelas dicas.
Estava em conversa com a nossa amiga do corao, Priscila
Silva. Falvamos justamente sobre como encontrar BAdIs no
sistema e eu escrevi um e-mail para ela detalhando dois
mtodos. Mas no postarei o e-mail aqui, pois, alm de ser uma
informao redundante, eu escrevi em ingls (s de
brincaiderinha..rs) e utilizei muitas grias do Bronx algumas
pessoas podem achar meio nocivo (mas a Pri riu pra caramba ..
rs).
Abraos.
Reply

Mauricio Cruz says:


September 5, 2012 at 10:53 pm

SERIOUSLY, ARE YOU KIDDING ME ?!? PUT THAT


MOTHERFUCKING BREAK POINT IN THE
MOTHERFUCKING CALL-CUSTOMER FUNCTION
INSTRUCTION OR ILL SHOOT YOU IN YOUR
GODDAMN FACE!
(foi also assim? heoauheoahe)
Reply

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Vinicius says:
September 20, 2012 at 11:35 am

Meu mtodo favorito buscando no SDN! :p


Outra forma tambem usando a boa e velha SE84 ->
Enhancements -> Business Add-ins -> Definitions -> e ai busco
pelo pacote da transao (ME, por exemplo). O mesmo serve pra
customer-exits
Reply

Andra says:
November 11, 2012 at 9:12 am

Aii que orgulho, DAIII!


Nunca tinha lido um post da sua autoria, mujer! Congrats!
Adorei
E me ajudou muito a relembrar Ai ai, d uma saudade e um
aperto no meu corao ver cdigo ABAP.. Mais do que eu sinto
saudade da minha familia. E eu gostaria de estar brincando
hahahaha
Reply

Robson says:
November 25, 2012 at 2:25 pm

Muito bacana o post!


S um detalhe: o link clique aqui do item CALL CUSTOMER
FUNCTION est quebrado.
Abs!
Reply

Mauricio Cruz says:


November 28, 2012 at 10:48 am

Opa, corrigido. Valeu Robson!


Reply

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


Estevam Vieira says:
December 13, 2013 at 8:34 am

Bom dia, Daiane!


Parabns pela inciativa, seu site demais, e uma tima
ferramenta.
Gostaria de saber se voc poderia me indicar dois ABAPs, eu
preciso de Trainee/Jr para regio do Morumbi e Pleno para
regio da Av. Paulista. Meu email rh@vitroit.com.br
Muito Obrigado!
Reply

Leave a Reply
Your email address will not be published. Required fields are marked
*
Name *

Email *

Website

Comment

You may use these HTML tags and attributes: <a href="" title=""> <abbr
title=""> <acronym title=""> <b> <blockquote cite=""> <cite>
<code class="" title="" data-url=""> <del datetime=""> <em>
<i> <q cite=""> <strike> <strong> <pre class="" title="" dataurl=""> <span class="" title="" data-url="">

Post Comment

Notify me of followup comments via e-mail. You can also subscribe without

commenting.

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?

Back to Top

806
Fans

561
Followers

RSS
Subscribe

Popular

Comentrios

Novatos no Mundo SAP Por ond


posted on July 1, 2011

No se perca no mundo mgico d


posted on April 9, 2013

Novo ABAP Debugger Porque la


posted on January 27, 2011

E a tal Desvalorizao do Merc


posted on August 9, 2012

Converso de variveis Hoo t


posted on January 26, 2011

War Report Estrutura tudo,


posted on May 16, 2012

ABAPZombie - Prevenindo consultores de virarem zumbis desde Dezembro de 2010.


Criado por Mauro Laranjeira e Mauricio Cruz.

July 2012

S
1

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

ABAP Zombie BADIs, User-exits, Enhancements como encontr-los?


9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Jun

Aug

Tags
abap

alv

cdigo
pi

at

debug

sap

webdynpro

authority-check
guide

sap inside track

autorizao

nonsense

off-topic

segurana

bol

commands

OO

Orientao a Objetos

tela de seleo

CRM

user-exit

xi

2013 ABAPZombie Brainporation


Cdigos e Exemplos

FAQ

Guias

Equipe

Back to Top

http://www.abapzombie.com/dicas-abap/2012/07/19/badis-user-exits-enhancements-como-encontra-los/[20/03/2014 11:43:08]

S-ar putea să vă placă și