Creare flussi di lavoro per scenari di integrazione SAP comuni in App per la logica di Azure

Si applica a: App per la logica di Azure (a consumo e standard)

Questa guida pratica illustra come creare flussi di lavoro di esempio per le app per la logica per alcuni scenari di integrazione SAP comuni usando App per la logica di Azure e il connettore SAP.

I flussi di lavoro delle app per la logica Standard e A consumo offrono il connettore gestito SAP che è ospitato ed eseguito in Azure multi-tenant. I flussi di lavoro Standard offrono anche il connettore del provider di servizi predefinito SAP, ospitato ed eseguito in App per la logica di Azure a tenant singolo. Per altre informazioni, vedere Informazioni tecniche sul connettore.

Prerequisiti

  • Installare o usare uno strumento che può inviare richieste HTTP per testare la soluzione, ad esempio:

    Attenzione

    Per gli scenari in cui sono presenti dati sensibili, ad esempio credenziali, segreti, token di accesso, chiavi API e altre informazioni simili, assicurarsi di usare uno strumento che protegge i dati con le funzionalità di sicurezza necessarie, funziona offline o in locale, non sincronizza i dati nel cloud e non richiede l'accesso a un account online. In questo modo si riduce il rischio di esporre i dati sensibili al pubblico.

Ricevere messaggi dal SAP

Il flusso di lavoro dell'app per la logica di esempio seguente viene attivato quando il trigger SAP del flusso di lavoro riceve un messaggio da un server SAP.

Aggiungere un trigger SAP

In base al fatto che si abbia un flusso di lavoro A consumo in App per la logica di Azure multi-tenant o un flusso di lavoro Standard in App per la logica di Azure a tenant singolo, seguire i passaggi corrispondenti:

  1. Nel portale di Azure aprire l'app per la logica A consumo e il flusso di lavoro vuoto nella finestra di progettazione.

  2. Nella finestra di progettazione seguire questa procedura generale per aggiungere il trigger del connettore gestito SAP denominato Quando viene ricevuto un messaggio.

  3. Se richiesto, specificare le seguenti informazioni di connessione per il server SAP locale. Al termine, seleziona Crea. In caso contrario, continuare con il passaggio successivo per configurare il trigger SAP.

    Parametro Richiesto Descrizione
    Nome connessione Immetti un nome per la connessione.
    Gateway dati 1. In Sottoscrizione selezionare la sottoscrizione di Azure per la risorsa gateway dati creata nel portale di Azure per l'installazione del gateway dati.

    2. In Gateway di connessione selezionare la risorsa gateway dati in Azure.
    Client ID client SAP da usare per la connessione al server SAP
    Tipo di autenticazione Tipo di autenticazione da usare per la connessione, che deve essere Basic (nome utente e password). Per creare una connessione SNC, vedere Abilitare Comunicazioni rete protetta (SNC).
    Nome utente SAP Nome utente per il server SAP
    Password SAP Password per il server SAP
    Tipo di accesso Selezionare Server applicazioni o Gruppo (server messaggi), quindi configurare i parametri richiesti corrispondenti, anche se sono facoltativi:

    Server applicazioni:
    - Host sistema autonomo: nome host del server applicazioni SAP
    - Servizio sistema autonomo: nome del servizio o numero di porta del server applicazioni SAP
    - Numero di sistema autonomo: numero di sistema del server SAP, compreso tra 00 e 99

    Group (Gruppo):
    - Host server MS: nome host del server messaggi SAP
    - Nome del servizio o numero di porta MS: nome del servizio o numero di porta del server messaggi SAP
    - ID sistema MS: ID di sistema del server SAP
    - Gruppo di accesso MS: gruppo di accesso del server SAP. Nel server SAP è possibile trovare o modificare il valore Gruppo di accesso aprendo la finestra di dialogo CCMS: Mantieni gruppi di accesso (T-Code SMLG). Per altre informazioni, vedere la Nota SAP 26317 - Configurare il gruppo ACCESSO per il bilanciamento automatico del carico.
    Tipizzazione sicura No Questa opzione è disponibile per la compatibilità con le versioni precedenti e controlla solo la lunghezza della stringa. Per impostazione predefinita, viene usata la tipizzazione forte per verificare la presenza di valori non validi eseguendo la convalida XML sullo schema. Questo comportamento consente di rilevare i problemi tempestivamente. Altre informazioni sull'impostazione Tipizzazione sicura.
    Usare SNC No Per creare una connessione SNC, vedere Abilitare Comunicazioni rete protetta (SNC).

    Per altri parametri di connessione disponibili facoltativi, vedere Informazioni di connessione predefinite.

    Dopo aver configurato e testato la connessione in App per la logica di Azure, viene visualizzata la casella con le informazioni sul trigger. Per altre informazioni sui problemi di connessione che potrebbero verificarsi, vedere Risolvere i problemi relativi alle connessioni.

  4. In base alla configurazione del server SAP e allo scenario, specificare i valori dei parametri necessari per il trigger Quando viene ricevuto un messaggio e aggiungere qualsiasi altro parametro trigger disponibile che si desidera usare nello scenario.

    Nota

    Questo trigger SAP è un trigger basato su webhook, non un trigger di polling e non include opzioni per specificare una pianificazione del polling. Ad esempio, quando si usa il connettore SAP gestito con il gateway dati locale, il trigger viene chiamato dal gateway dati solo quando arriva un messaggio, quindi non è necessario eseguire il polling.

    Parametro Richiesto Descrizione
    GatewayHost Host del gateway di registrazione per il server RFC SAP
    GatewayService Servizio del gateway di registrazione per il server RFC SAP
    ProgramId ID programma del gateway di registrazione per il server RFC SAP.

    Nota: Per questo valore viene applicata la distinzione tra maiuscole e minuscole. Assicurarsi di usare in modo coerente lo stesso formato di maiuscole e minuscole per il valore ID programma quando si configura il flusso di lavoro dell'app per la logica e il server SAP. In caso contrario, quando si tenta di inviare un IDoc a SAP, il monitoraggio tRFC (T-Code SM58) potrebbe mostrare gli errori seguenti (i collegamenti richiedono l'accesso SAP):

    - Impossibile trovare la funzione IDOC_INBOUND_ASYNCHRONOUS (2399329)
    - Client RFC non ABAP (tipo di partner) non supportato (353597)
    DegreeOfParallelism No Numero di chiamate da elaborare in parallelo. Per aggiungere questo parametro e modificare il valore, nell'elenco Aggiungi nuovo parametro selezionare DegreeOfParallelism e immettere il nuovo valore.
    SapActions No Filtrare i messaggi ricevuti dal server SAP in base a un elenco di azioni SAP. Per aggiungere questo parametro, nell'elenco Aggiungi nuovo parametro selezionare SapActions. Nella nuova sezione SapActions, per il parametro SapActions - 1, usare la selezione file per selezionare un'azione SAP oppure specificare manualmente un'azione. Per altre informazioni sull'azione SAP, consultare Schemi di messaggi per operazioni IDoc.
    Formato IDoc No Formato da usare per la ricezione di IDoc. Per aggiungere questo parametro, nell'elenco Aggiungi nuovo parametro selezionare Formato IDoc.

    - Per ricevere IDocs come XML semplice SAP, nell'elenco Formato IDoc selezionare SapPlainXml.

    - Per ricevere IDocs come file flat, nell'elenco Formato IDoc selezionare FlatFile.

    - Nota: se si usa anche l'azione Decodifica file flat nel flusso di lavoro, nello schema del file flat è necessario usare la proprietà early_terminate_optional_fields e impostare il valore su true. Questo requisito è necessario perché il record di dati IDoc del file flat inviato da SAP nella chiamata tRFC denominata IDOC_INBOUND_ASYNCHRONOUS non viene riempito con la lunghezza completa del campo SDATA. App per la logica di Azure fornisce i dati originali IDoc del file flat senza riempimento, così come ricevuti da SAP. Inoltre, quando si combina questo trigger SAP con l'azione Decodifica file flat, lo schema fornito all'azione deve corrispondere.
    Ricevere IDOCS con segmenti non rilasciati No Ricevere IDocs con o senza segmenti non rilasciati. Per aggiungere questo parametro e modificare il valore, nell'elenco Aggiungi nuovo parametro selezionare Ricevi IDOCS con segmenti non rilasciati e selezionare o No.
    SncPartnerNames No Elenco di partner SNC che dispongono delle autorizzazioni per chiamare il trigger a livello di libreria client SAP. Solo i partner elencati sono autorizzati dalla connessione SNC del server SAP. Per aggiungere questo parametro, nell'elenco Aggiungi nuovo parametro selezionare SncPartnerNames. Assicurarsi di immettere ogni nome separato da una barra verticale (|).

    L'esempio seguente mostra un trigger gestito SAP configurato in modo essenziale in un flusso di lavoro A consumo:

    Screenshot che mostra il trigger del connettore gestito SAP configurato in modo essenziale nel flusso di lavoro A consumo.

    L'esempio seguente mostra un trigger gestito SAP in cui è possibile filtrare i messaggi selezionando azioni SAP:

    Screenshot che mostra la selezione di un'azione SAP per filtrare i messaggi in un flusso di lavoro A consumo.

    In alternativa, è possibile specificare manualmente un'azione:

    Screenshot che mostra l'immissione manuale dell'azione SAP per filtrare i messaggi in un flusso di lavoro A consumo.

    L'esempio seguente illustra come viene visualizzata l'azione quando si configura il trigger per ricevere più messaggi:

    Screenshot che mostra un trigger di esempio che riceve più messaggi in un flusso di lavoro A consumo.

  5. Salvare il flusso di lavoro in modo da poter iniziare a ricevere messaggi dal server SAP. Sulla barra degli strumenti della finestra di progettazione seleziona Salva.

    Il flusso di lavoro ora è pronto per ricevere messaggi dal server SAP.

  6. Dopo che il trigger attiva ed esegue il flusso di lavoro, esaminare la cronologia dei trigger del flusso di lavoro per verificare che la registrazione del trigger sia riuscita.

