Você está na página 1de 11

CURSO DE ABAP Mdulo IV Programao de Interfaces

PROGRAMAO DE INTERFACES

NDICE
________________________________________________________________________________ Meta Servios em Informtica 1

CURSO DE ABAP Mdulo IV Programao de Interfaces

CONCEITO DE BATCH INPUT


O batch input uma tcnica utilizada para transferncia de dados de sistemas no SAP para o sistema SAP. Existem dois mtodos de batch input. Ambos carregam dados para o sistema atravs de transaes normais do SAP, exatamente como um usurio faria. A diferena que o batch input executa as transaes automaticamente e apropriado para grandes quantidades de dados disponveis em meio eletrnico. A tcnica do batch input oferece as seguintes vantagens para transferncia de dados: No requerida interao manual durante a transferncia de dados. Se os dados a serem transferidos j estiverem disponveis em meio eletrnico (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 transao que o usurio usaria para entrar manualmente com os dados. Sendo assim os dados no batch input so submetidos a todas as checagens e controles que se aplicam entrada manual dos dados.

________________________________________________________________________________ Meta Servios em Informtica 2

CURSO DE ABAP Mdulo IV Programao de Interfaces

OS MTODOS DE BATCH INPUT Batch input clssico


Neste mtodo, um programa ABAP l os dados externos que sero entrados no SAP e armazena estes dados numa sesso batch input. A sesso armazena as aes requeridas para entrada dos dados usando transaes normais do SAP. Uma vez gerada a sesso, ela deve ser executada para que sejam processadas as transaes de entrada de dados. Voc pode, tanto executar manualmente e monitorar a sesso com a funo de gerenciamento de batch input,( Foreinground ) como ter a sesso executada por um processamento em ( background ).

Call transaction
Neste mtodo, utilizamos o comando CALL TRANSACTION USING para executar uma transao SAP. Neste caso os dados de batch input no precisam ser armazenados numa sesso para posterior processamento. Em vez disso, todo o processo de batch input executado online durante a execuo do programa. Ambos os mtodos de batch input usam uma estrutura de dados comum para armazenar os dados e as instrues. Essa estrutura a BDCDATA.

APLICAES TPICAS DE BATCH INPUT


Entrada de dados de origens diversas no SAP quando da sua implantao (carga inicial) Transferncia peridica de dados capturados de sistemas no SAP para o sistema SAP.

ANALISANDO TRANSAES SAP


Se voc estiver criando seu prprio procedimento de batch input, voc precisar analisar as transaes SAP nas quais os dados de batch input sero entrados. objetivo da anlise obter a seguinte informao: O cdigo da transao O nome dos programas e nmeros das telas da transao Quais os campos que requerem entrada Em quais campos voc pode permitir valores default (Fixos) O nomes, tipo e comprimento dos campos que so utilizados pela transao

________________________________________________________________________________ Meta Servios em Informtica 3

CURSO DE ABAP Mdulo IV Programao de Interfaces

Os identificadores das funes que voc precisar chamar para executar a transao.

Coletando dados da transao


No exerccio abaixo vamos analisar a transao que modifica fornecedor, na qual faremos um batch input para alterar o endereo do fornecedor. Para analisar a transao, faa o seguinte: Execute a transao entrando com o cdigo da mesma no command field: MK02 Entre com dados na transao e execute funes que sero requeridas no processamento de seus dados de batch input. Em cada tela, anote o nome do programa e o nmero da tela (dynpro). Exiba estas informaes selecionando System Status.

Se durante a execuo aparecer uma janela pop-up, voc poder obter o nome do programa e nmero da tela pressionando F1 em qualquer campo ou boto 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 informao:

- O nome do campo para batch input - O comprimento e tipo de dado do campo. Voc pode exibir esta informao dando um duplo clique no campo Data element. Encontre o cdigo de a identificao para cada funo (boto ou menu) que voc ter que executar para processar o batch input. Ponha o cursor no boto ou menu enquanto clica o boto esquerdo do mouse. Depois pressione F1. Na janela pop-up window que aparecer clique em Technical info e anote o cdigo mostrado no campo Function. Aps a execuo dos passos acima, voc dever ter anotado as seguintes informaes: Programa SAPMF02 Tela 0100 Campo RF02K-LIFNR RF02K-EKORG RK02K-D0110 Descrio N fornecedor Organizao de compras Check box para mudana de endereo Nome (campo 1) Nome (campo 2) Nome (campo 3) Nome (campo 4) Tamanho 10 4 1 Funo

SAPMF02

0200

LFA1-NAME1 LFA1-NAME2 LFA1-NAME3 LFA1-NAME4

35 35 35 35

________________________________________________________________________________ Meta Servios em Informtica 4

CURSO DE ABAP Mdulo IV Programao de Interfaces

LFA1-STRAS LFA1-ORT01 LFA1-REGIO LFA1-PSSTLZ LFA1-LAND1 LFA1-TELF1 LFA1-TELF2 BDC_OKCODE shdb

Rua Cidade Estado CEP Pas Telefone 1 Telefone 2

35 35 35 10 3 16 16 /11

ESCREVENDO UM PROGRAMA DE BATCH INPUT


Depois de analisar as transaes, vamos escrever o programa de batch input. Antes de escrever o programa, temos que definir o mtodo de batch input que vamos usar. O batch input clssico mais confortvel, pois oferece o gerenciamento da sesso, possibilitando reinicio do processamento e exibindo um log detalhado. O batch input pelo CALL TRANSACTION USING oferece um processamento mais rpido, porm menos suporte recuperao de erros e gerenciamento do batch input. Nosso programa dever fazer o seguinte: Ler dados de um arquivo seqencial que tenha sido gerado por outro sistema Se necessrio efetuar converso de dados. Preparar os dados para o processamento, armazenando-os na estrutura de dados de batch input, a BDCDATA. Gerar uma sesso de batch input para o batch input clssico, ou processar os dados diretamente com o CALL TRANSACTION USING. Utilizaremos os dois mtodos em nosso programa. Vamos, ento, seguir os passos abaixo: Crie um novo programa com o nome de ZMBDCxx, onde <xx> so 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 sero 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 seleo onde ser informado o nome do arquivo de input (Parameter) e o mtodo de batch input desejado: batch input clssico ou call transaction (utilizar radio buttons).

________________________________________________________________________________ Meta Servios em Informtica 5

CURSO DE ABAP Mdulo IV Programao de Interfaces

Vamos utilizar 3 performs que devero ser includos entre os eventos START-OFSELECTION 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 erro na abertura, exiba uma mensagem, seno execute o form PROCESSA_ARQUIVO. Crie o form PROCESSA_ARQUIVO.

Neste form faa 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: * Comea Tela BDC_TELA, com passagem dos parmetros NOME DO PROGRAMA E N DA TELA. * Insere Campos BDC_CAMPOS, com passagem dos parmetros NOME DO CAMPO e CONTEDO DO CAMPO. Crie os dois forms acima recebendo os parmetros e movendo os dados para a tabela interna INT_BDC.

*----------------------------------------------------------------------* * Program : ZMBDCXX Date : 08/21/96 * * Descrio : Altera endereo de fornecedor Version : 1.0 * *----------------------------------------------------------------------* REPORT ZMBDCXX LINE-SIZE 80 LINE-COUNT 65 MESSAGE-ID ZZ. *----------------------------------------------------------------------* * Internal Tables * *----------------------------------------------------------------------* **** BDC Processing INT_BDC, com a estrutura do batch input BDCDATA. DATA BEGIN OF INT_BDC OCCURS 100. INCLUDE STRUCTURE BDCDATA.

________________________________________________________________________________ Meta Servios em Informtica 6

CURSO DE ABAP Mdulo IV Programao de Interfaces

DATA END OF INT_BDC. **** Vendor In File REG_FOR, com os campos que sero alterados. 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.
INT_ERR, para armazenar as mensagens de erro. Dever conter 2 campos: MSG like SY-MSGV1 LIFNR like LFA1-LIFNR

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 SUBMIT_BDC. END-OF-SELECTION. PERFORM LISTA_ERROS. *---------------------------------------------------------------------* * Form INITIALIZA * *---------------------------------------------------------------------* * Abre o arquivo de entrada * *---------------------------------------------------------------------* FORM INITIALIZA. * Abre arquivo OPEN DATASET P_INFILE FOR INPUT IN TEXT MODE. * Se o arquivo no 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 *

________________________________________________________________________________ Meta Servios em Informtica 7

CURSO DE ABAP Mdulo IV Programao de Interfaces

*---------------------------------------------------------------------* * L o arquivo e monta a tabela BDC para cada registro. * * Submete cada transao e salva erros. * *---------------------------------------------------------------------* FORM PROCESSA_ARQUIVO. DO. READ DATASET P_INFILE INTO REC_VEND. IF SY-SUBRC <> 0. EXIT. ENDIF. PERFORM MONTA_BDC. PERFORM SUBMIT_BDC. ENDDO. ENDFORM. " PROCESSA_ARQUIVOS

*---------------------------------------------------------------------* * Form MONTA_BDC * *---------------------------------------------------------------------* * Preenche a BDC table para cada transao. * *---------------------------------------------------------------------* FORM MONTA_BDC. *** Build Screen 100 PERFORM BDC_TELA TABLES INT_BDC USING 'SAPMFO2K' '0100'. PERFORM BDC_CAMPOS TABLES INT_BDC: USING 'RF02K-LIFNR' REG_FOR-LIFNR, USING 'RF02K-EKORG' REG_FOR-EKORG, USING 'RF02K-D0110' 'X'. *** Build Screen 200 PERFORM BDC_TELA TABLES INT_BDC USING 'SAPMFO2K' '0200'. "Fornecedor "Organizao de compras "Marcao do campo endereo

PERFORM BDC_CAMPOS TABLES INT_BDC: USING 'LFA1-NAME1' REG_FOR-NAME1, "Nome 1 USING 'LFA1-NAME2' REG_FOR-NAME2, "Nome 2 USING 'LFA1-NAME3' REG_FOR-NAME3, "Nome 3 USING 'LFA1-NAME4' REG_FOR REC_FOR-NAME4, "Nome 4 USING 'LFA1-STRAS' REG_FOR-STRAS, "Rua USING 'LFA1-ORT01' REG_FOR-ORT01, "Cidade USING 'LFA1-REGIO' REG_FOR-REGIO, "Estado USING 'LFA1-PSTLZ' REG_FOR-PSTLZ, "CEP USING 'LFA1-LAND1' REG_FOR-LAND1, "Pas USING 'LFA1-TELF1' REG_FOR-TELF1, "Telefone 1 USING 'LFA1-TELF2' REG_FOR-TELF2., "Telefone 2 USING 'BDC_OKCODE' '/11' . "Salva ENDFORM. "MONTA_BDC *---------------------------------------------------------------------* * Form SUBMITE_BDC * *---------------------------------------------------------------------* * This form will submit the BDC table using CALL TRANSACTION. * * *---------------------------------------------------------------------* FORM SUBMITE_BDC. CALL TRANSACTION 'MK02' USING INT_BDC MODE 'N'. ou A IF SY-SUBRC <> 0. "If error record vendor and error msg

________________________________________________________________________________ Meta Servios em Informtica 8

CURSO DE ABAP Mdulo IV Programao de Interfaces

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 parmetros e entra cada tela na tabela interna BDC * *---------------------------------------------------------------------* FORM BDC_SCREEN USING P_PROGRAM P_SCREEN. CLEAR INT_BDC. INT_BDC-PROGRAM INT_BDC-DYNPRO INT_BDC-DYNBEGIN APPEND INT_BDC. ENDFORM. *---------------------------------------------------------------------* * Form BDC_CAMPOS *---------------------------------------------------------------------* * Pega parmetros 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, no move WHEN OTHERS. "Move valor MOVE P_NAME TO INT_BDC-FNAM. MOVE P_VALUE TO INT_BDC-FVAL. APPEND INT_BDC. ENDCASE. ENDFORM. = P_PROGRAM. = P_SCREEN. = 'X'. "Limpa tabela interna

PROCESSAMENTO DE SESSES DE BATCH INPUT

________________________________________________________________________________ Meta Servios em Informtica 9

CURSO DE ABAP Mdulo IV Programao de Interfaces

Quando voc cria uma sesso de batch input, a mesma permanece na fila at que seja executada explicitamente. O processamento da sesso pode ser iniciado de duas maneiras: Um usurio pode executar a sesso on-line, atravs das opes do menu de batch input: System Services Batch Input Voc pode executar a sesso em background submetendo um job que executar o programa RSBDCSUB. possvel coordenar a gerao e a execuo da sesso em background. Este recurso muito utilizado para interfaces peridicas automticas. 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.

REGISTRO DE EXECUO DE TRANSAO


O registro da execuo de uma transao consiste numa seqncia de transaes com as telas processadas. Uma tela (Nome do programa, nome da tela) contm os campos modificados(nome do campo, valor do campo), O comando de usurio executado(BDC_OKCODE) e a posio do cursor(BDC_CURSOR). Para iniciar a funo de gravao, v para a tela inicial de batch nput e clique em Record , ou chame diretamente a transao SHDB. O sistema armazena o registro com um nome de at 12 caracteres que voc escolhe. Voc deve especificar este nome quando iniciar a gravao. Os seguintes caracteres no so permitidos:. , () ' " = . A funo de gravao oferece uma viso de todos os registros existentes. Para exibir clique em Overview. Voc pode limitar a seleo, entrando com um intervalo de datas. Para criar um registro, especifique o nome e clique em Create. Na tela subseqente, entre com o nome da transao que deseja gravar. Execute a transao entrando com valores nos campos da tela. Aps o trmino da execuo da transao, o sistema exibe as telas processadas(module pool, nmero da tela), os campos alterados(nome do campo, valor do campo), os comandos de usurio executados(BDC_OKCODE) e a posio do cursor (BDC_CURSOR) numa lista hierrquica. Clique em Copy transaction para gravar a a execuo da transao. Clique em Next transaction se desejar gravar a execuo de outra transao. Aps a gravao de todas as transaes desejadas, salve o registro.

Criao de sesses batch input atravs do registro da transao


Dentro da visualizao do registro, clique em Create session para criar uma sesso de batch input com os dados da transao gravada . Depois processe a sesso normalmente. ________________________________________________________________________________ Meta Servios em Informtica 10

CURSO DE ABAP Mdulo IV Programao de Interfaces

Gerao de programa de batch input a partir dos dados gravados


Alm de criar uma sesso, voc tambm pode gerar um programa de batch input de dentro da visualizao 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 contm todo o cdigo necessrio para criar uma sesso de batch input. Assim, voc pode deixar de lado a execuo da transao e a determinao do nome do module pool, o nmero das telas, os nomes dos campos, e os cdigos de funo. Voc pode precisar alterar ligeiramente este programa, se quiser, por exemplo, ler dados que sero transferidos de um arquivo seqencial.

Caractersticas especiais da gravao


Os seguintes dados no so gravados F1 e F4 Todas as funes 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 invs).

O COMMIT WORK indica o fim com successo da transao e da gravao. O LEAVE TO TRANSACTION no pode ser processado no batch input e, consequentemente finaliza a gravao.

________________________________________________________________________________ Meta Servios em Informtica 11