Você está na página 1de 239

5/21/2018 AcademiaSAPAbap_Interna-slidepdf.

com

ACADEMIA INTERNA
ABAP / SAP R3

http://slidepdf.com/reader/full/academia-sap-abapinterna 1/239
Cronograma
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Introdução SAP R/3


• Dicionário de Dados*
• Programação
• Relatórios
•  ALV*
• On Line*
• Batch-Input/Call Transaction*
• SapScript*
• Exits

* exercícios
http://slidepdf.com/reader/full/academia-sap-abapinterna 2/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

INTRODUÇÃO SAP R/3

www.softtek.com.br   3
http://slidepdf.com/reader/full/academia-sap-abapinterna 3/239
3
Objetivos
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• O que é SAP R/3


• Funcionais e Basis Components
•  Arquitetura

• Projetos
• Navegação

http://slidepdf.com/reader/full/academia-sap-abapinterna 4/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

O que é o  SAP R/3?

http://slidepdf.com/reader/full/academia-sap-abapinterna 5/239
SAP - R/3
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Gestão Empresarial - ERP


• Integração
•  Acesso a informação em tempo real e segura

• Tomada de decisão
• Evolução e melhorias constantes

http://slidepdf.com/reader/full/academia-sap-abapinterna 6/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Funcionais e Basis
  Components

http://slidepdf.com/reader/full/academia-sap-abapinterna 7/239
Funcionais e Basis Components
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Soluções integradas SD
Vendas e
FI
Contabilidade
Funcionalidades
Distribuição Financeira sofisticadas
MM CO
Gerenc.de Controladoria
Materiais
PP AM
Plan. da Ativos. Fixos
Arquitetura Produção
Desenhado

R/3
Cliente/Servidor tipopara todo
de negócios
QM
Controle de
Cliente / Servidor PS
Sistemas
abertos
Qualidade
ABAP/4 Gerenc. de
Projetos
PM
Manutenção
OC
Comunicação
Multinacional
da Planta
HR IS
Recursos Solucões
Humanos Setoriais

Modelo de dados
empresariais

http://slidepdf.com/reader/full/academia-sap-abapinterna 8/239
Sistema R/3
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 Sales & Distribution


gerenciamento : A de
integrado solução
todascompleta paravendas,
tarefas para o
faturamento e expedição.
 Materials Management : O processo completo de compras,
com suporte integrado de resultados e planejamento de
produção.
 Production Planning : O sistema de PCP ajustável para
todos os tipos de produção com suporte integrado de
resultados e do gerenciamento de compras.
 Quality Management : O sistema para o controle da
qualidade assegurada em todas as áreas da cadeia
logística.
 Plant Maintenance : A solução independente de indústria
para a administração da manutenção de sistemas
produtivos.

http://slidepdf.com/reader/full/academia-sap-abapinterna 9/239
Sistema R/3
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 Human Resources Management : Desde o


processamento integrado de administração RH,
gerenciamento de tempo e despesas de viagens até
a folha de pagamento.
 Human Resources Planning : Planejamento
organizacional, posicionamento, desenvolvimento
educacional e controle do custo de pessoal em um
sistema totalmente integrado. 

http://slidepdf.com/reader/full/academia-sap-abapinterna 10/239
Sistema R/3
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 Financial Accounting: Uma ampla visão do desempenho


que inclui gerenciamento de caixa, banco eletrônico,
controladoria financeira, orçamento de caixa e
consolidação. 
 Controlling: Contabilidade de custos, desde a
contabilidade de centros de custos e de elementos de
custos até a análise de lucratividade.
 Asset Management : O gerenciamento completo de todos
os ativos fixos, desde da contabilidade tradicional de ativos
e gerenciamento técnico de ativos até a controladoria de
investimentos.
 Project Information System : A integração de todas as
áreas de serviços
processamento para o planejamento
e controle .  de projetos,

 Executive Information System (EIS) :  Acesso rápido aos


dados, fatos e representações gráficas para decisões
gerenciais. 

http://slidepdf.com/reader/full/academia-sap-abapinterna 11/239
Estrutura Organizacional
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Grupo de empresas 001

Sociedade 0001 0002

Organização de
compras 1000 2000 3000

Centro 0001 0002 0003 0004 0005

WM
 Armazém 0001 0002 0088

http://slidepdf.com/reader/full/academia-sap-abapinterna 12/239
Módulo FI e suas funções
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FI-GL Contabilidade Geral


FI-AP
Contas a Pagar 

FI-AR
Contas a Receber 

FI-FC
Controlling Financeiro 

FI-FM
Gestão Orçamentária 

FI-LC
Consolidação 

FI-FI  Ativos Financeiros

http://slidepdf.com/reader/full/academia-sap-abapinterna 13/239
Contabilidade Empresarial 
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CCA
Contab. JOB 
 
Centros Ordens
MM Fornecedores FI Custos de
Custos

SD Clientes FI Contabilidade Geral PCB  PM-


PP
Custos

HR Pessoal de
Projetos PC  
Custo de
 AM  Ativos Produtos

Consolidação PA 
MM Materiais Ledgers  Análise de
Rentabilidade

Base Dados Documentos


http://slidepdf.com/reader/full/academia-sap-abapinterna 14/239
Contas a Pagar
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

MM CO

EDI Pedido de Fornecedor


Qualificação
Pagtos EDI
compra
de fornecedor
Estatísticas

Recebto.  Antecipações
Promissórias
Pagtos.
 Auditoría
Fatura parciais Recebto.

Compensação
Gestão e prevenção de
tesouraria Relatórios Pagtos
Correspondência
Previsão de Cheque
Cálculo de cobrança e pagto.
interesses Registro de moeda  Transferência
Rankings
Cartas a forn.
Compensação
Confirmação
de saldos Letras
Pagar

http://slidepdf.com/reader/full/academia-sap-abapinterna 15/239
Gestão de Materiais - Processo de Abastecimento
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Planejamento
Pedidos Fatura de necesidades

Planejamento
 Verificação de faturas
Fornecedor

Contrato marco
Gestão de
Materiais  Associação de fonte aquisição

Entrada de mercadoria
e gestão de estoques

Follow-up de Pedidos Seleção de fornecedores

Gestão de Pedidos

http://slidepdf.com/reader/full/academia-sap-abapinterna 16/239
Logística - R/3
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

PP PM
Plano de Vendas Planej, Produção Planej. Paradas
Cliente Manutenção
SD
MRP
 Vendas QM
Distribuição
Faturamento Planej. Capacidade
Planej. Inspeção
Controle Gestão de inspeção
Provedor MM de produção
CAD CAM CAP CAQ PP-
Compras SFC
Gestão de Estoques
 Verif. Facturas Controle em planta
Custo de Produtos PDC

FI Contabil. CO Contabilid. AM  Ativos HR Recursos


Financeira de Custos Fixos Humanos

http://slidepdf.com/reader/full/academia-sap-abapinterna 17/239
Recursos Humanos
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FI / CO
Contabilidade Financeira / Analítica

Gastos de Viagens Salários

Organizacão de
Rec. Humanos

Datos Mestres
de Pessoal
HR Planejamento
Rec. Humanosde
Control de custos
de Rec. Humanos

Relatórios Gestão
estatísticas de Tempos

PP PM
Controle e planejamento Manutenção
de produção

http://slidepdf.com/reader/full/academia-sap-abapinterna 18/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 
ABAP ? 

http://slidepdf.com/reader/full/academia-sap-abapinterna 19/239
ABAP
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 A dvanced
B usiness
 A pplication
P rogramming
/
4

http://slidepdf.com/reader/full/academia-sap-abapinterna 20/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Arquitetura

www.softtek.com.br   21
21
http://slidepdf.com/reader/full/academia-sap-abapinterna 21/239
 Arquitetura em 3 camadas
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Presentation Server

Application Server

Banco de Dados
R/3

http://slidepdf.com/reader/full/academia-sap-abapinterna 22/239
Logon Balancing
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Banco de Dados
R/3

http://slidepdf.com/reader/full/academia-sap-abapinterna 23/239
Servidores
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Servidor Servidor Servidor


DV4 QA4 PR4

 Ambiente de  Ambiente de  Ambiente de


desenvolvimento consolidação produção

http://slidepdf.com/reader/full/academia-sap-abapinterna 24/239
Mandantes
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Mandante
003

Servidor
DVL

Mandante
120

http://slidepdf.com/reader/full/academia-sap-abapinterna 25/239
Request‟s
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 Ambiente de desenvolvimento: client 200

Request

Task

http://slidepdf.com/reader/full/academia-sap-abapinterna 26/239
Transporte
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Servidor Servidor Servidor


DV4 QA4 PR4

 Ambiente de  Ambiente de  Ambiente de


desenvolvimento consolidação produção

http://slidepdf.com/reader/full/academia-sap-abapinterna 27/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Projetos

www.softtek.com.br   28
28
http://slidepdf.com/reader/full/academia-sap-abapinterna 28/239
Fases
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Levantamento - BC
• Modelagem dos processos atuais
• Como deverão ser os processos - BC

• Customização
• Desenvolvimentos - BC
• Validação - BC

• Testes individuais/integrados - BC
• Produção - BC
• Melhorias - BC

http://slidepdf.com/reader/full/academia-sap-abapinterna 29/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Navegação 

www.softtek.com.br   30
30
http://slidepdf.com/reader/full/academia-sap-abapinterna 30/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

DICIONÁRIO DE DADOS

www.softtek.com.br   31
31
http://slidepdf.com/reader/full/academia-sap-abapinterna 31/239
Objetivos
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• O que é dicionário de dados


• Elementos do dicionário de dados
• Como utilizar o dicionário de dados

• Levantamento de informações no R/3

http://slidepdf.com/reader/full/academia-sap-abapinterna 32/239
Dicionário de Dados
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Integração
• Gerenciamento de Dados
 –  Atribuição
 – Descrição e Significado

•  Ativação dos Dados

Banco de Dados
R/3

http://slidepdf.com/reader/full/academia-sap-abapinterna 33/239
5/21/2018
Tabela AcademiaSAPAbap_Interna-slidepdf.com

Tabela

Campo 1 Campo 2 Campo 3 Campo 4


DICIONÁRIO ABAP/4
DEFINIÇÃO LÓGICA DA TABELA

Tabela
Campo 1 Campo 2 Campo 3 Campo 4

BANCO DE DADOS
DEFINIÇÃO FÍSICA DA TABELA

http://slidepdf.com/reader/full/academia-sap-abapinterna 34/239
Dicionário ABAP/4
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Tabela 1
Campo 1 Campo 2 Campo 3 Campo 4 Campo 5

Tabela 2 Tabela “n” 


Campo 1 Campo 2 Campo 2 Campo 3 Campo 5

“DB UTILITY” 

• Sistema de gerenciamento de banco de dados Banco de Dados R/3


relacional Tabela 1 Tabela 2 Tabela “n” 

• Dados trabalhados via SQL

http://slidepdf.com/reader/full/academia-sap-abapinterna 35/239
Elementos do Dicionário de Dados
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Tabelas - armazenam dados


• Estruturas - não armazenam dados
• Visões - join de tabelas e restrição de campos

• Campos
• Elementos de dados
• Domínios

•  Ajuda de pesquisa

http://slidepdf.com/reader/full/academia-sap-abapinterna 36/239
Integração do Dicionário de Dados
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 AMBIENTE DE DESENVOLVIMENTO
Ferramentas Modelagem Telas
de Dados

Banco de Dados
R/3

Interpretador Controle de Interfaces Módulos


Diálogo
 AMBIENTE DE EXECUÇÃO DA APLICAÇÃO

http://slidepdf.com/reader/full/academia-sap-abapinterna 37/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Tabelas

www.softtek.com.br   38
38
http://slidepdf.com/reader/full/academia-sap-abapinterna 38/239
Elemento de Dados e Domínios
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Banco de
Dados R/3 Tabela

Campo

Utiliza

Definição Semântica  Elemento de Dados


Utiliza

Definição Técnica  Domínio

http://slidepdf.com/reader/full/academia-sap-abapinterna 39/239
Generalizando
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Tabela 1 Tabela 2 Tabela 3 Tabela 4 Tabela 5

Elemento de Dados 1 Elemento de Dados 2 Elemento de Dados 3

Domínio

http://slidepdf.com/reader/full/academia-sap-abapinterna 40/239
Foreign Key
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Table T1
Field 1 Field 2 Field 3 Field 4
Foreign Key Field
Primary Key

Table T2 (check table)


Field A Field B Field C Field D

Primary Key

http://slidepdf.com/reader/full/academia-sap-abapinterna 41/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Estruturas
As estruturas possuem os mesmos elementos das tabelas mas
não armazenam dados. Só estão preenchidas em run-time.

http://slidepdf.com/reader/full/academia-sap-abapinterna 42/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Visões

www.softtek.com.br   43
43
http://slidepdf.com/reader/full/academia-sap-abapinterna 43/239
Visões
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

View

Tabela 1 Tabela 2 Tabela “n” 

Banco de
Dados R/3

http://slidepdf.com/reader/full/academia-sap-abapinterna 44/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Trabalhando com a SE11

http://slidepdf.com/reader/full/academia-sap-abapinterna 45/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Click to edit Master title style

Levantamento de Informações

46
www.softtek.com.br   46
46
http://slidepdf.com/reader/full/academia-sap-abapinterna 46/239
Funções
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• F1 - Ajuda (Help)

• F9 - Informação técnica

http://slidepdf.com/reader/full/academia-sap-abapinterna 47/239
Exercício
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

