SAP

Descubra mais sobre o componente SAP e saiba como utilizá-lo na Digibee Integration Platform.

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

Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Atenção ao tamanho máximo de arquivo para cada tipo de implementação em um pipeline que tenha apenas o componente SAP. Note que esses valores poderão sofrer alterações se o pipeline possuir outros componentes:

Small: 10 MB

Medium: 28 MB

Large: 67 MB

Recomendação de uso

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

Leia o artigo para conhecer mais informações sobre conectividade relacionadas ao SAP.

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 Intermediate Document (IDOC)

  • 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.

Lembre-se que IDOCs são processados assincronamente via SAP. Quando um IDOC é enviado, não há indicação de sucesso ou falha. Em caso de erro, é necessário que o usuário reprocesse o IDOC.

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>

{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.

Atualizado