01-Introducao ABAP - Resumo

Fazer download em pptx, pdf ou txt
Fazer download em pptx, pdf ou txt
Você está na página 1de 73

Sejam bem Vindos.

Instrutor:
Marcelo de Jesus Domingues

Curso ABAP
Foundations
Curso ABAP – Foundations ( Suporte a Clientes )

• O que é o SUPORTE A CLIENTES?


O Suporte a Clientes é responsável por pequenos desenvolvimentos, melhorias e
adaptações do Sistema R/3 (popularmente chamado de SAP) pós
implementações.
As implementações ou migrações de versão são realizadas pela equipe de Projetos.

• 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)

• Qual o principal papel do ABAP dentro do ciclo de vida do sistema R/3?


O ABAP será responsável por desenhar e implementar as soluções que o R/3 não
suportar pela variedade de configuração. Ou seja, caso haja um cenário que não seja
contemplado pelo sistema, deverá ocorrer um desenvolvimento que supra esta
necessidade.

• Qual a diferença entre um ABAP do Suporte a Clientes e da área de Projetos?


Nenhuma. Todo o acesso de desenvolvimento técnico dos ABAPs são semelhantes, seja nas
atividades ligadas a implementação, quanto as atividade pós-implementação.

2
Curso ABAP – Foundations ( Suporte a Clientes )

• Qual é a rotina de trabalho de um ABAP no Suporte a Clientes?


O ABAP do Suporte a clientes trabalha em um local fixo e eventualmente pode ser
requerido em uma atividade local no cliente.
Geralmente suas atividades são realizadas de forma remota e acompanhadas por um
consultor Funcional, que conhecerá as regras de negócio.
O ABAP junto com o consultor funcional serão responsáveis por introduzir a necessidade
do cliente no sistema.

• 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.

Com um clique simples podemos


facilmente escolher a ação desejada.

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

Na ajuda para o campo de comando, temos


alguns exemplos de comandos que agregados
ás transações convencionais, combinam ações
dentro do R/3.

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

Barra de Botões da aplicação


Na barra de botões da aplicação, encontramos funções específicas para a ação executada.

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

Informações gerais sobre o sistema


Ao lado do nome do servidor de aplicação, temos um informativo que pode ser configurado
pelo usuário a exibir a informação desejada. Podemos ocultar e exibir esta informação
clicando no botão destacado abaixo.

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

Antes de iniciarmos o estudo dos Reports, devemos entender primeiro o conceito


de Report dentro do SAP. Apesar do nome indicar que são relatórios, Report tem
uma abrangência maior do que isso. Devemos entendê-los como programas, que
são capazes de fazer muito mais coisas do que exibir relatórios.

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

Repository Browser SE80

Dictionary SE11

Editor ABAP SE38

Function Builder SE37

Screen Painter SE51

Menu Painter SE41

17
Academia ABAP – Suporte a Clientes

Editor ABAP (SE38)


No editor ABAP, além de
digitar o código fonte do
programa, é possível também
efetuar outras tarefas e
adicionar outros objetos
inerentes à sua execução.

18
Academia ABAP – Suporte a Clientes

Sub-objetos associados a um programa ABAP:

Texto fonte: Através desta opção acionamos o editor de programas ABAP.


Variantes: Definem-se os valores pré-definidos para os parâmetros de execução de um
programa ABAP. Os parâmetros de um programa são definidos pelos comandos Parameters
e Select-options do ABAP.
Atributos: Definem-se os atributos de programa, como classe de desenvolvimento, título,
categoria, status, aplicação, etc.
Documentação: Texto com uma descrição breve do que o programa executa e as suas
condições necessárias para execução.
Elementos de texto: Definem-se os textos que serão relacionados às mensagens, rótulos de
parâmetros do programa e títulos e nome de colunas para o relatório gerado pelo programa.

19
Academia ABAP – Suporte a Clientes

Barra de botões da transação

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

Criando um programa Report


Nomes de desenvolvimento sempre devem iniciar com as letras Z ou Y.

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

Estrutura do Programa ABAP

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

Eventos dentro de um programa Report


- AT SELECTION-SCREEN OUTPUT.
Executado antes de aparecer a tela de seleção. Utilizado para fazer qualquer tipo
de tratamento da tela de seleção.

- 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

Comandos básicos ABAP


Move --> Mover.
Move-corresponding --> Move para os campos correspondentes.

Write --> Escrever.


