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

ParâmetroDescriçãoValor padrãoTipo de dado

Account

É necessário criar uma conta tipo BASIC para utilizar as credenciais SAP (usuário e senha).

N/A

String

SAP Operation

Método de conexão no SAP - o componente suporta acesso via RFC ou IDOC.

RFC

String

IDOC Type

Especifica o tipo básico IDOC de um IDOC.

N/A

String

IDOC Type Extension

Especifica o tipo de extensão IDOC de um IDOC.

N/A

String

System Release

Especifica o SAP Basis Release associado de um IDOC.

N/A

String

Application Release

Especifica o Application Release associado de um IDOC.

N/A

String

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, você deve adicionar uma entrada de mapeamento ao arquivo do host da máquina na qual o agente está instalado.

N/A

String

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

N/A

String

Language

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

en

String

Client ID

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

400

String

System Number

Normalmente com 2 dígitos, utilizado para se conectar ao sistema SAP (você pode encontrar essa informação no SAP GUI).

01

Inteiro

Send As File

Quando ativada, esta opção permite que um arquivo seja definido e enviado.

False

Booleano

File Name

Arquivo que contém o corpo a ser enviado pelo servidor SAP. É recomendável o uso desta capacidade em situações onde o conteúdo é muito grande para ser enviado pelo campo “Template”. Utilize outros componentes como Template Transformer e File Writer para escrever o conteúdo desejado.

N/A

String

Template (XML)

Template Apache FreeMarker para a mensagem SOAP enviada na requisição.

N/A

String

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

False

Booleano

Use Dynamic Account (Fase Beta)

Quando a opção estiver ativada, o componente irá usar a conta dinamicamente. Quando estiver desativada, a conta será usada estaticamente.

False

Booleano

Account Name (Fase Beta)

Nome da conta a ser definida. O nome da conta deve ser gerado dinamicamente através do componente Store Account.

N/A

String

quando a opção estiver ativada, a conta armazenada é isolada para outro sub-processo. Nesse caso, os sub-processos verão sua própria versão dos dados da conta armazenada. Para saber mais sobre a funcionalidade Scoped, leia a documentação de Suporte a credenciais dinâmicas.

False

Booleano

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