Você está na página 1de 169

INTRODUÇÃO SAP R/3

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos

• O que é SAP R/3


• Funcionais e Basis Components
• Arquitetura
• Projetos
• Navegação

fazendo de pequenas idéias grandes soluções


SAP - R/3

• Gestão Empresarial - ERP


• Integração
• Acesso a informação real e segura
• Tomada de decisão

fazendo de pequenas idéias grandes soluções


FUNCIONAIS
x
BASIS COMPONENTS

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
SAP/R3
Soluções integradas
SD
Vendas e
FI
Contabilidade
Funcionalidades
Distribuição Financeira sofisticadas
MM CO
Gerenc.de Controladoria
Materiais

R/3
PP AM
Plan. da Ativos. Fixos
Arquitetura Produção
Desenhado
Cliente/Servidor para todo
tipo de negócios
QM
Controle de
Cliente / Servidor PS

ABAP/4
Gerenc. de
Sistemas Qualidade
Projetos
abertos PM
Manutenção
OC
Comunicação
Multinacional
da Planta
HR IS
Recursos Solucões
Humanos Setoriais

Modelo de dados
empresariais

fazendo de pequenas idéias grandes soluções


Sistema R/3

 Sales & Distribution : A solução completa para o


gerenciamento integrado de todas tarefas para vendas,
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.

fazendo de pequenas idéias grandes soluções


Sistema R/3

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

fazendo de pequenas idéias grandes soluções


Sistema R/3
 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 para o planejamento de projetos,
processamento e controle.
 Executive Information System (EIS) : Acesso rápido aos
dados, fatos e representações gráficas para decisões
gerenciais.

fazendo de pequenas idéias grandes soluções


Estrutura Organizacional

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

fazendo de pequenas idéias grandes soluções


Módulo FI e suas funções
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

fazendo de pequenas idéias grandes soluções


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

SD FI Contabilidade Geral PM-


Clientes PCB PP
Custos
HR de
Pessoal Projetos PC
Custo de
AM Ativos Produtos

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

Base Dados Documentos

fazendo de pequenas idéias grandes soluções


Contas a Pagar
MM CO

EDI Fornecedor Pagtos EDI


Pedido de Qualificação
compra
de fornecedor
Estatísticas
Antecipações
Recebto.
Promissórias
Pagtos.
Fatura Auditoría
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

fazendo de pequenas idéias grandes soluções


Gestão de Materiais - Processo de
Abastecimento
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

fazendo de pequenas idéias grandes soluções


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

FI Contabil.
FI CO AM Ativos
CO Contabilid. AM HR Recursos
HR
Financeira de Custos Fixos Humanos

fazendo de pequenas idéias grandes soluções


Recursos Humanos
FI / CO
Contabilidade Financeira / Analítica

Gastos de Viagens Salários

Organizacão de
Rec. Humanos

Datos Mestres Planejamento de

HR
Rec. Humanos
de Pessoal
Control de custos
de Rec. Humanos

Relatórios Gestão
estatísticas de Tempos

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

fazendo de pequenas idéias grandes soluções


ARQUITETURA

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Arquitetura em 3 camadas
Presentation Server

Application Server

Banco de Dados
R/3

fazendo de pequenas idéias grandes soluções


Servidores

Servidor Servidor Servidor


DV4 QA4 PR4

Ambiente de Ambiente de Ambiente de


desenvolvimento consolidação produção

fazendo de pequenas idéias grandes soluções


Mandantes

Mandante
003
Servidor
DVL

Mandante
120

fazendo de pequenas idéias grandes soluções


Request’s
Ambiente de desenvolvimento: client 200

Request
Task

fazendo de pequenas idéias grandes soluções


Transporte

Servidor Servidor Servidor


DV4 QA4 PR4

Ambiente de Ambiente de Ambiente de


desenvolvimento consolidação produção

fazendo de pequenas idéias grandes soluções


PROJETOS

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Fases

• 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

fazendo de pequenas idéias grandes soluções


NAVEGAÇÃO

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Dicionário de dados I

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos
• 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

fazendo de pequenas idéias grandes soluções


Dicionário de Dados

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

Banco de Dados
R/3

fazendo de pequenas idéias grandes soluções


Tabela
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

fazendo de pequenas idéias grandes soluções


Dicionário ABAP/4
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”

Banco de Dados R/3


Tabela 1 Tabela 2 Tabela “n”

fazendo de pequenas idéias grandes soluções


Elementos do Dicionário de
Dados

• Estruturas - não armazenam dados


• Tabelas - armazenam dados
• Visões - join de tabelas e restrição da campos
• Campos
• Elementos de dados
• Domínios

fazendo de pequenas idéias grandes soluções


AMBIENTE DE DESENVOLVIMENTO
Modelagem
Ferramentas Telas
de Dados

Banco de Dados
R/3

Controle de
Interpretador Interfaces Módulos
Diálogo
AMBIENTE DE EXECUÇÃO DA APLICAÇÃO

fazendo de pequenas idéias grandes soluções


TABELAS

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Elemento de Dados e Domínios
Banco de
Dados R/3 Tabela

Campo

Usa

Definição Semântica Elemento de Dados

Usa

Definição Técnica Domínio

fazendo de pequenas idéias grandes soluções


Generalizando
Tabela 1 Tabela 2 Tabela 3 Tabela 4 Tabela 5

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

Domínio

fazendo de pequenas idéias grandes soluções


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

fazendo de pequenas idéias grandes soluções


VISÕES

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Visões

View

Tabela 1 Tabela 2 Tabela “n”

