Buscar

Formação ABAP - o Futuro - Parte 1 de 13

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Pode ser difícil para um ovo se transformar em um pássaro: seria uma visão 
alegre mais difícil para ele aprender a voar enquanto permanece um ovo. 
Somos como ovos no momento. E você não pode continuar indefinidamente 
sendo apenas um ovo comum e decente. Devemos ser eclodidos ou ir mal. 
— C. S. Lewis 
 
 
 
 
Introdução 
 
Ovos são, sem dúvida, lugares adoráveis para estar dentro, cheios de comida e quentes 
da mamãe sentado em cima do ovo. No entanto, viver dentro de um ovo 
provavelmente não lhe dá uma ideia muito boa das mudanças que ocorrem no mundo 
exterior. No mundo da SAP, tal mudança pode ser horrivelmente assustadora: há um 
exército de programadores na SAP constantemente desgoring um fluxo de novas 
guloseimas. Desenvolvedores de todo o mundo provavelmente os amariam — mas 
muitas vezes 99% desses programadores permanecem escondidos dentro de seus 
ovos, alegremente ignorantes do novo baú de tesouros em seu porão do sistema SAP. 
Para evitar essa situação muito comum, o objetivo deste livro é iluminar tais 
melhorias. Como tal, é destinado a todo e qualquer desenvolvedor aquisitivo ABAP. 
Embora eu cubra novas tecnologias, também acoro alguns tópicos que podem não ser 
considerados "novos"; isso porque eu notei que muitas pessoas que desconhecem as 
melhorias entregues pela SAP que saíram há seis meses não têm conhecimento das 
melhorias que saíram há cinco anos. Vou dar um pouco de atenção a esses tópicos 
porque é muito possível que você esteja descobrindo-os pela primeira vez. 
A ideia deste livro vem de uma relutância observada em usar novas tecnologias e, ao 
mesmo tempo, uma compulsão de usar novas tecnologias. Uma das melhores postagens 
de blog de todos os tempos no site da SAP Community Network foi uma de Graham 
Robin, filho chamado "A Call to Arms for ABAP Developers". Neste post, Robinson 
fornece um exemplo (supostamente fictício) de um desenvolvedor da ABAP que se junta 
a uma empresa de consultoria no início da onda SAP no final dos anos noventa. Ele 
aprende tudo o que há para saber sobre o desenvolvimento da SAP como era naquele 
momento — tudo às custas do cliente — 
 
 
23 
Introduction 
 
 
e então, uma vez que o boom morre, consegue um emprego permanente em um dos 
antigos clientes. Por um tempo, tudo está bem, mas depois de 10 anos, o 
desenvolvedor percebe que não sabe nada sobre nenhuma das novas tecnologias 
que a SAP saiu, pois sempre foi possível passar usando as mesmas técnicas que 
funcionaram no ano 2000. 
Claro, se eu tivesse um dólar para cada vez que eu lesse as palavras "mudança de jogo" 
ou "ponto de inflexão " na imprensa de TI, então eu poderia usar essa pilha de dinheiro 
para construir uma rampa para a lua. Mas o que não pode ser negado é que nos últimos 
anos a SAP vem saindo com novas ideias radicais em um ritmo mais rápido e rápido. 
Grande parte dessa nova tecnologia não usa a linguagem ABAP ou o ambiente de 
desenvolvimento SE80, e o ritmo de mudança passou de se acostumar com uma nova 
versão de algo a cada cinco anos para se acostumar com uma nova versão de algo a 
cada 12 semanas. Qualquer uma dessas coisas isoladamente seria suficiente para 
assustar as pessoas que não estão acostumadas a mudar, e a combinação os faz se 
esconder debaixo do sofá e esperando que tudo isso vá embora. (Não vai.) Goste ou 
não, provavelmente é uma boa ideia, no mínimo, ter uma ideia aproximada do que 
todas essas coisas assustadoras — como o SAP HANA — são. A alternativa é cruzar 
os dedos e esperar muito que eles não te afetem por mais 10 anos. 
É claro que tentar acompanhar o fluxo ininterrupto de inovações que saem da SAP 
hoje em dia é como beber da mangueira de incêndio proverbial: Desde que a SAP 
adotou a metodologia ágil, o tempo entre os lançamentos de vários produtos diminuiu 
visivelmente, e a SAP é uma organização tão grande que os novos fea-tures vêm de 
todos os lados de uma vez. 
Ainda assim, se você tentar empurrar a mais recente e maior invenção SAP para seus 
colegas, você pode ouvir o seguinte: (a) você não deve usar isso apenas porque é novo; e 
(b) porque é novo, é arriscado, e provavelmente não vai funcionar de qualquer 
maneira. Como sempre, não há posição em preto e branco sobre isso. Muitos 
desenvolvedores gostam de usar coisas novas porque são novas, independentemente 
de ser apropriado. E algumas das coisas novas realmente são boas! 
Independentemente da tecnologia específica que está sendo discutida, você notará 
dois temas importantes que passam por este livro: programação orientada a objetos 
(OO) e programação anti-frágil. Para prepará-lo para isso, quero dizer algumas breves 
palavras sobre esses conceitos. 
 
 
 
 
24 
Introduction 
 
 
A SAP introduziu o ABAP Objects, a versão OO do ABAP, na versão 4.6, que saiu 
no ano 2000. Depois de 15 anos, você esperaria que a maioria, se não todos, 
programadores ABAP usassem esse estilo de programação. Pelo que vejo, nada 
poderia estar mais longe da verdade. Eu diria que mesmo agora a maioria dos novos 
códigos em sites cus-tomer (e um pouco justo da própria SAP) é escrito de forma 
processual. Alguns peo-ple ainda nem começaram a programação processual e 
escrevem tudo em um bloco enorme sem subrotinas. Houve enormes debates sobre 
a SAP Com-munity Network sobre se a programação de OO é melhor do que 
processual. Eu realmente acredito que é, mas independentemente do que eu penso, 
você vai descobrir que se você quiser tirar proveito de alguns dos últimos avanços da 
SAP que eu descrevo mais tarde neste livro, então você realmente não tem escolha. 
Se você é novo na OO, aqui vai uma dica: Os dois livros de destaque que li sobre a 
programação de OO que realmente me ajudaram no meu trabalho diário são Código 
Limpo e Head First Design Patterns (veja a caixa "Recom-mended Reading" no final 
deste introdução). Leia! 
O conceito de criar programas antifragile foi introduzido por Robert Martin (embora 
não nessas palavras exatas), que observou como o software de computador tende a 
apodrecer ao longo do tempo: As constantes mudanças que você tem que fazer 
tendem a adicionar cada vez mais lógica condicional e afins, inchando subrotinas e 
tornando o código cada vez mais complexo até que ninguém tenha ideia de como 
mantê-lo sem quebrar algo (ou seja, fica mais frágil com o passar do tempo ). Robert 
Martin quer que nós, pro-grammers, lutemos contra esse tipo de entropia aplicando 
a regra do escoteiro , que é "Sempre deixe o acampamento mais limpo do que você 
encontrou." A ideia é que, porque você tem que mudar o programa de qualquer 
maneira, fazer pequenas mudanças cada vez para a área que você está mudando para 
torná-lo mais claro (ou seja, renomear variáveis obscuras para você pode dizer o que 
eles fazem, dividir uma subrotina enorme em dois para que seja mais fácil de entender, 
e assim por diante). Com o tempo, sua base de código deve melhorar em vez de 
lentamente girar de aço para vidro. O que isso tem a ver com a lista de novos bens que 
vou discutir? Mais do que você pensa. A posição tradicional tem sido evitar novas 
ferramentas como a peste, porque elas são "arriscadas", ou seja, novas. Neste livro, 
em quase todos os capítulos você verá o argumento inverso aparecendo. Vou tentar 
mostrar como essas novas ferramentas podem ser usadas para tornar seus programas 
mais simples de ler ou mais robustos: em suma, mais resistentes à mudança. Por que 
é importante tentar proteger seus programas das mudanças que você tem que fazer? 
Talvez porque a taxa de mudança na TI já acelerou para uma velocidade de ruptura e 
só está chegando mais rápido. 
 
 
 
25 
Introduction 
 
 
 
 
 
 
Structure of the Book 
O livro é dividido em seções que espelham os grandes avanços que a SAP fez 
recentemente nas áreas de ferramentas de desenvolvimento,lógica de negócios, 
interfaces de usuário (UIs) e tecnologia de base de dados. Este livro não só explicará 
como usar esses novos technolo-gies — com um aplicativo de exemplo em execução 
para manter o foco concreto em vez de abstrato — mas também notará como essas 
tecnologias se encaixam com filosofias de programação de boas práticas. Além disso, 
quando apropriado, o livro destaca formas personalizadas de contornar problemas 
percebidos nessas novas ferramentas ou maneiras de melhorá-los. 
Este livro está organizado em quatro partes. Primeiro, você vai olhar para as 
ferramentas reais que você precisa ao escrever programas em primeiro lugar. Em 
seguida, as três últimas seções mir-ror as camadas de um aplicativo: a camada lógica 
de negócios, a camada de interface do usuário/apresentação e a camada de banco de 
dados. Cada parte e seus capítulos são descritos em mais detalhes em seguida. 
 
Part I: Programming Tools 
Chapter 1: ABAP in Eclipse 
O lugar óbvio para começar é o próprio ambiente de desenvolvimento, e nos últimos 
tempos a SAP tem pressionado seus clientes a começar a usar o Eclipse em oposição 
ao SE80. Você vai explorar por que isso é uma coisa boa e como esta ferramenta 
permite que você faça as mesmas coisas que você sempre fez, apenas mais rápido. 
Além disso, alguns dos novos assustadores 
 
 
26 
Eu acho que é bastante seguro dizer que nenhuma empresa no mundo depende apenas do seu 
sistema SAP para fazer negócios . Sempre haverá sistemas externos variados, alguns dos 
quais são interfaceados com o SAP ERP, outros não. A SAP em si tem uma grande variedade 
de produtos, desde a época logo após o ano 2000, quando apareceram os novos produtos de 
dimensão (como SAP CRM, SAP SCM, e assim por diante). 
 Onde eu trabalho, temos alguns produtos ERP não SAP em uso: SAP BW, SAP Business-
Objects BI, SAP PI e Ariba, para citar apenas alguns. Eu poderia facilmente falar sobre avanços 
nessas áreas também, mas eu vou me concentrar na parte no meio do diagrama de Venn: Este 
livro se concentrará nos recursos mais recentes relacionados à programação abap que você pode 
aproveitar se você tiver um sistema SAP ERP. Eu não vou falar sobre nada para o qual você 
precisa de um sistema licenciado separadamente fora do SAP ERP. 
 