Ricevere pacchetti IDoc da SAP

Per ricevere pacchetti IDoc, che sono batch o gruppi di IDocs, il trigger SAP non richiede una configurazione aggiuntiva. Tuttavia, per elaborare ogni elemento di un pacchetto IDoc dopo che il trigger ha ricevuto il pacchetto, è necessario implementare alcuni passaggi per suddividere il pacchetto in singoli IDoc configurando SAP per inviare IDocs nei pacchetti.

Il seguente flusso di lavoro di esempio illustra come estrarre singoli IDocs da un pacchetto usando la funzione xpath():

  1. Prima di iniziare, è necessario un flusso di lavoro dell'app per la logica A consumo o Standard con un trigger SAP. Se il flusso di lavoro non inizia già con questo trigger, seguire i passaggi precedenti descritti in questa guida per aggiungere al flusso di lavoro il trigger SAP in grado di ricevere messaggi.

  2. Per rispondere immediatamente al server SAP con lo stato della richiesta SAP, aggiungere l'azione di risposta seguente, in base al fatto che si usi un trigger gestito SAP o un trigger predefinito SAP:

    • Trigger gestito SAP: per questo trigger aggiungere un'azione di risposta al flusso di lavoro.

      Nell'azione di risposta usare uno dei codici di stato seguenti (statusCode):

      Codice di stato Descrizione
      202 Accettato La richiesta è stata accettata per l'elaborazione, ma l'elaborazione non è ancora stata completata.
      204 Nessun contenuto Il server ha soddisfatto correttamente la richiesta e nel corpo del payload della risposta non è presente contenuto aggiuntivo da inviare.
      200 OK Questo codice di stato contiene sempre un payload, anche se il server genera un corpo del payload di lunghezza zero.
    • Trigger predefinito SAP: per questo trigger aggiungere l'azione Rispondi al server SAP al flusso di lavoro.

    Nota

    Come procedura consigliata, aggiungere l'azione di risposta immediatamente dopo il trigger per liberare il canale di comunicazione con il server SAP.

  3. Ottenere lo spazio dei nomi radice dall'IDoc XML che il flusso di lavoro riceve da SAP.

    1. Per estrarre questo spazio dei nomi dal documento XML e archiviare lo spazio dei nomi in una variabile stringa locale, aggiungere l'azione Inizializza variabile.

    2. Rinominare il titolo dell'azione in Ottieni spazio dei nomi per il nodo radice in IDoc ricevuto.

    3. Specificare un nome per la variabile e impostare il tipo su Stringa.

    4. Nel parametro Valore dell'azione selezionare all'interno della casella di modifica, aprire l'editor della funzione o dell'espressione e creare l'espressione seguente usando la funzione xpath():

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      Flusso di lavoro A consumo

      Screenshot che mostra l'espressione per ottenere lo spazio dei nomi del nodo radice da IDoc ricevuto per un flusso di lavoro A consumo.

      Flusso di lavoro Standard

      Screenshot che mostra l'espressione per ottenere lo spazio dei nomi del nodo radice da IDoc ricevuto per un flusso di lavoro Standard.

      Completata l'operazione, l'espressione viene risolta e ora viene visualizzata nel formato seguente:

      Screenshot che mostra l'espressione risolta che ottiene lo spazio dei nomi del nodo radice dall'IDoc ricevuto.

  4. Per estrarre un singolo IDoc archiviando la raccolta IDoc in una variabile di array locale, seguire questa procedura:

    1. Aggiungere un'altra azione Inizializza variabile.

    2. Rinominare il titolo dell'azione in Ottieni array con gli elementi dati IDoc.

    3. Specificare un nome per la variabile e impostare il tipo su array.

      La variabile di array rende ogni IDoc disponibile per l'elaborazione individuale del flusso di lavoro enumerando la raccolta.

    4. Nel parametro Valore dell'azione selezionare all'interno della casella di modifica, aprire l'editor della funzione o dell'espressione e creare l'espressione xpath() seguente:

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      Completata l'operazione, l'espressione viene risolta e ora viene visualizzata nel formato seguente:

      Flusso di lavoro A consumo

      Screenshot che mostra l'espressione per ottenere un array di IDocs per un flusso di lavoro A consumo.

      In questo esempio, il flusso di lavoro seguente trasferisce ogni IDoc a un server SFTP usando un'azione di Controllo denominata Per ognuno e l'azione SFTP-SSH denominata Crea file. Ogni IDoc deve includere lo spazio dei nomi radice, motivo per cui il contenuto del file viene incluso all'interno di un elemento <Receive></Receive> insieme allo spazio dei nomi radice prima di inviare l'IDoc all'app downstream, o al server SFTP in questo caso.

      Screenshot che mostra l'invio di un IDoc a un server SFTP da un flusso di lavoro A consumo.

      Nota

      Per i flussi di lavoro A consumo, questo criterio è disponibile come criterio di avvio rapido, che è possibile selezionare dalla raccolta dei modelli quando si crea una risorsa app per la logica A consumo e un flusso di lavoro vuoto. In alternativa, quando la finestra di progettazione del flusso di lavoro è aperta, nella barra degli strumenti della finestra di progettazione selezionare Modelli.

      Screenshot che mostra la selezione del modello per ottenere un batch IDoc.

      Flusso di lavoro Standard

      Screenshot che mostra l'espressione per ottenere un array di IDocs per un flusso di lavoro Standard.

      In questo esempio, il flusso di lavoro seguente trasferisce ogni IDoc a un server SFTP usando un'azione di Controllo denominata Per ognuno e l'azione SFTP-SSH denominata Crea file. Ogni IDoc deve includere lo spazio dei nomi radice, motivo per cui il contenuto del file viene incluso all'interno di un elemento <Receive></Receive> insieme allo spazio dei nomi radice prima di inviare l'IDoc all'app downstream, o al server SFTP in questo caso.

      Screenshot che mostra l'invio di un IDoc a un server SFTP da un flusso di lavoro Standard.


