Você está na página 1de 85

Treinamento Básico de

ABAP para Funcionais

Instrutor: Felipe Fernandes Pacheco Jr.


felipe.junior@resource.com.br
Consultor MM
Abril/2013
OBJETIVO

Capacitar os consultores funcionais nas principais características dos


elementos que compõe a linguagem de programação ABAP: as transações que
geralmente são executadas para facilitar o trabalho de pesquisa de estruturas,
as ampliações (exits, enhancements, melhorias)- disponíveis no ambiente ERP
SAP e ainda a utilização de Debug para depuração de programas.
Será apresentado um (overview-Resumo) de tabelas, campos, domínios,
elemento de dados e suas importâncias dentro da hierarquia ABAP.
OBJETIVO
Formas de alterar o comportamento Standard – Fluxo da Decisão.
Conteúdo
» Objetivo
» Linguagem ABAP
» Dicionário de Dados
» Tracing
» Programas
» Comandos ABAP
» Transportes
» Funções
» Ampliações
» Carga de Dados
» Dicas Especificações Funcionais
» Debug
Linguagem ABAP
Advanced Business Application Programming(ABAP) é uma linguagem de
programação alto nível desenvolvida pela empresa SAP. É a linguagem
utilizada no ERP SAP, onde todo desenvolvimento é armazenado na base de
dados.

COBOL
Dicionário de Dados SE11
É onde definimos tabelas, domínios, elementos de dados, índices, etc.

Tabelas Transparentes Tabelas para armazenamento de dados


Tabelas de Customizing transacionais e de configuração

Views São visualizações totais ou parciais de uma ou


uma junção de tabelas

Domínio Define propriedades técnicas de campos, como


tipo de dado, tamanho, etc.

Elemento de Dados Armazena as propriedades semânticas dos


campos, por exemplo, rótulos de campos(field
labels)

Tabela de Verificação Relacionamento(Foreign Key) entre as tabelas

Estruturas São registros(linhas de tabelas, barras de


campos), utilizados para definição de variáveis
em programas
Dicionário de Dados SE11

Tabelas estão divididas em:


Tabelas Transparentes
Tabelas de Customizing

Oracle

DB2

SQL Server

* Chave Primária, Chave Estrangeira ou


Secundária e Índice.
Dicionário de Dados SE11
Domínios
Elemento de dados

Principais tipos de dados:


CHAR – Cadeia de Caracteres
CURR – Moeda
DATS – Data
DEC – Decimal (+/-)
INT – Inteiro
NUMC – Numérico(Algarismos)
QUAN – Quantidade formato UNIT
STRING - Strings
Dicionário de Dados
Estruturas

Exemplo: Estruturas de Tela, MEPO1211 é uma estrutura utilizada na ME2*N.

SE11
Dicionário de Dados
Views

EX: MDRV
SE11
Tracing ST05

Em algumas situações não conseguimos encontrar qual a tabela é utilizada para exibir
informações na tela de uma transação, por tratar-se de uma estrutura, ou então
precisamos saber como uma determinada transação compôs o valor que esta sendo
apresentado, ou até mesmo a performance de leitura de uma tabela, para isso podemos
fazer um tracing do banco de dados e mapear quais os acessos da transação ao banco
de dados durante uma determinada operação.
Tracing
Para executar uma Trace, primeiramente, deve-se clicar no botão “Activate
Trace”, e então, executar a transação ou trecho no qual deseja buscar a
informação de tabela ou dados.

A Trace estará ativada, então qualquer ação realizada no SAP, seja execução
de transações ou em transações, estará gravando quais SQL são lidas.
Tracing
Execute a transação ou processo do qual deseja encontrar a tabela, neste
exemplo usaremos as XD03.
Tracing
Logo após executar o trecho desejado, clique em “Desactivate” para parar o
registro e em “Display Trace”. Surgirá uma janela com as restrições de período
e tabelas, então em Ok.
Tracing
Uma lista com todas tabelas executadas na Trace serão listadas, selecionando
uma linha e indo em GoTo->Display ABAP Source é possível ir para o código
onde trecho é utilizado.
Programas
Um programa ABAP por ser criado, editado ou exibido através das transações
SE38 ou SE80.

Quase todos os componentes SAP podem ser customizados, isto é,


desenvolvidos para adequarem-se aos processos de determinada empresa.

O nome de todos os objetos desenvolvidos são iniciados com as letras Z ou Y,


e os objetos standard, normalmente, com os demais caracteres
Programas
Estão dentre o principais tipos de programa ABAP:
Programa Executável - Report
Programa Include – Include
Grupo de Funções – Conjunto de funções
Módulo Pool – Programa Pool