What I Am Not Going to Talk About 
Structure of the Book 
 
 
tecnologias desenvolvidas pela SAP (por exemplo, SAPUI5 e SAP HANA) 
exigem o uso de ABAP no Eclipse. Há também ferramentas especializadas de 
integração no Eclipse para alguns tópicos abordados em outras seções do livro, 
como o Business Object Processing Framework (BOPF) e web Dynpro ABAP 
(WDA). Portanto, se você realmente quer estar na vanguarda, então você precisa 
se familiarizar com o Eclipse com pressa. 
Chapter 2: New Language Features in ABAP 7.4 
Peixe não é bom sem batatas fritas, e ABAP no Eclipse também não seria muito 
bom sem ABAP. A boa notícia, para o nervoso entre nós, é que apesar de todas 
as novas ferramentas horríveis que a SAP inventou, você ainda vai fazer a maior 
parte do seu pro-gramming em ABAP. A melhor notícia é que o SAP continua a 
melhorar a linguagem ABAP. O capítulo 2 cobre inovações recentes antes do 
lançamento do 7.4 que ainda não parecem ser amplamente utilizados, e depois 
passa para as mudanças radicais na versão 7.4 que praticamente permitirá que 
você escreva programas com metade das linhas de código que você precisava 
antes. 
Chapter 3: ABAP Unit and Test-Driven Development 
 A Unidade ABAP existe há algum tempo, mas não é amplamente utilizada. Eu 
sinto que isso é uma vergonha, e é por isso que este tópico está perto do início do 
livro. A ideia é que você escreva seus testes primeiro antes de codificar qualquer 
lógica de negócio real , e se seguido corretamente, então você pode fazer suas 
aplicações de ferro fundido em relação à sua capacidade de não dobrar sob o fluxo 
constante de mudanças necessárias. 
Isso se aplica a todos os outros tópicos deste livro: Tudo o que você cria precisa 
ser testado. (Você vai descobrir que algumas tecnologias mencionadas no livro, 
como BOPF e BRFplus, têm suas próprias ferramentas de teste anexadas 
também, mas isso é apenas cereja no bolo de teste da unidade. O ABAP no Eclipse 
também tem excelente suporte para a Unidade ABAP, tanto para ajudá-lo a criar 
os testes e executá-los.) 
Chapter 4: ABAP Test Cockpit 
Quando você segue o ciclo de vida recomendado de desenvolvimento de um aplicativo 
(que eu não inventei, a propósito!), primeiro você escreve os testes, depois escreve 
código de produção até que esses testes passem, e então, uma vez que tudo está 
funcionando, você refatora o código (ou seja, torná-lo melhor sem alterar a função). 
 
 
 
27 
Introduction 
 
 
A primeira parte do refatoração pode ser uma verificação de código estático. A SAP 
criou o Cockpit de Teste ABAP, que é, em alguns sentidos, uma extensão do 
Extended Pro-gram Check e do Code Inspector, com bits extras no topo. Ele também 
pode ajudá-lo a preparar seus programas para migração para um banco de dados SAP 
HANA. 
 
Chapter 5: Debugger Scripting 
Depois de lidar com verificações estáticas de código na hora do projeto, você passa a 
depurar o código no tempo de execução. O depurador em ABAP sempre foi uma de 
suas características mais fortes, e neste capítulo você vai olhar para um aprimoramento 
relativamente novo: a abil-ity para escrever programas dentro do depurador para 
automatizar tarefas comuns ou de trabalho-inten-sive . A depuração também está 
disponível na ABAP no Eclipse e pode de fato fazer uma coisa incrível que a depuração 
na GUI SAP não pode. Curioso? Leia o Capítulo 5! 
 
Chapter 6: The Enhancement Framework and New BAdIs 
Eu não poderia deixar a área de ferramentas de desenvolvimento sem dar uma olhada 
rápida na estrutura de melhoria. Isso geralmente é visto apenas como um meio de furar 
saídas de usuários em todo o lugar, mas também tem um papel a desempenhar em seus 
próprios desenvolvimentos personalizados. 
 
Part II: Business Logic Layer 
Chapter 7: Exception Classes and Design by Contract 
À medida que você começa a escrever sua lógica de negócios, você já tem um monte 
de testes de unidade e realizou verificações de código estático e código de execução 
depurado. No entanto, você sabe que situações inesperadas são obrigadas a ocorrer e 
tem que decidir como lidar com isso em suas aplicações. A maneira técnica de lidar 
com tais problemas é fazer uso das classes de exceção que a SAP introduziu para 
substituir o manuseio de erros tradicionais por meio de códigos de devolução. Também 
falarei sobre uma maneira filosófica de olhar para este problema: o projeto por padrão 
de contrato inventado por Bertrand Meyer. 
 
Chapter 8: Business Object Processing Framework (BOPF) 
Ao longo dos anos, a SAP criou muitas maneiras de modelar objetos do mundo real 
dentro do sistema ABAP. O mais recente é o Business Object Processing Framework 
 
 
 
28 
Structure of the Book 
 
 
(BOPF), que fornece uma transação de modelagem na qual há lugares para todas as 
tarefas comuns, como consultas, verificações de consistência e valores derivados. 
 
Chapter 9: BRFplus 
Devido ao fato de que o SAP ERP é um aplicativo focado em negócios, você 
provavelmente está acostumado a ler constantemente valores das tabelas de configuração 
e do IMG, juntamente com suas próprias tabelas Z. A BRFplus é um mecanismo de regras 
de decisão, que em nível técnico amplia consideravelmente a capacidade da IMG de 
armazenar as regras reais de negócios de forma facilmente visualizada. Em um nível 
filosófico, devolve a responsabilidade por essas regras desde a TI até as pessoas que 
realmente as criam. 
 
Part III: User Interface Layer 
Chapter 10: ALV SALV Reporting Framework 
Até que os aplicativos web sejam executados tãorápido quanto os desktop, ainda 
haverá um lugar para relatórios que são executados dentro da GUI SAP. Diante desse 
fato, foi criado o quadro de relatórios SALV para acelerar o desenvolvimento de tais 
relatórios. Neste capítulo, você verá como criar uma estrutura reutilizável para 
automatizar as tarefas mais monótonas que precisam ser executadas ao criar um 
relatório SALV e ver como contornar algumas de suas limitações percebidas. Você 
também vai dar uma olhada rápida em uma nova versão da classe SALV que a SAP 
inventou especificamente para situações em que há um banco de dados SAP HANA 
no backend, mas você ainda está executando um relatório no estilo SALV. 
 
Chapter 11: ABAP2XLSX 
Apesar de anos de tentativas de impedir que as pessoas usem o Microsoft Excel, um 
grande número de usuários de negócios passam grande parte do seu dia de trabalho 
brincando com spread-folhas. Neste capítulo, você vai olhar para o projeto de código 
aberto ABAP2XLSX e como você pode melhorar enormemente a integração entre 
SAP ERP e Excel, economizando assim uma enorme quantidade de tempo. 
 
Chapter 12: Web Dynpro ABAP and Floorplan Manager 
Web Dynpro ABAP já existe há algum tempo, mas quantas pessoas estão realmente 
usando? O Floorplan Manager (uma tecnologia Especializada Web Dynpro) é ainda 
mais novo e ainda está evoluindo rapidamente. Neste capítulo, você vai olhar para 
como 
 
 
29 
Introduction 
 
 
O Web Dynpro ABAP trabalha com o padrão de design MVC (Model-view-controller, 
controlador de visualização de modelos) e, em seguida, obter uma introdução ao 
Floorplan Manager. 
 
Chapter 13: SAPUI5 
SAPUI5 é a mais recente e bem sucedida tentativa de curar a má reputação da SAP 
no espaço de interface do usuário. Você vai ver como o SAPUI5 também usa o padrão 
MVC, aplicado muito mais do que é com o Web Dynpro ABAP, e como ele parece 
melhor e funciona mais rápido também. Você também verá como expor dados que 
vivem no SAP ERP através do uso de um serviço SAP Gateway e como criar um 
aplicativo SAPUI5 para consumir esses dados. 
 
Part IV: Database Layer 
Chapter 14: Shared Memory 
Para aqueles que ainda não conseguem trabalhar com um banco de dados SAP HANA, 
vale a pena dar uma olhada na estrutura de memória compartilhada para ver se ela 
pode ajudar a evitar um monte de acesso de banco de dados não necessário. 
 
Chapter 15: ABAP Programming for SAP HANA 
As pessoas têm muitas vezes medo do SAP HANA; é retratado como tão novo e 
revoluçionário que os programadores da ABAP se perguntam se isso vai colocá-los 
fora de um emprego. Neste sujeito-ter, eu vou definir a mente de todos em repouso 
e explicar o que código pushdown realmente é e como suas habilidades de 
programação vão ser tão relevantes como sempre neste admirável mundo novo. 
 
 
The Example Application 
Para manter meus pés (e os seus) no chão, vou basear a aplicação de exame-ple usada 
ao longo deste livro em uma aplicação real em que trabalhei, com o assunto real 
escondido, mudando todos os nomes de classe, método e atrito via encontrar e 
substituir para proteger os inocentes e evitar revelar segredos comerciais. 
Dado que não posso dizer no que estou trabalhando e que não vou usar a boa e velha 
prática SAP de usar o SFLIGHT, o exemplo deste livro é baseado em um projeto durante 
 
 
30 
 
The Example Application 
 
 
Barão Frankenstein para criar um monstro melhor. Seus monstros anteriores não 
funcionavam muito bem, então a SAP o convenceu a se inscrever para seu serviço de 
implantação rápida para fazer monstros baseados em nuvem, móveis e na memória. 
Um milhão de LEU (a moeda na Transilvânia) mais tarde, ele percebeu que a solução 
fora da caixa não lhe deu tudo o que ele queria, então ele contratou você para escrever 
um programa de fabricação de monstros no SAP ERP. Nesta aplicação, ele inser todas 
as bundas que ele quer de um monstro, e seu programa usa algoritmos tão 
complicados quanto o projeto do genoma humano para preparar a final dados, que 
então é interfaceado com sua máquina de fazer monstros através de serviços web 
durante uma tempestade. 
Durante os capítulos seguintes, você verá (com exemplos de código) que, felizmente 
para o barão, você pode aproveitar as variadas novas inovações recentemente 
entregues da SAP para ajudar em sua busca de criação de monstros. 
Agora, é hora de levantar a cortina... 
 
 
 
 
PART I 
Programming Tools 
€ A Call to Arms for ABAP Developers: http://scn.sap.com/community/career-center/ 
blog/2012/10/24/a-call-to-arms-for-abap-developers (Graham Robinson) 
€ Clean Code: A Handbook of Agile Software Craftsmanship (Martin, Prentice Hall, 2008) 
€ Head First Design Patterns (Freeman et al., O’Reilly, 2004) 
€ Antifragile Software: http://scn.sap.com/community/abap/blog/2013/12/01/antifrag- 
ile-software (Vikas Singh) 
Recommended Reading 
http://scn.sap.com/community/career-center/blog/2012/10/24/a-call-to-arms-for-abap-developers
http://scn.sap.com/community/career-center/blog/2012/10/24/a-call-to-arms-for-abap-developers
http://scn.sap.com/community/abap/blog/2013/12/01/antifragile-software
http://scn.sap.com/community/abap/blog/2013/12/01/antifragile-software
É melhor não olhar para o sol durante um eclipse. 
— Jeff Goldblum 
 
 
 
 
1 ABAP in Eclipse 
 
