7/25/2019 ABAP Oberdan
1/145
ABAP 101Sua porta de entrada para o mundo ABAP.
Pular para o contedo
INCIO
SOBRE O ABAP 101
SOBRE O AUTOR
Criando o Programa ABAP Hello World
Criando um Programa Calculadora Verso Report
Criando Uma Transao de ReportPublicado emsetembro 7 !""7#$ coment%rio
PROBLEMACriar uma transa&o e associar o programa 'H())*+
SOLUO
V% at, o Object Navigator-.(/"0+ 1a %rea de na2ega&o escol3a o tipo deob4eto Program+ 5igite o nome do programa 'H())* e tecle enter+ * programa
'H())* aparacer% logo abai6o da %rea de na2ega&o+
Cliue com o boto direito e acesse Create 89 :ransaction;
https://abap101.wordpress.com/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/#contenthttps://abap101.wordpress.com/https://abap101.wordpress.com/about/https://abap101.wordpress.com/sobre-o-autor/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/09/08/criando-um-programa-calculadora-versao-report/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/#commentshttps://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/#contenthttps://abap101.wordpress.com/https://abap101.wordpress.com/about/https://abap101.wordpress.com/sobre-o-autor/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/09/08/criando-um-programa-calculadora-versao-report/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/https://abap101.wordpress.com/2007/09/07/criando-uma-transacao-de-report/#commentshttps://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/7/25/2019 ABAP Oberdan
2/145
(scol3a um nome para a transa&o; ':H())* e escol3a o tipo de
transa&oProgram and .election .creen -Report :ransaction0;
(ntre com o nome do programa marcar todas as op&? .upport e
sal2e;
7/25/2019 ABAP Oberdan
3/145
1ota; Para @naliar a gra2a&o , necess%rio associar um pacote-$0 e
uma c3ange reuest+ -!0
EXECUO E TESTEPara testar abra uma no2a sesso -enu; .Dstem 89 Create .ession0 e na %rea
de comando entre com o nome da no2a transa&o e tecle (nter;
https://abap101.wordpress.com/2007/08/29/criando-packages/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/29/criando-packages/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/7/25/2019 ABAP Oberdan
4/145
DISCUSSO(6istem di2ersos tipos de programas em ABAP o programa ue criamos , um
relatErio+ 5e2emos escol3er o tipo correcto de programa caso contr%rio a
transa&o no Funcionar%+
* nmero da screen do relatErio , $""" 2alor padro para programas do tipo
report+
G poss2el associar uma 2ariante padro ou se4a uando a transa&o Foi
c3amada o programa ser% e6ecutado usando a 2ariante especi@cada+
As op&? .upport ati2a o suporte da transa&o aos I tipos de .AP =>?
para H:)Ja2ae WindoKs+
Criando o Programa ABAP Hello World
Publicado emagosto I" !""7# L Coment%rios
https://abap101.wordpress.com/2007/08/21/instalando-e-configurando-o-sapgui-para-linux/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/#commentshttps://abap101.wordpress.com/2007/08/21/instalando-e-configurando-o-sapgui-para-linux/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/https://abap101.wordpress.com/2007/08/30/criando-o-programa-abap-hello-world/#comments7/25/2019 ABAP Oberdan
5/145
PR*B)(A
Criar um programa ABAP e imprimir na tela MHello WorldNO+
.*)>Q*
V% at, o Object Navigator-.(/"0+ 1a %rea de na2ega&o escol3a o tipo de
ob4eto Program+ 5igite o nome do programa 'H())* e tecle enter+
.e no e6istir nen3um programa com o nome escol3ido ser% aberto uma no2a
4anela perguntando se dese4a criar+
.e 2oc escol3er a op&o Ses para criar um no2o programa outra 4anela ,
aberta+ :ire o Tag MW3it :*P8?ncludeO e con@rme+ .er% aberto mais outr 4anela
para escol3er os atributos do no2o programa+
7/25/2019 ABAP Oberdan
6/145
(ntre com uma descri&o e escol3a o tipo de programa e6ecut%2el+ .al2e oprograma em uma reuest e inclua o o seguinte cEdigo no programa;
Write 'Hello World!'.
7/25/2019 ABAP Oberdan
7/145
.al2e -Ctrl8.0 ati2e -.3iFt8U/0 e se no 3ou2er nen3um erro e6ecute o
programa -U/0+
7/25/2019 ABAP Oberdan
8/145
5?.C>..Q*
(sse , o programa mais simples em ABAP+ :odos os ob4etos criados pelo usu%rio
come&am com ' ou S -comumente usado para programas de sistema0+
* comando Krite , respons%2el por imprimir na sada do programa+ Para 2er
maiores detal3es do comando posicione o cursor sobre o comando e pressione
MU$O+
Voc tamb,m pode usar a transa&o .(I/ para criar e modi@car seusprogramas+
$
Criando PackagesPublicado emagosto ! !""7# $ coment%rio
PROBLEMACriar um pacage -pacote0 'PXABAP$"$ para organiar os programas
desen2ol2idos do ABAP $"$+
SOLUOV% at, o *b4ect 1a2igator -.(/"0+ 1a %rea de na2ega&o escol3a o tipo de
ob4eto Pacage+ 5igite o nome do pacage 'PXABAP$"$ e tecle enter+
https://abap101.wordpress.com/2007/08/29/criando-packages/https://abap101.wordpress.com/2007/08/29/criando-packages/https://abap101.wordpress.com/2007/08/29/criando-packages/#commentshttps://abap101.wordpress.com/2007/08/29/criando-packages/https://abap101.wordpress.com/2007/08/29/criando-packages/#comments7/25/2019 ABAP Oberdan
9/145
.e no e6istir nen3um pacote com o nome escol3ido ser% aberto uma no2a
4anela perguntando se dese4a criar+
.e 2oc escol3er a op&o de criar um no2o pacote outra 4anela , aberta para
escol3er os atributos do no2o pacote+
(scol3a os atributos e sal2e o pacote em uma reuest+
DISCUSSO*s ob4etos .AP so organiados em pacages ou pacotes+ =eralmente os
pro4etos possuem um pacote por mEdulo -U? .5 etc+0+ :amb,m podemos
ter 2%rios pacotes para o mesmo mEdulo ou ualuer outro crit,rio decidido
pelo gerente ou lider do pro4eto+
Por e6emplo na cria&o de um no2o ambiente pode8se escol3er uais pacotes
Faro parte do no2o ambiente+
*u se4a os pacages so uma subdi2iso lEgica dos ob4etos dentro do
repositErio de ob4etos no sistema+ * pacage o ual um ob4eto pertence no
tem a menor inTuncia em seu Funcionamento sendo assim um programa do
mEdulo de U? pode ser gra2ado em um pacote do mEdulo de por engano
sem ue isso aFete o Funcionamento do programa+
7/25/2019 ABAP Oberdan
10/145
*s atributos de um pacage podem ser;
Application Component 5etermina ual application component dentro da
3ieraruia de componentes do repositEri o pacote Far% parte+
Software Component Para desen2ol2imentos customiados -ue comecem
com a letra '0 de2e ser sempre MH*(O+
Transport Layer 5etermina se o pacage pode ser transportado para outro
ambiente e de@ne ual , esse ambiente+
Package Type Voc pode escol3er entre;
.tandard Pacage; pode conter ob4etos do repositErio e outros pacagesY
ain Pacage; cont,m apenas outros pacagesY
.tructure Pacage; cont,m apenas outros pacages to tipo ain
Pacage+VEJA TAMBM
Criando C3ange Reuests de Worbenc3
***2 Criando Change Requests de WorkbenchPublicado emagosto !/ !""7# I Coment%rios
PROBLEMA
Criar uma c3ange reuest para ser usada por no2os programas+
SOLUOAcessar o :ransport *rganier -.(" ou .($"0;
https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/#commentshttps://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/https://abap101.wordpress.com/2007/08/28/criando-change-requests-de-workbench/#comments7/25/2019 ABAP Oberdan
11/145
Clicar no boto Create ou UZ e escol3er Worbenc3 reuest;
Atributos da c3ange reuest;
C3ange reuest criada;
7/25/2019 ABAP Oberdan
12/145
DISCUSSO
*s sistemas .AP so geralmente separados em um ambiente dedesen2ol2imento outro de [ualidade e outro de Produ&o+ (sses ambientes so
totalmente independentes na maior parte dos casos instalados em m%uinas
diFerentes+
Para se transportar um ob4eto do repositErio de um ambiente para o outro usa8
se as c3amadas c3ange reuests+ 1o dia8a8dia do desen2ol2edor ABAP as
c3ange reuests mais usadas podem ser do tipo MCustomaingO ou
MWorbenc3O+
As c3ange reuests do tipo Customaing so reser2adas para transportar
contedo de tabelas do tipo customaing+ (ssas tabelas cont,m inForma&
7/25/2019 ABAP Oberdan
13/145
Criando um Programa Calculadora erso ReportPublicado emsetembro / !""7#! Coment%rios
PROBLEMACriar um programa ABAP ue receba dois 2alores digitados pelo usu%rio e
e6ecute as uatro opera&
7/25/2019 ABAP Oberdan
14/145
A listagem completa do programa 2oc encontra na se&o Ane6os+
EXECUO E TESTE(6ecute o programa -U/0 e entre os seguintes na tela de sele&o;
(6ecute o rel%torio -U/0 e 2oc de2er% obter uma sada parecida com a descrita
abai6o;
7/25/2019 ABAP Oberdan
15/145
1o esue&a de testar tamb,m o caso de uma opera&o in2%lida e um caso de
di2iso por ero+
DISCUSSO1esse simples programa 4% 2emos uma s,ria de elementos comuns em
programa ABAP+
A primeira tela do programa , c3amada de :ela de .ele&o -.election .creen0
onde o usu%rio entra com os par\metros ue sero utiliados no relatErio+
>m dos comandos usados para desen3ar a tela de sele&o , a instru&o
PARA(:(R.+ >samos a Forma mais simples ainda 3% muitas outras
possibilidades ue discutiremos mais a Frente+
5eclaramos 2ari%2eis com o comando 5A:A indicando o nome da 2ari%2el e o
tipo+ 1o nosso programa usamos somente tipos primiti2os mas as
possibilidades so ilimitadas 4% ue o ABAP *b4ects , Fortemente tipado+
*s tipos padro usados no ABAP *b4ect so;
:ipos completos sem necessidade de complemento;
5 5ata no Formato AAAA55 com taman3o @6o de /Y
: :empo no Formato HH.. com taman3o @6o de /Y
? ?nteiro taman3o @6o de ]Y
U 1mero de ponto Tutuante taman3o @6o de /Y
.:R?1= Cadeia de caracteres sem taman3o @6oY
^.:R?1= Cadeia de caracteres -He6adecimal0 sem taman3o @6oY
:ipos incompletos;
C Caracter string podendo ter um complemento por e6emplo a
intru&o MDATA vl_var(4) TYPE C.MY
1 Caracter num,rico com caractersticas de caracter e nmeroY
^ .e_ncia de bDtes -He6adecimal0Y
P Pacage+
Para imprimir o 2alor na tela usamos a instru&o WR?:(+
7/25/2019 ABAP Oberdan
16/145
>samos duas estruturas de deciso a ?U`().(?U`().(`(15?U para 2eri@car a
opera&o escol3ia e se 3% di2iso por ero e CA.( para escol3er a opera&o+
(ssa 2eri@ca&o de di2iso por ero , necess%ria para e2itar um poss2el erro
em tempo de e6ecu&o no caso de uma di2iso por ero+ Poderamos tamb,m
usar (6ceptions mas discutiremos no Futuro+
1o caso de uma opera&o in2%lida tamb,m poderamos usar a seguinte
constru&o no lugar o ?U;
CASE p_op.
WEN OTE!S.
W!"TE# $No vali% operatio&'(iop).
ENDCASE.
A op&o *:H(R. signi@ca ue se nen3uma das alternati2as do WH(1 Foi
satisFeita o op&o *:H(R. , e6ecutada+ (nto se a opera&o escol3ida no Foi
2%lida o WH(1 *:H(R. , e6ecutado e a mensagem de erro , impressa na
sada do programa+
A segunda tela , onde , apresentado a sada do programa comandos WR?:(+
Modelo de Dados do SAP Flight Model
Publicado emsetembro !$ !""7# Coment%rios desati2adosem odelo de 5ados do .APUlig3t odel
* .AP Ulig3t odel , o modelo de dados usado em um sistema muito
simpli@cado de controle de reser2as de 2os+
(sse modelo , utiliado em uase todos os e6erccios e demonstra&
7/25/2019 ABAP Oberdan
17/145
* .U , composto por ] tabelas transparentes .CARR .PU)? .U)?=H: e
.B** com o seguinte relacionamento;
SCA!! Cont,m as inForma&
7/25/2019 ABAP Oberdan
18/145
Para criar algum ob4eto de dado no ABAP 2oc utilia o comando 5A:A;
DATA v_te-to(/) TYPE c 0A1E $Objeto %e Da%o23.
1essa declara&o , criado um ob4eto de dado -uma 2ari%2el0 2Xte6to decomprimento !" caracteres com 2alor inicial M*b4eto de 5adosO+
5a mesma maneira para criar 2ari%2eis para opera&
7/25/2019 ABAP Oberdan
19/145
.U)?=H: e tamb,m um o campo 5?UU uem cont,m a diFern&a+ 5epois de
todas as diFern&as calculadas imprimimos o resultado na sada do programa;
1a listagem ! temos o uso da intru&o :SP(. ue , usada para criar tipos
locais+ (sses tipos somente podem ser utiliados no program no ual ele Foi
declarado nesse caso ':SP($+
Como tipos locais temos tDXsXsTig3tXdiF descre2e uma estrutura de dados
etDXtXsTig3tXdiF uma tabela interna com a estrutura de tDXsXsTig3tXdiF+ Paradeclararmos um tipo estruturado local usando B(=?1 *U ` (15 *U+
J% os tipos globais podem ser pro2enientes do dicion%rio de dados do .AP+ 1o
programa ':SP($ usamos alguns tipos globais como a tabela .U)?=H e alguns
de seus campos como sTig3t8carrid sTig3t8connid etc+ *s tipos globais podem
ser usados -5A:A :SP(+0 em ualuer programa o sistema no 3%
necessidade de nen3uma declara&o no programa+
7/25/2019 ABAP Oberdan
20/145
[uando usamos o :SP( com uma tabela transparente -tabela de banco de
dados0 o ob4eto de dado declarado ser% uma Korarea com a estrutura da
tabela transparente+ Por outro lado uando usamos :SP( :AB)( *U estamos
declarando uma tabela interna com estrutura da tabela transparente+
Ve4a essa parte do programa ':SP($+
DATA# _25ig6t TYPE 25ig6t78a2
t_25ig6t TYPE TA+E O 25ig6t7
:emos uma Korarea KXsTig3t e uma internal table tXsTig3t com estrutura databela transparente .U)?=H:+
Por ltimo temos a seguinte declara&o de 2ari%2el;
DATA# v_%i9 ",E _25ig6t_%i:;%i9.
* )?( indica ue o ob4eto de dado declarado possui o mesmo tipo de outro
ob4eto de dado 4% declarado podendo este ser local ou global+
1o caso acima a 2ari%2el 2Xdi possui o mesmo tipo do campo da
KorareaKXsTig3tXdiF8di ou se4a sTig3t8seatsma6+
Agora 4% sabemos uando usar :SP( )?( e B(=?1 *U+
&o'( tem medo de ensinar%
Publicado em4aneiro $$ !""/# ! Coment%rios
:rabal3o com pro4etos .AP especi@camente ABAP 3% cerca de 7 anos+ >ma
pr%tica muito comum , a @gura do MsombraO+ * sombra , auele consultor
4nior -geramente no seu primeiro pro4eto0 ue , alocado a um pro4eto sem
cobrar as suas 3oras do cliente+
Com isso a sua consultoria consegue treinar um no2o consultor em situa&
7/25/2019 ABAP Oberdan
21/145
7/25/2019 ABAP Oberdan
22/145
de desen2ol2imento sou intrutor ABAP+ A 2ontade de ensinar abriu8me no2as
portas al,m da consultoria+
Cuidado se 2oc pensa como meu amigo pro2a2elmente logo ser%
ultrapassado por esse consultor 4nior ue est% do seu lado a@nal de contaspara o meu amigo a sua nica preocupa&o ,;
2e 8e
7/25/2019 ABAP Oberdan
23/145
1o 3% uma e6plica&o @nal para os conceitos de orienta&o a ob4eto+ Voc ter%
ue estudar 2%rias Fontes para c3egar as duas prEprias conclus
7/25/2019 ABAP Oberdan
24/145
todo pro@ssional .AP de2e con3ecerM escritos pelo meuamigo :3iago *uri2es ue agora nos l diretamente do Futuro+
1o , preciso muita 2iso para notar ue tal lista de
e6igncias sE cresce+ G Fato ue algumas e6ignciasestrapolam para coisas no8relacionadas a %rea de atua&onormal de um ABAP como 4% citado no polmico postMVerdade .e4a 5ita M*portunidades ABAP A))O+ A ideia destepost , abordar a import\ncia do Uiori ue na min3a 3umildeopinio se encai6aSIM na lista de sills ue um ABAP de2eter+
Mas o *+, - o .&o/&=oogle it+ .C1 it+
J+s&%a&asAgora ue 2oc 4% sabe o ue , o Uiori gostaria de dar
algumas 4usti@cati2as para embasar a ideia de ue isso ,problema do ABAP+
1o Fundo , Uront (nd
Uiori , Famoso pela sua simplicidade -para o usu%rio0 nae6perincia -de no2o para o usu%rio0 e no Foco do trabal3o-para uemf Para o usu%rio0+ Para ue o dito cu4o ten3a isso
tudo alguns tem ue pagar algum pre&o+ Para Faer umaaplica&o responsi2a de bom gosto ue apliue as mel3orespr%ticas de acordo com o Uiori 5esign =uidelines, precisoalgum con3ecimento de desen2ol2imento Front endob2iamente incluindo >?L+
( uem 2oc ac3a ue est% mais perto em con3ecerdesen2ol2imento na esFera .AP do ue o desen2ol2edor
ABAPf 1o 2ou entrar no m,rito de Mpessoas no2asO pore6emplo desen2ol2edores Front end de outras tecnologias
http://abap101.com/2015/06/03/brfplus-a-ferramenta-que-todo-profissional-sap-deve-conhecer/http://abap101.com/2015/09/10/verdade-seja-dita-oportunidades-abap-all/https://experience.sap.com/fiori-design/http://abap101.com/2015/06/03/brfplus-a-ferramenta-que-todo-profissional-sap-deve-conhecer/http://abap101.com/2015/09/10/verdade-seja-dita-oportunidades-abap-all/https://experience.sap.com/fiori-design/7/25/2019 ABAP Oberdan
25/145
entrarem no mundo .AP este tipo de discusso al,m de noser o Foco , simpli@car demais o assunto+ Uiori no , Feitoapenas de um Front end Feito em >?L+ as isso passa sim porsaber desen2ol2er aplica&
7/25/2019 ABAP Oberdan
26/145
; A$inal.. se hou/esse mesmo este per$il pro$issional no/o entitulado
ate?ay.. e 'onhe'er >ate?ay passa por
'onhe'er ABAP 0e 65ST diga@se de passagem2. !ogo 1 mais $'il serum ABAP ue /ai l e aprende.
as uantos ABAPers sabem =ateKaDf
[uantos ABAPers 3o4e con3ecem >?Lf
[ual a propor&o de ABAPers ue sabem o ue ,
R(.:`o5ataf
[uantos con3ecem os I itens acima 4untosf0Ahh; /amos ignorar o $ato de mais da metade das apli'a+es Fiori
reuerem 'onhe'imentos em HAA neste item2
Ho-e a minha sensa+,o 1 ue a minoria dos pro$issionais tem tal
per$il. 5 n,o estou *us'ando 'ulpados. 5stou apenas diendo o ue
sinto lendo o ue /e-o e ou/indo o ue es'uto.
5 ual a solu+,o%
6esumo tomando emprestada parte do 'omentrio $antsti'o do
CustEdio es'rito re'entemente no ABAPom*ieG
() Pra i22o a 2ol
7/25/2019 ABAP Oberdan
27/145
ate?ay tam*1m tendem a
ser simpli$i'adas; mas estas mudan+as s,o ainda ne*ulosas para
mim.5 pensar ue tem 'onsultoria *us'ando gente para implantar 0e n,o
implementar2 L ou R apps 'omo parte de um pro-eto de meses
6e$er(n'ias *i*liogr$i'a
Apesar de ainda n,o ter lido o li/ro do Maur'io
7/25/2019 ABAP Oberdan
28/145
7/25/2019 ABAP Oberdan
29/145
B3 UhB?* PA=*:?4 F5B6UA63 7I 789:
Compartil3eN
Passou o carna2alN Ueli ano no2oN* ABAP$"$ , um site ue mesmo uando um pouco paradome surpreende+ * site 2ai completar / anos em !"$L+ ?ssomesmo / anos+ >ma das coisas ue mais me impressiona ,como at, os posts mais antigos do site escritos pelo Uurlanainda tem uma uantidade imensa de acessos+ Como osensinamentos de como procurar e implementar
BAd?eentendendo o Uor All (ntriesainda so to atuais no ,mesmof .em Falar no 2deo de instala&o do inisapue Facom ue praticamente a ualuer 3ora do dia algu,m este4a2endo o ABAP$"$ mundo aFora+
Ho4e notei ue uma das p%ginas ue mais me deu trabal3o esatisFa&o em escre2er -a Famosa MA:R?' 5(C*1H(C?(1:* ABAP J1?*R P)(1* ( .j1?*RM0 igualou8se
em nmeros de acessos de uma das p%ginas mais simplesmas ue o pessoal mais d% bola -uma pesuisa salarial0+[uem sabe isso se4a um indcio ue algumas pessoas esto seimportando mais com o con3ecimento do ue o sal%rio+ *uue pelo menos entendam ue o sal%rio , uma conseunciado con3ecimento+
Apesar de tantos posts serem teis at, 3o4e a cada dia uepassa os pro@ssionais ABAP de2eriam estar mais interessados-ou pelo menos mais preocupados0 em aprender algorealmente no2o e ue cedo ou tarde pode 2ir a Faer parte doseu dia a dia+ * tpico contedo ue o ABAP$"$ ainda noe6plora e ue o pouco dispon2el est% perdido em blogs na.C1 ou repositErios peuenos do =itHub+ Por e6emplo; >?L+Atualmente na nossa matri de con3ecimento >?L , marcadoainda como um con3ecimento e6tra ue nem um snior
de2eria obrigatoriamente ter+ Ainda+
http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F02%2F26%2Fporque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja%2F&title=Porque%20todo%20ABAPer%20deveria%20come%C3%A7ar%20a%20aprender%20UI5%20(SAPUI5%2FOpenUI5)%20j%C3%A1&description=Saiba%20porque%20desenvolvedores%20ABAP%20deveriam%20come%C3%A7ar%20a%20aprender%20UI5%20a%20partir%20de%20j%C3%A1.%20Voc%C3%AA%20gostaria%20de%20saber%20mais%20sobre%20esta%20biblioteca%3F%20Leia%20este%20artigo%20j%C3%A1!http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/http://abap101.com/2011/02/25/entendendo-o-for-all-entries/http://abap101.com/minisap/http://abap101.com/abap-junior-pleno-e-senior-matriz-de-conhecimento/http://abap101.com/abap-junior-pleno-e-senior-matriz-de-conhecimento/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F02%2F26%2Fporque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja%2F&title=Porque%20todo%20ABAPer%20deveria%20come%C3%A7ar%20a%20aprender%20UI5%20(SAPUI5%2FOpenUI5)%20j%C3%A1&description=Saiba%20porque%20desenvolvedores%20ABAP%20deveriam%20come%C3%A7ar%20a%20aprender%20UI5%20a%20partir%20de%20j%C3%A1.%20Voc%C3%AA%20gostaria%20de%20saber%20mais%20sobre%20esta%20biblioteca%3F%20Leia%20este%20artigo%20j%C3%A1!http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/http://abap101.com/2009/01/05/descobrindo-e-implementando-badis/http://abap101.com/2011/02/25/entendendo-o-for-all-entries/http://abap101.com/minisap/http://abap101.com/abap-junior-pleno-e-senior-matriz-de-conhecimento/http://abap101.com/abap-junior-pleno-e-senior-matriz-de-conhecimento/7/25/2019 ABAP Oberdan
30/145
HatriI %e Co&6eci8e&to J KL/L/M
UI!.e 2oc atua com desen2ol2imento ABAP 3o4e2oc certamente no precisa saber como criar aplica&?L+ :oda2ia certamente 2oc 4% de2eria saber o ue o>?L ,+ Caso 2oc no saiba ainda o ue , >?L -um nome maisgen,rico para .AP>?L ou *pen>?L0 , sinal ue 2oc no abrea 3ome page da .C13% mais de $ ano+
>?L , uma biblioteca 4a2ascript para cria&o de aplica&?L estamosFalando de desen2ol2imento Front end+ =rosseiramenteFalando >?L , um concorrente do Bacbone+4s AngularJ.(mberJ. 5o4o ou ualuer outra biblioteca elencadana Wiipediaou no:odoVC+com+ =rande parte dos no2osprodutos da .AP no so mais Feitos em reports modulepools B.Ps ou Web 5Dnpros -apesar do ltimo ainda ser
usado pela .AP em no2os desen2ol2imentos0+ Boa parte doue a .AP desen2ol2e 3o4e em dia , Feito em >?L na parte do
http://abap101.com/2011/01/07/faca-parte-da-sdn/http://en.wikipedia.org/wiki/List_of_JavaScript_librarieshttp://todomvc.com/http://abap101.com/2011/01/07/faca-parte-da-sdn/http://en.wikipedia.org/wiki/List_of_JavaScript_librarieshttp://todomvc.com/7/25/2019 ABAP Oberdan
31/145
Front end+ .e 2oc 4% ou2iu Falar em alguns nomes como=ateKaD .>P Hana Uiori ou HCP saiba ue o >?L est%totalmente inserido nestes conte6tos+
Voc est% a2istando ainda mesmo ue de longe umaoportunidade para ser desen2ol2edor Hanaf (nto aprenda>?L pois Fa parte do ue 2oc 2ai precisar na sua cai6a deFerramentas+
.AP>?L 2s *pen>?L
Como dito anteriormente >?L , um termo gen,rico ue uer
dier ou .AP>?L ou *pen>?L+ [uando a .AP introduiu abiblioteca ela no tin3a o cEdigo aberto e uma licen&a de usomais restriti2a -.AP>?L0+ 5epois de muita presso e discussoda comunidade de desen2ol2edores a .AP resol2eu abrir oFonte da biblioteca e mudar a licen&a+ Uoi necess%rio entocriar um outro nome -*pen>?L0+ * .AP>?L ainda e6iste etecnicamente , diFerente do *pen>?L+ A principal diFeren&at,cnica entre ambos 3o4e , o Fato do .AP>?L incluir umabiblioteca gr%@ca enuanto o *pen>?L no+ Ve4a e6emplos deconstru&o de gr%@cos no .AP>?L no Hana Brasil+ Uelimentepara uem con3ece Ja2ascript @ca F%cil aprender a usarbibliotecas gr%@cas e6ternas como 5Iou Rap3ael+
Web 5Dnpro 2s >?L
>m argumento para '4oaprender >?L , o seguinte;
O Web D&pro :eI M/ a&o2 rece&te8e&te7 e< ai&%a &>o
apre&%i7 &
7/25/2019 ABAP Oberdan
32/145
para usabilidade e6perincia do usu%rio e ergonomia dasduas aplica&?L0+
* argumento do Web 5Dnpro , embasado mas eu noapostaria ue o mesmo 2ai acontecer+ (m outras pala2ras o>?L 2ai 2ingar+ :al2e nunca 2ire a mel3or biblioteca de
Ja2ascript para VC mas com certea 2ai 2ingar muito maisue o Web 5Dnpro pois para desen2ol2er muitas aplica&?L+ ( , para este camin3o ue o ABAPer daprE6ima gera&o de2e seguir+
1o li2ro M1e6t generation ABAP de2elopment ` Ric3 Heilman
:3omas Jung+ k !nd ed+M ue Foi escrito em !"$$ -antes do>?L0 dos !" captulos do li2ro / so de alguma Formarelacionados a desen2ol2imento Web -VC Keb ser2icesWeb 5Dnpro B.P0+ 5esde !"$I a .AP Press est% pensando naterceira edi&o do li2ro ue sinceramente no sei oandamento atual+ Por,m aposto ue ter% algo de >?L al,m deFalar da integra&o ABAP`Hana+ Pelo menos o li2ro MABAP tot3e Uuture ` Paul HardDO 4% aborda >?L+ ( se ainda no est%
con2encido4% 3% um li2ro o@cial da .AP Press e6clusi2ode >?L+
https://open.sap.com/courses/uxn1https://www.sap-press.com/next-generation-abap-development_2406/https://www.sap-press.com/next-generation-abap-development_2406/https://www.sap-press.com/abap-to-the-future_3680/https://www.sap-press.com/abap-to-the-future_3680/https://www.sap-press.com/getting-started-with-sapui5_3565/https://www.sap-press.com/getting-started-with-sapui5_3565/https://open.sap.com/courses/uxn1https://www.sap-press.com/next-generation-abap-development_2406/https://www.sap-press.com/next-generation-abap-development_2406/https://www.sap-press.com/abap-to-the-future_3680/https://www.sap-press.com/abap-to-the-future_3680/https://www.sap-press.com/getting-started-with-sapui5_3565/https://www.sap-press.com/getting-started-with-sapui5_3565/7/25/2019 ABAP Oberdan
33/145
7/25/2019 ABAP Oberdan
34/145
Consultorias precisam de pessoas ue al,m de outras coisasentendam da aruitetura dos sistemas ue atuam econstruam solu&?L signi@car% no ser um consultor8desen2ol2edor .APcompleto+ Assim como ignorar o Hana ter% a mesmaconseuncia+
Po/ o'5, %o8,o a a$/,'5,/UI!Al,m da .C1 li2ros na .AP Press ditos anteriormente e o site
o@cial do*pen>?L+org eu recomendo assistir apresenta&oue @ no .AP ?nside :rac .o Paulo no @nal de !"$]+ (laensina como 2oc 3ospedar sua aplica&o >?L no =itHub etorn%8la pblica+
3ttp;``abap$"$+com`!"$L`"!`!Z`porue8todo8abaper8de2eria8comecar8aprender8uiL8sapuiLopenuiL84a`
Claro /o'( pre'isar de um am*iente de desen/ol/imento.
Felimente para montar ele no mundo de desen/ol/imento We* 1
ne'essrio ter uma )D5 ualuer 0re'omendo o Su*lime TeKt ou
5'lipse2 e um ser/idor We* 0Tom'at MAMP ode>runt et'2. #u
apenas /o'( pode usar sites 'omo oJ.BinouJ.Uiddlepara 'ome+ar
a *rin'ar 'om U):.
Bons estudos ,o deiKe de 'omentar
Porue todo ABAP de/eria estudarHAAB3 UhB?* PA=*:?4 MA3 79 789:
Compartil3eN
http://openui5.org/http://abap101.com/2015/02/26/porque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja/http://abap101.com/2015/02/26/porque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja/http://jsbin.com/?html,outputhttp://jsfiddle.net/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F05%2F21%2Fporque-todo-abap-deveria-estudar-hana%2F&title=Porque%20todo%20ABAP%20deveria%20estudar%20HANA&description=O%20ABAP%20vai%20mudar%3F%20Thiago%20Ourives%20conta%20porque%20todo%20ABAP%20deveria%20estudar%20HANA...%20porque%20que%20o%20ABAP%20j%C3%A1%20mudou!http://openui5.org/http://abap101.com/2015/02/26/porque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja/http://abap101.com/2015/02/26/porque-todo-abaper-deveria-comecar-aprender-ui5-sapui5openui5-ja/http://jsbin.com/?html,outputhttp://jsfiddle.net/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F05%2F21%2Fporque-todo-abap-deveria-estudar-hana%2F&title=Porque%20todo%20ABAP%20deveria%20estudar%20HANA&description=O%20ABAP%20vai%20mudar%3F%20Thiago%20Ourives%20conta%20porque%20todo%20ABAP%20deveria%20estudar%20HANA...%20porque%20que%20o%20ABAP%20j%C3%A1%20mudou!7/25/2019 ABAP Oberdan
35/145
1o ltimo @nal de semana conclu um curso deA+AP o&ANA. Atualmente trabal3o com HA1A -e >?L0 no meu dia adia mas no de maneira integrada com o 1etWea2er+ (moutras pala2ras trabal3o com desen2ol2imento nati2o emHA1A e no como ABAP numa empresa ue tem o HA1A+
* curso Foi Etimo e uero em bre2e criar alguns posts aui noABAP$"$ compartil3ando esta e6perincia+ as por 3ora nadamel3or de con2idar o meu instrutor do curso :3iago *uri2esue al,m de ter se pro2ado um pro@ssional Fora da cai6aescre2eu em poucos par%graFospor?
7/25/2019 ABAP Oberdan
36/145
A seuncia de auisi&ma das perguntas ue mais ou&o em rela&o ao HA1A , seele , um Banco de 5ados+A resposta , a@rmati2a+ mas ao mesmo tempo usar essade@ni&o para o HA1A em alguns crculos pode ser uma
oFensa gra2eNG como dier a um Aruiteto JAVA ue ele trabal3a comMauela linguagem de Faer sitesO ou a um consultor P? ueele sE o trabal3o dele , sE arrastar uadradin3os+
JAVA , mais ue internet P? , mais ue os uadradin3os eHA1A , muito mais ue um Banco de 5ados+
* HA1A , um con4unto de Ferramentas da .AP ue en2ol2edesde a sele&o dos Fabricantes dos c3ips a parceira com atamb,m alem .>.( o seu HA1A .tudio e suas Ferramentasde de modelarem e e6tra&o de dados -.AP B* .): 56Cetc+0 o suporte a suas no2as op&?L e o HA1A ^. e por ltimo e no menos importante , aconstru&o de de seus no2os 5ata Center e a no2a parceriacom a ?B ue possibilitam a 2enda do HA1A como um
ser2i&o de PlataForma -Paa.0+
SAP 7 =ANAA .AP est% apostando alto no HA1A+ uito Alto+
:o alto ue no est% satisFeita apenas em ter sua plataFormaser2indo de base para seu principal produto o (CC+(la est% apostando o prEprio (CC e sua sElida lideran&a no
mercado de (RP ao escol3er re8escre2er sua solu&o
7/25/2019 ABAP Oberdan
37/145
utiliando o HA1A como alicerce e 2isando o mercado denu2em+
* Futuro da .AP , o HA1A e depende do sucesso dessa
Ferramenta+Por conseuncia o Futuro de todo o ecossistema .AP e deseus pro@ssionais depende de sua agilidade na adapta&o aessa no2a tecnologia+
Co8o %o's+(o/ ABAP> $o/ *+,5,o 8, $/,o%+$a/Porue o .AP no 2ai mudar ele 4% mudou+( o ABAP assim como seu papel de atua&o tamb,m+
A linguagem do ABAP est% em constante e2olu&o e temcamin3ado para se tornar um meio8campo ideal entre o HA1A-como bacend0 e o >?L-como Frontend0 se4a ser2indo comocamada protetora ou como meio de sele&o e organia&o do
repositErio HA1A+
* ABAP de no2a gera&o no apenas sabe >?L ele precisa terconceitos de modelagem em HA1A programa&o orientada acon4untos e Pus385oKn de cEdigo+ Assim como con3ecer asFerramentas de seguran&a e gera&o de ser2i&os do .tacABAP+
Claro ue o .tac ABAP segue e6istindo e durante muitotempo ainda teremos nossa base instalada ue ainda usa o]+ZC mas se Formos pensar no m,dio prao a 3ora de sepreparar , agoraN
7/25/2019 ABAP Oberdan
38/145
Co8o s, $/,$a/a/ , ao'5,,s4o os /,%+/sosBom esse , um assunto para outra postagem+Por 3ora uero agradecer a pacincia de todos na leitura edier ue estou a disposi&o para con2ersar e aprender sobre.AP e HA1A com todos 2ocs+
=rande Abra&oN
:3iago *uri2es+
B6FplusG a $erramenta ue todopro$issional SAP de/e 'onhe'er
B3 UhB?* PA=*:?4 U5 L 789:
Compartil3eN
5ias atr%s publicamos o artigo Porue todo ABAP de2eriaestudar HA1A por :3iago *uri2es ue despertou acuriosidade de muitos principalmente no Uaceboo e)ined?n+ Para uem no leu o ltimo te6to o :3iago trabal3acom ABAP 3% um tempo e , um dos pioneiros a trabal3ar
com ABAP e HA1A no Brasil+
(le escre2eu mais um post agora relacionado a BRU -aaBRU Plus0 tEpico in,dito aui no blog+ .e 2oc nunca ou2iuFalar no BRU e ac3a ue user e6it , algo mega atual re2e4aseus conceitos lendo este post+
-Por :3iago *uri2es0
http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F06%2F03%2Fbrfplus-a-ferramenta-que-todo-profissional-sap-deve-conhecer%2F&title=BRFplus%3A%20a%20ferramenta%20que%20todo%20profissional%20SAP%20deve%20conhecer&description=Este%20artigo%20descreve%20a%20proposta%20do%20BRFplus%20exemplificando%20um%20cen%C3%A1rio%20no%20qual%20ele%20se%20aplica.%20Artigo%20escrito%20por%20Thiago%20Ouriveshttp://abap101.com/2015/05/21/porque-todo-abap-deveria-estudar-hana/http://abap101.com/2015/05/21/porque-todo-abap-deveria-estudar-hana/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2015%2F06%2F03%2Fbrfplus-a-ferramenta-que-todo-profissional-sap-deve-conhecer%2F&title=BRFplus%3A%20a%20ferramenta%20que%20todo%20profissional%20SAP%20deve%20conhecer&description=Este%20artigo%20descreve%20a%20proposta%20do%20BRFplus%20exemplificando%20um%20cen%C3%A1rio%20no%20qual%20ele%20se%20aplica.%20Artigo%20escrito%20por%20Thiago%20Ouriveshttp://abap101.com/2015/05/21/porque-todo-abap-deveria-estudar-hana/http://abap101.com/2015/05/21/porque-todo-abap-deveria-estudar-hana/7/25/2019 ABAP Oberdan
39/145
Antes de e6plicar o ue , o BRUplus uero Falar sobreposs2eis solu&
7/25/2019 ABAP Oberdan
40/145
* BR.$(+s ue 3o4e Fa parte da licen&a 1etWea2erconsegue 4untar o a praticidade de uma condition 1AV. an2el de aten&o de um cEdigo ABAP e a Te6ibilidade de umatabela ' somando a isso uma interFace amig%2el e sem anecessidade de 2alida&o e transporte associado a reuests+
Como ele Fa issof G simplesN O BR.$(+s - o 8oo/ 5,/,9/as 5o SAP N,?,a,/+ :em como Fun&o ser2ir derepositErio de Ferramenta de constru&o e de motor dee6ecu&o de todas as regras standard da .AP e desde !"$"a .AP tem trabal3ado para tornar ele tamb,m a FerramentapreFerencial para manuten&o de regras do cliente+
1essa Ferramenta podemos criar aplica&
7/25/2019 ABAP Oberdan
41/145
Ainda me surpreendendo com a conFuso ue o campomandante -A15: ou client0 gera em grande parte depessoas ue trabal3am com .AP+ * conceito , simples maspelo Fato de poder ser aplicado em diFerentes circunst\nciascreio ue muita gente no este4a $"" segura do ue de2eriasaber sobre ele+ .e uiser entender tudo sobre o A15:continue lendo este post+ .e 2oc no Fa ideia o ue , estecampo tamb,m leia pois ele est% presente na grande maioriadas tabelas do .AP+
O'5, ,s@ o MANDT 'o SAP
A15: na tela de login
* primeiro contato ue temos com o campo A15: -ouclient0 , logo na tela de login do sistema+ Como ele 2empreenc3ido para nEs pouco nos preocupamos com ele+
(m cada um dos ambientes -5(V [A. PR*5 etc0 podemoster $ ou mais8a&%a&te2.Cada um dos mandantes possui umnmero nico ue pode ser usado ao Faer login no ambienteem uesto+
A15: em tabelas do .AP
Caso 2oc abra praticamente ualuer tabela de dados
mestre ou transacional pela .($$ no .AP notar% a presen&ado campo A15: como parte da c3a2e da tabela+ Ainda esta
7/25/2019 ABAP Oberdan
42/145
coluna ser% a primeira coluna da tabela antes mesmo do MidOda tabela em si+ ?sso 2ale para as tabelas ARA ARC BPUB.(= VBA VBAP (* (P* e tantas outras no sistema+
Ainda caso 2oc tente 2isualiar os dados desta tabela pelatransa&o .e$$ .e$Z ou .($Z notar% ue no ter% comode@nir um @ltro pela coluna A15:+ )ogo tiramos nossaprimeira concluso sobre clients; eles so independentesentre si+
Como o A15: Fa parte da c3a2e podemos ter mais de ummaterial com o mesmo nmero no A:1R+ *b2iamente para
7/25/2019 ABAP Oberdan
43/145
isso o mesmo nmero do A15: -outra parte da c3a2e0de2eria ser diFerente+
MANDT #8a'5a',) MATNR #&5 5o 8a,/&a() MATX #5,s%/&4o)
/"" 8$!I Arro
/"" 8$!] .,&4o
/$" 8$!I Arro
/$" 8$!] M&(m ambiente de desen2ol2imento pode ter ! ou maismandantes para separar os dados usados pordesen2ol2edores ABAP dos dados usados por Funcionais .AP+
1o ambiente de desen2ol2imento os ABAPers codi@camenuanto Funcionais con@guram o sistema+ A con@gura&o
7/25/2019 ABAP Oberdan
44/145
Feita por Funcionais nada mais en2ol2e ue a inser&oaltera&o e e6cluso de registros em uma por&o de tabelasue '4oso de dados mestre+ (stas modi@ca&
7/25/2019 ABAP Oberdan
45/145
con4unto de dados de teste este4am 4% prontos para ue oteste possa ser e6ecutado+ Caso 3a4a apenas um mandanteno ambiente de ualidade em ue 3% testes manuais eautom%ticos um Funcional pode deletar ou alterar ummaterial ue , usado por uma s,rie de testes autom%ticos;ue conseuentemente iro Fal3ar no por Fracasso do testeem si mas por conta de dados de teste errados+
A15: em produ&o
Como mandantes determinam dados totalmenteindependente uns dos outros pode 3a2er um mandantesegregado para cada @lial de uma empresa+ 1ote ue 3%empresas com di2ersas @liais ue usam o mesmo mandante+?sso porue o conceito de @liais e6iste no .AP e a pri2acidadedos dados entre @liais pode ser realiado de outras Formas+
C(&,'I'5,$,'5,' s C(&,'
D,$,'5,':al2e 2oc ten3a ou2ido os temos client8independent -ouindependente de client `mandante0 e client8dependent -oudependente de client `mandante0+ Caso no ten3a ou2idosaiba ue no 3elp do ABAP estas de@ni&
7/25/2019 ABAP Oberdan
46/145
maioria das tabelas no sistema possuem o campo A15: etabelas independentes de client geralmente so decustomia&o+
MANDT 'o SELECTComo o mandante est% atrelado a sesso do usu%rio no 3%necessidade de especi@car esta parte da c3a2e uando se Faum .()(C: -conceito con3ecido como Client Handling0+Por,m caso 2oc de2e selecionar dados de todos osmandantes do sistema de2er% usar a adi&o MC)?(1:
.P(C?U?(5O do comando .()(C: UR* o ueparticularmente nunca 2i algu,m usar em cEdigo '+
;+a'os 8a'5a',s ,7&s,8'o 8,+ a8&,',A tabela :""" guarda os mandantes do sistema+ .e 2oc
notar todas as tabelas ue possuem a coluna A15: temuma c3a2e estrangeira para esta tabela+ *u pelo menosde2eriam ter+
C(&,' 000* mandante """ , reser2ado pela .AP+ A empresa no podeusar o client """ pelo simples Fato de ele ser MintocadoO+ *u
se4a ele tem a con@gura&o $"" standard e6istente logoapEs a instala&o do .AP+ (mpresas ue tem o costume dealterar a con@gura&o standard ao in2,s de criar uma cEpiada mesma podem ter ue recorrer a este mandante uandose perguntam M* ue eu @`* ue mudei mesmofO+
http://help.sap.com/abapdocu_731/en/abenclient_handling_guidl.htmhttp://help.sap.com/abapdocu_731/en/abenclient_handling_guidl.htm7/25/2019 ABAP Oberdan
47/145
R,so+ 5F&5as Co8,',GUalei tudo ue sei sobre o campo A15:+ .e 2oc ainda tem
alguma d2ida uanto ao assunto comente a bai6o+ (ste postde2eria encerrar poss2eis d2idas sobre o conceito+
* mandante , um conceito ue de2e ser entendido se 2ocesti2er procurando 2agas de ABAP+ Apro2eitando 2oc4% secadastrou no ABAP$"$f
Criando templates de 'Edigo noSAP !ogon e no 5'lipseB3 UhB?* PA=*:?4 AUA63 O 789R
Compartil3eN
H% sempre auele padro de cEdigo ue 2i2emos escre2endomas ele no , e6atamente reutili%2el+ >m )**P com alguns?Us internos de controle um U*R com com algunspar\metros alguma mensagem de erro Famosa ou auelaclasse b%sica com um construtor+ Por pura pregui&a de digitartudo no2amente -ue 4% est% implicitamente decorado0
samos a procura de um programa ue 4% possui um cEdigoue podemos usar como modelo+ A3++ o C:R)C C:R)V ,to praeroso no , 2erdadef 1o no ,+ Aui 2ai umae6celente dica ue l3e a4udar% a gan3ar tempo enuantodesen2ol2e se4a na .(/" usando o .AP )ogon ou o ABAP no(clipse+ [uer saberf )eia o resto deste post+
http://abap101.com/vagas-abap101/vagas/http://abap101.com/vagas-abap101/vagas/http://abap101.com/2014/01/01/cadastre-se-abap101/http://abap101.com/2014/01/01/cadastre-se-abap101/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2014%2F01%2F07%2Fcriando-templates-de-codigo-no-sap-logon-e-no-eclipse%2F&title=Criando%20templates%20de%20c%C3%B3digo%20no%20SAP%20Logon%20e%20no%20Eclipse&description=Aprenda%20a%20criar%20templates%20de%20c%C3%B3digo%20ABAP%20na%20SE80%20e%20Eclipse%20para%20economizar%20tempo%20durante%20o%20desenvolvimento%20de%20programas.%20Veja%20ainda%20exemplos%20prontos!http://abap101.com/vagas-abap101/vagas/http://abap101.com/vagas-abap101/vagas/http://abap101.com/2014/01/01/cadastre-se-abap101/http://abap101.com/2014/01/01/cadastre-se-abap101/http://abap101.com/author/fabiopagoti/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2014%2F01%2F07%2Fcriando-templates-de-codigo-no-sap-logon-e-no-eclipse%2F&title=Criando%20templates%20de%20c%C3%B3digo%20no%20SAP%20Logon%20e%20no%20Eclipse&description=Aprenda%20a%20criar%20templates%20de%20c%C3%B3digo%20ABAP%20na%20SE80%20e%20Eclipse%20para%20economizar%20tempo%20durante%20o%20desenvolvimento%20de%20programas.%20Veja%20ainda%20exemplos%20prontos!7/25/2019 ABAP Oberdan
48/145
T,8$(a,s 5, %65&9oAlguns comandos em ABAP at, em 2ers
7/25/2019 ABAP Oberdan
49/145
:AB com um certo atraso para completar o cEdigo com umtemplate+
(m seuncia 2% na op&o MCode :emplatesO+ G aui ue sede@ne os templates de cEdigo+ 5 uma ol3ada nos e6istentes+
Como e6emplo 2oc pode criar um template para uando2oc 4% sabe ue precisar% Faer um .()(C: e 4ogar oresultado em uma tabela interna ue ainda no Foi criada+
omentaneamente Fec3e o popup e escre2a o template ue2oc dese4a em um editor aberto ualuer como o abai6o+1ote ue o cEdigo no precisa ser Mcompil%2elO+ Basta ue eleFacilite sua 2ida na 3ora de us%8lo+
7/25/2019 ABAP Oberdan
50/145
>ma 2e ue o seu template se4a escrito copie8o no clipboarde 2olte na tela de con@gura&
7/25/2019 ABAP Oberdan
51/145
.al2e e prontoN Voc tem um template de cEdigoN
Para us%8lo basta digitar o nome do template no editor -nocaso XselectXintoXtable0+ >ma 2e ue o nome completo dotemplate se4a digitado a descri&o de@nida ser% e6ibida em
Forma de tooltip+ 1o2amente basta apertar :AB para ue ocEdigo se4a inserido de acordo com o template+
:ags
G poss2el tamb,m usar tags no seu template+ ?sso , tiluando seu template necessita de inForma&
7/25/2019 ABAP Oberdan
52/145
O c3anged source code
O (15 *U :?C(:8$!I]L 5ate; dd`mm`aaaa+
Como o nmero do c3amado e a data atual so din\micasbasta incluir tags no seu template+ 1o dropdoKn e6ibido noboto M?nsert :agO 3% algumas tags pr,8de@nidas como5ate:ime+ Pelo Fato de 5ate:ime estar entre s o editorir% interpretar a inForma&o como uma 2ari%2el+ ConFormeabai6o+
[uando 2oc de@ne uma 2ari%2el ue o editor no , capa deinterpretar como :icet ?5 um input bo6 , e6ibido toda
2e ue o template For c3amado+
7/25/2019 ABAP Oberdan
53/145
1o 3% uma 2ari%2el pr,8de@nida para somente a data mas@ca mais F%cil remo2er sE o 3or%rio ou dei6ar no Fontemesmo+ 1a min3a opinio , mel3or no usar estescoment%rios ue poluem o cEdigo e usar o 2ersionadoruando preciso mas tais coment%rios so normas emmuitas empresas+
7/25/2019 ABAP Oberdan
54/145
as , claro ue o ABAP$"$ no 2ai dar uma dica comoesta sem nada mais a acrescentar no , mesmof Vamos 2ercomo o mesmo conceito se aplica no ABAP no (clipse parauem 4% est% usando+
C/&a'5o ,8$(a,s 5, %65&9o'o ABAP 'o E%(&$s,* (clipse , mais inteligente ue a .(/" por isso a ualuermomento 2oc pode apertar CR:).PAC( para acionar aFun&o de autocompletar+ Para criar templates 2% no menu
MWindoKO 99 MPreFerencesO+ 1o menu a esuerda 2% emMABAP 5e2elopmentO 99 M.ource Code (ditorO 99M:emplatesO+
:ags
:ags -2ari%2eis0 no template de cEdigo do (clipse sodenotadas com q2ari%2el+ (6istem mais possibilidades de
2ari%2eis para uem usa o (clipse -data 3ora ano usu%rioetc0+ Ao usar um template com uma 2ari%2el descon3ecida2oc preenc3er% seu contedo apEs o template ser inseridosem a presen&a de popups portanto+
http://help.sap.com/saphelp_banking70/helpdata/ru/42/fc1d33a2253ee4e10000000a1553f7/content.htmhttp://help.sap.com/saphelp_banking70/helpdata/ru/42/fc1d33a2253ee4e10000000a1553f7/content.htmhttp://help.sap.com/saphelp_banking70/helpdata/ru/42/fc1d33a2253ee4e10000000a1553f7/content.htmhttp://help.sap.com/saphelp_banking70/helpdata/ru/42/fc1d33a2253ee4e10000000a1553f7/content.htm7/25/2019 ABAP Oberdan
55/145
E7,8$(os 5, T,8$(a,sAui 2o alguns e6emplos de templates para 2oc adicionarno seu editor predileto -adeuados ao eclipse0+
$ class qclassXname de@nition+
7/25/2019 ABAP Oberdan
56/145
!
I
]
L
Z
7
/
$"
$
$$!
$I
$]
$L
$Z
$7
$/
public section+
met3ods constructor+
protected section+
pri2ate section+
endclass+
class qclassXname implementation+
met3od constructor+
endmet3od+
endclass+
$
!
I
]
888888888888888888888888888888888888888888888888888888888888888888888
Report qprogram
888888888888888888888888888888888888888888888888888888888888888888888
7/25/2019 ABAP Oberdan
57/145
L
Z
7
/
Autor;
:ransa&o;
Edulo;
5ecri&o;
888888888888888888888888888888888888888888888888888888888888888888888
$
!
I
]
L
Z
7
/
$"
$$
$!
$I
$]
$L
$Z
$7
$/
$
!"
!$
!!
class qclXclassXnameXtest de@nition deFerred+
class clXtestedXglobalXclass de@nition local Friends qclXclassXnameXtest+
C)A.. qclXclassXnameXtest 5(U?1?:?*1 U*R :(.:?1=
U?1A)
CR(A:( P>B)?C
5>RA:?*1 .H*R:
R?. )(V() HAR)(..
+
P>B)?C .(C:?*1+
(:H*5. mut$ U*R :(.:?1= +
(:H*5. mut! U*R :(.:?1= +
(:H*5. mutI U*R :(.:?1= +
PR*:(C:(5 .(C:?*1+
=?V(1
(:H*5. gi2enXreusable
?P*R:?1=
NimX :SP( +
(:H*5. gi2enX$+
(:H*5. gi2enX!+
7/25/2019 ABAP Oberdan
58/145
!I
!]
!L
!Z
!7
!/
!
I"
I$
I!
II
I]
IL
IZ
I7
I/
I
]"
]$
]!
]I
]]
]L
]Z
]7
]/
]
L"
L$
L!
LI
L]
LL
(:H*5. gi2enXI+
WH(1
(:H*5. K3enXmut$+
:H(1
(:H*5. t3enXreusable
?P*R:?1=
NimX :SP( +
(:H*5. t3enX$+
(:H*5. t3enX!+
(:H*5. t3enXI+
PR?VA:( .(C:?*1+
(:H*5. setup+
(:H*5. teardoKn+
5A:A oXreFXtoXtestedXclass :SP( R(U :* clX+
5A:A oXe6ception :SP( R(U :* c6X +
(15C)A..+
C)A.. qclXclassXnameXtest ?P)((1:A:?*1+
(:H*5 setup+
C)(AR me89oXreFXtoXtestedXclass+
C)(AR me89oXe6ception+
(15(:H*5+ setup
(:H*5 teardoKn+
(15(:H*5+ teardoKn
7/25/2019 ABAP Oberdan
59/145
LZ
L7
L/
L
Z"
Z$
Z!
ZI
Z]
ZL
ZZ
Z7
Z/
Z
7"
7$
7!
7I
7]
7L
7Z
77
7/
7
/"
/$
/!
/I
/]
/L
/Z
/7
//
et3ods >nder :est
(:H*5 mut$+
(15(:H*5+ mut$
(:H*5 mut!+
(15(:H*5+ mut!
(:H*5 mutI+
(15(:H*5+ mutI
=?V(1
(:H*5 gi2enX$+
(15(:H*5+ gi2enX$
(:H*5 gi2enX!+
(15(:H*5+ gi2enX!
(:H*5 gi2enXI+
(15(:H*5+ gi2enXI
WH(1
7/25/2019 ABAP Oberdan
60/145
/
"
$
!
I
]
L
Z
7
/
$""
$"$
$"!
$"I
$"]
$"L
$"Z
$"7
$"/
$"
$$"
$$$
$$
!$$
(:H*5 K3enXmut$+
(15(:H*5+ K3enXmut$
:H(1
(:H*5 t3enXreusable+
(15(:H*5+ t3enXreusable
(:H*5 t3enX$+
clXaunitXassert9assertXeuals-
(^P*R:?1=
e6p 5ata *b4ect Kit3 (6pected :Dpe
act 5ata *b4ect Kit3 Current Value
msg essage in Case oF (rror
le2el CR?:?CA) (rror .e2eritD
tol :olerance Range For Uloating Point 1umbers
uit (:H*5 UloK Control in Case oF (rror
ignoreX3as3Xseuence ABAPXUA).( ?gnore c3ange seuence in3as3 tables
R(C(?V?1=
assertionXFailed Condition not met
0+
(15(:H*5+ t3enX$
(:H*5 t3enX!+
clXaunitXassert9assertXbound-
7/25/2019 ABAP Oberdan
61/145
I
$$]
$$
L$$Z
$$7
$$/
$$
$!"
$!$
$!!
$!I
$!]
$!L
$!Z
$!7
$!
/$!
$I"
$I$
$I!
$I
(^P*R:?1=
act ReFerence Variable to Be C3eced
msg (rror essage
le2el CR?:?CA) (rror .e2eritD
uit (:H*5 UloK Control in Case oF (rror
R(C(?V?1=
assertionXFailed Condition not met
0+
(15(:H*5+ t3enX!
(:H*5 t3enXI+
clXaunitXassert9assertXnotXbound-
(^P*R:?1=
act ReFerence Variable to Be C3eced
msg (rror essage
le2el CR?:?CA) (rror .e2eritD
uit (:H*5 UloK Control in Case oF (rror
R(C(?V?1=
assertionXFailed Condition not met
0+
(15(:H*5+ t3enXI
(15C)A..+
7/25/2019 ABAP Oberdan
62/145
I
$I]
$I
L$IZ
$I7
$I/
$I
$]"
$]$
$]!
$]I
$]]
$]L
E'&, s,+s ,8$(a,sGCaso 2oc use templates de cEdigo cole seus preFeridos nocampo de coment%rio+ Assim todos podem economiar tempotamb,mN
3ttp;``abap$"$+com`!"$]`"$`"7`criando8templates8de8codigo8no8sap8logon8e8no8eclipse`
http://abap101.com/2014/01/07/criando-templates-de-codigo-no-sap-logon-e-no-eclipse/http://abap101.com/2014/01/07/criando-templates-de-codigo-no-sap-logon-e-no-eclipse/http://abap101.com/2014/01/07/criando-templates-de-codigo-no-sap-logon-e-no-eclipse/http://abap101.com/2014/01/07/criando-templates-de-codigo-no-sap-logon-e-no-eclipse/7/25/2019 ABAP Oberdan
63/145
,o tenho demanda em ABAP #ue $aer%B3 UhB?* PA=*:?4 D5C5MB56 I 789L
Compartil3eN
Por estes dias nEs do ABAP$"$ recebemos um email muito
semel3ante a M[uase uma crise e6istencialO de um leitor uedeu seu primeiro passo em sua carreira ABAP mas anda comalguns problemas entre eles a Falta de demanda+ Apesar de3a2er muitos do ue as consultorias entitulam como MJniorsOnas empresas muitas das demandas acabam simplesmenteno caindo nas mos deles+ (ngana8se os Jniors ue issoacontece somente pela Falta de e6perincia e 3abilidade no.AP+ .e 2oc est% na mesma situa&o -ou uer apro2eitar as
dicas dadas ao nosso leitor em Forma de post0 no dei6e deler este post e come&ar a ter demandas mais desa@adoras+
Antes de responder ao nosso leitor dei6o o email dele nantegra;
+o8 %ia
+o87 8e< &o8e 7 8e :or8ei e8 Si2te8a2 %e
"&:or8a>o &o B8 %e /M.
F
7/25/2019 ABAP Oberdan
64/145
e2t
7/25/2019 ABAP Oberdan
65/145
7/25/2019 ABAP Oberdan
66/145
e6ercendo seu trabal3o+ Como diria aggie -personagem de:3e Waling 5ead0; MWe all got 4obs to doO+
A 5&s/&+&4o 5, /aa(
7/25/2019 ABAP Oberdan
67/145
T/,&'o - /,&'o> Jo9o - o9o
(6erccios so Etimos mas eles tem um elemento crucialmuitas 2ees no encontrados em especi@ca&m e6erccio de2e ser claro para entenderonde pretende8se c3egar+ A solu&o do e6erccio de2e ser
detal3ada e clara para entender8se como o ob4eti2o Foialcan&ado+ A metodologia de desen2ol2imento de uemtrabal3a com .AP , 2ia de regra WaterFall inFelimente -ainda em pleno s,culo !$0+ [uando uma especi@ca&o Funcionalc3ega nas mos de um ABAP nestas condi&
7/25/2019 ABAP Oberdan
68/145
So(&%&, 5,8a'5aN&'9+-8 %
7/25/2019 ABAP Oberdan
69/145
Pa/&%&$, 5, $/o,os O$,'
So+/%,Como 2oc acompan3a o ABAP$"$ com certea 2oc sabeue a .AP publicou uma no2a licen&a de desen2ol2imento+?sso signi@ca ue 2oc agora pode ter um cEdigo ABAPpublicado no =itHub sem correr o risco de ser preso-a0+ >mpro4eto seu ou Feito 4untamente com outras pessoas as uaisusam o tempo li2re delas para criar algo til como
o WordPresspor e6emplo , uma grande oportunidade de tere6erccios mais bem elaborados al,m de ser um grande Feito+
;+a&s s+as 5&%as ao 'ossoa8&9o (,&o/Caso 2oc ten3a c3egado at, aui certamente , porue est%ou 4% este2e nesta situa&o+ [uais os consel3os ue 2ocdaria ao nosso colega de pro@ssof 1o dei6e de comentar aem bai6oN :em algum problema relacionadof Comentetamb,mN
>m grande abra&o a todos e ao nosso leitor ue aceitou a
ideia de ter seu pedido respondido em Forma de post+
Di'as para uem n,o 'onsegueentre/istas no mundo SAPB3 UhB?* PA=*:?4 S5PT5MB56 97 789L
http://abap101.com/2013/11/29/nova-licenca-de-desenvolvimento-da-sap-publicada/http://abap101.com/2013/11/23/wordcamp-2013-open-source-sap/http://abap101.com/author/fabiopagoti/http://abap101.com/2013/11/29/nova-licenca-de-desenvolvimento-da-sap-publicada/http://abap101.com/2013/11/23/wordcamp-2013-open-source-sap/http://abap101.com/author/fabiopagoti/7/25/2019 ABAP Oberdan
70/145
Compartil3eN
*utro dia destes recebi uma mensagem de uma pessoa-tal2e leitor do blog ou no0 a respeito da di@culdade ueele-a0 tem em come&ar a atuar na %rea de .AP mais
especi@camente com ABAP+
Como a pessoa se reser2ou o direito de en2iar esta pergunta2ia uma rede social eu estou me reser2ando o direito depublicar min3a resposta tamb,m em rede 4% ue sei ue esteproblema , de muitos+ Apenas editei e remo2i o ue no cabeneste post mas uanto ao assunto principal ue , se colocarno mercado .AP o te6to est% na integra+
P,/9+'a-todas edi&
7/25/2019 ABAP Oberdan
71/145
Ui recentemente academia na v^^^^^^^^^we desde entono estou conseguindo nem seuer entre2ista seria meucurriculo mal elaboradof
Por Fa2or me a4uda+
Abra&o+
R,s$osa
-todas edi&
7/25/2019 ABAP Oberdan
72/145
I0 Voc ainda no tem o ue precisa para atuar na %rea epara agra2ar a situa&o ainda demonstra isso mal no seu CV
:en3a certea ue na ocorrncia da uarta possibilidade ue
seria ter o ue precisa para atuar na %rea e demonstrar issono CV 2oc 4% estaria no mnimo conseguindo entre2istas emuito pro2a2elmente empregado na %rea econseuentemente no me en2iando uma mensagem+
[uanto ao seu CV eu no posso analisar poru -02oc nome disponibiliou+
1o sei se este , o seu caso mas mudar de %rea reuer ummnimo de plane4amento+ H% muitos e muitos anos umaacademia .AP se4a o@cial ou no est% bem longe de ser umagarantia de emprego na %rea+ Ainda 3% muitos e muitos anosum emprego inicial em .AP est% bem longe de remunerar oue as pessoas ue Faem academia ac3am ue se paga+
Para @naliar se 2oc puder me Falar ual o seu usu%rio na
.51 uando Foi a ltima 2e ue apareceu por l% e uantotempo 2oc se dedica em se aprimorar em ABAP Frente aotempo ue 2oc manda currculos tal2e isso me a4ude aentender poru 2oc no consegue entre2istas+
Boa sorte
Pos%as so/, R=Particularmente eu abomino muitas pr%ticas atuais derecursos 3umanos+ Contudo elas Faem parte do 4ogo+Uelimente 3% um e6celente podcast do a6 =e3ringernaCB1 sobre empregabilidade+ Vale muito a pena conFeririndependente se 2oc trabal3a com .AP ou no+
http://cbn.globoradio.globo.com/comentaristas/max-gehringer/MAX-GEHRINGER.htmhttp://cbn.globoradio.globo.com/comentaristas/max-gehringer/MAX-GEHRINGER.htm7/25/2019 ABAP Oberdan
73/145
9: ind'ios musi'ais ue o seu
programa ABAP pode melhorar3ttp;``abap$"$+com`!"$I`"7`$7`indicios8musicais8seu8programa8abap8pode8mel3orar`
3ttp;``abap$"$+com`!"$!`$"`!/`e2olucao8do8editor8abap`
Criando #*-etos ChamandoM1todos Dinami'amenteB3 C)A>5?A A15R(..A4 U!3 78 7897
Compartil3eN
1a busca pela solu&o de um problema debugandodebugando e debugando no2amente me deparei com acria&o din\mica de ob4etos+
(studando mais a Fundo eis ue surge assunto para mais umpostN A@nal uanto mais din\micos Forem os programas e AP?xs mel3or ser% sua perFormance e re8usabilidade+
* ue Fa com ue consigamos criar o ob4eto ` c3amar o
m,todo dinamicamente , a utilia&o de uma tabela na ualinFormamos todos os par\metros necess%rios -se4ade i8porti&g e-porti&g c6a&gi&g etc0 ou se4a podemospopular esta tabela de acordo com nossa necessidade emdeterminado ponto do programa+
>tiliei como e6emplo a cria&o de um ob4eto com reFerncia classe yCLKUIKALVKRID o ual c3amei der_grid.
http://abap101.com/2013/07/17/indicios-musicais-seu-programa-abap-pode-melhorar/http://abap101.com/2013/07/17/indicios-musicais-seu-programa-abap-pode-melhorar/http://abap101.com/2012/10/28/evolucao-do-editor-abap/http://abap101.com/author/clauandressa/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F07%2F20%2Fcriando-objetos-chamando-metodos-dinamicamente%2F&title=Criando%20Objetos%20%2F%20Chamando%20M%C3%A9todos%20Dinamicamente&description=http://abap101.com/2013/07/17/indicios-musicais-seu-programa-abap-pode-melhorar/http://abap101.com/2013/07/17/indicios-musicais-seu-programa-abap-pode-melhorar/http://abap101.com/2012/10/28/evolucao-do-editor-abap/http://abap101.com/author/clauandressa/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F07%2F20%2Fcriando-objetos-chamando-metodos-dinamicamente%2F&title=Criando%20Objetos%20%2F%20Chamando%20M%C3%A9todos%20Dinamicamente&description=7/25/2019 ABAP Oberdan
74/145
Para Facilitar o entendimento segue abai6o o Pattern-modelo0 da cria&o est%tica deste ob4eto;
$
!
I
]
L
Z
7
/
$
"$$
$!
$I
$]
$L
$Z
$7
CR(A:( *BJ(C: rXgrid (^P*R:?1=
iXs3ellstDle "
iXliFetime
iXparent rXcontainer
iXapplXe2ents space
iXparentdbg
iXapplogparent iXgrap3icsparent
iXname
iXFcatXcomplete space
(^C(P:?*1.
errorXcntlXcreate $
errorXcntlXinit !
errorXcntlXlin I errorXdpXcreate ]
ot3ers L+
*B.; o ob4eto r_container, do
ripo CLKUIKCUSTOMKCONTAINER criado estaticamenteno cEdigo abai6o+
7/25/2019 ABAP Oberdan
75/145
Vamos criar o ob4eto apenas inFormando o par\metroobrigatErio y?XPAR(1: e para isso utiliaremosuma or@areado tipo abapKparmbind e uma tabelatipo abap_parmbind_tabdenominadas lwa_parame lt_paramrespecti2amente+
1a propriedade y1ame sempre inFormaremos o par\metroneste caso y?XPAR(1:+
1a propriedade yind o tipo -(6porting conForme modeloest%tico0+
Para inFormar o tipo precisamos utiliar os atributos da classeyC)XABAPX*BJ(C:5(.CR com isso teremos;
$ lKaXparam8ind clXabapXob4ectdescr9e6porting+
Por @m necessitamos inFormar o 2alor atribudo a estepar\metro e conForme podemos 2eri@car no cEdigo abai6o o2alor , o ob4eto rXcontainer -ob4eto de reFerncia a classeC)X=>?XC>.:*XC*1:A?1(R0+
5esta Forma necessitamos incluir a reFerncia do ob4eto natabela;
$ =(: R(U(R(1C( *U rXcontainer ?1:* lKaXparam82alue+
Agora , sE inserirmos nossa or@areana tabela e criarmos o
ob4eto ` c3amarmos o m,todo -no se esue&a de utiliar otrD8catc3 de Forma a tratar poss2eis e6ce&
7/25/2019 ABAP Oberdan
76/145
*bs; Veri@ue a sinta6 de c3amada do m,todo ` cria&o doob4eto+ *bser2e ue cria8se o ob4eto do tipo de uma classe-inFormada na 2ari%2el l2XtDpe0 com os par\metros inseridosna tabela+
$
!
I
]
L
Z
7
/
$
"
$$
$!
$I
$]
$L
$Z
$7
$/
$
R(P*R: XcreateXdinnam+
:SP(8P**).; abap+
5A:A; ltXparam :SP( abapXparmbindXtab
lKaXparam :SP( abapXparmbind+
5A:A; l2XtDpe :SP( string
l2Xe6cXt6t :SP( string+
5A:A; rXe6cept :SP( R(U :* c6Xroot
rXgrid :SP( R(U :* clXguiXal2Xgrid
rXcontainer :SP( R(U :* clXguiXcustomXcontainer+
C)(AR; ltXparam lKaXparam l2XtDpe l2Xe6cXt6t+
R(UR(.H; ltXparam+
88888888888888888888888888888888888888888888888888888888888888888888
.:AR:8*U8.()(C:?*1+
CR(A:( *BJ(C: rXcontainer
(^P*R:?1=
containerXname zC*1:A?1(RX$z
(^C(P:?*1.
cntlXerror $
7/25/2019 ABAP Oberdan
77/145
!"
!
$!!
!I
!]
!L
!Z
!7
!/
!
I"
I$
I!
II
I
]IL
IZ
I7
I/
I
cntlXsDstemXerror !
createXerror I
liFetimeXerror ]
liFetimeXdDnproXdDnproXlin L
*:H(R. Z+
?U sD8subrc 1( "+
(..A=( ?5 sD8msgid :SP( sD8msgtD 1>B(R sD8msgno
W?:H sD8msg2$ sD8msg2! sD8msg2I sD8msg2]+
(15?U+
88888888888888888888888888888888888888888888888888888888888888888888
C)A.. clXabapXob4ectdescr 5(U?1?:?*1 )*A5+
l2XtDpe zC)X=>?XA)VX=R?5z+
lKaXparam8name z?XPAR(1:z+
lKaXparam8ind clXabapXob4ectdescrgtYe6porting+
=(: R(U(R(1C( *U rXcontainer ?1:* lKaXparam82alue+
?1.(R: lKaXparam ?1:* :AB)( ltXparam+
88888888888888888888888888888888888888888888888888888888888888888888
:RS +
CR(A:( *BJ(C: rXgrid
:SP(
-l2XtDpe0
PARA(:(R8:AB)(
ltXparam+
CA:CH c6XsDXcreateXob4ectXerror ?1:* rXe6cept+
l2Xe6cXt6t rXe6cept8gtYgetXte6t- 0+
(..A=( l2Xe6cXt6t :SP( z?z+
7/25/2019 ABAP Oberdan
78/145
7/25/2019 ABAP Oberdan
79/145
Uica o desa@o; ue tal c3amar um m,todo dinamicamente eutiliar uma tabela de e6cessof (la Funciona da mesmamaneira para recuperar as e6ce&
7/25/2019 ABAP Oberdan
80/145
A FErmula da e6ponencia&o , simples e por isso consideroum e6emplo legal para mostrar a recursi2idade em pr%tica+
(6ponencia&o >sando Recursi2idade
1o ABAP 2oc pode usar o operador para Faer ae6ponencia&o e resol2er todo o problema em uma lin3a -2e4ano programa abai6o0 mas esse post no , sobree6ponencia&o mas recursi2idade+
1o2amente da Wiip,dia;
A reco o proce22o pelo ?
7/25/2019 ABAP Oberdan
81/145
888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888
R(P*R: abap$"$Xrecursion+
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXmat3 5(U?1?:?*1
8888888888888888888888888888888888888888888888888888888888888888888888
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXmat3 5(U?1?:?*1+
P>B)?C .(C:?*1+
(:H*5. e6ecuteXe6ponentiation
?P*R:?1=
base :SP( i
e6poent :SP( i
R(:>R1?1= 2alue-reXpoKer0 :SP( i+
PR?VA:( .(C:?*1+
5A:A; interaction :SP( i
poKer :SP( i VA)>( $+
(15C)A..+ lclXmat3 5(U?1?:?*1
7/25/2019 ABAP Oberdan
82/145
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXmat3 ?P)((1:A:?*1
8888888888888888888888888888888888888888888888888888888888888888888888
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXmat3 ?P)((1:A:?*1+
(:H*5 e6ecuteXe6ponentiation+
A55 $ :* interaction+
?U interaction { e6poent+
poKer me89e6ecuteXe6ponentiation- base base
e6poent e6poent 0+
>):?P)S poKer BS base+
(15?U+
reXpoKer poKer+
(15(:H*5+ e6ecuteXe6ponentiation
(15C)A..+ lclXmat3 ?P)((1:A:?*1
5A:A; rXe6p :SP( R(U :* lclXmat3
2XpoKer :SP( i+
PARA(:(R.; pXbase :SP( i 5(UA>): !
pXe6p :SP( i 5(UA>): I
pXrec A. CH(CB*^+
7/25/2019 ABAP Oberdan
83/145
?1?:?A)?'A:?*1+
CR(A:( *BJ(C: rXe6p+
.:AR:8*U8.()(C:?*1+
?U pXrec z^z+
2XpoKer rXe6p89e6ecuteXe6ponentiation- base pXbase
e6poent pXe6p 0+
().(+
2XpoKer pXbase pXe6p+
(15?U+
WR?:(; ` zPoKer; z 2XpoKer+
&, /a9&s(,17hosted with by&=+
(6ecute esse programa no modo debug e 2e4a a pil3a dec3amada+ Ve4a ue o m,todo se repete 2%rias 2ees indicandoue ele Fora c3amado de dentro dele mesmo caracteriandouma recursi2idade;
https://gist.github.com/furlan/2983347/raw/a8f85a30aa1b3b10dced1d9793a8681394b8d7d1/gistfile1.txthttps://gist.github.com/furlan/2983347#file-gistfile1-txthttps://gist.github.com/furlan/2983347#file-gistfile1-txthttps://github.com/https://github.com/https://gist.github.com/furlan/2983347/raw/a8f85a30aa1b3b10dced1d9793a8681394b8d7d1/gistfile1.txthttps://gist.github.com/furlan/2983347#file-gistfile1-txthttps://github.com/7/25/2019 ABAP Oberdan
84/145
Pil6a %e c6a8a%a2 %o 8to%o EEC1TE_EPONENT"AT"ON( ) J !ec
7/25/2019 ABAP Oberdan
85/145
Parte2 %e &oteboo@ J :o&te i8age8
>m noteboo pode ser um materia Formado por tecladodisplaD )C5 H5 placa8me memErias carca&a etc+
http://www.laptoppartsexpert.com/c-91554-gateway-laptop-parts-gateway-nv-parts-gateway-nv52.htmlhttp://www.laptoppartsexpert.com/c-91554-gateway-laptop-parts-gateway-nv-parts-gateway-nv52.html7/25/2019 ABAP Oberdan
86/145
* teclado , Formado por uma base uma tecla [ outra Woutra ( outra R outra : etc+
>m H5 , Formado por um con4undo de discos magn,ticos
placa de controle e sistema de leitura
>m sistema de leitura , Formado por um bra&o de leituracabe&ote de leitura e placa de leitura+
( assim por diante+
.e eu ti2esse uma rotina ue dado um material ele me
retornasse uma lista de materais ue Formam esse materialeu precisaria c3amar essa rotina n 2ees conForme eu FosseMdesmontandoO ou Me6plodindoO meu material+
5essa maneira a 3a2eria a recursi2idade como e6empli@cadono e6emplo do noteboo resol2endo o problema muitorapidamente+
Claro ue nem tudo so Tores+ 5epurar um programa ue usarecursi2idade , muito trabal3oso bem como entender arecursi2idade ue outra pessoa desen2ol2eu+ ?sso Fa com uea recurso se4a e2itada mas em alguns casos , a mel3orForma de resol2er um problema+
Apli'a+,o do Design PatternGFa'toryB3 U)hV?* U>R)A14 U5 I 7897
Compartil3eN
5epois de Falarmos do.ingleton est% na 3ora de Falarmos deoutropadro de pro4eto o UactorD+ * UactorD , mais diFcil de
http://abap101.com/author/furlan/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F06%2F06%2Faplicacao-design-pattern-factory%2F&title=Aplica%C3%A7%C3%A3o%20do%20Design%20Pattern%3A%20Factory&description=http://abap101.com/2012/03/26/design-patern-singleton/http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_softwarehttp://abap101.com/author/furlan/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F06%2F06%2Faplicacao-design-pattern-factory%2F&title=Aplica%C3%A7%C3%A3o%20do%20Design%20Pattern%3A%20Factory&description=http://abap101.com/2012/03/26/design-patern-singleton/http://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software7/25/2019 ABAP Oberdan
87/145
entender do ue o .ingleton+ ais do ue isso mais diFcil demostrar alguma aplica&o pr%tica+
1esse post eu mostrarei as duas coisas e6plicar o
Funcionamento do UactorD bem como sua aplica&o+
R%pida (6plica&o
5e uma maneira bem simples o UactorD , um padro uenada mais , do ue uma classe geradora de ob4etos onde adeciso de ual classe o ob4eto ser% , Feita pela classeMgeradoraO+
*nde eu apliuei o UactorD em ABAPf
Pro4eto Code Coac3ing
(stamos trabal3ando num pro4eto open source c3amadoCodeCoac3ingue est% sendo desen2ol2ido sob a iniciati2a doABAP$"$ *pen .ource+
* ob4eti2o do pro4eto , construir uma aplica&o ABAP onde oProgramador e Coordenador possam se comunicar peloprEprio programa ABAP+
Ve4a esse e6emplo+ (sse trec3o de cEdigo Fa parte de outropro4eto em ue est%2amos en2ol2idos+ (u ueria passarinstru&
7/25/2019 ABAP Oberdan
88/145
(6istem algumas lin3as de coment%rios ue so iniciadasporZ[+ (ssas lin3as contm uma esp,cie de cEdigo ue d%um signi@cado especial s lin3as comentadas logo naseuncia+ Continuando na lin3a doZ[encontramos aseguinte instru&o; M4ac;tasO+ ?sso signi@ca ue oscoment%rios logo abai6o dessa lin3a trata8se de uma tareFadesignada para o programador c3amado Jac+
.endo assim o programador pode Facilmente Faer umabusca no programa pelo seu nome e descobrir todos ospontos ue possuam algum coment%rio para ele+ Para Facilitareu automatiei essa busca em um programa ue l oprograma e e6trai todos os pontos onde a lin3a come&acomZ[e gera um relatErio como o mostrado abai6o+
Prottipo %o relatrio para o Co%e Coac6i&g
(sse programa , apenas um protEtipo e como tal ser2eapenas para apresentar e testar a ideia central do pro4eto+ *pro4eto @nal contemplar% muitas outras Funcionalidades bemcomo outros comandos muito al,m dota2@+ G nesse pontoue o FactorD ser% usado+
* ue o UactorD .igni@ca para o CodeCoac3ingf
7/25/2019 ABAP Oberdan
89/145
1o protEtipo do programa Code Coac3ing ele consegueinterpretar apenas o comandota2@ mas 4% no primeirorelease estamos plane4ando e6pandir para pelo menos trsoutros comandos al,m dota2@ ?
7/25/2019 ABAP Oberdan
90/145
Tela %e 2ele>o ; Co8a&%o TAS,
E-plica>o para o co8a&%o TAS, ; Cla22e C_TAS,
Co8a&%o V1HP &>o e-i2te
!e2
7/25/2019 ABAP Oberdan
91/145
programa+ *u se4a para esse caso a classe do comandoprecisa seguir a seguinte nomenclatura; )C)X{comando9caso contr%rio 3a2er% um erro na cria&o do ob4eto dauelaclasse pois a classe no e6istir%+
*s ob4etos dos comandos so criados no m,todo UAC:*RS- 0com o seguinte comando;
C!EATE O+VECT re_i&2ta&ce TYPE (lv_co88a&%).
* tipo do ob4eto , de@nido em tempo de e6ecu&o de acordocom o 2alor da 2ari%2ellv_co88a&%+ Colocando a 2ari%2el
entre parnteses o interpretador ABAP entende ue o tipo doob4eto a ser criado no ,lv_co88a&% mas sim o ue est% nocontedo da 2ari%2el entre os parnteses+
[ual a Vantagemf
Por ue criei uma classe para cada comandof Porue dessaForma pode8se adicionar um no2o comando de maneira
>?:* F%cil apenas criando uma no2a classe para o no2ocomando e 3erdando da classe )C)XC*A15+
:odo o resto no ser% aFetado+
-sim isso c3eira polimor@smo0+
-sim isso , genialNNN0
* padro de pro4eto UactorD pode ser implementado de 2%riasmaneiras essa Foi apenas uma delas+ Ac3o sim interessanteestud%8lo para ter mais essa Ferramenta em sua Korbenc3+
)mportanto e 5Kportanto Uma
Ta*ela )nterna MEdulo de Fun+,o
7/25/2019 ABAP Oberdan
92/145
B3 U)hV?* U>R)A14 MA3 L9 7897
Compartil3eN
(sta2a procurando algum assunto para escre2er e umalu doc,ue8mail c3egou com uma d2ida e ue em todas as turmas
da Academia ABAP tem como importar ou e6portar umatabela interna para um mEdulo de Fun&o ou m,todo+
A solu&o pode ser respondida com uma simples Frase; M>seum :able :Dpe -Categoria de :ipos0O+ .E com isso 4% seriasu@ciente para 2oc sair do outro lado mas Faendo 4us ao
M$"$O do nome do site 2ou e6plicar passo a passo como Faerem um mEdulo de Fun&o+ 1o prE6imo post eu e6plicareicomo Faer em um m,todo+
Problema
Precisamos criar um mEdulo de Fun&o para retornar dadosdos 2os -tabela .PU)?0 dado uma empresa a,rea+
.olu&oA primeira coisa a Faer , criar um tipo tabela -table tDpe0 nodicion%rio ue de@ne uma tabela interna do tipo standard+ V%na transa&o .($$ e escol3a 5ata :Dpe;
http://abap101.com/author/furlan/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F05%2F31%2Fimportanto-exportanto-uma-tabela-interna-modulo-funcao%2F&title=Importanto%20e%20Exportanto%20Uma%20Tabela%20Interna%20%E2%80%93%20M%C3%B3dulo%20de%20Fun%C3%A7%C3%A3o&description=http://abap101.com/author/furlan/https://www.addtoany.com/share#url=http%3A%2F%2Fabap101.com%2F2012%2F05%2F31%2Fimportanto-exportanto-uma-tabela-interna-modulo-funcao%2F&title=Importanto%20e%20Exportanto%20Uma%20Tabela%20Interna%20%E2%80%93%20M%C3%B3dulo%20de%20Fun%C3%A7%C3%A3o&description=7/25/2019 ABAP Oberdan
93/145
Cliue em MCreateO e escol3a :able :Dpe;
(ntre com uma bre2e descri&o e o )ine :Dpe ue de@ne a ascolunas na tabela interna+ 1esse caso ueremos todas ascolunas da tabela .PU)?+
7/25/2019 ABAP Oberdan
94/145
Certi@ue8se o tipo de tabela se4a .tandard :able+
Com o tipo global criado e ati2o 2amos a cria&o ao mEdulode Fun&o+ Primeiro , necess%rio criar uma =rupo de Uun&ona transa&o .(/"+ (scol3a MUunction =roupO e de@na umnome+ Pressione (1:(R e con@rme a cria&o do no2o ob4eto+
7/25/2019 ABAP Oberdan
95/145
5epois de criar o grupo crie o mEdulo de Fun&o+ Pressione oboto direito do mouse sobre o grupo de Fun&o escol3aCreate 89 Uunction odule+
5e@na o nome a descri&o para o mEdulo de Fun&o+ * nomeprecisa necessariamente M'XO+
Agora 2amos de@nir o par\metro de ?mport ?XCARR?5 como mesmo tipo do campos CARR?5 da tabela .PU)?+
7/25/2019 ABAP Oberdan
96/145
Para o par\metro de (^P*R: use o :able :Dpe de@nidoanteriormente+
1o 2amos nos esuecer de de@nir as e6ce&
7/25/2019 ABAP Oberdan
97/145
7/25/2019 ABAP Oberdan
98/145
Agora usando eFeti2amente o mEdulo de Fun&o crie umprograma ue c3ama a Fun&o e imprima o resultado natela+'ABAP$"$XR(P*R:XC*11(C:?*1.
888888888888888888888888888888888888888888888888888888888888888888888
Report 'ABAP$"$XR(P*R:XC*11(C:?*1.
888888888888888888888888888888888888888888888888888888888888888888888
:3is code Kas publis3ed originallD on ABAP$"$+com
3ttp;``abap$"$+com`!"$!`"L`I"` 9
importanto8e6portanto8uma8tabela8interna8modulo8Funcao
Aut3or; Ul%2io Uurlan
(8mail; Furlanabap$"$+com
888888888888888888888888888888888888888888888888888888888888888888888
R(P*R: abap$"$XreportXconnections+
5A:A; itXspTi :SP( ttXspTi+
U?()58.SB*).; {FsXspTi9 :SP( )?1( *U ttXspTi+
PARA(:(R.; pXcar :SP( spTi8carrid+
.:AR:8*U8.()(C:?*1+
https://gist.github.com/2840290https://gist.github.com/28402907/25/2019 ABAP Oberdan
99/145
CA)) U>1C:?*1 z'XUX=(:XC*11(C:?*1.z
(^P*R:?1=
imXcarrid pXcar
?P*R:?1=
e6XspTiXt itXspTi
(^C(P:?*1.
noXdataXFound $
*:H(R. !+
?U sD8subrc {9 "+
(..A=( z1o records Found+z :SP( z(z+
(15?U+
)**P A: itXspTi A..?=1?1= {FsXspTi9+
WR?:(; ` {FsXspTi98carrid
{FsXspTi98connid
{FsXspTi98countrDFr
{FsXspTi98citDFrom
{FsXspTi98airpFrom {FsXspTi98countrDto
{FsXspTi98citDto
{FsXspTi98airpto+
(15)**P+
&, /a9&s(,17hosted with by&=+
5iscusso
* principal ponto a destacar aui , o tipo criado na .($$'::X.PU)?+ Antigamente usa2a a pasta :ables do mEdulo deFun&o onde era somente preciso especi@car a estrutura ueo prEprio sistema entendia ue de2eria ser criado uma tabelainterna em tempo de e6ecu&o+ 1o usamos essa t,cnica pois
4% est% obsoleto e por regra no de2emos criar no2os
https://gist.github.com/furlan/2840290/raw/4c86ceb5f46c5f35b967ce8fe24a45bee0e5c6a1/gistfile1.txthttps://gist.github.com/furlan/2840290#file-gistfile1-txthttps://gist.github.com/furlan/2840290#file-gistfile1-txthttps://github.com/https://github.com/https://gist.github.com/furlan/2840290/raw/4c86ceb5f46c5f35b967ce8fe24a45bee0e5c6a1/gistfile1.txthttps://gist.github.com/furlan/2840290#file-gistfile1-txthttps://github.com/7/25/2019 ABAP Oberdan
100/145
programas com instru&
7/25/2019 ABAP Oberdan
101/145
as classes de e6ce&o de2emos usar a estrutura decomandos :RS8CA:CH8C)(A1>P+
>sarei a classe )C)X(^C(P:?*1X5(* ue est% no include
'ABAP$"$X(^C(P:?*1XC)A..(. nos programas de e6emplo+
888888888888888888888888888888888888888888888888888888888888888888888
?nclude 'ABAP$"$X( C(P:?*1XC)A..(.
888888888888888888888888888888888888888888888888888888888888888888888
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXe6ceptionXdemo 5(U?1?:?*1
8888888888888888888888888888888888888888888888888888888888888888888888
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXe6ceptionXdemo 5(U?1?:?*1+
P>B)?C .(C:?*1+ (:H*5.; dumpXFactorD
simpleXcatc3
cleanupXli2e RA?.?1= c6XsDXerodi2ide
cleanupXdead RA?.?1= c6XsDXerodi2ide
propagating RA?.?1= c6XsDXerodi2ide+
PR?VA:( .(C:?*1+
5A:A; result :SP( i+
(15C)A..+ lclXe6ceptionXdemo 5(U?1?:?*1
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXe6ceptionXdemo ?P)((1:A:?*1
7/25/2019 ABAP Oberdan
102/145
8888888888888888888888888888888888888888888888888888888888888888888888
8888888888888888888888888888888888888888888888888888888888888888888888
C)A.. lclXe6ceptionXdemo ?P)((1:A:?*1+
(:H*5 dumpXFactorD+
result $ ` "+
(15(:H*5+ dumpXFactorD
(:H*5 simpleXcatc3+
:RS +
result $ ` "+
CA:CH c6XsDXerodi2ide+
WR?:(; ` z(6ecutou o CA:CH do m,todo .?P)(XCA:CH+z+
(15:RS+
(15(:H*5+ simpleXcatc3
(:H*5 cleanupXli2e+
:RS +
result $ ` "+
C)(A1>P+
WR?:(; ` z(6ecutou o Cleanup do m,todo C)(A1>PX)?V(+z+
(15:RS+
(15(:H*5+ cleanupXli2e
(:H*5 cleanupXdead+
:RS +
result $ ` "+
CA:CH c6XsDXerodi2ide+
WR?:(; ` z(6ecutou o CA:CH do m,todo C)(A1>PX5(A5z+
C)(A1>P+
o programa nunca e6ecutar% o C)(A1>P+
7/25/2019 ABAP Oberdan
103/145
WR?:(; ` z(6ecutou o Cleanup do m,todo C)(A1>PX5(A5+z+
(15:RS+
(15(:H*5+ cleanupXdead
(:H*5 propagating+
result $ ` "+
(15(:H*5+ propagating
(15C)A..+ lclXe6ceptionXdemo ?P)((1:A:?*1
&, /aABAP101KEXCEPTIONKCLASSEShosted with by&=+
* primeiro programa ue mostrarei , um programa cu4a sada, um 5>PNf .im uando o sistema c3ega a algumasitua&o onde ele no consegue seguir com o programacomo por e6emplo uma di2iso por ero+
888888888888888888888888888888888888888888888888888888888888888888888
Report 'ABAP$"$X(^C(P:?*1X5>P
888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888
R(P*R: abap$"$Xe6ceptionXdump+
?1C)>5( abap$"$Xe6ceptionXclasses+
5A:A; rXdemo :SP( R(U :* lclXe6ceptionXdemo+
https://gist.github.com/furlan/2580773/raw/80732b64ddff44d35d1fdcc3b2c33eaadfe22d06/ZABAP101_EXCEPTION_CLASSEShttps://gist.github.com/furlan/2580773#file-zabap101_exception_classeshttps://gist.github.com/furlan/2580773#file-zabap101_exception_classeshttps://github.com/https://gist.github.com/furlan/2580773/raw/80732b64ddff44d35d1fdcc3b2c33eaadfe22d06/ZABAP101_EXCEPTION_CLASSEShttps://gist.github.com/furlan/2580773#file-zabap101_exception_classeshttps://github.com/7/25/2019 ABAP Oberdan
104/145
.:AR:8*U8.()(C:?*1+
CR(A:( *BJ(C: rXdemo+
:RS +
rXdemo89dumpXFactorD- 0+
CA:CH c6XsDXerodi2ide+
WR?:(; ` z(6ecutou o CA:CH do programa principal+z+ (15:RS+
&, /aABAP101KEXCEPTIONKDUMPhosted with by&=+
[uando o programa tenta Faer uma di2iso por ero aseguinte tela , mostrada+ :oda a pil3a de e6ecu&o ,
eliminada e toda a memEria usada pelo programa , apagada+
https://gist.github.com/furlan/2291819/raw/07bd237a50a3c2adea81d13750e5b6a4ac371afc/ZABAP101_EXCEPTION_DUMPhttps://gist.github.com/furlan/2291819#file-zabap101_exception_dumphttps://gist.github.com/furlan/2291819#file-zabap101_exception_dumphttps://github.com/https://gist.github.com/furlan/2291819/raw/07bd237a50a3c2adea81d13750e5b6a4ac371afc/ZABAP101_EXCEPTION_DUMPhttps://gist.github.com/furlan/2291819#file-zabap101_exception_dumphttps://github.com/7/25/2019 ABAP Oberdan
105/145
as gra&as ao tratamento de e6ce&o por classes 2oc podedier para o sistema Mtente e6ecutar essa opera&o e se casoaconte&a di2iso por ero e6ecute issoO+
1esse primeiro programa onde o 5>P , e2itado o m,todo.?P)(XCA:CH- 0 , c3amado+ 1a implementa&o do m,todoele tenta -:RS0 e6ecutar uma di2iso por ero ue , tratada-CA:CH0 dentro do prEprio m,todo+
888888888888888888888888888888888888888888888888888888888888888888888
Report 'ABAP$"$X(^C(P:?*1XBA.?C
7/25/2019 ABAP Oberdan
106/145
888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888
R(P*R: abap$"$Xe6ceptionXbasic+
?1C)>5( abap$"$Xe6ceptionXclasses+
5A:A; rXdemo :SP( R(U :* lclXe6ceptionXdemo+
.:AR:8*U8.()(C:?*1+
CR(A:( *BJ(C: rXdemo+
:RS +
rXdemo89simpleXcatc3- 0+
CA:CH c6XsDXerodi2ide+
WR?:(; ` z(6ecutou o CA:CH do programa principal+z+
(15:RS+
&, /aABAP101KEXCEPTIONKBASIChosted with by&=+
Repare ue a a e6ce&o , tratada dentro do prEprio m,todoportanto a mensagem M(6ecutou o CA:CH do m,todo.?P)(XCA:CH+O , impressa no lugar do 5>P+ A sada do
https://gist.github.com/furlan/2291831/raw/51e0c4ae146b0231d4601a42945b7b33677608f7/ZABAP101_EXCEPTION_BASIChttps://gist.github.com/furlan/2291831#file-zabap101_exception_basichttps://github.com/https://gist.github.com/furlan/2291831/raw/51e0c4ae146b0231d4601a42945b7b33677608f7/ZABAP101_EXCEPTION_BASIChttps://gist.github.com/furlan/2291831#file-zabap101_exception_basichttps://github.com/7/25/2019 ABAP Oberdan
107/145
programa acima , mostrada abai6o;
Propaga&o de (6ce&o
Con3e&o muitas euipes onde esse conceito , muito bem
diFundido ou se4a uma pessoa decide no ser respons%2elpelo erro ue cometeu e decide passar o erro para outrapessoa corrigir+ Pois , no ABAP temos algo parecido+ Ve4aesse programa;
888888888888888888888888888888888888888888888888888888888888888888888
Report 'ABAP$"$X(^C(P:?*1XPR*P
888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888
R(P*R: 'ABAP$"$X(^C(P:?*1XPR*P+
?1C)>5( abap$"$Xe6ceptionXclasses+
5A:A; rXdemo :SP( R(U :* lclXe6ceptionXdemo+
.:AR:8*U8.()(C:?*1+
7/25/2019 ABAP Oberdan
108/145
CR(A:( *BJ(C: rXdemo+
:RS +
rXdemo89propagating- 0+
CA:CH c6XsDXerodi2ide+
WR?:(; ` z(6ecutou o CA:CH do programa principal+z+
(15:RS+
&, /aABAP101KEXCEPTIONKPROPhosted with by&=+
[uando o m,todo PR*PA=A:?1=- 0 , c3amado uma di2isopor ero , e6ecutada+ *bser2e ue esta di2iso no est%sendo tratada com o :RS8CA:CH e 2e4a a sada do programa;
* segredo est% na declara&o do m,todo; M(:H*5.propagating RA?.?1= c6XsDXerodi2ide+O (6iste uma instru&oRA?.?1= ue di e6atamente o ue algumas pessoas ue
con3e&o Faem Mol3a pode ser ue uma di2iso por eroaconte&a e se isso acontecer 2oc vuem est% c3amando om,todow de2er% tratar essa e6ce&oO+
.endo assim a e6ce&o precisou ser tratada na c3amada dom,todo e no mais dentro do m,todo+
[ual Forma usar a do primeiro programa ou essaf 5epende+
.e 2oc uer passar a responsabilidade do tratamento parauem c3ama o m,todo ento o segundo programa de2e ser
https://gist.github.com/furlan/2350991/raw/f4d8705488a39c09e463a94fc8180af82592611a/ZABAP101_EXCEPTION_PROPhttps://gist.github.com/furlan/2350991#file-zabap101_exception_prophttps://github.com/https://github.com/https://gist.github.com/furlan/2350991/raw/f4d8705488a39c09e463a94fc8180af82592611a/ZABAP101_EXCEPTION_PROPhttps://gist.github.com/furlan/2350991#file-zabap101_exception_prophttps://github.com/7/25/2019 ABAP Oberdan
109/145
usado+ as se o erro , algo interno do m,todo e precisa sertratado de maneira transparente do usu%rio ento 2ocde2er% tratar a e6ce&o dentro do prEprio m,todo assimcomo Fora Feito no primeiro programa+
* ue acontece se no tratarmos a e6ce&o na c3amada dom,todof (6perimente
C)(A1>P no , WH(1 *:H(R. do:ratamento de (6ce&P no , uma esp,cie de WH(1 *:H(R. do :RS8CA:CH+ Para ilustrar o uso do C)(A1>P 2e4a o programaabai6o;
888888888888888888888888888888888888888888888888888888888888888888888
Report 'ABAP$"$X( C(P:?*1XC)(A1
888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888
7/25/2019 ABAP Oberdan
110/145
R(P*R: 'ABAP$"$X(^C(P:?*1XC)(A1+
?1C)>5( abap$"$Xe6ceptionXclasses+
5A:A; rXdemo :SP( R(U :* lclXe6ceptionXdemo+
.:AR:8*U8.()(C:?*1+
CR(A:( *BJ(C: rXdemo+
:RS +
rXdemo89cleanupXli2e- 0+
CA:CH c6XsDXerodi2ide+ WR?:(; ` z(6ecutou o CA:CH do programa principal+z+
(15:RS+
&, /aABAP101KEXCEPTIONKCLEANhosted with by&=+