SE38
Programas
Um programa ABAP por estar atribuído a uma transação para execução pelo
usuário e pode ser visualizada pela SE93 ou acessado através da própria
transação no Menu Sistema->Status. Neste também pode ser visualizada a
Tela inicialização atribuída.
SE93
Programas
Através da SE38 e em exibir lista de objetos é possível visualizar toda a
composição de um programa ABAP.

SE38 /
SE80
Programas SE38

Sub-rotinas - São módulos dentro de um programa usados para estruturar e


organizar o código, e portanto, facilitar a interpretação. A chamada é realizada
através do comando PERFORM, este comando permite a passagem de
parâmetros, isto é, valores externos que serão utilizados internamente quando
esta é chamada.
Os tipos de passagens de parâmetro são USING(normalmente utilizada para
variáveis), TABLES(utilizada para tabelas internas) e
CHANGING(normalmente variável que será alterada).
Um Perform pode ser chamada de outro programa usando a chamada IN
PROGRAM mais o nome do programa.
Programas SE38

Eventos - Programa de diálogo


Programas SE38
Eventos - Report
Programas SE38

Report - Geralmente a Saída do relatório acontece por meio de comandos


ABAP como “Write”, usualmente o Report possui o layout abaixo.
Programas SE38

ALV
Existem várias maneiras de um ALV ser gerado, o mais comum é através do
comando: CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’ ou através de
Programas Orientados a Objetos.
Mensagens
Mensagens - Na Classe de mensagem ZSD numero 000 temos a seguinte
mensagem: Apontamento de produção na ordem & maior ou igual a
quantidade.
No programa vemos uma sintaxe semelhante à abaixo:
MESSAGE E000 with ‘10’.
Onde o “E” significa: E = Erro
000 = número da mensagem
‘10’ = esse valor é substitui o “&” da mensagem contida na classe.

SE91
Comandos ABAP
Toda ação que será executada por programa são realizados através de
comandos. No entanto, há a necessidade de declarações de valores em
objetos para manipulação da informação, isto é, variáveis, tabelas, internas,...

• Principais Comandos:
Data Submit:
Tables Perform
Constant Call Screen
Range Call Function
Select Call Transaction
Read Table Commit and Wait
Loop
Insert/Modify
Delete
Append
Write
Comandos ABAP
• Valor de Retorno:
SYST – SY: Estrutura com valores de retorno do Sistema. Os comandos SY mais usuais
são:
SY-SUBRC: Retorna o valor execução de comandos ABAP. Sendo 0 quando o retorno é
verdadeiro, isto é, correto. Diferente de 0 valor falso, isto é, incorreto
SY-UCOMM: Retorna o comando de interação do usuário.
Transportes
Repositório de Objetos
Transportes
Ambientes
Transportes
SE09
Change Request
Transportes
SE09
Log de Transporte
Transportes
SE80
Versões de um objeto ABAP
Transportes
SE80
Versões de um objeto ABAP
Transportes
SE80
Comparando versões entre ambientes – DEV X QAS
Transportes
SE80
Comparando versões entre ambientes – DEV X PRD
Funções SE37

Funções são pequenos programas utilizados por vários programas para executar
determinadas tarefas, tais como, validar uma informação, executar determinado calculo e
retornar o valor, ect.

Tipos de Funções:
Módulo de Função Normal
Módulo de Acesso Remoto (RFC).
BAPI
Funções SE37

Quando chamamos um modulo de função temos os parâmetros de importação(onde


preenchemos a entrada da função) os parâmetros de exportação( informação que
recebemos da função) e tabelas(hora recebemos e hora inserimos informação
dependendo da função)
Funções SE37

BAPI (Business Aplication Programing Interface)


As BAPIs são funções mantidas pela SAP, que contemplam todas as regras de negócio
do processo em questão. Estas funções também pode ser visualizadas na transação
BAPI.
Funções SE37

RFC (Remote Function Call)

SAP ECC RFC Sistema de 3ºs


Funções SE37

RFCs x Web Services

SAP ECC RFC SAP PI HTTP / XML Sistema de 3ºs


Ampliações

O Sistema SAP permite fazer a inserção códigos do cliente em alguns trechos de códigos
standard, são as chamadas Exits ou ampliações. Estas podem ser utilizadas para
modificação de dados, inserção de novos dados, inclusão de novas telas com chamadas
em transações standard, validar informações e outras funcionalidades atendem as
necessidade do cliente.
Principais tipos de Ampliações:
• User-Exits CMOD, SMOD,
• Field-Exits SE18, SE19 e
• Badis SE20.
Ampliações SE24

Business Add-Ins(BADI)

