Kontakt & Service
Jetzt Beratung vereinbaren

In wenigen Schritten einen Beratungs­termin mit unseren Experten buchen.

Anwender Helpdesk

Hilfestellung bei Problemen in Ihren SAP-Systemen.

Schulungen

Unser Schulungsangebot. Jetzt informieren!

Webinare

Unser Webinarangebot. Jetzt informieren!

ChatGPT SAP

Allgemein Künstliche Intelligenz: Kann ChatGPT SAP-Entwickler ersetzen?

Die Fusion von Künstlicher Intelligenz (KI) mit etablierten Geschäftssystemen wie SAP wirft nicht nur faszinierende Möglichkeiten, sondern auch kritische Fragen auf. Besonders interessant ist die Vorstellung, dass KI-Modelle wie ChatGPT den Entwicklungsprozess von SAP-Anwendungen, insbesondere in der proprietären ABAP-Sprache, revolutionieren könnten. Doch inwieweit kann eine KI tatsächlich beim Programmieren unterstützen? Welche Hürden und Bedenken sind damit verbunden? Bevor wir uns diesen Fragen zuwenden, werfen wir einen kritischen Blick auf die Funktionsweise von Künstlicher Intelligenz und deren tatsächliche Anwendbarkeit im SAP-Kontext.

Ist Ihnen etwas an der Einleitung aufgefallen? Nein? Es wird Sie vielleicht verwundern, aber sie wurde tatsächlich komplett von ChatGPT-3.5 (Generative Pre-trained Transformer, OpenAI), der derzeit vermutlich bekanntesten KI auf dem Markt, erstellt. Der Auftrag lautete: „Erstelle mir eine Einleitung zu einem Artikel mit dem Thema ‚Entwicklung im SAP-Umfeld mit Künstlicher Intelligenz'. Der Inhalt soll sich darauf beziehen, ob einem Künstliche Intelligenz wie ChatGPT beim Programmieren mit ABAP helfen kann, was Probleme sind und wie künstliche Intelligenz eigentlich funktioniert."

Mit der Veröffentlichung von ChatGPT im November 2022 wurden die Maßstäbe für das Thema Künstliche Intelligenz neu gesetzt und es kam zu einem regelrechten Boom. Chatbots gab es zwar bereits vorher, aber mit diesen konnte man bestenfalls einige wenige Sätze wechseln, bevor sie anfingen, sich zu wiederholen oder zu widersprechen. ChatGPT dagegen verfasst ganze Songtexte, Gedichte, hilft bei Mathe-Hausaufgaben, ja sogar zum Programmieren von Tetris in Python kann man den Chatbot animieren. Aber funktioniert das auch im SAP-Umfeld mit ABAP?

Wie funktioniert Künstliche Intelligenz?

Bevor wir diese Frage beantworten können, müssen wir erst einmal verstehen, wie eine Künstliche Intelligenz aktuell vorgeht. Und wer könnte das besser erklären als ChatGPT selbst:

„ChatGPT basiert auf der GPT-3.5-Architektur und ist darauf ausgelegt, menschenähnliche Konversationen zu führen und auf Echtzeit-Interaktionen zu reagieren. Die Funktionsweise von ChatGPT kann in mehreren Schritten erklärt werden:

  • Eingabe verstehen: Wenn du eine Anfrage an ChatGPT stellst, analysiert das Modell zuerst den Text deiner Eingabe. Es versucht, den Kontext, die Absicht und den Ton deiner Nachricht zu verstehen.
  • Tokenisierung: Der Text wird in kleinere Einheiten namens Tokens aufgeteilt. Ein Token kann ein einzelnes Wort oder ein Teil eines Wortes sein. Diese Token werden dann in eine vordefinierte Struktur umgewandelt, die das Modell verarbeiten kann.
  • Kontextverarbeitung: ChatGPT nutzt den Kontext der vorherigen Nachrichten, um die Konversation zu verstehen. Es berücksichtigt die vorherigen Nachrichten, um kohärente Antworten zu generieren.
  • Generierung der Antwort: Basierend auf dem verarbeiteten Kontext und der vorherigen Konversation erzeugt ChatGPT eine Antwort. Dabei versucht es, eine natürliche und kontextuell passende Antwort zu erstellen.
  • Rückgabe der Antwort: Die generierte Antwort wird dann an den Benutzer zurückgegeben, der sie in der Konversation sieht.
  • Echtzeit-Interaktion: Der Prozess wiederholt sich, wenn du auf die Antwort reagierst. Die vorherigen Nachrichten werden in den Kontext einbezogen, um eine flüssige Unterhaltung fortzusetzen.