Banco de
Dados R/3

fazendo de pequenas idéias grandes soluções


LEVANTAMENTO DE
INFORMAÇÕES

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Funções
• F1 - Ajuda (Help)
• F9 - Informação técnica

fazendo de pequenas idéias grandes soluções


DICIONÁRIO DE DADOS
Parte II

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos
• Tabelas de verificação (check tables)
• Includes
• Como criar objetos no Dicionário de Dados
• Adicionar campos em tabelas já existentes

fazendo de pequenas idéias grandes soluções


Chave Estrangeira

Tabela com chave estrangeira


CAMPO1 CAMPO2 CAMPO3 CAMPO4

Campo com
Chave Chave Estrangeira
Primária

Tabela de Verificação
CAMPO5 CAMPO6 CAMPO7

Chave
Primária

fazendo de pequenas idéias grandes soluções


Exemplo

UKURS
Cód. Depto Cód. Curso Cód. Prof. Descrição

Campo com
Chave Estrangeira
Chave
Primária
UPROF
Cód. Prof. Faixa Salarial

Chave
Primária

fazendo de pequenas idéias grandes soluções


Relacionamento da Chave Estrangeira Chave
Estrangeira

UKURS
Cód.Depto Código Curso Código Prof. Descrição
UPROF 0001 000001 00000012 Matemática
Código Nível
Professor Salarial 0001 000002 00000001 Física
00000001 C1 0002 000001 00000004 Biologia
00000002 C3 0003 000001 00000005 Química
00000003 C4
00000004 C1
...
00000016 C4 Vai Inserir ???
00000017 C2
0001 000003 00000023 Cálculo
00000018 C3
00000019 C2
00000020 C4

fazendo de pequenas idéias grandes soluções


Relacionamento da Chave Estrangeira Chave
Estrangeira

UKURS
Cód.Depto Código Curso Código Prof. Descrição
UPROF 0001 000001 00000012 Matemática
Código Nível
Professor Salarial 0001 000002 00000001 Física
00000001 C1 0002 000001 00000004 Biologia
00000002 C3 0003 000001 00000005 Química
00000003 C4
00000004 C1
...
00000016 C4 Não
00000017 C2
0001 000003 00000023 Cálculo
00000018 C3
00000019 C2 Efeito da definição da Chave Estrangeira:
00000020 C4 Professor “00000023” Não existe na tabela
UPROF
fazendo de pequenas idéias grandes soluções
Tabela de Verificação
Campos com
Chave Estrangeira

Tabela com chave estrangeira


CAMPO1 CAMPO2 CAMPO3 CAMPO4

Chave
Primária

Tabela de Verificação
CAMPO5 CAMPO6 CAMPO7

Chave
Primária

fazendo de pequenas idéias grandes soluções


Includes
Tabela US
USF1 USF2 USF3 ...

Tabela Campo Elemento de dados

T1 S1 S1
(Transp.) S2 S1
.INCLUDE US
F1 ...
... ...

F1 F1
T2 .INCLUDE US
(Transp.)
F2 ...
... ...

fazendo de pequenas idéias grandes soluções


Ativação
Versão ativa
Campo 1 Campo 2 Campo 3

Inclusão do campo 4 na manutenção do Dicionário de Dados

Versão ativa Versão revisada


Campo 1 Campo 2 Campo 3 Campo 1 Campo 2 Campo 3 Campo 4

Ativação

Versão ativa
Campo 1 Campo 2 Campo 3 Campo 4

fazendo de pequenas idéias grandes soluções


Tipos de ativação

Entrada Tipo de Ativação Resultado

UPERS Ativação ONLINE Tabela Ativa

TACOB
... ...
UPERS Ativação BACKGROUND TABL UPERS
... ...
Lista de Objetos
...
R3TR TABL UPERS
Todos os
R3TR DOMA UPENUM Ativação em MASSA objetos
...
da lista estão
Ativos

fazendo de pequenas idéias grandes soluções


Tabela TAB (ATIVA) Tabela TAB (INATIVA)
CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 1 CAMPO 2 CAMPO 3
NUMC 8 CHAR 6 CHAR 60 NUMC 8 CHAR 6 CHAR 30

Tabela TAB Banco de Dados R/3


CAMPO 1 CAMPO 2 CAMPO 3
NUMC 8 CHAR 6 CHAR 60 Índice 1
00000001 ABCDEF TEXT 1
00000002 GHIJKL TEXT 2
Índice 2
00000003 ZXCVBN TEXT 3

fazendo de pequenas idéias grandes soluções


Tabela TAB (ATIVA)
CAMPO 1 CAMPO 2 CAMPO 3
NUMC 8 CHAR 6 CHAR 60 LOCK

1
Tabela TAB (INATIVA)
CAMPO 1 CAMPO 2 CAMPO 3 Tabela é “Presa”
NUMC 8 CHAR 6 CHAR 30

Apaga os Índices
Banco de Dados R/3 2
Tabela QCMTAB Altera nome TAB Índice 1
Campo 1 Campo 2 Campo 3 para QCMTAB Tabela TAB
NUMC 8 CHAR 6 CHAR 60
Campo 1 Campo 2 Campo 3
Índice 2
00000001 ABCDEF TEXT 1 NUMC 8 CHAR 6 CHAR 60
00000002 GHIJKL TEXT 2 2 00000001 ABCDEF TEXT 1
00000003 ZXCVVB TEXT 3
00000002 GHIJKL TEXT 2
00000003 ZXCVVB TEXT 3

