Academia ABAP - 03 - Batch Input
Academia ABAP - 03 - Batch Input
Academia ABAP - 03 - Batch Input
IV. PROGRAMAÇÃO DE
INTERFACES
________________________________________________________________________________
Meta Serviços em Informática
1
CURSO DE ABAP – Módulo IV – Programação de Interfaces
ÍNDICE
1. CONCEITO DE BATCH INPUT...............................................................................3
________________________________________________________________________________
Meta Serviços em Informática
2
CURSO DE ABAP – Módulo IV – Programação de Interfaces
O batch input é uma técnica utilizada para transferência de dados de sistemas não SAP para o
sistema SAP.
Existem dois métodos de batch input. Ambos carregam dados para o sistema através de
transações normais do SAP, exatamente como um usuário faria. A diferença é que o batch input
executa as transações automaticamente e é apropriado para grandes quantidades de dados
disponíveis em meio eletrônico.
O batch input garante a integridade dos dados, pois utiliza a mesma transação que o usuário
usaria para entrar manualmente com os dados. Sendo assim os dados no batch input são
submetidos a todas as checagens e controles que se aplicam à entrada manual dos dados.
Neste método, um programa ABAP lê os dados externos que serão entrados no SAP e
armazena estes dados numa “sessão batch input”. A sessão armazena as ações requeridas
para entrada dos dados usando transações normais do SAP.
Uma vez gerada a sessão, ela deve ser executada para que sejam processadas as
transações de entrada de dados. Você pode, tanto executar manualmente e monitorar a
sessão com a função de gerenciamento de batch input, como ter a sessão executada por
um processamento em background.
Neste método, utilizamos o comando CALL TRANSACTION USING para executar uma
transação SAP. Neste caso os dados de batch input não precisam ser armazenados numa
sessão para posterior processamento. Em vez disso, todo o processo de batch input é
executado online durante a execução do programa.
Ambos os métodos de batch input usam uma estrutura de dados comum para armazenar os
dados e as instruções. Essa estrutura é a BDCDATA.
________________________________________________________________________________
Meta Serviços em Informática
3
CURSO DE ABAP – Módulo IV – Programação de Interfaces
Transferência periódica de dados capturados de sistemas não SAP para o sistema SAP.
Se você estiver criando seu próprio procedimento de batch input, você precisará analisar as
transações SAP nas quais os dados de batch input serão entrados.
O código da transação
O nomes, tipo e comprimento dos campos que são utilizados pela transação
No exercício abaixo vamos analisar a transação que modifica fornecedor, na qual faremos
um batch input para alterar o endereço do fornecedor.
Se durante a execução aparecer uma janela pop-up, você poderá obter o nome
do programa e número da tela pressionando F1 em qualquer campo ou botão da
janela.
Em cada campo, check box, e radio button de cada tela, pressione F1 (ajuda) e
depois clique em Technical info (ou pressione F9).
________________________________________________________________________________
Meta Serviços em Informática
4
CURSO DE ABAP – Módulo IV – Programação de Interfaces
Após a execução dos passos acima, você deverá ter anotado as seguintes informações:
Antes de escrever o programa, temos que definir o método de batch input que vamos usar. O
batch input “clássico” é mais confortável, pois oferece o gerenciamento da sessão,
possibilitando reinicio do processamento e exibindo um log detalhado. O batch input pelo
CALL TRANSACTION USING oferece um processamento mais rápido, porém menos
suporte à recuperação de erros e gerenciamento do batch input.
Ler dados de um arquivo seqüencial que tenha sido gerado por outro sistema
Se necessário efetuar conversão de dados.
Gerar uma sessão de batch input para o batch input clássico, ou processar os dados
diretamente com o CALL TRANSACTION USING. Utilizaremos os dois métodos em nosso
programa.
Crie um novo programa com o nome de ZMBDCxx, onde <xx> são suas iniciais.
No comando report defina 80 colunas, 65 linhas e message id ZZ.
Criar uma tela de seleção onde será informado o nome do arquivo de input (Parameter)
e o método de batch input desejado: batch input clássico ou call transaction (utilizar
radio buttons).
Vamos utilizar 3 performs que deverão ser incluídos entre os eventos START-OF-
SELECTION e END-OF-SELECTION:
- Perform initializa
- Perform monta_bdc
- Perform submite_bdc
Neste form faça a leitura do arquivo dentro de um loop. Para cada registro lido com
sucesso, execute os forms monta_bdc e submete_bdc.
Crie o form MONTA_BDC. Este form deverá preencher a tabela interna INT_BDC com
os dados do arquivo de entrada.
________________________________________________________________________________
Meta Serviços em Informática
6
CURSO DE ABAP – Módulo IV – Programação de Interfaces
Crie os dois forms acima recebendo os parâmetros e movendo os dados para a tabela
interna INT_BDC.
*----------------------------------------------------------------------*
* Program : ZMBDCXX Date : 08/21/96 *
* Descrição : Altera endereço de fornecedor Version : 1.0 *
*----------------------------------------------------------------------*
REPORT ZMBDCXX LINE-SIZE 80
LINE-COUNT 65
MESSAGE-ID ZZ.
*----------------------------------------------------------------------*
* Internal Tables *
*----------------------------------------------------------------------*
**** BDC Processing
DATA BEGIN OF INT_BDC OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA END OF INT_BDC.
*----------------------------------------------------------------------*
* Parameters *
*----------------------------------------------------------------------*
PARAMETERS: P_ARQUIVO(80) TYPE C. "Nome path do arquivo de entrada
*----------------------------------------------------------------------*
* Main Processing *
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM INITIALIZA.
PERFORM MONTA_BDC.
PERFORM SUBMITE_BDC.
END-OF-SELECTION.
PERFORM LISTA_ERROS.
________________________________________________________________________________
Meta Serviços em Informática
7
CURSO DE ABAP – Módulo IV – Programação de Interfaces
*---------------------------------------------------------------------*
* Form INITIALIZA *
*---------------------------------------------------------------------*
* Abre o arquivo de entrada *
*---------------------------------------------------------------------*
FORM INITIALIZA.
* Abre arquivo
OPEN DATASET P_INFILE FOR INPUT IN TEXT MODE.
*---------------------------------------------------------------------*
* Form PROCESSA_ARQUIVO *
*---------------------------------------------------------------------*
* Lê o arquivo e monta a tabela BDC para cada registro. *
* Submete cada transação e salva erros. *
*---------------------------------------------------------------------*
FORM PROCESSA_ARQUIVO.
DO.
READ DATASET P_INFILE INTO REC_VEND.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
PERFORM MONTA_BDC.
PERFORM SUBMETE_BDC.
ENDDO.
*---------------------------------------------------------------------*
* Form MONTA_BDC *
*---------------------------------------------------------------------*
* Preenche a BDC table para cada transação. *
*---------------------------------------------------------------------*
FORM MONTA_BDC.
ENDFORM. "SUBMITE_BDC
*---------------------------------------------------------------------*
* Form LISTA_ERROS *
*---------------------------------------------------------------------*
* This form will write out any errors to the screen. *
*
*---------------------------------------------------------------------*
FORM LSTA_ERROS.
LOOP AT INT_ERROR.
WRITE: /, INT_ERROR-LIFNR, 11 INT_ERROR-MSG.
ENDLOOP.
ENDFORM. "LISTA_ERROS
*---------------------------------------------------------------------*
* Form BDC_TELA
*---------------------------------------------------------------------*
* Pega parâmetros e entra cada tela na tabela interna BDC *
*---------------------------------------------------------------------*
FORM BDC_SCREEN USING P_PROGRAM P_SCREEN.
INT_BDC-PROGRAM = P_PROGRAM.
INT_BDC-DYNPRO = P_SCREEN.
INT_BDC-DYNBEGIN = 'X'.
APPEND INT_BDC.
ENDFORM.
*---------------------------------------------------------------------*
* Form BDC_CAMPOS
*---------------------------------------------------------------------*
________________________________________________________________________________
Meta Serviços em Informática
9
CURSO DE ABAP – Módulo IV – Programação de Interfaces
CASE P_VALUE.
WHEN ' '. "Se valor estiver em branco, não move
WHEN OTHERS. "Move valor
MOVE P_NAME TO INT_BDC-FNAM.
MOVE P_VALUE TO INT_BDC-FVAL.
APPEND INT_BDC.
ENDCASE.
ENDFORM.
Quando você cria uma sessão de batch input, a mesma permanece na fila até que seja
executada explicitamente. O processamento da sessão pode ser iniciado de duas maneiras:
Um usuário pode executar a sessão on-line, através das opções do menu de batch input:
Você pode executar a sessão em background submetendo um job que executará o programa
RSBDCSUB.
Você pode definir jobs para executar em background o seu programa de batch input e o
programa RSBDCSUB. Se você definir o job do programa de batch input como predecessor do
RSBDCSUB, o RSBDCSUB será executado automaticamente quando o job do batch input
terminar com sucesso.
O registro da execução de uma transação consiste numa seqüência de transações com as telas
processadas. Uma tela (Nome do programa, nome da tela) contém os campos modificados(nome
do campo, valor do campo), O comando de usuário executado(BDC_OKCODE) e a posição do
cursor(BDC_CURSOR).
Para iniciar a função de gravação, vá para a tela inicial de batch nput e clique em Record , ou
chame diretamente a transação SHDB.
O sistema armazena o registro com um nome de até 12 caracteres que você escolhe. Você deve
especificar este nome quando iniciar a gravação. Os seguintes caracteres não são permitidos:. ,
() ' " = Ä Ö Ü ß .
A função de gravação oferece uma visão de todos os registros existentes. Para exibir clique em
Overview. Você pode limitar a seleção, entrando com um intervalo de datas.
________________________________________________________________________________
Meta Serviços em Informática
10
CURSO DE ABAP – Módulo IV – Programação de Interfaces
Para criar um registro, especifique o nome e clique em Create. Na tela subseqüente, entre com o
nome da transação que deseja gravar. Execute a transação entrando com valores nos campos da
tela.
Dentro da visualização do registro, clique em Create session para criar uma sessão de batch
input com os dados da transação gravada . Depois processe a sessão normalmente.
Além de criar uma sessão, você também pode gerar um programa de batch input de dentro da
visualização do registro. Neste caso, selecione o registro desejado e especifique o nome do
programa que quer gerar. Depois entre com os atributos do programa e entre na lista de
objetos.
O programa gerado contém todo o código necessário para criar uma sessão de batch input.
Assim, você pode deixar de lado a execução da transação e a determinação do nome do
module pool, o número das telas, os nomes dos campos, e os códigos de função.
Você pode precisar alterar ligeiramente este programa, se quiser, por exemplo, ler dados que
serão transferidos de um arquivo seqüencial.
F1 e F4
Todas as funções dos menus System e Help,
Valores da variante standard,
Janelas de erro e mensagens de warning,
Rolagem via barra de rolagem (use F21 a F24, ao invés).
________________________________________________________________________________
Meta Serviços em Informática
11
CURSO DE ABAP – Módulo IV – Programação de Interfaces
________________________________________________________________________________
Meta Serviços em Informática
12