O principal ambiente de desenvolvimento da ABAP, o ABAP Workbench (Transação 
SE80), melhorou a cada nova versão e muitas vezes adicionou recursos encontrados em 
outro ambiente de desenvolvimento integrado popular: o Eclipse. Agora, a SAP mordeu 
10 a bala e adotou o eclipse em si para a programação da ABAP. Na verdade, você verá 
que muitos dos tópicos abordados neste livro — o Cockpit de Teste ABAP, o Business 
Object Processing Framework (BOPF), o Web Dynpro, o Floorplan Manager e o SAPUI5 
— são suportados por ferramentas específicas dentro da ABAP no Eclipse. Algumas das 
funcionalidades SAP mais avançadas — como a criação de objetos relacionados ao ABAP 
para uso no SAP HANA — só podem ser feitas usando ABAP no Eclipse. 
Eclipse é um ambiente de desenvolvimento de código aberto que começou a vida em 
sua forma atual por volta de 2001. Ele começoua balançar em cerca de 2004, e desde 
então uma nova versão foi lançada perto do final de junho de cada ano, cada uma com 
o nome de um planeta ou um satélite. 
Para simplificar demais, o Eclipse tem sido tradicionalmente uma forma de 
desenvolvimento muito usada para programadores Java. (Para verificar se isso era 
verdade, perguntei a um programador java no pub se ela usava eclipse; ela me disse que 
sim, ela fez, e era "tops" — de modo que resolve isso.) Na verdade, eclipse até menciona 
Java em sua tela de carregamento. (Também menciona a Oracle; você pode imaginar o 
que a SAP pensa sobre isso.) Claro, o Eclipse não se limita a Java, e você deve verificar 
a Wikipédia se você está interessado em uma lista completa de idiomas compatíveis. (Meu 
favorito pessoal é Groovy, principalmente porque deve ser maravilhoso ir a uma festa e 
— no caso improvável de qualquer- cuidado com o corpo — ser capaz de dizer que você 
é um programador Groovy.) 
Há uma enorme comunidade de apoio ao Eclipse, desde conferências até revistas 
online. Para entender o porquê, você precisa perceber que os programadores ABAP 
foram bastante mimados por ter o ambiente de desenvolvimento da Transação SE80 
inteiramente dentro do repositório ABAP. Em outras línguas, mesmo relativamente 
 
 
1 ABAP no Eclipse 
 
 
 pequenos programas podem gerar um grande número de arquivos, que são 
inicialmente desenvolvidos e armazenados em sua máquina local. Então você tem que 
implantá-los em algum lugar e ter certeza, para grandes projetos, que as diferentes 
versões do programa em diferentes máquinas de otorrinolaringes não substituem umas 
às outras. Isso tudo soa bastante doloroso, e ninguém gosta de ser sobrecarregadocom tarefas mundanas enquanto desenvolve programas. Lá, antes, você precisa de 
um ambiente de desenvolvimento muito bom para cuidar dessas tarefas para você; 
Eclipse é esse ambiente. 
Se você está prestando atenção, você pode notar que os recursos mais recentes na bancada 
de trabalho ABAP parecem suspeitamente com recursos que você encontra no Eclipse 
(por exemplo, conclusão automática de código ou palavras-chave de colorir de forma 
diferente das variáveis). Eventualmente, a SAP decidiu dar o salto; em julho de 2012, o 
SAP NetWeaver Develop-ment Tools for ABAP (ADT) foi lançado. Todo mundo chama 
de "ABAP no Eclipse", porque (a) é isso que é e (b) o nome oficial faz você soar como se 
tivesse engolido um dicionário quando você diz isso. (Você pode estar familiarizado com 
este phe-nomenon de outro produto SAP nomes.) 
Embora o Eclipse seja um passo na direção certa, a mudança nem sempre é fácil, e a 
SAP suspeitava com razão que os desenvolvedores tradicionais da ABAP ficariam 
horrorizados com a própria ideia de não executar tarefas de desenvolvimento na 
Transação SE80 ou suas transações de subconjunto, como SE24, SE37 ou SE38. Para 
tentar amortecer o golpe, a SAP deu um aviso prévio de que estava prestes a lançar o 
ABAP no Eclipse cerca de um ano antes do lançamento, e naturalmente o site da SAP 
Community Network (SCN) explodiu com comentários "Prefiro morrer do que usar 
isso" (um pequeno exagero, mas apenas leve). Esses comentários eram praticamente 
sempre de pessoas que nunca tinham ouvido falar do Eclipse antes, muito menos o 
usavam para desenvolver uma aplicação. Como resposta, tive que ir e colocar um 
gato entre os pombos publicando um post muito curto no blog chamado "SE24 is 
Garbage" em que exaltava as virtudes do Eclipse. (SE24) não é lixo; Eu estava 
apenas agitando as pessoas.) Uma torrente de abusos desceu sobre minha cabeça — 
mas agora é apenas dois anos depois, e a julgar pelos blogs na SCN, a maré começou 
a mudar à medida que mais e mais pessoas tentam ABAP no Eclipse e descobrem 
eles gostam (embora para ser justo, mesmo agora ainda há um monte de comentários 
negativos). 
O objetivo deste capítulo é mostrar-lhe as características do ABAP no Eclipse e deixá-lo 
decidir por si mesmo se isso pode acelerar o seu trabalho diário. Meu posi-tion é - 
naturalmente - que ele vai, então vamos ver se eu posso convencê-lo. A Seção 1.1 
explicará o processo de instalação do Eclipse em sua máquina local e analisará o básico 
de como usá-lo. Uma vez que você tenha isso para baixo, você está pronto para a 
Seção 1.2, que examinará algumas das coisas que você pode fazer ao desenvolver 
programas ABAP no Eclipse que você não pode fazer em tudo (ou não fazer muito 
facilmente) ao formar as tarefas equivalentes na Transação SE80 dentro do SAP GUI. 
A Seção 1.3 falará sobre como o ABAP no Eclipse lida com uma parte vital do 
desenvolvimento pró-cess: os testes e a solução de problemas de seus programas 
personalizados. Finalmente, Seção 1.4 explica como estender a funcionalidade do 
Eclipse usando plug-ins personalizados para adicionar funcionalidade extra, seja 
usando ferramentas de código aberto disponíveis livremente ou criando suas próprias 
ferramentas. 
 
 
1.1 Installation 
Existem três partes para configurar um ambiente de desenvolvimento eclipse para que 
você possa usá-lo para criar e alterar programas ABAP: 
1. Instale o próprio Eclipse no seu PC local. 
2. Adicione as ferramentas específicas do SAP . 
3. Conecte seu ambiente local eclipse a um sistema SAP backend. Esta 
seção irá guiá-lo através de cada uma dessas etapas. 
 
1.1.1 Installing Eclipse 
Você pode começar visitando https://www.eclipse.org, onde verá muitos links para 
notícias sobre a conferência anual do Eclipse, boletins informativos, grupos 
comunitários e assim por diante; mais importante, você verá um grande botão 
marcado - Download. 
A pegadinha é que esta página lhe dará a versão mais recente do Eclipse, e o SAP 
normalmente roda cerca de três meses atrás; assim, pode ser que se você fizer 
download da versão mais recente do Eclipse, ela será literalmente boa demais para 
ser usada. Então, antes de se empolgar e apertar o excitante botão DOWNLOAD, 
visite https://tools.hana.ondemand.com/#abap; lá você verá qual é a última versão 
suportada do Eclipse e o link que você deve seguir para fazer o download (Figura 
1.1). 
Ao seguir o link—para Eclipse Kepler no exemplo mostrado na Figura 1.1—você 
chegará a uma versão ligeiramente diferente da tela mencionada no início desta 
seção, mas o importante é que ele ainda tem um grande botão de download para 
você clicar. Abaixo do botão de download, você é apresentado a uma deslumbrante 
variedade de opções. A Figura 1.2 mostra apenas os dois primeiros, mas você pode 
continuar a paginar e as opções continuam aparecendo. 
Qualquer uma das opções mostradas na Figura 1.2 está correta para usar o ABAP 
no Eclipse, mas, na verdade, é melhor escolher a chamada IDE para JAVA EE 
DEVELOPERS. No Capítulo 13, você precisará dos recursos extras que esta 
Para instalar o Eclipse, seu sistema backend precisa ser pelo menos um sistema SAP NetWeaver 7.31 
SP 4. Se você é um dos clientes SAP ainda no 7.02 ou abaixo, eclipse não é para você! Há uma razão 
para este livro se chamar ABAP para o Futuro, afinal . 
 
Warning: Houston, We Have a Problem 
Warning: Houston, We Have a Problem 
opção oferece ao começar a trabalhar com SAPUI5. 
 
 
 
 
Figure 1.1 Installing Eclipse: Part 1 
 
 
Cada opção tem uma opção de 32 bits e uma de 64 bits. Certifique-se de escolher aquele que 
seja compatível com a versão do Java que está sendo executada em sua máquina; ou seja, uma 
versão de 32 bits do Java e uma versão de 64 bits do Eclipse não funcionam bem. juntas. 
 
Figure 1.2 Installing Eclipse: Part 2 
 
Baixar este programa para sua máquina local é tão simples que não há 
necessidade de entrar em mais detalhes, então vamos direto ao que acontece 
quando a instalação é concluída e você tem um lindo ícone em forma de planeta 
em sua área de trabalho. 
 
