Você está na página 1de 42

Guia passo a passo para ALE e IDOCs

Introdução ao EDI e ALE:

EDI (Electronic Document interchange) - EDI é a troca eletrônica de documentos comerciais entre os
sistemas de computador dos parceiros de negócios, utilizando um formato padrão em uma rede de
comunicação.
O EDI também é chamado de troca sem papel.

Vantagens:

Redução de erros de entrada de dados


Redução do tempo de processamento
Disponibilidade de dados em formato eletrônico
Redução de papelada
Redução de custos
Inventários reduzidos e melhor planejamento
Meios padrão de comunicação
Melhor processo de negócios

EDI tem dois processos


1. Processo de saída
2. Processo de entrada Processo de

saída:
1. O documento de aplicação é criado .
2. O IDOC é gerado
3. O Idoc é transferido do SAP para a camada do sistema operacional
4. O Idoc é convertido em padrões EDI
5. O documento EDI é transmitido ao parceiro de negócios
6. O status do relatório do subsistema Edi para o

processo de entrada SAP :


1. Transmissão de EDI recebida
2. O documento EDI é convertido em um IDOC
3. O IDOC é transferido para a camada SAP
4. O documento de aplicação é criado
5. O documento de aplicação pode ser visualizado .

IDOC:
IDOC é um contêiner que pode ser usado para trocar dados entre quaisquer dois processos.

Cada IDOC recebe um número exclusivo para rastreamento e referência futura.

O IDOC consiste em vários segmentos e os segmentos contêm vários campos.

O IDOC contém os três tipos de registros a seguir ...


1. Um registro de controle.
2. Um ou vários registros de dados
3. Um ou vários registros de status.

Em IDOCs, os seguintes termos devem ser conhecidos.


PORTA: A
porta é usada no processo de saída para determinar o nome do programa do subsistema EDI, o
caminho do diretório onde o arquivo IDOC será criado no nível do sistema operacional, os nomes
dos arquivos IDOC e os destinos RFC.

Destino RFC:
Usado para definir as características dos links de comunicação para um sistema remoto no qual
uma função precisa ser executada.
Perfil do parceiro: o
perfil do parceiro especifica os vários componentes usados em um processo de saída (número do
parceiro, tipo de IDOC, tipo de mensagem, porta, código do processo), o modo em que se comunica
com o subsistema (lote ou imediato) e a pessoa a ser notificada em caso de erros.

Controle de mensagens
Usado na determinação de preços, determinação de contas, determinação de material e
determinação de saída. O componente de controle de mensagem permite que você encapsule
regras de negócios sem ter que escrever programas ABAP.

PARA Processar IDOCS, serão usados os seguintes TRANSAÇÃOS.

Em ambos os lados:

Nomes de sistemas lógicos VENDA


Configuração RFC destinos SM59
Destinos de porta WE21

No sistema de origem:

Criação de segmento WE31

Criação de tipo de IDOC básico WE30

Criação de tipo de mensagem WE81

Atribuir tipo de mensagem para tipo de IDOC básico WE82

Modelo de Distribuição BD64

Programa de redação de relatórios SE38


Perfil do parceiro WE20
Controle de mensagens NACE

Verifique os IDOCs WE02, WE05

No Sistema de Destino:

Criando FM SE37

Atribuir FM à mensagem lógica WE57

Defina o método I / P para FM BD51 de entrada

Criar Código de Processo WE42

Gerar Perfil de Parceiro BD64

Processamento de IDOC na mesma instância de R / 3 Clients.

Por exemplo, dois clientes na mesma instância R / 3.

Cliente 900.

Cliente 800.
Para transferir os dados entre dois clientes, as estruturas da tabela e seus tipos de dados devem ser
iguais.

Neste exemplo, o Cliente 900 é o sistema de origem e o Cliente 800 é o sistema de destino.

No Cliente 900 criei uma tabela customizada e inseri alguns registros.

No Cliente 800 criei apenas uma mesa.

Passos comuns em ambos os clientes:

Criação dos nomes lógicos do sistema e atribuição aos clientes:

