Integration von PO's und PO-Änderungen in Ihr ERP

Schritt-für-Schritt-Anleitungen zur Integration Ihrer Coupa-Bestellungen und -Bestelländerungen in Ihr ERP.

Einleitung

Sie können dieses Dokument auch als Microsoft Word-Dokument herunterladen: Coupa-Bestellungen an ERP.docx

Allgemeine Überlegungen zur API-Einrichtung

Begrenzte Nutzlast - Felder & API-Filter

Die API von Coupa gibt standardmäßig viele Daten zurück (z. B. vollständige Objekte für zugehörige Objekte). Die API-Rückgabe-Nutzlasten können sehr groß und daher langsam sein. Dies kann ein Problem für Kunden sein, die die Fremddaten nicht benötigen, ganz zu schweigen vom unnötigen Ressourcenverbrauch.

Um die Dinge zu vereinfachen, hat Coupa das Konzept der „Felder“ -Parameter und API-Filter, die eine begrenzte JSON- oder XML-Antwort anstelle des gesamten Schemas und aller Zuordnungen für ein Objekt zurückgeben.

In diesem Artikel beschriebene Anwendungsfälle

In diesem Dokument wird davon ausgegangen, dass die Bestellnummer im ERP von der Coupa-Bestellnummer bestimmt wird. Dieser Artikel beschreibt die 3 verschiedenen Optionen zur Integration von Coupa-Bestellungen in Ihr ERP(sowohl für die Erstellung als auch für die Aktualisierung). 

Diese Optionen ändern die Art und Weise, wie Sie Ihre Integrationen von Coupa aus überwachen können:

Für die 3 Optionen werden die Coupa-POs basierend auf dem Export-Flag in das ERP gepusht.

Im Fehlerfall ist bei der Integration einer Bestellung eine manuelle Änderung der Bestellung in der Coupa-UI erforderlich: Diese Änderung setzt das Export-Flag zurück und die Bestellung wird daher im nächsten Durchlauf berücksichtigt

Tipp

Coupa schlägt vor, dass Sie sich an den Coupa-Support wenden, um diese Option zu aktivieren: Für jede Änderung Bestellung zuletzt exportiert um zurücksetzen. Diese Einstellung gilt nur für die Benutzeroberfläche. Änderungen, die mit API vorgenommen werden, ändern den Exportstatus nicht.

Dedizierte Integration und Kontakt für API erstellen

Für Option 2 & 3 müssen Sie Folgendes erstellen:

  1. Eine dedizierte Integration für jede API-Orchestrierung, die Sie implementieren
    integration-01.png
  2. Ein oder mehrere Integrationskontakt (e) für jede Integration, der/die bei fehlgeschlagener Integration benachrichtigt wird/werden
    integration-02.png
Tipp

Coupa schlägt vor, dass Sie sich an den Coupa-Support wenden, um diese Option zu aktivieren: Link zu Integrationsverlauf nach Dokumenttyp aktivieren. Diese Einstellung fügt einen Link auf der Einrichtungsseite hinzu, um den vollständigen Integrationsverlauf pro Dokumenttyp anzuzeigen

Option 1: Einfache Überwachung basierend auf benutzerdefinierten Feldern

Beschreibung

In diesem Szenario fügen wir für jede Bestellung den aktuellen Integrationsstatus in ein oder mehrere benutzerdefinierte Felder für den Bestellkopf ein. Wir haben ein benutzerdefiniertes Feld cf-integration-status mit dem Namen Integrationsstatus hinzugefügt. Verwenden Sie die Standard-Bestelldatentabelle, um den Integrationsstatus Ihrer Dokumente unter dieser URL zu verfolgen: https://<your instance hostname>/order_headers.

po-integration-01.png

Orchestrierungsdiagramm

po-orchistration.png

Details zu Schritten / API-Aufrufen

Schritt 1

Rufen Sie die Liste und Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.Zu den
Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Abfrageparameter show_deleted_lines kann notwendig sein, um das PO-Update im ERP abzuwickeln

Methode

ABFRAGEN

API

https://<your instance hostname>/api/purchase_orders/

Query-Parameter

filter=<your API filter name>
offset=10
exportiert=false
show_deleted_lines=true*
status[in]=ausgestellt,storniert,geschlossen

Beispiel-URL

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exportiert=false&show_deleted_lines=true&status[in]=ausgestellt,storniert,geschlossen

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe

step-1.png

Hinweis

* = show_deleted_lines=true ist für Bestelländerungen

Schritt 2

Einzelbestellung als exportiert markieren

Methode