1. Criar uma tabela Z no dicionário de dados, com o nome ZTESTE_001.

Layout :
- DOCUMENTO chave numérico 10
- ITEM chave numérico 05
- TEXTO alfa 40
- MATERIAL numérico 06
- QUANTIDADE numérico 04
- PRECO_UNITARIO numérico 15(02)
- PRECO_TOTAL numérico 15(02)

• Os desenvolvimentos devem ser amarrados em uma mesma request. A descrição


da request deve começar por : “TREIN ABAP ???? - ... “ 
???? : Iniciais do nome, para identificar o usuário.
• Os elementos de dados e seus domínios devem ser criados. Objetos Z.

http://slidepdf.com/reader/full/academia-sap-abapinterna 48/239
Exercício - continuação
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

2. Preencher manualmente a tabela criada, com os registros abaixo, via diálogo


de atualização (SE11/SM30).

Documento Item Texto Material Qtde Preço Preço


Unit Tot
1000000001 00001 Documento teste 001 900001 0010 10,00
1000000001 00002 Documento teste 001 900002 0012 12,00
1000000002 00001 Documento teste 001 900001 0009 100,00
1000000002 00002 Documento teste 001 900003 0020 25,00 500,00
1000000002 00003 Documento teste 001 900003 0009 50,00

http://slidepdf.com/reader/full/academia-sap-abapinterna 49/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

PROGRAMAÇÃO

http://slidepdf.com/reader/full/academia-sap-abapinterna 50/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

SE38/SE80 - Navegação

http://slidepdf.com/reader/full/academia-sap-abapinterna 51/239
Criando um novo programa
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Tipos de progamas possíveis

• Estrutura geral de um programa abap

http://slidepdf.com/reader/full/academia-sap-abapinterna 52/239
Declaração de tabelas
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Tabelas do dicionário de dados


TABLES : tabela01, tabela02, … . 

Tabelas internas

DATA: BEGIN OF t_tabela01 OCCURS 0,


campo1(16) TYPE c,
campo2 LIKE tabela01-campo,
...
END OF t_tabela01.

DATA: BEGIN OF t_tabela02 OCCURS 0.


INCLUDE STRUCTURE tabela02.
DATA: END OF t_tabela02. 

http://slidepdf.com/reader/full/academia-sap-abapinterna 53/239
Como funciona o Header Line
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Header Line

1001 ABC A90S 23,00 Registros da Tabela


1002 DEF J82J 02,03
2003 GHI KK89 00,01

Obs.: os registros são trabalhados no Header e posteriormente


levados à tabela.

http://slidepdf.com/reader/full/academia-sap-abapinterna 54/239
Declaração de estrutura
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Estrutura
DATA: BEGIN OF e_tabela01,
campo1(16) TYPE c,
campo2 LIKE tabela01-campo,
...
END OF e_tabela01.

DATA: BEGIN OF e_tabela02.


INCLUDE STRUCTURE tabela02.
DATA: END OF e_tabela02. 

1001 ABC A90S 23,00 Estrutura

Obs.: a estrutura é criada apenas em tempo de execução, nunca


gravada.

http://slidepdf.com/reader/full/academia-sap-abapinterna 55/239
Declaração de variáveis
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Variávieis

- Por referência a outro campo de tabela já existente :

DATA: variavel01 LIKE tabela01-campo01.

- Pelo tipo que queremos :


DATA: variavel02(04) TYPE i.

- Uma variável com a estrutura de outra :

DATA: variavel03 LIKE tabela02.

http://slidepdf.com/reader/full/academia-sap-abapinterna 56/239
Tipos de dados
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Tipos

I -> inteiro (4 bytes c/ sinal)


N -> numérico (só números)
P -> compactado
F -> ponto flutuante
C -> caracter
D -> data (AAAAMMDD)
T -> hora (HHMMSS)
X -> hexadecimal (sequência de bytes)

Obs.: se não for atribuído tipo a variável, esta será definida como
caracter, automáticamente.

http://slidepdf.com/reader/full/academia-sap-abapinterna 57/239
Tela de seleção
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 58/239
Tela de seleção
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME TITLE 


  text-001.
SELECT-OPTIONS: s_period FOR sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.

SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME TITLE text-002.


SELECT-OPTIONS: s_pernr FOR pa0000-pernr, “Crachá 
...
SELECTION-SCREEN END OF BLOCK bloco2.

SELECTION-SCREEN: BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-014.


SELECT-OPTIONS: s_tipo FOR zthrvrub-tipo NO INTERVALS,
s_awart FOR pa2001-awart NO INTERVALS. "Ausência
SELECTION-SCREEN: END OF BLOCK bloco3.

http://slidepdf.com/reader/full/academia-sap-abapinterna 59/239
Tela de seleção
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

SELECTION-SCREEN BEGIN OF BLOCK  bloco4 WITH FRAME TITLE 


 text-032.
PARAMETERS: p_data LIKE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco4.

SELECTION-SCREEN BEGIN OF BLOCK BLOCO5 WITH FRAME TITLE TEXT-033.

SELECTION-SCREEN BEGIN OF LINE.


PARAMETERS: P_FAB RADIOBUTTON GROUP RADI.
SELECTION-SCREEN COMMENT 5(30) TEXT-034
FOR FIELD P_FAB.
SELECTION-SCREEN END OF LINE .

SELECTION-SCREEN BEGIN OF LINE.


PARAMETERS: P_CD RADIOBUTTON GROUP RADI.
SELECTION-SCREEN COMMENT 5(30)
FOR FIELD TEXT-035
P_CD.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK BLOCO5.

SELECTION-SCREEN SKIP 1. O comando SKIP pula o número de linhas identificado 

SELECTION-SCREEN ULINE. O comando ULINE imprime uma linha contínua 

http://slidepdf.com/reader/full/academia-sap-abapinterna 60/239
Eventos de um programa Abap
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

INITIALIZATION: Onde se pode setar variáveis e preencher


atributos ao se inicializar o programa.

START-OF-SELECTION: Corpo principal do programa. Onde as


seleções de dados são feitas e informações
trabalhadas.

END-OF-SELECTION: Não é obrigatório, mas costuma-se utilizar

este ponto para


finalização impressão de relatórios e
do processo.

TOP-OF-PAGE: Este evento se processa antes do primeiro


dado ser impresso em cada página. Pode ser
usado como cabeçalho, em companhia do
NO STANDARD PAGE HEADING.
END-OF-PAGE: Este evento ocorre quando se ultrapassa o
número de linhas da página corrente.
Ou quando se passa de uma página à outra.

http://slidepdf.com/reader/full/academia-sap-abapinterna 61/239
Comandos básicos IF
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF

-IF… ENDIF. 
Este comando permite que se desvie o fluxo do programa, dependendo da condição . Para
encerrar usa-se: ENDIF, pode-se ainda ELSEIF e ELSE. O programa só irá executar a condição
correta.

IF <condição> . 
… 
ENDIF.

Exemplo: IF VBAP-VBELN IS INITIAL.


MESSAGE E001(ZSSI).
ENDIF.
-IF... ELSE... ENDIF.

IF <condição> . 
… 
ELSE.
… 
ENDIF.

Exemplo.: IF VBAP-VBELN is INITIAL.


MESSAGE E001(ZSSI).
ElSE.
MOVE VBAP-VBELN TO W_VBELN.
ENDIF.

http://slidepdf.com/reader/full/academia-sap-abapinterna 62/239
Comandos básicos IF
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

-IF …ELSEIF…ELSEIF…ENDIF.  

IF <condição1> . 
… 
ELSEIF <condição2> . 
...
ELSEIF <condição3> . 
...
ENDIF.

Exemplo.: IF VBAP-VBELN is INITIAL.


MESSAGE E001(ZSSI).
ElSEIF not VBAP-VBELN is INITIAL .
MOVE VBAP-VBELN TO W_PERNR.
ELSEIF not VBAP-VBELN is INITIAL AND
W_VBELN is INITIAL.
MOVE VBAP-VBELN TO W_VBELN.
ENDIF.

http://slidepdf.com/reader/full/academia-sap-abapinterna 63/239
Comandos básicos LOOP
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

LOOP

-LOOP …ENDLOOP.  

LOOP AT <itab>.
… 
… 
… 
ENDLOOP.

LOOP AT <itab> WHERE <condição>.


… 
… 
… 
ENDLOOP.

http://slidepdf.com/reader/full/academia-sap-abapinterna 64/239
Comandos básicos CASE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CASE

-CASE …ENDCASE. 
É um controle baseado em índice de objeto de dados. Este controle deve ser concluído
com ENDCASE.
CASE <f>.
WHEN <f 01> [OR <f 02> OR ...].
...
WHEN <f 03>.[OR <f 04> OR ...]
...
WHEN <f 05> [OR <f 06> OR ...].
...
WHEN ...
...
WHEN OTHERS.
...
ENDCASE.

Exemplo: CASE W_DATA(02).


When ‘01’. 
W_DATA = W_DATA + 1.
When ‘02’. 
W_DATA = W_DATA + 2.
When others.
Clear W_DATA.
ENDCASE.

http://slidepdf.com/reader/full/academia-sap-abapinterna 65/239
Comandos básicos DO
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

DO

-DO …ENDDO. 
Repete o processamento que está dentro de DO e ENDDO.
Terminando com os comandos
Pode usar CONTINUE, EXIT, STOP
para terminar e REJECT.
o passo do DO e continuar o passo seguinte.

DO < n > TIMES.


...
ENDDO.

Exemplo1:
DO 10 TIMES.
IF VBAK-VBELN eq VBAK-VBELN.
W_VBELN = VBAK-VBELN.
ENDIF.
ENDDO.

Exemplo2:
DO.
IF VBAK-VBELN is INITIAL.
EXIT.
ELSEIF VBAK-VBELN in P_VBELN.
CONTINUE.
ENDIF.
ENDDO.

http://slidepdf.com/reader/full/academia-sap-abapinterna 66/239
Comandos básicos   WHILE / CHECK
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 WHILE

-WHILE …ENDWHILE . 
 
Repete o processamento que está dentro de WHILE e ENDWHILE, se a expressão é verdadeira.
A cada
Pode passagem
usar a expressão
CONTINUE é verificada.
, para terminar o passo do WHILE e continuar o passo seguinte.

WHILE expressão.
… 
… 
ENDWHILE.

Exemplo:
WHILE W_WRITE <= 10.
WRITE: / TEXT-001.
W_WRITE = W_WRITE + 1.
ENDWHILE.

CHECK

- CHECK
Para encerrar uma sub-rotina usa-se, frequentemente, ENDFORM.
Podemos terminar antes, usando os comandos EXIT e CHECK.
Se a expressão lógica estabelecida no CHECK for falsa, a sub-rotina será encerrada.
Se a expressão CHECK for aplicada a um LOOP, encerra-se o LOOP.

CHECK SY-SUBRC = 0.

http://slidepdf.com/reader/full/academia-sap-abapinterna 67/239
Comandos básicos   MOVE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 MOVE

 MOVE
-

MOVE <c1> TO <c2> .


<c4> = <c3> = <c1>

-MOVE utilizando tabela interna

MOVE <itab1> TO <itab2>.

<itab2> = <itab1>

A citação acima tem o mesmo efeito que <itab2> = <itab1>.

 MOVE-CORRESPONDING
-

Este comando move os campos idênticos de uma estrutura para outra.

MOVE-CORRESPONDING <struct1> TO <struct2>.

http://slidepdf.com/reader/full/academia-sap-abapinterna 68/239
Comandos básicos   WRITE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
 WRITE

-WRITE
É comum os campos saírem justificados a esquerda. Os campos numéricos são alinhados a
direita.
Exemplos:
WRITE <f>.
WRITE: /TEXT-001, TEXT-002, TEXT-003+2(8).
WRITE: /002 TEXT-004.

Opções:
... NO-ZERO.
... NO-SIGN.
... DD/MM/YY.
... MM/DD/YY.
... DD/MM/YYYY.
... MM/DD/YYYY.
... DDMMYY.
... CURRENCY w.
... DECIMALS d.
... ROUND R.
... UNIT u.
... USING EDIT MASK mask.
... UNDER g.
... NO-GAP.
... LEFT-JUSTIFIED.
... CENTERED.
... RIGHT-JUSTIFIED.

http://slidepdf.com/reader/full/academia-sap-abapinterna 69/239
Comandos básicos   CLEAR/SKIP/ULINE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
CLEAR

-CLEAR
Reseta o valor da variável. Também aplica-se a estruturas e tabelas, limpando o header line,
mas
Se anão interferindo
variável nos dados –volta
for alfanumérica,  no caso de branco.
a ser tabelas.Se for numérica, retorna a zero.

Exemplos:
CLEAR <var1>.
CLEAR <t_tab1>. “limpa o header line da tabela  

SKIP

-SKIP n
Realiza o salto de linhas. A variável n identifica a quantidade de linhas a ser pulada.

Exemplos:
SKIP. “Irá pular 1 linha – mesmo efeito que SKIP 1
SKIP 10. “Irá pular 10 linhas  

ULINE

-ULINE
Imprime uma linha corrente.

Exemplos:
ULINE. “Imprime linha corrente da largura da página
ULINE /35(50). “Linha começará na posição 35 e terá comprimento  
de 50 bytes

http://slidepdf.com/reader/full/academia-sap-abapinterna 70/239
Comandos básicos   Comentários
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
COMENTÄRIOS

Algumas das formas como podemos documentar um programa ABAP.

* -> um asterisco na frente da linha, já serve para comenta-lá toda.


