Escolar Documentos
Profissional Documentos
Cultura Documentos
SUMÁRIO
1. INTRODUÇÃO AO ABAP __________________________________________________ 2
1.1 Tipos de Programas ________________________________________________________ 3
1.2 Módulos/Formas de Programas ABAP _________________________________________ 5
1. INTRODUÇÃO AO ABAP
2
linguagem utilizada no produto mais conhecido desta empresa, o SAP R/3, um software ERP.
O ABAP tem uma sintaxe semelhante ao COBOL.
O ABAP é uma linguagem de programação dentro da categoria das linguagens de
quarta geração desenvolvidas nos anos 80. Foi originalmente concebida como uma
linguagem para construção de relatórios para o SAP R/2 (o significado original de ABAP é
Allgemeiner Berichts Aufbereitungs Prozessor, que em alemão significa processador genérico
para preparação de relatórios). O objetivo original da linguagem era ser uma ferramenta de
programação suficientemente simples para ser usada pelos utilizadores finais. No entanto, o
ABAP é uma linguagem que necessita de conhecimentos avançados de programação e é
principalmente utilizada pelos programadores da SAP que desenvolvem o software e por
consultores que adaptam o software às necessidades dos clientes.
Cada programa ABAP possui um tipo de programa que deve ser determinada nos
atributos do programa no momento da criação, conforme figura abaixo:
Obs.: os tipos de programas são geralmente vistos em aplicação de notas que veremos
nos próximos passos.
• 1 - Programa Executável
Você cria programas executáveis diretamente usando a ferramenta chamada
ABAP Editor(SE38). Programas executáveis podem conter todos os blocos de
transformação apoiada em ABAP, com exceção de módulos de função, e como
muitas classes locais, conforme necessário. Programas executáveis são sempre
iniciados com a instrução SUBMIT.
• F - Grupo de Funções
Grupos de funções são introduzidos com a função de declaração de pool e são os
únicos programas que têm permissão para conter módulos funcionais (que são
3
procedimentos especiais que podem ser chamadas de dentro de todos os outros
programas ABAP). Eles podem ser executados usando códigos de transações,
mas normalmente são carregados pela sua função módulos a serem chamados.
Com exceção dos relatórios de blocos de eventos, grupos de funções podem
conter todos os blocos de transformação apoiada em ABAP e como muitas
classes locais, conforme necessário.
• I - Programa Include
Eles servem apenas como uma biblioteca para ABAP código-fonte. Eles são
utilizados exclusivamente para organizar textos programa em pequenas
unidades editável que pode ser inserido em qualquer lugar em outros programas
ABAP utilizando a instrução INCLUDE. Não há relação técnica entre include
programas e módulos de processamento. Includes são mais adequados para as
unidades de lógica de programação, como as declarações de dados, ou conjuntos
de blocos de processamento semelhante.
• J - Pool de interface
Não pode conter todas as telas de seus próprios ou blocos de processamento.
Elas são introduzidas com a interface declaração de pool e são utilizados
exclusivamente como um recipiente para uma interface global que possa ser
aplicado em qualquer classe global ou local. Eles são carregados por meio da
interface. Como associações de classe, você cria piscinas interface no construtor
de classe do Workbench ABAP.
• K - Pool de classes
Pool de classes não podem conter todas as telas de suas próprias quadras ou em
qualquer tratamento, exceto métodos. Elas são introduzidas com a classe
declaração de pool e são utilizados exclusivamente como um recipiente para
exatamente uma classe global e como muitas classes locais, conforme
necessário. Associações de classe são carregadas usando sua classe mundial. Na
versão 6.10, você também pode ligar os códigos de transação para os métodos
de classe mundial para que um objeto da classe é criado implicitamente quando
eles são usados.
• M - Pool de módulos
São diretamente criados utilizando o Editor ABAP e são apresentados com a
declaração PROGRAM. Com exceção dos blocos de informação de eventos e
módulos de função, pool de módulos pode conter todos os blocos de
4
transformação apoiada em ABAP e como muitas classes locais, conforme
necessário. Enquanto eles são executados, todos os eventos do ambiente de
execução ABAP podem ser desencadeados. O atributo mais importante técnica
de um pool de módulos é que ele só pode ser controlado através de uma lógica
de fluxo de tela. Você deve iniciá-los usando um código de transação, que está
ligado ao programa e uma de suas telas (tela inicial). Outra característica desses
programas é que você deve definir suas próprias telas no Screen Painter (embora
a tela inicial possa ser uma tela de seleção).
• S - Pool de rotinas
São criados utilizando o Editor ABAP e são apresentados com a declaração
PROGRAM. Eles podem não conter todas as telas de seus próprios, e com
exceção do LOAD-OF-PROGRAM programação do evento que eles só podem
utilizar sub-rotinas como blocos de processamento. Pools de rotinas são
carregados externamente chamando suas sub-rotinas dentro de outros
programas ABAP.
Obs.: os tipos de programas, são muito usados em aplicação de notas que muitas
vezes criam novos programas, tabelas, classe como um recente exemplo, são as notas
de SPEDs e NFE.
5
Se grandes quantidades de dados devem ser apresentadas de forma clara, eles
podem ser agrupados em listas, que são estruturas criadas como tabelas
composta de colunas e linhas. As listas são freqüentemente utilizadas para exibir
dados que é organizado em hierarquias. No sistema SAP, ALV List Viewer são
usados nas seguintes informações: Relatório de análises, Resultados, possíveis
valores de entrada (em alguns casos) e existem 3 formas de utilização dos ALV Lis
Viewer, são elas:
Exemplo 02
6
Alv Tree (layout e recursos avançado, exige maior conhecimento de
programação)
7
Para visualizarem outros exemplos de programas ALV List Viewer, acessar
transação SE38 e procurar por BCALV_* com abaixo:
Irão aparecer inúmeros exemplos, para ALV List, Grid e Tree Viewer:
8
Basta selecionar uma opção e executa-lo.
• Sapscript
SAPscript é a ferramenta do SAP para criação de relatórios mais elaborados,
chamados de formulários. A opção pela utilização da ferramenta geralmente se
dá pela necessidade de alguns recursos que não podem ser obtidos através de
código ABAP comum, como nos chamados “reports”, tais como inserção de
logotipos, fontes de tamanhos ou tipos diferentes, et... Muitas vezes, também,
dependendo da necessidade do relatório, pode compensar mais utilizar o
desenvolvimento de um relatório convencional sobre um formulário pré-
impresso, que já contenha o layout e logotipo desejados. Embora seja a
ferramenta de geração de formulários mais poderosa do SAP, o SAPscript ainda
apresenta uma série de limitações, principalmente no que diz respeito a
verificação de erros e análise de debug. Um comando escrito na grafia errada
dentro do formulário, jamais será detectado pelo mesmo. Somente a não
funciopnalidade esperada do comando poderá levar ao programador descobrir
se próprio erro. O modo debug no ambiente de SAPscript pode ser ativado na
transação SE71 (Ferramentas -> Processamento de Texto -> Layout Set), através
do menu Utilitátios -> Ativar Debug. O método correto consiste em se preencher
o nome do formulário e idioma nos campos da tela, antes de percorrer o
caminho do menu. Algumas vezes, no entanto, principalmente para um
processamento em background, o formulário não permite ser debugado, embora
percorrendo o caminho acima citado, nenhuma mensagem de impossibilidade
seja exibida. Simplesmente, nenhuma tentativa de debug funciona. Nesses casos,
o programador deve utilizar de artifícios como imprimir o conteúdo dos campos
9
a serem checados em pontos estratégicos do formulário, para observar seu
comportamento.
• Smart Forms
Usamos Smart Forms para criar formulários de impressão em massa. Smart
Forms é a evolução do Sapscript, porem de forma mais amigável e consumo de
horas em desenvolvimento menor pela facilidade nos recursos que são
totalmente gráficos não exigindo conhecimento de programação. Smart Forms
permite que você execute simples modificações na forma e na lógica de forma
simples, utilizando ferramentas gráficas; em 90% dos casos, isso não irá incluir
qualquer esforço de programação. Assim, um usuário que esteja familiarizado
com a ferramenta, mas tem apenas conhecimento de programação rudimentar
pode configurar formulários com dados de um sistema SAP para os processos de
negócio relevantes. O resultado do desenvolvimento de formulários é uma forma
inteligente. Depois que ele for ativado, o Formulário de Smart é semelhante a
um módulo de função que pode ser chamado no sistema SAP. Um exemplo
recentemente muito usado nos projetos é o documento DANFE.
10
• Module Pool / On-Line
São tipos de programas que, como o próprio nome indica, funcionam online, ou
seja, instantaneamente. Por isso, eles são dotados de uma maior capacidade de
customização das telas e maior flexibilidade para criarem uma interface mais
amigável com o usuário. Eles são especialmente úteis na criação de aplicações
que necessitem de subtelas ou quando é necessário fornecer informações aos
usuários de outra maneira que não um relatório. Na maioria dos casos, os
programas standard funcionam assim. Vejam a estrutura:
Screen
Desenho da Tela (Definição dos Campos)
Lista de campos para tratamento de erros
Definição dos módulos PBO e PAI relacionados com a tela
Evento PBO
11
Evento executado antes da exibição da tela para o usuário:
Definição do GUI Status e GUI Title para a tela correspondente
Seleção inicial de dados e atribuição de valores a serem exibidos na tela
Evento PAI
Evento executado após um comando do usuário (enter, click de um botão, etc...)
Verificação do código de comando executado (definido no GUI Status)
Código ABAP para execução da lógica do comando
• Carga/Migração de Dados
12
São as formas de inserir/migrar dados do/para o R/3 sem acessar base dados
direto, utilizando recursos de programação ABAP. Há outras formas de
carga/migração de dados que não há necessidade de programação ABAP, tais
como as ferramentas LSMW e CATT que não serão abordadas neste workshop.
13
CALL TRANSACTION
14
BATCH INPUT
BAPI
15
Business Application Programming Interface (BAPI) é uma interface definido com
precisão o acesso a processos e dados em sistemas de aplicativos de negócios do
R/3. BAPIs são definidos como métodos da API de tipos de objetos de negócios
SAP. Estes tipos de objetos de negócios e seus BAPIs são descritos e
armazenados na Business Object Repository (BOR). A BAPI é implementado
como um módulo de função, que é armazenado e descrito no Construtor de
Função. Para visualizar as BAPIS, basta acessar a transação BAPI como mostra
abaixo:
16
Company Code = 1000 e clique em executar
Veja o resultado
17
Veja, no código de exemplo abaixo:
18
Determine quais BAPIS deverão ser executadas e chamar sequência.
19
ESPECIFICAÇÃO FUNCIONAL
A Especificação Funcional apresenta a descrição do ponto de vista dos
clientes/usuário do sistema/programa a ser desenvolvido. Independente do
tamanho do seu cliente (não tamanho físico, mas sim corporativo) ele está
pagando por um desejo e você recebendo para realizá-lo. Se você não entende
perfeitamente este desejo, provavelmente não entregará a solução correta ou
pelo menos completa. E convenhamos, se isto acontecer você realmente está
encrencado, pois qualquer que seja sua solução para este problema, será um
prejuízo. Seja seu (mais provável), seja do cliente.
Alguns pontos que devem conter nas especificações
• Módulo
Ex.: MM, SD, FI, CO, PP, WM...
• Assunto
Ex.: Desenvolvimento Sapscript de Nota Fiscal, Melhoria EXIT no controle
de cópia(SD)
• Usuário Responsável
Ex.: Bruno Lima
• Funcional Responsável
Ex.: Bruno Cantão
• Data de Documento
Ex.: 07.09.2009
• Tipo de Programa
Ex.: Formulário Sapscript
• Resumo do Desenvolvimento
Ex.: Para o cliente ABC será necessário criar o Formulário Sapscript para
impressão de nota, transação J1B3N .
• Detalhamento do Desenvolvimento
Ex.: O layout de impressão deverá ser paisagem e controle de logotipo
deverá consistir conforme empresa(BUKRS) do programa de impressão.
Para os casos que o campo BUKRS da tabela J_1BNFDOC for igual a 0001
imprimir o logotipo SAP A.G(em anexo a especificação), para os demais
casos imprimir o logotipo LETNIS Consultoria (em anexo a especificação)
• Script de testes
Ex.: Criação de Notas de MM, SD e Writer, impressão das Notas simples
com apenas 1 item e com vários itens.
20
2. ENHACEMENTS TO THE SAP STANDARD
21
2.2 Screen Exit
As Screen Exits são usadas para inclusão de campos em tela, porem não são todas as
transações que disponibilizam uma screen exit. Para encontrar uma screen exit, basta
seguir os passos:
Transação.: CMOD
Menu Utilitários -> Ampliações SAP
22
Verifique o resultado e escolha a screen exit que se faz necessário e crie um projeto para
está ampliação(nome da screen exit):
23
Dentro de cada item terá a descrição da exit, como o que faz ou quem momento passa a
exit e também o nome do perform e do programa/exit, conforme imagem abaixo:
24
2.4 Customer Exit
As customer exits são chamadas dentro de programas através do comando call
customer-function, como no exemplo abaixo, uma chamada no programa da transação
QS33 de QM:
Uma característica das customer exits é que sempre possuem a seguinte nomeclatura
EXIT_<programa>_<numeroexit> e tambem todas com um INCLUDE Z para
customização, duplo clique sobre o ‘004’ deste exemplo, para facilitar a visualização:
25
2.5 Business Add-ins(BADI)
Business Add-Ins ou resumidamente BADI, é uma nova técnica de enhancement de
programas ABAP que surgiu junto com o ABAP Objects. Ao contrário das customer-exits,
onde somente a SAP podia criar os pontos de modificação, BADIs podem ser criadas por
outras empresas de desenvolvimento ABAP para serem utilizadas nos programas
desenvolvidos por elas. As BADIs podem ser definidas como dependentes de filtros. Isso
permite, por exemplo, a criação de uma implementação diferente para cada país. A SAP
garante a compatibilidade de todas as interfaces BADIs em futuros releases. Upgrades
não irão afetar as implementações atuais.
Para encontrar uma badi entre na transação SE24 na classe CL_EXITHANDLER
26
Em uma nova janela abre transação desejada que irá parar nos pontos de BADI.
Ex.: Transação MM02
27
Acesse a transação SE18 e veja a definição da BADI
Métodos da BADI
28
2.6 Enhancement Point (Pontos Implicitos)
Os pontos de melhoria implícitas são basicamente de pontos dentro código ABAP onde
realce ponto está implícito, e nesse caso, pode ser criado. Exemplos de pontos de
melhoria são implícitos no início e no final da forma de, no final de um programa, ou
módulos de função incluem etc. Abaixo está um passo a passo de demonstração de como
criar e ponto de realce implícito.
29
2.7 Regras de Substituição (Substitution Maintenance)
SPRO -> Contabilidade financeira -> Ledgers especiais -> Ferramentas -> Atualizar
validação/substituição/regras
30
3. SAP NOTES
As notas SAP são instruções sobre como remover erros conhecidos no SAP, elas incluem
descrição e causa dos erros e o nivel de suporte package requerido. Dependendo do tipo de
erro, uma nota SAP pode conter Soluções – descrições de como corrigir os objetos do
repositório Abap, conhecido como instruções de correções. A SAP disponibiliza a transação
SNOTE para assistência em aplicação de notas, porem é altamente recomendável que leia
toda a nota antes de aplicá-la, pois existem os procedimentos manuais como criação de
campos em tabelas, portanto fiquem atentos!
Como encontrar, consultar notas SAP:
clique no botão Launch the SAP Note and KBA Search, faça autenticação com seu usuário do
Market Place ou usuário do
31
Aparecerá os critérios de busca e pesquisa de notas, por número de nota, por termos, etc,
como mostra a imagem abaixo:
Uma característica que é praticamente vista em todas as notas são as versões exigidas de
support package ou componente instalado para aplicação ou não das notas, para isso iremos
aprender como checar isso para minimizar o tempo de aplicação.
No ambiente SAP de aplicação da Nota ir ao menu Sistema -> Status
32
Abaixo a lista das versões dos componentes instalados no Ambiente SAP
Com as informações do Ambiente, basta comparar com a nota a ser aplicada e verificar se
necessário ou não aplicação da mesma e suas precedentes.
33
4. DICIONÁRIO DE DADOS (ABAP DICTIONARY)
Para fixação das informações sobre Abap Dictionary iremos criar uma tabela, elemento de
dados, domínio e visão de atualização nos exercícios no item 5.4
34
5. PRATICANDO ABAP
35
REFRESH Limpa todo conteúdo de uma tabela interna
36
Existem três maneiras de ativarmos o debug:
• Comando “/h” na caixa de transações
• Botão “STOP” na barra de ferramentas, o ponto de parada será atribuído na linha
atual do cursor;
• Menu: Sistema > Utilitários > Depuração, similar a primeira opção
37
Ativado o Debug, apenas continuar a funcionalidade que entrará na tela abaixo:
No item 5.4 iremos ver com maiores detalhes e praticando a ferramenta Debug.
38
5.4 Exercícios
Exercício 01
Iremos criar um programa em que trabalharemos formas simples de trabalho com
estruturas condicionais, de repetição, impressão em tela, variáveis, sub-rotinas e
depuração. Abaixo faça suas anotações:
39
Exercício 02
Iremos criar um programa com consultas em nas tabelas criadas no item 4. Dicionário de
Dados + utilização de sub-rotinas, alguns comandos e depuração usados no Exercício 01,
estrutura de repetição para impressão de tabelas internas, leitura, ordenação de tabelas
internas e utilização de função. Abaixo faça suas anotações:
40
6. Referencias bibliográficas
• Sapscript
http://help.sap.com/saphelp_nw70/helpdata/en/d6/0db74a494511d182b70000e829fbfe/frameset.htm
• Smartforms
http://help.sap.com/saphelp_nw70/helpdata/en/a9/de6838abce021ae10000009b38f842/frameset.htm
• Abap Dictionary
http://help.sap.com/saphelp_webas620/helpdata/en/cf/21ea31446011d189700000e8322d00/content.htm
41