Apostila Abap Atual
Apostila Abap Atual
Apostila Abap Atual
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
Organização de
compras 1000 2000 3000
WM
Armazém 0001 0002 0088
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
Consolidação PA
MM Materiais Ledgers Análise de
Rentabilidade
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
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
Gestão de Pedidos
FI Contabil.
FI CO AM Ativos
CO Contabilid. AM HR Recursos
HR
Financeira de Custos Fixos Humanos
Organizacão de
Rec. Humanos
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
Application Server
Banco de Dados
R/3
Mandante
003
Servidor
DVL
Mandante
120
Request
Task
• 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
• Integração
• Gerenciamento de Dados
– Atribuição
– Descrição e Significado
• Ativação dos Dados
Banco de Dados
R/3
Tabela
Campo 1 Campo 2 Campo 3 Campo 4
BANCO DE DADOS
DEFINIÇÃO FÍSICA DA TABELA
“DB UTILITY”
Banco de Dados
R/3
Controle de
Interpretador Interfaces Módulos
Diálogo
AMBIENTE DE EXECUÇÃO DA APLICAÇÃO
Campo
Usa
Usa
Domínio
View
Banco de
Dados R/3
Campo com
Chave Chave Estrangeira
Primária
Tabela de Verificação
CAMPO5 CAMPO6 CAMPO7
Chave
Primária
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
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
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
Chave
Primária
Tabela de Verificação
CAMPO5 CAMPO6 CAMPO7
Chave
Primária
T1 S1 S1
(Transp.) S2 S1
.INCLUDE US
F1 ...
... ...
F1 F1
T2 .INCLUDE US
(Transp.)
F2 ...
... ...
Ativação
Versão ativa
Campo 1 Campo 2 Campo 3 Campo 4
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
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
Ativação no Dicionário
3
LOCK
3
“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
Analisar o LOG
Passo 1 : OK
Passo 2 : OK
Passo 3 :ERRO ! ! !
BANCO DE DADOS
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
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
Sistema de Comunicação
Processos do BD Buffer do BD
8 - 600 ms
Sistema de Comunicação
Processos do BD Buffer do BD
Programa ABAP/4
select * from TAB where F1 = 4.
Servidor 2 Servidor 1
select * from TAB select * from TAB
where F1 = 8. where F1 = 4.
4
1 2
3
8 7
Servidor 2 Servidor 1
select * from TAB Delete * from TAB
where F2 = 12. where F2 = 12.
5
6
10
Servidor 2 Servidor 1
Sincronização
9
9
Servidor 2
Select * from TAB Servidor 1
where F3. = 20
12
11
JOIN :
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
K
S
K
PROJEÇÃO :
UVERA
Fabnr Krsnr KnameNamnr Buenr Euna Adre
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 .
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.
Header Line
REPORT ZFZTESTE.
APPEND I_BKPF
NAME PRICE
LH 100000
AR 50000
FL 100000000
LH 50000 150000
Soma os campos
P, I e F
REPORT ZFZTESTE.
....
TABLES: BKPF. “Cabeçalho do doc. Contábil
LOOP AT I_BKPF.
WRITE: / SY-VLINE, 2 I_BKPF-BELNR, 13 SY-VLINE, 14 I_BKPF-BUDAT, 20 SY-VLINE.
ENDLOOP.
ENDIF.
IF SY-SUBRC = 0.
IF SY-SUBRC = 0.
I_BKPF-BUKRS = ‘5593’.
MODIFY I_BKPF INDEX SY-TABIX.
ENDIF.
ENDIF.
IF SY-SUBRC = 0.
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.
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.
Programas ABAP/4
ABAP/4 Dictionary BANCO
de
Definição dos dados SELECT........
DADOS
IF SY-SUBRC = 0.
ELSE.
ENDIF.
ENDSELECT.
ENDSELECT.
ENDSELECT.
TABLES: SPFLI.
DATA: MAXFIELD LIKE SPFLI-DISTANCE,
MINFIELD LIKE SPFLI-DISTANCE,
COUNTER TYPE I.
ENDSELECT.
ENDSELECT.
ENDSELECT.
ENDSELECT.
SELECT * FROM <table> INTO TABLE <itab> FOR ALL ENTRIES IN <itab>
WHERE <condição>..
.....
ENDSELECT.
ENDSELECT.
SELECT<a1> <a2> <a3> INTO <f1> <f2> <f3> FROM <table> GROUP
BY...
ENDSELECT.
ENDSELECT.
Í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.
Dados SAP
Externos INTERFACES BANCO SAP
X
Dados
CONSISTÊNCIAS BANCO SAP
Externos
Sessão de
BATCH INPUT
Programa
Banco de Dados
SAP
Arquivo Fonte
SAP R/3
Transação 1 Transação 2
Log
SAP R/3
Tabela
BDC
INCLUDE STRUCTURE
CALL FUNCTION
FILA
BINARY MODE
In
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
ABAP /4
A B C ABAP /4
A B C
A B A A B
B C D A B C
ABRIR ARQUIVO
Gravar Ler
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
* - Parâmetros Obrigatórios
* - Default = ‘ ’ (apagar a sessão)
Mostra as pastas
Análise Mostra os dados da pasta
Log / Estatísticas
Processa em “FOREGROUND”
Processar Mostra apenas os erros
Processa em “BACKGROUND”
REPORT Z_TESTE .
Pág. 01
Nome_arq = arquivo.
Pág. 02
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
FORM ABRE_ARQUIVO_UNIX.
DO.
READ DATASET NOME_ARQ INTO REGISTRO.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.
ENDFORM.
Pág. 04
Pág. 05
IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
EXIT.
ENDIF.
ENDFORM.
Pág. 06
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.
ENDFORM.
Pág. 08
REFRESH BDC_TAB.
LOOP AT REGISTRO.
Pág. 09
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
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ELSE.
WRITE: 'Sessão Criada'.
ENDIF.
ENDFORM.
Pág. 12
Dados
Externos
Programa
ABAP/4
SAP
Verificar os dados
Converter os dados
Analisar resultados
Avaliar os Erros
fazendo de pequenas idéias grandes soluções
Batch-Input X Call Transaction
Arquivo Seqüencial Arquivo Seqüencial
Batch Input
SAP Batch-Input
SAP
Call Transaction
fazendo de pequenas idéias grandes soluções
Call Transaction <Código da Transação>
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>
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
REPORT Z_TESTE .
Pág. 01
START-OF-SELECTION.
NOME_ARQ = ARQUIVO.
IF ALL = 'X'.
MODO = 'A'.
ELSEIF ERRO = 'X'.
MODO = 'E'.
ELSE.
MODO = 'N'.
ENDIF.
Pág. 03
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
Pág. 05
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
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
FORM ABRE_ARQUIVO_UNIX.
DO.
READ DATASET NOME_ARQ INTO REGISTRO.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.
ENDFORM.
Pág. 08
Pág. 09
IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
EXIT.
ENDIF.
ENDFORM.
Pág.10
FORM MENSAGENS.
LOOP AT MSG_TAB.
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
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
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
FORM PREPARA_PASTA_ERRO.
IF CONT = 1.
PERFORM ABRE_BDC.
PERFORM INSERT_BDC.
ELSE.
PERFORM INSERT_BDC.
ENDIF.
ENDFORM.
Pág.14
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.
ENDFORM.
Pág.16
FORM FECHA_BDC.
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.
ENDFORM.
Pág.18