Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Conceituação 3
1.1. O que é ALE 3
1.2. Qual é a diferença entre ALE, EDI, IDoc e BAPI ? 4
1.3. Blocos de Construção de ALE e Seus Conceitos 5
2. Guia rápido para criar IDoc de saída – outbound 9
3. Guia rápido para criar IDoc de entrada – inbound 15
3.1. Criando um IDoc de entrada (inbound) usando BAPI 15
1. Conceituação
d) Porta
É a representação lógica de canal de comunicação em SAP, com os IDocs sendo os dados
comunicados. São quatro tipos de portas que podem ser definidos em R/3: tRFC, File, R/2,
e Internet. ALE pode utilizar todas os tipos de porta para distribuir IDocs, enquanto EDI
tipicamente utiliza a porta baseada em “file”. As portas tipo tRFC e file podem ser ligadas
aos destinos RFC conectados em R/3-para-R/3 ou TCP/IP.
e) Destino RFC
O destino RFC é o termo que define as características de comunicação ligado a um sistema
remoto onde uma função precisa ser executada. A comunicação R/3-para-R/3 utiliza tRFC
(transactional RFC). O prefixo transactional indica meramente que uma função específica é
executada por unidade lógica de trabalho, que pode ser Mestre de Material, ou a entrega,
ou o faturamento.
f) Códigos de Processo
Códigos de processo são usados em ALE e EDI para identificar o módulo de função ou API
para ser chamado e conseqüentemente processado. Cada código de processo é associado
a um tipo de mensagem. Códigos de processo tipo outbound são armazenados na tabela
TEDE1 e códigos de processo tipo inbound são armazenados na tabela TEDE2.
g) Tipo de Parceiro
Tipo de parceiro é um identificador do sistema para comunicar mensagens. Existem quatro
tipos de parceiro: KU (Cliente), LI (Fornecedor), B (Banco) e LS (Sistema Lógico). Tipo de
parceiro define vários elementos de ALE e EDI com os parâmetros de comunicação entre
dois ou mais sistemas. Os principais parâmetros são: tipos de mensagem, tipos de IDoc,
códigos de processo, funções parceiro, identificadores da aplicação, funções de mensagem,
tipos de saída e portas.
Tipo de parceiro exerce um papel muito importante pois ele age como um gateway para
comunicação ALE e EDI. Ele transfere mensagens específicas através de tipos de IDoc
definidos para a porta depois da execução de certos módulos de função para
processamento outbound. Ele também pode receber tipo específico de IDoc, e identifica
módulos de função apropriados para que insira dados no banco no caso de interface
inbound.
h) Modelo de Distribuição
No sistema R/3, o Modelo de Distribuição é uma ferramenta que armazena informações
sobre o fluxo de dados entre vários sistemas. O modelo de distribuição armazena dados
que informam quais as mensagens (tipos de mensagem) sejam transmitidas para quais
Sistemas Lógicos. Várias mensagens podem ser transmitidas para um Sistema Lógico, e
uma única mensagem pode ser transmitida para vários Sistemas Lógicos.
2. Guia rápido para criar IDoc de saída – outbound
Vamos criar um IDoc de saída (outbound) usando a BAPI: BAPI_BANK_GETLIST.
1º passo: Criar os segmentos através da transação WE31:
Criar segmento conforme a estrutura BAPI1011_LIST:
Tipo de segmento: ZE1BANKLIST
Descrição breve: Lista de Bancos
Item Nome de campo Elemento de dados
1 BANK_CTRY BANKS
2 BANK_KEY BANKK
3 BANK_NAME BANKA
4 CITY ORT01_GP
Tabelas:
Nome parâmetro Atrib. Tipo referência Opc.
RECEIVERS LIKE BDI_LOGSYS
COMMUNICATION_DOCUMENTS LIKE SWOTOBJID X
Exceção:
ERROR_CREATING_IDOCS
Texto fonte:
*-------------------*
* Tabelas internas
*-------------------*
DATA: BEGIN OF ti_bank_list OCCURS 0.
INCLUDE STRUCTURE bapi1011_list.
DATA: END OF ti_bank_list.
*-------------------*
* Variáveis globais
*-------------------*
DATA: idoc_control LIKE bdicontrol,
idoc_data LIKE edidd OCCURS 0 WITH HEADER LINE,
idoc_receiver LIKE bdi_logsys OCCURS 0 WITH HEADER LINE,
idoc_comm LIKE edidc OCCURS 0 WITH HEADER LINE,
syst_info LIKE syst.
*----------------*
* Processamento
*----------------*
* Popular registro de controle
* Tipo de mensagem
idoc_control-mestyp = 'ZMG_BANKLIST'.
* Tipo de IDoc
idoc_control-idoctp = 'ZID_BANKLIST'.
idoc_control-serial = sy-datum.
idoc_control-serial+8 = sy-uzeit.
*-------------------*
* Seleção de dados
*-------------------*
LOOP AT receivers.
CLEAR: syst_info.
CALL FUNCTION 'BAPI_BANK_GETLIST'
EXPORTING
bank_ctry = bank_ctry
max_rows = 0
TABLES
bank_list = ti_bank_list.
* call subroutine to create IDoc data-record *
CLEAR: syst_info, idoc_data.
REFRESH idoc_data.
PERFORM inserir_segmento_banklist TABLES ti_bank_list
idoc_data.
* distribute idocs *
REFRESH: idoc_receiver, idoc_comm.
APPEND receivers TO idoc_receiver.
CALL FUNCTION 'ALE_IDOCS_CREATE'
EXPORTING
idoc_control = idoc_control
chnum = serial_id
TABLES
idoc_data = idoc_data
receivers = idoc_receiver
created_idocs_additional = idoc_comm
EXCEPTIONS
idoc_input_was_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING error_creating_idocs.
ENDIF.
IF communication_documents IS REQUESTED.
LOOP AT idoc_comm.
CLEAR communication_documents.
communication_documents-objtype = 'IDOC'.
communication_documents-objkey = idoc_comm-docnum.
communication_documents-logsys = idoc_comm-rcvprn.
communication_documents-describe = space.
APPEND communication_documents.
ENDLOOP.
ENDIF.
ENDLOOP.
* applications do commit work to trigger communications *
COMMIT WORK.
ENDFUNCTION.
*---------------------------------------------------------------------*
* FORM inserir_segmento_banklist *
*---------------------------------------------------------------------*
* Criar IDoc data-record *
*---------------------------------------------------------------------*
FORM inserir_segmento_banklist
TABLES
ti_bank_list STRUCTURE bapi1011_list
idoc_data STRUCTURE edidd.
DATA: ze1banklist LIKE ze1banklist,
ti_ze1banklist LIKE edidd OCCURS 0 WITH HEADER LINE.
* for segment 'ZE1BANKLIST'
CLEAR ti_ze1banklist.
REFRESH ti_ze1banklist.
ti_ze1banklist-segnam = 'ZE1BANKLIST'.
LOOP AT ti_bank_list.
CLEAR ze1banklist.
MOVE-CORRESPONDING ti_bank_list TO ze1banklist.
IF NOT ze1banklist IS INITIAL.
ti_ze1banklist-sdata = ze1banklist.
APPEND ti_ze1banklist.
ENDIF.
APPEND ti_ze1banklist TO idoc_data.
ENDLOOP.
ENDFORM.
8º passo: Criar código de processo – saída através da transação WE41:
Cód.processo: ZCP_BANKLIST
Módulo de função: ZALE_GET_BANKLIST
Clicar <Enter> (O sistema traz a descrição automaticamente)
Double-click na palavra “Mensagem lógica”
Clicar no botão <Entradas novas>
Tipo mensagem: ZMG_BANKLIST
Salvar o código de processo
9º passo: Atribuir módulo de função a tipo de mensagem e de IDoc através da transação
WE57:
Módulo: ZALE_GET_BANKLIST
Categoria: F
Tp.básico: ZID_BANKLIST
Tipo mensagem: ZMG_BANKLIST
Direção: 1
Salvar.
10º passo: Identificar o sistema lógico do próprio mandante através dos seguintes passos:
Transação: SALE
Abrir a opção:
Preparar sistema receptor e de envio
Instalar sistemas lógicos
Atribuir sistema lógico a mandante
Double-click na linha onde está o mandante do sistema
E descobrir qual o sistema lógico do mandante, no nosso caso é “DEV46”
11º passo: Criar tipo de parceiro através da transação WE20:
Abrir o tipo de parceiro LS (sistema lógico) e selecionar algum outro sistema lógico que não
seja do próprio “DEV46”, o nosso caso escolhemos “BCDEV46”
No parâmetro de saída, clicar o ícone <Criar parâmetro de saída>
Tipo de mensagem: ZMG_BANKLIST
Prt.Destinat: A000000025
Modo de saída: <Transf.imediatam.IDoc>
Tipo básico: ZID_BANKLIST
Aperte <Enter> e salvar
12º passo: Criar modelo de distribuição através da transação BD64:
Clicar no botão: <Criar visão modelo>
Texto breve: Lista de bancos
Nome técnico: BANKLIST
Selecionar a linha “Lista de bancos” e clicar no botão <Inserir tipo de mensagem>
Visão de modelo: BANKLIST
Emissor: DEV46
Destinatário: BCDEV46
Tipo de mensagem: ZMG_BANKLIST
Salvar o modelo de distribuição.
13º passo: Testar a função para disparar IDoc através da transação SE37:
Função: ZALE_GET_BANKLIST
BANK_CTRY: BR
RECEIVERS: BCDEV46
Executar a função.
14º passo: Listar IDocs enviados através da transação WE05:
Verificar o IDoc criado com o status 03 “Transferência de dados para a porta OK”. - O IDoc
foi enviado para um sistema R/3 ou para um programa externo, através de um RFC
transacional.
3. Guia rápido para criar IDoc de entrada – inbound
Existem duas formas de realizar IDoc de entrada, dependendo da disponibilidade de recursos
no SAP. A primeira forma é aproveitar a estrutura existente de BAPI no SAP, se esta atende a
necessidade do usuário; caso contrario, é necessário criar uma função e configurar o ambiente
para que a entrada do IDoc seja efetuada.
Vamos começar o exemplo pela forma mais fácil, a de aproveitar a estrutura existente de BAPI.