fazendo de pequenas idéias grandes soluções


Tabela TAB (ATIVA) Tabela TAB (INATIVA)
CAMPO 1 CAMPO 2 CAMPO 3 CAMPO 1 CAMPO 2 CAMPO 3
NUMC 8 CHAR 6 CHAR 30 NUMC 8 CHAR 6 CHAR 30

Ativação no Dicionário
3
LOCK
3

Tabela Recriada no Banco de Dados

Banco de Dados R/3


Tabela QCMTAB Tabela TAB
Campo 1 Campo 2 Campo 3 Campo 1 Campo 2 Campo 3
NUMC 8 CHAR 6 CHAR 60 NUMC 8 CHAR 6 CHAR 30
00000001 ABCDEF TEXT 1
00000002 GHIJKL TEXT 2
00000003 ZXCVVB TEXT 3

fazendo de pequenas idéias grandes soluções


Tabela TAB (ATIVA)
CAMPO 1 CAMPO 2 CAMPO 3 LOCK
NUMC 8 CHAR 6 CHAR 30

Banco de Dados R/3


Tabela QCMTAB Tabela TAB
Campo 1 Campo 2 Campo 3 Os dados são gravados Campo 1 Campo 2 Campo 3
NUMC 8 CHAR 6 CHAR 60 NUMC 8 CHAR 6 CHAR 30
novamente em TAB
00000001 ABCDEF TEXT 1 00000001 ABCDEF TEXT 1
00000002
00000003
GHIJKL
ZXCVVB
TEXT 2
TEXT 3
4 00000002
00000003
GHIJKL
ZXCVVB
TEXT 2
TEXT 3

fazendo de pequenas idéias grandes soluções


LIVRE
Tabela TAB (ATIVA)
CAMPO 1 CAMPO 2 CAMPO 3 7
NUMC 8 CHAR 6 CHAR 30

“Libera” Tabela

Recria os Índices
Banco de Dados R/3 5
Apaga QCMTAB
6 Tabela TAB Índice 1
Tabela QCMTAB
Campo 1 Campo 2 Campo 3 Campo 1 Campo 2 Campo 3 Índice 2
NUMC 8 CHAR 6 CHAR 60 NUMC 8 CHAR 6 CHAR 30
00000001 ABCDEF TEXT 1 00000001 ABCDEF TEXT 1
00000002 GHIJKL TEXT 2 00000002 GHIJKL TEXT 2
00000003 ZXCVVB TEXT 3 00000003 ZXCVVB TEXT 3

fazendo de pequenas idéias grandes soluções


Solução 1 Solução 2

Analisar o LOG

Passo 1 : OK
Passo 2 : OK
Passo 3 :ERRO ! ! !

fazendo de pequenas idéias grandes soluções


Append
Tabela Campo A Campo B
Campo 1 Campo 2 Campo 3

Campo 1 Campo 2 Campo 3 Campo A Campo B

BANCO DE DADOS

fazendo de pequenas idéias grandes soluções


APPEND
Tabela Campo A Campo B
Campo 1 Campo 2 Campo 3

Nova Versão do SAP (Upgrade)


Campo 1 Campo 2 Campo 3 Campo 4

Campo 1 Campo 2 Campo 3 Campo A Campo B

BANCO DE DADOS
fazendo de pequenas idéias grandes soluções
Tabela
Ativação
Campo 1 Campo 2 Campo 3 Campo 4
APPEND
Campo A Campo B

Campo 1 Campo 2 Campo 3 Campo A Campo B Campo 4

BANCO DE DADOS
fazendo de pequenas idéias grandes soluções
MASTER DATA Em qual TABLESPACE
TRANSACTION DATA deve ser criada a tabela ?
Classe de Dados
ORGANIZACIONAL DATA Os dados são freqüentemente
SYSTEM DATA alterados ?

0 < 500 Kb
1 < 1.5 MB Quantos registros (tamanho)
Tamanho 2 < 6.5 MB a tabela deverá ter ?
3 < 25 MB
4 > 160 MB

SINGLE RECORD
Quais os registros que devem
GENERIC
Tipo de Buffer ser gravados no buffer qdo.
FULL
um registro é lido ?
NO BUFFERING

LOG As alterações dos registros devem ser registrados ou não ?

fazendo de pequenas idéias grandes soluções


Servidor de Aplicações
Programa ABAP/4
select * from UPERS where ...

Interface com Banco de Dados Buffer da Tabela

Sistema de Comunicação

Banco de Dados R/3

Processos do BD Buffer do BD

fazendo de pequenas idéias grandes soluções


Servidor de Aplicações
Programa ABAP/4
0,2 - 6 ms
select * from UPERS where ...

Interface com Banco de Dados Buffer da Tabela

8 - 600 ms
Sistema de Comunicação

Banco de Dados R/3

Processos do BD Buffer do BD

fazendo de pequenas idéias grandes soluções


Buffer Local

Dados de uma tabela ”Buferizada” são Tabela TAB


lidos diretamente do Buffer Local. F1 F2 F3

Programa ABAP/4
select * from TAB where F1 = 4.

Banco de Dados R/3


Tabela TAB
F1 F2 F3

fazendo de pequenas idéias grandes soluções


Buffer Local Buffer Local

Tabela TAB Tabela TAB


F1 F2 F3 F1 F2 F3

Servidor 2 Servidor 1
select * from TAB select * from TAB
where F1 = 8. where F1 = 4.

4
1 2
3

Banco de Dados R/3


Tabela de Sincronização
Tabela TAB
F1 F2 F3

