SAP (IDoc and RFC)

Saiba mais sobre o conector SAP e como usá-lo na Digibee Integration Platform.

O conector SAP permite a integração com sistemas SAP utilizando o protocolo RFC e o padrão IDoc para troca de dados.

Parâmetros

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

Aba Authorization

Parâmetro
Descrição
Valor padrão
Tipo de dado

Use Dynamic Account

Quando ativado, o conector utilizará a conta de forma dinâmica. Caso contrário, usará a conta de forma estática. Saiba mais sobre Contas Dinâmicas.

False

Booleano

Scoped

Quando ativado, a conta armazenada é isolada de outros subprocessos. Nesse caso, os subprocessos visualizam sua própria versão dos dados da conta armazenada. Disponível apenas se o parâmetro Use Dynamic Account estiver habilitado.

False

Booleano

Account Name (DB)

Nome da conta dinâmica utilizada pelo conector. Essa conta deve ter sido previamente configurada em um conector Store Account no pipeline para que este processo tenha efeito. Disponível apenas se o parâmetro Use Dynamic Account estiver habilitado.

N/A

String

Account

Conta utilizada pelo conector. Tipo suportado: Basic (usuário e senha). Disponível apenas se o parâmetro Use Dynamic Account estiver desabilitado.

N/A

Conta

Host (DB)

Hostname do sistema SAP. Para suportar "IP" e "Port", é necessário conectividade via VPN (a VPN pode ser configurada pelo SAP GUI). Para resolver o hostname em um endereço IP, é preciso adicionar uma entrada de mapeamento no arquivo de hosts da máquina onde o agente está instalado.

N/A

String

Client ID (DB)

ID do cliente SAP, geralmente um número de 3 dígitos usado para conectar ao SAP.

400

String

System Number (DB)

Número do sistema SAP, geralmente com 2 dígitos. Essa informação pode ser encontrada no SAP GUI.

01

Integer

Language (DB)

Idioma utilizado na conexão com o sistema SAP (por exemplo, "EN" para inglês).

en

String

Aba General

Parâmetro
Descrição
Valor padrão
Tipo de dado

Alias

Nome (alias) para a saída deste conector, permitindo referenciá-la posteriormente no fluxo utilizando expressões Double Braces. Saiba mais.

sap-1

String

SAP Operation

Tipo de conexão com o sistema SAP. Opções suportadas: RFC ou IDoc.

RFC

String

Parâmetro
Descrição
Valor padrão
Tipo de dado

RFC (DB)

Nome da RFC utilizada para conectar ao sistema SAP. Esse valor é fornecido pelo cliente. Os parâmetros de import da função SAP devem ser mapeados.

YYPCL_RFC_ORDEM_FATURA

String

Search Template

Botão que preenche automaticamente o parâmetro Template (XML) com um template de RFC quando todos os detalhes de autorização e o nome da RFC são válidos.

N/A

Botão

Send as File

Quando ativado, um arquivo pode ser definido e enviado.

False

Booleano

File Name (DB)

Arquivo que contém o corpo a ser enviado ao servidor SAP. Utilize esta opção quando o payload for muito grande para o campo Template. Recomenda-se usar outros conectores como Template Transformer e File Writer para gerar o conteúdo do arquivo.

N/A

String

Template (XML) (DB)

Define o template Apache FreeMarker para a mensagem SOAP enviada na requisição. Para chamadas RFC, um template é gerado através do botão Search Template quando os detalhes de autorização e o nome da RFC são válidos.

N/A

String

Fail On Error

Se ativado, interrompe a execução do pipeline ao ocorrer um erro. Se desativado, a execução continua, mas a propriedade "success" será definida como false.

False

Booleano

Aba Documentation

Parâmetro
Descrição
Valor padrão
Tipo de dado

Documentation

Campo opcional para descrever a configuração do conector e possíveis regras de negócio envolvidas.

N/A

Texto

Conector SAP – Guia de uso

Limites de tamanho de arquivo

Ao usar o conector SAP, observe o tamanho máximo de arquivo por tipo de implantação. Esses limites se aplicam quando o conector é usado isoladamente. Se outros conectores estiverem presentes no pipeline, os tamanhos podem variar:

  • Pequeno: 10 MB

  • Médio: 28 MB

  • Grande: 67 MB