Aciona um linha horizontal.
Uline -->
Saltar linha.
Skip -->
Occurs --> Controle de registro na tabela. Delimita as linhas da tabela, para melhorar a
performance do programa.
E000 --> Esta expressão é usada para mensagem de erro.

I000 --> Esta expressão é usada para mensagem de informação.


W000 --> Esta expressão é usada para mensagem de aviso.
Vline --> " Insere uma linha vertical".
" ou * --> Forma de comentar um programa
[ ] --> Compara o conteúdo total da tabela.
= --> Atribui/compara valor.
28
Academia ABAP – Suporte a Clientes

<> --> Sinal de diferente.


Format Color 1 --> Insere uma nova cor que é selecionada pelo numero.
Format Intensified off --> Desabilita o formato padrão da letra.
Format Intensifiel on --> Ativa o formato padrão.
Is Initial --> Comparação do vazio.... testa se a tabela interna esta vazia...no IF
Refresh --> Limpa todo o conteúdo da tabela interna.
Clear --> Limpa/apaga conteúdo da variável, estrutura, cabeçalho da tabela interna.
Parameter --> "são os texts boxes" --> entrada de dados.
Default --> Padrão.
At First --> Primeiro registro da tabela.
At New --> Primeiro registro da quebrar.
At Last --> Ultimo registro da quebrar.
At End Of --> Ultimo registro da quebra.
Concatenate --> Concatena dois ou mais strings.
New-Page --> Abrir um nova pagina. 29
Academia ABAP – Suporte a Clientes

Standard Page Heading --> Desabilita cabeçalho padrão.


Append --> Grava efetivamente na tabela interna os dados que estão em seu
cabeçalho.
Collect <tab> --> Grava registros como o APPEND, efetuando a somatória dos
campos numéricos.
Insert --> Inserir dados de uma tabela interna em tabela.
Delete --> Apaga/exclui dados de uma tabela.
Modify --> Altera dado de uma tabela interna.
Update --> Altera dado de uma tabela transparente.
Describe --> Mostra o total do registro na tabela.

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

Utilizando o comando Select para acessar as tabelas do R/3


a) Select * from... <tabela>
……..

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>.

Lê todos os registros da tabela especificada, onde o campo é igual ao conteúdo especificado.


Deve-se sempre especificar as colunas para não afetar o runtime.

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.

d) Select * from <table> where <table field> like „_R%‟


.

_ = a primeira letra não importa

R = a segunda deve ser R

% não importa a seqüência.


32
Academia ABAP – Suporte a Clientes

e) Select * from <table> where <field table> in (123, 1000).


Especificando se o field table é 123 ou 1000.

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

h) Select * from < table> by passing buffer.

Para ler diretamente de uma tabela original

i) Select * from <table> appending table < internal table>.

Lê os registros e os inclui (sem sobrepor) em um internal table.

j) Select... from <table> into table < internal table>.

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.

k) Select ... into corresponding fields of table <itab>.

Neste caso, não precisa corresponder a estrutura da tabela acessada. Movimentará os


registros para as colunas definidas na internal table que possuam nome igual ao da tabela
acessada. Corresponding ou appending corresponding não exigem endselect.

l) Select… appending corresponding fields of table < itab>.

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

m) Select single * from <tabela> where... <campo> … eq… <conteúdo>.

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...

Lê as colunas especificadas a1 e a2. Após into deverão ser especificadas as áreas de


trabalho auxiliares (f1, f2). O número de colunas deverá ser igual ao numero de
workareas especificadas.

o) Select max (campo)

min (campo)

avg (campo)
count (*) from < table> into (...,…,…).

Where…

Avg e sum : somente para campos alfanuméricos.


Sem usar o endselect. 35
Academia ABAP – Suporte a Clientes

p) Select * from <tabela> where price in itab.

q) Select * from <tabela> into <workarea> .


Ex. Data: begin of wa,
Line (100),
End of wa.

Parameters: tabname(10) default „SPFLI‟.


Especificando o nome da tabela em tempo dinamicamente no select statement
sempre consome mais tempo no processamento.

r) Select * from <table> for all entries in < internal table> where
campo1 = < conteudo> and
campo 2 = < conteudo>

Define-se uma internal table. Alimenta-se os campos desta internal table(move e


append). No select campo1 e campo 2 serão os campos definidos e alimentados
na internal table.
36
Academia ABAP – Suporte a Clientes

s) Select <campo> Min (campo1) Max (campo1)


into (campo, min, max)

from <tabela> group by campo.


