Como Receber Mensagens do SAP a partir de uma RFC Destination – WCF Adapter
quinta-feira, 16 de junho de 2011
|
|
Esse post foi baseado no original Receiving Inbound RFC Calls by Using BizTalk Server.
Apesar da mudança com o novo Adaptador WCF-SAP estar sendo bem sofrida, uma coisa boa é que agora podemos receber mensagens em XML numa porta request-response. O que era impossível com o antigo BizTalk Adapter 2.0 for mySAP Suite Business, que só utilizava IDOC em formato Flat File.
Vamos começar olhando como deve ser a declaração da RFC no SAP:
O Próximo passo é Criar o Schema em um projeto do Biztalk para essa RFC:
Na caixa Search in category, colocar o nome ou parte do nome da RFC para ser realizado a busca.
Clicar no botão Add e depois em OK.
Vai ser gerado 3 arquivos: Rfc.xsd, Type.xsd e o binding WcfReceivePort_SAPBinding_Custom.bindinginfo.xml.
Guarde o arquivo de binding, pois com o novo adapter WCF, é complicado configurá-lo na munheca e é bem mais fácil usar esse arquivo para criar a porta.
Já acabou? Não, calma que esta na metade.
Agora, é preciso criar um projeto em Biztalk e add um orchestration que deve ser parecer com a figura a seguir.
Notem que é uma receive port, do tipo request-response. Com um construct no meio, isso porque será necessário criar a mensagem de retorno para a RFC.
Colocar o seguinte código no Message Assignment:
Sendo que o xmlDoc é uma variavel do tipo xmlDocument e o MessaOut é a mensagem de Response que sera criada.
Se o WCF.Action nao for setado ele se tornará:
Compile e faça o deploy do projeto.
Para criar a receive port Fisica, basta usar o binding criado junto com o schema..
Tenha certeza que o pipeline que está sendo usado é o XMLReceive e o XMLTransmit.
Ufa! Agora acabou. Realmente muito útil esse post, espero que possa servir para mais alguém..
Queria agradecer a ajuda do meu amigo JULIO TAVARES, que tirou várias duvidas com relação a RFC Destination e Program ID pelo lado do SAP.
Até..
Apesar da mudança com o novo Adaptador WCF-SAP estar sendo bem sofrida, uma coisa boa é que agora podemos receber mensagens em XML numa porta request-response. O que era impossível com o antigo BizTalk Adapter 2.0 for mySAP Suite Business, que só utilizava IDOC em formato Flat File.
Vamos começar olhando como deve ser a declaração da RFC no SAP:
FUNCTION Z_RFC_ADD. *"------------------------------------------------------------------ *" *"Local interface: *" IMPORTING *" VALUE(X) TYPE INT4 *" VALUE(Y) TYPE INT4 *" VALUE(DEST) TYPE CHAR20 DEFAULT 'SAPADAPTER' *" EXPORTING *" VALUE(RESULT) TYPE INT4 *"------------------------------------------------------------------ CALL FUNCTION 'Z_RFC_ADD' DESTINATION DEST EXPORTING X = X Y = Y IMPORTING RESULT = RESULT. ENDFUNCTION.
O Próximo passo é Criar o Schema em um projeto do Biztalk para essa RFC:
- Então com o botão direito no projeto clicar em Add –> Add Generated Items –> Consume Adapter Service. Abrirá a seguinte tela de Wizard.
- Selecionar a opção sapBinding no combo Select a Binding.
- Clicar no botão Configure, na Tab URI Property, navegar até as propriedades do Application Server, e digitar:
- Aplication Serer Host: Nome ou IP do Servidor SAP. (Ex. 10.1.2.3).
- System Number: Ambiente do SAP correspondente. (Ex. 04).
- Client: Ambinete do SAP correspondente. (Ex. 150).
- Language: Linguagem do SAP. (Ex. PT).
- Nas propriedades RFC Server, colocar.
- Gateway Host: Nome ou IP do Servidor SAP. (Ex: 10.1.2.3)
- Gateway Service: Nome do serviço de gateway. (Ex. sapgw04)
- Program Id: Nome do Programa que vai iniciar o processo. (Ex. BIZTALK_RFC)
- Não esquecer de digitar o usuário e senha na Tab Security.
- Clicar no botão Connect.
Na caixa Search in category, colocar o nome ou parte do nome da RFC para ser realizado a busca.
Clicar no botão Add e depois em OK.
Vai ser gerado 3 arquivos: Rfc.xsd, Type.xsd e o binding WcfReceivePort_SAPBinding_Custom.bindinginfo.xml.
Guarde o arquivo de binding, pois com o novo adapter WCF, é complicado configurá-lo na munheca e é bem mais fácil usar esse arquivo para criar a porta.
Já acabou? Não, calma que esta na metade.
Agora, é preciso criar um projeto em Biztalk e add um orchestration que deve ser parecer com a figura a seguir.
Notem que é uma receive port, do tipo request-response. Com um construct no meio, isso porque será necessário criar a mensagem de retorno para a RFC.
Colocar o seguinte código no Message Assignment:
xmlDoc.LoadXml( "<Z_RFC_ADDResponse xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">" + "<RESULT>" + c + "</RESULT>" + "</Z_RFC_ADDResponse>" ); MessageOut = xmlDoc; MessageOut(WCF.Action) = "http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADD/response";
Sendo que o xmlDoc é uma variavel do tipo xmlDocument e o MessaOut é a mensagem de Response que sera criada.
Se o WCF.Action nao for setado ele se tornará:
http://Microsoft.LobServices.Sap/2007/03/Rfc/Z_RFC_ADDResponse o que não é o esperado pelo sapBinding.
Compile e faça o deploy do projeto.
Para criar a receive port Fisica, basta usar o binding criado junto com o schema..
Tenha certeza que o pipeline que está sendo usado é o XMLReceive e o XMLTransmit.
Ufa! Agora acabou. Realmente muito útil esse post, espero que possa servir para mais alguém..
Queria agradecer a ajuda do meu amigo JULIO TAVARES, que tirou várias duvidas com relação a RFC Destination e Program ID pelo lado do SAP.
Até..
Seja o primeiro a comentar ;)
Postar um comentário