Você está na página 1de 63

Treinamento

ABAP

SAP R/3

MÓDULO ABAP

PPROGRAMAÇÃO
DE
INTERFACES
TREINAMENTO

Overview

Programa ABAP

TRANSFER READ DATASET

Seqüência de arquivos

Você pode processar um arquivo sequencial com as declarações READ DATASET (para operações de
leitura) e TRANSFER (para operações de gravação).

Arquivos no servidor de apresentação não podem ser processados com TRANSFER ou READ
DATASET. Eles devem estar localizados no servidor de aplicação.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 1 de 63


TREINAMENTO

Transferência de Dados

Sistema do
Cliente

Programa
do Cliente Seqüência de
Arquivos Sistema
SAP R/3

Programa
SAP

Arquivos sequenciais é a interface entre um sistema do cliente e o Sistema R/3.

É o meio utilizado para importar dados de um sistema do cliente para o Sistema R/3 e vice-versa.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 2 de 63


TREINAMENTO

Processando o Arquivo

Open File

Process File

Close File

Antes do registro de dados poder ser escrito ou lido de um arquivo sequencial, o arquivo deve ser
aberto.

Depois de processado, o arquivo deverá ser fechado.

No programa, você chama o arquivo por seu nome do arquivo absoluto. O nome do arquivo absoluto
consiste no caminho exato e o atual (relativo) nome do arquivo. Um exemplo de um nome do arquivo
atual é. ‘usr/sap/T30/<filename>’.

O formato de nomes de arquivos depende do sistema operacional. Você pode ter acesso a programas
portáteis com o módulo de função FILE_GET_NAME que devolve o nome físico para um determinado
nome do arquivo lógico. Veja também a documentação online para o módulo na transação SE37.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 3 de 63


TREINAMENTO

Abrindo um Arquivo

open dataset <file name>

output
for input
appending

if sy-subrc ne 0.
...

Para abrir um arquivo, você usa a declaração OPEN DATASET <nome do arquivo>. Dependendo se
este tem êxito, SY-SUBRC é fixado em 0 ou 8. Erros são ignorados.

Se você não especifica nenhuma opção adicional, o arquivo é aberto para leitura.

Possíveis opções:

FOR OUTPUT

Abre o arquivo para gravação. Se o arquivo já existe, seus conteúdos são apagados, mas isto só se
aplica depois do fim do programa. Se a declaração acontece em um programa, o cursor simplesmente é
posicionado no começo do arquivo. Você tem que especificar CLOSE DATASET para apagar o
arquivo. Se o arquivo não existe, ele é gerado.

FOR INPUT

Abre um arquivo existente para leitura. Se o arquivo já está aberto, o cursor é posicionado no começo
do arquivo. Você não tem que especificar FOR INPUT explicitamente.

FOR APPENDING

Abre o arquivo para gravar no fim do arquivo. Se o arquivo não existe, é gerado. Se o arquivo já está
aberto, o cursor é posicionado no fim.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 4 de 63


TREINAMENTO

Abrindo um Arquivo (Binary e Text Mode)

open dataset <file name>

output
for input
appending

in binary mode
text mode

if sy-subrc ne 0.
...

Você pode escolher abrir um arquivo em modo binário ou em modo de texto.

Opções possíveis:

EM MODO BINÁRIO

Os dados não são interpretado pelas operações de leitura e escrita READ DATASET e TRANSFER.
As áreas de dados especificadas para estas palavras chaves são lidas ou gravadas diretamente. Você não
precisa especificar explicitamente IN BINARY MODE (default).

EM MODO DE TEXTO

Se você abre um arquivo com esta opção, o sistema assume que o arquivo tem estrutura de linha. Cada
vez que READ DATASET ou TRANSFER é executado, uma linha é sempre lida ou gravada e os
dados sempre são processados até a seleção de end-of-line. Se a área de dados for maior do que a linha
a ser lida, a área restante é preenchida com espaços em branco. Se for menor, o final da linha será
perdido.

O default é para o arquivo ser aberto em modo binário.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 5 de 63


TREINAMENTO

Modo Binário e Modo de Texto

Modo Binário Modo Texto

Programa Programa
ABAP ABAP

Programa Programa
ABAP ABAP

O exemplo ilustra a diferença entre modo binário e modo de texto:

Três campos de diferentes tamanhos são transferidos a qualquer momento. Os dados são lidos em três
campos do mesmo tamanho.

No modo de texto, a operação específica do sistema line-end caracter é fixada após cada registro de
dados.

Espaços em brancos ao término de um registro de dados não são suprimidos em modo de texto.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 6 de 63


TREINAMENTO

Abrindo um Arquivo – AT POSITION

open dataset <file name>

at position <position>

message <field>

As adições seguintes existem para a declaração OPEN:

AT POSITION <position>

Com esta adição, você pode especificar uma posição de arquivo (em bytes) desde o princípio do
arquivo. Não é possível posicionar o cursor antes do início do arquivo.

Embora esta adição possa ser usada junto com IN TEXT MODE, isto gera uma pequena sensação de
como o formato físico de um arquivo de texto é largamente dependente no sistema operacional.

MENSAGEM <field>

Se ocorrer um erro ao abrir o arquivo, a mensagem do sistema operacional associada é armazenada no


campo <field>.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 7 de 63


TREINAMENTO

Transferindo Registros de Dados

transfer <field> to <file name>.

sequential
file
data
record

Cada declaração TRANSFER transfere o registro de dados a um arquivo sequencial.

Antes de executar o comando TRANSFER, você deve mover os registro de dados em um campo ou
uma estrutura.

Estruturas são campos string ou áreas de trabalho de tabela.

A execução da declaração TRANSFER depende do modo:


- Modo binário: Escreve o tamanho do campo ou estrutura.
- Modo de texto: Escreve uma linha.

Se o arquivo especificado não está aberto, a declaração TRANSFER tenta abrir o arquivo <nome do
arquivo> FOR OUTPUT (IN BINARY MODE) ou usando as adições da última declaração OPEN
DATASET para este arquivo.

Erros que ocorrem durante a declaração TRANSFER resultam no término do programa.

O parâmetro adicional LENGHT <tamanho> da declaração TRANSFER lhe permite especificar o


tamanho em bytes (no formato TRANSFER <estrutura> TO <nome do arquivo> LENGHT
<tamanho>). Neste caso, o número exato de caráter especificado <tamanho> é transferido. Se a
estrutura é menor, o registro é aumentado (com espaços em branco em modo de texto e hexadecimal
zero em modo binário). Se a estrutura é maior, o registro é truncado.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 8 de 63


TREINAMENTO

Lendo Registros de Dados

