Integration von Bestellungen und Bestelländerungen in Ihr ERP

Schrittweise Anweisungen zur Integration Ihrer Coupa-Bestellungen und Bestelländerungen in Ihr ERP.

Einleitung

Sie können dieses Dokument auch als Microsoft Word-Dokument herunterladen:Coupa Purchase Orders to ERP.docx

Allgemeine Überlegungen zur API-Konfiguration

Begrenzte Nutzlast - Felder und API-Filter

Coupas API gibt standardmäßig viele Daten zurück (z. B. vollständige Objekte für zugehörige Objekte). Die API-Rückgabenutzlasten können sehr groß und daher langsam sein. Dies kann ein Problem für Kunden sein, die keine fremden Daten 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 gesteuert wird. Dieser Artikel beschreibt die 3 verschiedenen Optionen zur Integration von Coupa-Bestellungen in Ihr ERP (für die Erstellung und 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-Bestellungen basierend auf dem Export-Kennzeichen in das ERP übertragen.

Im Falle eines Fehlers ist bei der Integration einer Bestellung eine manuelle Änderung für die Bestellung in der Coupa-Benutzeroberfläche erforderlich: Diese Änderung setzt das Export-Kennzeichen zurück und die Bestellung wird daher beim nächsten Lauf berücksichtigt

Tipp

Coupa empfiehlt, dass Sie sich an den Coupa-Support wenden, damit dieser diese Option aktiviert: Für jede Änderung diezuletzt exportierte Bestellung zurücksetzen um. Diese Einstellung gilt nur für die Benutzeroberfläche. Änderungen, die über die API vorgenommen werden, ändern nicht den Status Exportiert.

Dedizierte Integration und Kontakt für API erstellen

Für die Optionen 2 und 3 müssen Sie Folgendes erstellen:

  1. Eine spezielle Integration für jede API-Orchestrierung, die Sie implementieren
    integration-01.png
  2. Ein oder mehrere Integrationskontakte für jede Integration, die bei einer fehlgeschlagenen Integration gewarnt werden
    integration-02.png
Tipp

Coupa empfiehlt, dass Sie sich an den Coupa-Support wenden, damit dieser diese Option aktiviert: Link zum Integrationsverlaufnach Dokumenttypaktivieren. Diese Einstellung fügt einen Link auf der Konfigurationsseite 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 des Bestellkopfs hinzu. Wir haben ein benutzerdefiniertes Feld cf-integration-status mit dem NamenIntegration Statushinzugefügt. Verwenden Sie die Standard-Bestelldatentabelle, um den Integrationsstatus Ihrer Dokumente unter dieser URL nachzuverfolgen:https://<your instance hostname>/order_headers.

po-integration-01.png

Orchestrierungsdiagramm

po-orchistration.png

Schritte/API-Aufrufdetails

Schritt 1

Rufen Sie die Liste und die Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.
Zu den Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Der Abfrageparameter show_delete_lines kann erforderlich sein, um die Bestellaktualisierung im ERP zu behandeln

Methode

GET

API

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

Abfrageparameter

filter=<your API filter name>
offset=10
exported=false
show_deleted_lines=true*
status[in]=issued,canceled,closed

Beispiel-URL

https:///api/purchase_orders?filter=&offset=10&exported=false&show_removed_lines=true&status[in]=ausgestellt,storniert,geschlossen

Abfrage Textstichprobe

k. A.

Antworttyp

step-1.png

Hinweis

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

Schritt 2

Individuelle Bestellung als exportiert markieren

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe

k. A. *

Antworttyp


{
	"id": <Purchase Order id>,
	"exported": true
	}
Hinweis

* Für diesen Aufruf benötigen Sie keine Payload, wenn Sie "?exported=true" in die URL einschließen. Hier erfolgt die Erstellung/Aktualisierung der Bestellung im ERP.
 

Schritt 3

Benutzerdefinierte Felder für Berichterstellung aktualisieren

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe


{ "custom-fields": {
		"<your custom-field name>": "Success: The PO was properly replicated in your ERP"
}}

oder


{ "custom-fields": {
		"<your custom-field name>": "Error: The PO was properly replicated in your ERP"
}}

Antworttyp


{ "id": <Purchase Order id>,
		"exported": true,
		"custom-fields": {
				"<your custom-field name>": "Success: The PO was properly replicated in your ERP"
}}

oder


{ "id": <Purchase Order id>,
		"exported": true,
		"custom-fields": {
				"<your custom-field name>": "Error: The PO was properly replicated in your ERP"
}}

Option 2: Erweiterte Überwachung mit Integrationsverlauf

Beschreibung

In diesem Szenario gilt für jede Bestellung Folgendes:

  • Beheben Sie den vorherigen Integrationsverlaufsdatensatz für das Dokument
  • Integrationsverlaufsdatensatz erstellen
  • Erstellen Sie im Fehlerfall eine Warnung für den Integrationskontakt.

Jedes Dokument enthält Details zum Integrationsverlauf:

 po-history-01.png

po-history-02.png

Verwenden Sie die Datentabelle für den Integrationsverlauf der Standardbestellung, um den Integrationsstatus Ihrer Dokumente nachzuverfolgen. Sie finden es unter:https://<your instance hostname>/integration_history_records/purchase_orders.

po-int-records-01.png

Sie können einen Filter für den Antwortcode verwenden, um zwischen erfolgreich replizierten Dokumenten und fehlgeschlagenen Dokumenten zu unterscheiden.

po-int-records-02.png

Orchestrierungsdiagramm

po-int-orchistration.png

Schritte/API-Aufrufdetails

Schritt 1

Rufen Sie die Liste und die Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.
Zu den Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Der Abfrageparameter show_delete_lines kann erforderlich sein, um die Bestellaktualisierung im ERP zu behandeln

Methode

GET

API

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

Abfrageparameter

filter=<your API filter name>
offset=10
exported=false
show_deleted_lines=true
status[in]=buyer_hold,issued,canceled,closed,soft_closed

Beispiel-URL

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exported=false&show_deleted_lines=true&status[in]=buyer_hold,issued,canceled,closed,soft_closed

Abfrage Textstichprobe

k. A.

Antworttyp

step-2.png

 

Schritt 2

Individuelle Bestellung als exportiert markieren

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Purchase Order id>,
		"exported": true
}