“ -> a aspas dupla, na mesma linha do código, serve para comentar dali para frente.

Exemplos:
* IF t001-text IS INITIAL.
* ADD 1 TO w_number.
* ENDIF.

IF t001-text IS INITIAL.
continue. “Comando para sair do Loop atual  
ENDIF.

http://slidepdf.com/reader/full/academia-sap-abapinterna 71/239
Comandos básicos   FORM/PERFORM
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
FORM

-FORM … ENDFORM.  
Define uma subrotina dentro do programa ABAP. Pode ser executada a qualquer momento, dentro
do programa.
Exemplos:
FORM f_leitura_bseg.
Instruções.
EDFORM.
Opções:
FORM <nome_form> USING p_variavel_referencia
CHANGING p_variavel_valor
TABLES p_tabela.
Instruções
ENDFORM.

PERFORM

-PERFORM
Executa chamadas de subrotinas do programa ABAP.

Exemplos:
PERFORM f_leitura_bseg.
Opções:
PERFORM <nome_form> USING v_variavel_referencia CHANGING v_variavel_valor
TABLES t_tabela.

http://slidepdf.com/reader/full/academia-sap-abapinterna 72/239
Tabela interna   Limpeza e Inicialização
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
CLEAR

-CLEAR
Limpa/Inicializa a header line da tabela interna.

Exemplo:
CLEAR t_tabela01.

REFRESH

-REFRESH
Este comando limpa os dados da tabela interna. Não libera a memória carregada.

Exemplo:
REFRESH t_tabela01.

FREE

-FREE
Este comando apaga os dados da tabela interna, liberando a memória onde ela estava
carregada.

Exemplo:
FREE t_tabela01.

Tabela interna – READ / Leitura


http://slidepdf.com/reader/full/academia-sap-abapinterna 73/239
Tabela interna   READ / Leitura
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
READ

-READ… 
Realiza a leitura de dados de uma tabela interna.

READ TABLE <table01> WITH KEY …  

READ TABLE <table02> INDEX …  

Exemplos:
READ TABLE table01 WITH KEY nome = w_nome. “Busca por campo específico  

READ TABLE table02 INDEX w_index. “Busca por posição do registro  

SY-SUBRC

-SY-SUBRC
É um campo de sistema, que retorna o resultado do último comando processado.
Se estiver abaixo de um READ, retorna a condição de processamento do mesmo. Se SY-SUBRC = 0,
Significa que foi processado corretamente. Diferente disso, ERRO.

Exemplos:
READ TABLE table WITH KEY nome = w_nome.

IF sy-subrc <> 0.
WRITE: /001 ‘Erro na leitura do arquivo…’.  
ENDIF.

Tabela interna – APPEND / Gravando


http://slidepdf.com/reader/full/academia-sap-abapinterna 74/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
 APPEND

-APPEND
Para incluir novos registros na tabela interna.

APPEND <table01>.

Exemplos:
CLEAR table01. “Limpa a header line da tabela  
table01- nome = ‘Jose’.  
table01-cracha = v_cracha.
table01- situacao = ‘Ativo’.  
APPEND table01. “Insere o registro na tabela table01  

APPEND I_BKPF

BUKRS GJAHR BELNR BUDAT


5510 1999 72000001555 25.10.1999

5510 1999 72000001554 25.10.1999

5510 1999 72000001553 25.10.1999


5510 1999 72000001552 25.10.1999

Tabela interna – MODIFY/DELETE
http://slidepdf.com/reader/full/academia-sap-abapinterna 75/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
 MODIFY

-MODIFY
Comando para alterar registro de uma tabela interna.

MODIFY <itab>.

Exemplos:
MODIFY t_tabela01.

Opções:
MODIFY t_tabela02 INDEX sy-index.

DELETE

-DELETE
Comando para deleção de registro de uma tabela interna.

DELETE <itab>.

Exemplos:
DELETE t_tabela01.
Opções:
DELETE t_tabela02 INDEX sy-index.
DELETE t_tabela03 WHERE cracha = 3005.
DELETE t_tabela04 FROM 3 to 5.

Tabela interna – COLLECT
http://slidepdf.com/reader/full/academia-sap-abapinterna 76/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
COLLECT

-COLLECT <itab01>.
Este comando também insere registros na tabela interna. A particularidade é que, ele analisa
os campos alfanuméricos. Estes sendo iguais, ele realiza a soma dos campos numéricos.

 NAME PRICE

LH 100000

AR 50000

FL 10000000

LH 50000 150000

Soma os campos numéricos

Tabela interna – SORT/DESCRIBE
http://slidepdf.com/reader/full/academia-sap-abapinterna 77/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
SORT

-SORT
Comando utilizado para se sortear a tabela interna.

SORT <itab>.

Exemplos:
SORT t_tabela01.

Opções:
SORT t_tabela02 BY campo2 campo3.
SORT t_tabela03 BY campo4 ASCENDING campo5 DESCENDING.

DESCRIBE

-DESCRIBE
Comando para gerar informações sobre determinada tabela interna.

DESCRIBE TABLE <itab> LINES …  

Exemplos:
DESCRIBE TABLE t_tabela01 LINES LINHAS “Nº linhas preenchidas  
OCCURS OCORRENCIA. “Nº ocorrências na def. da tabela  

Obs.: As variáveis utilizadas para se obter o resultado (LINHAS/OCORRENCIA) devem ser


definidas com tipo inteiro (I).

Tabela DB SAP - SELECT


http://slidepdf.com/reader/full/academia-sap-abapinterna 78/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
SELECT

-SELECT
Comando SQL utilizado para leitura das informações de uma tabela do banco de dados SAP.
Possui diversas variações.
-Select de todos os campos de uma tabela .

SELECT * FROM <tabelaSAP>.


instruções.
ENDSELECT.

Obs.: O comando SELECT em si, pede um ENDSELECT para fechá-lo. Em algumas variações isto não
se faz necessário.
Esta variação não é um modo eficiente para acesso ao banco. Não indicado, mesmo com
inclusão da clausula WHERE.

-Select para variáveis.

SELECT campo1 campo2 campo3 … INTO (var01, var02, var03, …)  


FROM <tabelaSAP>
WHERE <condição>.

-Select inserindo em uma tabela interna.

SELECT <campos> INTO TABLE <t_tabela01>


FROM <tabelaSAP>
WHERE <condição>.

Tabela DB SAP - SELECT


http://slidepdf.com/reader/full/academia-sap-abapinterna 79/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
-Select inserindo dados em determinados campos de uma tabela interna.

SELECT <campos> INTO CORRESPONDING FIELDS OF TABLE <t_tabela01>


FROM <tabelaSAP>
WHERE <condição>.
-Select inserindo dados em uma tabela, usando como base os dados de outra já preenchida.

SELECT <campos> INTO TABLE <t_tabela02>


FROM <tabelaSAP>
FOR ALL ENTRIES IN <t_tabela01>
WHERE <condição>.

Obs.1: Se ao buscar os registros com FOR ALL ENTRIES, e dois registros forem iguais, o
sistema só irá trazer um. Portanto CUIDADO com este tipode select. Sempre buscar um
campo que garanta a unicidade dos dados.

Obs.2: Sempre verificar se a tabela interna, de referência< tabela interna1>, contêm dados
e os mesmo estejam ordenados.

Tabela DB SAP - SELECT


http://slidepdf.com/reader/full/academia-sap-abapinterna 80/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
-Select para buscar apenas um registro específico.

SELECT SINGLE <campos> INTO TABLE <t_tabela01>


FROM <tabelaSAP>
WHERE <condição>.
Obs.: Para o uso do SELECT SINGLE, deve-se utilizar a chave completa da tabela. Se não
possuir as chaves todas, utilizar a opção UP TO 1 ROWS.

SELECT <campos> INTO TABLE <t_tabela01>


FROM <tabelaSAP>
UP TO 1 ROW
WHERE <condição>.
ENDSELECT.
-Select com range de valores.

SELECT <campos> INTO TABLE <t_tabela01>


FROM <tabelaSAP>
WHERE <campo> BETWEEN <valor1> AND <valor2>.

-Select em um intervalo de valores

SELECT <campos> INTO TABLE <t_tabela01>


FROM <tabelaSAP>
WHERE <campo> IN (valor_mínimo,valor_máximo).

Tabela DB SAP - INSERT


http://slidepdf.com/reader/full/academia-sap-abapinterna 81/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
INSERT

-INSERT
1.Insere registros na tabela do dicionário.

INSERT INTO <tabelaSAP> [ FROM ][ VALUES ] <estrutura>.

Exemplos:
TABLES: SPFLI. Grava os valores da estrutura WA
na tabela SPFLI.
DATA: WA LIKE SPFLI.

WA-CARRID = 'LH'.
WA-CITYFROM = 'WASHINGTON'.
… 
INSERT INTO SPFLI VALUES WA.

WA-CARRID = 'UA'. Mesmo feito do comando


WA-CITYFROM = 'LONDON'. acima.
… 
INSERT SPFLI FROM WA.

Tabela DB SAP - INSERT


http://slidepdf.com/reader/full/academia-sap-abapinterna 82/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
INSERT

2.Insere registros na tabela do dicionário, a partir de uma tabela interna.

INSERT INTO <tabelaSAP> FROM TABLE <t_tabela01> [ ACCEPTING DUPLICATE KEYS ].


Exemplos:
TABLES: SPFLI.

DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.
ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB.

ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.

INSERT SPFLI FROM TABLE ITAB.

Tabela DB SAP - UPDATE


http://slidepdf.com/reader/full/academia-sap-abapinterna 83/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
UPDATE

-UPDATE
1.Modifica registros na tabela do dicionário. Um registro por vez.

UPDATE <tabelaSAP> [ FROM <estrutura> ].

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.

MOVE 'AA' TO WA-CARRID.


MOVE '0064' TO WA-CONNID.
MOVE 'WASHINGTON' TO WA-CITYFROM.
… 
UPDATE SPFLI FROM WA.

MOVE 'LH' TO SPFLI-CARRID.


MOVE '0017' TO SPFLI-CONNID.
MOVE 'BERLIN' TO SPFLI-CITFROM.
… 
UPDATE SPFLI.

Tabela DB SAP - UPDATE


http://slidepdf.com/reader/full/academia-sap-abapinterna 84/239
5/21/2018
UPDATE AcademiaSAPAbap_Interna-slidepdf.com

2.Modifica registros na tabela do dicionário. Vários registros por vez.

UPDATE <tabelaSAP> SET <S1> .. <Sn> [ WHERE condição ].


Exemplos:
TABLES: SFLIGHT.
UPDATE SFLIGHT SET PLANETYPE = 'A310'
FLPRICE = FLPRICE - '10000'
WHERE CARRID = 'LH'.

3. Modifica registros na tabela do dicionário, a partir de uma tabela interna.

UPDATE <tabelaSAP> FROM TABLE <t_tabela01>.

Exemplos:
TABLES: SPFLI.

DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.


APPEND ITAB.
ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.
APPEND ITAB.
ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.
APPEND ITAB.
… 
UPDATE SPFLI FROM TABLE ITAB.

Tabela DB SAP - MODIFY


http://slidepdf.com/reader/full/academia-sap-abapinterna 85/239
5/21/2018
 MODIFY AcademiaSAPAbap_Interna-slidepdf.com

-MODIFY
Este comando também altera registros na tabela do dicionário, mas contém uma diferença

importante.
inserido na Com este
tabela docomando, se o registro a ser alterado não for encontrado, ele é
dicionário.
Segue o mesmo esquema do comando UPDATE.

MODIFY <tabelaSAP> [ FROM <estrutura> ].

MODIFY <tabelaSAP> FROM TABLE <t_tabela01>.

Exemplos:
TABLES: SPFLI. TABLES: SPFLI.
DATA: WA LIKE SPFLI. DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

MOVE 'AA' TO WA-CARRID. ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.


MOVE '0064' TO WA-CONNID. APPEND ITAB.
MOVE 'WASHINGTON' TO WA-CITYFROM. ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.
…  APPEND ITAB.
MODIFY SPFLI FROM WA. ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.
APPEND ITAB.
… 
MODIFY SPFLI FROM TABLE ITAB.

Tabela DB SAP - DELETE


http://slidepdf.com/reader/full/academia-sap-abapinterna 86/239
DELETE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

-DELETE
1.Deleta registros da tabela do dicionário.

DELETE <tabelaSAP> FROM <estrutura>.

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.


„Serão deletados os registros na estrutura
MOVE 'AA' TO WA-CARRID. WA, de acordo com os campos chave.
MOVE '0064' TO WA-CONNID.
DELETE SPFLI FROM WA.

2.Deleta registros da tabela do dicionário. Vários registros por vez.

DELETE FROM <tabelaSAP> WHERE <condição>.

Exemplos:
TABLES: SFLIGHT.
DELETE FROM SFLIGHT WHERE PLANETYPE = 'A310' AND
CARRID = 'LH'.

Tabela DB SAP - DELETE


http://slidepdf.com/reader/full/academia-sap-abapinterna 87/239
DELETE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

3. Modifica registros na tabela do dicionário, a partir de uma tabela interna.

DELETE <tabelaSAP> FROM TABLE <t_tabela01>.


Exemplos:
TABLES SPFLI.

DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.
ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB. Os registros são deletados baseando-se
nos campos chave.
ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.

DELETE SPFLI FROM TABLE ITAB.

COMMIT WORK / ROLLBACK WORK


http://slidepdf.com/reader/full/academia-sap-abapinterna 88/239
COMMIT WORK
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Efetiva as operações realizadas nas tabelas para o SAP.