read dataset <file name> into <field>.

sequential
file
data
record

Cada declaração READ DATASET lê um registro de um arquivo sequencial em um campo ou


estrutura. Estruturas são campos string ou áreas de trabalho de tabela.

A execução da declaração READ DATASET depende do modo:


- Modo binário: Lê o tamanho da estrutura.
- Modo de texto: Lê uma linha.

Se o arquivo especificado não está aberto, READ DATASET tenta abrir o arquivo (IN BINARY FOR
INPUT ou com as opções da última declaração OPEN DATASET para este arquivo).

Se o fim do arquivo é alcançado, SY-SUBRC é fixado a 4. Caso contrário é fixado a 0. Se o arquivo


não pode ser aberto, SY-SUBRC contém o valor 8. Erros resultam no término do programa.

READ DATASET, como TRANSFER, não executa conversões implícitas. O dados são lidos como
foram escritos.

O parâmetro adicional LENGHT <tamanho> da declaração READ DATASET lhe permite especificar
uma tamanho em bytes (no formato READ DATASET <nome do arquivo> INTO <estrutura>
LENGHT <tamanho>). Neste caso, o número exato de caráter especificado em <tamanho> será lido no
registro de dados na estrutura. Se a estrutura é menor, o registro é aumentado (com espaços em branco
em modo de texto e com zeros de hexadecimal em modo binário). Se a estrutura for maior, o registro
será truncado.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 9 de 63


TREINAMENTO

Fechando / Deletando Arquivos Sequenciais

close dataset <file name>.

delete dataset <file name>.

Você usa a declaração CLOSE DATASET <nome do arquivo> para fechar uma seqüência de arquivos
explícitos.

Em um programa, todos os arquivos abertos são automaticamente fechados cada vez que a tela muda, e
então reabrem exatamente como eles estavam antes de processados.

Ao término de um programa, todos os arquivos estão fechados.

A vantagem de usar OPEN DATASET é que você pode usar a adição MESSAGE para evitar uma
finalização programada se um erro acontecer quando estiver abrindo o arquivo (SY-SUBRC = 8).
Além, você deve estar atento que, em casos onde um arquivo ser lido, ou gerado e lido, várias vezes no
mesmo relatório, só abertura automática ou fechamento garantem que o cursor será reposicionado no
começo do arquivo.

Um arquivo não é fechado imediatamente quando READ DATASET chega o fim de um arquivo.

Você pode usar o DELETE DATASET <nome do arquivo> para apagar um seqüência de arquivos. Se
tiver sucesso, SY-SUBRC é fixado a 0.

Você pode exibir o estado atual do arquivo com debbug escolhendo Goto -> System -> Sytem areas e
entrando então (ou selecionando) DATASETS.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 10 de 63


TREINAMENTO

Criando um Arquivo

report zexemplo.
tables sflight.

data: begin of rec,


carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
end of rec.

parameters
file (20) default ‘/tmp/zexemplo’ lower case.

start-of-selection.
open dataset file for output.

get sflight.
move-corresponding sflight to rec.
transfer rec to file.

write: / rec-carrid, rec-connid,


/ rec-fldate, rec-planetype.
uline.

end-of-selection.
close dataset file.

Primeiro você define a estrutura a ser transferida. Neste exemplo, é um campo string, mas também
poderia ser um campo de ajuda, o cabeçalho de uma tabela interna ou uma área de trabalho do ABAP
Dictionary.

O campo string também pode ser codificado em um relatório include.

Depois, você deve preencher a estrutura. Em princípio, podem ser usadas todas as declarações que
executam uma tarefa de valor aqui. Exemplos incluem MOVE, COMPUTE, MOVE-
CORRESPONDING, MOVE TO e WRITE TO.

Finalmente, você transfere a estrutura com a declaração TRANSFER.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 11 de 63


TREINAMENTO

Estruturas do ABAP Dictionary

report zexmplo1.
tables: sflight, sbc420a.
parameters
file (20) default ‘/tmp/zexemplo’ lower case.
get sflight.
move-corresponding sflight to sbc420a.
transfer sbc420a to file.

write: / sbc420a -carrid, sbc420a -connid,


/ sbc420a -fldate, sbc420a -planetype.
uline.
Dict.

table structure sbc420a.


-----------------------------------------------------------------------
name type lenght meaning
-----------------------------------------------------------------------
sbc420a-carrid char 03 short description of airline company
sbc420a-connid numc 04 code for flight connection
sbc420a-fldate dats 08 flight date
sbc420a-planetype char 10 aircraft type

report zexemplo2.
tables: sflight, sbc420a.
data: begin of rec.
include structure sbc420ª
data: end of rec.
parameters (20) default ‘/tmp/zexemplo’ lower case.
get sflight.
move-corresponding sflight to rec.
transfer rec to file.
write: / rec-carrid, rec-connid,
/ rec-fldate, rec-planetype.
uline.

Você também pode usar estruturas do ABAP Dictionary para transferência de dados. Para fazer isto,
declare a estrutura com TABLES.

Após isso, em seu programa, utilize qualquer um dos seguintes procedimentos:


- use a área de trabalho declarada com TABLES
- copie a estrutura para seu campo string com INCLUDE STRUCTURE.

Você pode exibir a estrutura do ABAP Dictionary no Editor ABAP com o comando de SHOW.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 12 de 63


TREINAMENTO

Lendo um Arquivo

report zexemplo.
tables sflight.

data: begin of rec,


carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
planetype like sflight-planetype,
end of rec.

parameters file (20) default ‘/tmp/zexemplo’ lower case.

start-of-selection.
open dataset file for input.

do.
read dataset file into rec.
if sy-subrc ne 0.
exit.
endif.
write: / rec-carrid, rec-connid,
/ rec-fldate, rec-planetype.
uline.

enddo.
close dataset file.

Primeiro você deve definir a estrutura a ser lida. Neste exemplo, é um campo string. Também pode ser
codificada num relatório include.

As estruturas a serem usadas com os comando READ DATASET e TRANSFER devem Ter o mesmo
lay-out.

Você lê os registros de dados em sua estrutura dentro um loop e os processa.

READ DATASET não requer um banco de dados lógico. Você pode analisar seus dados extraídos
junto com dados de qualquer banco de dados lógico (o qual você especifica então nos atributos de
relatório).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 13 de 63


TREINAMENTO

Incluindo dados no final do Arquivo

report zexemplo.
tables sflight, sbc42a.

parameters file (20) default ‘/tmp/zexemplo’ lower case.

start-of-selection.
open dataset file for appending in binary mode.