CL_EXITHANDLER=>GET_INSTANCE
Ampliações
Como localizar uma Exit? Pode-se localizar uma Exit através do SPRO, em cada modulo
tem a opção abaixo, ou ainda existe alguns programas Z’s que facilitam a localização.
Exemplo: Z_FIND_USEREXIT (o código fonte deste programa pode ser encontrado
facilmente na web).
Ampliações
Enhencement Point – São ponto dentro do código standard, que a SAP permite a
customização.
Para visualizar os pontos de ampliações disponíveis em uma include standard acessar a
transação SE38 clicar em em seguida -> Processar -> Operações de Ampliação ->
Visualizar pontos de Ampliação Implícito.
Onde mostrar as setinhas são os pontos possíveis para ampliações.
Carga de Dados (CALL TRANSACTION)
Tento esses pontos na transação SHDB será gerado o mapeamento, conforme abaixo,
vamos alterar a descrição de um material na MM02.
Transação SHDB, clicamos em nova gravação, e preenchemos o nome do registro e a
transação que utilizaremos para gravar
Carga de Dados (CALL TRANSACTION)

SHDB – Exemplo:
Carga de Dados (CALL TRANSACTION)

A transação irá gerar a tela abaixo onde temos em vermelho o nome do programa e a
tela, e temos em preto o nome do campo contido na tela juntamente com o valor do
campo durante a gravação
Carga de Dados (BAPI)

BAPI são funções criadas pela SAP que executam determinadas ações:
Exemplo:
BAPI_MATERIAL_SAVEDATA – Cadastra o material no SAP.
BAPI_SALESORDER_CREATEFROMDATA – Cria Ordem de Vendas.
Carga de Dados (BAPI)
BAPI
Debug
Esta ferramenta é muito importante na busca de erros, para encontrar valores
de variáveis ou tabelas dentro do código executado, facilitando nas alterações.
Existem várias formas de entrar no modo de depuração, o principal deles é o
comando /h na barra de comando durante a execução do programa. Outra
forma é diretamente dentro do código do programa.

SE38
Debug
Debug
Dentro do código é possível criar pontos de parada clicando na barra lateral ou
clicando em F9 e para torná-los fixos basta salvá-los. A través da seleção de
ponto de parada F9 é possível incluir pontos de parada múltiplo em
comandos(Message), performs, funções, ... Por meio do CTRL+F é possível
buscar variáveis e dados necessários.
Debug
É possível verificar o conteúdo das variáveis selecionadas, variáveis locais e
globais.

Os detalhes das variáveis podem ser visualizados clicando duas vezes nela e
seu valor alterado. Esta ferramenta é excelente para execução de testes com
valores diferentes.
Debug
Detalhes do debug
Durante o debug é possível ter informações do programa, include e evento em
processamento, retorno de execução e índice de tabelas internas. Também é
possível posicionar a tela no local onde o cursor esta executando.

Comandos

Percorrer debug através comandos de teclas:


F5 – Execução de etapa individual, executa passo a passo o debug.
F6 – Execução na qual é possível pular eventos, por exemplo, Perform sem necessidade
de entrar nestes.
F7 – Retorno de execução dentro de uma perform, por exemplo, é possível sair dele.
F8 – Execução completa.
Obs.: No caso de existir pontos de parada na frente no código todos as ações anteriores
irão parar neste.
Debug
Outros comandos
/h – Executa modo debug(depuração) quando digitado na barra de comando
antes da execução de uma transação por exemplo.
/hex – Finaliza modo depuração quando digitado na barra de comando.
/n – Finaliza a execução atual, quando acompanhado de uma código de
transação navegará para esta.
/nend – Finaliza SAP com uma mensagem de confirmação.
/nex – Finaliza SAP e processos do usuário sem mensagem de confirmação.
Shift+F12 – Quando em modo depuração é possível retornar para o evento
anterior, no entanto, as variáveis carregadas não são re-inicializadas.
Debug
Debug Janela Popup
No programa ABAP, telas do tipo Popup não possuem barra de comando para
habilitar o modo depuração. Uma maneira de contornar este problema é criar
um arquivo do tipo .txt com o código abaixo. Este deverá ser movido para tela
popup e então o modo depuração estará habilitado.