Hier erfolgt die Erstellung/Aktualisierung der Bestellung im ERP.

Schritt 3a

Ungelösten Integrationsverlaufsdatensatz erhalten

Methode

GET

API

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

Abfrageparameter

resolved=false
document-type=OrderHeader
document-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 Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Purchase Order id>,
				"status": "Error",
				"resolved": false
		}
]

Schritt 3b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Purchase Order id>,
				"status": "Error",
				"resolved": true
		}
]

Schritt 4a

Integrationsverlauf erstellen (erfolgreich)

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Success",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Success-1234",
						"response-message": "The integration in the ERP went well"
				}
		]
}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Purchase Order id>,
		"status": "Success"
}

Schritt 4b

Integrationsverlauf erstellen (Fehler) und an Integrationskontakt warnen

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Line 1: Cost center CA234 is closed for ordering"
				},
				{
						"response-code": "Failure-date",
						"response-message": "Line 2: Delivery date cannot be in the past"
				}
		]
}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Purchase Order id>,
		"status": "Error"
}

Option 3: Nutzen Sie die vollständige Überwachung der Coupa-Integration

Beschreibung

In diesem Szenario erstellen wir einen Integrationslauf, der

  • Der Status der Integration (ausstehend/gestartet/fehlerhaft/erfolgreich/fehlgeschlagen)
  • Die Gesamtzahl der verarbeiteten Bestellungen
  • Anzahl von Erfolgen und Fehlern
  • Die Liste der Integrationsfehler und deren Status (behoben oder nicht)

Für jede Bestellung:

  • Beheben Sie den vorherigen Integrationsverlaufsdatensatz für das Dokument
  • Integrationsverlaufsdatensatz erstellen
  • Erstellen Sie im Fehlerfall einen Integrationsfehler und eine Warnung an den Integrationskontakt.

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

po-api-integration-01.png

Verwenden Sie die Standardtabelle für Bestellintegrationsfehlerdaten, um alle Bestellungen mit Integrationsfehler aufzulisten, deren Lösung aussteht. Sie befindet sich unter:.https://<your instance hostname>/integration_errors
po-integration-errors.png

Verwenden Sie die Datentabelle für den Standardintegrationsverlauf, um alle erfolgreich integrierten Bestellungen aufzulisten. Sie befindet sich unter:https://<your instance hostname>/integration_history_records/purchase_orders.

po-integration-records.png
Orchestrierungsdiagramm

orchestration-3.png

Schritte/API-Aufrufdetails

Schritt 1

Integrationslauf erstellen

Methode

POST

API

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

Abfrageparameter

k. A.

Abfrage Textstichprobe


{
		"integration": {
				"code": "{{integration_code}}"
		}}

Antworttyp


{
		"id": <Integration Run ID>,
		...
}