Configuração de variáveis globais

Para simplificar a configuração dinâmica e promover a reutilização, recomenda-se definir variáveis globais no seu pipeline.

Variáveis globais obrigatórias

Variável
Descrição

environment

Ambiente SAP

Variáveis globais opcionais para templates

Variável
Descrição

[rfc]

Nome da função RFC

[table]

Tabela relacionada à chamada RFC

[columns]

Colunas da tabela usadas na requisição

Para mais detalhes, consulte o guia de conectividade SAP.

Integração RFC

Exemplo de entrada JSON

Para conexões RFC, inclua a cápsula "SAP JSON to RFC" antes do conector SAP. Isso garante que a entrada esteja formatada corretamente para o sistema SAP.

Exemplo de uma chamada RFC em um conector 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") }} 
    } 
  }
}

Melhores práticas

  • Sempre especifique o sid (Nome do Ambiente/Sistema ou ID do Sistema).

  • A função rfc pode ser definida no payload JSON ou diretamente no conector.

  • Defina importParameters apenas com os campos necessários para a chamada da função.

Configuração do Template (XML)

O campo Template (XML) permite a geração automática para RFCs e também suporta customização manual tanto para estruturas RFC quanto IDoc.

Geração automática de template RFC

Quando uma função RFC é selecionada, o botão Search Template fica disponível. Se os detalhes de autorização estiverem corretos e o nome da RFC for válido, ao clicá-lo o campo Template (XML) é preenchido automaticamente com um template pronto para você apenas substituir os valores.

Exemplo de template gerado:

<BBP_RFC_READ_TABLE:Request xmlns:BBP_RFC_READ_TABLE="http://sap.fusesource.org/rfc/EC1/BBP_RFC_READ_TABLE">
    <DELIMITER>${body.DELIMITER}</DELIMITER>
    <NO_DATA>${body.NO_DATA}</NO_DATA>
    <QUERY_TABLE>${body.QUERY_TABLE}</QUERY_TABLE>
    <ROWCOUNT>${body.ROWCOUNT?c}</ROWCOUNT>
    <ROWSKIPS>${body.ROWSKIPS?c}</ROWSKIPS>
    <FIELDS>
        <#if body.FIELDS??>
            <#list body.FIELDS as item>
            <row>
                <FIELDNAME>${item.FIELDNAME}</FIELDNAME>
                <OFFSET>${item.OFFSET}</OFFSET>
                <LENGTH>${item.LENGTH}</LENGTH>
                <TYPE>${item.TYPE}</TYPE>
                <FIELDTEXT>${item.FIELDTEXT}</FIELDTEXT>
            </row>
            </#list>
        </#if>
    </FIELDS>
    <OPTIONS>
        <#if body.OPTIONS??>
            <#list body.OPTIONS as item>
            <row>
                <TEXT>${item.TEXT}</TEXT>
            </row>
            </#list>
        </#if>
    </OPTIONS>
</BBP_RFC_READ_TABLE:Request>

Exemplos de templates manuais

Exemplo de template IDoc

<?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="[email protected]"
              CUSTTYPE="P" 
              DISCOUNT="005" 
              LANGU="E"/> 
        </segmentChildren> 
      </E1SCU_CRE> 
    </segmentChildren> 
  </rootSegment> 
</idoc:Document>  

RFC – Consulta Simples

Campos elementares / Parâmetros de entrada:

<?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="" /> 

RFC – Consulta em Tabela

Campos da tabela:

<?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 fornecida dentro da tag body.

Variáveis no template e escape

Ao usar variáveis como sapRequestTemplate, lembre-se:

  • Caracteres especiais (como -, ., :) em nomes de variáveis devem ser escapados com barra invertida (\).

  • Use funções Apache FreeMarker para formatação e conversão:

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

Saídas:

42
42
42
$42.00
4,200%
42

Fluxo de mensagens

Entrada

O conector aceita entrada em qualquer formato, mas procura por um caminho específico baseado na configuração modelPath.

Saída

  • A saída reflete a entrada, porém substitui a propriedade do modelo definida pela string XML gerada (a partir do Template).

  • Em caso de erro, a propriedade property_error é adicionada no mesmo nível do modelo original.

Atualizado

Isto foi útil?