SAP

Conheça o componente e saiba como utilizá-lo.

Erick Rubiales avatar
Escrito por Erick Rubiales
Atualizado há mais de uma semana

IMPORTANTE: esta documentação foi descontinuada. Leia a documentação SAP atualizada no nosso novo portal de documentação.


O SAP permite que você se conecte ao SAP (apenas RFC) para enviar requisições.

   
Dê uma olhada nos parâmetros de configuração do componente:

  • Account: é necessário criar uma conta tipo BASIC para utilizar as credenciais SAP (usuário e senha).

  • SAP Operation: método de conexão no SAP - o componente suporta acesso via RFC ou IDOC.

  • Host: hostname do sistema SAP - para que "IP" e "Porta" sejam suportados, é necessário ter conectividade por VPN (você pode definir o VPN através do SAP Gui). Para resolver o nome do host para um endereço IP, é necessário incluir uma entrada de mapeamento no arquivo host da máquina na qual o agente está instalado.

  • RFC: nome da RFC utilizado para se conectar ao sistema SAP - esse campo é informado pelo cliente (os parâmetros de importação da função do SAP devem ser mapeados).

  • Language: linguagem a ser utilizada na conexão ao sistema SAP (ex.: "EN" para inglês).

  • Client ID: SAP Client ID, normalmente com 3 dígitos, utilizado para se conectar ao SAP.

  • System Number: normalmente com 2 dígitos, utilizado para se conectar ao sistema SAP (você pode encontrar essa informação no SAP Gui).

  • Template (XML): template Apache FreeMarker para a mensagem SOAP enviada na requisição.

  • Enviroment/SystemName/System Id: normalmente com 3 caracteres - você pode encontrar essa informação, que vem de um arquivo JSON file, no SAP Gui.

  • Fail On Error: se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success".

   
Recomendamos que você configure GLOBALS para o AMBIENTE SAP, conforme o exemplo a seguir:

  • Globals:

  • environment = Ambiente SAP
    ​    

Veja o exemplo dos itens listados abaixo, que devem ser substituídos de acordo com sua necessidade:

  • [rfc] = Nome da RFC

  • [table] = Tabela relacionada a RFC

  • [columns] = Colunas da Tabela

     

RECOMENDAÇÃO DE USO
         

Estrutura do componente para conexões RFC

Para conexões RFC, utilize a cápsula "SAP Json to RFC" antes do componente SAP. Com isso, a chamada já é transformada no formato esperado pelo SAP. Segue abaixo um exemplo de sintaxe de chamada RFC dentro do SAP:
​       

Chamada da função (RFC) BAPI_BUPA_ADDRESS_GETDETAIL dentro do componente JSON Generator

{
  "sid": "{{sap-test-sid}}",
  "rfc": "BAPI_BUPA_ADDRESS_GETDETAIL",
  "importParameters": {
    "attributes": {
      "BUSINESSPARTNER": {{ message.BUSINESSPARTNER }},
      "VALID_DATE": {{FORMATDATE(NOW(), "timestamp", "yyyy-MM-dd", null , "GMT-3") }}
    }
  }
}

       
Para uma chamada RFC, é importante dar atenção aos seguintes pontos:
​   

  • sempre informar o Sid - campo Enviroment/SystemName/System Id mencionado anteriormente.

  • Campo RFC -  pode constar tanto no arquivo JSON, quanto ser informado dentro do componente. 

  • importParameters - chamada da função dentro do SAP. Especifique apenas os campos que devem ser preenchidos na chamada.

         

Sobre o SAP IDOC             

  • IDOC: significa Intermediate Document

  • IDOC Type: possui estrutura específica, que coloca em sequência os dados transferidos de um sistema para outro.

  • IDOC TYPE EXTENSION (opcional): especifica o tipo de extensão IDOC, caso exista, de um IDOC produzido por esse endpoint.

  • SYSTEM RELEASE (opcional): especifica o SAP Basis Release associado, caso exista, a um IDOC produzido por esse endpoint.

  • APPLICATION RELEASE (opcional): especifica o Application Release associado, caso exista, a um IDOC produzido por esse endpoint

   

Estrutura do componente para utilização do campo Template XML      

Veja um exemplo de template (XML):