fazendo de pequenas idéias grandes soluções


Buffer Local Buffer Local
Tabela TAB Tabela TAB
F1 F2 F3 F1 F2 F3

8 7
Servidor 2 Servidor 1
select * from TAB Delete * from TAB
where F2 = 12. where F2 = 12.

5
6

Banco de Dados R/3


Tabela de Sincronização
Tabela TAB
F1 F2 F3
Tabela TAB foi alterada
por servidor 1

fazendo de pequenas idéias grandes soluções


Buffer Local Buffer Local
Tabela TAB Tabela TAB
F1 F2 F3 F1 F2 F3

10

Servidor 2 Servidor 1

Sincronização
9
9

Banco de Dados R/3


Tabela de Sincronização
Tabela TAB
F1 F2 F3
Tabela TAB foi alterada
por servidor 1

fazendo de pequenas idéias grandes soluções


Buffer Local Buffer Local
Tabela TAB Tabela TAB
F1 F2 F3 F1 F2 F3

Servidor 2
Select * from TAB Servidor 1
where F3. = 20

12

11

Banco de Dados R/3


Tabela de Sincronização
Tabela TAB
F1 F2 F3

fazendo de pequenas idéias grandes soluções


Join

UKURS UNAMA UPERS


Fabnr Krsnr Prfnr Kname Namnr Buenr Aufga Bekla Fabnr Eunr Euna Adre

JOIN :

VIEW
Fabnr Krsnr Prfnr Kname Namnr Buenr Aufga Bekla Euna Adre

fazendo de pequenas idéias grandes soluções


View
VIEW
Fabnr Krsnr Prfnr Kname Namnr Buenr Aufga Bekla Euna Adre

K
S
K

SELEÇÃO :

VIEW
Fabnr Krsnr Prfnr Kname Namnr Buenr Aufga Bekla Euna Adre

K
K

fazendo de pequenas idéias grandes soluções


View
VIEW
Fabnr Krsnr Prfnr Kname Namnr Buenr Aufga Bekla Euna Adre

K
S
K

PROJEÇÃO :

UVERA
Fabnr Krsnr KnameNamnr Buenr Euna Adre

fazendo de pequenas idéias grandes soluções


INTERNAL TABLES

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos
• Field Strings
• Tabela Interna com Header Line

fazendo de pequenas idéias grandes soluções


Field Strings X Tabela Interna
Lançamento Contábil – Lanc.

Num_Doc Dt_lanc Empresa


Exercício

Lançamento Contábil (List) – Lanc.

Num_Doc Dt_lanc Empresa


Exercício
Header Line

fazendo de pequenas idéias grandes soluções


Declarando Field Strings
DATA: Begin of <nome>,
end of <nome>.

REPORT ZFZTESTE.

DATA:BEGIN OF FIED_BKPF,
FLAG(1) TYPE C, "Flag de controle
BUKRS LIKE BKPF-BUKRS, "Empresa
GJAHR LIKE BKPF-GJAHR, "Exercício contábil
BELNR LIKE BKPF-BELNR, "Nº do doc. contábil
BUDAT LIKE BKPF-BUDAT, "Dt. da lançamento.
END OF FIED_BKPF .

MOVE 'X' TO FIELD_BKPF-FLAG.


......
......
WRITE: / FIED_BKPF-BUKRS,
FIED_BKPF-BELNR.
SKIP 2.
WRITE: / FIELD_BKPF.

fazendo de pequenas idéias grandes soluções


Movendo Valores
MOVE-CORRESPONDING <F1> TO <F2>

REPORT ZFZTESTE.
....
TABLES: BKPF. “Cabeçalho do doc. contábil
DATA:BEGIN OF FIED_BKPF,
FLAG(1) TYPE C, "Flag de controle
BUKRS LIKE BKPF-BUKRS, "Empresa
GJAHR LIKE BKPF-GJAHR, "Exercício contábil
BELNR LIKE BKPF-BELNR, "Nº do doc. contábil
BUDAT LIKE BKPF-BUDAT, "Dt. da lançamento.
END OF FIED_BKPF.

SELECT BUKRS GJAHR BELNR BUDAT FROM BKPF WHERE .....


MOVE-CORESPONDING BKPF TO FIELD_BKPF.
....
ENDSELECT.
CLEAR <F1>. “Associa valores iniciais a cada campo, dependendo do seu tipo

fazendo de pequenas idéias grandes soluções


Declarando Tabelas Internas
(c/ header line)
DATA: Begin of <itab> occurs <n>,
End of <itab>.
REPORT ZFZTESTE.

* Cabeçalho de documento contábil


DATA:BEGIN OF I_BKPF OCCURS 5,
BUKRS LIKE BKPF-BUKRS, "Empresa
GJAHR LIKE BKPF-GJAHR, "Exercício contábil
BELNR LIKE BKPF-BELNR, "Nº do doc. contábil
BUDAT LIKE BKPF-BUDAT, "Dt. da lançamento.
END OF I_BKPF.

BUKRS GJAHR BELNR BUDAT

Header Line

Header line + 5 linhas

fazendo de pequenas idéias grandes soluções


Utilizando Estruturas do
Dicionário
INCLUDE STRUCTURE <TAB>

REPORT ZFZTESTE.

* Cabeçalho de documento contábil


DATA:BEGIN OF I_BKPF OCCURS 5.
INCLUDE STRUCTURE BKPF.
DATA: END OF I_BKPF.

fazendo de pequenas idéias grandes soluções


Preenchimento (c/ header line)
APPEND <ITAB>

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