1.1.2 Installing the SAP-Specific Add-Ons 
Em qualquer tela do Eclipse, você pode escolher a opção de menu AJUDA • 
INSTALAR NOVO SOFTWARE, e uma caixa pop-up aparecerá, solicitando que 
você entre em um site. A URL tem o seguinte formato: 
https://tools.hana.ondemand.com/[nome da última versão suportada]. Para este 
exemplo, é https://tools.hana.ondemand.com/kepler. 
A Figura 1.3 mostra uma estrutura em árvore de todos os recursos possíveis que 
você pode instalar relacionados ao desenvolvimento SAP. Você poderia baixar 
tudo na árvore se quisesse (você certamente baixará as opções SAPUI5 mais tarde), 
mas por enquanto baixe tudo na seção Ferramentas de DESENVOLVIMENTO 
ABAP para SAP NETWEAVER. 
 
Figure 1.3 Installing SAP Add-Ons 
 
Se você tentar instalar os complementos do SAP para a versão Luna do Eclipse, 
poderá receber todos os tipos de mensagens de erro estranhas. Você pode corrigir 
o problema instalando primeiro o Eclipse Modeling Framework, que os 
complementos SAP parecem precisar; instale isso pelo mesmo caminho INSTALL 
NEW SOFTWARE, mas escolha o site de download principal do Eclipse nas 
opções suspensas. Procure uma opção com “EMF” e “SDK” no título e instale-a. 
Se você não receber uma mensagem de erro ao solicitar a instalação dos 
complementos SAP, a próxima coisa que você verá é uma lista de todas as opções 
escolhidas em um formato ligeiramente diferente (como parte de um prompt ARE 
YOU SURE). Em seguida vem o contrato de licença cada vez mais popular. Em 
seguida, você será perguntado se deseja reiniciar o Eclipse, o que você faz; caso 
contrário, as ferramentas SAP não estarão ativas. 
 
 
 
Agora, a página BEM-VINDO do Eclipse é aberta. Se você rolar para baixo, verá 
muitas opções específicas do SAP. Primeiro, existem vários específicosdo SAP 
HANA (é claro), e depois disso há a seção DESENVOLVIMENTO ABAP (Figura 
1.4). 
 
 
 
 
Figure 1.4 Eclipse Welcome Page with SAP-Specific Options 
 
Se você abrir uma dessas opções, por exemplo, QUICK LAUNCH, a ajuda on-
line será aberta e apresentará muitas informações. Uma parte considerável dos 
capítulos no lado esquerdo da tela endereça ABAP ou SAP HANA. 
 
1.1.3 Connecting Eclipse to a Backend SAP System 
Como mencionado anteriormente, você precisa de um sistema de back-end que seja pelo 
menos SAP NetWeaver 7.31 SP 4 para se conectar ao Eclipse. Para conectar esse backend ao 
Eclipse, siga o caminho de menu do Eclipse FILE • NEW • OTHER • ABAP • ABAP 
PROJECT. (Um “projeto” neste contexto é nada mais nada menos do que uma conexão com 
um sistema ABAP back-end.) 
 
 
 
Na Figura 1.5, você verá que o botão de opção SELECT CONNECTION from SAP LOGON 
está selecionado. Isso significa que quando você clica em BROWSE, aparece uma lista de 
sistemas SAP disponíveis em nosso painel de logon instalado localmente. Quando 
selecionamos um sistema, a metade inferior da caixa pop-up é preenchida com os detalhes do 
sistema. 
 
Figure 1.5 Connecting ABAP to Eclipse 
 
SELECT CONNECTION do SAP LOGON é a opção a ser tomada se os arquivos 
do seu SAP logon pad estiverem em sua máquina local e não em algum tipo de 
servidor central. Se o seu painel de logon tiver a lista de sistemas SAP armazenados 
centralmente em um servidor, você pode escolher a opção DEFINIR 
MANUALMENTE e preencher todas as caixas na caixa pop-up (servidor de 
aplicativos, etc.) com os valores necessários. 
Na próxima tela, digite o número do cliente e seu nome de usuário e senha. Clique 
em CONCLUIR. Na parte inferior da tela, você verá que o Eclipse está verificando 
se o sistema de destino é compatível ou não. Se for, aparece outra caixa pedindo 
pacotes favoritos e similares. Por enquanto, ignore essa caixa e clique em NEXT e 
depois em FINISH. Assim, você tem uma nova ferramenta para desenvolver seus 
vários objetos de repositório ABAP. 
 
 
 
 
 
1.2 Features 
Ao conectar seu sistema backend pela primeira vez ao Eclipse, você verá uma 
mensagem de boas-vindas no lado direito da tela (Figura 1.6). 
 
Figure 1.6 ABAP in Eclipse Feature Explorer 
Clicando CLIQUE AQUI PARA COMEÇAR! lança um tour do ABAP no Eclipse 
– um tour bastante abrangente, tão grande que você terá que dedicar algum tempo 
para trabalhar em tudo. Felizmente, você pode fazer isso no seu próprio ritmo, 
marcando cada área como “explorada” assim que tiver que lidar com ela para poder 
continuar em uma data posterior de onde parou. 
O tutorial cobre todo o tópico do ABAP no Eclipse com muito mais detalhes do 
que qualquer um poderia esperar cobrir em um capítulo de um livro, então o 
restante do capítulo não falará sobre como fazer no Eclipse as coisas que você já 
pode fazer. Faz; em vez disso, o foco principal será nas coisas que você pode fazer 
em ABAP no Eclipse que normalmente não pode fazer em um ambiente SE80. No 
entanto, antes de mergulhar nesses detalhes, você deve aprender como executar 
uma ação básica, mas muito importante, no Eclipse: chamar e modificar objetos de 
repositório. Com esses conceitos básicos, você estará melhor preparado para 
mergulhar nos recursos mais avançados que são o foco desta seção. 
Na Figura 1.7, você verá o lado esquerdo da primeira tela mostrada após conectar 
o Eclipse ao ABAP. Assim como no menu SAP, há uma árvore de FAVORITOS 
na parte superior para os pacotes Z em que você está trabalhando em um 
determinado momento e uma grande lista de cada pacote no sistema SAP na parte 
inferior. (Esta última peça não é muito útil, na verdade, porque a árvore é muito 
grande.) 
Assim como o menu de favoritos no sistema SAP normal, você pode clicar com o 
botão direito do mouse na estrela FAVORITE PACKAGES para adicionar um 
novo pacote de desenvolvimento. Uma entrada para objetos locais é adicionada 
automaticamente. 
Figure 1.7 Eclipse View of ABAP Packages 
 
Digamos que você queira alterar uma de suas classes Z e não consiga lembrar seu nome 
exato. Normalmente, você iria para o SE24, digitaria “ZCL_BC*” (como exemplo) e 
abriria o menu suspenso. (Se você for como eu, às vezes você não veria nenhum 
resultado. Então, de repente, você perceberia que estava no SE37 por engano.) A ação 
equivalente para procurar objetos personalizados no Eclipse é pressionar (CTRL) + 
(SHIFT ) + (A). Uma caixa de pesquisa é exibida. Você digita no início do seu objeto 
e, com cada letra que você adiciona, a lista de possíveis correspondências é reduzida 
(Figura 1.8). A velocidade com que o Eclipse pesquisa no repositório ABAP é muito 
mais rápida do que se poderia esperar, geralmente mais rápida do que a mesma pesquisa 
no sistema SAP real, o que parece magia negra. 
Selecione uma de suas classes Z, e a tela mostrada na Figura 1.9 aparecerá; espero que 
não pareça tão diferente do SE80 que você morra de choque cultural na hora. Você 
notará que existem várias janelas em uma visualização do Eclipse, e você pode fechá-
las ou redimensioná-las e até mesmo arrastá-las e soltá-las por toda a tela. O sistema 
lembrará o layout da janela se você sair do Eclipse e voltar mais tarde. 
 
 
Figure 1.8 Searching for an ABAP Repository Object 
 
Essa última parte é importante, porque geralmente você faz logoff do SAP no 
final do dia e, no dia seguinte, faz logon novamente e procura a linha do programa 
de onde parou ontem. No Eclipse, você começa de onde parou. 
 
Figure 1.9 Editing a Class in Eclipse 
 
 
 
 
 
 
Você notará que a classe é exibida no que seria a visualização do código-fonte 
dentro do SE24. O Eclipse sempre exibe objetos dessa maneira; não tem noção 
das telas formatadas como as do SE37 e SE24. Para o Eclipse, tudo é apenas um 
grande programa. Como exemplo, ao visualizar um módulo de função a 
assinatura aparece no início do código, conforme mostrado na Listagem 1.1. 
FUNCTION 
ZBC_GET_USERS_COUNTRY 
EXPORTING 
E_LAND LIKE TTZ5-LAND1. 
Listing 1.1 Signature at Start of Function Module Code 
 
Você altera a assinatura alterando o código-fonte exatamente como faria ao alterar a 
assinatura de uma rotina FORM no SE38 ou SE80, em vez de ter que pular entre 
diferentes guias no SE37. Outra coisa que levará algum tempo para se acostumar é 
que você está sempre no modo de mudança. Você também notará que seus 
comentários são verificados ortográficos. 
Neste ponto, chegou a hora de provar que isso é real e não algum tipo de sonho. 
Escolha uma de suas classes Z e adicione um comentário, como “Alterei este código 
no Eclipse”. Em seguida, clique no ícone ATIVAR na parte superior da tela. Um pop-
up com uma barra de progresso será exibido enquanto a alteração é propagada para 
o sistema SAP. Em seguida, entre nesse sistema SAP e use o SE24 para ver se a 
alteração realmente ocorreu. Você descobrirá que sim, e nesse ponto tudo se torna 
incrivelmente real. 
 
 
Neste ponto do capítulo, você aprendeu o básico absoluto: o que é o Eclipse, como 
instalá-lo e conectá-lo ao seu sistema de desenvolvimento ABAP e como chamar 
e alterar objetos de repositório ABAP via Eclipse. É bem provável que neste 
momento muitos desenvolvedores estejam pensando: “E daí? Isso se parece 
muito com o SE80. É muito esforço extra para fazer exatamente as mesmas 
mudanças que eu faria no SE80 nesta nova estrutura externa.” 
Se isso fosse verdade, você imaginaria que ninguém jamais desenvolveria 
programas usando ABAP no Eclipse duas vezes, muito menos continuamente. 
Portanto, agora é hora de examinar alguns dos recursos que facilitam a vida de 
um desenvolvedor ABAP de tal forma que o minuto extra gasto abrindo o Eclipse 
pela manhã enquanto você toma uma xícara de café é mais do que compensado 
por menos tempo de desenvolvimento gasto em tarefas comuns ao longo do dia. 
 
 
 
 
 