Todos os campos que devem ser mostrados na lista, precisa-se especificar após a
cláusula group by.
(campo, max e min são campos auxiliares).
Se o nome do database não é conhecido até runtime, não se pode especificar a cláusula
group by).

37
Academia ABAP – Suporte a Clientes

Variáveis do Sistema (tabela SYST)

Sy-datum --> Variável data.


Sy-uzeit --> Variável hora.
Sy-uname --> Variável nome.
Sy-subrc --> Se a expressão for verdadeira " ele confirma ". Valor de retorna de acordo
com determinada instrução do ABAP.
Sy-langu --> Linguagem Padrão.
Sy-pagno --> Insere número de paginas.

Sy-tabix --> Contador da tabela interna, Apontador, Cursor.

Obs: Todas as variáveis do sistema estão na tabela SYST.

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

LINE-SIZE 170 “ define o tamanho da linha em 170 caracteres

LINE-COUNT 65 “ define o número de linhas por página

MESSAGE-ID ZSADUP “ define a classe de mensagens

RESERVE 8 LINES. “ pelo menos 8 linhas serão impressas na últ. pág

39
Academia ABAP – Suporte a Clientes

*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Declaração de tabelas do sistema


*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Com o comando TABLES são definidas as tabelas do dicionário de dados


* que serão utilizadas no programa
TABLES: T001W, " Tabela de centros
J_1BAGT.
"Descrição de CFOP
*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Declaração dos tipos de campos


*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Na declaração de tipos de campos são definidas as características de um campo de


*uma estrutura que irá compor a estrutura de uma tabela interna. Usa-se isso qdo
*declaramos várias tabelas internas com a mesma estrutura
TYPES: BEGIN OF T_T001W,

CENTRO LIKE T001W-WERKS, "Centro


DESCRICAO LIKE T001W-NAME1, "Descrição centro
END OF T_T001W.

40
Academia ABAP – Suporte a Clientes

*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Declaração de tabelas Internas


*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* 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.

DATA: BEGIN OF I_CFOP OCCURS 100, “OCCURS indica o número de registros


CFOP LIKE J_1BAGT-CFOP, “na tabela interna. É usado para reservar
DESCCFOP LIKE J_1BAGT-CFOTXT, “esse espaço na memória e otimizá-la
END OF I_CFOP.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Declaração de parâmetros
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Com o comando SELECT-OPTIONS podemos montar parâmetros com lista de


* valores a partir de campos do banco de dados
SELECT-OPTIONS: S_CENTRO FOR T001W-WERKS.

41
Academia ABAP – Suporte a Clientes

* Com o comando PARAMETERS, cria-se parâmetros de seleção que permitem a


*entrada de apenas um valor. Eles podem receber um valor, como o Select-Option, mas
*também podem ser Radiobuttos e também checkbox
PARAMETERS:

P_1 RADIOBUTTON GROUP CURS, “ Com o comando Radiobutton, cria-se


P_2 RADIOBUTTON GROUP CURS, “ botões para a seleção de 1 ou outro
P_3 RADIOBUTTON GROUP SRUC, “ parâmetro. O comando GROUP XXX
P_4 RADIOBUTTON GROUP SRUC, “ identifica quais parâmetros fazem parte
“ do grupo. Neste exemplo, temos 2 grupos
“ distintos, o CURS e o SRUC.
P_5 AS CHECKBOX.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Constantes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

CONSTANTS: C_X(1) TYPE C VALUE 'X'. "Constante X

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.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Qdo o usuário selecionar uma linha


*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

AT USER-COMMAND.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Qdo o usuário apertar um botão


*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

TOP-OF-PAGE.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

*Inserir aqui as informações que se deseja que apareçam no cabeçalho do relatório


WRITE:/ 10 „Cabeçalho do meu primeiro programa ABAP‟. “escreve na posição 10
ULINE at 10(40). “Começando na posição 10 e com tamanho 40.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

END-OF-PAGE.
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

*Inserir aqui as informações que se deseja que apareçam no rodapé do relatório


ULINE.
WRITE:/ „As informações continuam na próxima página‟.

44
Academia ABAP – Suporte a Clientes
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Inicio do programa
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* O evento START-OF-SELECTION determina que o algoritmo do programa


* inicia neste ponto, sua utilização é obrigatória.
START-OF-SELECTION.

* Com o comando PERFORM executamos uma rotina que está fora do fluxo
* normal do programa
PERFORM ACESSANDO_CFOP.

