Você está na página 1de 12

CURSO DE ABAP – Módulo IV – Programação de Interfaces

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

2. OS MÉTODOS DE BATCH INPUT........................................................................3


2.1. Batch input “clássico”.....................................................................................3
2.2. Call transaction.................................................................................................3

3. APLICAÇÕES TÍPICAS DE BATCH INPUT...........................................................3

4. ANALISANDO TRANSAÇÕES SAP......................................................................4


4.1. Coletando dados da transação.......................................................................4

5. ESCREVENDO UM PROGRAMA DE BATCH INPUT...........................................5

6. PROCESSAMENTO DE SESSÕES DE BATCH INPUT......................................10

7. REGISTRO DE EXECUÇÃO DE TRANSAÇÃO..................................................10


7.1. Criação de sessões batch input através do registro da transação..........11
7.2. Geração de programa de batch input a partir dos dados gravados.........11
7.3. Características especiais da gravação........................................................11

________________________________________________________________________________
Meta Serviços em Informática
2
CURSO DE ABAP – Módulo IV – Programação de Interfaces

1. CONCEITO DE BATCH INPUT

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.

A técnica do batch input oferece as seguintes vantagens para transferência de dados:

Não é requerida interação manual durante a transferência de dados. Se os dados a serem


transferidos já estiverem disponíveis em meio eletrônico (arquivo texto, por exemplo), podemos
transferi-los automaticamente para o SAP usando o batch input.

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.

2. OS MÉTODOS DE BATCH INPUT

2.1. Batch input “clássico”

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.

2.2. Call transaction

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.

3. APLICAÇÕES TÍPICAS DE BATCH INPUT

________________________________________________________________________________
Meta Serviços em Informática
3
CURSO DE ABAP – Módulo IV – Programação de Interfaces

 Entrada de dados de origens diversas no SAP quando da sua implantação (carga


inicial)

 Transferência periódica de dados capturados de sistemas não SAP para o sistema SAP.

4. ANALISANDO TRANSAÇÕES 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.

objetivo da análise é obter a seguinte informação:

 O código da transação

 O nome dos programas e números das telas da transação

 Quais os campos que requerem entrada

 Em quais campos você pode permitir valores default

 O nomes, tipo e comprimento dos campos que são utilizados pela transação

 Os identificadores das funções que você precisará chamar para executar a


transação.

4.1. Coletando dados da 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.

Para analisar a transação, faça o seguinte:

 Execute a transação entrando com o código da mesma no command field:


MK02

 Entre com dados na transação e execute funções que serão requeridas no


processamento de seus dados de batch input.

 Em cada tela, anote o nome do programa e o número da tela (dynpro).

 Exiba estas informações selecionando System  Status.

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

 Anote a seguinte informação:

________________________________________________________________________________
Meta Serviços em Informática
4
CURSO DE ABAP – Módulo IV – Programação de Interfaces

- O nome do campo para batch input

- O comprimento e tipo de dado do campo. Você pode exibir esta informação


dando um duplo clique no campo Data element.

 Encontre o código de a identificação para cada função (botão ou menu) que


você terá que executar para processar o batch input.
 Ponha o cursor no botão ou menu enquanto clica o botão esquerdo do mouse.
Depois pressione F1. Na janela pop-up window que aparecerá clique em
Technical info e anote o código mostrado no campo Function.

Após a execução dos passos acima, você deverá ter anotado as seguintes informações:

Programa Tela Campo Descrição Tamanho Função


SAPMF02 0100 RF02K-LIFNR Nº fornecedor 10
RF02K-EKORG Organização de 4
compras
RK02K-D0110 Check box para 1
mudança de
endereço

SAPMF02 0200 LFA1-NAME1 Nome (campo 1) 35