Caminho IMG Interface IDoc / Ativação de link de aplicativo (ALE) -> Configurações básicas ->
Sistemas lógicos -> Definir sistema lógico

Clique no botão Exibir / Alterar

Clique em New Entries


Especifique o nome e a descrição do Sistema Lógico.

Nota: A convenção de nomenclatura do sistema lógico é <SID> CLNT <NNN>

Clique nos botões Salvar e Voltar

Agora você voltará para a tela do caminho IMG. Clique em Assign Logical System to client.
Clique no botão Exibir / Alterar

Clique em New Entries

Criação dos nomes de conexão RFC:


TRANSAÇÃO SM59

IMG Path IDoc Interface / Application Link Enabling (ALE) -> Comunicação -> Criar conexões RFC

Clique no botão Criar.

Especifique todos os detalhes na tela de conexão RFC

Clique na guia Logon Security e especifique os detalhes.


Clique na guia Opções especiais e especifique os detalhes que deseja.

Agora clique no botão Test Connection

Mostra o log de conexão na próxima tela


Clique em Voltar

Clique no botão de logon remoto

Dependendo das suas configurações, o cliente de destino abrirá. Se você marcar a opção Usuário
atual na guia Logon / Segurança, a tela será exibida diretamente, sem solicitar os detalhes do nome
de usuário e senha.
Criação de portas RFC:

Vá para TRANSAÇÃO WE21

Selecione o RFC transacional na árvore do lado esquerdo e clique no botão Criar

Na caixa de diálogo, você pode selecionar Gerar nome de porta ou nome de porta próprio. Se você
selecionar Gerar porta, o sistema de nomes será gerado automaticamente. Aqui, selecionei o nome
da porta própria. Clique em continuar.

Especifique a descrição e o nome de destino RFC.


Clique em Salvar.

Repita o mesmo processo acima em outro cliente. Ao usar o cliente oposto em vez de 900,
especifique 800.

Nas etapas do Cliente 900:

Criando a estrutura da tabela:

 Vá para TRANSAÇÃO SE11.

 Especifique o nome da tabela como ZSTUDENTS.

 A guia Em Entrega e Manutenção defina os atributos como “Manutenção de Exibição


Permitida”

 Os campos da tabela são.


 Insira alguns registros na tabela.

Criação de segmentos IDOC:

Vá para TRANSAÇÃO WE31.

Especifique um nome e clique no botão Criar.

Aqui, especifique todos os campos da tabela ZSTUDENTS e seus tipos, conforme mostrado
abaixo.
Clique no botão SALVAR, então aparecerá a caixa de diálogo com o nome do usuário,
pressione continuar.

Especifique o nome do seu pacote e clique em salvar.


Especifique sua solicitação e pressione “Continuar”.

Clique no botão Voltar, e então você verá o segmento criado.

Criando tipo básico de IDOC:


Vá para TRANSAÇÃO WE30

Especifique um nome para o seu IDOC e clique no botão criar.

Na próxima caixa de diálogo selecione criar nova opção e especifique a descrição do IDOC e
clique em continuar.

Clique em Criar segmento na tela.

Na caixa de diálogo, especifique o nome do segmento que você criou e marque a caixa de
seleção obrigatória.
Clique no botão SALVAR e VOLTAR.

Vá para o menu EDITAR -> Clique em Definir Liberação

Na próxima caixa de diálogo, clique em Sim.


Criando tipo de mensagem:

Vá para TRANSAÇÃO WE81.

Clique no botão Exibir / Alterar.

Clique no botão Novas Entradas.


Especifique um nome de tipo de mensagem e uma descrição e clique no botão SALVAR.

Clique em Voltar e Salvar

Atribuir o tipo de mensagem ao tipo básico de IDOC:

Vá para TRANSAÇÃO WE82

Clique no botão Exibir / Alterar


Clique em Novas Entradas, Especifique o Tipo de Mensagem e o Tipo Básico de IDOC e a
versão da liberação Clique em Salvar.

Clique em Voltar.