fazendo de pequenas idéias grandes soluções


Preenchimento (c/ header line)
REPORT ZFZTESTE.
....
TABLES: BKPF. “Cabeçalho do doc. Contábil

DATA:BEGIN OF I_BKPF OCCURS 0,


BUKRS LIKE BKPF-BUKRS, "Empresa
GJAHR LIKE BKPF-GJAHR, "Exercício contábil
BELNR LIKE BKPF-BELNR, "Nº do doc. contábil
BUDAT LIKE BKPF-BUDAT, "Dt. da lançamento.
END OF I_BKPF.

* PREENCHENDO VIA SELECT


SELECT BUKRS GJAHR BELNR BUDAT INTO TABLE I_BKPF
FROM BKPF WHERE
BELNR = ‘7200001555’.

* PREENCHENDO REGISTRO A REGISTRO


I_BKPF-BUKRS = ‘5510’. I_BKPF-GJAHR = ‘1999’.
I_BKPF-BELNR = ‘7200001555’. I_BKPF-BUDAT = ‘25101999’.
APPEND I_BKPF.

fazendo de pequenas idéias grandes soluções


Adicionando Dados (c/ header
line)
COLLECT <ITAB>

NAME PRICE

LH 100000

AR 50000

FL 100000000

LH 50000 150000

Soma os campos
P, I e F

fazendo de pequenas idéias grandes soluções


Ordenando (c/ header line)
SORT <ITAB> BY <F1> <F2>....

REPORT ZFZTESTE.
....
TABLES: BKPF. “Cabeçalho do doc. Contábil

DATA:BEGIN OF I_BKPF OCCURS 0,


BUKRS LIKE BKPF-BUKRS, "Empresa
GJAHR LIKE BKPF-GJAHR, "Exercício contábil
BELNR LIKE BKPF-BELNR, "Nº do doc. contábil
BUDAT LIKE BKPF-BUDAT, "Dt. da lançamento.
END OF I_BKPF.

* PREENCHENDO VIA SELECT


SELECT BUKRS GJAHR BELNR BUDAT INTO TABLE I_BKPF
FROM BKPF WHERE
BELNR = ‘7200001555’.

SORT I_BKPF BY BUKRS GJAHR BELNR.

fazendo de pequenas idéias grandes soluções


Processando Tabelas Internas
LOOP AT <ITAB> . ... ENDLOOP.

* PREENCHENDO VIA SELECT


SELECT BUKRS GJAHR BELNR BUDAT INTO TABLE I_BKPF
FROM BKPF WHERE
BUDAT = ‘25101999’.
IF SY-SUBRC = 0.

SORT I_BKPF BY BUKRS GJAHR BELNR.

LOOP AT I_BKPF.
WRITE: / SY-VLINE, 2 I_BKPF-BELNR, 13 SY-VLINE, 14 I_BKPF-BUDAT, 20 SY-VLINE.
ENDLOOP.

LOOP AT I_BKPF WHERE BUKRS = ‘5510’.


WRITE: / SY-VLINE, 2 I_BKPF-BELNR, 13 SY-VLINE, 14 I_BKPF-BUDAT, 20 SY-VLINE.
ENDLOOP.

LOOP AT I_BKPF FROM INDEX 3 TO 7.


WRITE: / SY-VLINE, 2 I_BKPF-BELNR, 13 SY-VLINE, 14 I_BKPF-BUDAT, 20 SY-VLINE.
ENDLOOP.

ENDIF.

fazendo de pequenas idéias grandes soluções


Lendo Tabelas Internas
READ TABLE <ITAB> WITH KEY.

* PREENCHENDO VIA SELECT


SELECT BUKRS GJAHR BELNR BUDAT INTO TABLE I_BKPF
FROM BKPF WHERE
BUDAT = ‘25101999’.

IF SY-SUBRC = 0.

SORT I_BKPF BELNR.

READ TABLE I_BKPF WITH KEY BELNR = ‘7200001555’.

IF SY-SUBRC = 0.
I_BKPF-BUKRS = ‘5593’.
MODIFY I_BKPF INDEX SY-TABIX.
ENDIF.

ENDIF.

fazendo de pequenas idéias grandes soluções


Modificando Tabelas Internas
INSERT <ITAB> INDEX<I>.
MODIFY <ITAB> INDEX <I>.
DELETE <ITAB> INDEX <I>.

IF SY-SUBRC = 0.

SORT I_BKPF BELNR.

READ TABLE I_BKPF WITH KEY BELNR = ‘7200001555’.

IF SY-SUBRC = 0.
I_BKPF-BUKRS = ‘5593’.
MODIFY I_BKPF INDEX SY-TABIX.
ENDIF.
.....
DELETE I_BKPF INDEX 2.
DELETE I_BKPF WHERE....
DELETE I_BKPF FROM 3 TO 5.

ENDIF.

fazendo de pequenas idéias grandes soluções


Deletando Tabelas Internas (c/
header line)
CLEAR <ITAB> Inicializa o header line

REFRESH <ITAB> Deleta todas as entradas; memória ainda ocupada

FREE <ITAB> Deleta todas as entradas; memória liberada

Obs: para 2 e 3 o header line não é alterado

fazendo de pequenas idéias grandes soluções


Informações sobre Tabelas
Internas
DESCRIBE TABLE <ITAB>... .

DATA: LINHAS TYPE I,


OCORRENCIA TYPE I.

* PREENCHENDO VIA SELECT


