bc420 - programacao de interfaces

90
SAP R/3 MÓDULO ABAP PPROGRAMAÇÃO DE INTERFACES

Upload: fjaimesilva

Post on 21-Dec-2015

15 views

Category:

Documents


4 download

DESCRIPTION

BC420 - Programacao de Interfaces

TRANSCRIPT

Page 1: BC420 - Programacao de Interfaces

SAP R/3

MÓDULO ABAP

PPROGRAMAÇÃO DE

INTERFACES

Page 2: BC420 - Programacao de Interfaces

Treinamento

2

Page 3: BC420 - Programacao de Interfaces

Treinamento

Overview

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.

3

Programa ABAP

READ DATASETTRANSFER

Seqüência de arquivos

Page 4: BC420 - Programacao de Interfaces

Treinamento

Transferência de Dados

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.

4

Programa do Cliente

Programa SAP

Seqüência de Arquivos

Sistema do Cliente

Sistema SAP R/3

Page 5: BC420 - Programacao de Interfaces

Treinamento

Processando o Arquivo

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.

5

Open File

Process File

Close File

Page 6: BC420 - Programacao de Interfaces

Treinamento

Abrindo um Arquivo

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.

6

open dataset <file name>

outputfor input

appending

if sy-subrc ne 0....

Page 7: BC420 - Programacao de Interfaces

Treinamento

Abrindo um Arquivo (Binary e Text Mode)

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.

7

open dataset <file name>

outputfor input

appending

in binary modetext mode

if sy-subrc ne 0....

Page 8: BC420 - Programacao de Interfaces

Treinamento

Modo Binário e Modo de Texto

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.

8

Modo Binário

Programa ABAP

Programa ABAP

Programa ABAP

Programa ABAP

Modo Texto

Page 9: BC420 - Programacao de Interfaces

Treinamento

Abrindo um Arquivo – AT POSITION

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

9

open dataset <file name>

at position <position>

message <field>

Page 10: BC420 - Programacao de Interfaces

Treinamento

Transferindo Registros de Dados

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.

10

transfer <field> to <file name>.

sequentialfile

datarecord

Page 11: BC420 - Programacao de Interfaces

Treinamento

Lendo Registros de Dados

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.

11

read dataset <file name> into <field>.

sequentialfile

datarecord

Page 12: BC420 - Programacao de Interfaces

Treinamento

Fechando / Deletando Arquivos Sequenciais

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.

12

close dataset <file name>.

delete dataset <file name>.

Page 13: BC420 - Programacao de Interfaces

Treinamento

Criando um Arquivo

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.

13

report zexemplo.tables sflight.

data: begin of rec,carrid like sflight-carrid,connid like sflight-connid,fldate like sflight-fldate,

end of rec.

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

Page 14: BC420 - Programacao de Interfaces

Treinamento

Estruturas do ABAP Dictionary

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.

14

report zexmplo1.tables: sflight, sbc420a.parametersfile (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.

table structure sbc420a.-----------------------------------------------------------------------name type lenght meaning-----------------------------------------------------------------------sbc420a-carrid char 03 short description of airline companysbc420a-connid numc 04 code for flight connectionsbc420a-fldate dats 08 flight datesbc420a-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.

Dict.

Page 15: BC420 - Programacao de Interfaces

Treinamento

Lendo um Arquivo

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

15

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.

Page 16: BC420 - Programacao de Interfaces

Treinamento

Incluindo dados no final do Arquivo

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

16

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.

Page 17: BC420 - Programacao de Interfaces

Treinamento

Formato Variável (Gravação)

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.

17

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.

Page 18: BC420 - Programacao de Interfaces

Treinamento

Formato Variável (Read)

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.

18

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.

Page 19: BC420 - Programacao de Interfaces

Treinamento

Definindo Estruturas - Resumo

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.

19

define structures

open file

fill structure read data record

process data recordtransfer structure

moredatarecord

s

moredatarecord

s

close file

write read

YES

NO NO

YES

Page 20: BC420 - Programacao de Interfaces

Treinamento

Overview

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.

20

Application server files

Presentation server files

ABAP program

read dataset

transfer

upload

download

Page 21: BC420 - Programacao de Interfaces

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.

21

Page 22: BC420 - Programacao de Interfaces

Treinamento

Módulo de Função Download

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.

22

call function ‘download’

exportingbin_filesize= <file length for binary files>codepage = <do not use>filename = <file name - default value>filetype = <file type - default valueitem = <header for file dialog>mode = <write mode>wk1_n_format= <value column format for wk1 file typewk1_n_syze = <value column width for wk1 file typewk1_t_format= <text column format for wk1 file typewk1_t_format= <text column width for wk1 file type

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

tablesdata_tab = <transfer file>

Page 23: BC420 - Programacao de Interfaces

Treinamento

Formatos

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.

23

Tabela interna (ABAP)

f1 f2 f3a b cd e f. . .. . .

f1 f2 f3a b cd e f. . .. . .

Internal table (ABAP)

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

. . .

. . .

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

. . .

. . .

spreadsheet

format DAT or WK1

Page 24: BC420 - Programacao de Interfaces

Treinamento

Módulo de Função Upload

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.

24

call function ‘upload’

exportingcodepage = <do not use>filename = <file name - default value>filetype = <file type - default valueitem = <header for file dialog>

importingfilesize = <number of bytes downloaded>

tablesdata_tab = <transfer file>

Page 25: BC420 - Programacao de Interfaces

Treinamento

Download

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 = ‘ ‘).