[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

C:\Users\DIEGO\
Desktop\Debug_popup.txt
Debug
Debug em Background
Para depurar um programa em Background, basta selecionar o Job e inserir o
código JDBG na barra de comando.
Debug
Watch Point
É uma tipo de ponto de parada, no entanto, busca uma condição lógica, isto é,
busca variáveis ou atribuições. Por exemplo, variável X ou variável X = 2. É
uma excelente forma de busca quando se possui a variável a ser buscada.

Remoção e Desativação de pontos de paradas


Durante o modo depuração também é possível remover e desativar todos os
pontos de parada.
Debug
Ir para a instrução
Menu: Debugger / Ir para a instrução
Vai diretamente para a instrução na qual está posicionado o cursor, sem
executar as demais instruções. Esta funcionalidade permite voltar no fluxo do
processamento do programa.
Especificações Funcionais

Objetivo
Informações para análise de impacto
Descrição do Processo
Regras de Negócio
Transações Envolvidas
Mapeamento dos campos (Tabelas / Estruturas)
Layouts de entrada e saída (Telas / Relatórios)
Parâmetros de Seleção
Dados para Testes e resultado esperado
Validações de campos com devidas mensagens
Seguir a lógica.
Outros Assuntos

• Diálogo de atualização de tabelas (SM30)


• SHD0 – Criação de Variantes de tela e de transação
• Tabelas Internas
• Recuperar dados da base
• Alterar dados na base
Outros Assuntos

• Diálogo de atualização de tabelas (SM30)


SM30

Criação do diálogo de atualização de tabelas na SE11:


SM30

Utilização do diálogo de atualização de tabelas na SM30:


SM30
Associar transação ao diálogo de atualização de tabelas, na SE93:
SM30
Como encontrar transação associada ao diálogo de atualização da tabela
Z04001, através da SE16:
SHD0
Personalização de Transação
Como exemplo, desabilitar o campo Organização de Compra da tela de um
relatório:
Outros Assuntos

• SHD0 – Criação de Variantes de tela e de transação


SHD0
Personalização de Transação
Será solicitado a confirmação de personalização tela a tela:
SHD0
Personalização de Transação
Quando a tela da variante for exibida, o campo Organização de Compras deve
ser protegido, e a variante deve ser salva:
SHD0
Personalização de Transação
Após o salvamento da personalização, o campo ficará desabilitado:
SHD0
Personalização de Tela
Como exemplo, tornar um campo de um relatório obrigatório:
SHD0
Personalização de Tela
Como resultado, o campo “Centro” tornou-se obrigatório:
Outros Assuntos

• Tabelas Internas
Tabelas Internas

São objetos de dados (variáveis), que só existem em tempo de execução de


um programa, que permitem armazenar vários registros com a mesma
estrutura.

Existem várias formas de definir uma tabela interna


Exemplo: DATA: ti_flight TYPE sflight occurs 0.
Tabelas Internas
Utilizando uma tabela interna

LOOP ti_flight AT INTO e_flight.


WRITE: / e_flight-carrid,
e_flight-connid,
e_flight-fldate.
ENDLOOP.

Neste exemplo está sendo lida a tabela interna TI_FLIGHT, seu conteúdo está
sendo armazenado na estrutura E_FLIGHT, e os valores estão sendo escritos
em tela.
Tabelas Internas
Principais operações com uma tabela interna

Na Tabela inteira Uma ou mais linhas


Refresh - Deleta todo o conteúdo da Read - ler dados
Tabela Interna

Sort - Ordenar a tabela Modify - altera dados

Delete - deleta dados

Insert - insere dados

Append - insere no final


Outros Assuntos

• Recuperar dados da base


Recuperar dados da base
• Maneiras de recuperar dados da base
SELECT... SELECT carrid connid fldate
INTO TABLE... FROM sflight
INTO TABLE itab_focc
WHERE carrid = pa_car

SELECT... SELECT carrid connid fldate


ENDSELECT FROM sflight
INTO wa_sbc400_focc
WHERE carrid = pa_car
ENDSELECT.

SELECT SINGLE * SELEC SINGLE *


FROM ... FROM scarr
INTO wa_scarr
WHERE CARRID = pa_car.
Recuperar dados da base
• Maneiras de recuperar dados da base

SELECT... SELECT splif~campo1 ... scarr~campoN


FROM Tabela 1, FROM spfli INNER JOIN scarr
Tabela 2, ON spfli~carrid = scarr~carrid
Tabela N. INTO TABLE itab_focc
INTO TABLE... WHERE ...
Outros Assuntos

• Alterar dados na base


Alterar dados na base

• Comandos Utilizados: INSERT, UPDATE, DELETE e MODIFY

• Conceito IMPORTANTE

NÃO é possível alterar dados de tabelas standard.

Estas alterações são feitas por funções chamadas BAPI (Business Aplication
Programing Interface).
As BAPIs são mantidas pela SAP, e contemplam todas as regras de negócio.
Caso a tabela em questão não possua uma BAPI, o consultor funcional deve gravar
uma sequência de passos de utilização de alguma transação que atualize esta
tabela, e passar para o consultor ABAP providenciar a implementação.
Exercícios
• Meu primeiro programa. Hello World!...
Acesse o editor ABAP (SE38) e codifique um programa executável (Report)
.
Dúvidas?

Você também pode gostar