Criando Model View e Distribuindo e Gerando Perfil de Parceiro:

Vá para TRANSAÇÃO BD64

Clique no botão Exibir / Alterar


Clique no menu Editar -> Visualização do modelo -> Criar

Especifique a descrição da vista do modelo e o nome técnico na caixa de diálogo e pressione


continuar.
Selecione a visualização do seu modelo e clique no menu Editar -> Adicionar tipo de
mensagem

Na caixa de diálogo, especifique o remetente, o destinatário, o tipo de mensagem e clique em


continuar.
Agora sua visualização do modelo parece

Clique no menu Ambiente -> Gerar perfil de parceiro


Irá mostrar a seguinte tela, clique em executar.

Ele mostrará o log do perfil do parceiro na próxima tela.


Clique no botão Voltar 2 vezes para retornar à tela Modelo de Distribuição.

Clique no menu Editar -> Visualização do modelo -> Distribuir.


Na caixa de diálogo exibida, selecione o sistema parceiro e clique em continuar

Em seguida, ele mostrará o Log de Distribuição da Visualização do Modelo.


Clique no botão Voltar.

Para verificar o perfil do parceiro, vá para TRANSAÇÃO WE20

Na tela exibida, selecione o sistema de parceiro na árvore do lado esquerdo em Tipo de


parceiro LS.

Escreva um Programa de Relatório em SE38 para criar registros de controle IDOC e


transferi-lo para o sistema do parceiro de destino.

A seguir está o programa para gerar os registros de controle IDOC e processá-los.

*&---------------------------------------------------------------------*
*& Report ZSHAN_IDOC_STUD
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSHAN_IDOC_STUD.
TABLES: ZSTUDENTS.
DATA : S_CTRL_REC LIKE EDIDC, "Idoc Control Record
S_ZSHSTUSEG LIKE ZSHSTUSEG. "CUSTOMER Header Data
DATA : T_ZSTUDENTS LIKE ZSTUDENTS OCCURS 0 WITH HEADER LINE.
DATA : T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE. "Data Records
DATA : T_COMM_IDOC LIKE EDIDC OCCURS 0 WITH HEADER LINE. "Generated Communication IDOc
CONSTANTS :C_ZSHSTUSEG LIKE EDIDD-SEGNAM VALUE 'ZSHSTUSEG'.
CONSTANTS: C_IDOCTP LIKE EDIDC-IDOCTP VALUE 'ZSHSTUDIDOCS'.
*** Selection Screen
SELECT-OPTIONS : S_STUID FOR ZSTUDENTS-ZSTUID OBLIGATORY.
PARAMETERS : C_MESTYP LIKE EDIDC-MESTYP DEFAULT 'ZSHSTUDMT', "Message Type
C_RCVPRT LIKE EDIDC-RCVPRT DEFAULT 'LS', "Partner type of receiver
C_LOGSYS LIKE EDIDC-RCVPRN DEFAULT 'IT3CLNT800',
C_RCVPOR LIKE EDIDC-RCVPOR DEFAULT 'PORTSH800',
C_SNDPRN LIKE EDIDC-SNDPRN DEFAULT 'IT3CLNT900',
C_SNDPRT LIKE EDIDC-SNDPRT DEFAULT 'LS'. "Destination System
***START-OF-SELECTION
START-OF-SELECTION.
PERFORM GENERATE_DATA_RECORDS.
PERFORM GENERATE_CONTROL_RECORD.
PERFORM SEND_IDOC.
*&---------------------------------------------------------------------*
*& Form GENERATE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GENERATE_DATA_RECORDS .
SELECT * FROM ZSTUDENTS
INTO TABLE T_ZSTUDENTS
WHERE ZSTUID IN S_STUID.
IF SY-SUBRC NE 0.
MESSAGE E398(00) WITH 'No Students Found'.
ENDIF.
PERFORM ARRANGE_DATA_RECORDS.
ENDFORM. " GENERATE_DATA_RECORDS