Filtrare i messaggi ricevuti con azioni SAP

Se si usa il connettore gestito SAP nel trigger del flusso di lavoro, configurare un modo per filtrare in modo esplicito eventuali azioni indesiderate dal server SAP, in base allo spazio dei nomi del nodo radice nel payload XML ricevuto. È possibile fornire un elenco (array) con una o più azioni SAP. Per impostazione predefinita, questa array è vuota, il che significa che il flusso di lavoro riceve tutti i messaggi dal server SAP senza che vengano filtrati. Quando si configura il filtro di array, il trigger riceve i messaggi solo dai tipi di azione SAP specificati e rifiuta tutti gli altri messaggi dal server SAP. Tuttavia, questo filtro non influisce sul fatto che la tipizzazione del payload ricevuto sia debole o forte. Qualsiasi filtro delle azioni SAP viene applicato al livello dell'adapter SAP per il gateway dati locale. Per altre informazioni, vedere come testare l'invio di IDocs ad App per la logica di Azure da SAP.

Configurare il criterio richiesta-risposta asincrone per i trigger

Il connettore gestito SAP supporta il criterio richiesta-risposta asincrone di Azure per i trigger di App per la logica di Azure. È possibile usare questo criterio per creare richieste riuscite che altrimenti non avrebbero esito positivo con il criterio di richiesta-risposta sincrone predefinito.

Nota

Nei flussi di lavoro con più azioni Risposta, tutte le azioni Risposta devono usare lo stesso criterio richiesta-risposta. Ad esempio, se il flusso di lavoro usa un controllo switch con più azioni Risposta possibili, è necessario configurare tutte le azioni Risposta in modo che usino lo stesso criterio richiesta-risposta, sincrone o asincrone.

Se si abilita una risposta asincrona per l'azione Risposta, il flusso di lavoro può rispondere con una risposta 202 Accettato dopo aver accettato una richiesta di elaborazione. La risposta contiene un'intestazione di posizione che è possibile usare per recuperare lo stato finale della richiesta.

Per configurare un criterio richiesta-risposta asincrone per il flusso di lavoro usando il connettore SAP, seguire questa procedura:

  1. Nella finestra di progettazione aprire il flusso di lavoro dell'app per la logica. Verificare che il flusso di lavoro inizi con un trigger SAP.

  2. Nel flusso di lavoro individuare l'azione Risposta e aprire le Impostazioni di tale azione.

  3. A seconda che si disponga di un flusso di lavoro a consumo o Standard, seguire i passaggi corrispondenti:

    • A consumo: in Risposta asincrona, modificare l'impostazione da Off a On e selezionare Fine.
    • Standard: espandere Rete e in Risposta asincrona modificare l'impostazione da Off a On.
  4. Salvare il flusso di lavoro.

Inviare IDOC a SAP

Per creare un flusso di lavoro dell'app per la logica che invia un IDoc a un server SAP e restituisce una risposta, seguire questi esempi:

  1. Creare un flusso di lavoro dell'app per la logica attivato da una richiesta HTTP.
  2. Aggiungere un'azione SAP al flusso di lavoro per l'invio di un IDoc a SAP.
  3. Aggiungere un'azione di risposta al flusso di lavoro.
  4. Creare un criterio di richiesta-risposta Remote Function Call (RFC), se si usa un RFC per ricevere risposte da ABAP SAP.
  5. Testare il flusso di lavoro.

Aggiungere il trigger Request

Per fare in modo che il flusso di lavoro riceva IDocs da SAP su HTTP XML, è possibile usare il trigger predefinito Richiesta. Questo trigger crea un endpoint con un URL in cui il server SAP può inviare richieste HTTP POST al flusso di lavoro. Quando il flusso di lavoro riceve le richieste, il trigger viene attivato ed esegue il passaggio successivo nel flusso di lavoro.

Per ricevere IDoc su Common Programming Interface Communication (CPIC) come XML normale o come file flat, consultare la sezione Ricevere un messaggio da SAP.

