Você está na página 1de 85

Treinamento Bsico 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 caractersticas dos


elementos que compe a linguagem de programao ABAP: as transaes que
geralmente so executadas para facilitar o trabalho de pesquisa de estruturas,
as ampliaes (exits, enhancements, melhorias)- disponveis no ambiente ERP
SAP e ainda a utilizao de Debug para depurao de programas.
Ser apresentado um (overview-Resumo) de tabelas, campos, domnios,
elemento de dados e suas importncias dentro da hierarquia ABAP.
OBJETIVO
Formas de alterar o comportamento Standard Fluxo da Deciso.
Contedo
Objetivo
Linguagem ABAP
Dicionrio de Dados
Tracing
Programas
Comandos ABAP
Transportes
Funes
Ampliaes
Carga de Dados
Dicas Especificaes Funcionais
Debug
Linguagem ABAP
Advanced Business Application Programming(ABAP) uma linguagem de
programao alto nvel desenvolvida pela empresa SAP. a linguagem
utilizada no ERP SAP, onde todo desenvolvimento armazenado na base de
dados.

COBOL
Dicionrio de Dados SE11
onde definimos tabelas, domnios, elementos de dados, ndices, etc.

Tabelas Transparentes Tabelas para armazenamento de dados


Tabelas de Customizing transacionais e de configurao

Views So visualizaes totais ou parciais de uma ou


uma juno de tabelas

Domnio Define propriedades tcnicas de campos, como


tipo de dado, tamanho, etc.

Elemento de Dados Armazena as propriedades semnticas dos


campos, por exemplo, rtulos de campos(field
labels)

Tabela de Verificao Relacionamento(Foreign Key) entre as tabelas

Estruturas So registros(linhas de tabelas, barras de


campos), utilizados para definio de variveis
em programas
Dicionrio de Dados SE11

Tabelas esto divididas em:


Tabelas Transparentes
Tabelas de Customizing

Oracle

DB2

SQL Server

* Chave Primria, Chave Estrangeira ou


Secundria e ndice.
Dicionrio de Dados SE11
Domnios
Elemento de dados

Principais tipos de dados:


CHAR Cadeia de Caracteres
CURR Moeda
DATS Data
DEC Decimal (+/-)
INT Inteiro
NUMC Numrico(Algarismos)
QUAN Quantidade formato UNIT
STRING - Strings
Dicionrio de Dados
Estruturas

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

SE11
Dicionrio de Dados
Views

EX: MDRV
SE11
Tracing ST05

Em algumas situaes no conseguimos encontrar qual a tabela utilizada para exibir


informaes na tela de uma transao, por tratar-se de uma estrutura, ou ento
precisamos saber como uma determinada transao comps 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 transao ao banco
de dados durante uma determinada operao.
Tracing
Para executar uma Trace, primeiramente, deve-se clicar no boto Activate
Trace, e ento, executar a transao ou trecho no qual deseja buscar a
informao de tabela ou dados.

A Trace estar ativada, ento qualquer ao realizada no SAP, seja execuo


de transaes ou em transaes, estar gravando quais SQL so lidas.
Tracing
Execute a transao ou processo do qual deseja encontrar a tabela, neste
exemplo usaremos as XD03.
Tracing
Logo aps executar o trecho desejado, clique em Desactivate para parar o
registro e em Display Trace. Surgir uma janela com as restries de perodo
e tabelas, ento em Ok.
Tracing
Uma lista com todas tabelas executadas na Trace sero listadas, selecionando
uma linha e indo em GoTo->Display ABAP Source possvel ir para o cdigo
onde trecho utilizado.
Programas
Um programa ABAP por ser criado, editado ou exibido atravs das transaes
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 so iniciados com as letras Z ou Y,


e os objetos standard, normalmente, com os demais caracteres
Programas
Esto dentre o principais tipos de programa ABAP:
Programa Executvel - Report
Programa Include Include
Grupo de Funes Conjunto de funes
Mdulo Pool Programa Pool

SE38
Programas
Um programa ABAP por estar atribudo a uma transao para execuo pelo
usurio e pode ser visualizada pela SE93 ou acessado atravs da prpria
transao no Menu Sistema->Status. Neste tambm pode ser visualizada a
Tela inicializao atribuda.
SE93
Programas
Atravs da SE38 e em exibir lista de objetos possvel visualizar toda a
composio de um programa ABAP.

SE38 /
SE80
Programas SE38

Sub-rotinas - So mdulos dentro de um programa usados para estruturar e


