Escolar Documentos
Profissional Documentos
Cultura Documentos
Carlos Pereira
Sumário
Fundamentos...............................................................................................................................................2
Oque é o SAP PI?.....................................................................................................................................2
Cronologia...............................................................................................................................................2
Metodologias..............................................................................................................................................3
ETL ( Extract / Transformation / Load )....................................................................................................3
RPC ( Remote Process Call ).....................................................................................................................3
MOM (Message Oriented Middleware)...................................................................................................5
Integration Brokers..................................................................................................................................6
SOA..........................................................................................................................................................6
SAP PI Ambiente e Desenvolvimento de Interfaces.....................................................................................8
Arquitetura..............................................................................................................................................8
SLD.........................................................................................................................................................10
Trabalhando com o SLD.....................................................................................................................11
ESR – Enterprise Service Repository......................................................................................................20
Software Component Version............................................................................................................20
Namespaces......................................................................................................................................25
Data Type...........................................................................................................................................28
Message Type....................................................................................................................................33
Service Interface................................................................................................................................35
Mapping Objects...............................................................................................................................38
Message mapping..............................................................................................................................38
Funções.............................................................................................................................................40
User Defined Functions.....................................................................................................................41
Operation Mapping...........................................................................................................................43
Process Integration Scenarios............................................................................................................46
Curso SAP PI 7.3
Fundamentos
O SAP PI é atualmente uma das principais soluções para o desenvolvimento de aplicações cross-client
existente nos ambientes empresariais de grande porte.
A vantagem de se utilizar o SAP PI se torna mais evidente em um ambiente onde parte dos sistemas que
serão integrados fazem parte dos pacotes distribuídos pela SAP onde a desempenho de cada integração
se torna evidentemente mais otimizada com a utilização dos adaptadores proprietários da plataforma
SAP ( IDOC, RFC e PROXY ).
Como um sistema que segue o padrão SOA as mensagens que trafegam pelo ambiente de PI são
basicamente arquivos de texto no padrão XML.
Cronologia
O SAP PI surgiu com o nome de SAP XI em meados de 2002 tendo o seu ambiente bem simples com
poucos adaptadores disponibilizados para as integrações ( basicamente RFC e IDOC ), em 2004 ocorreu a
primeira mudança de impacto com o SAP XI 3.0 onde foram acrescentado os demais adaptadores de
protocolos comumente utilizados em uma integração como o SOAP ( WebServices ), ABAP PROXY
( Adaptador Xi ), etc.
Em 2005, praticamente 1 ano após o lançamento do SAP XI 3.0, devido à quantidade versões lançadas
nesse período a SAP optou comercialmente de mudar a nomenclatura para SAP PI ( Process Integration )
e começando o versionamento a partir da 6.0, atualmente a versão mais amplamente utilizada do SAP PI
é a 7.0, 7.01 e 7.1 que contemplam apenas as instalações dual stack ( ABAP e Java ) e as versões mais
novas 7.3x, 7.4x e 7.5x que possibilitam a instalação mais eficiente usando a camada Java apenas
( contudo a opção de instalação dual stack ainda está disponível mesmo para essas versões.
Após a versão 7.1x a SAP começou a remodelar drasticamente a arquitetura do ambiente de integração
adicionando maior agilidade nas trocas de dados com objetos AAE ( Advanced Adapter Engine ) e
atualmente com uma nova versão desses objetos chamados de AEX (Advenced Adapter Engine
Extended ) que possibilitam uma interação diretamente com o stack java do ambiente de integração
sem mais ser necessário a utilização do módulo ABAP amplamente usado pelas outras plataformas SAP.
Metodologias
Não podemos começar a falar de integração de sistemas utilizando o SAP PI sem entendermos o
desenvolvimento e amadurecimento das metodologias de integração de sistemas utilizadas pelas
empresas desde a década de 80 até os dias de hoje.
Embora seja uma metodologia antiga é um dos métodos mais comuns, afinal, para as empresas que não
possuem conhecimento técnico suficiente, esse método de integração é o mais óbvio e mais simples a
ser utilizado, porém ele possui diversos problemas técnicos entre eles podemos destacar:
Falta de flexibilidade
Disponibilidade de recursos (banda de transmissão, tempo de processamento, etc.…)
Rastreabilidade e redundância de dados
Embora seja efetiva uma comunicação de integração dessa forma ela também possui uma série de
problemas técnicos, os principais que podemos citar são os seguintes:
Complexidade de integrações com mais de dois sistemas (protocolos não amigáveis e muitas vezes
desconhecidos por exemplo), gerando problemas de manutenção
Problemas de recursos para processamento
Redundância da conexão e tratamento de exceções durante o processamento
Rastreabilidade dos dados
Pub-Sub: uma mensagem é enviada ao centralizador (MOM) para 1 ou mais destinatários, os sistemas
interessados em receber esse tipo de mensagem que está sendo enviada, se registra nesse “serviço” de
mensagem e passam a receber os dados que são enviados pelo emissor.
P2P: os dois sistemas são comunicados diretamente utilizando o MOM apenas como um intermediador
dos dados.
O MOM começa a introduzir um conceito mais apurado de log e rastreabilidade de mensagens porém
trata-se de um conceito primitivo baseado no RPC mantendo praticamente os mesmos problemas
técnicos de topologia e recursos de processamento.
Problema de uma arquitetura MOM robusta:
Integration Brokers
Em um aprimoramento do MOM surgiu o conceito de Integration Broker, onde existe um serviço central
que faz o roteamento das mensagens para outros Integrations Brokers e ou sistemas que necessitam se
integrar, como podemos ver é um conceito mais maduro e bem mais perto dos conceitos atualmente
utilizados.
Nesse tipo de integração o sistema que deseja se integrar aos demais se conecta diretamente no
integration broker utilizando um protocolo previamente definido, onde, depois de realizada a conexão
com sucesso, ele pode enviar a mensagem para qualquer outro sistema conectado ao IB como também
receber as mensagens de qualquer outro sistema.
Esse sistema foi criado a partir de observação dos arquitetos de sistemas dos sistemas de logísticas das
empresas aéreas norte americano para o transporte de passageiros, onde, um passageiro que desejava
partir de um ponto sem conexão com um aeroporto maior utilizasse aeroportos menores até atingir a
rede onde se encontrava a localidade que ele desejava desembarcar.
SOA
Com a popularização dos IB, muitas empresas desenvolveram uma gama enorme de protocolos próprios
bem como de adaptadores, tornando a tarefa de integração entre IB distintos ou com mais de IB
praticamente impossível de ser administrada e ou construída para novas aplicações.
Ao contrário do que muitas empresas e pessoas afirmam, SOA não é um produto e sim uma
metodologia, praticamente um ideal, de desenvolvimento. Essa metodologia, bem aplicada, possibilita
que criemos módulos de integração dinâmicos nos permitindo conectar qualquer sistema que seja.
Cada módulo (ou serviço) criado seguindo os preceitos do SOA possuí as seguintes características:
Acessibilidade: os módulos e ou serviços devem estar disponíveis para serem acessados facilmente pelos
sistemas envolvidos na integração.
Autonomia: em situação ideal, o serviço deve se manter ativo por sua própria conta, independente da
disponibilidade dos sistemas envolvidos na integração.
Instintividade: o serviço deve ter um proposito claro, intuitivo, provendo a solução para tarefas
previamente definidas com interfaces mais simples e limpas com o seu entendimento facilitado.
Estabilidade: o serviço precisa ser o mais estável possível, bem como seguro, estabelecendo assim uma
relação de confiabilidade entre os sistemas que estão sendo integrados e o próprio serviço que está sendo
acessado
Neste capitulo abordamos os conceitos de integrações e suas evoluções até o
amplamente usado hoje em dia, o SOA, é esperado que o aluno tenha absorvido
excelentes conceitos a serem utilizados na compreensão do ambiente de integração
do SAP PI
SAP PI Ambiente e Desenvolvimento de Interfaces
Arquitetura
O SLD é onde começamos a nossa construção de uma interface, cada interface que construímos no
repositor e cenários que configuramos no directory são vinculados aos dados que são previamente
cadastrados no SLD, ou seja, eles são vinculados à um produto que é vinculado à um software
componente e que por sua vez esta contido em um techinical system e esse ultimo está vinculado ao um
business system que é o responsável pelo provimento do serviço de comunicação.
Mesmo interfaces com sistemas que compõe a gama de pacotes de produtos SAP precisam ser
cadastrados no SLD, com a ressalva de que para esses tipos de produtos o software componente já vem
previamente cadastrado necessitando apenas que o profissional SAP PI faça o cadastro do techinical
system e do business system respeitando as configurações de ambiente necessárias que iremos discutir
um pouco mais a frente.
Produto/Software Component
A primeira atividade ao se construir uma interface no SAP PI é criar no SLD os produtos referentes aos
sistemas que irão interagir em nossa interface propriamente dita, caso seja um produto SAP,
provavelmente ele já se encontra cadastrado previamente no SLD.
A finalidade do cadastro do produto é puramente simbólica sendo que para nós o mais importante é o
software componente.
Para se iniciar o cadastro/configuração de um produto, na tela que se abriu no browser do SLD, deve-se
selecionar a opção “Products” que imediatamente irá direcionar o cadastro para a primeira tela de
informações.
Nessa tela podemos verificar todos os produtos criados/configurados em nosso ambiente, inclusive os
que já são instalados automaticamente pela SAP. Para criar um novo produto basta clicar no botão
“New” abrindo em seguida a tela abaixo.
Para criarmos um NOVO produto e software componente apenas selecionamos a opção pertinente a
nossa ação e clicamos em "Next" onde a tela inicial dos dados de cadastro aparecerão.
Nessa tela é selecionado o “Nome” do produto, o url do “fabricante” e a versão, esta ultima, pode
acompanhar a versão do fabricante ou então pode seguir um controle interno de versão da empresa
para qual está sendo desenvolvida a interface.
Preenchendo todos esses campos ( que são obrigatórios ) passamos para a etapa automaticamente de
fornecer os dados para um ProductInstance que servirá de base para o nosso Software Component
basta preencher com o mesmo nome do produto e ou adicionar um outro nome que respeite os seus
padrões de desenvolvimento ou da empresa e clicar prosseguir onde sera encaminhado para tela
abaixo.
No campo “Name” deve ser informado o nome do software componente que será utilizado para
armazenar os objetos das interfaces no repositor, no campo “Version” uma versão do software
componente e o campo Production State pose ser selecionado dentre as seguintes opções:
Planned ( planejado );
Defined ( definido );
Started ( iniciado );
Locked ( fechado );
Developed ( desenvolvido );
Published ( publicado );
Released ( atualizado );
Restricted ( restrito );
Reverted ( retornado );
Archeived ( arquivado ) (default);
Com exceção do Locked, os demais estados só possuem caráter informativo e devendo ser utilizado de
acordo com a sua necessidade.
Ao final basta clicar em “Finish” que finalizamos essa etapa da criação dos dados no SLD.
Com o Software Component criado já podemos iniciar a construção dos nossos objetos de Integração no
Repository, bastando importa-lo pela IDE ( demonstraremos isso no tópico Repository Objects).
Techinical System
Quando iniciamos a configuração do nosso cenário completo de comunicação no ESD ( Enterprise
Service Directory ) precisamos antes ter configurado um Business System que será no PI o provedor do
serviço de comunicação a ser utilizado pelo PI, esse Business System é vinculado a um Technical System,
onde são especificados os dados técnicos para acesso aos serviços.
No caso de uma conexão com um serviço NÃO SAP, essa configuração será utilizada apenas como um
cadastro simples para ser utilizado nas “amarrações” das interfaces do PI, contudo, quando trata-se do
contrário, ou seja sistemas SAP, essa configuração SAP é de suma importância onde é necessário que
seja configurado todos os endereços de acesso aos devidos serviços, portas e clientes de acordo com o
respectivo pacote SAP.
Nosso curso tem por finalidade dar base de conhecimento na construção de interfaces por esse motivo
iremos nos ater as configurações para sistemas NÃO SAP, onde normalmente é feito pelo profissional
SAP PI, em sistemas SAP essas configurações são realizadas pelo responsável BASIS e portanto não são
nosso foco.
Selecione os Produtos que cadastrou no SLD anteriormente e vincule a esse Technical System, essa
amarração irá mais para frente nos ajudar nas configurações de nossos cenários de integração no ESD.
Ao final clique no botão “Finish”e pronto, nosso TS esta configurado, agora precisamos vincular o
mesmo a algum Business System.
Business System
O Business System é o cadastro/configuração que representa um provedor de serviço de aplicação,
entende-se por exemplo que no caso de integração de um ambiente SAP ERP e um ambiente SAP BW,
ambos seriam um business system separado onde ainda, cada cliente dos ambientes seria único em
cada BS.
No caso de um BS do tipo “Third Party” ele pode ser utilizado para varias aplicações pois ele não tem a
necessidade de estar vinculado exatamente a uma instalação especifica agindo apenas como um
cadastro de amarração das interfaces para sua configuração.
Quando entrarmos na tela de administração de Business System cadastrados no nosso SLD veremos a
seguinte tela com todos os disponíveis.
Para criar um novo Business System basta clicar no botão “New Business System” e seguir as instruções
dadas pelo SLD.
Selecione o tipo pertinente ao Business System, no nosso caso “Third Party” e em seguida clique no
botão continuar.
Selecione o TS que se deseja que esse BS seja vinculado e logo em seguida coloque um nome para o
sistema que seja único em seguida clique em continuar.
Insira o nome do BS que deseja usar para futuramente configurar o seu cenário e clique em prosseguir.
Automaticamente sera exibida uma lista com os produtos já instalados no seu TS, selecione todos ou
apenas os que deseja que sejam usados por esse BS. Após selecionar como deseja clique em prosseguir.
Como já temos um BS com a regra de servidor de integração apenas a regra de servidor de aplicação
estará disponível e automaticamente selecionada, portanto só nos resta selecionar qual o BS que iremos
usar como integrador para o nosso serviço e depois clicar em Finish.
No ESR é onde construímos as interfaces de conexão entre os sistemas que farão parte do nosso cenário
de integração definindo desde sua estrutura de dados até a direção da comunicação de cada uma das
interfaces, ou seja, definindo os dados que serão trafegados, se a mensagem que estaremos tratando é
de entrada ( input ) ou saída ( output ) bem como se possui sincronismos ou não, construímos também
nesse módulo as regras de transformação das mensagens através de Message Mapping, Java Mapping,
XSLT Mapping ou ainda usando ABAP Mapping.,
No ESR também são definidos os workflows de processos de integração conhecidos como Integration
Process ou BPM.
O SFWCV precisa ser importado diretamente do SLD no ESR para darmos inicio à qualquer
desenvolvimento de uma interface ou de grupos de interfaces.
A outra configuração importante que podemos realizar são os parâmetros de conexão com o ambiente
SAP, claro que essa opção será usada se você necessitar importar estruturas de RFCs ou IDOCs.
( configuração em verde )
Após configurados os valores desejados basta clicar no ícone de salvar no menu toolbar e pronto já
temos nosso software componente preparado para receber o primeiro objeto de integração, o
namespace.
Namespaces
Para iniciarmos um projeto de construção de uma interface não basta apenas importarmos o SFWC
dentro do ESR Builder, precisamos também criar um namespace.
Dentro do SFWC os objetos são organizados em namespaces, esses namespaces possuem a mesma
sintaxe do que os que são usados para construção dos arquivos XMLs ( para maiores informações
pesquise sobre XML no www.w3c.org ) porém a similaridade entre o XML e o namespace para ai. No
ESR, o namespace serve de qualificador de um objeto de interface como uma espécie de identificador
único. Um objeto criado no ESR possui 3 chaves que garantem a sua unicidade no sistema:
Ou seja, podemos ter o objeto exatamente com o mesmo nome mas em SFWCV diferente ou em
namespace diferente, mas isso não é aconselhável.
A definição de um namespace segue como padrão como se fosse um endereço de URL. Por exemplo, a
SAP utiliza o domínio sap.com para definir os namespaces das interfaces que são standart e ou p/
objetos standart. Logo em seguida, é inserido um qualificador de interface “/nome_da_interface/” ou
um subdomínio que qualifica o tipo de interface “/sub_dominio/nome_da_interface”. Isso não é regra,
mas a maioria dos desenvolvedores utiliza essa conotação e é o que usaremos durante o nosso curso.
Existe mais de uma maneira de se criar um namespace como qualquer outro objeto dentro do nosso
software componente, a mais trabalhosa seria clicar no botão new como fizemos anteriormente ,
escolher o tipo de objeto e em seguida vincula-lo a um software componente para proceder com as
demais configurações, a maneira mais “fácil” e intuitiva que vamos explicar seria clicar com o botão
direito sobre o software componente e escolher a opção “New”.
Selecione a opção Work Areas/Namespace, a tela irá exibir o campo para incluirmos o
endereço/namespace que iremos criar e já virá com o Software Component preenchido.
Usando os dados que sugerimos como exemplo o nosso namespace ficaria da seguinte maneira:
urn:sap.ecc.mm/Produto
Veja como fica mais facil de visualizar que as interfaces de integracao dentro desse namespace são
facilmente interpretadas como cadastro de produto da empresa existente entre o SAP ECC e um sistema
legado por exemplo.
Após preenchido o nome do namespace basta clicar em “Create” e o mesmo será criado efetivamente
em nosso software componente.
Basta agora que vc clique em “Salvar” no menu toolbar e concluímos essa etapa restando apenas que
selecionemos a aba Standar Change List na nossa IDE e clicar com o botão direito sobre a change list que
aparece para o nosso software componente e clicar na opção ativar.
Data Type
Após criada as work áreas ( Software Component e Namespace ) podemos começar a construção
propriamente dita de nossos objetos de integração, começando com o objeto primeitivo de definição da
estrutra que será passada ou recebida pelas partes da integração.
Para criarmos os data types basta clicarmos com o botão direito sobre o namespace do software
componente onde desejamos agrupor determinados objetos de integração e a tela a seguir será exibida.
Escolha a opção Interface Objects/Data Type, com esse procedimento os campos Namespace e Software
Component já estarão automaticamente preenchidos facilitando o nosso trabalho, basta colocarmos o
nome do nosso data type, normalmente usamos o prefixo “DT_” antes do nome que desejamos usar
para o nosso objeto e logo após clicamos em “Create”.
A diferença entre elemento e atributo é que o elemento é uma campo de dado propriamente dito,
quanto o atributo é um qualificador do elemento a qual ele é atribuído.
A primeira coluna é onde colocamos o nome do elemento de dados que será utilizado durante a
integração, geralmente esse nome é definido em comum acordo entre as partes da integração para que
seja compreensível para os desenvolvedores que irão interagir com ela, ou ainda, em interfaces do tipo
ODBC/JDBC que irão fazer acesso ao banco de dados, os elementos tem que ter exatamente o mesmo
nome dos campos das tabelas que irão receber ou enviar os dados.
A coluna de categoria define se esse campo é um elemento ou atributo ( falamos disso anteriormente ),
enquanto a coluna type é o que é o mais importante nesse momento, dentro dessa coluna podemos
definir entre vários tipos primitivos ( string, integer, float, boolean, char, etc ... ) definidos pelo W3C para
a criação de interfaces XML, cada um desses tipos é precedido por um prefixos “xsd:”:
Logo em seguida ao Type temos uma coluna denominada “Ocorrence”, nessa coluna definimos a
quantidade de dados que podemos repetir desse dado na nossa estrutura, 0,1, n ou unbouded.
Quando definimos que no campo de mínima ocorrência “minOccurs” o valor 0 (ZERO), estamos
informando que esse campo não é obrigatório, ou seja, ele pode ser nulo ou simplesmente não ser
enviado na interface, quando acrescentamos o valor 1, ele se torna obrigatório e o não envio do mesmo
ou com valor nulo nos gerará erro na interface.
Quando definimos o campo de máxima ocorrência com o valor 1 ou qualquer outro número, definimos
que é a quantidade de vezes que esse campo pode vir repetido em nossa estrutura, ou seja, se
definimos um campo com o valor nome, esse campo pode aparecer de 1 vez até N vezes conforme o
configurado, contendo o mesmo valor ou diferentes valores, quando definimos o valor “unbouded”
estamos definindo que esse campo é uma sub tabela de dados e que abaixo dela virão varias linhas de
dados com elementos distintos. Conforme o caso de uma interface esses parâmetros são configurados
para melhor atender uma integração de dados.
Após definido o seu data type, basta salva-lo e ativa-lo como foi feito no namespace através da aba
“change lists” ou apenas clicando com o botão direito sobre a referencia ao seu data type ao lado
esquerdo da tela e clicando na opção activate.
Message Type
Um message type é um objeto onde é instanciada a estrutura primário do objeto data type para o uso
na atribuição de valores.
Para criarmos um novo message type basta clicarmos com o botão direito sobre o namespace onde
desejamos que ele seja agrupado e escolher a opção “New”.
Escolha a opção Interface Objects / Message Type no menu a esquerda e como ocorreu com o data type
anteriormente alguns dados mandatórios serão preenchidos automaticamente, basta nomearmos nosso
objeto apenas, normalmente usamos o prefixo “MT_” antes do nome que desejamos usar. Após
escolhido o nome clicamos no botão “Create”.
Uma tela com as opções em branco será apresentada, selecione o seu data type que deseja de duas
maneiras, clicando no objeto propriamente dito no menu do tipo “arvore de diretórios” que aparece ao
lado esquerdo de nossa IDE e arrastando o mesmo até o ícone no formato de uma mão aberta ou
clicando-se no “march code” onde serão apresentados todos os objetos possíveis de seleção dentro do
nosso software componente.
Service Interface
Quando criamos uma integração falamos muito em interface de integração, uma interface é a definição
do tipo de mensagem que iremos trafegar tendo em vista, direção, se é síncrona ou assíncrona e
estruturas.
No ESR Builder as mensagens que chegam são tratadas como “outbound”, ou seja, mensagens de saído
do serviço que está enviando a mensagem, e “inbound” mensagem que esta sendo enviada para o
sistema de destino da mensagem.
Temos ainda o tipo abstract, esse tipo é utilizado para a entrada em um integration process ( ccBPM )
que veremos mais a frente do que se trata.
Para criarmos um service interface basta clicarmos com o botão direito do mouse sobre o namespace
onde desejamos que ele seja criado e a tela abaixo será exibida.
Selecione a opção Interface Objects / Service Interface no menu a esquerda e preencha o nome do
Service Interface que deseja criar, normalmente colocamos o prefixo “si_” antes do nome desejado, logo
em seguida clieque em “Create” para irmos para a interface da IDE para configuração da nossa interface.
No grid com o nome Messages, na linha onde esta a regra (Role) do tipo da mensagem selecione o tipo
“Mesage Type” e na coluna “name” clique no botão a direita do campo editável para que uma tela com
os message types disponíveis seja disponibilizada para que vc selecione a estrutura a ser usada nessa
interface.
Categorias:
o Inbound: mensagem que será enviada para uma interface externa ao PI, pou seja, mensagem que
será enviada para um sistema “Receiver” no nosso cenário.
o Outbound: mensagem que o PI esta recebendo para o processamento, ou seja, que está sendo
enviada pelo sistema “Sender” do nosso cenário.
o Abastract: tipo de interface de entrada para ccBPM ou Integration Process.
Interface pattern:
o Stateless: pattern para utilização de mensagens ponto a ponto usando WebSercices quando
usamos o adapter WS ( WebService)
o Stateful: pattern usado para chamadas sucessivas, requerido em cenários especiais de
integração. Não possui garantia que os dados sejam efetivamente enviados ao destinatário.
NUNCA USADO QUANDO ENVIADO VIA INTEGRATION SERVER
o Stateless ( XI30 – Compatible ): como o próprio nome já dis tem a mesma característica do
Stateless mas riado para ompatibilidade com o XI 3.0
o TU&CC:pattern para envio de mensagens síncronas e assíncronas com controle de transação
( COMMIT e ROLLBACK). Muito pouco usado.
Security Profile: definição de regras de segurança.
Caso você tenha optado por criar uma interface síncrona é necessário que vc vincule um segundo
message Type na linha com a regra ( Role ) de “resonse”, para isso basta vc realizar o mesmo
procedimento para se vincular o message type da primeira vez para o campo que aparece
imediatamente abaixo do primeiro.
Mapping Objects
Após criarmos os objetos de interfaces partimos para a parte mais importante do processo de
construção da transformação das mensagens que chegam para o nosso integrador de sistemas.
A transformação das mensagens ocorrem dentro do SAP PI podem ser feitas das seguintes maneiras:
ABAP Mapping ( totalmente em desuso e provavelmente não estará mais disponível no PI 7.3 )
XSLT Mapping : mapeando baseado em linguagem XML padrão W3C, simples e poderosa
ferramenta.
Message Mapping: ferramenta de manipulação das estruturas de dados para sua transformação
totalmente visual e mais utilizada no ambiente SAP PI.
No nosso curso iremos nos atentar apenas a dois tipos de mapeamento: Message Mapping e Java
Mapping, os demais tipos é aconselhado pelo instrutor que sejam pesquisados fora da classe para que
seja adicionado ao conhecimento que esta sendo passado.
Message mapping
O message Mapping é a ferramenta mais utilizada e simples para se criar uma transformação de dados
dentro do ambiente PI e além do que, oferece uma grande quantidade de ferramentas que aumentam a
produtividade de desenvolvimento das interfaces.
Para criarmos um message mapping prosseguimos com o que foi falado anteriormente, clicamos com o
botão direito sobre o namespace que desejamos criar esse objeto e a tela abaixo será exibida.
Basta preenchermos o nome do message mapping que desejamos criar e clicar em “Create” que a
interface de configuração desse objeto sera exibida em nossa IDE.
Em vermelho, na parte superior da tela, temos o cabeçalho do nosso objeto com as informações do
nome, status, namespace e SFWCV que ele pertence, alé da descrição obviamente.
Em roxo, do lado direito, temos a estrutura ( message type ) que dará origem aos dados que serão
transformados, ou seja, será a estrutura que receberemos do sistema que está enviando a mensagem ao
PI, em amarelo teremos a estrutura ( message type ) que deveremos gerar para ser enviado ao sistema
que receberá a mensagem ao final do processo.
E finalmente, em verde, na parte mais inferior da tela, temos as funções que podemos utilizar na área de
desenvolvimento, essas funções podem ser as “default” da SAP ou podemos criar nossas próprias
utilizando a linguagem java, essas funções customizadas são chamadas de UDFs ( User Defined Functions
) e iremos aborda-las mais a frente no curso.
Para começarmos realmente a “meter a mão na massa” e criar um mapeamento para a transformação
dos dados basta selecionar o “message type” da estrutura que será enviada pelo sistema de origem da
mensagem e arrasta-lo até o cabeçalho da área roxa da figura, logo em seguida devemos prosseguir
arrastando o “message type” referente à estrutura que será enviada ao sistema de destino da
mensagem para o cabeçalho da área em amarelo da figura, dessa maneira teremos disponível os
campos de cada uma das estruturas.
Basicamente, para se passar o valor de um campo de uma estrutura para o outro, basta selecionar o
campo e arrasta-lo até ele se posicionar sobre o campo que ele deve enviar ou receber os dados e
soltar, automaticamente eles aparecerão ligados na área em azul. Dessa maneira, o dado que está
chegando no lado esquerdo da tela e que está sendo enviado pelo sistema de origem da mensagem
será encaminhado automaticamente ao campo que ele está ligado do lado direito da mensagem e será
enviado ao ambiente de destino do processo.
Caso os campos apenas precisem ser passados sem nenhum tratamento aos respectivos campos do lado
direito ( receiver ), basta liga-los salvar e ativar o message mapping, dessa maneira a transformação dos
nossos dados estará concluída.
Funções
A interface de desenvolvimento do message mapping possibilita que façamos um tratamento mais
avançado das mensagens campo a campo que chegam em nosso ambiente de PI utilizando funções ( as
standarts ou as customizadas conhecidas como UDF ).
Arithmetic: funções para cálculos matemáticos como adição, subtração, divisão, expoenciação,
raiz quadrada, etc ...
Statistic: funções para cálculos estatiscos como totalização, média, contagem e índice.
Conversions: funções de conversão, basicamente, dado um valor de entrada, ele busca em uma
tabela de sistema ou uma pré-determinada o equivalente em valor.
Date: funções para tratamento de data, como por exemplo, obter a data corrente
( currentDate ), transformação de data ( DateTrans), calculo de dias antes ( DateBefore ) e de
depois ( DateAfter), comparação entre duas datas ( CompareDates ).
Node Functions: tratamento especifico para cada node, verificação da existência dele no xml de
entrada, validação de formatos, etc ...
Boolean: funções de tratamento lógicos incluindo tomadas de decisões tipo IF, AND, NOT, etc ...
Como se trata de uma inserção ( injection ) de um código java no nosso processo, podemos utilizar
QUASE todas as ferramentas da versão JSDK 1.4 para interagir com sistemas externos ( chamar uma RFC
por exemplo ou um WebService ) para obter parâmetros para o tratamento dos dados, podemos utilizar
lógicas mais robustas e acessar variáveis de ambiente.
Como se trata de uma das ferramentas mais poderosas e que a SAP disponibiliza na construção de
interfaces de integração devemos utiliza-la com cautela, até porque, não existe maneira de debugar e
não temos como verificar possíveis erros lógicos em tempo de execução e dessa maneira, quando a
utilizamos, devemos criar processos de testes mais completos afim de verificar todas as possibilidades
antes de liberarmos para o uso em produção.
Para de criar uma UDF basta se clicar no ícone localizado no canto inferior esquerdo da tela na
barra de funções, ao se clicar nos será apresentada a tela abaixo.
Nessa tela devemos informar o nome da função, o titulo ( esse é o nome que sera usado para exibi-la na
nossa barra de funções), o tipo de execução e os argumentos de entrada da nossa função.
Após feita as configurações acima basta se clicar em “Create Function” e a seguinte tela será
disponibilizada.
Na região do campo “imports” devemos adicionar as bibliotecas java que iremos utilizar caso seja
necessário, caso contrário, basta deixa-la em branco e no campo abaixo incluir o código java que se
deseja utilizar.
Vale lembrar que esse editor é bem simples, não tem critica a erros de sintaxe e ou nomes de variaveis,
não edenta código automaticamente e não oferece um menu de help, dessa maneira aconselho que seja
utilizada uma EDI Java como o Eclipse para ser criar e testar o código antes de se utilizar como UDF.
Operation Mapping
Nossas transformações e service interfaces são agrupadas em um único objeto, o “operation Mapping”
nele informamos o “service interface” que criamos, definindo assim se o tipo da nossa interface
( síncrona ou assíncrona) as estruturas que serão utilizadas ( message types ) e as transformações que
serão utilizadas.
Ou seja trata-se de um agrupador de todos os dados referentes aos nossos objetos de integração.
Para criarmo um operation mapping basta clicarmos com o botão direito sobre o namespace onde
desejamos que ele seja armazenado e a seguinte tela será apresentada.
Basta informamos o nome que desejamos para o Operation Mapping e clicar em “Create”e aparecera na
nossa IDE a tela para configurarmos esse objeto.
Na tela de configuração devemos proceder da seguinte maneira:
1) Na área em vermelho ao lado esquerdo da tela, devemos colocar o “Message Interface” do tipo
output criado anteriormente e que será a interface de origem dos dados que estão sendo
enviados para a transformação do nosso cenário de integração, para isso podemos proceder de
duas maneiras, ou selecionando o “message interface” desejado no menu ao lado esquerdo ou
simplesmente clicando no campo Name na linha que aparece dentro dessa area e selecionando
o botão que será apresentado e se navegando até o message interface que se deseja utilizar.
2) Na área em amarelo ao lado direito da tela, devemos colocar o “Message Interface” do tipo
input criado anteriormente e que será a interface de destino dos dados que já sofreram
transformação no nosso cenário de integração, para isso podemos proceder de duas maneiras,
ou selecionando o “message interface” desejado no menu ao lado esquerdo ou simplesmente
clicando no campo Name na linha que aparece dentro dessa area e selecionando o botão
que será apresentado e se navegando até o message interface que se deseja utilizar.
3) Após os passos 1 e 2 deve-se clicar no botão “read interface” ( em azul na figura ) para que as
configuração sejam lidas e os campos de “Source Message” e “Target Message” sejam
preenchidos automaticamente.
4) Feito o passo 3, deve-se selecionar o Message Mapping disponivel para essa interface especifica
clicando-se no campo “name” que estará disponivel e selecionando o message mapping através
do botão .
OBs.: caso seja uma interface síncrona, abaixo do botão “Read Interface” será apresentado dois folders
com o nome “request” e o outro com o nome response e sendo dessa maneira necessário que se repita
o passo 4 duas vezes, uma vez para cada folder.
Process Integration Scenarios
Basicamente o Process Integration Scenário é um facilitador de configuração utilizado para após as s
interfaces estarem prontas no ESR criarmos pacotes para automatizar o processo de criação dos
cenários no ESD.
O PIS é um fluxo da mensagem dentro no nosso cenário com uma “ação” de início e outra “ação” de
final de processo, entre essas duas ações podem haver outras interligadas mas que seguem
obrigatoriamente da de ínicio, sendo chamada cada uma das ações específicas até a de final de
processo.
Na opção “Product Version” ( que já vem selecionada por default ), iremos selecionar o nome de um dos
produtos que utilizamos em nossas interfaces, lembrando que, nesse momento selecionamos o produto
que contem a interface para a mensagem que iremos utilizar naquele momento para cada uma das
ações.
Podem ocorrer situações em que um único produto contenha todas as interfaces, nesse caso, ele será
inserido uma vez para cada ação que será disparada em colunas diferentes.
Logo após selecionada a versão do produto que iremos trabalhar devemos selecionar o Software
Component que estaremos vinculados em uma eventual ação a ser criada. E, por último, damos um
nome e uma descrição para o Application Component que estaremos criando. Caso seja um integration
Process, devemos selecionar o IP correspondente na pasta “Integration Process” . No final basta clicar
em Apply que a coluna para qual criamos o Application Component estará vinculada ao componente.
Repita os passos descritos até que todos os applications compnents que serão necessários estejam
devidamente criados para começarmos com a criação das ações para definirmos o nosso integration
scenário como o exemplo abaixo demonstra ( nesse caso teremos apenas duas colunas de ações, caso
estivessemos usando um integration process provavelmente haveriam mais colunas ).
Actions
Após criado os application components em nósso integration scenário devemos comecar a criar as ações
( actions ) que serão utilizados para definir os momentos de configuração de um cenário de integração.
Para criarmos ações basta clicar com o botão direito em um application component e logo em seguida
na opção “Create Action”.
Logo em seguida será disponibilizada uma tela onde devemos informar qual o tipo de ação, se é uma
ação interna do nosso SFWCV ou se é uma ação que chama uma interface de um outro SFWCV
existente, no caso desse exemplo tomemos como referência uma interface interna do nosso SFWCV.
Clique em “ Continue” para prosseguir para a tela de configuração do Action.
Na tela seguinte será pedido que seja criado um nome para o Action em questão, normalmente
seguimos o padrão com o prefixo “AC_” antes do nome. Clique em Finish e prossiga com a criação do
Action.
Será apresentada a seguir a tela de configuração do Process Integration Scenario com uma caixa com o
action que criamos, clique duas vezes sobre o action e a tela de configuração do mesmo será
apresentada.
Na tela de configuração do action, clique no botão “Editar” , e insira a interface que irá ser utilizada
ou dentro do grupo de “outbound interface” ou de “inbound interface”, para isso, basta clicar no botão
respectivo de cada um dos grupos, dessa maneira uma linha será disponibilizada e para inserir a
interface basta selecionar ela no menu “Interface Objects” ao lado esquerdo da tela e arrastar para cima
da nova linha de maneira que ela fique completamente seleciona e soltar o objeto, automaticamente os
campos de configuração dessa interface estarão preenchidos. Clique em salvar e retorne para a tela do
integration scenario e repita esse procedimento para cada uma das ações que forem necessárias serem
criadas lembrando que, caso as ações sejam sincronas sempre estarão no mesmo nivel no integration
scenario, caso sejam assincronas estarão em níveis diferentes.
Após criados todos os actions, no nosso exemplo estamos utilizando ações sincronas, devemos
configurar qual delas é a ação de ínicio de processo e a de final, para isso basta clicar com o botão
direito em cima de cada uma dela e selecionar se ela for de incio de processo ou de final de processo
como demonstrado abaixo:
Para a ação que será configurada como inicio do processo aparecerá um ponto negro acima do action e
para a que está configurada como final de processo, aparecerá um ponto identico mas abaixo da ação.
Após definida a ação de inicio e de fim de processo devemos conectar as ações para isso, basta
selecionar primeiramente a ação à direita e após isso a ação à esquerda pressionando o botão shift do
teclado e clicando-se com o mouse sobre cada uma delas, logo após basta cliclar novamente sobre as
ações selecionados e selecionar a opção “Create Connection...”.
As ações estamdo devidamente no nivel correto para seu tipo de sincronia ou assincronia, ao tentar
realizar a conexão entre elas, apresentará a tela abaixo para se configurar a conexão entre elas:
Estando as interfaces de output e input corretamente selecionada entre as opções existentes ( podem
haver mais de uma opção para cada tipo de interface dependendo da configuração do action ) devemos
selecionar a aba Assign Mapping e selecionar o Operation Mapping Correspondente que foi criado
anteriormente.
Caso tenhamos criado um Communication Channel Template ( vide próximo tópico como criar um CC
template ), clique sobre a opção “ Assign Communication Channel Template” e selecione os respectivos
CCs que serão utilizados, caso contrário poderá pular essa etapa, caso for necessidade de se criar
alguma documentação para acompanhar esse processo basta clicar na aba “ Documentation” e inserir
qualquer texto que desejar. Ao final clique em Apply e finalise o seu integration scenário.
Communication Channel Template
Quando desejamos pré-configurar um communication channel a ser criado no ambiente do Directory
para ser utilizado pelo nosso futuro cenário de integração podemos utilizar um template criado no
ambiente do repository.
Esse communication channel template deve estar associado ao nosso Integration Scenário e dessa
maneira, no momento de configuração do Scenário poderemos gerar os devidos CCs que estiverem
vinculados a ele.
Para criarmos um Communication Channel Template, basta clicarmos com o botão direito sobre o
namespace onde desejamos armazena-lo e a tela abaixo será exibida.
Selecione a opção “Adapter Objects/Communication Channel Template” e em seguida insira o nome
desejado para esse objeto, normalmente acrescentamos o prefixo “CCT_” antes do nome.
Após clicado para criar o objeto, uma tela de configuração do CCT aparecerá para que realizemos os
parâmetros de configuração muito similar à tela de configuração do CC existente no Directory.
Basta selecionarmos o tipo de Adaptador ( SOAP, RFC, IDOC, HTTP, XI, FILE, etc), a direção da
mensagem( sender ou receiver), o tipo de protocolo e o protocolo de mensagem, caso deseje
configurações mais especificas para o seu CC, basta clicar no botão de “ Attributes” e selecionar os
parâmetros que deseja pré-configurar e após isso clique em salvar e ao final ativar.
Não esqueça que ele só será disponibilizado via um Process Integration Scenário por isso, edite as
configurações de conexão entre os Actions correspondentes ao seus CCs templates e depois salve e
ative o Process Integration Scenário.