SELECT BUKRS GJAHR BELNR BUDAT INTO TABLE I_BKPF
FROM BKPF WHERE
BUDAT = ‘25101999’.

IF SY-SUBRC = 0.
SORT I_BKPF BELNR.
READ TABLE I_BKPF WITH KEY BELNR = ‘7200001555’.
IF SY-SUBRC = 0.
I_BKPF-BUKRS = ‘5593’.
MODIFY I_BKPF INDEX SY-TABIX.
ENDIF.
ENDIF.

DESCRIBE TABLE I_BKPF LINES LINHAS “Nº de linhas preenchidas


OCCURS OCORRENCIA. “Nº de ocorrências na def. da tabela

fazendo de pequenas idéias grandes soluções


OPEN SQL

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos
• Como utilizar as sentenças para acessar e
alterar tabelas no R/3

fazendo de pequenas idéias grandes soluções


Overview

Programas ABAP/4
ABAP/4 Dictionary BANCO
de
Definição dos dados SELECT........
DADOS

fazendo de pequenas idéias grandes soluções


Acesso Simples
SELECT SINGLE * FROM I_BKPF ...

TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT SINGLE * FROM BKPF WHERE BELNR = ‘7200000167’.

IF SY-SUBRC = 0.

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ELSE.

WRITE: / TEXT-001. “Registro não encontrado

ENDIF.

fazendo de pequenas idéias grandes soluções


Loop sem Restrição

SELECT * FROM I_BKPF ...


ENDSELECT.
TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT * FROM BKPF.

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ENDSELECT.

SY-SUBRC = 0 - acesso com sucesso


SY-SUBRC = 4 - não existe o registro selecionado na tabela

fazendo de pequenas idéias grandes soluções


Loop com Restrição

SELECT * FROM I_BKPF WHERE ...


ENDSELECT.
TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT * FROM BKPF WHERE BUDAT < SY-DATUM.

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ENDSELECT.

SY-SUBRC = 0 - acesso com sucesso


SY-SUBRC = 4 - não existe o registro selecionado na tabela

fazendo de pequenas idéias grandes soluções


Especificando Campos
SELECT <c1> <c2> into (<f1>,<f2>) FROM
I_BKPF WHERE ...
ENDSELECT.
TABLES: BKPF. “Cabeçalho do documento contábil.

DATA: C_BELNR LIKE BKPF-BELNR, “Nº do documento contábil


C_BUDAT LIKE BKPF-BUDAT. “Data

SELECT belnr budat INTO (c_belnr,c_budat) FROM BKPF


WHERE BUDAT < SY-DATUM.

WRITE: / C_BELNR, C_BUDAT.

ENDSELECT.

fazendo de pequenas idéias grandes soluções


Especificando Campos
SELECT max ( DISTANCE ) min ( DISTANCE ) COUNT(*)
FROM <TABLE> INTO (...,...,...) WHERE ...

TABLES: SPFLI.
DATA: MAXFIELD LIKE SPFLI-DISTANCE,
MINFIELD LIKE SPFLI-DISTANCE,
COUNTER TYPE I.

SELECT MAX( DISTANCE )


MIN( DISTANCE )
COUNT(*) FROM SPFLI INTO (MAXFIELD, MINFIELD, COUNTER).

WRITE: / TEXT-001, 40 MAXFIELD ,


/ TEXT-002, 40 MINFIELD ,
/ TEXT-003, 35 COUNTER.
IF SY-SUBRC NE 0.
WRITE: / TEXT-004.
ENDIF.

fazendo de pequenas idéias grandes soluções


SELECT num Intervalo

SELECT * FROM <table> WHERE <campo> BETWEEN <f1> and <f2>.

TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT * FROM BKPF WHERE BUDAT BETWEEN ‘01011999’ AND SY-DATUM..

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ENDSELECT.

fazendo de pequenas idéias grandes soluções


SELECT com Template
SELECT * FROM <table> WHERE <campo> LIKE....

TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT * FROM BKPF WHERE BELNR LIKE ‘72%’.

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ENDSELECT.

Os caracteres “_”e “%” possuem significados especiais:

% - espera por qualquer sequência de caracteres


_ - espera por um único caracter

fazendo de pequenas idéias grandes soluções


SELECT com Faixa de Valores
SELECT * FROM <table> WHERE <campo> IN (...,....)..

TABLES: BKPF. “Cabeçalho do documento contábil.

*DEFINE TELA DE ENTRADA


SELECT-OPTIONS: C_BELNR FOR BKPF-BELNR OBLIGATORY.

SELECT * FROM BKPF WHERE BELNR IN C_BELNR..

WRITE: / BKPF-BELNR, BKPF-BUDAT, BKPF-BUKRS.

ENDSELECT.

*PODE-SE ESPECIFICAR OS VALORES


SELECT * FROM BKPF WHERE BUKRS IN (5510,5593).

ENDSELECT.

fazendo de pequenas idéias grandes soluções


Utilizando Tabelas Internas
SELECT * FROM <table> INTO TABLE <itab>....

TABLES: BKPF. “Cabeçalho do documento contábil.

SELECT BELNR BUDAT GJAHR INTO TABLE I_BKPF


FROM BKPF WHERE BUDAT < SY-DATUM.

fazendo de pequenas idéias grandes soluções


Adicionado “For All Entries”

SELECT * FROM <table> INTO TABLE <itab> FOR ALL ENTRIES IN <itab>
WHERE <condição>..

TABLES: BKPF, “Cabeçalho do documento contábil.


BSEG. “itens do documento contábil

.....

SORT I_BKPF BY BELNR.