organizar o cdigo, e portanto, facilitar a interpretao. A chamada realizada
atravs do comando PERFORM, este comando permite a passagem de
parmetros, isto , valores externos que sero utilizados internamente quando
esta chamada.
Os tipos de passagens de parmetro so USING(normalmente utilizada para
variveis), TABLES(utilizada para tabelas internas) e
CHANGING(normalmente varivel 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 dilogo


Programas SE38
Eventos - Report
Programas SE38

Report - Geralmente a Sada do relatrio acontece por meio de comandos


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

ALV
Existem vrias maneiras de um ALV ser gerado, o mais comum atravs do
comando: CALL FUNCTION REUSE_ALV_GRID_DISPLAY ou atravs de
Programas Orientados a Objetos.
Mensagens
Mensagens - Na Classe de mensagem ZSD numero 000 temos a seguinte
mensagem: Apontamento de produo 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 = nmero da mensagem
10 = esse valor substitui o & da mensagem contida na classe.

SE91
Comandos ABAP
Toda ao que ser executada por programa so realizados atravs de
comandos. No entanto, h a necessidade de declaraes de valores em
objetos para manipulao da informao, isto , variveis, 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
so:
SY-SUBRC: Retorna o valor execuo de comandos ABAP. Sendo 0 quando o retorno
verdadeiro, isto , correto. Diferente de 0 valor falso, isto , incorreto
SY-UCOMM: Retorna o comando de interao do usurio.
Transportes
Repositrio de Objetos
Transportes
Ambientes
Transportes
SE09
Change Request
Transportes
SE09
Log de Transporte
Transportes
SE80
Verses de um objeto ABAP
Transportes
SE80
Verses de um objeto ABAP
Transportes
SE80
Comparando verses entre ambientes DEV X QAS
Transportes
SE80
Comparando verses entre ambientes DEV X PRD
Funes SE37

Funes so pequenos programas utilizados por vrios programas para executar


determinadas tarefas, tais como, validar uma informao, executar determinado calculo e
retornar o valor, ect.

Tipos de Funes:
Mdulo de Funo Normal
Mdulo de Acesso Remoto (RFC).
BAPI
Funes SE37

Quando chamamos um modulo de funo temos os parmetros de importao(onde


preenchemos a entrada da funo) os parmetros de exportao( informao que
recebemos da funo) e tabelas(hora recebemos e hora inserimos informao
dependendo da funo)
Funes SE37

BAPI (Business Aplication Programing Interface)


As BAPIs so funes mantidas pela SAP, que contemplam todas as regras de negcio
do processo em questo. Estas funes tambm pode ser visualizadas na transao
BAPI.
Funes SE37

RFC (Remote Function Call)

SAP ECC RFC Sistema de 3s


Funes SE37

RFCs x Web Services

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


Ampliaes

O Sistema SAP permite fazer a insero cdigos do cliente em alguns trechos de cdigos
standard, so as chamadas Exits ou ampliaes. Estas podem ser utilizadas para
modificao de dados, insero de novos dados, incluso de novas telas com chamadas
em transaes standard, validar informaes e outras funcionalidades atendem as
necessidade do cliente.
Principais tipos de Ampliaes:
User-Exits CMOD, SMOD,
Field-Exits SE18, SE19 e
Badis SE20.
Ampliaes SE24

Business Add-Ins(BADI)

CL_EXITHANDLER=>GET_INSTANCE
Ampliaes
Como localizar uma Exit? Pode-se localizar uma Exit atravs do SPRO, em cada modulo
tem a opo abaixo, ou ainda existe alguns programas Zs que facilitam a localizao.
Exemplo: Z_FIND_USEREXIT (o cdigo fonte deste programa pode ser encontrado
facilmente na web).
Ampliaes
Enhencement Point So ponto dentro do cdigo standard, que a SAP permite a
customizao.
Para visualizar os pontos de ampliaes disponveis em uma include standard acessar a
transao SE38 clicar em em seguida -> Processar -> Operaes de Ampliao ->
Visualizar pontos de Ampliao Implcito.
Onde mostrar as setinhas so os pontos possveis para ampliaes.
Carga de Dados (CALL TRANSACTION)
Tento esses pontos na transao SHDB ser gerado o mapeamento, conforme abaixo,
vamos alterar a descrio de um material na MM02.
Transao SHDB, clicamos em nova gravao, e preenchemos o nome do registro e a
transao que utilizaremos para gravar
Carga de Dados (CALL TRANSACTION)

SHDB Exemplo:
Carga de Dados (CALL TRANSACTION)

A transao 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 gravao
Carga de Dados (BAPI)

BAPI so funes criadas pela SAP que executam determinadas aes:


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 variveis ou tabelas dentro do cdigo executado, facilitando nas alteraes.
Existem vrias formas de entrar no modo de depurao, o principal deles o
comando /h na barra de comando durante a execuo do programa. Outra
forma diretamente dentro do cdigo do programa.

SE38
Debug
Debug
Dentro do cdigo possvel criar pontos de parada clicando na barra lateral ou
clicando em F9 e para torn-los fixos basta salv-los. A travs da seleo de
ponto de parada F9 possvel incluir pontos de parada mltiplo em
comandos(Message), performs, funes, ... Por meio do CTRL+F possvel
buscar variveis e dados necessrios.
Debug
possvel verificar o contedo das variveis selecionadas, variveis locais e
globais.

Os detalhes das variveis podem ser visualizados clicando duas vezes nela e
seu valor alterado. Esta ferramenta excelente para execuo de testes com
valores diferentes.
Debug
Detalhes do debug
Durante o debug possvel ter informaes do programa, include e evento em
processamento, retorno de execuo e ndice de tabelas internas. Tambm
possvel posicionar a tela no local onde o cursor esta executando.

Comandos

Percorrer debug atravs comandos de teclas:


F5 Execuo de etapa individual, executa passo a passo o debug.
F6 Execuo na qual possvel pular eventos, por exemplo, Perform sem necessidade
de entrar nestes.
F7 Retorno de execuo dentro de uma perform, por exemplo, possvel sair dele.
F8 Execuo completa.
Obs.: No caso de existir pontos de parada na frente no cdigo todos as aes anteriores
iro parar neste.
Debug
Outros comandos
/h Executa modo debug(depurao) quando digitado na barra de comando
antes da execuo de uma transao por exemplo.
/hex Finaliza modo depurao quando digitado na barra de comando.
/n Finaliza a execuo atual, quando acompanhado de uma cdigo de
transao navegar para esta.
/nend Finaliza SAP com uma mensagem de confirmao.
/nex Finaliza SAP e processos do usurio sem mensagem de confirmao.
Shift+F12 Quando em modo depurao possvel retornar para o evento
anterior, no entanto, as variveis carregadas no so re-inicializadas.
Debug
Debug Janela Popup
No programa ABAP, telas do tipo Popup no possuem barra de comando para
habilitar o modo depurao. Uma maneira de contornar este problema criar
um arquivo do tipo .txt com o cdigo abaixo. Este dever ser movido para tela
popup e ento o modo depurao 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
cdigo JDBG na barra de comando.
Debug
Watch Point
uma tipo de ponto de parada, no entanto, busca uma condio lgica, isto ,
busca variveis ou atribuies. Por exemplo, varivel X ou varivel X = 2.
uma excelente forma de busca quando se possui a varivel a ser buscada.

Remoo e Desativao de pontos de paradas


Durante o modo depurao tambm possvel remover e desativar todos os
pontos de parada.
Debug
Ir para a instruo
Menu: Debugger / Ir para a instruo
Vai diretamente para a instruo na qual est posicionado o cursor, sem
executar as demais instrues. Esta funcionalidade permite voltar no fluxo do
processamento do programa.
Especificaes Funcionais

Objetivo
Informaes para anlise de impacto
Descrio do Processo
Regras de Negcio
Transaes Envolvidas
Mapeamento dos campos (Tabelas / Estruturas)
Layouts de entrada e sada (Telas / Relatrios)
Parmetros de Seleo
Dados para Testes e resultado esperado
Validaes de campos com devidas mensagens
Seguir a lgica.
Outros Assuntos

Dilogo de atualizao de tabelas (SM30)


SHD0 Criao de Variantes de tela e de transao
Tabelas Internas
Recuperar dados da base
Alterar dados na base
Outros Assuntos

Dilogo de atualizao de tabelas (SM30)


SM30

Criao do dilogo de atualizao de tabelas na SE11:


SM30

Utilizao do dilogo de atualizao de tabelas na SM30:


SM30
Associar transao ao dilogo de atualizao de tabelas, na SE93:
SM30
Como encontrar transao associada ao dilogo de atualizao da tabela
Z04001, atravs da SE16:
SHD0
Personalizao de Transao
Como exemplo, desabilitar o campo Organizao de Compra da tela de um
relatrio:
Outros Assuntos

SHD0 Criao de Variantes de tela e de transao


SHD0
Personalizao de Transao
Ser solicitado a confirmao de personalizao tela a tela:
SHD0
Personalizao de Transao
Quando a tela da variante for exibida, o campo Organizao de Compras deve
ser protegido, e a variante deve ser salva:
SHD0
Personalizao de Transao
Aps o salvamento da personalizao, o campo ficar desabilitado:
SHD0
Personalizao de Tela
Como exemplo, tornar um campo de um relatrio obrigatrio:
SHD0
Personalizao de Tela
Como resultado, o campo Centro tornou-se obrigatrio:
Outros Assuntos

Tabelas Internas
Tabelas Internas

So objetos de dados (variveis), que s existem em tempo de execuo de


um programa, que permitem armazenar vrios registros com a mesma
estrutura.

Existem vrias 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 contedo est
sendo armazenado na estrutura E_FLIGHT, e os valores esto sendo escritos
em tela.
Tabelas Internas
Principais operaes com uma tabela interna

Na Tabela inteira Uma ou mais linhas


Refresh - Deleta todo o contedo 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

NO possvel alterar dados de tabelas standard.

Estas alteraes so feitas por funes chamadas BAPI (Business Aplication


Programing Interface).
As BAPIs so mantidas pela SAP, e contemplam todas as regras de negcio.
Caso a tabela em questo no possua uma BAPI, o consultor funcional deve gravar
uma sequncia de passos de utilizao de alguma transao que atualize esta
tabela, e passar para o consultor ABAP providenciar a implementao.
Exerccios
Meu primeiro programa. Hello World!...
Acesse o editor ABAP (SE38) e codifique um programa executvel (Report)
.
Dvidas?

Você também pode gostar