get sflight.
move-corresponding sflight to sbc420a.
transfer sbc420a to file.
write: / sbc420a-carrid, sbc420a-connid.

end-of-selection.
close dataset file.

Para gravar registros de dados no final do arquivo, você usa a cláusula FOR APPENDING na
declaração OPEN DATASET.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 14 de 63


TREINAMENTO

Formato Variável (Gravação)

report zexemplo.
tables sflight, sbc42a.
include zexemplo1.
parameters file (20) default ‘/tmp/zexemplo’ lower case.

start-of-selection.
open dataset file for output in binary mode.

get sflight.
move-corresponding sflight to rec1.
move ‘A’ to rec1-flag.
transfer rec1 to file.
write: / rec1-carrid, rec1-connid, ...

get sbook.
move-corresponding sbook to rec2.
move ‘B’ to rec2-flag.
transfer rec2 to file.
write: / rec2-bookid, rec1-custid, ...

end-of-selection.
close dataset file.

O exemplo gera um arquivo sequencial com registros de dados de estruturas diferentes.

O programa include é definido como segue:

data: begin of rec1, flag.


include estructure sbc42oa.
data: end of rec1.
data: begin of rec2, flag.
include estructure sbc42ob.
data: end of rec2.

A estrutura SBC42OA é usada para dados de vôo, enquanto a estrutura SBC42OB dados de reserva de
lugares.

Uma flag deve indicar se o próximo registro de dados contém dados de vôo ou dados de reserva.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 15 de 63


TREINAMENTO

Formato Variável (Read)

report zexemplo.
tables sbc42a, sbc42b.
data: flag.

parameters file (20) default ‘/tmp/exemplo’ lower case.

start-of-selection.
open dataset file for input in binary mode.

do.
read dataset file into flag.
if sy-subrc ne 0.
exit.
endif.
case flag.
when ‘a’.
read dataset file into sbc420a.
write: / sbc420a-carrid, sbc420a-connid,
sbc420a-fldate, sbc420a-planetype.

when ‘b’.
read dataset file into sbc420b.
write: / sbc420b-bookid, sbc420b-custid,
sbc420b-custyp, sbc420b-class.

endcase.
enddo.

end-of-selection.
close dataset file.

O programa lê os registros de dados dos arquivo criados previamente por um programa.

O programa assume que um ID (‘A’ ou ‘B’) precede cada registro de dados.

O arquivo é aberto em modo binário e os registros são lidos de acordo com o tamanho da estrutura
especificado.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 16 de 63


TREINAMENTO

Definindo Estruturas - Resumo

define structures

open file

write read

fill structure read data record

transfer structure process data record

YES more more YES


data data
records records

NO NO
close file

Processando um arquivo no programa, você define as estruturas requeridas para os registros de dados
com as TABLES ou declaração DATA primeiro. O programa usa estas estruturas como buffers internos
para os registros de dados.
Você então abre a seqüência de arquivos para ser lida ou escrita com a declaração OPEN.
Quando escreve o arquivo, você transfere as estruturas cheias para o arquivo com declarações
TRANSFER.
Quando lê o arquivo, você preenche as estruturas montadas para os registros de dados com READ
DATASET para mais adiante ser processado no programa.
Para fechar o seqüência de arquivos, você encerra o arquivo que esta sendo processado com a
declaração CLOSE DATASET.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 17 de 63


TREINAMENTO

Overview

read dataset

transfer

Application ABAP program


server files

upload

download

Presentation
server files

Programas ABAP são executados no servidor de aplicação e tem acesso aos arquivos sequenciais.

Você também pode usar um programa ABAP para processar arquivos locais (que pertencem ao
servidor de apresentação).

Você processa um arquivo sequencial no servidor de aplicação utilizando programas ABAP com as
declarações READ DATASET e TRANSFER que lhe permitem copiar de/para dados de um campo
string.

Você processa um arquivo sequencial local no servidor de apresentação com módulos de função
(UPLOAD e DOWNLOAD). Estes copiam dados para uma tabela interna.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 18 de 63


TREINAMENTO

DOWNLOAD e UPLOAD

O módulo de função DOWNLOAD carrega os conteúdos de uma tabela interna para um arquivo
sequencial local.

O módulo de função UPLOAD carrega os conteúdos de um arquivo sequencial local para uma tabela
interna.

Para o arquivo local, você especifica o nome do arquivo absoluto (ou seja, o caminho completo, por
exemplo ‘/tmp/bc 1 80/myfile’ para o UNIX arquivo myfile no diretório /tmp/bc 180 ou ‘C: AC 180
MYFILE.ABA’ para o OS/2 arquivo MYFILE.ABA no diretório AC 180 na unidade de disco C).

O diretório deve ser conhecido ao servidor de apresentação.

A escolha de nomes satisfatórios de arquivo é responsabilidade do cliente.

O sistema pede o nome do arquivo e o tipo de arquivo interativo.

O dados são convertido de acordo com o tipo de arquivo.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 19 de 63


TREINAMENTO

Módulo de Função Download

call function ‘download’

exporting
bin_filesize = <file length for binary files>
codepage = <do not use>
filename = <file name - default value>
filetype = <file type - default value
item = <header for file dialog>
mode = <write mode>
wk1_n_format = <value column format for wk1 file type
wk1_n_syze = <value column width for wk1 file type
wk1_t_format = <text column format for wk1 file type
wk1_t_format = <text column width for wk1 file type

importing
act_filename = <file name – entered value>
act_filetype = <file type – entered value>
filesize = <number of bytes downloaded>

tables
data_tab = <transfer file>

Para o módulo de função DOWNLOAD, você precisa de uma tabela interna para a transferência de
dados. Você define esta tabela de acordo com sua estrutura de dados no começo do programa e então
preenche de dados.

Você usa o parâmetro MODE para definir o modo de escrever (‘A’ para estender um arquivo, ‘ ‘ criar
um arquivo novo).

A especificação de valores default para o nome do arquivo, tipo de arquivo e um cabeçalho para o
diálogo de arquivo é opcional.

Os parâmetros de IMPORT especificam os valores entrados pelo usuário para o nome do arquivo, tipo
de arquivo e o número de bytes a serem carregados.

Você só especifica um valor pelo parâmetro de exportação CODEPAGE quando executando um


DOWNLOAD para DOS (o único valor possível é ' IBM'). Caso contrário, este parâmetro não é usado.

Todos os parâmetros EXPORT são opcionais.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 20 de 63


TREINAMENTO

Formatos

Internal table (ABAP)

f1 f2 f3
a b c
d e f
. . .
. . .
format DAT or WK1
spreadsheet

A<tab> B<tab> C<tab>


A<tab> B<tab> C<tab>
. . .
. . .

