01-Introducao ABAP - Resumo
01-Introducao ABAP - Resumo
01-Introducao ABAP - Resumo
Instrutor:
Marcelo de Jesus Domingues
Curso ABAP
Foundations
Curso ABAP – Foundations ( Suporte a Clientes )
• O que é um ABAP?
ABAP é uma sigla que dá nome à linguagem de programação utilizada pelo R/3.
ABAP também é o nome dado ao PROGRAMADOR desta linguagem (ou ABAPER)
2
Curso ABAP – Foundations ( Suporte a Clientes )
• Horário de trabalho:
De forma geral a equipe do Suporte a Clientes trabalha de segunda a sexta-feira, das
08:30 as 17:30
• Vestimenta:
O traje padrão para os funcionários do Suporte a Clientes é o social “leve”. Sem a
necessidade de terno e gravata para os homens, mas é necessário ter sempre uma de
“step”.
3
Introdução ao R/3
Curso ABAP - Suporte a Clientes
Academia ABAP – Suporte a Clientes
Executando o Logon
Com um duplo clique no ambiente desejado,
ou pela seleção e botão “Logon”, temos
acesso a tela onde entraremos com o client,
usuário e senha desejados.
5
Academia ABAP – Suporte a Clientes
Barra de Menus
A exemplo dos Menus convencionais, a barra de Menus do SAP R/3 nos indica atalhos para
as principais atividades dentro de cada ferramenta e/ou necessidade.
6
Academia ABAP – Suporte a Clientes
Campo de comando
O campo de comando serve como atalho para executarmos o que chamados de
transações. Cada transação executa no sistema uma ação ou uma ferramenta.
Como comparativo, podemos dizer que as transações são códigos ou senhas que nos dão
acesso direto as mesmas funcionalidades presentes na Barra de Menu, ou no Menu
Favoritos.
7
Academia ABAP – Suporte a Clientes
8
Academia ABAP – Suporte a Clientes
Barra de Botões
Na barra de botões encontramos funções semelhantes á funções de um browser de
internet, tais como VOLTAR, CANCELAR, SAIR, IMPRIMIR, LOCALIZAR, etc.
9
Academia ABAP – Suporte a Clientes
Título
No campo de títulos encontramos o título da ferramenta ou ação que está sendo executada.
10
Academia ABAP – Suporte a Clientes
11
Academia ABAP – Suporte a Clientes
Menu favoritos
No menu favoritos, podemos definir atalhos para as principais ferramentas utilizadas por um
determinado usuário. Geralmente esta área é definida pelo perfil atribuído ao usuário.
12
Academia ABAP – Suporte a Clientes
Barra de mensagens
A barra de mensagens é a área onde os aplicativos e ferramentas do SAP R/3 informa o
usuário sobre o status de determinada execução.
Esta mensagem pode ser apenas um informativo ou confirmação, um erro ou um aviso.
Servidor de Aplicação
No canto inferior direito, podemos verificar também uma série de informações referentes ao
Sistema, como identificar o Servidor de aplicação.
13
Academia ABAP – Suporte a Clientes
Para configurar qual informação deve ser exibida, basta clicar no botão destacado a seguir
e selecionar a informação.
14
Programas
Academia ABAP – Suporte a Clientes
Academia ABAP – Suporte a Clientes
Introdução
16
Academia ABAP – Suporte a Clientes
Ambiente de trabalho
O ambiente de trabalho para criar os objetos ABAP, chama-se ABAP
Workbench (pelo menu do SAP Ferramentas -> ABAP Workbench ou transação
S001), nele podemos verificar todos os objetos relacionados a um programa
(Repository Browser), acessar os objetos do dicionário de dados do SAP
(Dictionary), criar/editar fontes do ABAP (Editor ABAP), criar funções (Function
Builder), desenhar telas para os programas ABAP (Screen Painter) e por fim
criar menus para inserir nas telas dos programas (Menu Painter).
Códigos das transações associadas às opções do ABAP Workbench:
Opção Transação
Dictionary SE11
17
Academia ABAP – Suporte a Clientes
18
Academia ABAP – Suporte a Clientes
19
Academia ABAP – Suporte a Clientes
Criar/Exibir/Modificar Variantes
Executar com Variante
Debug do programa
Renomeia o programa
Cria um novo programa baseado no programa selecionado
Exclui o programa selecionado
Mostra os objetos do sistema que estão sendo utilizados pelo programa
Determinação de ambiente
Lista de utilizações de programa
Executar programa
Ativar a versão do programa
Verificação da sintaxe do programa
20
Academia ABAP – Suporte a Clientes
Clicar em criar
Informe o
título e a
Informar categoria p/
nome do o programa
programa. e grave.
21
Academia ABAP – Suporte a Clientes
Atribuir à uma
classe de
desenvolvimento
e gravar.
Criar uma
request p/
o programa.
22
Academia ABAP – Suporte a Clientes
A aparência do editor não difere muito de um editor de texto bem simples, onde se é
possível escrever linhas de comando e lógica.
23
Academia ABAP – Suporte a Clientes
REPORT ZTESTE .
**************************************************************************
* Declaração de TABELAS, ESTRUTURAS ou VIEWS.
**************************************************************************
TABLES <tabela>.
**************************************************************************
* DATA DEFINITIONS
**************************************************************************
- Constants
CONTANTS: <nome_contant> TYPE <X> VALUE <X>.
-Types
TYPES: BEGIN OF <nome_type>,
<nome_campo> LIKE <tabela-campo>,
<nome_campo> TYPE <tipo-campo>,
END OF <nome_type>.
24
Academia ABAP – Suporte a Clientes
- Internal Tables
DATA: <nome_itab> TYPE <nome_type> OCCURS <n> WITH HEADER LINE.
DATA: BEGIN OF <nome_itab>,
<nome_campo> LIKE <tabela-campo>,
<nome_campo> TYPE <tipo-campo>,
END OF <nome_itab>.
- Globale variables
DATA: <var> TYPE <tipo_var>,
<var1> LIKE <tabela-campo>.
- Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK <xxx> WITH FRAME TITLE TEXT-<xxx>.
SELECT-OPTIONS: <nome_so> FOR <tabela-campo>
OBLIGATORY
DEFAULT <xxx>.
PARAMETER: <nome_par> LIKE <tabela-campo>,
<nome_rb> RADIOBITTON GROUP <G1> DEFAULT „X‟,
<nome_ckb> AS CHECKBOX DEFAULT „X‟.
SELECTION-SCREEN END OF BLOCK <xxx>.
25
Academia ABAP – Suporte a Clientes
- INITIALIZATION.
Executado antes de aparecer a tela de seleção. Este bloco do evento permite que
você ajuste os valores de defeito que podem somente ser determinados no
runtime.
- START-OF-SELECTION.
É o primeiro evento para dados processando e gerando uma lista. É chamado
pelo sistema runtime de ABAP assim que você deixar a tela padrão da seleção.
Utilizado para seleção dos dados.
- END-OF-SELECTION.
Evento utilizado para tratamento dos dados selecionados.
- TOP-OF-PAGE.
Evento utilizado para impressão do cabeçalho.
26
Academia ABAP – Suporte a Clientes
- END-OF-PAGE.
Utilizado para impressão do rodapé.
- AT USER-COMMAND.
Este evento é executado quando há uma ação do usuário.
- AT LINE-SELECTION.
Este evento é executado quando o usuário clica em uma linha do relatório.
27
Academia ABAP – Suporte a Clientes
Condense --> Comando que serve para juntar as palavras de forma ordenada. Ex:
Impressão.
Loop. Endloop --> Comando execução. " Varre o banco de dados" é utilizado para
varre a tabela interna.
Perform --> Com o comando perform executamos uma rotina que esta fora do fluxo
normal do programa.
30
Academia ABAP – Suporte a Clientes
Form. Endform. --> Rotina que esta fora do fluxo normal do programa.
Search <string2> FOR <string1>. --> Procura uma seqüência de string em uma outra.
SHIFT <STRING> LEFT DELETING LEADING SPACE. --> Elimina os espaços em
branco no início da string.
SHIFT <STRING1> RIGHT DELETING TRAILING <STRING2>. --> Elimina a string2 no
final da string1.
SPLIT <STRING1> AT <SEP> INTO <STRING2> <STRING3> --> Separar String de uma
variável por um determinado separador.
Translate <VAR> using '.,„-->Troca de caracteres.
On Change of <campo>. Endon. --> A cada troca de campo fazer tais ações.
31
Academia ABAP – Suporte a Clientes
Endselect
Quando não existe restrição alguma, ocorrendo uma varredura seqüencial dos registros da
tabela. Afeta o runtime quando se utiliza tabelas grandes.
b) Select * from<tabela>where<campo>eq<conteúdo>.
c) Select * from <table> where <field table> between <field1> and <field2>.
Ex. Field1 = 100 e field2 = 500. Pega inclusive o 100 e o 500. Trabalha com o range.
f) Select * from <table> where < table field> in < internal table>.
Ex: data: begin of itab occurs 10,
Sign(1), option(2), low like sflight-price, high like sflight-price,
end of itab.
Ranges: itab for sflight-table.
Move: „I‟to itab-sign, „bt‟to itab-option, „500‟to itab-low, „1000‟to itab-high.
Append itab. Move: „I‟to itab-sign, „bt‟to itab-option, „440‟to itab-low.
Append itab.
g) Select * from < table> order by < field1> < field2>… primary key.
Classifica a tabela interna numa área auxiliar sem afetar a tabela original. Evitar o uso de
sorts dentro de um select.
33
Academia ABAP – Suporte a Clientes
A estrutura da internal table deve corresponder à estrutura da tabela que está sendo
acessada. Lê os registros em conjunto e os coloca dentro de uma internal table. É mais
rápido que ler individualmente através de um loop.
Lê e grava, sem sobrepor os dados em uma internal table que possua nomes idênticos
aos nomes da tabela que está sendo lida.
34
Academia ABAP – Suporte a Clientes
Toda vez que o select single * é utilizado a chave primária completa deve ser
especificada. Se a chave não for qualificada, receberá uma mensagem de warning e
afetará a performance.
n) Select <a1><a2>... into (<f1>, <f2>,…) from…<tabela>
where...
min (campo)
avg (campo)
count (*) from < table> into (...,…,…).
Where…
r) Select * from <table> for all entries in < internal table> where
campo1 = < conteudo> and
campo 2 = < conteudo>
37
Academia ABAP – Suporte a Clientes
38
Academia ABAP – Suporte a Clientes
Exemplo de programa
* Com o comando REPORT são definidas as características básicas para um programa ABAP,
* como o nome do programa, a classe de mensagens utilizada, o tamanho da folha de
*impressão, etc.
REPORT Z_ACADEMIA_ABAP
NO STANDARD PAGE HEADING “ não exibe o cabeçalho padrão de Report
39
Academia ABAP – Suporte a Clientes
*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
40
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Tabelas internas são objetos que somente existem durante a execução do programa.
*Elas servem para armazenar os dados selecionados a partir do banco de dados e assim
*manusear os dados selecionados dentro do programa.
DATA: I_T001W TYPE TABLE OF T_T001W WITH NON-UNIQUE KEY CENTRO
WITH HEADER LINE.
* Declaração de parâmetros
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
41
Academia ABAP – Suporte a Clientes
* Constantes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
42
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Variáveis
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
DATA: v_cfop like j_1bagt-cfop, “Declara uma variável do tipo Código de CFOP
v_nome(15) type c, “Nome
v_contador type n. “Contador de linhas
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Na tela de seleção
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Podemos inserir uma lógica p/ verificação dos parâmetros inseridos na tela de seleção
AT SELECTION-SCREEN.
IF S_CENTRO IS INITIAL.
MESSAGE E001(ZA).
ENDIF.
* Se o centro estiver vazio exibe mensagem de erro. Todas as mensagens de erro *dentro da lógica da
tela de seleção, fazem o programa ficar parado na tela de seleção. *Nas demais partes do programa, a
mensagem de erro faz o programa terminar sua *execução. Utilizamos uma classe de mensagem
diferente da especificada no comando *REPORT. Se não especificar a classe de mensagens, ele
assuma a classe definida no *Report. Se a classe não estiver definida,dá erro.
43
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
AT LINE-SELECTION.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
AT USER-COMMAND.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
TOP-OF-PAGE.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
END-OF-PAGE.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
44
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Inicio do programa
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Com o comando PERFORM executamos uma rotina que está fora do fluxo
* normal do programa
PERFORM ACESSANDO_CFOP.
IF P_1 EQ C_X.
MESSAGE I015 WITH 'Ensinando a fazer mensagens' 'de informação'.
ELSEIF P_2 EQ C_X.
MESSAGE E015 WITH 'Ensinando a fazer mensagens' 'de erro'.
ENDIF.
46
Academia ABAP – Suporte a Clientes
* Com o READ fazemos a leitura de um registro na tabela interna com uma chave
específica.
READ TABLE I_T001W WITH KEY CENTRO = '1700' BINARY SEARCH.
47
Academia ABAP – Suporte a Clientes
IF SY-SUBRC NE 0.
MESSAGE I015 WITH 'Registro não encontrado'.
ELSE.
*Ao usar ":" no comando WRITE entende-se que serão impressas várias strings na mesma
*linha, a "/" que aparece indica salto de linha antes de escrever os dados na tela/relatório.
WRITE: / I_T001W.
* Insere uma linha de traços na tela.
ULINE.
ENDIF.
48
Academia ABAP – Suporte a Clientes
ENDLOOP. 49
Academia ABAP – Suporte a Clientes
*Com o comando REFRESH apagamos todos os registros da tabela interna, mas não *se apaga o
HEADER LINE da mesma.
REFRESH I_TAPP.
CLEAR I_TAPP. "Limpando o HEADER LINE
* A instrução IS INITIAL no comando IF, testa se a tabela interna esta vazia.Se testar *usando
apenas o nome da tabela i_tapp sem os colchetes estarei testando o *conteúdo do HEADER LINE.
IF I_TAPP[] IS INITIAL.
WRITE: / 'Tabela esta vazia'.
ENDIF.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Sessão de Forms
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
FORM ACESSANDO_CFOP.
SELECT CFOP CFOTXT FROM J_1BAGT
INTO I_CFOP.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E015 WITH 'Tabela CFOP vazia'.
EXIT.
ENDIF.
51
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
* Essa sub-rotina utiliza um parâmetro que é passado. Portanto, existe o comando USING.
*V_CFOP não precisa ser declarada, pois está na declaração da sub-rotina. Se
*especificarmos um tipo (v_cfop LIKE J_1BAGT-CFOP ), só aceitará parâmetros desse
*tipo. Se não especificarmos, aceita qualquer parâmetro. Se esse parâmetro tiver que ser
*alterado, usa-se o comando CHANGING.
52
Academia ABAP – Suporte a Clientes
ENDFORM.
53
Academia ABAP – Suporte a Clientes
54
Academia ABAP – Suporte a Clientes
Ajuda p/ pesquisa: Definição dos objetos de match-code que serão utilizados nas
telas do SAP
55
Academia ABAP – Suporte a Clientes
56
Academia ABAP – Suporte a Clientes
1º - Insira a descrição da
tabela
2º - Escolha a classe de
entrega ser utilizada
3º - Selecione o flag de
permissão de atualização
57
Academia ABAP – Suporte a Clientes
Nome do
campo
Indicação Descrição
de chave Elemento do campo
primária de Dados
Comprimento
Indica a obrigatoriedade de
do Campo
preenchimento do campo
Mostra o tipo do
campo
58
Academia ABAP – Suporte a Clientes
59
Academia ABAP – Suporte a Clientes
Clique em Sim
60
Academia ABAP – Suporte a Clientes
3 - Clicar na aba de
denominação de campo
61
Academia ABAP – Suporte a Clientes
Preencher as denominações
do campo
100
Academia ABAP – Suporte a Clientes
Criando um Domínio
63
Academia ABAP – Suporte a Clientes
Clicar em Sim
64
Academia ABAP – Suporte a Clientes
1 - Descrição do Domínio
65
Academia ABAP – Suporte a Clientes
66
Academia ABAP – Suporte a Clientes
67
Academia ABAP – Suporte a Clientes
68
Academia ABAP – Suporte a Clientes
Opções técnicas
69
Academia ABAP – Suporte a Clientes
4º - Salvar
3º - Verificar as inconsistências
70
Academia ABAP – Suporte a Clientes
71
Academia ABAP – Suporte a Clientes
Exercícios
1 – Crie uma tabela de clientes contendo os seguintes campos:
• Código do Cliente - LIFNR
• Nome do Cliente - NAME1
• CNPJ - STCD2
• Endereço - STRAS
• CEP - PSTLZ
• Telefone - TELF1
• E-MAIL - AD_SMTPADR
OBS: Utilize os elementos de dados Standard que estão ao lado dos campos
72
Academia ABAP – Suporte a Clientes
73