*&---------------------------------------------------------------------*
*& Form GENERATE_CONTROL_RECORD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GENERATE_CONTROL_RECORD .
S_CTRL_REC-RCVPOR = C_RCVPOR. "Receiver Port
S_CTRL_REC-MESTYP = C_MESTYP. "Message type
S_CTRL_REC-IDOCTP = C_IDOCTP. "Basic IDOC type
S_CTRL_REC-RCVPRT = C_RCVPRT. "Partner type of receiver
S_CTRL_REC-RCVPRN = C_LOGSYS. "Partner number of receiver
S_CTRL_REC-SNDPRT = C_SNDPRT. "Sender Partner type
S_CTRL_REC-SNDPRN = C_SNDPRN. "Sender Partner Number
ENDFORM. " GENERATE_CONTROL_RECORD

*&---------------------------------------------------------------------*
*& Form SEND_IDOC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SEND_IDOC .
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
MASTER_IDOC_CONTROL = S_CTRL_REC
* OBJ_TYPE = ''
* CHNUM = ''
TABLES
COMMUNICATION_IDOC_CONTROL = T_COMM_IDOC
MASTER_IDOC_DATA = T_EDIDD
EXCEPTIONS
ERROR_IN_IDOC_CONTROL = 1
ERROR_WRITING_IDOC_STATUS = 2
ERROR_IN_IDOC_DATA = 3
SENDING_LOGICAL_SYSTEM_UNKNOWN = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
COMMIT WORK.
LOOP AT T_COMM_IDOC.
WRITE:/ 'IDoc Generated - ', T_COMM_IDOC-DOCNUM.
ENDLOOP.
ENDIF.
ENDFORM. " SEND_IDOC
*&---------------------------------------------------------------------*
*& Form ARRANGE_DATA_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ARRANGE_DATA_RECORDS .
DATA: W_INDEX1 LIKE SY-TABIX,
W_INDEX2 LIKE SY-TABIX.
SORT T_ZSTUDENTS BY ZSTUID.
LOOP AT T_ZSTUDENTS.
S_ZSHSTUSEG-ZSTUID = T_ZSTUDENTS-ZSTUID.
S_ZSHSTUSEG-ZSNAME = T_ZSTUDENTS-ZSNAME.
T_EDIDD-SEGNAM = C_ZSHSTUSEG.
T_EDIDD-SDATA = S_ZSHSTUSEG.
APPEND T_EDIDD.
CLEAR T_EDIDD.
ENDLOOP.
ENDFORM. " ARRANGE_DATA_RECORDS

Agora execute o programa e especifique o intervalo de registros para transferir

Vá para TRANSAÇÃO WE02 para verificar os registros de controle IDOC gerados.

Clique em Executar
No Cliente 800 Passos:

Criação do Módulo de Função:

Crie um Módulo de Função para atualizar a tabela dos segmentos IDOC

Vá para SE37

Especifique um nome e clique em criar.


Na caixa de diálogo, especifique o grupo de funções e a descrição e clique em salvar.

Especifique os parâmetros de importação na guia Importar

Especifique os parâmetros de exportação na guia Exportar

Especifique os parâmetros da tabela na guia Tabelas


Especifique as exceções na guia Exceção

Clique na guia Código-fonte.


Escreva o seguinte código na guia Código-fonte.