Como UPLOAD e DOWNLOAD, outro formato disponível para conversões de ASC (ASCII) e BIN
(binário) é DAT para Excel. Com DOWNLOAD, WK1 também estão disponíveis para Excel e Lotus.

Para o formato DAT, colunas de tabela são divididas por um caracter de tabulação e as linhas da tabela
código de fim de linha.

Para o formato WKl, no dados de uma tabela são lançados em uma planilha eletrônica WKl específica.

Tabela interna (ABAP)

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 21 de 63


TREINAMENTO

Módulo de Função Upload

call function ‘upload’

exporting
codepage = <do not use>
filename = <file name - default value>
filetype = <file type - default value
item = <header for file dialog>

importing
filesize = <number of bytes downloaded>

tables
data_tab = <transfer file>

Para o módulo de função UPLOAD, você precisa de uma tabela interna para a transferência de dados.
Você define esta tabela de acordo com sua estrutura de dados no começo do programa.

A especificação de valores default para o nome do arquivo, tipo de arquivo e um cabeçalho para o
diálogo de arquivo é opcional.

Você só especifica um valor pelo parâmetro de exportação CODEPAGE quando executar um


DOWNLOAD para DOS (o único valor possível é ‘IBM’). Caso contrário, este parâmetro não é usado.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 22 de 63


TREINAMENTO

Download

report zexemplo.
tables sflight.
data: begin of tab occurs 20.
include structure sbc420a.
data: end of tab

start-of-selection.

get sflight.
move-correspondig sflight to tab.
append tab.
write: / tab-carrid, tab-connid,
/ tab-fldate under tab-carrid,
/ tab-planetype under tab-fldate.

end-of-selection.

call function ‘download’


tables
data_tab = tab.

write: / lenght, ‘bytes download to file’


file, ‘format’, type.

Este programa de exemplo gera um arquivo local com dados da SFLIGHT.

Quando DOWNLOAD é executado, é necessário somente uma tabela com os dados para o arquivo.
Entretanto você também pode especificar valores default para o nome do arquivo de diálogo, tipo e
cabeçalho. Se você não especificar o modo, o arquivo sempre será recriado (parâmetro MODE = ‘ ‘).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 23 de 63


TREINAMENTO

Upload e Download como Funções Padrão

Function DOWNLOAD Function UPLOAD


DOWNLOAD

Você pode chamar a função DOWNLOAD a partir de uma lista (escolha System -> List -> Save ->
Local file) ou carregar a listagem de um programa ABAP a partir do editor ABAP para um arquivo
local

Você pode chamar a função UPLOAD do Editor ABAP para carregar um programa ABAP a partir de
um arquivo local.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 24 de 63


TREINAMENTO

Arquivo de Servidor e Arquivo Local

Arquivos de Servidor Arquivos Locais

Você processa um arquivo sequencial no servidor de aplicação em programas ABAP com declarações
READ DATASET e TRANSFER, que lhe permitem copiar dados de/para um registro de cada vez.

Você processa um arquivo sequencial local no servidor de apresentação com módulos de função
UPLOAD, DOWNLOAD, WS_UPLOAD, WS_DOWNLOAD. Estes copiam de/para dados para uma
tabela interna.

Com UPLOAD e DOWNLOAD o arquivo é transferido através de um diálogo interativo no servidor de


apresentação.

Para módulos de função WS_UPLOAD e WS_DOWNLOAD exceções devem ser tratadas pelo
programa chamador.

Outros módulos de função disponíveis são:

WS_QUERY que confere a existência e tamanho de um arquivo, como também outras variáveis de
ambiente.

WS_EXECUTE iniciam um programa de aplicação no servidor (não SAP).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 25 de 63


TREINAMENTO

Overview da tarefa

External system
SAP R/2
SAP R/3

SAP
As razões para transferir dados sem um diálogo interativo básico com o usuário são:

- O datasets são grandes e já existem em um meio de dados eletrônico

- O dados são transferidos para outro sistema e só então são importados para o Sistema SAP.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 26 de 63


TREINAMENTO

Overview - Problema

SAP SAP
Interfaces database

Dados
Externos

Você não deve transferir dados externos diretamente para o banco de dados do SAP.

Dados externos devem ser conferidos antes que sejam transferidos ao banco de dados do SAP.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 27 de 63


TREINAMENTO

Overview - Técnicas
Grandes quantidade de dados são transferidos ao Sistema SAP através da técnica batch input.

Batch Input é um procedimento automático. É freqüentemente chamado de BDC (Batch Data


Communication ou Comunicação de Dados de Grupo).

Para garantir consistência de dados, o dados de transferência estão sujeitos às mesmas verificações e
atualizações como dados de diálogo que são lançados interativamente pelo usuário. Exemplos:

- Verificações de formato
- Verificação de valores (contra tabela de verificação ou intervalos de valores fixos)
- Conversão de dados de usuário para programar dados e vice-versa
- Valores default de campo

O dados de transferência são armazenados temporariamente na forma de uma sessão de batch input em
uma fila de arquivo.
Uma sessão de batch input é uma coleção de processos empresariais (transações).

Um dialogo de usuário é simulado em um procedimento batch input.

Overview – Programas de Telas


Em um Sistema SAP, processos de diálogo e background são controlados através de programas de tela.

Um programa de tela controla um passo de diálogo.

Os componentes de um passo de diálogo são:

PBO (Process Before Output ou Processo Antes da Produção) evento que prepara a tela para
produção

Usuário input

PAI (Process After Input ou Processo Depois da Introdução) evento que processa o usuário introduz

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 28 de 63


TREINAMENTO

Processamento Batch Input


Batch input ou BDC (Batch Data Communication ou Comunicação de Dados de Grupo) é um
procedimento automático para transferir dados para o sistema SAP sem um dialogo de usuário.

Um diálogo de usuário é simulado para este procedimento de forma que as mesmos verificações e
atualizações possam ser executados.

Um componente central deste procedimento é uma fila de arquivos.

Este arquivo recebe os dados por programas batch input e junta os dados associados em ‘sessões’.

Para carregar os dados em bancos de dados de SAP, você processa as sessões com a função batch input
(menu options System -> Services -> Batch input, Transação SM35).

Programa Batch Input


Dados são transferidos da fila de arquivos através de programas batch input.

Estes programas executam as seguintes funções:

Eles provêem áreas de trabalho estruturadas na forma de uma tabela interna (tabela BDC) para os
dados a ser transferidos.

Eles lêem os dados.

Eles colocam os dados na tabela BDC.

Eles transferem a tabela de BDC preenchida para a fila de arquivo.