In base al fatto che si abbia un flusso di lavoro A consumo in App per la logica di Azure multi-tenant o un flusso di lavoro Standard in App per la logica di Azure a tenant singolo, seguire i passaggi corrispondenti:

  1. Nel portale di Azure creare una risorsa dell'app per la logica A consumo e un flusso di lavoro vuoto nella finestra di progettazione.

  2. Nella finestra di progettazione seguire questi passaggi generali per trovare e aggiungere il trigger predefinito di Richiesta denominato Quando viene ricevuta una richiesta HTTP.

    Screenshot che mostra il trigger di richiesta per un flusso di lavoro A consumo.

  3. Salvare il flusso di lavoro. Sulla barra degli strumenti della finestra di progettazione seleziona Salva.

    Questo passaggio genera un URL dell'endpoint in cui il trigger può ricevere richieste dal server SAP, ad esempio:

    Screenshot che mostra l'URL dell'endpoint generato del trigger di richiesta per la ricezione di richieste in un flusso di lavoro A consumo.

Aggiungere un'azione SAP per inviare un IDoc

Creare quindi un'azione per inviare l'IDoc a SAP quando viene attivato il trigger Richiesta del flusso di lavoro. In base al fatto che si abbia un flusso di lavoro A consumo in App per la logica di Azure multi-tenant o un flusso di lavoro Standard in App per la logica di Azure a tenant singolo, seguire i passaggi corrispondenti:

  1. Nella finestra di progettazione del flusso di lavoro, sotto il trigger Richiesta, selezionare Nuovo passaggio.

  2. Nella finestra di progettazione seguire questa procedura generale per trovare e aggiungere l'azione gestita SAP denominata Invia messaggio a SAP.

  3. Se richiesto, specificare le seguenti informazioni di connessione per il server SAP locale. Al termine, seleziona Crea. In caso contrario, continuare con il passaggio successivo per configurare l'azione SAP.

    Parametro Richiesto Descrizione
    Nome connessione Immetti un nome per la connessione.
    Gateway dati 1. In Sottoscrizione selezionare la sottoscrizione di Azure per la risorsa gateway dati creata nel portale di Azure per l'installazione del gateway dati.

    2. In Gateway di connessione selezionare la risorsa gateway dati in Azure.
    Client ID client SAP da usare per la connessione al server SAP
    Tipo di autenticazione Tipo di autenticazione da usare per la connessione, che deve essere Basic (nome utente e password). Per creare una connessione SNC, vedere Abilitare Comunicazioni rete protetta (SNC).
    Nome utente SAP Nome utente per il server SAP
    Password SAP Password per il server SAP
    Tipo di accesso Selezionare Server applicazioni o Gruppo (server messaggi), quindi configurare i parametri richiesti corrispondenti, anche se sono facoltativi:

    Server applicazioni:
    - Host sistema autonomo: nome host del server applicazioni SAP
    - Servizio sistema autonomo: nome del servizio o numero di porta del server applicazioni SAP
    - Numero di sistema autonomo: numero di sistema del server SAP, compreso tra 00 e 99

    Group (Gruppo):
    - Host server MS: nome host del server messaggi SAP
    - Nome del servizio o numero di porta MS: nome del servizio o numero di porta del server messaggi SAP
    - ID sistema MS: ID di sistema del server SAP
    - Gruppo di accesso MS: gruppo di accesso del server SAP. Nel server SAP è possibile trovare o modificare il valore Gruppo di accesso aprendo la finestra di dialogo CCMS: Mantieni gruppi di accesso (T-Code SMLG). Per altre informazioni, vedere la Nota SAP 26317 - Configurare il gruppo ACCESSO per il bilanciamento automatico del carico.
    Tipizzazione sicura No Questa opzione è disponibile per la compatibilità con le versioni precedenti e controlla solo la lunghezza della stringa. Per impostazione predefinita, viene usata la tipizzazione forte per verificare la presenza di valori non validi eseguendo la convalida XML sullo schema. Questo comportamento consente di rilevare i problemi tempestivamente. Altre informazioni sull'impostazione Tipizzazione sicura.
    Usare SNC No Per creare una connessione SNC, vedere Abilitare Comunicazioni rete protetta (SNC).

    Per altri parametri di connessione disponibili facoltativi, vedere Informazioni di connessione predefinite.

    Dopo aver configurato e testato la connessione in App per la logica di Azure, viene visualizzata la casella con le informazioni sull'azione SAP. Per altre informazioni sui problemi di connessione che potrebbero verificarsi, vedere Risolvere i problemi relativi alle connessioni.

    Screenshot che mostra un flusso di lavoro A consumo con l'azione gestita SAP denominata Invia messaggio a SAP.

  4. Nell'azione Invia messaggio a SAP individuare e selezionare un'azione SAP disponibile nel server SAP per inviare l'IDoc.

    L'azione Invia messaggio a SAP è generica e può inviare un messaggio per BAPI, IDoc, RFC o tRFC, ma è prima necessario selezionare il tipo di messaggio e l'azione SAP da usare.

    1. Nella casella di modifica del parametro Azione SAP selezionare l'icona della cartella. Nell'elenco visualizzato, selezionare BAPI, IDOC, RFC o TRFC. In questo esempio viene selezionato IDOC. Se si seleziona un tipo differente, le azioni SAP disponibili cambiano in base alla selezione.

      Nota

      Se viene visualizzato un errore di Gateway non valido (500) o Richiesta non valida (400), vedere 500 Gateway non valido o 400 Errore richiesta non valida.

      Screenshot che mostra la selezione di IDOC per un flusso di lavoro A consumo.

    2. Esplorare le cartelle dei tipi di azione SAP usando le frecce per trovare e selezionare l'azione SAP che si desidera usare.

      In questo esempio viene selezionato ORDERS>ORDERS05>720>Invia.

      Screenshot che mostra la ricerca di un'azione Orders per un flusso di lavoro A consumo.

      Se non è possibile trovare l'azione desiderata, è possibile immettere manualmente un percorso, ad esempio:

      Screenshot che mostra l'immissione manuale del percorso di un tipo di azione Orders per un flusso di lavoro A consumo.

      Suggerimento

      Per il parametro Azione SAP, è possibile usare l'editor di espressioni per specificare il valore del parametro. In questo modo, è possibile usare la stessa azione SAP per differenti tipi di messaggio.

      Per altre informazioni sui messaggi IDoc, consultare Schemi di messaggi per operazioni IDoc.

    3. Nell'azione Invia messaggio a SAP includere l'output del corpo del trigger Richiesta.

      1. Nel parametro Messaggio di input selezionare all'interno della casella di modifica per aprire l'elenco dei contenuti dinamici.

      2. Nell'elenco dei contenuti dinamici, in Quando viene ricevuta una richiesta HTTP, selezionare Corpo. Il campo Corpo contiene l'output del corpo del trigger Richiesta.

        Nota

        Se il campo Corpo non viene visualizzato nell'elenco, accanto all'etichetta Quando viene ricevuta una richiesta HTTP, selezionare Visualizza altro.

      Screenshot che mostra la selezione dell'output del trigger di richiesta denominato Corpo per il flusso di lavoro A consumo.

      L'azione Invia messaggio a SAP include ora il contenuto del corpo del trigger Richiesta e invia tale output al server SAP, ad esempio:

      Screenshot che mostra l'azione SAP completata per il flusso di lavoro A consumo.

  5. Salvare il flusso di lavoro.