PUT

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Query-Parameter

exportiert=true
fields=["id","exportiert"]

Beispiel-URL

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>?exported=true&fields=["id","exportiert"]

Abfrage Hauptteilmuster

N/A *

Antwort Körperprobe



{

	"id":<Purchase Order id>,

	"exportiert": wahr

	}
Hinweis

* Für diesen Aufruf benötigen Sie keine Nutzdaten, wenn Sie "?exported=true" in die URL aufnehmen. Dort erfolgt die Erstellung/Aktualisierung der PO im ERP.
 

Schritt 3

Aktualisieren Sie benutzerdefinierte Felder für die Berichterstellung

Methode

PUT

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Query-Parameter

fields=["id","exportiert",{ "custom_fields": {} }]

Beispiel-URL

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>?fields=["id","exportiert",{ "custom_fields": {} }]

Abfrage Hauptteilmuster



{ "custom-fields": {

		"<your custom-field name>": "Erfolg: Die Bestellung wurde ordnungsgemäß in Ihrem ERP-System repliziert "

}}

oder



{ "custom-fields": {

		"<your custom-field name>": "Fehler: Die Bestellung wurde ordnungsgemäß in Ihrem ERP-System repliziert "

}}

Antwort Körperprobe



{ "id":<Purchase Order id>,

		"exported": wahr,

		"custom-fields": {

				"<your custom-field name>": "Erfolg: Die Bestellung wurde ordnungsgemäß in Ihrem ERP-System repliziert "

}}

oder



{ "id":<Purchase Order id>,

		"exported": wahr,

		"custom-fields": {

				"<your custom-field name>": "Fehler: Die Bestellung wurde ordnungsgemäß in Ihrem ERP-System repliziert "

}}

Alternative 2: Erweiterte Überwachung mit Integrationsverlauf

Beschreibung

In diesem Szenario müssen wir für jede Bestellung:

  • Den vorherigen Integrationsverlaufsdatensatz für das Dokument auflösen
  • Einen Integrationsverlaufsdatensatz erstellen
  • Eine Warnung an den Integrationskontakt im Fehlerfall erstellen

Jedes Dokument enthält die Details des Integrationsverlaufs:

 po-history-01.png

po-history-02.png

Verwenden Sie die Standard-PO-Integrationsverlaufsdatentabelle, um den Integrationsstatus Ihrer Dokumente zu verfolgen. Sie finden es unter: https://<your instance hostname>/integration_history_records/purchase_orders.

po-int-records-01.png

Sie können einen Filter nach Antwortcode verwenden, um zwischen erfolgreich replizierten und fehlgeschlagenen Dokumenten zu unterscheiden.

po-int-records-02.png

Orchestrierungsdiagramm

po-int-orchistration.png

Details zu Schritten / API-Aufrufen

Schritt 1

Rufen Sie die Liste und Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.Zu den
Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Abfrageparameter show_deleted_lines kann notwendig sein, um das PO-Update im ERP abzuwickeln

Methode

ABFRAGEN

API

https://<your instance hostname>/api/purchase_orders/

Query-Parameter

filter=<your API filter name>
offset=10
exportiert=false
show_deleted_lines=true
status[in]=buyer_hold,ausgestellt,storniert,geschlossen,soft_closed

Beispiel-URL

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exportiert=false&show_deleted_lines=true&status[in]=buyer_hold,ausgestellt,storniert,geschlossen,soft_closed

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe

step-2.png

 

Schritt 2

Einzelbestellung als exportiert markieren

Methode

PUT

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Query-Parameter

exportiert=true
fields=["id","exportiert"]

Beispiel-URL

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>?exported=true&fields=["id","exportiert"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



{

		"id":<Purchase Order id>,

		"exportiert": wahr

}

Hier erfolgt die Erstellung/Aktualisierung der PO im ERP.

Schritt 3a

Ungelösten Integrationsverlaufsdatensatz abrufen

Methode

ABFRAGEN

API

https://<your instance hostname>/api/integration_history_records

Query-Parameter

resolved=false
document-type=OrderHeader
document-id=<Purchase Order id>
fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?resolved=false&document-type=OrderHeader&document-id=<Purchase Order id>&fields=["id","document-id","status","resolved"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration History Record id>,

				"document-id":<Purchase Order id>,

				"Status": "Fehler",

				"Resolved": false

		}

]

Schritt 3b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/lösen

Query-Parameter

fields=["id","document-id","status","aufgelöst"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve?fields=["id","document-id","status","aufgelöst"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration History Record id>,

				"document-id":<Purchase Order id>,

				"Status": "Fehler",

				"Resolved": wahr

		}

]

