Você está na página 1de 14

Workshop Desenvolvedores ABAP/4 Semana II

Valinhos, maro / 2007

Programas de Carga (BDC): Introduo


ABAP/4 tem uma tcnica de programao para a entrada de dados dentro do SAP conhecida como Batch Data Communication Session ou BDC Session. Existe a necessidade de entrar com dados no sistema SAP, nas seguintes situaes Na implantao necessrio fazer a carga dos dados do sistema legado no SAP. Nesse caso normalmente gera-se arquivos TXT e atravs de programas ABAP que utilizam o conceito BDC sobe esses dados para o SAP Em casos de interface com outro sistema tambm existe a necessidade de receber dados de outro sistema paralelo Em casos onde utiliza-se de dados do prprio SAP para criar novos processos (ex: a partir da ordem de venda se cria o fornecimento e a fatura)

Programas de Carga (BDC): Transao SHDB


Antes de iniciar o desenvolvimento de um programa de carga/interface, necessrio que faa um mapeamento da transao que ser utilizada para fazer a entrada dos dados, gravando as telas e os campos de cada tela Para obtermos qual o programa e tela e tambm o nome de um determinado campo, utilizamos a tecla F1 e logo aps F9 (ou dados tcnicos nas verses mais atuais). Fazendo assim imagine que vamos preencher 100 campos em 5 telas diferentes, o trabalho para determinar toda a seqncia seria enorme, para facilitar isso o R/3 disponibiliza a transao SHDB, que faz um tipo de filmagem do que estamos fazendo na transao e gera uma tela com as informaes necessria para utilizarmos na confeco de nosso programa ( inclusive gera um programa pronto se for o caso e tambm o arquivo de teste)

Programas de Carga (BDC): Utilizando SHDB


Criar um novo registro de gravao Executar a filmagem criada para ver se est OK Gera um programa de teste Criar um arquivo para testes

Programas de Carga (BDC): Utilizando SHDB


Entrar com o nove da gravao a ser executada

Entrar com a transao SAP a ser executada

Programas de Carga (BDC): Utilizando SHDB

O Sistema executa a transao CO01 (escolhida anteriormente) A partir daqui todos os campos preenchidos e telas executadas so gravados, assim como os comandos (OK_CODE), isto , quais botes ou teclas foram executados. importante cuidado para no executar nada errado nesta hora

Programas de Carga (BDC): Utilizando SHDB

Programas de Carga (BDC): Estrutura BDC

necessrio entender a estrutura BDC Tambm importante definir o tipo de programa que ser desenvolvido BATCH INPUT ou CALL TRANSACTION

Programas de Carga (BDC): Batch Input


Mais utilizado para grandes massas de dados No executa entrada automtica, armazena para processamento posterior Esse armazenamento feito atravs de pastas, essas so processadas via SM35 Controle e tratamento de erros responsabilidade da SM35 So utilizadas funes para armazenamento na pasta

Programas de Carga (BDC): Call Transaction


EXEMPLO: call transaction 'MM01' using t_bdc mode p_modo messages into t_msg update 'S'.

Mais utilizados para volumes de dados menores e entradas que dependem do retorno da execuo Preenche-se a tabela BDC de acordo com a SHDB e ao invs de armazenar em pasta, executa-se a instruo CALL TRANSACTION como segue: CALL TRANSACTION <transao > USING <tabela interna BDC> MODE <A> exibir passo a passo <E> somente erros <N> no exibir MESSAGES <tabela interna para armazenar as mensagens> UPDATE <modo de gravao (S) Sncrono>

As mensagens de erro devem ser controladas pelo programa (WRITE_MESSAGE )

Programas de Carga (BDC): Arquivos Texto


Processamento On-Line, nvel de presentation
CALL FUNCTION 'WS_UPLOAD' EXPORTING * CODEPAGE ='' FILENAME = p_path Nome e caminho do arquivo FILETYPE = 'ASC' ASC para TXT e DAT p/ XLS TABLES DATA_TAB = t_arq Tabela interna para receber os dados EXCEPTIONS CONVERSION_ERROR =1 FILE_OPEN_ERROR =2 FILE_READ_ERROR =3 INVALID_TYPE =4 NO_BATCH =5 UNKNOWN_ERROR =6 INVALID_TABLE_WIDTH =7 GUI_REFUSE_FILETRANSFER =8 CUSTOMER_ERROR =9 OTHERS = 10

Programas de Carga (BDC): Arquivos Texto


Processamento Background, nvel de serv. Aplicao (UNIX ou NT)
Funo WS.... E GUI... UPLOAD, no funcionam em Background OPEN DATASET <nome do arquivo> READ DATASET ... CLOSE DATASET.....

Exemplo: DATA: dsn(20) VALUE '/usr/test.dat', rec(80). OPEN DATASET dsn FOR INPUT. IF sy-subrc = 0. DO. READ DATASET dsn INTO rec. IF sy-subrc <> 0. EXIT. ELSE. WRITE / rec. ENDIF. ENDDO. ENDIF. CLOSE DATASET dsn.

Programas de Carga (BDC): Programas Estruturados


O processo de preencher a tabela interna com estrutura BDC sempre o mesmo para todos os programas, ento podemos utilizar tcnicas que permite nos desenvolver com maior rapidez e tambm com um cdigo mais limpo.

Exemplo: REFRESH T_BDC. perform insert_line USING: 'X' 'SAPLMGMM' '0060', ' ' 'BDC_CURSOR' 'RMMG1-MTART', ' ' 'RMMG1-MBRSH' 'A', ' ' 'RMMG1-MTART' 'FERT', ' ' 'BDC_OKCODE' '/00'. REFRESH T_MSG. call transaction 'MM01' using t_bdc mode p_modo messages into t_msg update 'S'.

*&---------------------------------------------------------------------* *& Form insert_line *&---------------------------------------------------------------------* FORM insert_line USING U_START TYPE C U_NAME TYPE C U_VALUE. CLEAR T_BDC. MOVE U_START TO T_BDC-DYNBEGIN. IF U_START = 'X'. MOVE: U_NAME TO T_BDC-PROGRAM, U_VALUE TO T_BDC-DYNPRO. ELSE. MOVE: U_NAME TO T_BDC-FNAM, U_VALUE TO T_BDC-FVAL. ENDIF. APPEND T_BDC. ENDFORM. " insert_line

Programas de Carga (BDC)

Dvidas?!?

Você também pode gostar