7.4 vs. 7.31 
 
 
1.2.1 Workingon Multiple Objects at the Same Time 
O número máximo de sessões que você pode abrir no SAP GUI é sete. (Os 
designers originais provavelmente pensaram que isso era mais do que suficiente. 
Afinal, os seres humanos podem fazer apenas uma coisa de cada vez, então você 
não poderia estar trabalhando em oito ou mais coisas diferentes 
simultaneamente). - os operadores muitas vezes querem poder ver muitas coisas 
diferentes ao mesmo tempo: talvez vários métodos que chamam uns aos outros 
em uma cadeia enquanto também têm objetos semelhantes abertos para verificar 
como eles (ou outra pessoa) realizaram o mesmo tipo de tarefa antes da. Então, é 
claro, alguém pode aparecer atrás de você para perguntar algo e, para resolver o 
problema, você precisa abrir um programa não relacionado e não deseja encerrar 
nada em que esteja trabalhando no momento. Antes que você perceba, você atinge 
o número máximo de sessões e precisa decidir o que deseja fechar. Este não é o 
fim do mundo, mas seria bom ter tantos objetos abertos quanto você quisesse 
apenas para economizar um pouco de tempo (porque, é claro, a sessão que você 
encerrou acaba sendo aquela que você de repente tem uma necessidade urgente 
de olhar novamente). Além disso, você provavelmente terá a necessidade de 
analisar duas ou mais sessões de uma só vez sem precisar alternar entre elas. Nos 
últimos anos, a resposta para isso foi ter dois monitores ou até três. Suponho que 
você poderia encher a parede com monitores, se quisesse. Tudo isso é 
maravilhoso, mas pode ser descrito como uma solução de hardware para um 
problema de software. 
Naturalmente, eu não teria trazido tudo isso à tona se o Eclipse não oferecesse 
uma solução para esse problema - o que, é claro, oferece. Como você não está no 
SAP GUI, você pode ter quantas janelas contendo objetos de programa quiser e 
pode arrastar e soltar e redimensionar as janelas para ver quantas você quiser a 
qualquer momento (Figura 1.10). 
 
 
A tela da Figura 1.10 parece muito cheia, mas ao programar você não está tão 
interessado em beleza, apenas em ver o máximo de informações que você precisa 
em um determinado ponto. Naturalmente, se você tiver dois (ou mais) monitores, 
também poderá enchê-los com caixas (como os programas policiais na TV em 
que enchem a parede com pistas do crime). 
Quando novos recursos do Eclipse são lançados em novas versões do SAP NetWeaver, eles 
são lançados primeiro na nova versão e, em seguida, são transferidos para versões 
anteriores posteriormente. Por exemplo, os recursos que foram adicionados no 7.4 SP 5 
foram posteriormente portados para o 7.31 no SP 
11. Assim, a maioria dos recursos discutidos nesta seção funcionará em 7.31 e 7.4. No 
entanto, se este não for o caso, será mencionado especificamente. 
Você pode notar que uma das caixas abertas na captura de tela da Figura 1.10 não 
era um programa ABAP, mas um programa JavaScript de um aplicativo SAPUI5 
que você desenvolverá posteriormente neste livro. O ponto a ser feito aqui é que, 
à medida que o SAP evolui, você se verá desenvolvendo partes do aplicativo em 
linguagens (gasp) diferentes do ABAP. Esse conceito pode enchê-lo de horror, 
mas com o passar do tempo é cada vez mais provável que você se encontre em 
tal situação e, se o fizer, provavelmente verá o benefício de poder trabalhar em 
todas as partes do programa. no mesmo ambiente de desenvolvimento, em vez de 
ter que ficar alternando entre os ambientes. 
 
Figure 1.10 Busy Eclipse Screen Full of Objects 
 
1.2.2 Bookmarking 
A qualquer momento, você realmente nunca está trabalhando em apenas uma 
coisa, mas em um número (espero) finito de construções ABAP (chamadas 
“artefatos” no Eclipse): programas, classes e módulos de função e similares. No 
entanto, o número pode ser bastante grande em um projeto de desenvolvimento 
complexo, e nós humanos temos uma tendência horrível de esquecer o nome 
exato de uma classe - mesmo que trabalhemos com ela vinte dias seguidos - e 
precisar procurá-la em SE24. 
 
No ABAP no Eclipse, você pode clicar com o botão direito do mouse no artefato 
que deseja marcar e, quando fizer isso, verá um enorme menu de contexto, com 
ADD BOOKMARK próximo à parte inferior (Figura 1.11). 
 
Figure 1.11 Bookmarking an ABAP Artifact 
 
Então, algumas horas ou dias depois, você pode clicar em uma pequena caixa à direita da tela 
que diz BookmARks quando você passa o cursor sobre ela; a caixa mostrada na Figura 1.12 
aparece. 
 
Figure 1.12 List of Bookmarks 
Clique duas vezes no que você deseja e - bingo - ele se abre e você pode começar 
a mudar as coisas para o conteúdo do seu coração. 
 
 
 
 
1.2.3 Creating a Method from the Calling Code 
O ABAP Objects foi introduzido com a versão 4.6C do SAP e, desde então, o 
SAP vem pressionando os desenvolvedores a usá-lo. Mesmo agora, há muita 
resistência. Se a SAP quer que os programadores mudem para a programação 
orientada a objetos (OO), então a programação OO tem que ser tão ou mais fácil 
do que a programação procedural a que os programadores estão acostumados. 
Infelizmente, mesmo depois de todos esses anos, em seu ambiente SE80 há uma 
coisa que você pode fazer com programação procedural que não pode fazer com 
programação OO usando métodos locais: rotinas FORM. Por exemplo, considere 
o código de procedimento de amostra na Listagem 1.2, que chama uma rotina 
FORM. 
PERFORM create_monster USING ld_number_of_heads 
CHANGING ld_monster_number. 
Listing 1.2 FORM Routine 
 
Se não houvesse tal rotina FORM, então quando você clicar duas vezes em 
CREATE_MONSTER o sistema perguntará se você deseja criar aquela rotina 
FORM ausente. Em seguida, ele o criaria para você, junto com a assinatura 
(embora você tivesse que codificar manualmente os TYPES dos parâmetros de 
assinatura). 
Agora, considere o código orientado a objetos chamando um método na Listagem 
1.3. 
 
ld_monster_number = lo_laboratory->create_monster( ld_number_of_heads). 
Listing 1.3 Method 
 
Você pode esperar que, se não houvesse tal método, exatamente a mesma coisa 
aconteceria, e uma implementação e definição de método esqueleto seriam 
criadas para você quando você clicasse duas vezes no método 
CREATE_MONSTER. Você estaria, infelizmente, errado. 
As pessoas reclamaram e reclamaram sobre isso na Internet por 14 anos sem 
sucesso. O que acontece quando você tenta a mesma coisa em ABAP no Eclipse? 
Em primeiro lugar, escreva um pequeno programa (Listagem 1.4). 
 
 
 
 
 
 
CLASS lcl_laboratory DEFINITION. PUBLIC 
SECTION. 
METHODS: main. 
ENDCLASS. "Laboratory Definition CLASS 
lcl_laboratory IMPLEMENTATION. 
METHOD main. 
* Local Variables 
DATA: ld_monster_number TYPE i, 
ld_number_of_heads TYPE i. 
 
create_monster( id_number_of_heads = ld_number_of_heads ). 
 
ENDMETHOD. 
 
ENDCLASS. "Laboratory Implementation 
Listing 1.4 Sample Program with Missing Method 
 
As you can see, the create_monster method does not exist. In the past, you couldn’t 
just double-click it; you had to create a definition, and then create an 
implementation, and then find your way back to the place you first started, mak- 
ing you think that maybe FORM routines weren’t so bad after all. 
In Eclipse, you put your cursor on the not-yet-extant CREATE_MONSTER and press 
(CTRL) + (1). A little box appears and asks you if you want to automatically create 
the missing method. I know I do; I have been waiting 14 years for this, so I say 
yes. 
In Figure 1.13, the definition of the IMPORTING parameter came from the variable 
definition you made in the code, which is one better than the FORM-based equiva- 
lent in which you have to manually add the variable type. 
Sadly, you may have to manually add the RETURNING parameter; in my version of 
ABAP in Eclipse, the autocreation did not work if I entered ld_monster_number = 
create_monster( ld_number_of_heads ). Nonetheless, that is probably just a bug which willbe fixed in time. In any event, the end result is as shown in Listing 1.5. 
 
 
 
 
 
 
CLASS lcl_laboratory DEFINITION. 
 
PUBLIC SECTION. 
METHODS: main. 
PRIVATE SECTION. 
METHODS create_monster 
 
IMPORTING 
id_number_of_heads TYPE i 
RETURNING 
value(rd_monster_number) TYPE i. 
ENDCLASS. "Laboratory Definition 
CLASS lcl_laboratory IMPLEMENTATION. 
METHOD main. 
* Local Variables 
DATA: ld_monster_number TYPE i, 
ld_number_of_heads TYPE i. 
 
ld_monster_number = create_monster( ld_number_of_heads ). 
 
ENDMETHOD. 
METHOD create_monster. 
ENDMETHOD. 
ENDCLASS. "Laboratory Implementation 
Listing 1.5 Automatically Created Method Implementation 
 
Figure 1.13 Autocreation of a Method 
A definição e a implementação foram criadas para você, o cursor pula para a 
implementação do método (que, claro, é onde você quer estar), e finalmente os 
métodos locais alcançaram as rotinas FORM e até avançaram devido à assinatura 
TYPE definições sendo extraídas das declarações de variáveis. Você também 
pode criar a implementação do método depois de ter criado a definição do método 
através do mesmo caminho de menu—(CTRL) + (1)—algo que estava faltando 
no ABAP Workbench padrão. 
 
 
1.2.4 Extracting a Method 
A programação é uma batalha contra o código que apodrece com o tempo, e parte 
do princípio antifrágil discutido na introdução do livro é que os programadores 
devem constantemente procurar maneiras de tornar seus programas resistentes ao 
mar cada vez maior de mudanças que esses programas devem sofrer. Uma das 
principais causas da fragilidade do programa é o código duplicado. É tão fácil 
recortar e colar um grande pedaço de código de um lugar para outro e apenas 
alterar as variáveis, deixando a lógica exatamente a mesma. Antes que você 
perceba, você tem o mesmo pedaço de código repetido em todo o programa ou, 
pior ainda, em muitos programas diferentes. 
Então vem a mudança: a lógica precisa ser ajustada. Agora você tem que fazer 
essa mudança em 54 lugares diferentes, e é claro que você vai esquecer de fazer 
a mudança em alguns deles. Isso pode levar a resultados imprevisíveis. O usuário 
experimentará um comportamento diferente ao fazer a mesma coisa em diferentes 
contextos; em outras palavras, a mudança quebrou o programa em dois, como um 
galho de vidro sendo saltado para cima e para baixo por um elefante durante um 
terremoto. 
 
 
Figure 1.14 Quick Assist View 
 
