In diesem Kapitel werden die zur Verfügung stehenden Endpunkte des Connect Solution Manager Addons beschrieben. Die Basis-URL der Endpunkte setzt sich aus dem verwendeten Protokoll (http oder https), dem Hostnamen, des Ports und des Service wie folgt zusammen:
http(s)://<sap_hostname>:<sap_port>/gal/solman/api/rest/1/
Informationen zu den Hostnamen und Ports Ihres Solution Managers können Sie über die Transaktion SICF einsehen, indem im Menü „Springen“ der Eintrag „Port Information“ ausgewählt wird.
Die Endpunkte können auch über die Connect Applikation durchgereicht werden. Die effektiven Endpunkte würden dann im Wesentlichen wie folgt aussehen:
http(s)://<connect_hostname>:<connect_port>/repositories/<repository_name>/connections/<connection_name>/events/<event_name>.
Pfad- und Query-Parameter werden beim Aufruf von Webservices über die Connect Applikation als Query-Parameter übergeben. Die Query-Parameter müssen grundsätzlich im Camel Case Format übergeben werden. Existiert bei einem SAP-Endpunkt beispielsweise der Pfad-Parameter „object_id“, muss dieser über die Connect Applikation als Query-Parameter „objectId“ übergeben werden.
Endpunkt „Data“
Mithilfe des Endpunkts „Data“ können Change Objekte gelesen, aktualisiert, angelegt und Statusübergänge ausgeführt werden.
GET /data/objects/{object_id}
Der Endpunkt GET /data/objects/{object_id} liefert Informationen zu einem Change Objekt mithilfe der Objekt ID. Mit Objekt ID ist die zehnstellige Nummer des Objekts gemeint, z. B. die Änderungsantrags-ID oder die Dokument-ID eines Änderungsdokuments. Der Endpunkt liefert die folgenden Informationen in tabellarischer Form.
Name | Typ | Beschreibung |
changedAt | Wert | Datum der letzten Änderung |
changedBy | Wert | Letzter Änderer |
configurationItem | Objekt | Konfigurationselement- und Beschreibung |
createdAt | Wert | Erstellungsdatum |
createdBy | Wert | Anleger |
customFields | Objekt | Alle Werte der definierten kundeneigenen Felder |
cycleInfo | Objekt | Daten zum zugeordneten Änderungszyklus |
description | Wert | Kurzbeschreibung |
dueDate | Wert | Fälligkeitsdatum |
dueTimestamp | Wert | Fälligkeitsdatum als UTC-Zeitstempel |
endDate | Wert | Datum des gewünschten Endes |
endTimestamp | Wert | Das gewünschte Ende als UTC-Zeitstempel |
externalId | Wert | Enthält den Wert der Externen ID bei einer 1:1 Zuordnung. |
externalIds | Array | Enthält alle zugeordneten Externen IDs |
externalIdsCount | Wert | Anzahl der zugeordneten Externen IDs |
impact | Wert | Der Wert enthält die Auswirkung des Objekts. |
impactText | Wert | Anzeigetext für die Auswirkung. |
longtext | Wert | Enthält die Beschreibung des Objekts. Da Objekte aus dem Change-Request-Management mehrere Texte enthalten können, enthält dieses Feld den Text, der als Default im Customizing des Addons für die zugehörige Vorgangsart hinterlegt wurde. |
objectGuid | Wert | Global eindeutige ID für das Objekt |
objectId | Wert | Objekt ID des Objekts |
parentDescription | Wert | Kurzbeschreibung des übergeordneten Objekts, falls eine Verknüpfung existiert. |
parentObjectGuid | Wert | Global eindeutige ID für das übergeordnete Objekt, sofern existent. |
parentObjectId | Wert | Objekt ID des übergeordneten Objekts, sofern existent. |
parentProcessType | Wert | Dokumentart des übergeordneten Objekts, sofern existent. |
partner | Array | Liste mit Informationen der zugeordneten Informationen inklusive der Nummer des Business Partners, die Funktion des Partners, der Name des Business Partners und dessen E-Mail-Adresse. |
priority | Wert | Priorität des Objekts. |
priorityText | Wert | Anzeigetext der ausgewählten Priorität. |
processType | Wert | Die zugehörige Vorgangsart des Objekts. |
requests | Array | Liste aller zugeordneten Transportaufträge mit vielen Detailinformationen. |
requestsAsString | Wert | Die Transportauftragsnummern als einzelne Zeichenkette getrennt durch Zeilenumbrüche. |
standardFields | Array | Eine Liste von Standard-Feldern, die mit kundenspezifischen Werten gefüllt sind. Welche Felder verwendet werden, kann über die Addon-Konfiguration festgelegt werden. |
startDate | Wert | Datum des gewünschten Starts. |
startTimestamp | Wert | Datum des gewünschten Starts als UTC-Zeitstempel. |
texts | Array | Liste aller Objekt-Texte. |
urgency | Wert | Dringlichkeit |
urgencyText | Wert | Anzeigetext der ausgewählten Dringlichkeit. |
userStatus | Wert | Aktueller Status |
userStatusProc | Wert | Verwendetes Statusschema. |
userStatusText | Wert | Anzeigetext des aktuellen Status. |
userStatusFinal | Wert | Kennzeichen („X“ = True, „“ = False), ob der aktuelle Status nicht mehr geändert werden kann. |
Beispiel-Response für einen Änderungsantrag:
{ "changedAt": "2021-02-18", "changedBy": "GALILEO", "configurationItem": { "productId": "7100000111", "textIbComp": "G00 0020168246 300" }, "createdAt": "2021-01-29", "createdBy": "GALILEO", "customFields": [ { "name": "CLIENT", "value": "100" }, { "name": "CUSTOMER_EXT", "value": "" }, { "name": "CUSTOMER_H_DUMMY", "value": "" }, { "name": "CUSTOMER_INT", "value": "" }, { "name": "GUID", "value": "00155DF935011EDB98C13B600E6760E0" }, { "name": "MODE", "value": "" }, { "name": "REF_GUID", "value": "00155DF935011EDB98C13B600E6760E0" }, { "name": "ZZEXTERNAL_ID", "value": "" }, { "name": "ZZEXTERNAL_REF", "value": "" }, { "name": "ZZGXP_RISK", "value": "" }, { "name": "ZZJIRA_ID", "value": "BIIMPL01-999" }, { "name": "ZZJIRA_URL", "value": "" } ], "cycleInfo": { "projectTitle": "Phase Cylce (IF_CONIGMA)", "releaseType": "I", "releaseTypeDescription": "Phase Cycle", "releaseCrmId": "8000000211", "tasklistId": "", "smiProject": "0000000021", "slanDesc": "G00 - Solution Manager", "sbraName": "Wartung", "goLiveDate": "2017-10-02", "goLiveTime": "00:00:00", "devStartDate": "2017-08-22", "devStartTime": "00:00:00", "devCloseDate": "2017-08-31", "devCloseTime": "00:00:00" }, "description": "Description", "dueDate": "2021-02-12", "dueTimestamp": "2021-02-12T08:13:33Z", "endDate": "2021-09-21", "endTimestamp": "2021-09-20T22:00:00Z", "externalId": "BIIMPL01-12", "externalIds": ["BIIMPL01-12"], "externalIdsCount": 1, "impact": "00", "impactText": "", "longtext": "This is the long text.", "objectGuid": "00155DF935011EDB98C13B600E6760E0", "objectId": "8000001760", "parentDescription": "", "parentObjectGuid": "00000000000000000000000000000000", "parentObjectId": "", "parentProcessType": "", "partner": [ { "partnerGuid": "00155DF935011EDB98C13B600E7220E0", "partnerNumber": "151", "partnerFct": "00000001", "partnerFctTxt": "Sold-To Party", "partnerMain": "X", "partnerName": "Mr. XXX", "partnerEmail": "XXX@XXX.de", "partnerLookup": "", "deletionFlag": "" }, { "partnerGuid": "00155DF935011EDB98C141D658A540E0", "partnerNumber": "151", "partnerFct": "SDCD0004", "partnerFctTxt": "Current Processor", "partnerMain": "X", "partnerName": "Mr. XXX", "partnerEmail": "XXX@XXX.de", "partnerLookup": "", "deletionFlag": "" }, { "partnerGuid": "00155DF935011EDB98C13B600E7140E0", "partnerNumber": "102", "partnerFct": "SDCR0001", "partnerFctTxt": "Requester", "partnerMain": "X", "partnerName": "Mr. YYY", "partnerEmail": "", "partnerLookup": "", "deletionFlag": "" }, { "partnerGuid": "00155DF935011EDB98C13B600E7260E0", "partnerNumber": "151", "partnerFct": "SDCR0002", "partnerFctTxt": "Change Manager", "partnerMain": "X", "partnerName": "Mr. XXX", "partnerEmail": "XXX@XXX.de", "partnerLookup": "", "deletionFlag": "" } ], "postingDate": "2021-01-29", "priority": "3", "priorityText": "3: Medium", "processType": "ZMCR", "requests": [], "requestsAsString": "", "standardFields": [ { "name": "/AICRM/EXT_TOKEN", "value": "TestValue" } ], "startDate": "2021-01-29", "startTimestamp": "2021-01-29T08:13:32Z", "texts": [ { "textId": "CR01", "text": "This is the long text." }, { "textId": "ZZ01", "text": "This is a technical problem description." }, { "textId": "ZZ02", "text": "This is an impact analysis." } ], "urgency": "00", "urgencyText": "", "userStatus": "E0015", "userStatusFinal": "", "userStatusProc": "ZMCRHEAD", "userStatusText": "Being Implemented" }
Beispiel-Response für den Knoten “requests”:
"requests": [ { "tasklist": "I000000011", "trorderNumber": "G00K900630", "text": "", "ctsId": "G00_P00005", "transportTrack": "TR000005", "sysName": "G00", "sysType": "ABAP", "sysClient": "100", "respUser": "DUMMY", "createdDate": "2021-01-28", "createdTime": "09:04:34", "releasedDate": null, "releasedTime": "00:00:00", "status": "@07@", "trfunction": "K", "originator": "S", "originatorId": "00155DF935011EDB98A7322BD3F5C0E0", "originatorKey": "8000001744", "trorderCopy": "", "projectName": "", "criticalObject": false, "abortExport": false, "csolConflict": false, "csolActivated": false, "tocNumber": "", "trfunctionText": "", "codeInspectChk": false, "tranpTargetChange": false, "openTask": false, "emptyRequest": false, "taskNumber": "", "statusText": "", "retrofitStatus": "", "collectionId": "" }, { "tasklist": "I000000011", "trorderNumber": "G00K900632", "text": "", "ctsId": "G00_P00005", "transportTrack": "TR000005", "sysName": "G00", "sysType": "ABAP", "sysClient": "100", "respUser": "DUMMY", "createdDate": "2021-01-28", "createdTime": "09:04:36", "releasedDate": null, "releasedTime": "00:00:00", "status": "@07@", "trfunction": "W", "originator": "S", "originatorId": "00155DF935011EDB98A7322BD3F5C0E0", "originatorKey": "8000001744", "trorderCopy": "", "projectName": "", "criticalObject": false, "abortExport": false, "csolConflict": false, "csolActivated": false, "tocNumber": "", "trfunctionText": "", "codeInspectChk": false, "tranpTargetChange": false, "openTask": false, "emptyRequest": false, "taskNumber": "", "statusText": "", "retrofitStatus": "", "collectionId": "" } ]
GET /data/external_ids/{external_id}
Der Endpunkt GET /data/external_ids/{external_id} liefert dieselben Informationen wie der Endpunkt GET /data/objects/{object_id} nur mit dem Unterschied, dass das Objekt anhand der verknüpften Externen ID ermittelt wird.
GET /data/objects/{object_id}/children
Dieser Endpunkt liefert anhand einer Objekt ID alle zugeordneten verknüpften Objekte, z. B. wenn die Objekt ID einer Änderungsantrag-ID entspricht, liefert der Endpunkt Informationen zu den verknüpften Änderungsdokumenten.
Der Endpunkt liefert folgende Informationen in tabellarischer Form.
Name | Typ | Beschreibung |
parentGuid | Wert | Global eindeutige ID des Objekts, dessen verknüpfte Dokumente mithilfe der Objekt ID angefordert wurden. |
parentObjectId | Wert | Objekt ID, die der Objekt ID aus dem Endpunkt entspricht. |
parentProcessType | Wert | Die Vorgangsart des Objekts, dessen verknüpfte Dokumente mithilfe der Objekt ID angefordert wurden. |
totalChildren | Wert | Anzahl der verknüpften Objekte. |
children | Array | Liste an Objekten mit Details zu den verknüpften Objekten, siehe nachstehende Tabelle. |
Tabellarische Ansicht der Informationen innerhalb des „children“ Arrays.
Name | Typ | Beschreibung |
guid | Wert | Global eindeutige ID des verknüpften Objekts. |
objectId | Wert | Objekt ID des verknüpften Objekts. |
processType | Wert | Die Vorgangsart des verknüpften Objekts. |
description | Wert | Kurzbeschreibung des verknüpften Objekts. |
userStatus | Wert | Aktueller Status |
userStatusText | Wert | Die Beschreibung des aktuellen Status. |
userStatusFinal | Wert | Kennzeichen („X“ = True, „“ = False), ob der aktuelle Status nicht mehr geändert werden kann. |
Beispiel-Response:
{ "parentGuid": "00155DF935011EDB98C13B600E6760E0", "parentObjectId": "8000001760", "parentProcessType": "ZMCR", "totalChildren": 2, "children": [ { "guid": "00155DF935011EDB98C164809CF420E0", "objectId": "8000001761", "processType": "ZMMJ", "description": "Demo Change 1", "userStatus": "E0002", "userStatusText": "In Development", "userStatusFinal": "" }, { "guid": "00155DF935011EDB98C165411CA980E0", "objectId": "8000001762", "processType": "ZMMJ", "description": "Demo Change 2", "userStatus": "E0001", "userStatusText": "Created", "userStatusFinal": "" } ] }
GET /data/external_ids/{external_id}/children
Dieser Endpunkt liefert identische Informationen wie der Endpunkt GET /data/objects/{object_id}/children mit dem Unterschied, dass das übergeordnete Objekt mithilfe der Externen ID ermittelt wird.
GET /data/objects/{object_id}/action
Dieser Endpunkt liefert anhand einer spezifizierten Objekt ID Informationen der verfügbaren PPF-Aktionen des zum Objekt gehörigen Aktionsprofils. Zusätzlich liefert der Endpunkt für jede PPF-Aktion ein Kennzeichen, ob die Aktion zum aktuellen Status ausgeführt werden kann.
Die PPF-Aktionen finden Sie im Customizing mithilfe der Transaktion SPRO über den Pfad „SAP Solution Manager à Capabilities (Optional) à Change-Control-Management à Vorgänge à Aktionen à Aktionen und Bedingungen ändern à Aktionsprofile und Aktionen definieren“. Das Aktionsprofil für ChaRM Vorgänge lauten in der Regel <Vorgangsart>_ACTIONS, z. B. ZMCR_ACTIONS. Über den Customizing Pfad „SAP Solution Manager à Capabilities (Optional) à Change-Control-Management à Vorgänge à Aktionen à Aktionsprofil der Vorgangsart zuordnen“ kann zusätzlich genau feststellen wie das Aktionsprofil eine bestimmten Vorgangsart lautet.
Der Endpunkt liefert ein paar Informationen zu der angeforderten Objekt ID und ein Array mit den PPF-Aktionen, die wie folgt aussehen.
Name | Typ | Beschreibung |
actions | Array | Diese Eigenschaft liefert eine Liste mit Informationen zu den PPF-Aktionen des Objekts. |
description | Wert | Kurzbeschreibung des Objekts. |
externalID | Wert | Die zugeordnete Externe ID des Objekts, falls vorhanden. |
objectGuid | Wert | Der Wert enthält die global eindeutige ID des Objekts. |
objectId | Wert | Die Objekt ID des Objekts. |
processType | Wert | Die Vorgangsart des Objekts. |
Die Elemente des Arrays „actions“ enthalten folgende Informationen zu PPF-Aktionen.
Name | Typ | Beschreibung |
guid | Wert | Global eindeutige ID der PPF-Aktionen |
ttype | Wert | Name der PPF-Aktion. |
ttypedescr | Wert | Der Wert enthält die Kurzbeschreibung der PPF-Aktion. |
context | Wert | Das zugehörige Aktionsprofil der PPF-Aktion. |
executable | Wert | Kennzeichen, ob die PPF-Aktion für den aktuellen Objektstatus ausgeführt werden kann. Der Wert „X“ entspricht „True“ und der Wert „“ entspricht „False“. |
Bespiel-Response:
{ "actions": [ { "guid": "00155DF935011EDB98C13B600E72E0E0", "ttype": "ZMCR_ON_CREATE", "ttypedescr": "When First Saving", "context": "ZMCR_ACTIONS", "executable": "" }, ... { "guid": "00155DF935011EDBB1A1C59AA79780E1", "ttype": "ZMCR_EXTEND_SCOPE", "ttypedescr": "Extend Scope", "context": "ZMCR_ACTIONS", "executable": "X" }, { "guid": "00155DF935011EDBB1A1C59AA79800E1", "ttype": "ZMCR_CREATE_PPM_TASK", "ttypedescr": "Create Project Management Task", "context": "ZMCR_ACTIONS", "executable": "X" } ], "description": "Test request for change", "externalId": "BIIMPL01-12", "objectGuid": "00155DF935011EDB98C13B600E6760E0", "objectId": "8000001760", "processType": "ZMCR" }
GET /data/external_ids/{external_id}/action
Dieser Endpunkt liefert die selben Informationen anhand einer Externen ID zu PPF-Aktionen eines bestimmten Objekts wie der Endpunkt GET /data/objects/{object_id}/action.
GET /data/objects/search
Dieser Endpunkt dient zur Suche nach Objekten im Solution Manager anhand von vordefinierter Filterkriterien.
Die Filterkriterien werden bei diesem Endpunkt komplett als Query-Parameter übergeben. Folgende Query-Parameter können angegeben werden.
Name | Mögliche Werte | Beschreibung |
description | Beliebiger Text ohne Berücksichtigung der Groß- und Kleinschreibung. Als Ersetzungszeichen für musterbasierte Suche können „*“ und „%“ verwendet werden. | Objekt-Beschreibung |
only_active_status | „true“ oder „false“ | Kennzeichen, ob nur Objekte mit einem nicht finalen Status zurückgeliefert werden sollen. |
object_id | 10stellige Objektnummer. Eine Musterbasierte Suche ist unter Angabe von „*“ oder „%“ möglich. | Objekt-ID |
configuration_item | Das Konfigurations-Element als Zeichenkette. Eine Musterbasierte Suche für das Konfigurations-Element ist nicht möglich. | Konfigurations-Element |
product_id | Das Konfigurations-Element als Zeichenkette. Eine Musterbasierte Suche für das Konfigurations-Element ist nicht möglich. | Konfigurations-Element (alternativer Name) |
posting_date | Datumsangabe in der Form YYYY-MM-DD | Buchungs- bzw. Erstellungsdatum. |
object_type | Folgende Festwerte sind erlaubt: | Objekt-Typ |
Die Antwort des Endpunktes entspricht der nachfolgenden Tabelle.
Name | Typ | Beschreibung |
totalObjects | Wert | Anzahl der ermittelten Objekte. |
objects | Array | Array mit Detailinformationen zu den gefundenen Objekten. |
Die Objekte aus dem Array „objects“ enthalten dabei folgende Werte.
Name | Typ | Beschreibung |
guid | Wert | Der Wert enthält die global eindeutige ID des Objekts. |
objectId | Wert | Die Objekt ID des Objekts |
processType | Wert | Die zugehörige Vorgangsart des Objekts |
postingDate | Wert | Datum der Anlage des Objekts. |
description | Wert | Objektbeschreibung. |
userStatus | Wert | Aktueller Status |
userStatusText | Wert | Beschreibung des aktuellen Status |
userStatusFinal | Wert | Kennzeichen („X“ = True, „“ = False), ob der aktuelle Status nicht mehr geändert werden kann. |
configItem | Wert | Konfigurationselement. Dieser Wert ist bei Änderungszyklen nicht gefüllt. |
configItemText | Wert | Beschreibung des Konfigurationselements. Dieser Wert ist bei Änderungszyklen nicht gefüllt. |
cycleId | Wert | Die Objekt ID des zugehörigen Änderungszyklus. Dieser Wert ist identisch mit objectId, falls das Objekt einem Änderungszyklus entspricht. |
cycleText | Wert | Die Beschreibung des zugehörigen Änderungszyklus. Dieser Wert ist identisch mit description, falls das Objekt einem Änderungszyklus entspricht. |
totalCycleConfigItems | Wert | Anzahl an Konfigurationselementen, falls das Objekt einem Änderungszyklus entspricht. |
cycleConfigItems | Array | Liste mit zugehörigen Konfigurationselementen. |
Die Elemente aus dem Feld „cycleConfigItems“ entsprechen dem folgenden Format:
Name | Typ | Beschreibung |
configItem | Wert | Konfigurationselement. |
configItemText | Wert | Beschreibung des Konfigurationselements. |
Beispiel-Response:
{ "totalObjects": 1, "objects": [ { "guid": "00155DF935011ED7A690FB3043D0E0C4", "objectId": "8000000260", "processType": "ZMCR", "postingDate": "2017-09-13", "description": "Demo Change Request", "userStatus": "E0011", "userStatusText": "Extend Scope", "userStatusFinal": "", "configItem": "7100000111", "configItemText": "G00 0020168246 300", "cycleId": "8000000211", "cycleText": "Phase cycle (IF_CONIGMA)", "totalCycleConfigItems": 0, "cycleConfigItems": [] } ] }
POST /data
Mithilfe dieses Endpunkts können neue Objekte im Solution Manager angelegt werden. Der Endpunkt akzeptiert zusätzlich den Query-Parameter „simulation“, um eine Anlage eines Objekts zu simulieren. Um eine Anlage zu simulieren, muss dem Parameter entweder der Wert “True” oder “X” zugeordnet werden, z. B. “http(s)//: … /data?simulation=True”
Der Request muss mindestens einen Wert für die Vorgangsart über die Eigenschaft “processType” enthalten, um ein Objekt anlegen zu können.
Die nachfolgenden Objektwerte werden aktuell unterstützt, wenn diese im Request enthalten sind.
Konfigurationselement
Das Konfigurationselement oder IBase-Komponente ist ein JSON Objekt mit Namen “configurationItem” mit den Eigenschaften “productId” für das Konfigurationselement und “textIbComp” für die Beschreibung des Konfigurationselements, wobei für die Anlage oder Änderung nur der Wert für “productId” relevant ist.
"configurationItem": { "productId": "7100000111" }
Kundeneigene Felder
Alle Kundeneigenen Felder, die in der Tabelle CRMD_CUSTOMER_H existieren und entweder mit ZZ oder YY beginnen, können bei der Anlage eines Objekts übergeben werden.
Wenn Beispielsweise das kundeneigene Feld YYJIRA_URL die URL eines verknüpften Jira Issue enthalten soll, kann folgendes im Request übergeben werden. Grundsätzlich muss der Feldname in Kleinbuchstaben im Objekt “customFields” übergeben werden. Sofern der Name ein Unterstrich enthält, muss der nächste Buchstabe nach dem Unterstrich in Großbuchstaben angeben werden.
"customFields": { "yyjiraUrl": "https://my-jira-instance.com/projects/IMPL/issues/IMPL-4712" }
Änderungszyklus
Bei der Zuordnung eines Änderungszyklus kann entweder dessen ID oder die Beschreibung des Zyklus über das JSON Objekt „cycleInfo“ übergeben werden. Die Eigenschaft „releaseCrmId“ entspricht der ID des Zyklus und „projectTitle“ der Beschreibung des Zyklus.
Wenn Sie einem Objekt einen Zyklus mit ID 8000000211 mit Beschreibung „Release 2022-3“ zuordnen wollen, können Sie entweder die ID oder die Beschreibung mitliefern, sofern die Beschreibung eindeutig ist.
"cycleInfo": { "projectTitle": "Release 2022-3" }, "cycleInfo": { "releaseCrmId": "8000000211" }
Kurzbeschreibung/Titel des Objekts
Die Kurzbeschreibung bzw. Titel des Objekts, kann über die Eigenschaft „description“ übergeben werden.
"description": "New financial document type \"KR\""
Gewünschter Beginn, Gewünschtes Ende, Fälligkeitsdatum
Die Datumsfelder Gewünschter Beginn, Gewünschtes Ende oder das Fälligkeitsdatum können über die Eigenschaften „startDate“, „endDate“ und „dueDate“ übergeben werden. Das Datumsformat entspricht dem Muster YYYY-MM-DD.
"dueDate": "2021-02-15", "endDate": "2022-03-18", "startDate": "2022-01-15"
Externe ID
Eine Externe ID wie beispielsweise eine Jira Issue ID oder eine ServiceNow Incident ID, kann über die Eigenschaft „externalId“ festgelegt werden.
"externalId": "IMPL-4712"
Multiple Externe IDs
Sofern für bestimmte Vorgangsarten die Zuweisung von mehreren Externen IDs erlaubt ist, kann direkt ein Set aus Externen IDs über die Array-Eigenschaft „externalIds“ übergeben werden.
"externalIds": [ "IMPL-4712", "IMPL-4713" ]
Auswirkung einer Anforderung, Änderung oder Problems
Die Auswirkung einer Anforderung, Änderung oder Problems, kann über die Eigenschaft „impact“ zugewiesen werden. Zulässige Werte für die Auswirkungen, finden Sie in Tabelle CRMC_SRQM_IMPACT.
"impact": "75"
Langtext
Der Langtext eines Objekts kann mit der Eigenschaft „longtext“ zugewiesen werden. Da die zugehörige Textart abhängig von der Vorgangsart ist und eventuell kundeneigene Textarten verwendet werden, muss vorab in der Konfiguration des Addons für jede Vorgangsart eine Textart zugwiesen werden, die als Langtext verwendet werden soll, siehe Kapitel X.X.
"longtext": "This is a detailed description for the requirement.\n Following changes has to be implemented:\n"
Business Partner
Im Vorgang relevanten Business Partner können über die Eigenschaft „partner“ zugewiesen werden. Die Eigenschaft ist dabei ein Array mit Objekten, wobei bei einem Objekt mindestens die Partnerrolle „partnerFct“ und ein Suchtext „partnerLookup“ angegeben werden muss. Der Suchtext funktioniert dabei analog einer Eingabe eines Partners im Web Frontend des Solution Managers und es kann beispielsweise die Nummer oder der Nachname des Partners angegeben werden. Es besteht auch die Möglichkeit kundeneigene Mapping-Regeln für Business Partner zu implementieren.
Beachten Sie bitte, dass die Partnerrolle abhängig von der Vorgangsart ist. Die verfügbaren Partnerrollen für eine Vorgangsart finden Sie in der Tabelle AIC_PARTNER_FCT. Im folgenden Beispiel wird der Rolle „Anforderer“ dem Business Partner 151 zugeordnet und der Rolle „Change Manager“ dem Business Partner 102.
"partner": [ { "partnerFct": "SDCR0001", "partnerLookup": "151" }, { "partnerFct": "SDCR0002", "partnerLookup": "102" } ]
Endpunkt „Cycles“
Mithilfe des Endpunkts „Cycles“ können Informationen zu Änderungszyklen aus dem Solution Manager abgerufen werden.
GET /cycles
Dieser Endpunkt liefert ein Array mit folgenden Informationen über alle Änderungszyklen im System. Das Rückgabeformat wird noch von einem anderen Endpunkt verwendet, weswegen bei Änderungszyklen identische Werte in unterschiedlichen Feldern zurückgeliefert werden. Die Antwort des Endpunkts enthält folgende Felder.
Name | Typ | Beschreibung |
totalObjects | Wert | Anzahl der ermittelten Änderungszyklen. |
objects | Array | Array mit Detailinformationen zu den Änderungszyklen. |
Die Objekte aus dem Array „objects“ enthalten dabei folgende Werte.
Name | Typ | Beschreibung |
guid | Wert | Der Wert enthält die global eindeutige ID des Objekts. |
objectId | Wert | Die Objekt ID des Objekts |
processType | Wert | Die zugehörige Vorgangsart des Objekts |
postingDate | Wert | Datum der Anlage des Objekts. |
description | Wert | Objektbeschreibung. |
userStatus | Wert | Aktuelle Status |
userStatusText | Wert | Beschreibung des aktuellen Status |
userStatusFinal | Wert | Kennzeichen („X“ = True, „“ = False), ob der aktuelle Status nicht mehr geändert werden kann. |
configItem | Wert | Konfigurationselement. Dieser Wert ist bei Änderungszyklen nicht gefüllt. |
configItemText | Wert | Beschreibung des Konfigurationselements. Dieser Wert ist bei Änderungszyklen nicht gefüllt. |
cycleId | Wert | Die Objekt ID des zugehörigen Änderungszyklus. Dieser Wert ist identisch mit objectId, falls das Objekt einem Änderungszyklus entspricht. |
cycleText | Wert | Die Beschreibung des zugehörigen Änderungszyklus. Dieser Wert ist identisch mit description, falls das Objekt einem Änderungszyklus entspricht. |
totalCycleConfigItems | Wert | Anzahl an Konfigurationselementen, falls das Objekt einem Änderungszyklus entspricht. |
cycleConfigItems | Array | Liste mit zugehörigen Konfigurationselementen. |
Die Elemente aus dem Feld „cycleConfigItems“ entsprechen dem folgenden Format:
Name | Typ | Beschreibung |
configItem | Wert | Konfigurationselement |
configItemText | Wert | Beschreibung des Konfigurationselements. |
Beispiel-Response:
{ "totalObjects": 2, "objects": [ { "guid": "00155DF935011ED7A1E4396415E380C3", "objectId": "8000000211", "processType": "SMIM", "postingDate": "2017-08-22", "description": "Phase cycle (IF_CONIGMA)", "userStatus": "E0004", "userStatusText": "Build", "userStatusFinal": "", "configItem": "", "configItemText": "", "cycleId": "8000000211", "cycleText": "Phase cycle (IF_CONIGMA)", "totalCycleConfigItems": 1, "cycleConfigItems": [ { "configItem": "7100000111", "configItemText": "G00 0020168246 300" } ] }, { "guid": "00155DF935011EDB95E11001AEB600E0", "objectId": "8000001677", "processType": "SMIM", "postingDate": "2021-01-15", "description": "Cycle for defects", "userStatus": "E0005", "userStatusText": "Test", "userStatusFinal": "", "configItem": "", "configItemText": "", "cycleId": "8000001677", "cycleText": "Cycle for defects", "totalCycleConfigItems": 1, "cycleConfigItems": [ { "configItem": "7100000111", "configItemText": "G00 0020168246 300" } ] } ] }
GET /cycles/transaction_types/{transaction_type}
Dieser Endpunkt liefert alle Änderungszyklen, die für eine bestimmte Dokumentenart, z. B. SMCR verwendet werden dürfen. Der Response ist identisch aufgebaut wie der Response des Endpunkts GET /cycles.
Endpunkt „Partner“
Mithilfe des Endpunkts „Partner“ können Informationen zu Geschäftspartnern aus dem Solution Manager abgerufen werden.
GET /data/partner?email={emailAddress)
Dieser Endpunkt liefert Detailinformationen zu einem Geschäftspartner anhand dessen E-Mail Adresse aus dem Solution Manager im Rückgabefeld „partner“.
Name | Typ | Beschreibung |
number | Wert | Geschäftspartnernummer |
guid | Wert | Eindeutige GUID des Geschäftspartners. |
firstname | Wert | Vorname des Geschäftspartners. |
lastname | Wert | Nachname des Geschäftspartners. |
Wert | E-Mail-Adresse des Geschäftspartners. | |
validFrom | Wert | Gültig-Von-Datum des Geschäftspartners. |
validTo | Wert | Gültig-Bis-Datum des Geschäftspartners. |
Beispiel-Response:
{ "partner": { "number": "0000000151", "guid": "00155DF935011ED7A5DA18356AC4E0C4", "firstname": "Frank", "lastname": "Dummy", "email": "frank.dummy@dummy.de", "validFrom": "0001-01-01", "validTo": "9999-12-31" } }
Endpunkt „Ping“
Der Endpunkt „Ping“ dient zum Testen von Verbindungen.
GET /ping
Dieser Endpunkt dient im Wesentlichen zum Testen von Verbindungen und liefert folgende Informationen zum gerufenen SAP-Systems zurück und beinhaltet die folgenden Felder.
Name | Typ | Beschreibung |
serverInfo | Objekt | Informationen zum SAP-Server |
systemTime | Wert | Aktuelle Systemzeit |
Das Objekt „serverInfo“ enthält nachstehende Informationen.
Name | Typ | Beschreibung |
name | Wert | Server-Name. |
host | Wert | Name des Host-Servers |
serv | Wert | Service |
msgtypes | Wert | Services des SAP-Servers |
hostadr | Wert | Host IP-Adresse |
servno | Wert | Port-Nummer des Services |
state | Wert | Server-Status |
hostnamelong | Wert | Name des Host-Servers |
hostaddrV4Str | Wert | IPv4 Adresse |
hostaddrV6Str | Wert | IPv6 Adresse |
sysservervice0 | Wert | Registrierte System-Dienste |
sysservervice1 | Wert | Registrierte System-Dienste |
sysservervice2 | Wert | Registrierte System-Dienste |
sysservervice3 | Wert | Registrierte System-Dienste |
Beispiel-Response:
{ "serverInfo": { "name": "GAL-MCH-116_G00_00", "host": "GAL-MCH-116", "serv": "sapdp00", "msgtypes": "BB", "hostadr": "C0A80174", "servno": "0C80", "state": "01", "hostnamelong": "GAL-MCH-116", "hostaddrV4Str": "192.168.1.116", "hostaddrV6Str": "192.168.1.116", "sysservice0": "80", "sysservice1": "00", "sysservice2": "00", "sysservice3": "00" }, "systemTime": "2021-06-04T09:14:45.159Z" }
Endpunkt „Tables“
Über diesen Endpunkt können Inhalte von „beliebigen“ SAP-Tabellen angefordert werden. Die Tabellen, dessen Inhalte gelesen werden dürfen, müssen aber vorher über das Konfigurationsprogramm /GAL/SM_API_CONFIG spezifiziert werden.
GET /tables/{table_name}
Dieser Endpunkt ist der Basis-Endpunkt, um Inhalte von SAP-Tabellen zu lösen. Der Endpunkt hat folgende Variationen, um bis zu 4 Filterkriterien angeben zu können. Als Filter-Option wird derzeit nur der Prüfung auf Gleichheit bzw. auf ein Muster unterstützt. Soll eine Muster-Prüfung erfolgen, können die Ersetzungszeichen „*“ und „%“ angegeben werden.
Folgende Endpunkt-Varianten existieren:
/tables/{table_name}/filter/column/{filter_column}/value/{filter_value} |
/tables/{table_name}/filter/column/{filter_column}/value/{filter_value}/column2/{filter_column2}/value2/{filter_value2} |
/tables/{table_name}/filter/column/{filter_column}/value/{filter_value}/column2/{filter_column2}/value2/{filter_value2}/column3/{filter_column3}/value3/{filter_value3} |
/tables/{table_name}/filter/column/{filter_column}/value/{filter_value}/column2/{filter_column2}/value2/{filter_value2}/column3/{filter_column3}/value3/{filter_value3}/column4/{filter_column4}/value4/{filter_value4} |
Wenn die angegebene Tabelle existiert und über den Endpunkt gelesen werden darf, werden enthält die Rückgabe die folgenden zwei Felder.
Name | Typ | Beschreibung |
totalRecords | Wert | Anzahl der gelesenen Datensätze. |
records | Array | Array der gelesenen Datensätze, wobei die Feldnamen den Spaltennamen der Tabelle entsprechen (in Camel Case). |
Beispiel-Response:
{ "totalRecords": 1, "records": [ { "mandt": "100", "productId": "7100000111", "configItem": "AS-SAP-SOLMAN", "gxpClass": "GXP", "processTeam": "Defect Mngmt. 7.2", "scrReviewerDl": "" } ] }
Das obige Beispiel liefert die Feldwerte einer Tabelle mit den Spalten MANDT, PRODUCT_ID, CONFIG_ITEM, GXP_CLASS, PROCESS_TEAM und SCR_REVIEWER_DL zurück.