Es ist wichtig zu beachten, dass ChatGPT auf vorherigem Training mit großen Mengen an Textdaten basiert. Es erkennt Muster und Zusammenhänge in den Daten, um kontextbezogene Antworten zu generieren. Das Modell selbst hat jedoch kein tiefes Verständnis oder Bewusstsein wie ein Mensch. Es basiert auf Wahrscheinlichkeiten und Statistiken, um sinnvolle Antworten zu erzeugen. Es ist auch ratsam, zu überwachen, was das Modell generiert, da es in manchen Fällen möglicherweise nicht angemessene oder ungenaue Inhalte erzeugen kann. Die Nutzung von ChatGPT erfordert also eine gewisse kritische Bewertung der generierten Inhalte."

Erhaltene Antworten sollten genau studiert werden – Wissenslücken füllt der Bot nämlich häufig einfach mit erfundenen Werten, um trotzdem eine Antwort generieren zu können. Prinzipiell ist eine KI nur so schlau, wie die Datenbank, aus der sie ihre Informationen bezieht – je mehr Informationen also zu einem Thema verfügbar, desto zuverlässiger ist auch die Antwort. Sollte es zu einem Thema allerdings mehrere unterschiedliche Antworten oder Meinungen geben, wirkt sich das natürlich auch auf das Ergebnis aus. Die neueste, kostenpflichtige Version von ChatGPT (GPT-4.0) arbeitet mit der BING-Datenbank von Microsoft und hat damit also in etwa die gleichen Informationen zur Verfügung, wie jeder andere, der diese Suchmaschine verwendet. Vereinfacht kann man sagen, dass ein Chatbot die Ergebnisse einer Suchmaschine aufbereitet und zusammenfasst und damit vor allem einfache Fragen zuverlässig beantworten kann.

Einsatz beim Programmieren

Nun ist Programmieren allerdings keine einfache Angelegenheit. Schon vermeintlich einfache Aufgaben können einen vor komplexe Probleme und Anforderungen in der Umsetzung stellen, deren Lösung eine abstrakte Denkweise und ein grundlegendes Verständnis für die Programmiersprache und die Details der gestellten Problematik voraussetzt. So gleichen die Anweisungen, mit deren Hilfe das oben genannte Tetris erstellt wurde, vielmehr einem Pseudocode (also ein nicht funktionärer, verkürzter Code, den man schreibt, um eine strukturierte Übersicht über ein Programm und seine Aktionen zu erhalten) als einfachen Aufgabenstellungen wie „Programmiere mir das Spiel XY“.

Dazu kommt die Schwierigkeit, dass ABAP im Vergleich zu anderen Sprachen wie Java, C# oder Python einen eher geringen Anwenderstamm besitzt und es dementsprechend also auch weniger Informationen oder Beispielcoding gibt, auf die ein GPT zurückgreifen könnte.

Verwendung im SAP-System

Wie gut sind also aktuelle AIs (Artificial Intelligence) im Erstellen eines ABAP Coding? Um das herauszufinden, habe ich ChatGPT folgende Aufgaben gestellt:

„Erstelle mir ein Beispielcoding in ABAP zum Anlegen einer HU Lageraufgabe im EWM.“

Das Ergebnis:

Auf den ersten Blick sieht das Ergebnis sogar erstaunlich gut aus: Die Syntax ist richtig, die interne Tabelle wurde (fast) korrekt befüllt und die Verknüpfung zwischen „CHARG“ und „BATCH“ erkannt. Sogar ein Fehlerhandling mit Abfrage auf die entsprechende Systemvariable nach dem Aufruf des Funktionsbausteins wurde bedacht.

Bei genauerem Hinsehen stechen einem dann doch einige Fehler ins Auge:

  • Die Tasknummer wird mit der HUIDENT befüllt.
  • Keines der angegebenen Datenelemente oder Strukturen existiert.
  • Der Funktionsbaustein ist ebenfalls nicht existent.

Interessanterweise wurde die aus meinen Augen kompliziertere Aufgabe – das Erstellen eines syntaktisch richtigen Coding mit einem nachvollziehbaren logischen Ablauf - erfolgreich erfüllt, während die leichtere Aufgabe - das Verwenden eines Datenelements oder Bausteins mit zahlreichen Beispielen aus Foren, Blogbeiträgen oder der SAP Help - fehlerhaft war. Stattdessen wurden ein eigener Baustein sowie eigene Datenelemente erfunden, die tatsächlich genau so im SAP-System benannt sein könnten.

Im nächsten Schritt habe ich die Aufgabe konkretisiert und den Baustein genannt, der hierfür verwendet werden soll.

Das Ergebnis:

Auf den ersten Blick wieder gar nicht so schlecht - dieses Mal sogar mit Auslesen und Ausgeben des Ergebnisses aus der Tabelle plus Erfolgsmeldung. Ein zweiter Blick offenbart dann jedoch recht schnell, dass die verwendeten Datentypen wieder nicht existieren und die Schnittstelle falsch ausgegeben wurde (es gibt keine TABLES beim /SCWM/TO_CREATE, es fehlen Parameter und Exceptions, …). Die Tabelle lt_hu_items wird im ersten Schritt befüllt und dem Baustein mitgegeben, dann allerdings wieder zum Auslesen des Ergebnisses verwendet. Letzteres ist zwar technisch möglich, aber ein eher unkonventioneller Ansatz.

Der Versuch, eine HU mit Angabe der entsprechenden Klasse (/SCWM/CL_WM_PACKING) entpacken zu lassen, hat ein ähnliches Ergebnis hervorgebracht: Die Instanziierung der Klasse wurde syntaktisch richtig durchgeführt, die daraufhin aufgerufene Methode existierte aber auch nicht.

Wir können also festhalten, dass das Implementieren von Funktionsbausteinen und Methoden nicht funktioniert - weder, wenn man nur die zu erledigende Tätigkeit angibt, noch, wenn ein konkreter Funktionsbaustein bzw. eine konkrete Funktionsklasse hierfür genannt wird. Von komplexeren Abläufen, die mehrere aufeinanderfolgende Methoden- oder Bausteinaufrufe benötigen, ganz zu schweigen.

Aber gibt es nun auch einen sinnvollen Anwendungszweck im Entwicklungsbereich? Ja, tatsächlich! Im Bereich kurzer Algorithmen und Formeln konnte der Chatbot tatsächlich glänzen. Um das zu testen, habe ich ChatGPT die Anweisung gegeben, ein ABAP-Programm zu entwerfen, das zu einem gegebenen Radius die Kreisfläche berechnet. Das hat dagegen nahezu fehlerfrei funktioniert (abgesehen eines kleinen Syntaxfehlers). Außerdem konnte es mir ein Programm entwerfen, das zum eingegebenen Jahr ermitteln konnte, ob es sich um ein Schaltjahr handelt oder nicht und eine kurze Funktion, die übergebene Parameter in die Mitternachtsformel (zur Lösung von gemischtquadratischer Gleichungen) einsetzt und berechnet.

Das kann sinnvoll sein, um sich kleinere Mengen an Coding generieren zu lassen, wenn man sonst ein paar Minuten Zeit bräuchte, um Formeln, vor allem mit Wurzeln o. Ä., einzutippen.

Weitere Einsatzmöglichkeiten

Wie hieß nochmal die Transaktion zum Anlegen von ODATA Services? Wo finde ich jetzt wieder die Benutzerparameter? Wie lautet das Datenelement für Anlieferungen im EWM? Abgesehen von der letzten Frage, werden auch solche Fragen durch die KI zum Teil richtig beantwortet. Auf die Frage zum ODATA-Service wird korrekterweise die Transaktion SEGW und sogar noch eine kurze Erklärung zu deren Funktionsweise geliefert:

„Die Transaktion zum Anlegen von OData-Services in SAP heißt ‚SEGW'. Diese Transaktion ermöglicht es, Datenmodelle zu erstellen und OData-Services im SAP Gateway zu konfigurieren. Mit SEGW kannst du Entitäten definieren, Beziehungen zwischen Entitäten erstellen und die erforderlichen CRUD-Operationen (Create, Read, Update, Delete) festlegen, um auf SAP-Daten zuzugreifen und sie über OData-Dienste zur Verfügung zu stellen. Beachte, dass die Verfügbarkeit und Konfiguration von SEGW je nach SAP-System und dessen Version variieren kann.“

Für die Benutzerparameter werden sogar mehrere unterschiedliche Möglichkeiten genannt, wenngleich zwei davon sehr schwammig und allgemein formuliert sind:

„In SAP können die Benutzerparameter auf verschiedene Arten gefunden und bearbeitet werden, je nachdem, welchen Aspekt du genau anpassen möchtest. Hier sind einige häufige Wege, um auf Benutzerparameter zuzugreifen:

  • Über die Benutzereinstellungen im SAP-GUI:
  • Starte SAP GUI und melde dich an.
  • Klicke auf ‚System' in der Menüleiste und wähle ‚Benutzereinstellungen'.
  • In den Benutzereinstellungen kannst du verschiedene Einstellungen und Parameter anpassen, die deinem Benutzerprofil zugeordnet sind.
  • Über die Transaktion SU3:
  • Du kannst die Transaktion ‚SU3' verwenden, um die Benutzereinstellungen deines SAP-Benutzerprofils zu ändern. Gib ‚SU3' in das Transaktionsfeld ein und drücke ‚Enter‚.
  • In der Transaktion SU3 kannst du eine Vielzahl von Benutzereinstellungen bearbeiten, einschließlich persönlicher Einstellungen, Adressdaten und Parameter.
  • Über spezifische Transaktionen:
  • In einigen Fällen können Benutzerparameter auch in spezifischen Transaktionen bearbeitet werden, die mit den jeweiligen SAP-Anwendungen oder Modulen verbunden sind. Zum Beispiel können Benutzerparameter für das SAP-EWM-Modul in der EWM-spezifischen Transaktion bearbeitet werden.
  • Über SAP Fiori-Apps:
  • In modernen SAP-Umgebungen, die SAP Fiori verwenden, kannst du auch Benutzereinstellungen in SAP Fiori-Apps finden. Diese Apps bieten oft eine benutzerfreundlichere Oberfläche zur Anpassung von Einstellungen.