Enquanto o COMMIT não é executado, o SAP trabalha em uma área separada. Só carrega as

modificações para o banco, quando o comando é executado.


ROLLBACK WORK

Desfaz as modificações efetuadas pelo programa, antes de ser executado o COMMIT.


Após a execução do COMMIT, o ROLLBACK não mais consegue desfazer as modificações.
Primeira gravação.
Exemplos:
… 

COMMIT
…  WORK. Deleta registros da tabela.
<instruções>
… 
DELETE FROM bkpf WHERE …  Insere registros na tabela.
… 
<intruções>
… 
INSERT zteste_001 from zteste_001.
Se ocorrer erro na inserção, desfaz tudo
IF sy-subrc <> 0. o que foi feito após o primeiro COMMIT.
ROLLBACK WORK.
continue.
ELSE. Efetiva operações realizadas até este
COMMIT WORK. COMMIT.
ENDIF.

Trabalhando com cadeia de caracteres


http://slidepdf.com/reader/full/academia-sap-abapinterna 89/239
CONCATENATE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Utilizado para concatenar/juntar várias strings em uma só.

CONCATENATE <var1> <var2> … <varN> INTO <varDESTINO> [ SEPARATED BY <carac> ].  

CONDENSE
Utilizado para eliminar os espaços em branco de uma string.

CONDENSE <string> [ NO-GAPS ].

TRANSLATE
Utilizado para transformar os caracteres em maiúsculos ou minúsculos. E também para
converter uma string a partir de outra.

TRANSLATE <string> TO UPPER CASE.


TRANSLATE <string> TO LOWER CASE.  A string utilizada para o TRANSLATE,
STRING2 tem a seguinte instrução :
TRANSLATE <string1> USING <string2>. A  x
b  X
DATA: STRING1 (10) VALUE 'AbCdEfGhIj', C  y
STRING2 (20) VALUE 'AxbXCydYEzfZ'. d  Y
E  z
TRANSLATE STRING1 USING STRING2. f  Z

WRITE / STRING1.

A saída será a seguinte string : xXyYzZGhIj

Trabalhando com cadeia de caracteres


http://slidepdf.com/reader/full/academia-sap-abapinterna 90/239
REPLACE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Substitui o conteúdo de uma string por outra, em uma outra string destino.

Exemplos:

DATA: T(10)
STRING LIKE T,VALUE 'abcdefghij',
STR1(4) VALUE 'cdef',
STR2(4) VALUE 'klmn',
STR3(2) VALUE 'kl',
STR4(6) VALUE 'klmnop'.

STRING = T.
REPLACE STR1 WITH STR2 INTO STRING.
WRITE / STRING.
A saída na string será a seguinte : abklmnghij

STRING = T.
REPLACE STR1 WITH STR3 INTO STRING.
WRITE / STRING.
STRING = T.

A saída na string será a seguinte : abklghij


REPLACE STR1 WITH STR4 INTO STRING.
WRITE / STRING.

A saída na string será a seguinte : abklmnopgh

Trabalhando com cadeia de caracteres


http://slidepdf.com/reader/full/academia-sap-abapinterna 91/239
SEARCH
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Permite que se busque uma string em uma cadeia de caracteres ou em uma tabela interna.

SY-SUBRC = 0, string encontrada.

SY-FDPOS
SY-SUBRC = 4,
, retorna a posição
string não em que foi encontrada.
encontrada.

SEARCH <string> FROM <string_procurada>.

SEARCH <t_tabela01> FOR <string_procurada> [ AND MARK ].

Obs.: No caso de busca em tabela interna, a variável SY-TABIX retorna a linha em que a
string procurada foi encontrada.

STRLEN
Devolve o tamanha da string referenciada.

v_tamanho = STRLEN( ‘IVAN RODRIGO’ ).  

v_tamanho = STRLEN( TEXT-001 ).

http://slidepdf.com/reader/full/academia-sap-abapinterna 92/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

RELATÓRIOS

Formatando listas : Overview


http://slidepdf.com/reader/full/academia-sap-abapinterna 93/239
Comandos de saída/Opções de formatação
5/21/2018 : SAPAbap_Interna-slidepdf.com
Academia
WRITE
FORMAT
NEW-PAGE

Eventos :
TOP-OF-PAGE
END-OF-PAGE

Elementos de texto :
TEXT-SYMBOLS
HEADINGS
SELECTION TEXTS

System fields

Comando WRITE
http://slidepdf.com/reader/full/academia-sap-abapinterna 94/239
 WRITE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Formato de saída dos tipos de dados pré-definidos :

Tipo Dado Tamanho Saída Positioning


C tamanho do campo esquerda
D 8 esquerda
F 22 direita
I 11 direita
N tamanho do campo esquerda
P 2 * tamanho do campo + 1 direita
T 6 esquerda
X 2 * tamanho do campo esquerda

Revendo as opções do comando WRITE:

... NO-ZERO. ... NO-SIGN.


... DD/MM/YY. ... MM/DD/YY.
... DD/MM/YYYY. ... MM/DD/YYYY.
... DDMMYY. ... CURRENCY w.
... DECIMALS d. ... ROUND R.
... UNIT u. ... USING EDIT MASK mask.
... UNDER g. ... NO-GAP.
... LEFT-JUSTIFIED. ... CENTERED.
... RIGHT-JUSTIFIED.

Comando WRITE
http://slidepdf.com/reader/full/academia-sap-abapinterna 95/239
 WRITE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Exemplos:

WRITE: ‘****************’. 

WRITE: ‘Date’, sy-datum.

WRITE: ‘Time’, sy-uzeit.