Inviare IDoc file flat al server SAP (solo connettore gestito)

Per inviare un IDoc usando uno schema file flat quando si usa il connettore gestito SAP, è possibile eseguire il wrapping dell'IDoc in una busta XML e seguire i passaggi generali per aggiungere un'azione SAP per inviare un IDoc, ma con le modifiche seguenti.

Nota

Se si usa il connettore predefinito SAP, assicurarsi di non eseguire il wrapping di un IDoc file flat in una busta XML.

Eseguire il wrapping di un IDoc con una busta XML

  1. Nell'azione SAP usata per inviare il messaggio usare l'URI seguente:

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. Formattare il messaggio di input con una busta XML.

L'esempio seguente mostra un payload XML di esempio:

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

Aggiungere un'azione di risposta

Configurare ora il flusso di lavoro per restituire i risultati dal server SAP al richiedente originale. Per eseguire questa attività, seguire questa procedura:

  1. Nella finestra di progettazione del flusso di lavoro, sotto l'azione SAP, selezionare Nuovo passaggio.

  2. Nella finestra di progettazione seguire questi passaggi generali per trovare e aggiungere l'azione predefinita Richiesta denominata Risposta.

  3. Nell'azione Risposta, per il parametro Corpo, selezionare all'interno della casella di modifica per aprire l'elenco dei contenuti dinamici.

  4. Nell'elenco dei contenuti dinamici, in Invia messaggio a SAP selezionare Corpo. Il campo Corpo contiene l'output del corpo dell'azione SAP.

    Screenshot che mostra la selezione dell'output dell'azione SAP denominata Corpo per il flusso di lavoro A consumo.

  5. Salvare il flusso di lavoro.

Creare un criterio di richiesta-risposta Remote Function Call (RFC)

Per i flussi di lavoro A consumo che usano il connettore gestito SAP, se è necessario ricevere risposte usando una Remote Function Call (RFC) ad App per la logica di Azure da ABAP SAP, è necessario implementare un criterio di richiesta e risposta. Per ricevere IDoc nel flusso di lavoro quando si usa il trigger Richiesta, assicurarsi che la prima azione del flusso di lavoro sia un'azione di risposta che usa il codice di stato 200 OK senza alcun contenuto. Questo passaggio consigliato completa immediatamente il trasferimento asincrono di Logical Unit of Work (LUW) SAP su tRFC, che lascia nuovamente disponibile la conversazione CPIC SAP. È quindi possibile aggiungere altre azioni al flusso di lavoro per l'elaborazione dell'IDoc ricevuto senza bloccare i trasferimenti successivi.

Nota

Il trigger SAP riceve IDoc su tRFC, che per impostazione predefinita non ha un parametro di risposta.

Per implementare un criterio di richiesta e risposta, è prima necessario individuare lo schema RFC usando il comando generate schema. Lo schema generato ha due possibili nodi radice:

  • Il nodo della richiesta, ovvero la chiamata ricevuta da SAP
  • Il nodo della risposta, che corrisponde alla risposta a SAP

Nell'esempio seguente il modulo RFC STFC_CONNECTION genera un criterio di richiesta e risposta. Il codice XML della richiesta viene analizzato per estrarre un valore del nodo in cui SAP richiede <ECHOTEXT>. La risposta inserisce il timestamp corrente come valore dinamico. Si riceve una risposta simile quando si invia un RFC STFC_CONNECTION da un flusso di lavoro dell'app per la logica a SAP.

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

Testare il flusso di lavoro

  1. Se la risorsa dell'app per la logica a consumo non è già abilitata, nel menu dell'app per la logica selezionare Informazioni generali. Nella barra degli strumenti selezionare Abilita.

  2. Per avviare manualmente il flusso di lavoro, selezionare Esegui>Esegui nella barra degli strumenti della finestra di progettazione.

  3. Per simulare un trigger di webhook e attivare il flusso di lavoro, inviare una richiesta HTTP all'URL dell'endpoint creato dal trigger Richiesta, incluso il metodo previsto dal trigger Richiesta usando lo strumento di richiesta HTTP e le relative istruzioni. Assicurarsi di includere nella richiesta il contenuto del messaggio.

    In questo esempio, il metodo POST e l'URL dell'endpoint inviano un file IDoc, che deve essere in formato XML e includere lo spazio dei nomi per l'azione SAP selezionata, ad esempio:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. Dopo aver inviato la richiesta HTTP, attendere la risposta dal flusso di lavoro.

È stato creato un flusso di lavoro che può inviare IDocs e comunicare con il server SAP. Ora che è stata configurata una connessione SAP per il flusso di lavoro, è possibile provare a sperimentare con BAPI e RFC.

Problemi di timeout del flusso di lavoro

Si verifica il timeout del flusso di lavoro in uno degli scenari seguenti:

  • Tutti i passaggi necessari per la risposta non terminano entro il limite di timeout della richiesta. Se si verifica questa condizione, le richieste potrebbero venire bloccate. Per diagnosticare i problemi, vedere le informazioni su come controllare e monitorare i flussi di lavoro delle app per la logica.

  • La modalità di elaborazione del sistema SAP è impostata sull'impostazione predefinita Trigger immediatamente , che fa sì che il sistema SAP blocchi la chiamata in ingresso per la trasmissione IDoc fino al termine dell'elaborazione di un IDoc.

    Se il sistema SAP è in fase di caricamento, ad esempio quando il flusso di lavoro invia un batch di IDocs contemporaneamente a SAP, il IDoc in coda chiama il timeout. La modalità di elaborazione predefinita fa sì che il sistema SAP blocchi la chiamata in ingresso per la trasmissione IDoc fino al termine dell'elaborazione di un IDoc. In App per la logica di Azure, per impostazione predefinita, le azioni del flusso di lavoro hanno un timeout di 2 minuti.

    Per risolvere questo problema, seguire la procedura descritta nella sezione Prerequisiti che modificano l'impostazione su Trigger by background program.

Tipizzazione sicura