Schritt 4a

Integrationsverlauf erstellen (erfolgreich)

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records

Query-Parameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?fields=["id","document-id","status"]

Abfrage Hauptteilmuster



{

		"document-type": "OrderHeader",

		"document-id":<Purchase Order id>,

		"document-status":"<Purchase Order status>",

		"contact-alert-type": "Funktional",

		"status": "Erfolgreich",

		"integration": {"code":"<Customer Integration id>"},

		"responses": [

				{

						"response-code": "Erfolg-1234",

						"response-message": „Die Integration in das ERP ist gut gelaufen“

				}

		]

}

Antwort Körperprobe



{

		"id":<New Integration History Record id>,

		"document-id":<Purchase Order id>,

		"Status": "Erfolg"

}

Schritt 4b

Integrationsverlauf erstellen (Fehler) und Benachrichtigung an den Integrationskontakt

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/create_alert

Query-Parameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/create_alert?fields=["id","document-id","status"]

Abfrage Hauptteilmuster



{

		"document-type": "OrderHeader",

		"document-id":<Purchase Order id>,

		"document-status":"<Purchase Order status>",

		"contact-alert-type": "Funktional",

		"Status": "Fehler",

		"integration": {"code":"<Customer Integration id>"},

		"responses": [

				{

						"response-code": "Fehler-CC",

						"response-message": "Strasse 1: Die Kostenstelle CA234 ist für die Bestellung geschlossen "

				},

				{

						"response-code": "Fehlerdatum",

						"response-message": "Zeile 2: Lieferdatum darf nicht in der Vergangenheit liegen"

				}

		]

}

Antwort Körperprobe



{

		"id":<New Integration History Record id>,

		"document-id":<Purchase Order id>,

		"Status": „Fehler“

}

Option 3: Vollständige Coupa-Integrationsüberwachung nutzen

Beschreibung

In diesem Szenario erstellen wir einen Integrationslauf, der

  • Ausschreibungsstatus (ausstehend/gestartet/fehlerhaft/erfolgreich/fehlgeschlagen)
  • Die totale Anzahl von bearbeiteten Bestellungen
  • Die Anzahl von Erfolgen und Fehlern
  • Die Liste von Integrationsfehlern und deren Status (behoben oder nicht)

Für jede Bestellung:

  • Den vorherigen Integrationsverlaufsdatensatz für das Dokument auflösen
  • Einen Integrationsverlaufsdatensatz erstellen
  • Erstellen Sie im Fehlerfall einen Integrationsfehler und eine Warnung an den Integrationskontakt

Sie können alle Integrationsausführungen für Ihre Integration überwachen unter: https://<your instance hostname>/integrations/<your integration id>/integration_runs.

po-api-integration-01.png

Verwenden Sie die Standard-PO-Integrationsfehlertabelle, um alle Bestellungen mit ausstehender Lösung für Integrationsfehler aufzulisten. Es befindet sich unter: https://<your instance hostname>/integration_errors.
po-integration-errors.png

Verwenden Sie die Standard-PO-Integrationsverlaufsdatentabelle, um alle erfolgreich integrierten Bestellungen aufzulisten. Es befindet sich unter: https://<your instance hostname>/integration_history_records/purchase_orders.

po-integration-records.png
Orchestrierungsdiagramm

orchestration-3.png

Details zu Schritten / API-Aufrufen

Schritt 1

Integrationsausführung erstellen

Methode

BEITRAG

API

https://<your instance hostname>/api/integration_runs

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster



{

		"integration": {

				"code": "{{integration_code}}"

		}}

Antwort Körperprobe



{

		"id":<Integration Run ID>,

		...

}

Schritt 2

Rufen Sie die Liste und Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.Zu den
Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Abfrageparameter show_deleted_lines kann notwendig sein, um das PO-Update im ERP abzuwickeln

Methode

ABFRAGEN

API

https://<your instance hostname>/api/purchase_orders/

Query-Parameter

filter=<your API filter name>
offset=10
exportiert=false
show_deleted_lines=true
status[in]=buyer_hold,ausgestellt,storniert,geschlossen,soft_closed

Beispiel-URL

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exportiert=false&show_deleted_lines=true&status[in]=buyer_hold,ausgestellt,storniert,geschlossen,soft_closed

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe

step-3.png

Schritt 3

Integrationsausführung starten

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/ausführen

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster



{

		"total_records": <Total Number of POs from Step 2>

}

Antwort Körperprobe



{

		"id":<Integration Run ID>,

		...

}