A tabela BDC recebe a entrada para as transações de transferência de dados.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 29 de 63


TREINAMENTO

Fila de Arquivos Batch Input

Telas Fila de Base de


Arquivos Dados SAP

Transação 1 Transação 2

Tela 1 Tela 2 Tela 1 Tela 2

Dados do
Cliente Dados 1 Dados 2

A fila de arquivo coleta as telas individuais e as combina em sessões.

Você processa estas sessões com a função batch input (escolha System -> Services -> Batch Input ou
chama Transação SM35). Como quando você executa aplicações funcionais (com transações de
inclusão / alteração) na interface de diálogo, isto envia dados ao arquivo de log. Quando você executa
uma atualização subseqüentemente, o dados alcançam os bancos de dados de SAP pertinentes.

O grupo introduz função de início nas funções de aplicação especificadas na sessão a ser processada
(indicados pelos seus códigos de transação).

O dados da sessão são copiados agora para às telas que pertencem à transação especificadas como
online.

Formato da Sessão Batch Input


Uma sessão batch input consiste em uma parte de cabeçalho e uma parte de dados. A parte do
cabeçalho é armazenada na estrutura ABAP de Dictionary que são armazenadas na estrutura APQI e as
partes de dados na estrutura APQD.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 30 de 63


TREINAMENTO

Criando uma Sessão Batch Input


Toda sessão batch input deve ser aberta e deve ser fechada.

O dados para a aplicação (transações) são inseridos na sessão batch input.

Um programa batch input pode gerar vários grupos sucessivos de batch input. Geração paralela não é
possível.

Abrir a sessão batch input

Inserir dados da transação

Fechar a sessão batch input

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 31 de 63


TREINAMENTO

Módulos de Função para Programas Batch


Input
BDC_OPEN_GROUP
Client CLIENT
Session Name GROUP
Lock date HOLD
Delete session after KEEP
Processing
BDC user name USER

BDC_INSERT
Transaction code TCODE
BDC table DYNPROTAB

BDC_CLOSE_GROUP

Módulos de função (grupo de função SBDC) estão disponíveis para criar sessões de batch input.

Você aprenderá sobre estes módulos de função nas páginas seguintes. Consulte também a
documentação online.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 32 de 63


TREINAMENTO

Módulo de Função BDC_OPEN_GROUP


Para abrir uma sessão batch input deve ser utilizada o módulo de função BDC_OPEN_GROUP.

Devem ser especificados os seguintes parâmetros:

CLIENT (Client/SY-MANDT)
GROUP (nome de Sessão)
USER (nome de Usuário/SY-UNAME)

A especificação dos seguintes parâmetros é opcional:

HOLDDATE (data de início de processamento da sessão)


KEEP (‘X’ se sessão não deve ser apagada depois de processamento com sucesso; KEEP = ' ' se a
sessão deve ser deletada após o processamento (valor default).

O valores dos retornos por EXCEPTIONS podem ser tratados com SY-SUBRC.

USER sempre deve ser especificado.

Módulo de Função BDC_INSERT


Você usa o módulo de função BDC_INSERT para inserir os dados para uma transação em uma sessão.

Para transferir os dados, você deve definir uma tabela interna (tabela de BDC).

Os seguintes parâmetros devem ser especificados:

TCODE (código de transação),


DYNPROTAB (tabela de BDC).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 33 de 63


TREINAMENTO

Tabela BDC
PROGRAM SCREEN START FIELD NAME FIELD CONTENTS

<program name> <number 1> X


<field 11> <value 11>
<field 12> <value 12>
<program name> <number 2> X
<field 21> <value 21>
<field 22> <value 22>
... ...

A tabela BDC comtêm os dados para uma transação.

O conteúdo da tabela BDC é passado então para a fila de arquivo.

Uma linha de tabela inclui a seguinte informação:


Nome de programa, número de tela, ID de início, nome de campo, valor de campo.

O ID de início com 'X' indica sempre que está no começo de uma tela nova. A introdução de valores
são alocados agora para cada campo na tabela para esta tela.

Para melhor esclarecimento, uma linha de tabela só deve incluir nome de programa, número de tela e
ID de início ou nome de campo e valor de campo.

Somente os nomes de campos são alterados ou incluídos.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 34 de 63


TREINAMENTO

Definindo a Tabela BDC


Você declara a tabela de BDC como uma tabela interna com a estrutura ABAP Dictionary
‘BDCDATA’:

...
DATA: BEGIN OF <bdc table> OCCURS n.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF <bdc table>.
...

O campo < BDC table>-FVAL diferencia entre letra maiúscula e minúscula, mas os campos < BDC
table>-PROGRAM e < BDC table>-FNAM não o fazem.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 35 de 63


TREINAMENTO

Preenchendo a Tabela BDC


A tabela BDC é fixa linha a linha. Como para toda tabela interna, você faz isto com declarações MOVE
e APPEND.

Os campos da linha de cabeçalho da tabela devem ser reajustados ao valor inicial com CLEAR.

Sint.:

form <fill_BDC table>.


refresh <BDC table>.
clear <BDC table>.
move: <program name> to <BDC table> - program,
<number1> to <BDC table> - dynpro,
‘X’ to <BDC table> - dynbegin.
append <BDC table>
clear <BDC table>
move: <field1> to <BDC table> - fnan,
<value1> to <BDC table> - fval.
append <BDC table>.
clear <BDC table>.
move: <field2> to <BDC table> - fnan,
<value2> to <BDC table> - fval.
append <BDC table>.
...
clear <BDC table>.
move: <program name> to <BDC table> - program,
<number2> to <BDC table> - dynpro,
‘X’ to <BDC table> - dynbegin.
append <BDC table>
...
endform.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 36 de 63


TREINAMENTO

Módulo de Função BDC_CLOSE_GROUP


Você fecha uma sessão batch input com o módulo de função BDC_CLOSE_GROUP.

Você recebe vários valores de retorno por EXCEPTIONS. Você pode usar SY-SUBRC para avaliar o
código de retorno de exceção.

Dados da Transação do Usuário


Antes de escrever um programa de BDC para a função de aplicação, você deverá saber qual será a
função de aplicação a ser executada (de forma que o programa BDC possa simular as telas).

Preparações para Programa BDC


Devem ser executados os seguintes passos da função de aplicação a ser simulada.

Anote:

- o nome de programa e número de todas as telas


- o nome de campo de tabela para cada campo você deverá preencher.
- o número para cada chave de função utilizada (comandos)
- a seqüência de programa das telas

Para fazer isto, você usa a função de sistema Status e Technical info (F1 – F9 ) e o help function.

Preparações para programa BDC – Screen


Painter
No Screen Painter (escolha Ferramentas -> ABAP Workbench -> Screen Painter, ou chame transação
SE51), você pode adquirir uma lista completa de campos para uma tela em particular. Esta é uma
alternativa à função de ajuda online).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 37 de 63