FUNCTION ZSHAN_IDOC_ZSHSTUDMT.
*"--------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD
*" REFERENCE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC
*" EXPORTING
*" REFERENCE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT
*" REFERENCE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR
*" REFERENCE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK
*" REFERENCE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS
*" TABLES
*" IDOC_CONTRL STRUCTURE EDIDC
*" IDOC_DATA STRUCTURE EDIDD
*" IDOC_STATUS STRUCTURE BDIDOCSTAT
*" RETURN_VARIABLES STRUCTURE BDWFRETVAR
*" SERIALIZATION_INFO STRUCTURE BDI_SER
*" EXCEPTIONS
*" WRONG_FUNCTION_CALLED
*"--------------------------------------------------------------------
* Include File containing ALE constants
INCLUDE MBDCONWF.
TABLES : ZSTUDENTS.
DATA : W_ZSHSTUSEG LIKE ZSHSTUSEG.
DATA : T_ZSTUDENTS LIKE ZSTUDENTS OCCURS 0 WITH HEADER LINE.
WORKFLOW_RESULT = C_WF_RESULT_OK.
LOOP AT IDOC_CONTRL.
IF IDOC_CONTRL-MESTYP NE 'ZSHSTUDMT'.
RAISE WRONG_FUNCTION_CALLED.
ENDIF.
* Before reading a new entry, clear application buffer
LOOP AT IDOC_DATA WHERE DOCNUM EQ IDOC_CONTRL-DOCNUM.
W_ZSHSTUSEG = IDOC_DATA-SDATA.
MOVE-CORRESPONDING W_ZSHSTUSEG TO T_ZSTUDENTS.
INSERT INTO ZSTUDENTS VALUES T_ZSTUDENTS.
ENDLOOP.
UPDATE ZSTUDENTS FROM T_ZSTUDENTS.
IF SY-SUBRC EQ 0.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '53'.
IDOC_STATUS-MSGTY = 'I'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '004'.
IDOC_STATUS-MSGV1 = T_ZSTUDENTS-ZSTUID.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
ELSE.
IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.
IDOC_STATUS-STATUS = '51'.
IDOC_STATUS-MSGTY = 'E'.
IDOC_STATUS-MSGID = 'YM'.
IDOC_STATUS-MSGNO = '005'.
IDOC_STATUS-MSGV1 = T_ZSTUDENTS-ZSTUID.
APPEND IDOC_STATUS.
CLEAR IDOC_STATUS.
WORKFLOW_RESULT = C_WF_RESULT_ERROR.
RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'.
RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.
APPEND RETURN_VARIABLES.
CLEAR RETURN_VARIABLES.
ENDIF.
ENDLOOP.
ENDFUNCTION.

Clique em Salvar e ativar.

Atribuir FM à mensagem lógica:

Vá para TRANSAÇÃO WE57

Clique no botão Exibir / Alterar.


Clique no botão New Entries

Especifique o nome do FM criado, Tipo de Função, Tipo Básico (IDOC), Tipo de Mensagem e
Direção e clique no botão SALVAR.
Clique no botão Voltar.

Defina o método de entrada para o módulo de função de entrada:

Vá para TRANSAÇÃO BD51

Clique no botão Exibir / Alterar

Clique em New Entries


Especifique o nome FM e os Tipos de entrada como 2. E clique nos botões Salvar e Voltar.

Criando Código de Processo:

Vá para TRANSAÇÃO WE42

Clique no botão Exibir / Alterar


Clique no botão Novas Entradas

Especifique um nome de código de processo, Descrição e selecione as opções de


processamento com serviços ALE, Processamento por Módulo de Função.
Clique no botão Salvar

Na próxima tela selecione o nome do FM e clique no botão SALVAR e clique no botão


VOLTAR.

Irá levá-lo para a tela anterior. Clique duas vezes em Logical Message na árvore do lado
esquerdo.
Clique no botão Exibir / Alterar

Clique no botão Novas Entradas

Especifique o tipo de mensagem e clique no botão Salvar


Clique no botão Voltar

Gerando o Perfil de Parceiro:

Vá para TRANSAÇÃO BD64.

Selecione a Visualização do modelo que você distribuiu no cliente 900.


Clique no menu Ambiente -> Gerar Perfil de Parceiro

Irá mostrar a próxima tela, em que clique no botão Executar


Ele mostrará os detalhes do Perfil do Parceiro

Para verificar os detalhes do perfil do parceiro. Vá para TRANSAÇÃO WE20. Selecione o


nome do sistema parceiro.
Transferindo os registros de controle IDOC do Cliente 900 para 800:

No sistema de origem, vá para TRANSAÇÃO SE38. (No cliente 900)

Execute o programa Relatório que você criou.

Verifique no Sistema de Destino: (aqui cliente 800)

Vá para TRANSAÇÃO WE02


Verifique na tabela ZSTUDENTS no SE11.