* Com o comando SELECT buscamos a informações do banco de dados a partir


* dos parâmetros de seleção
SELECT WERKS “ cód do centro
NAME1
“ descrição
FROM T001W
“ da tabela T001W
INTO TABLE I_T001W
“ inserindo na tabela interna I_T001W
WHERE WERKS IN S_CENTRO.
“onde o centro esteja dentro dos parâmetros
“ informados 45
Academia ABAP – Suporte a Clientes

* Testando se a execução do comando SELECT foi bem sucedida


IF SY-SUBRC NE 0.
* Com a variável de sistema SY-SUBRC sempre poderemos testar se o
* comando ABAP foi executado com sucesso ou não.
MESSAGE I015 WITH 'Erro no comando SELECT'.
* Com o comando EXIT neste ponto termina-se a execução do programa
EXIT.
ENDIF.

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

* Para ler/manusear os registros selecionados no comando SELECT devem utilizar


* o comando LOOP que fará a leitura seqüencial dos registros na tabela interna
LOOP AT I_T001W.

WRITE: / TEXT-031, I_T001W-CENTRO, " HEADER LINE (Campo centro)

TEXT-042, I_T001W-DESCRICAO. " HEADER LINE (Campo descrição)


* Como modificar o conteúdo de um campo de uma tabela interna durante a
* execução de um programa
* Primeiro: Alterar o conteúdo do campo
i_t001w-descricao = 'Texto de alteração'.
* Segundo: Utilizar o comando MODIFY para gravar a alteração na tabela interna
MODIFY i_t001w.
ENDLOOP.

* 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.

* Acessando um determinado registro na tabela interna baseado no índice do mesmo.


READ TABLE I_T001W INDEX 8.
IF SY-SUBRC NE 0.
MESSAGE I015 WITH 'Registro não encontrado'.
ELSE.
WRITE I_T001W.
ULINE.
ENDIF.

48
Academia ABAP – Suporte a Clientes

* Comando para limpar o HEADER LINE


CLEAR I_T001W.
* Apendando (anexando) registros em outra tabela interna
LOOP AT I_T001W.
* Utilizando o comando CASE para verificar o valor de um campo ou variável
CASE I_T001W-CENTRO.
WHEN '1010'. "Testando se o valor = 1010
I_TAPP-CENTRO = I_T001W-CENTRO.
I_TAPP-DESCRICAO = I_T001W-DESCRICAO.
APPEND I_TAPP.
WHEN '1650'.
* Com o comando MOVE-CORRESPONDING movemos os campos correspondentes em entre duas
tabelas, ou seja, move-se o campo i_t001w-centro para i_tapp-centro.
MOVE-CORRESPONDING I_T001W TO I_TAPP.
APPEND I_TAPP.
WHEN OTHERS.
ENDCASE.

ENDLOOP. 49
Academia ABAP – Suporte a Clientes

* Insere um BREAK-POINT fixo no código do programa.


BREAK-POINT.

*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.

* Sorteando (classificando) os registros da tabela interna


SORT I_T001W BY DESCRICAO DESCENDING.
* O evento END-OF-SELECTION determina o fim do fluxo do programa
END-OF-SELECTION.
50
Academia ABAP – Suporte a Clientes

*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Sessão de Forms
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Definição da sub-rotina ACESSANDO_CFOP


*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

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.

WRITE: / ‟===>‟,‟Form ACESSANDO_CFOP foi acionado‟,‟****‟


.

ENDFORM. “ Fim do Form ACESSANDO_CFOP

51
Academia ABAP – Suporte a Clientes

*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

* Definição da sub-rotina ACESSANDO_CFOP_COM_COMANDO_A


*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*

FORM acessando_cfop_com_comando_a USING v_cfop.

* 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.

*O comando AT dentro de um LOOP nos permite controlar o fluxo dos dados.


LOOP AT i_t001w.

* Quando o primeiro registro da tabela seja lido


AT FIRST.
WRITE: / „Inicio dos registros da tabela i_t001w‟.
ENDAT.

52
Academia ABAP – Suporte a Clientes

*Sempre que o valor do campo mudar acionará esta ação


AT NEW WERKS.
WRITE: / „Mudança do valor campo‟,WERKS.
ENDAT

*Quando o último registro da tabela seja lido


AT LAST.
WRITE: / „Fim dos registros da tabela i_t001w‟.
ENDAT.

ENDFORM.

53
Academia ABAP – Suporte a Clientes

Como Utilizar o Data Dictionary?