TREINAMENTO

Estrutura da Tabela BDC


Antes de começar a escrever o programa batch input, você deve executar a transação e anotar o número
das telas, seqüência das telas e o nome do campo na tela, para depois tratá-los no programa. Você entra
com estes dados na tabela BDC.

O nome de campo para OK code é o mesmo para todas as telas: BDC_OKCODE. O valor para o OK
code consiste em um atalho ‘/’ e a função chave número (exemplo: ‘/11’).

Funcionalidade da Transação SM35


Você pode processar sessões com a função Batch input (escolha System -> Services -> Batch input, ou
chama a Transação SM35). Informação sobre estado é provida, sucessão de tela, conteúdos de tela, o
usuário que faz o processo, escolher o modo de processamento, servidor, como também o usuário para
a verificação de autorização.

O usuário pode ativar Expert mode se for preciso (quando da execução da pasta, numa tela de diálogo).
Esta função desativa mensagem de erro 344 ‘dados de Batch input não existem para esta tela’ para
sessão interativo de processamento. Esta opção é interessante quando você quiser ramificar a outra
transação processando o que não corresponde à sucessão de telas no programa batch input.

A função Estended log lhe permite registrar mensagens W, I e S além de mensagens E. Esta opção
também está disponível se você estiver processando em background.

Copiando Dados para as Telas


Quando você processa uma sessão com a transação SM35, o sistema usa o código de transação para
procurar a tela de início. Só o que for relevante na sessão de dados é copiado para esta tela.

A tela subseqüente é então processada. Primeiro o dados são lidos no banco de dados do SAP e então
os dados de sessão são copiado para a tela.

Ao processar a transação, o sistema procura o próximo código de transação na sessão e começa a


transação.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 38 de 63


TREINAMENTO

Modo de Processamento
No modo ‘Process in foreground’, são exibidas todas as telas de uma transação. Se uma sessão termina
anormalmente em modo de teste, você pode usar a função Restart para se ramificar diretamente à
avaliação de sessão (onde você pode reiniciar o processo).

No modo ‘Display erros only', só são exibidas telas quando um erro acontece. Uma transação contém
um erro do tipo E (erro) ou tipo A (terminação) uma mensagem de diálogo é liberada.

No modo “Process in background', a sessão é processada sem exibição das telas. Sua tela está
disponível para inserir assim que a sessão for passada ao sistema de controle de background.

Quando processando uma sessão, o modo de atualização sempre é síncrono (i.e. a próxima transação só
é chamada quando a atualização para a transação executada foi completada).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 39 de 63


TREINAMENTO

Processando o Batch Input


No modo de correção (‘Process in foreground’ ou ‘Display errors only’), você pode controlar o
processo de sua sessão escolhendo System -> Services -> Batch input ou entrando em um comando no
campo de comando.

Função OK code
Sair da transação batch input ativa e flag incorreto /n
Deletar a sessão batch input ativa /bdel
Sair do processamento batch input e flag incorreto /bend
Mudança do modo display de “Display errors only” para “Process in foreground” /bda
Mudança do modo display de “Display in foreground” para “Display errors only” /bde

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 40 de 63


TREINAMENTO

Sessão Status
Uma sessão é nomeada com status durante e depois do processo.

Basicamente, o sistema identifica transações que não podem ser processadas devido a erros. Estas
transações permanecem na sessão (que se torna uma sessão de erro). Você pode processar então
novamente estas sessões e pode corrigir os erros.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 41 de 63


TREINAMENTO

Criando e Processando Sessões


Quando você cria programas de batch input, tenha em mente que a criação da sessão e o processo da
sessão buscam o objeto em momentos diferentes (t1 e t2). O que é processado no momento t2 já foi
planejado no momento t1.

Exemplo de: no momento t2, o sistema de batch imput não pode responder para mensagens de dialogo
(exceto se o usuário inserir em modo de correção).

O sistema batch input não assume nenhum parâmetro de SPA/GPA no momento t2.

Resumo das Preparações do Usuário


Quando você cria um programa batch input, você dev saber qual transação será baseada para o
programa.

Você executa a transação e então toma nota do número da tela, sucessão de tela e nome do campo da
tela para ser enviado depois no programa.

Você inclui estes dados na tabela BDC.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 42 de 63


TREINAMENTO

Carregando a Tabela BDC com Table Control


Os campos de uma table control ou STEP-LOOP são enviados através de indexadores.

Campos Especiais
Em um programa batch input, você pode enviar o OK code, control table / step loop de campos e
posicionamento de cursor.

As seguintes regras se aplicam ao preencher a tabela BDC:

- O nome de campo para o OK code sempre é ‘BDC_OKCODE’

- Uma control table / step loop de campo tem que ter um número de linha válido (ocorrência)

- O nome de campo para o cursor é ‘BDC_CURSOR’.

Transações de Batch Input com Êxito


No processo batch input, podemos encerrar uma transação de dois modos:

- ou por uma atualização


- devolvendo ao menu principal do SAP.

Uma transação não suporta batch input se é iniciada por:

- LEAVE TO TRANSACTION <código de transação>


- LEAVE TO LIST-PROCESSING (listas de relatório)
- CALL TRANSACTION<código de transação>

- comando de entrada de campo ‘/n <código de transação>’ ou ‘/i’

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 43 de 63


TREINAMENTO

RSBDCSUB
Você usa o relatório RSBDCSUB para programar o processamento da sessão.

Procedimento:

1. Crie uma variante, informando:

- Nome da sessão (entradas genéricas também são possíveis)


- Data da criação
- Status da sessão
- Host destino (para sistema background)
- Log ampliado (extended log)

2. Crie um job para o relatório RSBDCSUB com a variante que definimos.

Programando Trabalhos em Background (job)


Você cria um job com a função de definição de Jobs..

Para isto, escolha System -> Service -> Jobs or System -> Services -> Reporting -> Program ->
Background, ou execute a transação SM36.

Para criar o pedido, precisamos especificar um nome de job (qualquer nome que desejar), o nome do
programa a ser executado e uma variante, como também o nome de um usuário para autorização.

Parte do planejamento termina quando é salvo. Antes de fazer isto, podemos especificar o tempo de
início, qual será a freqüência do job, se será processado freqüentemente, e os parâmetros de impressão.

Você pode incluir mais entradas num job existente. Fazendo isto, teremos uma lista de entradas que
você pode editar para adequar a suas exigências.