Bitte beachte, dass der Zugriff auf bestimmte Benutzerparameter von den Berechtigungen abhängen kann, die deinem Benutzerprofil in SAP zugewiesen sind. Wenn du spezifische Einstellungen suchst, die für eine bestimmte Aufgabe oder ein Modul relevant sind, kann es hilfreich sein, die Dokumentation oder die Unterstützung deines SAP-Administrators oder Beraters in Anspruch zu nehmen.“

Die Frage nach Datenelementen für die HUIDENT war dagegen eher ernüchternd:

„In SAP Extended Warehouse Management (EWM) können verschiedene Bezeichnungen für Datenelemente verwendet werden, um Handling Units (HU) darzustellen, je nach den individuellen Systemanforderungen und Konfigurationen. Hier sind einige Beispiele für mögliche Bezeichnungen von Datenelementen für Handling Units:

  • HUID: Dies steht normalerweise für ‚Handling Unit Identifier' und wird oft verwendet, um die eindeutige Kennung einer Handling Unit darzustellen.
  • HUNUM: Dies steht für ‚Handling Unit Number' und dient ebenfalls zur Darstellung einer Handling Unit-Nummer.
  • HU_ID: Hier wird eine Mischung aus ‚HU' (Handling Unit) und ‚ID' (Identifier) verwendet, um auf eine Handling Unit-Identifikationsnummer hinzuweisen.
  • HU_NR: Ähnlich wie ‚HU_ID'  verwendet dieses Datenelement ‚HU' für Handling Unit und ‚NR' für Nummer.
  • HU_GUID: Wenn Global Unique Identifiers (GUIDs) für die Identifizierung von Handling Units verwendet werden, kann ‚HU_GUID' als Datenelement verwendet werden.
  • HUBEL: Dies steht für ‚Handling Unit-Beladung' und kann in bestimmten Szenarien verwendet werden, in denen Handling Units mit Ladungen in Verbindung stehen.

Bitte beachte, dass die genaue Bezeichnung und Konfiguration von Datenelementen in deinem SAP EWM-System von den spezifischen Anforderungen und der individuellen Implementierung abhängt. Es ist ratsam, die Dokumentation deines EWM-Systems oder die Datenstrukturen in deinem SAP-System zu überprüfen, um das genaue Datenelement für Handling Units in deiner speziellen SAP-Umgebung zu ermitteln.“

Auch durch Umformulieren der Frage wurde die Antwort weder spezifischer noch besser. Aber auch in diesen Beispielen zeigt sich wieder: Die vermeintlich einfache Nennung eines fest definierten Datenelements stellt die GPT vor eine größere Herausforderung als die Beschreibung einer Vorgehensweise oder Transaktion. Ob das an der Datenbank, mit der „trainiert“ wurde, liegt oder an der Informationsverarbeitung des Modells lässt sich abschließend nur sehr schwer beantworten.

Fazit

Auch wenn die Künstliche Intelligenz durch ChatGPT einen Sprung nach vorne gemacht hat und für viele Anwendungsbereiche wie die Auswertung großer Datenmengen, Robotik, Autonomes Fahren u. Ä. eine wichtige Komponente bilden wird, ist ihr Können im Bereich Entwicklung – insbesondere mit ABAP – noch weit davon entfernt, einen Entwickler zu ersetzen. Mit einer geschickten Fragestellung können der Künstlichen Intelligenz zwar sicherlich einige Antworten zu weniger komplexen Fragen entlockt werden, und auch zum Programmieren kurzer Algorithmen ist die Technologie in der Lage, jedoch nicht in einer Zuverlässigkeit, die zum derzeitigen Stand wirklich lohnenswert wäre.

 

Stand. 11. Dezember 2023
Newsletter Setzen Sie auf fundiertes Wissen aus allen Bereichen unserer Branche. Regelmäßig und stets aktuell.
Beratende Person
Kontakt Haben Sie Fragen oder wünschen weitere Informationen? Unsere Experten beraten Sie gerne.