SELECT belnr bschl GJAHR INTO TABLE I_BSEG
FROM BSEG FOR ALL ENTRIES IN I_BKPF
WHERE BELNR = I_BKPF-BELNR.

fazendo de pequenas idéias grandes soluções


Loop’s encadeados - Forma
inadequada

SELECT * FROM TAB. SELECT * FROM TAB2. ENDSELECT. ENDSELECT.

TABLES: EKKO, EKPO.


SELECT * FROM EKKO.

SELECT EBELP FROM EKPO


WHERE EBELN = EKKO-EBELN.

WRITE: / EKKO-EBELN, EKPO-EBELP, EKKO-LIFNR.

ENDSELECT.

ENDSELECT.

fazendo de pequenas idéias grandes soluções


Adicionando “Group By”

SELECT<a1> <a2> <a3> INTO <f1> <f2> <f3> FROM <table> GROUP
BY...

DATA: CARRID LIKE SFLIGHT-CARRID,


MINIMUM TYPE P DECIMALS 2,
MAXIMUM TYPE P DECIMALS 2.
*
SELECT CARRID MIN( PRICE ) MAX( PRICE )
INTO (CARRID, MINIMUM, MAXIMUM) FROM SFLIGHT
GROUP BY CARRID.

WRITE: /10 CARRID,


20 MINIMUM,
40 MAXIMUM.
ENDSELECT.

fazendo de pequenas idéias grandes soluções


Loop’s encadeados - Forma
inadequada

SELECT * FROM TAB. SELECT * FROM TAB2. ENDSELECT. ENDSELECT.

TABLES: EKKO, EKPO.


SELECT * FROM EKKO.

SELECT EBELP FROM EKPO


WHERE EBELN = EKKO-EBELN.

WRITE: / EKKO-EBELN, EKPO-EBELP, EKKO-LIFNR.

ENDSELECT.

ENDSELECT.

fazendo de pequenas idéias grandes soluções


Loop’s encadeados - Forma
adequada
TABLES: EKKO, “ CABEÇALHO DE DOCUMENTO DE COMPRAS
EKPO. “ ITEM DE DOCUMENTO DE COMPRAS
DATA: W_TABIX LIKE SY-TABIX.

SELECT EBELN LIFNR FROM EKKO INTO TABLE T_EKKO.


IF NOT T_EKKO[] IS INITIAL.
SELECT EBELN EBELP FROM EKPO INTO TABLE T_EKPO
FOR ALL ENTRIES IN T_EKKO
WHERE EBELN = T_EKKO-EBELN.
ENDIF.
SORT T_EKKO BY EBELN.
SORT T_EKPO BY EBELN EBELP.
LOOP AT T_EKKO.
READ TABLE T_EKPO WITH KEY EBELN = T_EKKO-EBELN BINARY SEARCH.
IF SY-SYBRC = 0.
W_TABIX = SY-TABIX.
DO.
WRITE: / T_EKKO-EBELN, T_EKPO-EBELP, T_EKKO-LIFNR.
ADD 1 TO W_TABIX.
READ TABLE T_EKPO INDEX W_TABIX.
IF SY-SUBRC NE 0 OR T_EKPO-EBELN NE T_EKKO-EBELN.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.

fazendo de pequenas idéias grandes soluções


Índices

SELEÇÃO DE DADOS VIA ÍNDICES DA TABELA

ÍNDICE EM UMA TABELA, NADA MAIS É QUE UMA TABELA AUXILIAR QUE CONTÉM A
CHAVE DO ÍNDICE E APONTA PARA A TABELA REAL. É COMO SE ORDENASSE A TABELA
PELOS CAMPOS ÍNDICES, PARA SER FEITO UMA BUSCA DIRETA NA TABELA.

fazendo de pequenas idéias grandes soluções


BATCH-INPUT

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br
Objetivos
• O que é Batch-Input
• Como realizar uma carga através desta técnica
• Call Transaction

fazendo de pequenas idéias grandes soluções


Transferindo Dados Externos
SAP (Host)

Dados SAP
Externos INTERFACES BANCO SAP

X
Dados
CONSISTÊNCIAS BANCO SAP
Externos

fazendo de pequenas idéias grandes soluções


Sistema Externo X
(Legado)

Sessão de
BATCH INPUT

Programa

Banco de Dados
SAP

fazendo de pequenas idéias grandes soluções


Arquivo Sequêncial

Programa de Batch Input

Arquivo Fonte

Função Batch Input

SAP R/3

Tabela 1 Tabela 2 Tabela 3

fazendo de pequenas idéias grandes soluções


Arquivo BANCO
Telas Sequêncial 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

fazendo de pequenas idéias grandes soluções


Arquivo
Sequêncial
Dicionário
READ DATASET ABAP/4
Estrutura BDCDATA
Programa de BATCH INPUT

Tabela
BDC
INCLUDE STRUCTURE

CALL FUNCTION

FILA

fazendo de pequenas idéias grandes soluções


Seqüência para codificação

ABRIR SESSÃO DE BATCH INPUT

INSERIR DADOS DA TRANSAÇÃO

FECHAR SESSÃO DE BATCH INPUT

fazendo de pequenas idéias grandes soluções


Codificação

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.

fazendo de pequenas idéias grandes soluções


OPEN DATASET <nome do arquivo>
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.)

fazendo de pequenas idéias grandes soluções


BINARY MODE TEXT MODE

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

fazendo de pequenas idéias grandes soluções


TRANSFER <campo> TO <nome do arquivo>

READ DATASET <nome do arquivo> INTO <campo>