Em ambientes distribuídos, podemos especificar uma máquina designada onde o processo será
executado (escolha isto teclando F4).

Especificando uma classe de trabalho, podemos determinar a prioridade e tipo de um trabalho.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 44 de 63


TREINAMENTO

Autorizações para Processar Batch Input


O objeto de autorização S_BDC_MONI é usado para controlar a autorização de processamento de
BATCH INPUT.

Você pode usar este objeto de autorização para restringir o processo a sessões particulares
(especificando o nome de sessão, ou fazendo entrada genérica). Você também pode proteger atividades
específicas em um processo batch input (fazendo uma entrada no campo ‘Activities’).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 45 de 63


TREINAMENTO

Overview - Resumo
Quando o batch input é utilizado para importar dados de um sistema do cliente, o programa batch input
geralmente transfere os dados em um arquivo sequencial.

Cria-se um arquivo sequencial com um programa de transferência do cliente. Usa-se um programa de


batch input (o programa de transferência da SAP) para transferir os dados de um arquivo sequencial
para um arquivo do SAP.

O sistema SAP oferece programas standard de batch input para vários casos de transferência de dados.
Isto significa que não é preciso criar outro programa pois o sistema já possui programas batch input.
Porém, os dados que provê devem estar em um formato pré-definido para o programa da SAP.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 46 de 63


TREINAMENTO

Arquivo Sequencial no Formato da SAP


Os registros de dados de um arquivo sequencial deve ter um formato que pode ser lido por um
programa batch input da SAP.

As aplicações provêem descrições de estrutura para o grupo de programas standard batch input da SAP
no ABAP Dictionary.

As descrições da estrutura e a estrutura de um arquivo sequencial dependem da aplicação. Eles são


descritos na documentação para o grupo de programas standard batch input da SAP.

Exemplo : Em Contabilidade Financeira, há três tipos diferentes de registros de dados:

Type 0: dados do cabeçalho da Sessão (por exemplo: nome de sessão).

Type 1: dados do cabeçalho da Transação (por exemplo: código de transação).

Type 2: dados da tabela da SAP (por exemplo: nome de tabela, nome de campo, conteúdos de
campo etc.).

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 47 de 63


TREINAMENTO

Análise de Dados
Há uma análise de dados no começo de toda transferência de dados.

Na análise de dados, você decide quais dados podem ser transferidos e como. Proceda como segue:

- Compare seus dados antigos com os campos de dados no Sistema SAP.

- Defina que campos podem ser transferidos dos dados antigos diretamente ao Sistema SAP.

- Crie regras para preencher os campos de dados no Sistema SAP onde não podem ser usados dados
antigos diretamente.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 48 de 63


TREINAMENTO

Programa de Transferência
A tarefa de um programa de transferência de cliente é criar registro de dados no formato do SAP e os
transferir para um arquivo sequencial. Os dados podem ser lidos então por um programa standard batch
input da SAP.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 49 de 63


TREINAMENTO

Importando Estruturas SAP


Requer as descrições da estrutura SAP para o programa de transferência. Se escreve o programa de
transferência em ABAP, usa-se a declaração tabelas para transferir as descrições da estrutura
diretamente do ABAP Dictionary.

O sistema SAP também suporta a criação de programas de transferência em outras linguagens de


programação (COBOL, C, PL/l): Você gera as descrições da estrutura na respectiva linguagem de
programação utilizando o programa ABAP RDDSRCGO. Estas descrições da estrutura estão então
disponíveis em um arquivo sequencial e você pode inclui-los em seu programa de transferência.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 50 de 63


TREINAMENTO

Inicializando e Convertendo
Para todo campo utilizado na estrutura batch input, uma decisão deve ser tomada se o valor do campo
inicial (por exemplo: campo deve ser reajustado para um valor inicial) ou se o batch input não é
necessário para este campo.

Se os dados do batch input não serão colocados em determinados campos no Sistema SAP, o grupo de
programas standard de batch input espera um caráter especial (NODATA flag). O caráter especial
default é ‘/’, mas podemos definir seu próprio caráter com o campo BGR00-NODATA. Você deve
então inicializar o estruturas batch input da SAP com este caracter especial.

Se os campos com as estruturas antigas são de um tamanho diferente de acordo com as estruturas do
SAP, o programa de transferência deverá executar as conversões. Os campos de estruturas batch input
da SAP sempre são tipo C.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 51 de 63


TREINAMENTO

Outras Tarefas de um Programa de


Transferência
Estas são outras tarefas que os programas de transferência de cliente podem executar. Exemplos: Dados
individuais de clientes podem ser conferidos (verificar se devem ser transferidos dados de fato, por
exemplo). Dados de acordo com regras definidas podem ser convertidos (números novos no Sistema
SAP serão nomeados como números particulares no sistema, por exemplo). Podem ser escritos dados
incorretos em uma tabela de erro do cliente depois da verificação de dados.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 52 de 63


TREINAMENTO

IMG – Caminhos no menu para transferências


de dados
Os caminhos do menu para encontrar os programas de transferência de dados são mostrados no
Customizing. Você tem acesso as funções de Customizing pelo guia de instalação.

Para documentação detalhada nas funções individuais, aperte F1 and/or a função de ajuda ampliada.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 53 de 63


TREINAMENTO

Batch Input, Call Transaction e Direct Input


Como uma alternativa para BATCH INPUT, há programas de aplicações específicas que usam a
técnica DIRECT INPUT. Ao transferir grande volume de dados (mais de 10000 transações), pode se
alcançar melhorias consideráveis de desempenho com DIRECT INPUT. Como CALL
TRANSACTION USING, direct input é um dos meios de atualizar dados imediatamente (nenhuma
sessão é gerada). Porém, ao contrário de CALL TRANSACTION USING ou batch input, nenhuma tela
é envolvida. Ao invés disso, os dados são importados chamando módulos de função que conferem os
dados e então os transferem diretamente para as tabelas de banco de dados. Desde então direct input
oferece um mecanismo que reinicia no caso de um erro, os programas só podem executar como jobs em
background. Você administra e começa estes trabalhos com o relatório RBMVSHOW ou Transação
BMV0.

Exemplos:

RFBIBLOO FI Pode ser trocado entre direct input, batch input e CALL TRANSATION.

RMDATIND MM Direct input. Importações registros do mestre de materiais.

RVAFSSOO SD Direct input. Gera os documentos de fatura de SD e documentos de um


arquivo externo para FI.

RKEVEXTO CO-PA Direct input. Transferência de dados externos para Análise de


Rentabilidade.

RAALTD11 AM Direct input. Cria registros do recurso mestre.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 54 de 63