You won’t need to have such a screen area open once you’re used to all the things ABAP 
in Eclipse can do for you, but at the start this is very helpful to remind you that not 
everything has to be done manually any longer. 
The Eclipse term for (CTRL) + (1) is Quick Assist. You can open an area of the screen (view), 
leave it open in the bottom-left corner or wherever you want, and then you can see what 
proposals the system has for you in regard to creating missing things automat- ically or 
other types of refactoring (Figure 1.14). 
Quick Assist 
 
A solução óbvia é que quando você deseja copiar e colar um pedaço de código e 
fazer algumas pequenas alterações, você deve extrair a maior parte do código em 
seu próprio método, com parâmetros IMPORTING para as partes que variam. 
Isso soa bem e elegante em princípio, mas é um pouco trabalhoso, e é muito mais 
fácil destacar o código e fazer o truque (CTRL) + (C)/(CTRL) + (V), e as pessoas 
estão em pressa, então é isso que eles fazem, sem perceber que acabaram de fazer 
uma vara para suas próprias costas (e de seus colegas, presentes e futuras). 
Felizmente, o ABAP no Eclipse oferece uma ferramenta para extrair 
automaticamente pedaços de código em seus próprios métodos. A Listagem 1.6 
mostra um código de exemplo que você pode perceber de repente que precisa em 
muitos lugares diferentes, com as variáveis alteradas, mas a lógica a mesma. 
CLASS lcl_monster IMPLEMENTATION. 
 
METHOD main. 
* Local Variables 
DATA: ld_monster_madness1 TYPE i, 
ld_monster_madness2 TYPE i, 
ld_monster_madness3 TYPE i, 
ld_description1 TYPE string, 
ld_description2 TYPE string, 
ld_description3 TYPE string. 
 
ld_monster_madness1 = 25. 
ld_monster_madness2 = 50. 
ld_monster_madness3 = 100. 
 
* Derive Monster Sanity 
IF ld_monster_madness1 LT 30. ld_description1 
= 'FAIRLY SANE'. 
ELSEIF ld_monster_madness1 GT 90. 
 
 
 
 
 
ld_description1 = 'BONKERS'. 
ELSE. 
ld_description1 = 'AVERAGE SANITY'. 
ENDIF. 
 
IF ld_monster_madness2 LT 30. ld_description2 
= 'FAIRLY SANE'. 
ELSEIF ld_monster_madness2 GT 90. 
ld_description2 = 'BONKERS'. 
ELSE. 
ld_description2 = 'AVERAGE SANITY'. 
ENDIF. 
 
IF ld_monster_madness3 LT 30. ld_description3 
= 'FAIRLY SANE'. 
ELSEIF ld_monster_madness3 GT 90. 
ld_description3 = 'BONKERS'. 
ELSE. 
ld_description3 = 'AVERAGE SANITY'. 
ENDIF. 
ENDMETHOD. 
ENDCLASS. 
Listing 1.6 Sample Code with Changing Variables 
 
Quantas vezes você já viu código assim – a mesma construção repetidas vezes, 
apenas com as variáveis mudando? Isso é de fato um comportamento criminoso 
- e a vítima é o programador que escreveu o código - quando há tantas maneiras 
de facilitar sua vida (por exemplo, macros). 
Para corrigir este problema, destaque o primeiro bloco IF/THEN/ELSE—
certifique-se de começar com a linha de comentário—e pressione (ALT) + 
(SHIFT) + (M), ou escolha a opção de menu SOURCE • EXTRACT METHOD. 
Aparece a caixa mostrada na Figura 1.15. Você pode se perguntar de onde veio o 
nome proposto; é de fato a linha de comentário, por isso era importante incluir o 
comentário no bloco destacado. Você pode não ter nenhum comentário ou um 
comentário bizarro, então é claro que você pode alterar o nome proposto. 
Você notará que o Eclipse examinou as variáveis na seção destacada e as 
transformou em parâmetros. Às vezes fica confuso, mas geralmente o resultado é 
bastante bom. Você pode alterar o nome dos parâmetros propostos e a direção. 
Neste caso, você não quer mudar o nível de loucura do monstro, então transforme 
a proposta em um IMPORTING parameter. 
 
 
 
 
 
 
Figure 1.15 Extracting a Method 
 
Em seguida, você verá uma caixa solicitando uma solicitação de transporte (se 
este não for um objeto local) e se deseja ativar tudo após a conclusão da extração. 
A parte final — e talvez a melhor — é que, antes de fazer a alteração, você vê 
uma comparação entre antes e depois, mostrando como ficará seu código depois 
que a alteração proposta for feita (Figura 1.16). Se você não gostar da aparência 
do que o sistema está prestes a fazer, você pode cancelar. 
Após a extração, três alterações foram feitas. Primeiro, foi criada uma definição 
de um novo método privado (Listagem 1.7). 
PRIVATE SECTION. 
 
METHODS derive_monster_sanity 
IMPORTING 
id_monster_madness1 TYPE i. 
Listing 1.7 Definition of New Private Method 
 
Next, the block of code you highlighted has been replaced by a method call (List- 
ing 1.8). 
ld_monster_madness1 = 25. 
ld_monster_madness2 = 50. 
ld_monster_madness3 = 100. 
 
derive_monster_sanity( ld_monster_madness1 ). 
Listing 1.8 Method Call Replacement 
 
 
 
 
 
 
 
 
Figure 1.16 Extracting a Method: Before and After Comparison 
 
Por último, é claro, há uma nova implementação de método (Listing 1.9). 
 
METHOD derive_monster_sanity. 
DATA ld_description1 TYPE string. 
* Derive Monster Sanity 
IF id_monster_madness1 LT 30. ld_description1 
= 'FAIRLY SANE'. 
ELSEIF id_monster_madness1 GT 90. 
ld_description1 = 'BONKERS'. 
ELSE. 
ld_description1 = 'AVERAGE SANITY'. 
ENDIF. 
ENDMETHOD. 
Listing 1.9 New Method Implementation 
 
Observadores cuidadosos notarão que o Extraction Wizard não é tão inteligente 
assim, porque você realmente queria a descrição como um parâmetro 
EXPORTING e não precisa mais do seu comentário - mas isso é um pequeno 
detalhe. É bastante fácil alterar o método recém-criado e certamente esse processo 
envolve muito menos esforço do que criar manualmentea implementação e a 
definição. 
Além disso, é provável que em versões superiores você possa dizer ao Eclipse 
para procurar blocos idênticos e substituí-los todos por chamadas para seu novo 
método (ou seja, no exemplo anterior, todas as três construções IF/THEN/ELSE 
teriam sido substituídas com chamadas de método). 
 
1.2.5 Deleting Unused Variables 
Um mantra de programação comum é “Primeiro faça funcionar – depois faça 
bom”. Seguir esse princípio significa mexer até conseguir o que está funcionando 
e, em seguida, limpar a bagunça que você fez enquanto experimentava. 
Tradicionalmente, ao programar dentro do SAP GUI usando SE80 ou uma 
transação relacionada, a verificação de programa estendido padrão (SLIN) é boa 
para ajudar nisso; você recebe uma lista de variáveis que foram declaradas, mas 
nunca são usadas. Isso acontece porque você precisou das variáveis em algum 
momento enquanto o programa estava evoluindo, mas excluiu o código que as 
usava porque não precisava mais desse código. Variáveis não utilizadas são ruins, 
porque ocupam um pouco de memória em tempo de execução sem nenhum 
propósito e também porque sobrecarregam o código, dificultando a leitura, o que 
é um pecado capital. 
Digamos que, como parte de seu projeto monstruoso, você seja chamado a 
escrever um programa para realizar a operação matemática mais complicada do 
mundo. Leva meses de suor e lágrimas, mas no final você tem um programa que 
apresenta o resultado correto; parece com a Listagem 1.10. 
METHOD main. 
* Local Variables 
DATA: ld_use_this TYPE i, 
ld_also_this TYPE i, ld_result 
TYPE i, ld_not_used TYPE i, 
ld_not_used2 TYPE i, 
ld_not_used3 TYPE i. 
 
ld_use_this = 1. 
ld_also_this = 1. 
 
 
 
ld_result = ld_use_this + ld_also_this. 
 
ENDMETHOD. 
Listing 1.10 Most Complicated Mathematical Operation in the World 
 
O resultado agora está correto, mas ao longo das milhares de versões deste programa 
você criou algumas variáveis que não são usadas. Dentro do SAP, você normalmente 
executa a verificação de sintaxe estendida, que fornece uma lista dessas variáveis não 
utilizadas, e então você entra em cada uma, uma de cada vez, e as exclui. 
No Eclipse, você escolhe a opção de menu SOURCE • DELETE UNUSED VARIables (All), e 
em um milionésimo de segundo todos os seus amigos não utilizados desaparecem, 
chorando por todo o caminho que seu propósito na vida desapareceu. Você também 
tem a opção de excluir variáveis não utilizadas apenas na área que você destacou. 
 
 
1.2.6 Creating Instance Attributes and Method Parameters 
Outro recurso valioso do Eclipse é a capacidade de criar atributos de instância e 
parâmetros de método. Por exemplo, digamos que você escreveu o código dentro 
de um método sem declarar nenhum IMPORTING parameters para o método ou 
qualquer variável na definição de classe (Listing 1.11). 
METHOD howl_at_moon. 
 
DO md_howls TIMES. 
MESSAGE 'Oooooooooooo' TYPE 'I'. 
ENDDO. 
 
ENDMETHOD. "howl_at_moon 
Listing 1.11 Missing IMPORTING Parameters and Variables 
 
If Se você posicionar o cursor na variável MD_HOWLS e pressionar (CTRL) + 
(1), verá uma lista de opções. Você pode optar por tornar MD_HOWLS um 
atributo de classe, caso em que uma declaração DATA é criada na seção 
PRIVATE da definição de classe (como o TYPE é escolhido é magia negra), ou 
você pode dizer que a variável é um IMPORTING ou CHANGING ( ou qualquer 
outro) e, em seguida, a assinatura do método na definição da classe é alterada de 
acordo. 
 