<?xml version="1.0" encoding="ASCII"?>
<idoc:Document
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:FLCUSTOMER_CREATEFROMDATA01---="http://sap.fusesource.org/idoc/{_YOUR_ENVIRONMENT_}/FLCUSTOMER_CREATEFROMDATA01///"
    xmlns:idoc="http://sap.fusesource.org/idoc"
    creationDate="2015-01-28T12:39:13.980-0500"
    creationTime="2015-01-28T12:39:13.980-0500"
    iDocType="FLCUSTOMER_CREATEFROMDATA01"
    iDocTypeExtension=""
    messageType="FLCUSTOMER_CREATEFROMDATA"
    recipientPartnerNumber="QUICKCLNT"
    recipientPartnerType="LS"
    senderPartnerNumber="QUICKSTART"
    senderPartnerType="LS">
  <rootSegment xsi:type="FLCUSTOMER_CREATEFROMDATA01---:ROOT" document="/">
    <segmentChildren parent="//@rootSegment">
      <E1SCU_CRE parent="//@rootSegment" document="/">
        <segmentChildren parent="//@rootSegment/@segmentChildren/@E1SCU_CRE.0">
          <E1BPSCUNEW parent="//@rootSegment/@segmentChildren/@E1SCU_CRE.0"
              document="/"
              CUSTNAME="Fred Flintstone" FORM="Mr."
              STREET="123 Rubble Lane"
              POSTCODE="01234"
              CITY="Bedrock"
              COUNTR="US"
              PHONE="800-555-1212"
              EMAIL="fred@bedrock.com"
              CUSTTYPE="P"
              DISCOUNT="005"
              LANGU="E"/>
        </segmentChildren>
      </E1SCU_CRE>
    </segmentChildren>
  </rootSegment>
</idoc:Document>

   
Importante: {YOUR_ENVIRONMENT} deve ser substituído pelo seu SAP SID.

           
Caso seja uma consulta única, você pode utilizar a seguinte sintaxe:
​         

Elementary fields/Import Parameters

<?xml version="1.0" encoding="ASCII"?>
<[rfc]:Request xmlns:[rfc]="http://sap.fusesource.org/rfc/{{global.environment}}/[rfc]" [columns]="20180801" [columns]="20180806" [columns]="050" />
   
EXEMPLO:

<?xml version="1.0" encoding="ASCII"?>
<ABCD_RFC_ORDEM_FATURA:Request xmlns:ABCD_RFC_ORDEM_FATURA="http://sap.fusesource.org/rfc/QAS/ABCD_RFC_ORDEM_FATURA" P_ERDAT_INI="2018-07-01T00:00:00.000" P_ERDAT_FIM="2018-08-01T00:00:00.000" CLIENTE="" VKORG="0010" AUART="" />

    

Caso seja uma consulta a uma tabela, utilize a seguinte sintaxe: 

Table fields

<?xml version="1.0" encoding="ASCII"?>
<[rfc]:Request ">xmlns:[rfc]="http://sap.fusesource.org/rfc/{{global.environment}}/[rfc]">
 <[table]>
  <row>
   <[columns]>${VBELN}</[columns]>
   <[columns]>${ABDC}</[columns]>
  </row>
 </[table]>
</[rfc]:Request>

Exemplo:

<?xml version="1.0" encoding="ASCII"?>
<ABCD_RFC_MATERIAIS:Request ">xmlns:ABCD_RFC_MATERIAIS:Request="http://sap.fusesource.org/rfc/{{global.environment}}/ABCD_RFC_MATERIAIS:Request">
 <T_TIPO>
  <row>
   <MTART>${type}</MTART>
  </row>
 </T_TIPO>
</ABCD_RFC_MATERIAIS:Request>

   


Entrada

{
  "body":{
    "type": "S"
  }
}

 

  • ${type}: variável que deve ser passada dentro de uma tag "body".


Para a variável sapRequestTemplate, é importante dar atenção aos seguintes pontos:

  • o nome da variável pode conter sinal de menos (-), ponto (.), e dois pontos (:) em qualquer posição. Mas esses caracteres precisam ser escapados com backslash (\). Do contrário, eles serão interpretados como operadores.

  • Caso seja necessário, trabalhe com substituição de números:

<#assign x=42>
${x}
${x?string} <#-- o mesmo que ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
${x?string.computer}


Saída

42
42
42
$42.00
4,200%
42

    

Fluxo de Mensagens

Entrada

O componente espera uma mensagem em qualquer formato. Porém, ele vai procurar por um caminho dentro da propriedade de configuração "modelPath".

Saída

A mensagem de saída será igual à mensagem de entrada, mas substituindo a propriedade do modelo conforme definida pelo template (como uma string). Caso ocorra um erro, a propridade "property_error" será criada no mesmo nível da propriedade original.

   

Respondeu à sua pergunta?