Per impostazione predefinita, quando si crea una connessione per l'operazione gestita SAP, viene usata la tipizzazione forte per verificare la presenza di valori non validi eseguendo la convalida XML sullo schema. Questo comportamento consente di rilevare i problemi tempestivamente. L'opzione Tipizzazione sicura è disponibile per la compatibilità con le versioni precedenti e controlla solo la lunghezza della stringa. Se si sceglie Tipizzazione sicura, il tipo DATS e il tipo TIMS in SAP vengono considerati come stringhe anziché come i loro equivalenti XML, xs:date e xs:time, dove xmlns:xs="http://www.w3.org/2001/XMLSchema". La tipizzazione sicura influisce sul comportamento di tutta la generazione dello schema, sul messaggio di invio sia per il payload "inviato" che per la risposta "ricevuta" e sul trigger.

Quando viene usata la tipizzazione forte (la tipizzazione sicura non è abilitata), lo schema esegue il mapping dei tipi DATS e TIMS a tipi XML più semplici:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

Quando si inviano messaggi con tipizzazione forte, la risposta DATS e TIMS è conforme al formato del tipo XML corrispondente:

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

Quando la tipizzazione forte è abilitata, lo schema esegue il mapping dei tipi DATS e TIMS ai campi stringa XML solo con restrizioni di lunghezza, ad esempio:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Quando i messaggi vengono inviati con la tipizzazione forte abilitata, la risposta DATS e TIMS è simile all'esempio seguente:

<DATE>99991231</DATE>
<TIME>235959</TIME>

Scenari avanzati

Modificare le intestazioni della lingua per l'invio di dati a SAP

Quando ci si connette a SAP da App per la logica di Azure, l'inglese è la lingua predefinita usata dalla connessione SAP per l'invio di dati al server SAP. Tuttavia, il connettore gestito SAP e il connettore predefinito SAP gestiscono in modi differenti la modifica e il salvataggio della lingua usata.

  • Quando si crea una connessione con il connettore predefinito SAP, i parametri di connessione consentono di specificare e salvare il valore del parametro lingua come parte dei parametri di connessione SAP.

  • Quando si crea una connessione con il connettore gestito SAP, i parametri di connessione non hanno il parametro lingua. Pertanto, durante questo periodo, non è possibile specificare la lingua da usare per l'invio di dati al server SAP. Al contrario, sia in fase di progettazione del flusso di lavoro che in fase di esecuzione, il connettore usa la lingua locale del Web browser di ogni richiesta inviata al server. Ad esempio, se il browser è impostato su portoghese, App per la logica di Azure crea e testa la connessione SAP con il portoghese, ma non salva la connessione con tale lingua.

    Tuttavia, è possibile impostare la lingua per la connessione usando l'intestazione HTTP standard Accept-Language con le richieste in ingresso. La maggior parte dei Web browser aggiunge un'intestazione Accept-Language in base alle impostazioni locali. Il Web browser applica questa intestazione quando si crea una nuova connessione SAP nella finestra di progettazione del flusso di lavoro. È quindi possibile aggiornare le impostazioni del Web browser per usare la lingua preferita oppure creare la connessione SAP usando Azure Resource Manager anziché la finestra di progettazione flussi di lavoro.

    Ad esempio, è possibile inviare una richiesta con l'intestazione Accept-Language al flusso di lavoro dell'app per la logica usando il trigger Richiesta denominato Quando viene ricevuta una richiesta HTTP. Tutte le azioni del flusso di lavoro ricevono l'intestazione. SAP usa quindi le lingue specificate nei messaggi di sistema, ad esempio i messaggi di errore BAPI. Se non si passa un'intestazione Accept-Language in fase di esecuzione, per impostazione predefinita viene usato l'inglese.

    Se si usa l'intestazione Accept-Language, è possibile che venga visualizzato l'errore seguente: Controllare le informazioni sull'account e/o le autorizzazioni e riprovare. In questo caso, controllare invece i log di errore del componente SAP. L'errore si verifica effettivamente nel componente SAP che usa l'intestazione, quindi è possibile che venga visualizzato uno di questi messaggi di errore:

    • "SAP. Middleware.Connector.RfcLogonException: selezionare una delle lingue installate"

    • "SAP. Middleware.Connector.RfcAbapMessageException: selezionare una delle lingue installate"

Confermare la transazione separatamente e in modo esplicito

Quando si inviano transazioni a SAP da App per la logica di Azure, questo scambio avviene in due passaggi, come descritto nel documento SAP Programmi server RFC transazionali.

Per impostazione predefinita, l'azione del connettore gestito SAP denominata Invia messaggio a SAP gestisce entrambi i passaggi per trasferire la funzione e confermare la transazione in una singola chiamata. È possibile anche separare questi passaggi. La possibilità di separare i passaggi di trasferimento e conferma è utile per gli scenari in cui non si desidera duplicare le transazioni in SAP. Questi scenari includono errori che si verificano per via di cause come i problemi di rete.

È possibile inviare un IDoc senza confermare automaticamente la transazione usando l'azione del connettore gestito SAP denominata [IDOC] Invia documento a SAP. È quindi possibile confermare in modo esplicito la transazione usando l'azione del connettore gestito SAP denominata [IDOC - RFC] Conferma ID transazione. Quando il flusso di lavoro conferma separatamente la transazione in un passaggio differente, il sistema SAP completa la transazione una sola volta.

Nei flussi di lavoro Standard, il connettore predefinito SAP include anche azioni che gestiscono separatamente i passaggi di trasferimento e conferma, in particolare [IDoc] Invia il documento a SAP e [IDOC - RFC] Conferma ID transazione.