Entre na transação
SE11

54
Academia ABAP – Suporte a Clientes

Nesta transação você terá as seguintes opções:

Tabelas: Definir a estrutura das tabelas transparentes onde os dados serão


armazenados fisicamente.

Visões: Definir relacionamentos entre tabelas transparentes para facilitar o


acesso ao banco de dados, geralmente são criadas para substituir “select join’s”
que durante a execução do programa degradam a performance do mesmo.

Categoria de dados: Opta pela criação de Elementos de Dados, Estruturas ou


Categoria de Tabelas.

Domínio: Definir atributos técnicos que serão atribuídos a um elemento de dados.

Objetos de bloqueio: Definir os bloqueio de acesso aos dados no banco de dados.

Ajuda p/ pesquisa: Definição dos objetos de match-code que serão utilizados nas
telas do SAP

55
Academia ABAP – Suporte a Clientes

Criando uma tabela


Entre na
1º - Selecione a opção
transação SE11
Tabela Banco de Dados

2º - Entre com o nome da tabela


iniciado com a letra Z

3º - Clique no Botão Criar

56
Academia ABAP – Suporte a Clientes

1º - Insira a descrição da
tabela

4º - Selecione a aba Campos

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

Criando um Elemento de Dados

Dar um duplo clique no


nome do Elemento de
Dados a ser criado

59
Academia ABAP – Suporte a Clientes

Clique em Sim

60
Academia ABAP – Suporte a Clientes

1 - Descrição do Elemento de Dados

3 - Clicar na aba de
denominação de campo

2 - Nome do Domínio desejado

61
Academia ABAP – Suporte a Clientes

Preencher as denominações
do campo

100
Academia ABAP – Suporte a Clientes

Criando um Domínio

Duplo click sobre o nome do


domínio a ser criado

63
Academia ABAP – Suporte a Clientes

Clicar em Sim

64
Academia ABAP – Suporte a Clientes

1 - Descrição do Domínio

4 - Se precisar definir um range de


valores válidos para o campo clique na
aba da Área de Valores.Esta
funcionalidade é mais utilizada para
campos do tipo Flag ou de
parametrização

2 - Selecione a Categoria de Dados

3 – Caso este campo não seja


preenchido automaticamente, defina
o número de posições do Campo

65
Academia ABAP – Suporte a Clientes

Neste campo estará


a descrição para
estes valores.

Neste campo pode-


se inserir os valores
fixos para este
campo

Pode-se inserir o nome


da tabela onde podem
estar guardados os
valores fixos do campo

66
Academia ABAP – Suporte a Clientes

Feito este processo 1º Clique no botão salvar

3º - Não existindo inconsistências clicar neste


botão para ativar o domínio criado

2º Clique neste botão para verificar se


existem inconsistências no domínio criado

67
Academia ABAP – Suporte a Clientes

Salvando e ativando o Elemento de Dados

Feito este processo 1º Clique no


botão salvar

3º - Não existindo inconsistências


clicar neste botão para ativar o
Elemento de Dados criado

2º Clique neste botão para verificar


se existem inconsistências no
Elemento de Dados

Depois de criar e ativar o Domínio


o próximo passo é a ativação do
Elemento de Dados.

68
Academia ABAP – Suporte a Clientes

Opções técnicas

Pode-se observar o aparecimento


da Categoria de Dados, do
comprimento e Descrição do
campo após a criação do
Elemento de Dados e do Domínio
do mesmo.
Agora devemos definir as opções
técnicas da tabela

69
Academia ABAP – Suporte a Clientes

4º - Salvar

3º - Verificar as inconsistências

1º - Informar o tipo de Dados que a tabela irá


armazenar

2º - Informar o tamanho previsto da tabela

70
Academia ABAP – Suporte a Clientes

Salvando e ativando a tabela

Após definir e salvar as opções técnicas


só falta salvar e ativar a tabela

1º - Verificar as 2º - Não havendo


inconsistências inconsistências ative a tabela

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

2 - Altere a tabela criada trocando os elementos de dados Standard por elementos


desenvolvidos por você.

72
Academia ABAP – Suporte a Clientes

Atualizador Automático de Tabela


É a maneira mais simples de inserir e modificar dados em uma tabela do Data
Dictionary.

Este recurso é muito utilizado para pequenos cadastros de dados em tabelas de


parametrizações (configurações) de algumas transações ou tabelas de verificação
para o domínio de determinado campo.

73

Você também pode gostar