LFA1-NAME2 Nome (campo 2) 35
LFA1-NAME3 Nome (campo 3) 35
LFA1-NAME4 Nome (campo 4) 35
LFA1-STRAS Rua 35
LFA1-ORT01 Cidade 35
LFA1-REGIO Estado 35
LFA1-PSSTLZ CEP 10
LFA1-LAND1 País 3
LFA1-TELF1 Telefone 1 16
LFA1-TELF2 Telefone 2 16
BDC_OKCODE /11

5. ESCREVENDO UM PROGRAMA DE BATCH INPUT

Depois de analisar as transações, vamos escrever o programa de batch input.

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.

Nosso programa deverá fazer o seguinte:

Ler dados de um arquivo seqüencial que tenha sido gerado por outro sistema
Se necessário efetuar conversão de dados.

Preparar os dados para o processamento, armazenando-os na estrutura de dados de batch


input, a BDCDATA.
________________________________________________________________________________
Meta Serviços em Informática
5
CURSO DE ABAP – Módulo IV – Programação de Interfaces

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.

Vamos, então, seguir os passos abaixo:

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

 Defina 3 tabelas internas:

- INT_BDC, com a estrutura do batch input BDCDATA.

- REG_FOR, com os campos que serão alterados. Defina os campos LIKE os


respectivos campos da tela.

- INT_ERR, para armazenar as mensagens de erro. Deverá conter 2 campos:

MSG like SY-MSGV1


LIFNR like LFA1-LIFNR

 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

 Crie o form INITIALIZATION e insira o comando de abertura do arquivo. Se ocorrer


eero na abertura, exiba uma mensagem, senão execute o form
PROCESSA_ARQUIVO.

 Crie o form PROCESSA_ARQUIVO.

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.

Dentro deste form chamaremos mais dois forms:

BDC_TELA, com passagem dos parâmetros NOME DO PROGRAMA E Nº DA TELA.

BDC_CAMPOS, com passagem dos parâmetros NOME DO CAMPO e CONTEÚDO DO


CAMPO.

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

**** Vendor In File


DATA: BEGIN OF REG_FOR,
LIFNR LIKE RF02K-LIFNR,
EKORG LIKE RF02K-EKORG,
NAME1 LIKE LFA1-NAME1,
NAME2 LIKE LFA1-NAME2,
NAME3 LIKE LFA1-NAME3,
NAME4 LIKE LFA1-NAME4,
STRAS LIKE LFA1-STRAS,
ORT01 LIKE LFA1-ORT01,
REGIO LIKE LFA1-REGIO,
PSTLZ LIKE LFA1-PSTLZ,
LAND1 LIKE LFA1-LAND1,
TELF1 LIKE LFA1-TELF1,
TELF2 LIKE LFA1-TELF2,
END OF REG_FOR.

DATA: BEGIN OF INT_ERR OCCURS 50,


MSG LIKE SY-MSGV1,
LIFNR LIKE LFA1-LIFNR,
END OF INT_ERR.

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

* Se o arquivo não abrir, mostra mensagem de erro


IF SY-SUBRC <> 0.
MESSAGE E999 WITH 'Erro na abertura do arquivo ' P_INFILE.
ENDIF.
ENDFORM. " INITIALIZA

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

ENDFORM. " PROCESSA_ARQUIVOS

*---------------------------------------------------------------------*
* Form MONTA_BDC *
*---------------------------------------------------------------------*
* Preenche a BDC table para cada transação. *
*---------------------------------------------------------------------*
FORM MONTA_BDC.

*** Build Screen 100


PERFORM BDC_TELA TABLES INT_BDC
USING 'SAPMFO2K' '0100'.

PERFORM BDC_CAMPOS TABLES INT_BDC:


USING 'RF02K-LIFNR' REC_VEND-LIFNR, "Fornecedor
USING 'RF02K-EKORG' REC_VEND-EKORG, "Organização de compras
USING 'RF02K-D0110' 'X'. "Marcação do campo endereço
*** Build Screen 200
PERFORM BDC_TELA TABLES INT_BDC
USING 'SAPMFO2K' '0200'.

PERFORM BDC_CAMPOS TABLES INT_BDC:


USING 'LFA1-NAME1' REC_VEND-NAME1, "Nome 1
USING 'LFA1-NAME2' REC_VEND-NAME2, "Nome 2
USING 'LFA1-NAME3' REC_VEND-NAME3, "Nome 3
USING 'LFA1-NAME4' REC_VEND-NAME4, "Nome 4
________________________________________________________________________________
Meta Serviços em Informática
8
CURSO DE ABAP – Módulo IV – Programação de Interfaces

USING 'LFA1-STRAS' REC_VEND-STRAS, "Rua


USING 'LFA1-ORT01' REC_VEND-ORT01, "Cidade
USING 'LFA1-REGIO' REC_VEND-REGIO, "Estado
USING 'LFA1-PSTLZ' REC_VEND-PSTLZ, "CEP
USING 'LFA1-LAND1' REC_VEND-LAND1, "País
USING 'LFA1-TELF1' REC_VEND-TELF1, "Telefone 1
USING 'LFA1-TELF2' REC_VEND-TELF2., "Telefone 2
USING 'BDC_OKCODE' '/11' . "Salva
ENDFORM. "MONTA_BDC
*---------------------------------------------------------------------*
* Form SUBMETE_BDC *
*---------------------------------------------------------------------*
* This form will submit the BDC table using CALL TRANSACTION. *
*
*---------------------------------------------------------------------*
FORM SUBMITE_BDC.

CALL TRANSACTION 'MK02' USING INT_BDC MODE 'N'.


IF SY-SUBRC <> 0. "If error record vendor and error msg
MOVE SY-MSGV1 TO INT_ERR-MSG.
MOVE REC_VEND-LIFNR TO INT_ERR-LIFNR.
APPEND INT_ERR.
ENDIF.

ENDFORM. "SUBMITE_BDC

*---------------------------------------------------------------------*
* Form LISTA_ERROS *
*---------------------------------------------------------------------*
* This form will write out any errors to the screen. *
*
*---------------------------------------------------------------------*
FORM LSTA_ERROS.

WRITE 'Vendor Records with Errors!'.


WRITE: /, 'VENDOR', 11 'ERROR MESSAGE'.

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.

CLEAR INT_BDC. "Limpa tabela interna

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

* Pega parâmetros e entra os campos da tela na tabela interna BDC *


* table specified for a new field. *
*---------------------------------------------------------------------*
FORM BDC_FIELD USING P_NAME P_VALUE.

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.

6. PROCESSAMENTO DE SESSÕES DE BATCH INPUT

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:

System  Services  Batch Input

Você pode executar a sessão em background submetendo um job que executará o programa
RSBDCSUB.

É possível coordenar a geração e a execução da sessão em background. Este recurso é muito


utilizado para interfaces periódicas automáticas.

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.

7. REGISTRO DE EXECUÇÃO DE TRANSAÇÃO

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.

Após o término da execução da transação, o sistema exibe as telas processadas(module pool,


número da tela), os campos alterados(nome do campo, valor do campo), os comandos de usuário
executados(BDC_OKCODE) e a posição do cursor (BDC_CURSOR) numa lista hierárquica.
Clique em Copy transaction para gravar a a execução da transação. Clique em Next transaction
se desejar gravar a execução de outra transação.

Após a gravação de todas as transações desejadas, salve o registro.

7.1. Criação de sessões batch input através do registro da transação

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.

7.2. Geração de programa de batch input a partir dos dados gravados

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.

7.3. Características especiais da gravação

Os seguintes dados não são gravados

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

O COMMIT WORK indica o fim com successo da transação e da gravação.

O LEAVE TO TRANSACTION não pode ser processado no batch input e, consequentemente


finaliza a gravação.

________________________________________________________________________________
Meta Serviços em Informática
11
CURSO DE ABAP – Módulo IV – Programação de Interfaces

________________________________________________________________________________
Meta Serviços em Informática
12

Você também pode gostar