TREINAMENTO

Tarefas de um Programa de Transferência


O diagrama dá uma avaliação das tarefas de um programa de transferência (obrigatório e opcional).

Define estruturas antigas

Importa estruturas SAP

Inicializa estruturas SAP

Lê o registro de dados

Checagem dos dados

Conversão dos Dados

Coloca dados na Estrutura do SAP

Transfere o registro de dados para uma série de arquivos

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 55 de 63


TREINAMENTO

Transferência de Dados com Batch Input


O diagrama dá para uma avaliação das atividades requerida para uma transferência de dados.

Analise dos Dados

Gerar estruturas no SAP

Desenhar o programa de transferência

Criar a seqüência de arquivos

Criar o programa de batch input

Criar a sessão do batch input

Analisar os resultados

Avaliar os erros

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 56 de 63


TREINAMENTO

Overview
Ao contrário de batch input, a declaração CALL TRANSACTION lhe permite passar dados
diretamente para a interface de diálogo (sem usar a lista do arquivo ). para armazenar dados de tela
temporariamente, usa-se uma tabela interna (uma tabela BDC que tem a mesma estrutura do batch
input). Então, chamamos a transação desejada temporariamente em seu programa e as cópias de dados
do sistema as armazenarão na tabela BDC para as telas da transação.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 57 de 63


TREINAMENTO

Declaração CALL TRANSACTION


Com batch input, podemos escolher um modo de exibição particular para processar a transação.

Podemos também especificar um modo de atualização. Em processos de atualizações assíncronas, a


transação chamada não espera pelas atualizações de banco de dados executados, mas passa da
atualização para a tarefa de atualização. Em processos de atualizações síncronas, espera-se até que a
atualização seja completada. Embora a atualização síncrona seja mais lenta que atualização assíncrona,
também é mais segura porque a transação chamada pode informar qualquer erro para o programa de
chamada. Em batch input, o modo de atualização sempre é 'S' (síncrono).

Os parâmetros MODE e UPDATE são opcionais. O default para ambos é 'A' (assíncrono).

A opção MESSAGES INTO <messtab> lhe permite armazenar qualquer mensagem produzida pela
transação chamada em uma tabela interna. A tabela interna <messtab> deve ter a estrutura
BDCMSGCOLL.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 58 de 63


TREINAMENTO

Implementação Técnica
O sistema abre uma segunda área (janela) para a transação chamada. Lá, processa as telas individuais e
copia os dados da tabela. Quando a transação termina, a segunda área (janela) é lançada e o processo
continua na primeira área (janela).

Notas:

Em contraste com batch input, não há nenhum erro sendo anotado. Se a transação chamada é
processada, depende da autorização do usuário que a executou. A tabela BDC pode aceitar só dados
para uma única transação. Isto significa que antes da próxima chamada de transação, tem que executar
um REFRESH na tabela de BDC e preencher com dados novamente.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 59 de 63


TREINAMENTO

Códigos de Retorno e Variáveis de Sistemas


Para descobrir se o processo da transação chamada teve êxito ou não, podemos ler o valor do código de
retorno (sy-subrc). Também existem outros variáveis de sistema que contêm o número, ID, tipo e
variável da mensagem produzido pela transação chamada. Podemos usar estas informações para exibir
o texto da mensagem.

Podemos obter toda a produção de mensagens da transação através da opção MESSAGES INTO
<messtab> e então avaliar o conteúdos de <messtab>.

Geração de Mensagem
A declaração MESSAGE lhe permite produzir as mensagens de diálogo para a transação chamada.

A mensagem que informa o sucesso ou fracasso do processo é liberada automaticamente. Recomenda-


se que use a declaração MESSAGE como acima, se está sendo executado em background.

BATCH INPUT / CALL TRANSACTION -


RESUMO
Batch input e CALL TRANSACTION são duas declarações com opções diferentes para copiar dados
para telas em uma transação de aplicação.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 60 de 63


TREINAMENTO

O Método Direct Input


Um arquivo sequencial que contém dados em formato de caráter é a interface entre um sistema de
legado e o sistema R/3.

O método Direct Input usa um arquivo sequencial como meio de introdução para executar a
transferências de dados de um sistema não-R/3 para o sistema R/3 .

O método Direct Input é uma tecnologia que provê programas de aplicação especial usando módulos de
funções específicos projetados pela aplicação para processar altos volumes de dados de transações no
sistema R/3.

A técnica deste método é usar operações de ordem de tamanho para dirigir vários registros de cada vez.
Consequentemente, ocorrem melhorias consideráveis de desempenho e de tempo de processamento no
método Direct Input.

Os módulos de funções de aplicações especiais são escritos e são providos nas aplicações apropriadas
pelos programadores da espectiva aplicação.

O método Direct Input provê uma administração e a ferramenta de monitoração para a manipulação
deste método é acessível pela transação BMVO.

A vantagem do método Direct Input é que as tabelas de aplicações são atualizadas diretamente, com
dados da seqüência de arquivos após a verificação lógica de aplicações normais ter sido executada com
sucesso.

Nenhuma tela de aplicações é invocada e também nenhuma sessão de batch input é registrada.

Os dados a serem transferidos são conferidos pelos módulos de função e quando processados com
sucesso são transferidos diretamente para as tabelas de banco de dados das aplicações envolvidas.

O sistema R/3 de banco de dados é atualizado diretamente com sucesso tendo como fonte os arquivos
sequenciais.

Como não é chamado nenhum programa do sistema de atualização - um gargalo é eliminado para
aumentar o técnica de desempenho global.

Um exemplo de uma aplicação R/3 que provê uma função que usa uma tecnologia de introdução direta
é o alto volume de dados transferidos para o Mestre de Material.

Outro exemplo são os dados transferidos de documentos financeiros de contabilidade.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 61 de 63


TREINAMENTO

Processo de Gravação do Batch Input


Iniciar o registro do batch input selecionando o pushbutton de gravação do batch input pela tela inicial
ou simplesmente use a transação SHDB.

O nome gravado será o nome da sessão batch input.

Entrar com a transação no SAP e comece a executar a transação.

Depois que você completou a transação do SAP escolha ‘Get Transaction’ e Save para terminar a
gravação ou ‘Next Transaction’ e fixe outra transação.

Uma vez que você tenha salvo o batch input você pode mudar, exibir, apagar a gravação e gerar uma
sessão de batch input para gravar e/ou gerar um programa de batch input da gravação.

O programa batch input pode ser regerado se uma mudança foi feita na sessão gravada.

Data : 05/10/07 CURSO DE DICIONÁRIO DE DADOS Página 62 de 63