CLOSE DATASET <nome do arquivo>

DELETE DATASET <nome do arquivo>

fazendo de pequenas idéias grandes soluções


DEFINIR ESTRUTURAS

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
fazendo de pequenas idéias grandes soluções
Funções Para Batch-Input
BDC_OPEN_GROUP
Cliente Client
Nome da Sessão Group
Data Hold
Apagar sessão depois Keep
do processamento
Usuário BDC User

BDC_INSERT
Código da Transação Tcode
Tabela BDC DYNPROTAB

BDC_CLOSE_GROUP

fazendo de pequenas idéias grandes soluções


CALL FUNCTION ‘BDC_OPEN_GROUP’
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)

fazendo de pequenas idéias grandes soluções


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>

fazendo de pequenas idéias grandes soluções


Transação SHDB

fazendo de pequenas idéias grandes soluções


fazendo de pequenas idéias grandes soluções
fazendo de pequenas idéias grandes soluções
fazendo de pequenas idéias grandes soluções
fazendo de pequenas idéias grandes soluções
fazendo de pequenas idéias grandes soluções
fazendo de pequenas idéias grandes soluções
Sessão de Batch Input
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”

fazendo de pequenas idéias grandes soluções


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

fazendo de pequenas idéias grandes soluções


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

fazendo de pequenas idéias grandes soluções


Processada Sessão processada corretamente

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”

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input

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.

Pág. 01

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.


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.


START-OF-SELECTION.

Nome_arq = arquivo.

Pág. 02

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input - Continuação

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

PERFORM OPEN_GROUP.
PERFORM PREPARA_BDC.
PERFORM FECHA_GROUP.

Pág. 03

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação
FORM ABRE_ARQUIVO_WINDOWS.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação

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

Pág. 06

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação
FORM OPEN_GROUP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
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.
Pág. 07

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação

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

ENDFORM.

Pág. 08

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação
FORM PREPARA_BDC.

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 INSERT.
REFRESH BDC_TAB.
ENDLOOP.
ENDFORM.

Pág. 09

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação

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.
APPEND BDC_TAB.
ELSE.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.
CLEAR BDC_TAB.
ENDFORM.

Pág. 10

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação
FORM INSERT.
CALL FUNCTION 'BDC_INSERT'
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 SY-SUBRC NE 0.
WRITE: 'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.
Pág. 11

fazendo de pequenas idéias grandes soluções


Programa Modelo Batch-Input -
Continuação
FORM FECHA_GROUP.

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.
ELSE.
WRITE: 'Sessão Criada'.
ENDIF.
ENDFORM.

Pág. 12

fazendo de pequenas idéias grandes soluções


Formas de Inserir dados no SAP R/3

Dados
Externos

Programa
ABAP/4

Batch Call Direct


Input Transaction Input

SAP

fazendo de pequenas idéias grandes soluções


Etapas para Inserir dados no SAP R/3
Definir Estruturas Antigas

Importar Estruturas SAP

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


fazendo de pequenas idéias grandes soluções
Etapas para Inserir dados no SAP R/3
Analisar dados

Criar estruturas SAP

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
fazendo de pequenas idéias grandes soluções
Batch-Input X Call Transaction
Arquivo Seqüencial Arquivo Seqüencial

Tabela BDC Tabela BDC

Dados em fila CALL


TRANSACTION

Batch Input

Aplicação SAP Aplicação SAP

SAP Batch-Input
SAP
Call Transaction
fazendo de pequenas idéias grandes soluções
Call Transaction <Código da Transação>

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>

fazendo de pequenas idéias grandes soluções


SY-SUBRC

0 - Sucesso
<1000 - Erro 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 - Variável de Mensagem 1
SY-MSGV2 - Variável de Mensagem 2
SY-MSGV3 - Variável de Mensagem 3
SY-MSGV4 - Variável de Mensagem 4

fazendo de pequenas idéias grandes soluções


Batch Input Call Transaction

Código de Retorno Não Sim

Log de Erro Sim Não

Processamento 2 Fases Imediato

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction

REPORT Z_TESTE .

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction – Cont.

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.


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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

DATA: NOME_ARQ LIKE RLGRAP-FILENAME,


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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.
FORM PREPARA_BDC.
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'.
WRITE: / REGISTRO-ID,
REGISTRO-TEL.
PERFORM INSERT.
REFRESH BDC_TAB.
ENDLOOP.
ENDFORM.

Pág. 05

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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.
APPEND BDC_TAB.
ELSE.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.
CLEAR BDC_TAB.
ENDFORM.

Pág. 06

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.
FORM ABRE_ARQUIVO_WINDOWS.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

Pág.10

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

FORM MENSAGENS.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

FORM PREPARA_PASTA_ERRO.

IF CONT = 1.
PERFORM ABRE_BDC.
PERFORM INSERT_BDC.
ELSE.
PERFORM INSERT_BDC.
ENDIF.

ENDFORM.

Pág.14

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.
FORM ABRE_BDC.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.
FORM ABRE_BDC.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
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

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

ENDFORM.

Pág.16

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.
FORM INSERT_BDC.
CALL FUNCTION 'BDC_INSERT'
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 SY-SUBRC NE 0.
WRITE: 'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.
Pág.17

fazendo de pequenas idéias grandes soluções


Programa Modelo Call Transaction –
Cont.

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

fazendo de pequenas idéias grandes soluções


FIM

fazendo de pequenas idéias grandes soluções


www.ssiconsultoria.com.br

Você também pode gostar