Como teste, certifiquei-me de que, se adicionasse ##NEEDED no final de uma declaração 
de variável não utilizada, ela não seria removida, e de fato não é, o que é bom. Antes de 
usar esta opção, então, certifique-se de que todas as variáveis que são acessadas 
dinamicamente tenham tal pragma ao lado delas. 
Just How Clever is the Refactoring Tool in Eclipse? 
1.2.7 Creating Class Constructors 
Uma regra orientada a objetos comum é que você nunca deve criar objetos usando 
a instrução CREATE OBJECT; em vez disso, você deve ter um método de fábrica 
que forneça o objeto. A vantagem disso é que se sua variável de classe for 
referenciada a uma interface em vez de uma classe concreta, então o método de 
fábrica decidirá a subclasse exata para você, o que torna o programa mais 
resistente a mudanças. 
No ABAP no Eclipse, se você colocar o cursor no nome da classe e pressionar 
(CTRL) + (1), obterá várias opções, incluindo a criação do método fábrica, a 
criação de um construtor de classe ou a criação de um construtor de instância 
(Figure 1.17). 
 
Figure 1.17 Automatically Generating a Constructor 
 
Além disso, se você tiver declarado algumas variáveis na definição de classe antes 
de fazer isso, um assistente aparecerá e perguntará quais dessas variáveis você 
deseja ter como IMPORTING parameters no constructor. Portanto, se você tivesse 
variáveis de membro para uma classe de registro e o nome do inventor, por 
exemplo, que desejasse passar toda vez que uma nova instância fosse criada, você 
as escolheria na lista apresentada. O resultado gerado se pareceria com a Listagem 
1.12. 
CLASS zcl_monster DEFINITION. 
CONSTRUCTOR IMPORTING i_logger TYPE REF TO zcl_bc_logger 
i_inventor_name TYPE zde_inventor_name. 
 
CLASS zcl_monster IMPLEMENTATION. 
METHOD constructor. 
Super->constructor( ). me-
>logger = i_logger. 
me->inventor_name = i_inventor_name. 
ENDMETHOD. 
Listing 1.12 Automatically Generated Constructor 
 
 
 
 
Criar automaticamente um método de fábrica que retorna uma instância da classe 
também é um recurso muito útil. Todos os puristas dizem que você deve tentar 
colocar suas instruções CREATE OBJECT dentro de classes de fábrica para que você 
possa retornar uma subclasse sem perturbar o programa de chamada. Este é um dos 
recursos que está disponível apenas em alguns níveis superiores do ABAP 
Workbench padrão; você precisa de um sistema 7.4 (SP 5) até que esses recursos 
sejam retroportados para 7.31 (que está em 
7.31 SP 11). O ponto aqui é que os recursos estão disponíveis no Eclipse antes de 
chegarem ao ABAP Workbench “real”, geralmente com bastante antecedência. 
Convenientemente, este é um ponto que conduz muito bem à próxima seção. 
 
1.2.8 Getting New IDE Features 
Como acabamos de mencionar, em certos casos, qual funcionalidade você obtém - por 
exemplo, no Extraction Wizard - depende tanto do nível ABAP no Eclipse em que 
você está (você pode atualizar para a versão mais recente 10 segundos após o 
lançamento, pois vive no seu PC) e qual é a sua versão de back-end do SAP 
NetWeaver (você está um pouco mais preso aqui). 
Por exemplo, quando você chama o assistente para extrair um método, no canto 
inferior esquerdo há um ponto de interrogação, que abre a ajuda online. Aqui, você 
pode navegar por todas as coisas maravilhosas que pode fazer, com exemplos de 
código, mas também verá uma matriz listando o nível mínimo que seu sistema ABAP 
precisa estar para aproveitar cada recurso (Figura 1.18). 
Isso pode ser bastante frustrante, porque significa que qualquer versão do ABAP no 
Eclipse que você tenha tem a possibilidade de fazer muito mais do que seu sistema 
ABAP backend permite, e novas versões do ABAP no Eclipse são lançadas com 
bastante frequência. 
No entanto, há novos recursos adicionados ao ABAP no Eclipse que não estão 
vinculados ao nível de versão de back-end e, mais importante, o Eclipse como uma 
estrutura recebe uma nova versão principal a cada ano e, como todos os projetos de 
código aberto, recebe atualizações menores regularmente. Portanto, você pode 
aproveitar continuamente os novos recursos relacionados ao ambiente de 
desenvolvimento como um todo, em vez de ter que esperar de cinco a sete anos para 
que sua empresa faça uma atualização SAP que melhorará sua experiência com o 
SE80 -produto (por algum motivo, as empresas não realizam atualizações com base 
no que os desenvolvedores desejam). Como exemplode quão rápido o ABAP no 
Eclipse avança, quando comecei a escrever este capítulo eu queria ter certeza de que 
tinha a versão mais recente do ABAP no Eclipse, então baixei em uma terça-feira – e 
uma nova versão saiu naquela quinta. (Isso foi uma coincidência, mas as novas versões 
são lançadas com muito mais frequência do que uma vez por ano e, às vezes, com 
apenas dois meses de intervalo.) 
 
 
 
Figure 1.18 Feature Availability Matrix 
 
Para tornar a ideia de melhorias relacionadas ao ambiente de desenvolvimento 
um pouco mais real, é hora de um exemplo específico. Se você baixar a versão 
Luna do Eclipse, verá uma página de boas-vindas contendo uma seção 
WHAT’s NEW, que fornece uma lista das melhorias mais importantes entre 
esta nova versão do Eclipse e a última. Como seria de esperar, a maioria dos 
itens desta lista não tem nada a ver com SAP—mas quando se trata de melhorias 
em como você pode personalizar o layout da tela no Eclipse e novos recursos 
para o editor de código, essas são realmente melhorias que nós pode aproveitar. 
Um dos novos recursos adicionados ao Luna é a capacidade de mostrar (e 
editar) diferentes partes do mesmo programa de uma só vez (Figura 1.19). Se 
você pressionar (CTRL) + (SHIFT) + (-), o editor será dividido em dois 
verticalmente, e se você pressionar (CTRL) + (SHIFT) + (¡), ele será dividido 
em dois horizontalmente. No primeiro caso, você pode querer ter as declarações 
de variáveis no início de um método na caixa superior e o código que usa essas 
variáveis na segunda caixa. Isso ajuda a evitar paginar para cima e para baixo 
ou clicar duas vezes em uma variável para alcançar sua definição. 
 
 
 
 
 
 
Figure 1.19 Splitting the Source Code Editor 
 
Essas melhorias se aplicam a todas as linguagens de programação usadas pelo 
Eclipse. Como o ABAP agora é um membro dessa família feliz, você pode 
aproveitar essas melhorias no instante em que elas forem lançadas, sem esperar 
por uma atualização do seu sistema de back-end. 
 
 
1.3 Testing and Troubleshooting 
Ao longo deste livro, você verá um tema recorrente: novas ferramentas ABAP 
permitem que você teste melhor seus programas, depure-os e analise o que deu 
terrivelmente errado. Esta seção examina cada uma dessas três áreas e discute o 
que o ABAP no Eclipse traz para a mesa. 
 
1.3.1 Unit Testing Code Coverage 
No Capítulo 3, você aprenderá detalhadamente sobre testes unitários em ABAP e 
desenvolvimento orientado a testes como uma filosofia. Em vez de ficar à frente das coisas e 
discutir por que os testes de unidade são uma coisa boa (eles são; eles são a melhor coisa do 
mundo), esta seção falará sobre como o ABAP no Eclipse enfrenta dois dos principais 
problemas com a escrita de unidades testes. 
 
Problem 1: Creating Test Methods is Difficult 
Como você verá, no SE80 existe um assistente para criar métodos de teste a partir 
de seus métodos reais. No entanto, esse é o caminho errado - você deseja criar os 
métodos de teste primeiro. 
 
 
 
Para fazer isso no Eclipse, crie uma nova classe global. Na parte inferior há uma série de 
guias, uma das quais é TEST CLASS. Observe que você ainda não criou nada na classe 
real. Agora, vá para a aba TEST CLASS, digite a palavra “teste” e pressione (CTRL) 
+ (ESPAÇO). 
Você recebe uma pergunta sobre se deseja criar uma solicitação de transporte ou uma 
classe de teste. A classe de teste é a resposta correta e, se você escolher essa opção, verá 
o conteúdo da Listagem 1.13. 
*"* use this source file for your ABAP unit test classes 
CLASS ltcl_definition FINAL FOR TESTING 
DURATION SHORT 
RISK LEVEL HARMLESS. 
 
PRIVATE SECTION. 
METHODS: 
first_test FOR TESTING RAISING cx_static_check. 
ENDCLASS. 
 
 
CLASS ltcl_ IMPLEMENTATION. 
METHOD first_test. 
cl_abap_unit_assert=>fail( 'Implement your first test here' ). ENDMETHOD. 
ENDCLASS. 
Listing 1.13 Source File for ABAP Unit Test Class 
 
Criar um modelo de esqueleto para uma classe de teste não é o santo graal da criação 
de testes de unidade, mas segue o desenvolvimento orientado a testes muito melhor 
do que o processo padrão SE80. Naturalmente, você precisa alterar o código gerado 
para preencher o nome de sua classe de teste e método de teste e adicionar métodos 
de teste extras conforme necessário. O ponto é que você está criando os métodos de 
teste primeiro e depois copiando a definição para a classe real. 
Como você viu na Seção 1.2.3, uma vez que você tenha uma definição, você pode 
gerar o esqueleto da implementação apenas pressionando (CTRL) + (1). O que a 
geração automática deve fazer é adicionar uma definição, como DATA: mo_cut 
TYPE REF TO ycl_ monster_unit_tests. (Isso realmente não funcionou para mim, 
não importa o que eu tentei, então adicionei manualmente. A documentação indica 
que isso deve ser feito automaticamente, então provavelmente será corrigido em uma 
versão posterior. 
No primeiro teste de unidade de monstro renomeado, primeiro defina o resultado 
do teste e, em seguida, adicione a linha mo_cut->first_monster( )., )., que é um método 
na classe principal que ainda não existe. Se você pressionar (CTRL) + (1), será 
perguntado se deseja criar o método na classe real, o que você faz. Lembre-se, 
você criou o teste antes de criar o método real, que é o desenvolvimento orientado 
a testes. 
Em resumo, todo o processo de desenvolvimento orientado a testes é mais rápido 
e fácil (e do jeito certo) ao usar o ABAP no Eclipse do que ao usar o procedimento 
equivalente no ABAP Workbench tradicional. 
Problem 2: You Cannot Tell How Much of the Program Is Being Tested 
O objetivo do teste de unidade é ter a maior certeza humanamente possível de que, 
quando você altera uma parte do seu programa — seja uma correção de bugs ou 
adiciona funcionalidade extra — a mudança não quebra outras partes do programa. 
Na vida real, as pessoas tendem a achar que uma mudança em uma área sempre 
quebra algo em outra área, o que deve ser uma bandeira vermelha para indicar que 
talvez haja algo de errado em criar programas tão frágeis. 
Os testes unitários permitem que você realize testes automatizados de regressão para 
que, quando você alterar até mesmo uma linha de código, você possa ter certeza de 
que você não quebrou algo em outro lugar. Naturalmente, você só pode ser realmente 
seguro se você sabe que cada linha de código sin-gle em cada rotina e método em sua 
aplicação está sujeito a tal regressão teste. Criar tais testes em primeiro lugar não é 
a coisa mais fácil do mundo, e é por isso que tão poucas pessoas fazem isso — isso 
será discutido muito mais no Capítulo 3. No entanto, se você viu a luz e deseja criar 
tais testes, a próxima tarefa é ver quanto do seu código está realmente sendo testado. 
Se essa fig-ure for inferior a 100%, então veja o que pode ser feito sobre isso. 
 Há uma ferramenta disponível em Java chamada Clover, que mede a porcentagem de 