Schritt 4

Einzelbestellung als exportiert markieren

Methode

PUT

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Query-Parameter

exportiert=true
fields=["id","exportiert"]

Beispiel-URL

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>?exported=true&fields=["id","exportiert"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



{

		"id":<Purchase Order id>,

		"exportiert": wahr

}

Hier erfolgt die Erstellung/Aktualisierung der PO im ERP.

Schritt 5a

Ungelösten Integrationsverlaufsdatensatz abrufen

Methode

ABFRAGEN

API

https://<your instance hostname>/api/integration_history_records

Query-Parameter

resolved=false
document-type=OrderHeader
document-id=<Purchase Order id>
fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?resolved=false&document-type=OrderHeader&document-id=<Purchase Order id>&fields=["id","document-id","status","resolved"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration History Record id>,

				"document-id":<Purchase Order id>,

				"Status": "Fehler",

				"Resolved": false

		}

]

Schritt 5b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/lösen

Query-Parameter

fields=["id","document-id","status","aufgelöst"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve?fields=["id","document-id","status","aufgelöst"]

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration History Record id>,

				"document-id":<Purchase Order id>,

				"Status": "Fehler",

				"Resolved": wahr

		}

]

Schritt 6a

Ungelösten Integrationsfehlerdatensatz abrufen

Methode

ABFRAGEN

API

https://<your instance hostname>/api/integration_errors

Query-Parameter

gelöst=
falscher Dokumententyp =
OrderHeader-Dokument-ID=<Purchase Order id>

Beispiel-URL

https://<your instance hostname>/api/integration_errors?resolved=false&document-type=OrderHeader&document-id=<Purchase Order id>

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration Error Record id>,

				"document-type": "OrderHeader",

				"document-id":<Purchase Order id>,

				"Status": "Fehler",

		"Resolved": false

		...

		}

]

Schritt 6b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_errors/<Old Integration Error Record id>/lösen

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



[

		{

				"id":<Old Integration Error Record id>,

				"document-id":<Purchase Order id>,

				"status": "Fehler",

				"Resolved": wahr

				...

		}

]

Schritt 7a

Integrationsverlauf erstellen (Erfolg)
Er muss auf den Integrationslauf verweisen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records

Query-Parameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?fields=["id","document-id","status"]

Abfrage Hauptteilmuster



{

		"document-type": "OrderHeader",

		"document-id":<Purchase Order id>,

		"document-status":"<Purchase Order status>",

		"contact-alert-type": "Funktional",

		"status": "Erfolgreich",

		"integration": {"code":"<Customer Integration id>"},

		"integration-run": {"id":<Integration Run ID>},

		"responses": [

				{

						"response-code": "Erfolg-1234",

						"response-message": „Die Integration in das ERP ist gut gelaufen“

				}

		]}

Antwort Körperprobe



{

		"id":<New Integration History Record id>,

		"document-id":<Purchase Order id>,

		"Status": "Erfolg"

}

Schritt 7b

Integrationsfehler erstellen und Benachrichtigung an den Integrationskontakt
Es muss auf den Integrationslauf verwiesen werden

Methode

PUT

API

https://<your instance hostname>/api/integration_errors/create_alert

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster



{

		"document-type": "OrderHeader",

		"document-id":<Purchase Order id>,

		"document-status":"<Purchase Order status>",

		"contact-alert-type": "Funktional",

		"status": "Fehler",

		"integration-run-id": "<Integration Run ID>",

		"responses": [

				{

						"response-code": "Fehler-CC",

						"response-message": "Strasse 1: Die Kostenstelle CA234 ist für die Bestellung geschlossen "

				},

				{

						"response-code": "Fehlerdatum",

						"response-message": "Zeile 2: Lieferdatum darf nicht in der Vergangenheit liegen"

				}

		]

}

Antwort Körperprobe



{

		"id":<New Integration Error Record id>,

		"document-id":<Purchase Order id>,

		"Status": „Fehler“

		 ...

}

Schritt 8

Integrationsausführung erfolgreich beendet

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/success

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



{

		"id":<Integration Run ID>,

		"status": "erfolgreich"

		...

}

Wenn während des Integrationslaufs ein allgemeiner Fehler auftritt

Schritt x

Raise Failure für den Integrationslauf

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/fehlgeschlagen

Query-Parameter

Nicht zutreffend

Abfrage Hauptteilmuster

Nicht zutreffend

Antwort Körperprobe



{

		"id":<Integration Run ID>,

		"status": "fehlgeschlagen"

		...

}

 

  • Inhalt