Il flusso di lavoro di esempio seguente illustra questo criterio:

  1. Creare e aprire un'app per la logica A consumo o Standard con un flusso di lavoro vuoto nella finestra di progettazione. Aggiungere il trigger Richiesta.

  2. Per evitare l'invio di IDoc duplicati a SAP, seguire questa procedura alternativa per creare e usare un ID transazione IDoc nelle azioni SAP.

  3. Aggiungere l'azione SAP denominata [IDOC] Invia documento a SAP al flusso di lavoro. Specificare le informazioni relative all'IDoc inviato al sistema SAP più i valori seguenti:

    Parametro valore Descrizione
    Conferma TID No Non confermare automaticamente l'ID transazione, che avviene in modo esplicito in un passaggio separato.
    GUID ID transazione <IDoc-transaction-ID> Se questo parametro non viene visualizzato automaticamente, aprire l'elenco Aggiungi nuovi parametri e selezionare il parametro.

    È possibile specificare manualmente questo valore, oppure il connettore può generare automaticamente questo GUID come output dall'azione [IDOC] Invia documento a SAP. In questo esempio viene lasciato vuoto questo parametro per generare automaticamente il GUID.

    Flusso di lavoro A consumo

    Screenshot che mostra il flusso di lavoro A consumo con l'azione denominata IDOC Invia documento a SAP.

    Flusso di lavoro Standard

    Screenshot che mostra il flusso di lavoro Standard con l'azione denominata IDOC Invia documento a SAP.

  4. Nell'azione SAP denominata [IDOC] Invia documento a SAP aprire Impostazioni per esaminare i criteri di ripetizione.

    L'opzione Predefinita è il criterio consigliato, ma è possibile selezionare un criterio personalizzato per le esigenze specifiche. Se si sceglie di usare un criterio personalizzato, configurare almeno un tentativo per superare le interruzioni temporanee della rete.

  5. Aggiungere ora l'azione SAP denominata [IDOC - RFC] Conferma ID transazione.

    1. Nel parametro ID transazione selezionare all'interno della casella di modifica per aprire l'elenco dei contenuti dinamici.

    2. Nell'elenco, in [IDOC] Invia documento a SAP, selezionare il valore ID transazione, ovvero l'output dell'azione SAP precedente.

      Flusso di lavoro A consumo

      Screenshot che mostra il flusso di lavoro A consumo con l'azione denominata Conferma ID transazione, che include l'output GUID dell'azione precedente.

      Flusso di lavoro Standard

      Screenshot che mostra il flusso di lavoro Standard con l'azione denominata Conferma ID transazione, che include l'output GUID dell'azione precedente.

    Dopo l'esecuzione di questo passaggio, la transazione corrente viene contrassegnata come completa su entrambi i lati, lato connettore SAP e lato sistema SAP.

Evitare l'invio di IDoc duplicati con una variabile ID transazione

Se si verifica un problema con il flusso di lavoro che invia IDoc duplicati a SAP, è possibile creare una variabile stringa che funge da identificatore della transazione IDoc. È quindi possibile usare questo identificatore per evitare trasmissioni di rete duplicate in condizioni quali interruzioni temporanee, problemi di rete o riconoscimenti persi.

  1. Nella finestra di progettazione, dopo aver aggiunto il trigger Richiesta e prima di aggiungere l'azione SAP denominata [IDOC] Invia documento a SAP, aggiungere al flusso di lavoro l'azione denominata Inizializza variabile.

  2. Rinominare l'azione in Crea ID transazione IDoc.

  3. Nella casella delle informazioni sull'azione specificare i valori dei parametri seguenti:

    Parametro valore Descrizione
    Nome <variable-name> Un nome per la variabile, ad esempio IDocTransactionID
    Type Stringa Il tipo di variabile
    valore guid() Selezionare all'interno della casella di modifica, aprire l'editor della funzione o dell'espressione e immettere guid(). Salva le modifiche.

    Il parametro Valore è ora impostato sulla funzione guid(), che genera un GUID.

    Flusso di lavoro A consumo

    Screenshot che mostra il flusso di lavoro A consumo con l'azione denominata Crea ID transazione.

    Flusso di lavoro Standard

    Screenshot che mostra il flusso di lavoro Standard con l'azione denominata Crea ID transazione.

    Nota

    I sistemi SAP per impostazione predefinita dimenticano un identificatore di transazione dopo un'ora specificata, o dopo 24 ore. Di conseguenza, SAP non riesce mai a confermare un identificatore di transazione se l'ID o il GUID è sconosciuto. Se la conferma di un identificatore di transazione ha esito negativo, questo errore indica che la comunicazione con il sistema SAP ha avuto esito negativo prima che SAP fosse in grado di confermare.

  4. Aggiungere l'azione SAP denominata [IDOC] Invia documento a SAP al flusso di lavoro. Specificare le informazioni relative all'IDoc inviato al sistema SAP più i valori seguenti:

    Parametro valore Descrizione
    Conferma TID No Non confermare automaticamente l'ID transazione, che avviene in modo esplicito in un passaggio separato.
    GUID ID transazione <IDoc-transaction-ID> Se questo parametro non viene visualizzato automaticamente, aprire l'elenco Aggiungi nuovi parametri e selezionare il parametro. Per selezionare la variabile ID transazione creata, seguire questa procedura:

    1. Nel parametro GUID ID transazione selezionare all'interno della casella di modifica per aprire l'elenco dei contenuti dinamici.

    2. Nell'elenco, in Variabili selezionare la variabile creata in precedenza, ovvero IDocTransactionID in questo esempio.

    Flusso di lavoro A consumo

    Screenshot che mostra il flusso di lavoro A consumo con l'azione denominata IDOC Invia documento a SAP.

    Flusso di lavoro Standard

    Screenshot che mostra il flusso di lavoro Standard con l'azione denominata IDOC Invia documento a SAP.

  5. Nell'azione gestita SAP denominata [IDOC] Invia documento a SAP aprire Impostazioni per esaminare i criteri di ripetizione.

    L'opzione Predefinita è il criterio consigliato, ma è possibile selezionare un criterio personalizzato per le esigenze specifiche. Se si sceglie di usare un criterio personalizzato, configurare almeno un tentativo per superare le interruzioni temporanee della rete.

    Nota

    Attualmente solo le azioni del connettore gestito hanno l'impostazione Criteri di ripetizione, non quelle dei connettori predefiniti basati sul provider di servizi.

  6. Aggiungere ora l'azione SAP denominata [IDOC - RFC] Conferma ID transazione.

    1. Nel parametro ID transazione selezionare all'interno della casella di modifica per aprire l'elenco dei contenuti dinamici.

    2. Nell'elenco, in Variabili immettere il nome della variabile creata, ovvero IDocTransactionID in questo esempio.

      Flusso di lavoro A consumo

      Screenshot che mostra il flusso di lavoro A consumo con l'azione denominata Conferma ID transazione con l'uso di una variabile.

      Flusso di lavoro Standard

      Screenshot che mostra il flusso di lavoro Standard con l'azione denominata Conferma ID transazione con l'uso di una variabile.

  7. Facoltativamente, convalidare la deduplicazione nell'ambiente di testing.

    1. Aggiungere un'altra azione SAP denominata [IDOC] Invia documento a SAP. Nel parametro ID transazione selezionare il GUID ID transazione usato nel passaggio precedente.

    2. Per convalidare il numero IDoc assegnato dopo ogni chiamata all'azione [IDOC] Invia documento a SAP, aggiungere al flusso di lavoro l'azione [IDOC] Ottieni elenco IDOC per la transazione con lo stesso ID transazione e la direzione Ricevere.

      Se viene restituito lo stesso numero IDoc per entrambe le chiamate, l'IDoc è stato deduplicato.