WRITE: 5 `****************’. 

WRITE: /10 ‘Usuário:’, 30 sy -uname.

SKIP 2.

ULINE.

ULINE /5(40).

V_DATUM = SY-DATUM.
V_UZEIT = SY-UZEIT.

WRITE: 5 ‘Datum’, 20 V_DATUM DD/MM/YYYY. 

WRITE: /10 ‘Time’, 25 V_TIME USING EDIT MASK ‘__:__:__’.  

Comando FORMAT
http://slidepdf.com/reader/full/academia-sap-abapinterna 96/239
FORMAT
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

-Trabalhando com cores.

Opções para se modificar as cores da lista, via comando FORMAT.

1. … COLOR n [ON]   or … COLOR OFF 


2. … INTENSIFIED [ON]  or … INTENSIFIED OFF 
3. … INVERSE [ON]  or … INVERSE OFF 
4. … HOTSPOT [ON]  or … HOTSPOT OFF 
5. … INPUT [ON]  or … INPUT OFF 
6. … RESET 

FORMAT INTENSIFIED OFF.


FORMAT INTENSIFEID.
FORMAT COLOR COL_KEY.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE: /05 V_TOTAL COLOR COL_POSITIVE.

Comando NEW-PAGE / END-OF-PAGE


http://slidepdf.com/reader/full/academia-sap-abapinterna 97/239
 NEW-PAGE
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

O comando NEW-PAGE inicia uma nova página, durante o processamento da lista.


Ele não imprime páginas em branco. Ele as ignora.
O comando incrementa o contador de páginas do sistema – variável SY-PAGNO.
Para ser executado, a opção NO STANDARD PAGE HEADING deve ser colocada no programa.

END-OF-PAGE

O comando é executado sempre a área definida para impressão na página acaba.

LINE-SIZE col com <col> colunas por linha.


Cria o report

LINE-COUNT n(m)
Cria o report com <n> linhas por página, das quais (m) linhas serão reservadas para o
processamento do comando END-OF-PAGE.

 ALGUNS CAMPOS DO SISTEMA PARA CRIAÇÃO DE LISTAS


SY-PAGNO : número da página corrente.
SY-LINNO : número da linha corrente.
SY-COLNO : número da coluna em que o cursor está posicionado.

http://slidepdf.com/reader/full/academia-sap-abapinterna 98/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

ALV

ALV Grid
http://slidepdf.com/reader/full/academia-sap-abapinterna 99/239
• O Alv (Abap List Viewer) Grid é uma ferramenta flexível para
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

exibição de relatórios ou árvore.

•  São disponibilizados botões que permitem ao usuário


manipular os dados (classificar, filtrar e somar).

•  Além dos botões standards do sistema, é possível criar


novos botões conforme a necessidade do usuário.

• Isto pode eliminar certas etapas no processo de

gerenciamento de eventos para controles .

ALV Grid
http://slidepdf.com/reader/full/academia-sap-abapinterna 100/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• O Abap List Viewer padroniza e simplifica o uso de listas e


relatórios no sistema R/3. O Abap List Viewer fornece
interfaces e formatos de lista padronizados para todas as
listas e relatórios.

• Pode-se especificar os campos a serem exibidos no relatório


e modificar a seqüência em que esses campos são exibidos.
 Além disso, pode-se ajustar a largura das colunas
individuais para atender a requisitos específicos.

ALV Grid
http://slidepdf.com/reader/full/academia-sap-abapinterna 101/239
O List Viewer permite :
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Usar variantes de exibição standard predefinidas pela SAP .

• Ordenar os dados : crescente e decrescente.


Ordenar as linhas de acordo com os valores das
colunas, em seqüência crescente ou decrescente.
• Definir um filtro.
Exibir somente os campos desejados.

• Formar totais e subtotais.


Em uma lista, é possível calcular totais e
subtotais de uma ou mais colunas selecionadas.

ALV Grid
http://slidepdf.com/reader/full/academia-sap-abapinterna 102/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• Exibição de informações detalhadas.

Pode-se acessar
individuais informações detalhadas de
da lista. linhas

• Pesquisa.

É possível pesquisar informações específicas.


• Impressão de listas e pré-visualização.
Pode-se imprimir as listas e chamar uma pré- exibição
antes de imprimir.

ALV Grid
http://slidepdf.com/reader/full/academia-sap-abapinterna 103/239
• Exportação de dados.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Pode-se copiar as listas, por exemplo, para uma


planilha ou gravá-las como arquivo local.

• Deslocar colunas.

• O Alv Grid é formado basicamente por :


- Uma barra de ferramenta
- Um título
- Uma lista de saída.

Um programa ALV simples


http://slidepdf.com/reader/full/academia-sap-abapinterna 104/239
• Programa : Z_ALV_SIMPLE.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Estruturas de um programa ALV


http://slidepdf.com/reader/full/academia-sap-abapinterna 105/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

• O programa endereçado no link E x e m p l o A L V 0 1.d o c   


contém as estruturas necessárias para se desenvolver um
programa mais abrangente e formatado.

Exercício
http://slidepdf.com/reader/full/academia-sap-abapinterna 106/239
1.
5/21/2018
Relatório. AcademiaSAPAbap_Interna-slidepdf.com

Criar um relatório
seus itens (BKPF),que deverá buscar
listando-os, os documentos
ordenados contábeis (BSEG) e
por documento+item+data
documento.

Deverá existir uma somatória por documento contábil, de todos os campos de


valor. Incluir entre os documentos uma linha de separação.

O relatório deverá conter um cabeçalho que identifique o título do relatório,


a hora e data de execução, além do usuário.

Incluir também indicador de páginas.

O cabeçalho deverá ter cor diferente das demais linhas do relatório.


Já as linhas de detalhe devem se alterar entre duas cores, de mesma
tonalidade, mas de intensidades diferentes.

Exercício
http://slidepdf.com/reader/full/academia-sap-abapinterna 107/239
1.
5/21/2018
Dados para seleção das informações : AcademiaSAPAbap_Interna-slidepdf.com

BSEG (documentos
Exercício contábeis)
(GJAHR) = 2001
Tipo de documento (BLART) = AB ou SA ou SB
Data do documento (BLDAT) = mes 09 e ano 2001
Status do documento (BSTAT) = branco

Buscar os itens na tabela BKPF, pela chave.


Incluir ao final do relatório um demonstrativo do total de registros lidos das
tabelas.

Campos a inserir no relatório : BSEG (BUKRS, BELNR, GJAHR, BLART,


BLDAT, BKTXT, BSTAT) e BSEG (BUZEI, AUGCP, AUGBL, WRBTR,
PSWBT, PSWSL).

Exercício
http://slidepdf.com/reader/full/academia-sap-abapinterna 108/239
2.
5/21/2018
Transformar o relatório do item 1, em uma relatório ALV Grid.
AcademiaSAPAbap_Interna-slidepdf.com

Retirar
com os os valores campos
seguintes fixos para seleção dos
: Empresa, dados e incluir
Documento, uma Tipo
Exercício, tela de seleção,
documento
e Data documento.

Validar - ao menos um dos campos da tela de seleção deverá estar preenchi-


do.

Incluir no cabeçalho, o logotipo da Softtek.

Incluir sumarizador pelos campos de valor.

http://slidepdf.com/reader/full/academia-sap-abapinterna 109/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

On Line / Module Pool

Introdução
http://slidepdf.com/reader/full/academia-sap-abapinterna 110/239
• Online são tipos de programas que, como o próprio nome
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

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.

Estrutura de um Module Pool


http://slidepdf.com/reader/full/academia-sap-abapinterna 111/239
Módulos PAI tela 1 
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Screen 1 

Módulos PBO tela 1 

GUI-01 

Programa Módulos PAI tela 2 


Principal  Screen 2 
Módulos PBO tela 2 

GUI-02 
Módulos PAI tela 3 
Screen 3 
Módulos PBO tela 3 

Estrutura de um Module Pool


http://slidepdf.com/reader/full/academia-sap-abapinterna 112/239

5/21/2018 Screen AcademiaSAPAbap_Interna-slidepdf.com

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

• GUI Status e GUI Title


Definição dos comandos de botão e menus disponíveis:
Definição do título de tela
Habilitação dos comandos standards existentes
Criação de novos comandos necessários

• Evento PBO
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

Desenvolvendo um Module Pool


http://slidepdf.com/reader/full/academia-sap-abapinterna 113/239
SE80
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 A transação SE80 é a mais adequada para se desenvolver um module pool, pois


possibilita acesso dinâmico a qualquer elemento do programa, bem como as estru-
turas GUI, includes, modules e telas.
Os programas desenvolvidos pelos clientes – não SAP, devem iniciar com SAPMZ.
Por exemplo, SAPMZABAP05.
 A tela é desenhada no Screen Painter Gráfico, que possui ferramentas de fácil
utilização.
 A programação das telas é feita em uma área da própria tela, destinada a lógica de
programação da mesma.
 As sub-rotinas chamadas a partir da lógica de programação das telas, recebem o
nome de módulo – MODULE...
Os módulos do PBO ficam armazenados em um include do próprio PBO. O mesmo
acontecendo com os módulos do PAI.

SE80
http://slidepdf.com/reader/full/academia-sap-abapinterna 114/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Lista de objetos
do Module Pool

 Área de
programação

Module Pool – Exemplo
http://slidepdf.com/reader/full/academia-sap-abapinterna 115/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

No include TOP ficam definidas as variáveis


globais, tabelas, estruturas. Bem como
definições de includes e tables-control.

Nomódulos
os include O01
dos ficarão
PBOs. armazenados

No include I01 ficarão armazenados


os módulos dos PAIs.

O include F01 não definido aqui, ficaria responsável por armazenar


os FORMs utilizados nos módulos, etc…  

Tela – Lógica de Processamento
http://slidepdf.com/reader/full/academia-sap-abapinterna 116/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

PBO

PAI

Module Pool – Mais conceitos


http://slidepdf.com/reader/full/academia-sap-abapinterna 117/239
STATUS GUI
Onde pode ser customizada as barras de menu, deAcademia
5/21/2018
botõesSAP
e teclas de função.
Abap_Interna-slidepdf.com

TITLE GUI
Onde é modificado os nomes/‟título das telas.  

Screen Painter Gráfico


http://slidepdf.com/reader/full/academia-sap-abapinterna 118/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Elementos disponíveis
para a tela
Propriedades de
cada objeto

 Área para desenho


da tela

Subtela
http://slidepdf.com/reader/full/academia-sap-abapinterna 119/239
 A Subtela é uma área na Tela onde podemos variar os campos
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

conforme a necessidade, não deixando fixo os campos numa tela e não


havendo necessidade de replicar alguns campos e várias telas.

Podemos dividir a definição da Subtela em 2 Partes:

• Tela de Origem: onde definimos uma área específica para chamada


da Subtela.

• Subtela: Tela onde serão definidos os campos da Subtela.

Subtela
http://slidepdf.com/reader/full/academia-sap-abapinterna 120/239
 Tela
5/21/2018
de Origem AcademiaSAPAbap_Interna-slidepdf.com

Na criação da Tela em que será feita a referência à Subtela,


criamos uma área específica para esta Subtela.

 Área para Subtela

Botão para Criar a


 Área para Subtela 

Subtela
http://slidepdf.com/reader/full/academia-sap-abapinterna 121/239
 Definições
5/21/2018
de Subtela AcademiaSAPAbap_Interna-slidepdf.com

 A Subtela (ou
Subscreen) é definida
nas características da
Tela. 

Subtela
http://slidepdf.com/reader/full/academia-sap-abapinterna 122/239
 Tela
5/21/2018
de Origem  AcademiaSAPAbap_Interna-slidepdf.com

Na PBO (PROCESS BEFORE OUTPUT) deverá existir um comando para a execução desta
subtela, sendo:
CALL SUBSCREEN sub1 INCLUDING programa dynpronr.
SUB1 – Seria o nome da área definida para a Subtela
PROGRAMA  – Nome do Programa onde se encontra a Subtela. Normalmente, se refere ao
mesmo programa da Tela Normal
DYNPRONR  – Número da Subtela a ser executada
Quando este comando é executado, a PBO desta Subtela é executada, com todas as rotinas
definidas nela.
Na PAI (PROCESS AFTER INPUT) deverá existir um comando para a execução desta
subtela, sendo:
CALL SUBSCREEN sub1.

Onde: SUB1 – Seria o nome da área definida para a Subtela (como na PBO)


Quando este comando é executado, a PAI desta subtela é executada, com todas as rotinas
definidas nela.
 A Subtela não tem PF-STATUS definido, utiliza-se as definições da Tela de Origem, de onde
está sendo executada a Subtela.

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 123/239
 Definição
5/21/2018
da Table Control AcademiaSAPAbap_Interna-slidepdf.com

Opção para Criar


Table Control

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 124/239
 Definição
5/21/2018 de Campos na Table Control
AcademiaSAPAbap_Interna-slidepdf.com

Os campos devem ser incluídos dentro da Table Control. Se for utilizado


a opção de busca de campos do Banco de Dados ( ), é incluído
automaticamente o campo de Entrada de Dados e o cabeçalho do
Campo.

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 125/239
 Definição de Campos na Table Control
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Pode-se também incluir os
campos de Entrada e Saída
de informações na Table
Campo Texto Control e depois incluir um
campo texto no cabeçalho do
campo.
Campo de E/S

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 126/239
 Atributos da Table Control
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Nos Atributos da Table Control existem algumas
informações que podem ser úteis, conforme a
necessidade do desenho da Table Control.
Define se os campos terão
Título

Define se a Table Controle


terá Título

Define se a Table Control terá


Linhas Verticais e Horizontais
separando os Campos 

Define se as Linhas e Colunas terão


marcador, e se serão Simples ou
Múltiplas

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 127/239
 Definições de Código 
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Para utilização de uma Table Control é necessário variável „tc1‟,  que deve ter o
mesmo nome da Table Control desenhada na Tela. A informação „9000‟ se refere
ao código da Tela onde está a Table Control.
CONTROLS: tc1 TYPE TABLEVIEW USING SCREEN ‘9000’.
Na PBO deve exitir o seguinte comando:
LOOP WITH CONTROL tc1.
ENDLOOP.
No PBO, serão feitos n looping´s, conforme a quantidade de linhas que teremos
da Table Control na Tela.
No PAI, este „Loop‟  faz uma leitura de todas as linhas da Table Control que

estiverem sendo exibidas na tela, tendo os campos conteúdo ou não.


Dentro deste Looping (tanto na PBO como na PAI) podemos incluir quantos
MODULE´s forem necessários. Lembrando que estes MODULE´s serão
executados para todas as linhas da Table Control que estiverem sendo exibidas
na tela, como explicado acima.

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 128/239
 Definições
5/21/2018
de Código  AcademiaSAPAbap_Interna-slidepdf.com

Sugere-se que estas informações da Table Control sejam movimentadas


para uma tabela interna, já que na PBO todos os dados da Tela são
“limpos”  para receberem os dados novamente. Então, o que
normalmente utiliza-se é criar uma Tabela Interna com o mesmo formato
da Table Control e na PAI é feito um MODULE onde se grava os dados
da Tela na Tabela Interna. Na PBO, estes dados são movimentados
novamente para a Table Control.

Comandos úteis:
CHAIN – Verifica quando um campo é alterado ou utilizado.

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 129/239
 Atributos da Table Control 
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
 Alguns Atributos da Table Control podem ser alteradas conforme a necessidade
do programa, sendo:
 Atributo Tipo Tamanho Conteúdo
Numérico indicando quantas colunas
FIXED_COLS INT 4
ficarão fixas
Define quantas Linhas teremos na
LINES INT 4
Table Control

TOP_LINE INT 4 Define qual será a primeira linha a


ser apresentada na Table Control
Dentro de um Looping da Table
CURRENT_LIN INT 4
Control, esta informação diz qual
E
linha está sendo processado no
H_GRID CHAR 1 momento
Grade Horizontal que separa campos

V_GRID CHAR 1 Grade Vertical que separa campos

COLS (*1)
‘X’  –  significa que o campo está
INVISIBLE CHAR 1 invisível
‘  ‘  – significa que o campo não está
invisível

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 130/239
 Atributos
5/21/2018
da Table Control  AcademiaSAPAbap_Interna-slidepdf.com

(*1)  – O parâmetro COLS é uma outra estrutura que contém a definição
de alguns dados por campo da Table Control.
Para alteração destes parâmetros, basta alterar o conteúdo dos campos,
movimentando a informações para a Table Control-Campo (Ex.: TC1-
TOP_LINE = 5).

 Múltiplos Table Control 


• Para cada Table Control desenhada na Tela, existirá um Loop/Endloop
no PAI e PBO;
• O Nome das Table Control´s devem ser diferentes entre elas;

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 131/239
 Inibir
5/21/2018 e Exibir Campos  AcademiaSAPAbap_Interna-slidepdf.com

Para os campos da Tela, com excessão de Table Control, para inibir e exibir
campos é utilizado o seguinte comando:

LOOP AT SCREEN.
SCREEN-INVISIBLE = ‘X’ 

ENDLOOP.

Onde „X‟ pode ser „0‟ para exibir e „1‟ para inibir.

Caso seja necessário escolher um campo em específico, basta fazer o filtro


através do campo SCREEN-NAME. Também podem ser utilizados os campos
SCREEN-GROUP1, SCREEN-GROUP2, SCREEN-GROUP3 e SCREEN-
GROUP4.

Table Control
http://slidepdf.com/reader/full/academia-sap-abapinterna 132/239
 Inibir
5/21/2018 e Exibir Campos  AcademiaSAPAbap_Interna-slidepdf.com

Para Table Control, caso haja necessidade de inibir uma coluna da Table Control,
o comando deve ser outro:
DATA: wa TYPE cxtab_column .
LOOP AT tc1-COLS INTO wa .
wa-INVISIBLE = ‘X’.
MODIFY tab1-COLS FROM wa .
ENDLOOP.
Onde: TC1 – Nome da Table Control
WA – Variável com tipo referenciando „TYPE CXTAB_COLUMN‟  
„X‟ – Se informado „0‟ o campo não será inibido, se „1‟ o campo será
inibido

Com esse comando, todos os campos serão inibidos pois não há nenhuma
checagem de qual campo deverá ser inibido. Para escolher o campo, usar a
variável WA-SCREEN-NAME que contém o nome do campo. Também podem ser
utilizados os campos WA-SCREEN-GROUP1, WA-SCREEN-GROUP2, WA-
SCREEN-GROUP3 e WA-SCREEN-GROUP4.

Exercício
http://slidepdf.com/reader/full/academia-sap-abapinterna 133/239
1. Exercício de Module Pool
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Utilizar o exercício 2 do tópico anterior (ALV). Será um programa com duas


telas. A primeira se equivalerá a tela de seleção dos dados.
Na segunda tela, acima, os campos que foram digitados na primeira – travados;
abaixo, criar uma lista (table control), com os itens do documento solicitado.
Para este programa, os campos da primeira tela  – documento e ano, deverão
ser obrigatórios.

http://slidepdf.com/reader/full/academia-sap-abapinterna 134/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Batch-Input
Call Transaction

Objetivos
http://slidepdf.com/reader/full/academia-sap-abapinterna 135/239
5/21/2018 • O que é Batch-Input AcademiaSAPAbap_Interna-slidepdf.com

• Como realizar uma carga através desta


técnica
• Call Transaction
Direct Input

Transferindo Dados Externos


http://slidepdf.com/reader/full/academia-sap-abapinterna 136/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
SAP (Host)

Dados SAP
Externos INTERFACES  BANCO SAP 

 X 
Dados
Externos  CONSISTÊNCIAS BANCO SAP 

Nunca gravar na base direto


http://slidepdf.com/reader/full/academia-sap-abapinterna 137/239
Sistema Externo
5/21/2018

AcademiaSAPAbap_Interna-slidepdf.com

(Legado)

Sessão de 
BATCH INPUT 

Programa

Banco de Dados
SAP 

http://slidepdf.com/reader/full/academia-sap-abapinterna 138/239
5/21/2018  Arquivo Sequêncial
AcademiaSAPAbap_Interna-slidepdf.com

Programa de Batch Input

 Arquivo Fonte

Função Batch Input

SAP R/3

Tabela 1 Tabela 2 Tabela 3

http://slidepdf.com/reader/full/academia-sap-abapinterna 139/239
 Arquivo BANCO
5/21/2018
Telas Sequêncial
AcademiaSAPAbap_Interna-slidepdf.com

SAP

Sessão batch Input

Transação 1 Transação 2

Tela 1 Tela 2 Tela 1 Tela 2


Log

SAP R/3

Tabela 1 Tabela 2 Tabela 3

http://slidepdf.com/reader/full/academia-sap-abapinterna 140/239
 Arquivo
5/21/2018
Sequêncial
AcademiaSAPAbap_Interna-slidepdf.com

READ DATASET Dicionário


 ABAP/4
Estrutura BDCDATA
Programa de BATCH INPUT
Tabela
BDC INCLUDE STRUCTURE

CALL FUNCTION

FILA

Seqüência para codificação


http://slidepdf.com/reader/full/academia-sap-abapinterna 141/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 ABRIR SESSÃO DE BATCH INPUT

INSERIR DADOS DA TRANSAÇÃO 

FECHAR SESSÃO DE BATCH INPUT

Codificação
http://slidepdf.com/reader/full/academia-sap-abapinterna 142/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

OPEN DATASET <nome do arquivo>


OUTPUT
For INPUT

 APPENDING

OUTPUT - Se existir, apaga e cria um novo


INPUT - Abre apenas para leitura (default)
 APPENDING - Se existir, adiciona, se não existir, cria.

http://slidepdf.com/reader/full/academia-sap-abapinterna 143/239
5/21/2018 OPEN DATASET <nome do arquivo>
AcademiaSAPAbap_Interna-slidepdf.com

OUTPUT
For INPUT
 APPENDING

BINARY MODE
In
TEXT MODE

BINARY MODE - Não interfere na leitura (default)


TEXT MODE - Interfere na leitura
(preenche com brancos, por ex.)

http://slidepdf.com/reader/full/academia-sap-abapinterna 144/239
BINARY MODE 
5/21/2018 TEXT MODE 
AcademiaSAPAbap_Interna-slidepdf.com

 ABAP /4  A B C  ABAP /4  A B C
 A B  A B
 A B C D  A B C D

TRANSFER TRANSFER

 A B C A B A B C D  A B C A B A B C D

READ DATASET READ DATASET

 ABAP /4  A B C  ABAP /4  A B C
 A B A  A B
B C D  A B C

http://slidepdf.com/reader/full/academia-sap-abapinterna 145/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
TRANSFER <campo> TO <nome do arquivo>

READ DATASET <nome do arquivo> INTO <campo>

CLOSE DATASET <nome do arquivo>

DELETE DATASET <nome do arquivo>

DEFINIR ESTRUTURAS
http://slidepdf.com/reader/full/academia-sap-abapinterna 146/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 ABRIR ARQUIVO

Gravar Ler

Preencher Dados Ler os Dados

Transferir Estrutura Processar os Dados

Mais Fim do
dados ?  Arquivo?
Sim Não
Não Sim
FECHAR ARQUIVO

Funções Para Batch-Input


http://slidepdf.com/reader/full/academia-sap-abapinterna 147/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 148/239
5/21/2018
CALL FUNCTION BDC_OPEN_GROUP   AcademiaSAPAbap_Interna-slidepdf.com

EXPORTING
Client *  = <Client> (Sy-Mandt)
Group *  = <Nome da Sessão>
Holddate = <Data>
Keep *  = Flag de Deleção
User *  = <Usuário BDC> (Sy-Uname)
EXCEPTIONS

*  - Parâmetros Obrigatórios
* - Default = ‘ ’ (apagar a sessão) 

http://slidepdf.com/reader/full/academia-sap-abapinterna 149/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Programa Tela Início Nome do Campo Valor do Campo
<Programa> <Número 1>  X
<Campo 01> <Valor 01>
<Campo 05> <Valor 05>

<Programa> <Número 7> X


<Campo 11> <Valor 11>

<Campo 02> <Valor 02>

Transação SHDB
http://slidepdf.com/reader/full/academia-sap-abapinterna 150/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 151/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 152/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 153/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 154/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 155/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 156/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 157/239
5/21/2018 Sessão de Batch
Academia Input
SAPAbap_Interna-slidepdf.com

Síntese Log
Sessões presas

Mostra as pastas
Análise Mostra os dados da pasta
Log / Estatísticas

Seleciona pastas para deleção


Administração Prende Sessão
Libera Sessão

Processa em “FOREGROUND” 
Processar Mostra apenas os erros
Processa em “BACKGROUND” 

http://slidepdf.com/reader/full/academia-sap-abapinterna 158/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Visível Mostra Passo a Passo a transação

Exibir Apenas Erro Mostra apenas a transação quando der erro

Background  Não mostra nada

http://slidepdf.com/reader/full/academia-sap-abapinterna 159/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Função  OKCODE

Sai da transação corrente, marca como incorreta  /n


Apaga o dado corrente na transação  / bdel
Sai da transação e marca como incorreta 
/ bend
Muda de “Display Error...” para “Foreground”   / bda
Muda de “Foreground” para “Display Errors...”  / bde

http://slidepdf.com/reader/full/academia-sap-abapinterna 160/239
5/21/2018 Processada Sessão processada corretamente
AcademiaSAPAbap_Interna-slidepdf.com

Incorreto Sessão foi processada mas contém algum erro

To be Processed Sessão criada mas ainda não foi processada

Criando Sessão que está sendo gravada no momento

Processando Sessão que está sendo Processada no momento

Background Sessão que está sendo Processada em “Background” 

Programa Modelo Batch-Input


http://slidepdf.com/reader/full/academia-sap-abapinterna 161/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
REPORT Z_TESTE .

DATA: BEGIN OF BDC_TAB OCCURS 0.


INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: BEGIN OF REGISTRO OCCURS 0,


ID LIKE SCUSTOM-ID,
TEL LIKE SCUSTOM-TELEPHONE,
END OF REGISTRO.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 162/239
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

PARAMETERS: ARQUIVO(80) TYPE C


DEFAULT 'H:\TEAMSAP\ABAP\batch.txt’ LOWER CASE. 
SELECTION-SCREEN END OF BLOCK 1.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.

PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP,


TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK 2.

DATA: NOME_ARQ LIKE RLGRAP-FILENAME.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 163/239
START-OF-SELECTION.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Nome_arq = arquivo.

IF TP_UNIX = 'X'.
PERFORM ABRE_ARQUIVO_UNIX.
ELSE.
PERFORM ABRE_ARQUIVO_WINDOWS.
ENDIF.

PERFORM OPEN_GROUP.
PERFORM PREPARA_BDC.
PERFORM FECHA_GROUP.

END-OF-SELECTION.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 164/239
FORM ABRE_ARQUIVO_UNIX.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.


DO.
READ DATASET NOME_ARQ INTO REGISTRO.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.

ENDFORM.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 165/239
FORM ABRE_ARQUIVO_WINDOWS.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CALL FUNCTION 'WS_UPLOAD'


EXPORTING
FILENAME = NOME_ARQ
FILETYPE = 'ASC'
TABLES
DATA_TAB = REGISTRO
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
GUI_REFUSE_FILETRANSFER = 8
OTHERS = 9. 

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 166/239
 
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
EXIT.
ENDIF.

ENDFORM. “ABRE_ARQUIVO_WINDOWS 

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 167/239

FORM OPEN GROUP.


5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CALLEXPORTING
FUNCTION 'BDC_OPEN_GROUP'
CLIENT = SY-MANDT
GROUP = ’SAP_2'  
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 168/239
  IF SY-SUBRC NE 0.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

WRITE:
EXIT. 'Erro no Open Group'.
ENDIF.

ENDFORM. “OPEN_GROUP 

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 169/239
FORM PREPARA_BDC.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

REFRESH BDC_TAB.
LOOP AT REGISTRO.

PERFORM PREENCHE_BDC USING:


'X' 'SAPMTFBA' '0100',
' ' 'SCUSTOM-ID' REGISTRO-ID,
' ' 'BDC_OKCODE' '/00',

'X' 'SAPMTFBA' '0200',


' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL,
' ' 'BDC_OKCODE' '=SAVE'.

PERFORM
REFRESH INSERT.
BDC_TAB.
ENDLOOP.

ENDFORM.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 170/239
FORM PREENCHE BDC USING DYNBEGIN NAME VALUE.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IFMOVE:
DYNBEGIN
NAME= TO
'X'.
BDC_TAB-PROGRAM,
VALUE TO BDC_TAB-DYNPRO,
'X' TO BDC_TAB-DYNBEGIN.
APPEND BDC_TAB.
ELSE.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.

CLEAR BDC_TAB.

ENDFORM.

Programa Modelo Batch-Input - Continuação


FORM INSERT.
http://slidepdf.com/reader/full/academia-sap-abapinterna 171/239
5/21/2018 CALL FUNCTION 'BDC_INSERT'
AcademiaSAPAbap_Interna-slidepdf.com

EXPORTING
TCODE = 'TFBA'
TABLES
DYNPROTAB = BDC_TAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.

IF WRITE:
SY-SUBRC NE 0.
'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.

Programa Modelo Batch-Input - Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 172/239
FORM FECHA_GROUP.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CALL EXCEPTIONS
FUNCTION 'BDC_CLOSE_GROUP'
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.

IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ELSE.
WRITE: 'Sessão Criada'.
ENDIF.

ENDFORM.

Formas de Inserir dados no SAP R/3


http://slidepdf.com/reader/full/academia-sap-abapinterna
Dados 173/239
Externos
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Programa
 ABAP/4

Batch Call Direct


Input Transaction Input

SAP 

Etapas para Inserir dados no


Definir Estruturas Antigas 
SAP R/3
http://slidepdf.com/reader/full/academia-sap-abapinterna 174/239
5/21/2018 Importar Estruturas SAP 
AcademiaSAPAbap_Interna-slidepdf.com

Inicializar as Estruturas do SAP 

Ler os dados do Arquivo 

 Verificar os dados 

Converter os dados 

Colocar dados na estrutura do SAP 


Transferir dados para arquivo sequêncial

Etapas para Inserir dados


 Analisar dados 
no SAP R/3
http://slidepdf.com/reader/full/academia-sap-abapinterna 175/239
5/21/2018
Criar estruturas SAP 
AcademiaSAPAbap_Interna-slidepdf.com

Desenvolver programa de Transferência 

Criar Arquivo seqüencial 

Criar programa de Batch Input 

Criar sessão de Batch Input 

 Analisar resultados

 Avaliar os Erros

Batch-Input X Call Transaction


http://slidepdf.com/reader/full/academia-sap-abapinterna 176/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

http://slidepdf.com/reader/full/academia-sap-abapinterna 177/239
Call Transaction <Código da Transação>
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

USING <Tabela BDC>


MODE <Modo de Visualização>
UPDATE <Modo de Atualização>
MESSAGES INTO <Tabela de Mensagem>

Modo de Visualização
 A - Visualiza Tudo <default>
E - Visualiza apenas se der erro
N - Não Visualiza nada
Modo de Atualização
S - Modo Síncrono (Espera terminar)
 A - Modo Assíncrono <default>

http://slidepdf.com/reader/full/academia-sap-abapinterna 178/239
SY-SUBRC
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

0 -- Erro
<1000 Sucesso
no Programa do SAP
>1000 - Erro no Processamento 
(Ver campos de Sistema) 

Campos de Sistema
SY-MSGID - Classe da Mensagem
SY-MSGTY - Tipo da Mensagem (E, I, W, S, A)
SY-MSGNO - Número da Mensagem
SY-MSGV1
SY-MSGV2 - Variável de Mensagem 2
1
SY-MSGV3 - Variável de Mensagem 3
SY-MSGV4 - Variável de Mensagem 4

http://slidepdf.com/reader/full/academia-sap-abapinterna 179/239
5/21/2018
Batch Input Call Transaction
AcademiaSAPAbap_Interna-slidepdf.com

Código de Retorno Não Sim

Log de Erro Sim Não

Processamento 2 Fases Imediato

Programa Modelo Call Transaction


http://slidepdf.com/reader/full/academia-sap-abapinterna 180/239
REPORT Z_TESTE .
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

DATA: BEGIN OF BDC_TAB OCCURS 0.


INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: BEGIN OF MSG_TAB OCCURS 0.


INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MSG_TAB.
DATA: BEGIN OF REGISTRO OCCURS 0,
ID LIKE SCUSTOM-ID,
TEL LIKE SCUSTOM-TELEPHONE,
END OF REGISTRO.

Pág. 01

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 181/239
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
PARAMETERS: ARQUIVO(80) TYPE C
DEFAULT 'H:\TEAMSAP\ABAP\batch.txt' LOWER CASE.
SELECTION-SCREEN END OF BLOCK 1.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.

PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP,


  TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK 2.

SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE TEXT-003.


PARAMETERS: ALL RADIOBUTTON GROUP MODE DEFAULT 'X',
ERRO RADIOBUTTON GROUP MODE,
NADA RADIOBUTTON GROUP MODE.

SELECTION-SCREEN END OF BLOCK 3.


Pág. 02

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 182/239
DATA: NOME_ARQ LIKE RLGRAP-FILENAME,
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

MODO(1) TYPE C,
CONT TYPE I VALUE 0,
C_TEXTO(255) TYPE C.

START-OF-SELECTION.

  NOME_ARQ = ARQUIVO.
IF ALL = 'X'.
MODO = 'A'.
ELSEIF ERRO = 'X'.
MODO = 'E'.
ELSE.
MODO = 'N'.
ENDIF.

Pág. 03

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 183/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF TP_UNIX = 'X'.
PERFORM ABRE_ARQUIVO_UNIX.
ELSE.
PERFORM ABRE_ARQUIVO_WINDOWS.
ENDIF.
 
PERFORM PREPARA_BDC.
IF CONT > 0.
PERFORM FECHA_BDC.
ENDIF.

Pág. 04

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 184/239
FORM PREPARA_BDC.
5/21/2018
REFRESH BDC_TAB. AcademiaSAPAbap_Interna-slidepdf.com

LOOP AT REGISTRO.
PERFORM PREENCHE_BDC USING:
'X' 'SAPMTFBA' '0100',
' ' 'SCUSTOM-ID' REGISTRO-ID,
' ' 'BDC_OKCODE' '/00',

  'X' 'SAPMTFBA' '0200',


' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL,
' ' 'BDC_OKCODE' '=SAVE'.
WRITE: / REGISTRO-ID,
REGISTRO-TEL.
PERFORM INSERT.
REFRESH BDC_TAB.
ENDLOOP.
ENDFORM.

Pág. 05

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 185/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FORM PREENCHE_BDC USING DYNBEGIN NAME VALUE.


IF DYNBEGIN = 'X'.
MOVE: NAME TO BDC_TAB-PROGRAM,
VALUE TO BDC_TAB-DYNPRO,
'X' TO BDC_TAB-DYNBEGIN.

  ELSE.APPEND BDC_TAB.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.
CLEAR BDC_TAB.
ENDFORM.

Pág. 06

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 186/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FORM INSERT.
CALL TRANSACTION 'TFBA'
USING BDC_TAB
MODE MODO
UPDATE 'S'
MESSAGES INTO MSG_TAB.
  IF SY-SUBRC NE 0.
CONT = CONT + 1.
PERFORM PREPARA_PASTA_ERRO.
ENDIF.
PERFORM MENSAGENS.
ENDFORM.

Pág. 07

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 187/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FORM ABRE_ARQUIVO_UNIX.

OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.

DO.
READ DATASET NOME_ARQ INTO REGISTRO.
  IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.

ENDFORM.

Pág. 08

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 188/239

FORM ABRE ARQUIVO WINDOWS.


5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CALL FUNCTION 'WS_UPLOAD'


EXPORTING
FILENAME = NOME_ARQ
FILETYPE = 'ASC'
TABLES
DATA_TAB = REGISTRO

  EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
GUI_REFUSE_FILETRANSFER = 8
OTHERS = 9.

Pág. 09

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 189/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
  EXIT.
ENDIF.

ENDFORM.

Pág.10

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 190/239
5/21/2018
FORM MENSAGENS. AcademiaSAPAbap_Interna-slidepdf.com

LOOP AT MSG_TAB.

SELECT SINGLE TEXT INTO C_TEXTO FROM T100


WHERE SPRSL = 'PT'
AND ARBGB = MSG_TAB-MSGID

  AND MSGNR = MSG_TAB-MSGNR.


IF MSG_TAB-MSGV1 NE SPACE.
REPLACE '&1' WITH MSG_TAB-MSGV1 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV1 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.

Pág.11

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 191/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF MSG_TAB-MSGV2 NE SPACE.
REPLACE '&2' WITH MSG_TAB-MSGV2 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV2 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.
  IF MSG_TAB-MSGV3 NE SPACE.
REPLACE '&3' WITH MSG_TAB-MSGV3 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV3 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.

Pág.12

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 192/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF MSG_TAB-MSGV4 NE SPACE.
REPLACE '&4' WITH MSG_TAB-MSGV4 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV4 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.

  ENDIF.
CONCATENATE MSG_TAB-MSGTYP ' - ' C_TEXTO INTO C_TEXTO.
WRITE: C_TEXTO.

ENDLOOP.
REFRESH MSG_TAB.

ENDFORM.

Pág.13

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 193/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FORM PREPARA_PASTA_ERRO.

IF CONT = 1.
PERFORM ABRE_BDC.

  PERFORM INSERT_BDC.
ELSE.
PERFORM INSERT_BDC.
ENDIF.

ENDFORM.

Pág.14

Programa Modelo Call Transaction – Continuação


FORM ABRE_BDC.
http://slidepdf.com/reader/full/academia-sap-abapinterna 194/239
CALL FUNCTION BDC_OPEN_GROUP
5/21/2018 EXPORTING AcademiaSAPAbap_Interna-slidepdf.com

CLIENT = SY-MANDT
GROUP = 'ERROS'
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
  DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
Pág.15

Programa Modelo Call Transaction – Continuação


FORM ABRE_BDC.
http://slidepdf.com/reader/full/academia-sap-abapinterna 195/239
CALL FUNCTION BDC_OPEN_GROUP
5/21/2018 EXPORTING AcademiaSAPAbap_Interna-slidepdf.com

CLIENT = SY-MANDT
GROUP = 'ERROS'
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
  DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
Pág.15

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 196/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
  ENDIF.
ENDFORM.

Pág.16

Programa Modelo Call Transaction – Continuação


FORM INSERT_BDC.
http://slidepdf.com/reader/full/academia-sap-abapinterna 197/239

CALL FUNCTION 'BDC INSERT'


5/21/2018 EXPORTING AcademiaSAPAbap_Interna-slidepdf.com

TCODE = 'TFBA'
TABLES
DYNPROTAB = BDC_TAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
  QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
IF SY-SUBRC NE 0.
WRITE: 'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.
Pág.17

Programa Modelo Call Transaction – Continuação


http://slidepdf.com/reader/full/academia-sap-abapinterna 198/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FORM FECHA_BDC.

CALL FUNCTION 'BDC_CLOSE_GROUP'


EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
  OTHERS = 3.
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.
ENDFORM.

Pág.18

Exercício
1) Batch-Input
http://slidepdf.com/reader/full/academia-sap-abapinterna 199/239
a) Criar um programa que faça o batch input dos dados obrigatórios no
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

cadastro de fornecedores: Transação FK01.


b) Permitir como parâmetro que o usuário informe se o arquivo vem do servidor
ou local.

2) Call Transaction
a) Permitir como parâmetro que o usuário informe se deseja executar a pasta
automaticamente. Exibir as Mensagens do Processo, quebrando por
Fornecedor. 

http://slidepdf.com/reader/full/academia-sap-abapinterna 200/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

SAPScript

Sapscript
O que é Sapscript ?
http://slidepdf.com/reader/full/academia-sap-abapinterna 201/239
5/21/2018
O SAPSCRIPT é a ferramenta do SAP para criação de
AcademiaSAPAbap_Interna-slidepdf.com

formulários mais elaborados. A opção pela utilização desta ferramenta se


dá pela necessidade de alguns recursos gráficos que não podem ser
obtidos através de código de ABAP comum. Com o SAPSCRIP é possível
criar um formulário com logotipo, letras formatadas de vários tamanhos,
criação de grades, código de barras, etc.
 Apesar de ser uma ferramenta poderosa na geração de formulários, o
SAPscript ainda apresenta uma série de limitações, o seu verificador de
erros e debug não possuem as mesmas características do editor ABAP.
Caso, seja digitado um comando com grafia errada ou sem sentido lógico
dentro de um formulário, não será detectado pelo mesmo e poderá não
ser executado, passando as vezes despercebido pelo programador.
Para que o SAPSCRIPT funcione é necessário que um trabalho em
conjunto com um programa ABAP que deverá conter algumas funções de
chamada e controle do SCRIPT. 

Sapscript
 
Deficiências da Ferramenta
http://slidepdf.com/reader/full/academia-sap-abapinterna 202/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

-Debug
-Checar erro de sintaxe

-Client Dependent

-Criar logotipos (.tif objeto não transportável)

Sapscript
JANELA DE
PÁGINAS 
http://slidepdf.com/reader/full/academia-sap-abapinterna 203/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

PÁGINAS 

Partes de um Formulário
JANELAS E ELEMENTOS DE
TEXTO 

<H> </> CARACTERES DE


COMANDO 
P
PARÁGRAFOS 

Sapscript
http://slidepdf.com/reader/full/academia-sap-abapinterna 204/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Sapscript
http://slidepdf.com/reader/full/academia-sap-abapinterna 205/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Sapscript
ESTRUTURA FORMULÁRIO
Cabeçalho
http://slidepdf.com/reader/full/academia-sap-abapinterna 206/239
Informações gerais do formulário, título, a classe de desenvolvimento e os
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

idiomas.
Parágrafos
São elementos que podem ser criados e apresentam informações dos textos
de uma determinada janela.

Caracter de Seleção
São informações semelhantes às do parágrafo, no que diz respeito a
formatação de textos, no entanto podem ser aplicados a trechos de textos e
não necessariamente a linhas inteiras do formulário.
Páginas
São os elementos responsáveis pelo agrupamento das janelas durante
certos momentos do relatório.

Sapscript
ESTRUTURA FORMULÁRIO
http://slidepdf.com/reader/full/academia-sap-abapinterna 207/239
Elementos de Texto
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Corresponde à lógica de processamento e comportamento de uma janela
durante a execução do formulário.
* Parágrafo Padrão
= Linha longa

( Linha Bruta
/ Avanço de Linha
/ = Avanço de Linha e Linha Longa
/( Avanço de Linha e Linha Bruta

/: Linha de Comando
/* Linha de Comentário
/E Elemento de Texto

Sapscript
ESTRUTURA FORMULÁRIO
http://slidepdf.com/reader/full/academia-sap-abapinterna 208/239
Janelas
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Podem ser criadas sem limites e tem por finalidade dividir por espaço as
regiões de um formulário para operações independentes.

MAIN

Somente
 janela é permitido
obrigatória um tipo
em uma de janela MAIN por formulário, e é a única
página.
VAR
Esse tipo de janela deve ser utilizado quando se pretende trabalhar com
textos que variam.
CONST
Nesse tipo de janela são incluído objetos e textos que permanecem os
mesmos durante todo o relatório, independente do número de páginas.

Sapscript
CONDIÇÕES CONDIÇÕES
NÃO EXISTENTES
http://slidepdf.com/reader/full/academia-sap-abapinterna
EXISTENTES 209/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
NO SAPSCRIPT NO SAPSCRIPT 
CN (Contains Not only) = EQ (Igual)
CO (Contains Only) < LT (Menor que)
CA (Contains Any) > GT (Maior que)
NA (Contains Not Any) <= LE (Menor ou igual a)
CS (Contains String) >= GE (Maior ou igual a)
NS (Contains No String) <> NE (Diferente)
CP (Contains Pattern) NOT (Não)
NP (contains No Pattner)   AND (E)
OR (Ou) 

Sapscript
SIMBOLOS UTILIZADOS
http://slidepdf.com/reader/full/academia-sap-abapinterna 210/239
DATE: Data
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
DAY: Dia
NAME_OF_DAY: Nome do Dia
MONTH: Mês
NAME_OF_MOUNTH: Nome do Mês
YEAR: Ano

TIME: Hora Total


HOURS: Hora Atual
MINUTES: Minuto Atual
SECONDS: Segundo Atual
PAGE: Número da Pagina

NEXTPAGE: Número da nova página


SPACE: Espaço
ULINE: Linha Horizontal
VLINE: Linha Vertical

Sapscript
COMANDOS
 ADDRESS
http://slidepdf.com/reader/full/academia-sap-abapinterna PRINT-CONTROL 211/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
BOTTOM PROTECT
BOX RESET
CASE SET COUNTRY
DEFINE SET DATE MASK

HEX SET SIGN


IF SET TIME MASK
INCLUDE SIZE
NEW-PAGE STYLE

NEW-WINDOW SUMMING
PERFORM TOP
POSITION

Sapscript
Estrutura de Chamada e Controle do SAPSCRIPT

http://slidepdf.com/reader/full/academia-sap-abapinterna
CALL FUNCTION “OPEN_FORM”   212/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

CALL FUNCTION “START_FORM” 

CALL FUNCTION “ WRITE_FORM”  

CALL FUNCTION “END_FORM” 

CALL FUNCTION “ CLOSE_FORM”  

Sapscript
PROGRAMA DE POVOAMENTO DE SAPSCRIPT
http://slidepdf.com/reader/full/academia-sap-abapinterna 213/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Controla impressão formulário através de:

- Seleção e Processamento dos Dados


- Abertura

- Inicialização
- Envio dados para formulário
- Finalização
- Fechamento

Sapscript
ABERTURA
http://slidepdf.com/reader/full/academia-sap-abapinterna 214/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
 A abertura de um formulário gera automaticamente a inicialização de um
formulário.

FUNÇÃO:
Call function „OPEN_FORM‟ 

PARÂMETROS ESSÊNCIAIS:
DEVICE
FORM
LANGUAGE

Sapscript – OPEN_FORM
- TDCOPIES (Número de Cópias)  
- TDDEST (Dispositivo de Saída)  
- TDPREVIEW (Print Preview) 
http://slidepdf.com/reader/full/academia-sap-abapinterna 215/239
- TDIMMED (Saída Imediata)
5/21/2018
call function 'OPEN_FORM ' AcademiaSAPAbap_Interna-slidepdf.com
exporting
* APPLICATION = 'TX'
* ARCHIVE_INDEX = ' '
* ARCHIVE_PARAMS = ' ' 
DEVICE = 'PRINTER' ou 'SCREEN'
* DIALOG = 'X' ou '' (Tela de características de impressão) 
FORM = 'Z_SCRIPT'  (Nome do Formulário) 
LANGUAGE = 'P' (Idioma do Formulário) 
* OPTIONS = ITCPO (Estrutura com todas as características)
* importing
* language =
* new_archive_params =
* result = 
exceptions
canceled = 1
device = 2

form
options = 3
4
unclosed = 5
others = 6.

Sapscript
INICIALIZAÇÃO
http://slidepdf.com/reader/full/academia-sap-abapinterna 216/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Permite
um novoaformulário
geração de vários
para cadaformulários
situação. diferentes, como se estivesse abrindo

FUNÇÃO:
Call function „START_FORM‟ 

PARÂMETROS ESSÊNCIAIS:
FORM
LANGUAGE

Sapscript – START_FORM
Este comando não é obrigatório e pode não ser utilizado caso não haja necessidade da quebra e criação de vários
formulários para uma só seleção de dados.
 A função é muito similar à função OPEN_FORM, e novamente os parâmetros mais importantes são o nome (FORM)
http://slidepdf.com/reader/full/academia-sap-abapinterna 217/239
e o idioma (LANGUAGE) do formulário.
Para que se possa utilizar um comando START_FORM é obrigatório que um comando de OPEN_FORM tenha sido
5/21/2018 Academia
executado. Caso isso não seja feito um erro de sintaxe SAP
irá Abap_Interna-slidepdf.com
aparecer.

call function 'START_FORM 


'
exporting
* ARCHIVE_INDEX = ' '
FORM = ' '
LANGUAGE = ' '
* STARTPAGE = ' '

*
* PROGRAM
importing = ' '
* language =
exceptions
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
others = 6.

Sapscript
ENVIO DADOS AO FORMULÁRIO
http://slidepdf.com/reader/full/academia-sap-abapinterna 218/239
Depois
5/21/2018
da seleção e processamento dos dados, envia-se os dados ao
formulário.
AcademiaSAPAbap_Interna-slidepdf.com

FUNÇÃO:
Call function „WRITE_FORM‟ 

PARÂMETROS ESSÊNCIAIS:
ELEMENT
WINDOW

Sapscript – WRITE_FORM
Um ponto importante que deve ser observado é que não é possível utilizar tabelas internas e variáveis do programa
para a impressão dos dados no SAPSRIPT. Portanto, se algum dado que deva ser impresso estiver numa tabela
interna ou variável, este deve ser copiado para uma estrutura para que possa ser enviado ao SAPSCRIPT.
http://slidepdf.com/reader/full/academia-sap-abapinterna 219/239
 A impressão dos dados nas janelas na maioria das vezes é feita simultaneamente com a seleção dos dados, ou seja, a
medida que os dados são selecionados, são enviados imediatamente para o formulário.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
O comando para impressão dos dados é a seguinte função:

call function ' WRITE_FORM 


'
exporting
ELEMENT = ' '
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* importing
* pending_lines =
exceptions
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5

window
others 6
= 7.

Sapscript – WRITE_FORM
Dois parâmetros são os mais importantes:

Element – Determina qual Data Element será utilizado dentro do Sapscript


Window – Janela na qual os dados devem ser impressos.
http://slidepdf.com/reader/full/academia-sap-abapinterna 220/239
5/21/2018 Neste
Para asponto ficado
janelas evidente a diferenciação
tipo MAIN, entre
deosescrita
Academia
cada comando tipos
SAP de janela MAIN
Abap_Interna e demais
-slidepdf.com
(write_form) significa umajanelas.
nova linha no formulário e o
valor a ser impresso é o valor que o campo armazena no momento do comando de impressão.
Por exemplo, digamos que o campo MARA-MATNR tenha o valor „1234‟ e que um comando de impressão seja
dado para a janela MAIN que irá imprimir este campo. Logo em seguida uma nova seleção da tabela MARA é feita e o
campo MATNR agora vale „5678‟. Se uma nova impressão na janela MAIN for executada o resultado será o seguinte:  

1234
5678

Já as janelas que não forem do tipo MAIN imprimem os dados uma única vez, no final da impressão do formulário
ou na quebra de página, com os valores armazenados nos campos no momento do encerramento ou no momento da
quebra, e não no momento da escrita (write_form), ou seja, se no exemplo anterior fosse utilizada uma janela não-main,
o resultado final seria somente 5678.
Na realidade, a utilização de um comando WRITE_FORM numa janela não-main é utilizada para a escolha de
qual elemento de texto será utilizado para a impressão dos dados.
Exemplo: Uma janela HEADER não-main contém dois elementos de texto chamados FRASE1 e FRASE2 da
seguinte forma:
/E FRASE1
&MARA-MATNR& Teste de Frase 1
/E FRASE2
&MARA-MATNR& Teste de Frase 2

Sapscript – WRITE_FORM
Se um comando WRITE_FORM for executado para a janela HEADER utilizando o elemento de texto FRASE1,

call function 'WRITE_FORM'


exporting
ELEMENT = 'FRASE1'
http://slidepdf.com/reader/full/academia-sap-abapinterna 221/239
* FUNCTION = 'SET'
* TYPE = 'BODY'
5/21/2018 WINDOW = 'HEADER‘   SAPAbap_Interna-slidepdf.com
Academia

estará sendo indicado ao programa que, ao se encerrar o formulário, deve ser impresso o elemento de texto
FRASE1 para a janela HEADER (somente um elemento de texto é utilizado para cada janela não-main).
No caso do exemplo, se o campo MATNR for igual a „1234‟ no encerramento do formulário, seria impressa a
seguinte frase:

Teste de Frase 1

O elemento de texto a ser impresso será sempre o último a ser selecionado antes do final ou da quebra de
página.
Se nenhum for selecionado, ao encerrar o formulário ou mudar de página serão impressos os dados que não
pertençam a nenhum elemento de texto. Portanto no caso de um campo que deva ser impresso sempre em
todas
as páginas, como numero de página por exemplo, basta colocá-lo fora de qualquer elemento de texto e não
selecionar nenhum elemento de texto para a janela que, automaticamente, este dado será impresso em todas as
páginas.

Sapscript
FINALIZAÇÃO FORMULÁRIO
http://slidepdf.com/reader/full/academia-sap-abapinterna 222/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

FUNÇÃO:
Call function „END_FORM‟ 

FECHAMENTO FORMULÁRIO

FUNÇÃO:
Call function „CLOSE_FORM‟ 

Sapscript – END_FORM/CLOSE_FORM
END FORM -  Serve para finalizar um formulário.

call function 'END_FORM'


http://slidepdf.com/reader/full/academia-sap-abapinterna 223/239
importing
RESULT =
5/21/2018 exceptions AcademiaSAPAbap_Interna-slidepdf.com
unopened = 1
others = 2.

CLOSE FORM -  Serve para fechar um formulário.

call function 'CLOSE_FORM'


importing
RESULT = ' '
Tables
* OTFDATA = 
exceptions
unopened = 1
others = 2.

Sapscript
INFORMAÇÕES ÚTEIS
Transação SE71
http://slidepdf.com/reader/full/academia-sap-abapinterna 224/239

Tabela TTXFP
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com
Programa RSTXSCRP (download / upload)
Programa RSTXLDMC (tipo .TIF)
Programa RSTXPDFT4 (download .PDF quando gerar na sp01)

DICAS
* Nunca esquecer de ativar o formulário no idioma original, caso contrário
ficará bloqueado as modificações nos outros idiomas.
* Visualização x Impressão mesma máquina (impressora / basis SPAD)
* Visualização distinta em computadores distintos (versão Sapgui)
* Não deletar janelas e elementos de textos

Exercício
1) SAPScript
Nome do formulário : Z_FORM##  Nome do programa : Z_STK##_SCRIPT
Crie um formulário com o layout :
http://slidepdf.com/reader/full/academia-sap-abapinterna 225/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Para imprimir o logotipo, use o programa RSTXLDMC que converte imagens.


Os dados devem ser extraídos das tabelas : EKPO (Item do pedido).
EKKO (Cabeçalho do pedido).
LFA1 (Dados Mestre de Fornecedor)

http://slidepdf.com/reader/full/academia-sap-abapinterna 226/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Exits

Exits
Definição

Exist são pontos em locais pré-definidos pela SAP, onde o cliente pode
http://slidepdf.com/reader/full/academia-sap-abapinterna 227/239
incluir códigos próprios, por alguma necessidade específica.
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Tipos de exit :

User-Exit

Field-Exit

Menu-Exit

 A chamada de uma exit no código Abap, se assemelha a chamada de um


módulo de funções qualquer. Sintase : call customer-function ‘…’.

Exits
User-Exit

 A criação de user-exit acontece pela transação CMOD/SMOD.


http://slidepdf.com/reader/full/academia-sap-abapinterna 228/239
O primeiro passo é saber se existe uma user-exit, que se possa alterar.
5/21/2018 Isto pode ser feito, procurando-se no código Abap uma chamada de um
AcademiaSAPAbap_Interna-slidepdf.com

módulo de função customizá-vel… 

call customer-function… 

ou, através da execução de um programa Abap que varre outros


programas buscando user-exits… 

Exits – CMOD / User-Exit
 As ampliações SAP são agrupadas em projetos de ampliação sob um nome de projeto. O projeto de ampliação consiste
em pelo menos uma ampliação SAP:
 As ampliações SAP que estão no mesmo projeto de ampliação são sempre ativadas e desativadas em conjunto.
 As ampliações SAP foram criadas pela SAP e, de forma, geral, são constituídas por vários componentes (por exemplo,
por uma área de tela e pelos exits de função para a transferência de dados).
http://slidepdf.com/reader/full/academia-sap-abapinterna 229/239
Destas ampliações SAP, o cliente seleciona aquelas que pretende processar, reune as mesmas em projetos de
ampliação, processa os componentes e ativa osAcademia
5/21/2018 projetos.
SAPAbap_Interna-slidepdf.com

Exits – CMOD / User-Exit
http://slidepdf.com/reader/full/academia-sap-abapinterna 230/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Projeto :
Características Gerais  Ampliações do projeto.

Exits – CMOD / User-Exit
http://slidepdf.com/reader/full/academia-sap-abapinterna 231/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

 Ampliações e suas
exit relacionadas.

Módulo de função que guarda o


include da aexit.
codificada exit.Onde é

Exits – CMOD / User-Exit
http://slidepdf.com/reader/full/academia-sap-abapinterna 232/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

O inlcude onde fica codificado


as customizações da exit.

Exits
Field-Exit

O Field-Exit se diferencia do user-exit, pois não existe uma entrada no meio


http://slidepdf.com/reader/full/academia-sap-abapinterna 233/239
do código fonte Abap onde este é customizado. Ele existe atrelado a um
5/21/2018 campo/elemento de dados, além de ser necessário amarra-ló a um
AcademiaSAPAbap_Interna-slidepdf.com

programa e uma tela, específicos.

Para se criar um Field-Exit, ou mesmo, saber se o elemento possibilita uma


exit, utilizamos a execução do programa RSMODPRF.

Onde este, lista todos os Field-Exits já criados e nos dá a opção de criação


de outros.

Exits – Field-Exit
Programa para busca/manutenção
de field-exist.
http://slidepdf.com/reader/full/academia-sap-abapinterna 234/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

Exits – Field-Exit
http://slidepdf.com/reader/full/academia-sap-abapinterna 235/239
5/21/2018
Field-Exits existentes AcademiaSAPAbap_Interna-slidepdf.com
e seus status.
Quando se opta pela criação
de novo field-exit, ele solicita
qual o campo que se deseja
customizar.

Exits  – Field-Exit
Field-exit   Criar/Modificar  –
R e q u i si t o s:
a) nome do programa Standard onde se encontra o campo onde se quer colocar codificação
http://slidepdf.com/reader/full/academia-sap-abapinterna 236/239
b) número da tela
5/21/2018
c) nome do elemento de dados do campoAcademiaSAPAbap_Interna-slidepdf.com
Transação CMOD

1) Rodar o programa RSMODPRF, opção criar.


2) Fornecer nome do elemento de dados
Na tela de Function Builder:
3) Escolher um grupo de funcões(customizado) de acordo com o módulo
4)
5) Gravar o novo
Flegar linha domódulo de de
elemento função (somente tela Adminstracao) e voltar (tela do passo 2)
dados
6) No menu: Atribuir prog/tela
7) Fornecer nome do programa e tela standard
8) Flegar linha do elemento de dados
9) No menu: Processar MF  
10) Codificar ABAP

Obs.: Se um campo com field-exit codificado por alguma razão aparecer inibido, este field-exit não será
executado.
Uso de SET/GET: se o campo da tela contiver um field-exit com SET, este SET será limpo da memória se
em
telas posteriores existir o mesmo elemento de dados com o campo aberto.
Field-Exit não funcionam em campos check-box ou radio-buttom.

Algumas Transações Úteis


SE09 – Organização de transporte (Utilizado para controlar as request‟s). 
SE11 – Dicionário ABAP (Utilizado para criar, alterar e apagar domínios, elemento de dados, campos, tabelas,
estrutura).
SE16 – Data browser
http://slidepdf.com/reader/full/academia-sap-abapinterna 237/239
SE37 – Módulos de função ABAP. (Utilizado para criar, alterar e apagar funções (Módulos de funções).
SE38
SE39 – Editor
5/21/2018
 –
 Editor de
de programas
tela divididaABAP. (UtilizadaAcademia
para criar, alterar e apagar programas ABAP).
SAPAbap_Interna-slidepdf.com

SE71 – Formulário SAPscript. (Utilizado para criar, alterar e apadar formulários de SapScript).


SE80 – Repository Browser. (Utilizado para criar, alterar e apagar, Programas (On-Line ou Module Pool),
grupos de função, etc.).
SE91 – Atualização de mensagem
SE92 – Mensagens do Log do sistema
SE93 – Códigos de transação (Utilizado para criar, alterar e apagar transações).
SM04  – Visualiza
SM12 – e derruba
 Exibir e eliminar sessões(Utilizado para desbloquear programas, transações, etc.).
bloqueios
SM35 – Moritorar pasta de Batch-Input.
SM37 – Monitora os jobs colocados para processamento
ST05 – Possui várias funções, a mais utilizada e para realizar o trace SQL.(Mostra todos acessos realizados no BD).
ST22 – ABAP análise dump.
SHDB – Registrador transação - batch input. (Utilizado para criar o “mapeamento” para posteriormente criar os
programas para gerar a pasta de batch input.).
CMOD  Gerenciamento
 – Definição
SMOD – de projetos
de ampliações (Exits)
(Exits)
SMARTFORMS – Formulário SmartForm

Click to edit Master title style


http://slidepdf.com/reader/full/academia-sap-abapinterna 238/239
5/21/2018 AcademiaSAPAbap_Interna-slidepdf.com

F I M

http://slidepdf.com/reader/full/academia-sap-abapinterna 239/239

Você também pode gostar