Schritt 2

Rufen Sie die Liste und die Details der Coupa-Bestellungen ab, die im ERP erstellt/aktualisiert werden sollen.
Zu den Auswahlkriterien gehören das Exportkennzeichen und der Bestellstatus.
Der Abfrageparameter show_delete_lines kann erforderlich sein, um die Bestellaktualisierung im ERP zu behandeln

Methode

GET

API

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

Abfrageparameter

filter=
offset=10
exported=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&exported=false&show_deleted_lines=true&status[in]=buyer_hold,issued,canceled,closed,soft_closed

Abfrage Textstichprobe

k. A.

Antworttyp

step-3.png

Schritt 3

Integrationslauf starten

Methode

PUT

API

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

Abfrageparameter

k. A.

Abfrage Textstichprobe


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

Antworttyp


{
		"id": <Integration Run ID>,
		...
}

Schritt 4

Individuelle Bestellung als exportiert markieren

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Purchase Order id>,
		"exported": true
}

Hier erfolgt die Erstellung/Aktualisierung der Bestellung im ERP.

Schritt 5a

Ungelösten Integrationsverlaufsdatensatz erhalten

Methode

GET

API

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

Abfrageparameter

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 Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Purchase Order id>,
				"status": "Error",
				"resolved": false
		}
]

Schritt 5b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Purchase Order id>,
				"status": "Error",
				"resolved": true
		}
]

Schritt 6a

Ungelösten Integrationsfehlerdatensatz abrufen

Methode

GET

API

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

Abfrageparameter

resolved=false
document-type=OrderHeader
document-id=<Purchase Order id>

Beispiel-URL

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

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration Error Record id>,
				"document-type": ”OrderHeader”,
				"document-id": <Purchase Order id>,
				"status": "Error",
		"resolved": false
		...
		}
]

Schritt 6b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_errors/<Old Integration Error Record id>/resolve

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration Error Record id>,
				"document-id": <Purchase Order id>,
				"status": "Error",
				"resolved": true
				...
		}
]

Schritt 7a

Integrationsverlauf erstellen (erfolgreich)
Sie muss auf den Integrationslauf verweisen

Methode

PUT

API

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

Abfrageparameter

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

Beispiel-URL

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

Abfrage Textstichprobe


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Success",
		"integration": {"code":"<Customer Integration id>"},
		"integration-run": {"id":<Integration Run ID>},
		"responses": [
				{
						"response-code": "Success-1234",
						"response-message": "The integration in the ERP went well"
				}
		]}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Purchase Order id>,
		"status": "Success"
}

Schritt 7b

Integrationsfehler erstellen und auf Integrationskontakt aufmerksam machen
Sie muss auf den Integrationslauf verweisen

Methode

PUT

API

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

Abfrageparameter

k. A.

Abfrage Textstichprobe


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration-run-id": "<Integration Run ID>",
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Line 1: Cost center CA234 is closed for ordering"
				},
				{
						"response-code": "Failure-date",
						"response-message": "Line 2: Delivery date cannot be in the past"
				}
		]
}

Antworttyp


{
		"id": <New Integration Error Record id>,
		"document-id": <Purchase Order id>,
		"status": "Error"
		 ...
}

Schritt 8

Integrationslauf erfolgreich beenden

Methode

PUT

API

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

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Integration Run ID>,
		"status": "successful"
		...
}

Wenn während der Integrationsausführung ein allgemeiner Fehler auftritt

Schritt x

Fehler für den Integrationslauf auslösen

Methode

PUT

API

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

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Integration Run ID>,
		"status": "failed"
		...
}

 

Parts or all of this page might have been machine-translated. We apologize for any inaccuracies.

Vergleichbare Artikel


Die Coupa Core-API

Unsere RESTful-API bietet robusten Zugriff zum Lesen, Bearbeiten oder Integrieren Ihrer Daten mit der Coupa-Plattform.

Erste Schritte mit der API

Allgemeine Informationen zur Verwendung der Coupa-API und wann Sie CSV verwenden sollten.

Übergang zu OAuth 2.0 und OIDC

Coupa veraltet ältere API-Schlüssel und erfordert die Verwendung von OAuth 2.0 / OIDC. Ab R34 werden keine neuen API-Schlüssel ausgegeben und API-Schlüssel werden mit R35 nicht mehr unterstützt.

Bauen Sie auf der Coupa-Plattform auf

Unsere API-basierte offene Integrationsplattform ermöglicht Technologiepartnern und unabhängigen Softwareanbietern (ISVs) die Integration ihrer Produkte in Coupa