Se si invia due volte lo stesso IDoc, è possibile verificare che SAP possa identificare la duplicazione della chiamata tRFC e risolvere le due chiamate a un singolo messaggio IDoc in ingresso.

Risoluzione dei problemi

Problemi di connessione

Durante la creazione della connessione, se viene visualizzato l'errore seguente, è presente problema con l'installazione della libreria client NCo SAP:

Il test della connessione non è riuscito. Errore: "Non è stato possibile elaborare la richiesta. Dettagli dell'errore: "non è possibile caricare file o assembly "sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23" o una delle relative dipendenze. Il sistema non è in grado di trovare il file specificato."."

Assicurarsi di installare la versione richiesta della libreria client NCo SAP e soddisfare tutti gli altri prerequisiti.

500 Gateway non valido o errore 400 Richiesta non valida

Se viene visualizzato un errore 500 Gateway non valido o 400 Richiesta non valida con un messaggio simile a servizio "sapgw00" sconosciuto, la risoluzione del nome del servizio di rete sul numero di porta ha esito negativo, ad esempio:

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • Opzione 1: nella configurazione della connessione API e del trigger, sostituire il nome del servizio gateway con il relativo numero di porta. Nell'errore di esempio, sapgw00 deve essere sostituito da un numero di porta reale, ad esempio 3300.

  • Opzione 2: se si usa il gateway dati locale, è possibile aggiungere il nome del servizio gateway al mapping delle porte in %windir%\System32\drivers\etc\servicese riavviare il servizio gateway dati locale, ad esempio:

    sapgw00  3300/tcp
    

È possibile che venga visualizzato un errore simile quando il server applicazioni SAP o il nome del server messaggi viene risolto nell'indirizzo IP. Per il gateway dati locale, è invece possibile aggiungere il nome al mapping degli indirizzi IP in %windir%\System32\drivers\etc\hosts, ad esempio:

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

Errori durante l'invio di pacchetti IDoc da SAP al trigger

Se non è possibile inviare pacchetti IDoc da SAP al trigger, esaminare il messaggio di rifiuto della chiamata tRFC (Transactional RFC) nella finestra di dialogo tRFC (T-Code SM58) SAP. Nell'interfaccia SAP è possibile che vengano visualizzati i messaggi di errore seguenti, che vengono tagliati a causa dei limiti di substring nel campo Testo stato.

La definizione di segmento o gruppo E2EDK36001 non è stata trovata nel meta IDoc

Questo messaggio di errore indica che si verificano errori previsti con altri errori. Ad esempio, l'errore nel generare un payload XML IDoc perché i relativi segmenti non vengono rilasciati da SAP. Di conseguenza, mancano i metadati del tipo di segmento necessari per la conversione.

Per ottenere questi segmenti rilasciati da SAP, contattare il tecnico ABAP per il sistema SAP.

RequestContext nell'interfaccia IReplyChannel è stato chiuso senza l'invio di una risposta

Per il connettore gestito SAP, questo messaggio di errore indica errori imprevisti che si verificano quando il gestore catch-all del canale termina il canale a causa di un errore e ricompila il canale per elaborare altri messaggi.

Nota

Il trigger gestito da SAP è un trigger webhook che usa l'adapter SAP basato su SOAP. Tuttavia, il trigger predefinito SAP è un trigger basato su Funzioni di Azure che non usa un adapter SAP SOAP e non riceve questo messaggio di errore.

  • Per confermare che il flusso di lavoro ha ricevuto l'IDoc, aggiungere un'azione Risposta che restituisce un codice di stato 200 OK. Lasciare vuoto il corpo e non modificare o aggiungere alle intestazioni. L'IDoc viene trasportato tramite tRFC, che non consente un payload di risposta.

  • Per rifiutare invece IDoc, rispondere con qualsiasi codice di stato HTTP differente da 200 OK. L'adapter SAP restituisce quindi un'eccezione a SAP per conto dell'utente. È consigliabile rifiutare IDoc solo per segnalare gli errori di trasporto verso SAP, ad esempio un IDoc instradato in modo errato che l'applicazione non può elaborare. Non è consigliabile rifiutare un IDoc per gli errori a livello di applicazione, ad esempio problemi con i dati contenuti nell'IDoc. Se si ritarda l'accettazione del trasporto per la convalida a livello di applicazione, potrebbero verificarsi prestazioni negative a causa del blocco della connessione dal trasporto di altri IDoc.

  • Se viene visualizzato questo messaggio di errore e si verificano errori sistemici che chiamano App per la logica di Azure, verificare di aver configurato le impostazioni di rete per il servizio gateway dati locale per l'ambiente specifico. Ad esempio, se l'ambiente di rete richiede l'uso di un proxy per chiamare gli endpoint di Azure, è necessario configurare il servizio gateway dati locale per l'uso del proxy. Per altre informazioni, vedere Configurazione proxy.

  • Se viene visualizzato questo messaggio di errore e si verificano errori intermittenti che chiamano App per la logica di Azure, potrebbe essere necessario aumentare il numero di tentativi o ripetere l'intervallo tra tentativi seguendo questa procedura:

    1. Controllare le impostazioni SAP nel file di configurazione del servizio gateway dati locale denominato Microsoft.PowerBI.EnterpriseGateway.exe.config.

      1. Nel nodo radice configuration aggiungere un elemento configSections, se non esiste.

      2. Nel nodo configSections aggiungere un elemento section con gli attributi seguenti, se non esiste alcun elemento: name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        Importante

        Non modificare gli attributi negli elementi section esistenti, se tali elementi esistono già.

        L'elemento configSections è simile alla versione seguente, se nella configurazione del servizio gateway non sono dichiarate altre sezioni o gruppi di sezioni:

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. Nel nodo radice configuration aggiungere un elemento SapAdapterSection, se non esiste.

      4. Nel nodo SapAdapterSection aggiungere un elemento Broker con gli attributi seguenti, se non esiste alcun elemento: WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        Importante

        Modificare gli attributi dell'elemento Broker, anche se l'elemento esiste già.

        L'elemento SapAdapterSection è simile alla versione seguente, se non viene dichiarato alcun altro elemento o attributo nella configurazione dell'adapter SAP:

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        L'impostazione relativa al numero di tentativi è simile a WebhookRetryMaximumCount="2". L'impostazione relativa all'intervallo tra tentativi è simile a WebhookRetryDefaultDelay="00:00:00.10", dove il formato timespan è HH:mm:ss.ff.

      Nota

      Per altre informazioni sul file di configurazione, vedere Schema del file di configurazione per .NET Framework.

    2. Salva le modifiche.

    3. Se si usa il gateway dati locale, riavviare il gateway.

Passaggi successivi