código coberta por testes unitários. Quando li sobre isso, achei que seria muito bom 
para a ABAP e que talvez eu devesse escrever algo nesse sentido. Acontece que eu 
não preciso, porque abap no Eclipse tem apenas uma ferramenta (e, para ser justo, o 
SE80 também nos últimos lançamentos do SAP NetWeaver). 
Na última seção, você criou um método de teste. Agora, você criará o método real, 
que será testado, e então criará outro método real, que não terá um teste de unidade 
correspondente — como se você estivesse sendo impertinente e tentando enganar a si 
mesmo a pensar que criar métodos sem testes economizará tempo. (Eles! Vontade! 
Não!) 
 
 
 
 
 
 
 
Dizem que pequenas coisas agradam às pequenas mentes, mas tenho grande 
prazer em poder escrever a definição do método para o método que não será 
testado, press-ing (CTRL) + (1) e ter a implementação criada para mim, e ter o 
cursor saltar para a implementação. Outro clichê diz que cada segundo conta, e 
se essas ferramentaseconomizam alguns segundos aqui e ali durante todo o seu 
dia de trabalho, então com o tempo tudo isso faz sentido. 
CLASS ycl_monster_unit_tests IMPLEMENTATION. 
 
METHOD first_monster. 
WRITE:/ 'I am the First Monster'. 
ENDMETHOD. 
 
METHOD second_monster. 
WRITE:/ 'I am the Second Monster'. 
ENDMETHOD. 
 
ENDCLASS. "Monster Unit Tests Implementation 
Listing 1.14 The Method that Will Not Be Tested 
 
 Se você estivesse em SE80, agora você f ollow th e menu path PROGRAM • TEST • 
UNIT TEST; o equivalente in ABAP in Eclipse é pressionar (CTRL) + (SHIFT) + (F10). 
Tha t's wonderful; você vai ee any errors that may have cropped up as a result de 
qualquer changes você might ter feito. No entanto, você quer levar thé para o 
próximo nível, então em vez de pressionar (CTRL) + (SHIFT) + (F11). (Eleven é 
obviously a better number than 10, in the same way that they s tarted c alling 
hotéis hotéis seis estrelas sercause cinco stars foram n't god o suficiente anmais.) 
Agora, você verá dois resultados (Figura 1,20). Primeiro, todo o código testado é 
destacado; mais importante, você verá uma exibição resumida, que indica qual 
porcentagem de cada método foi testada pelos testes automatizados da unidade. 
 
Figure 1.20 Unit Test Coverage 
 
Este é o tipo de informação que você quer enfiada em seu rosto como uma torta 
de creme, primeiro porque você quer ter certeza de que todas as partes vitais do 
seu programa estão cobertas por testes de regressão e segundo para se mover 
para garantir que cada linha de código obtenha cobertura de teste. 
 
 
 
 
1.3.2 Debugging 
Uma das melhores características da Bancada abap é o depurador, e o Capítulo 
5 dará uma rápida olhada nas últimas características que entraram no depurador 
recentemente que você pode desconhecer. No momento, porém, o foco está no 
ABAP no Eclipse, então você pode estar se perguntando que relevância a 
depuração tem em um ambiente de desenvolvimento puro. Isso volta aos testes 
da unidade novamente: se você tiver um erro, então você quer depurar o programa 
para ver o que está acontecendo de errado. 
 Há más notícias e boas (embora estranhas) notícias aqui. A má notícia é que, a 
partir do tempo de escrita, o depurador em ABAP no Eclipse não pode fazer tudo 
o que o depurador em um sistema SAP real pode fazer, embora, é claro, com o 
passar do tempo essas lacunas estão sendo plugadas. Agora, a boa notícia — 
embora quando eu lhe digo qual é a boa notícia que você pode pensar "Isso não 
pode ser verdade, ele deve estar drogado" - a boa notícia é que é possível mudar 
o código fonte enquanto ele está em processo de depuração. 
No próximo exemplo, você colocará um erro óbvio em seu código e, em seguida, 
depurar-lo para ver o que está errado. No Reino Unido, usamos a frase "quantos 
feijões fazem cinco", para a qual a resposta é, chocantemente, cinco. Em seu 
programa, você quer adicionar monstros até chegar a cinco, mas você perdeu um e 
por isso só acaba com quatro, o que é um erro claro (Listagem 1. 15). 
CLASS lcl_how_many_monsters DEFINITION. PUBLIC 
SECTION. 
METHODS how_many_make_five RETURNING VALUE(rd_how_many) TYPE i. 
ENDCLASS. "How Many Monsters Definition 
 
CLASS lcl_how_many_monsters IMPLEMENTATION. 
METHOD how_many_make_five. 
DO 100 TIMES. 
ADD 1 TO rd_how_many. IF 
rd_how_many = 4. 
RETURN. 
ENDIF. 
ENDDO. 
ENDMETHOD. 
ENDCLASS. "How Many Monsters implementation 
 
DATA: ld_how_many TYPE i, 
 
 
 
 
lo_counter TYPE REF TO lcl_how_many_monsters. 
 
START-OF-SELECTION. 
CREATE OBJECT lo_counter. 
ld_how_many = lo_counter->how_many_make_five( ). WRITE:/ ld_how_many. 
Listing 1.15 Only Four Monsters 
 
Isso faz com que o teste da unidade falhe, então você depura-o. Enquanto você 
está no depurador, torna-se óbvio o que está errado: você precisa adicionar outra 
linha de código. Neste ponto, normalmente você sairia do depurador, mudaria 
seu programa e, em seguida, testaria ou depuraria novamente após a correção. 
No ABAP no Eclipse, no entanto, é de fato possível alterar o código-fonte enquanto 
ele está sendo depurado; ou seja, você pode adicionar a linha que falta para adicionar 
o monstro final enquanto estiver no depurador e, em seguida, pisar na nova linha para 
ver se tudo funciona como esperado. Esta é uma mudança radical, e quando você vê 
isso pela primeira vez você se pergunta se alguém colocou um pouco de LSD em sua 
bebida. No entanto, isso se encaixa na categoria "estranho, mas verdadeiro" — e 
assim que a SAP trouxe o resto do depurador em ABAP no Eclipse até igual ao 
depurador padrão, esta instalação será um ponto claro no ABAP a favor do Eclipse . 
Assim como no editor abap normal, you pode control onde o programa vai mudar 
para depurargger mode when the pr ogram é run. Você pode adicionar pontos 
macios breakpoints se você assim desire, através do menu ou (CTRL) + (SHIFT) + (
); você também pode put em hard b reak-p oints, such como BREAK BLOGGSJ. 
Quando você run o programa (opção de menu EXECUTAR • EXECUTAR COMO ABAP 
APPLIcATION) ou executar the un tests, como assimon como a breakpoint é reached 
a box will appera and a sk se você want para look no program no modo depuração. 
Como stupid perguntas ir, thé leva o ca k e; obviously você faz, então você diz sim 
e marcar a caixa que faz o sistema lembrar thé wond erful de cision you made. 
A tela do depurador se abre; parece ligeiramente diferente do que você foi usado no 
passado (Figura 1.21). É possivelmente um pouco mais fácil alterar os valores das 
variáveis no tempo de execução (clique duas vezes na caixa em que o valor atual é 
exibido para alterar um valor). 
 
 
 
 
 
 
Se o sistema SAP backend não estiver em um nível alto o suficiente — ou seja, o kernel tem 
que ser pelo menos 721 — você receberá uma mensagem de erro dizendo algo como "ABAP em 
eclipse depuração não está disponível no sistema XYZ, por favor depurar dentro o SAP GUI." 
 
Warning: Houston, We Have a Problem 
 
Figure 1.21 Debugging in Eclipse 
 
Você pode ver o erro; o código sai com um valor de 4, não 5. Mude o estado para 
dizer SE RD_HOW_MANY = 5. Isso não tem efeito sobre a execução atual (que 
seria magia negra), mas quando você terminar e executar o programa novamente, 
tudo está ok; a correção fez efeito. 
Os resultados aparecem no que é chamado de "SAP GUI incorporado", que é uma 
tela SAP padrão que aparece em uma janela Eclipse (Figura 1.22). Você verá 
isso muitas vezes ao trabalhar com o Eclipse; sempre que o Eclipse não puder 
exibir algo (como os resultados de uma instrução WRITE) ele terceirizará a 
tarefa para o SAP GUI. 
 
Figure 1.22 Embedded SAP GUI 
 
 
 
 
 
 
 
 
1.3.3 Runtime Analysis 
De todas as grandes características discutidas até agora, o que realmente se 
destaca sobre o ABAP no Eclipse é a visão gráfica da análise de tempo de 
execução de um programa ABAP. O famoso ditado observa que "uma imagem 
vale mil palavras", mas tradicionalmente a SAP não é conhecida pela qualidade dos 
gráficos dentro da GUI SAP. Você provavelmente está acostumado com a análise de 
tempo de execução dentro da bancada de trabalho ABAP — Trans- ação SE30 ou 
mais recentemente SAT - que fornece informações detalhadas sobre como um 
determinado aplicativo gasta seu tempo de processamento. O problema é que há tanta 
informação que você tende a ficar atolado. Você verá um bom conjunto de três barras 
indicando se o maior tempo é gasto no banco de dados ou no servidor de aplicativos, 
e se acontece que o servidor é o problema, então você tem que tentar lidar com a 
árvore grande que indica quanto tempo é gasto em cada rotina. 
Isso não é o fim do mundo, mas leva algum tempo para se acostumar, e o equiv-alent 
em ABAP no Eclipse é muito mais amigável aos olhos. Para demonstrar isso, a seguir 
é um exemplo bobo no qual uma pequena fração do programa realiza

Outros materiais