25

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.

Page 26: BC420 - Programacao de Interfaces

Treinamento

Upload e Download como Funções Padrão

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.

26

Function DOWNLOAD Function UPLOAD DOWNLOAD

Page 27: BC420 - Programacao de Interfaces

Treinamento

Arquivo de Servidor e Arquivo Local

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

27

Arquivos de Servidor Arquivos Locais

Page 28: BC420 - Programacao de Interfaces

Treinamento

Overview da tarefa

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.

28

External system

SAP R/2

SAP R/3

SAP

Page 29: BC420 - Programacao de Interfaces

Treinamento

Overview - Problema

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.

29

SAPInterfaces

SAPdatabase

Dados Externos

Page 30: BC420 - Programacao de Interfaces

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

30

Page 31: BC420 - Programacao de Interfaces

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

31

Page 32: BC420 - Programacao de Interfaces

Treinamento

Fila de Arquivos Batch Input

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.

32

Telas Fila de Arquivos

Base deDados SAP

Transação 1 Transação 2

Tela 1 Tela 2 Tela 1 Tela 2

Dados doCliente Dados 1 Dados 2

Page 33: BC420 - Programacao de Interfaces

Treinamento

Criando uma Sessão Batch InputToda 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.

33

Abrir a sessão batch input

Inserir dados da transação

Fechar a sessão batch input

Page 34: BC420 - Programacao de Interfaces

Treinamento

Módulos de Função para Programas Batch Input

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.

34

BDC_OPEN_GROUP Client CLIENT

Session Name GROUP Lock date HOLDDelete session after KEEP Processing BDC user name USER

BDC_INSERTTransaction code TCODEBDC table DYNPROTAB

BDC_CLOSE_GROUP

Page 35: BC420 - Programacao de Interfaces

Treinamento

Módulo de Função BDC_OPEN_GROUPPara 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_INSERTVocê 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).

35

Page 36: BC420 - Programacao de Interfaces

Treinamento

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

36

Page 37: BC420 - Programacao de Interfaces

Treinamento

Definindo a Tabela BDCVocê 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.

37

Page 38: BC420 - Programacao de Interfaces

Treinamento

Preenchendo a Tabela BDCA 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.

38

Page 39: BC420 - Programacao de Interfaces

Treinamento

Módulo de Função BDC_CLOSE_GROUPVocê 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 BDCDevem 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 PainterNo 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).

39

Page 40: BC420 - Programacao de Interfaces

Treinamento

Estrutura da Tabela BDCAntes 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 SM35Você 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 TelasQuando 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.

40

Page 41: BC420 - Programacao de Interfaces

Treinamento

Modo de ProcessamentoNo 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).

41

Page 42: BC420 - Programacao de Interfaces

Treinamento

Processando o Batch InputNo 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 codeSair da transação batch input ativa e flag incorreto /nDeletar a sessão batch input ativa /bdelSair do processamento batch input e flag incorreto /bendMudança do modo display de “Display errors only” para “Process in foreground” /bdaMudança do modo display de “Display in foreground” para “Display errors only” /bde

42

Page 43: BC420 - Programacao de Interfaces

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.

43

Page 44: BC420 - Programacao de Interfaces

Treinamento

Criando e Processando SessõesQuando 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árioQuando 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.

44

Page 45: BC420 - Programacao de Interfaces

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 ÊxitoNo 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’

45

Page 46: BC420 - Programacao de Interfaces

Treinamento

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

46

Page 47: BC420 - Programacao de Interfaces

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

47

Page 48: BC420 - Programacao de Interfaces

Treinamento

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

48

Page 49: BC420 - Programacao de Interfaces

Treinamento

Arquivo Sequencial no Formato da SAPOs 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.).

49

Page 50: BC420 - Programacao de Interfaces

Treinamento

Análise de DadosHá 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.

50

Page 51: BC420 - Programacao de Interfaces

Treinamento

Programa de TransferênciaA 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.

51

Page 52: BC420 - Programacao de Interfaces

Treinamento

Importando Estruturas SAPRequer 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.

52

Page 53: BC420 - Programacao de Interfaces

Treinamento

Inicializando e ConvertendoPara 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.

53

Page 54: BC420 - Programacao de Interfaces

Treinamento

Outras Tarefas de um Programa de TransferênciaEstas 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.

54

Page 55: BC420 - Programacao de Interfaces

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.

55

Page 56: BC420 - Programacao de Interfaces

Treinamento

Batch Input, Call Transaction e Direct InputComo 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.

56

Page 57: BC420 - Programacao de Interfaces

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

57

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

Page 58: BC420 - Programacao de Interfaces

Treinamento

Transferência de Dados com Batch InputO diagrama dá para uma avaliação das atividades requerida para uma transferência de dados.

58

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

Page 59: BC420 - Programacao de Interfaces

Treinamento

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

59

Page 60: BC420 - Programacao de Interfaces

Treinamento

Declaração CALL TRANSACTIONCom 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.

60

Page 61: BC420 - Programacao de Interfaces

Treinamento

Implementação TécnicaO 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.

61

Page 62: BC420 - Programacao de Interfaces

Treinamento

Códigos de Retorno e Variáveis de SistemasPara 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 MensagemA 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 -RESUMOBatch 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.

62

Page 63: BC420 - Programacao de Interfaces

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.

63

Page 64: BC420 - Programacao de Interfaces

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.

64