Baixe o app para aproveitar ainda mais
Prévia do material em texto
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álogoe 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 STRUCTUREBDIDOCSTAT *" 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.
Compartilhar