
ABAP Entwickler noch relevant?
In diesem Artikel schauen wir uns an, ob ChatGPT schon einen ABAP Entwickler ablösen kann oder ob er als Hilfe für den Alltag taugt.
Inhaltsverzeichnis
ChatGPT ist schon seit einer ganzen Weile in den Medien, da es sich hier um einen sehr fortschrittlichen Chatbot handelt, der einem Chatverlauf folgt, hilfreiche Informationen erzeugt und sogar in der Entwicklung eingesetzt werden kann. Auf Anforderung erstellt er Code und kontrolliert auch Code, den man ihm übergibt.
Einleitung
Was ist eigentlich ChatGPT? Der Bot wurde durch openAI entwickelt, die auch Dall-E 2 entwickelt haben, einen Bot der Bilder und Grafiken erstellt. Wie der Name ChatGPT bereits ausdrückt, handelt es sich um eine Chat KI, deren Ziel es ist, den User mit natürlicher Sprache bei seinen Fragen und Problemen zu unterstützen. Vor allem soll der Bot im Support Bereich zum Einsatz kommen.
Trainiert wurde ChatGPT mit Informationen aus dem Internet, sodass er viele Fragen aus dem tägliche Leben beantworten kann. In diesem Artikel schauen wir vor allem einmal auf die Fähigkeiten rund um die ABAP Entwicklung und was der Bot bereits heute beherrscht. Dabei stellen wir uns die Frage, ob der Bot bereits vollständige Anwendungen bauen kann, um somit einen ABAP Entwickler abzulösen und wie fehleranfällig der Bot ist.
Grundlagen
Beginnen wir also erst einmal mit den Grundlagen und fragen den Bot, ob er mit der ABAP Entwicklung vertraut ist.
Die Antwort fällt entsprechend lang aus, ChatGPT simuliert eine natürliche Konversation und gibt auch entsprechende Informationen zurück. Als nächstes soll er mal einen einfachen SELECT über die Buchungskreise ausführen. Dabei geben wir aber schon die entsprechende Tabelle vor. Wir weisen aber nicht mehr darauf hin, dass wir den Code in ABAP haben wollen:
Wieder bekommen wir eine entsprechende Antwort mit Erklärung und gleich noch einen Code-Snippet für die Ausgabe der Daten. Selbst die ungarische Notation wird bei dem Beispiel eingehalten und das Statement als Modernes ABAP ausgegeben. Ein kleiner Fehler hat sich aber bereits eingeschlichen, denn das Feld WERKS gehört nicht zur T001.
Erweitert
Im nächsten Schritt stellen wir eine neue Anfrage an den Chatbot und möchten unsere letzte Anfrage gern in ein Data Access Object (DAO) verpackt haben. Dabei geben wir wieder keinen Kontext und der Bot nimmt unsere letzte Anfrage als Referenz:
ChatGPT gibt auch wieder eine entsprechende Erklärung mit und ein Beispiel wie man den Code verwenden kann. Leider kommt an dieser Stelle dann der falsche Schlüssel zum Tragen.
Entsprechend wollen wir eine Änderung am Coding vornehmen und lassen ChatGPT den Schlüssel tauschen.
Als letzten Schritt soll ChatGPT noch eine Methode ergänzen, um über eine Range eine Tabelle von Einträgen zu lesen, dabei wird der folgende Code zurückgegeben.
CLASS lcl_dao DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
get_t001_data IMPORTING
r_bukrs TYPE t001-bukrs
RETURNING
VALUE(r_t001_data) TYPE t001,
get_t001_range IMPORTING
r_bukrs_low TYPE t001-bukrs
r_bukrs_high TYPE t001-bukrs
RETURNING
VALUE(r_t001_range) TYPE TABLE OF t001.
ENDCLASS.
CLASS lcl_dao IMPLEMENTATION.
METHOD get_t001_data.
SELECT SINGLE * FROM t001
INTO @DATA(lv_t001)
WHERE bukrs = r_bukrs.
r_t001_data = lv_t001.
ENDMETHOD.
METHOD get_t001_range.
SELECT * FROM t001
INTO TABLE @DATA(lt_t001)
WHERE bukrs >= r_bukrs_low AND bukrs <= r_bukrs_high.
r_t001_range = lt_t001.
ENDMETHOD.
ENDCLASS.
Die Range ist zwar nicht nach den üblichen Kriterien als SELECT-OPTION gebaut, aber man kann einen Bereich übergeben und erhält eine sinnvolle Abgrenzung auf den Daten. Der Returning Parameter wird beim Compiler aber zu einem Fehler führen, da der Rückgabetyp nicht vollständig spezifiziert ist, der Schlüssel fehlt noch.
Fehler
Als nächste Frage wollen wir fehlerhaften Code übergeben und mal schauen, ob dieser korrigiert werden kann. Dazu das folgende Beispiel-Coding mit einem enthaltenen Fehler:
TYPES:
BEGIN OF ts_data,
some_id TYPE char25,
text TYPE string,
END OF ts_data,
tt_data TYPE STANDARD TABLE OF ts_data WITH EMPTY KEY.
LOOP AT lt_data INTO DATA(ls_data) WHERE.
ENDLOOP.
ChatGPT hat die folgende Antwort auf das Problem:
Die Analyse ist soweit auch korrekt, die WHERE Bedingung wurde angefangen, sie fehlt aber. Wobei das Problem auch vom Compiler erkannt werden würde und das Coding nicht aktivierbar wäre.
Modernes ABAP
Schauen wir uns in einem letzten Schritt einmal an, ob uns der Chatbot dabei helfen kann, die passenden CDS Views zu finden, um eine API zum System zu nutzen. Dabei wollen wir für den Business Partner die passenden Daten erhalten und fragen ihn nach den freigegebenen CDS Views in diesem Bereich:
Leider haben wir mehrere verschiedene Anfragen an den Bot gestellt und wie oben keine passende Antwort erhalten. Den Standardview "I_BusinessPartner" wollte das System nicht ausgeben.
Fazit
Der Chatbot kann schon so einiges und kann einem Entwickler bei seiner täglichen Arbeit unter die Arme greifen. Allerdings solltest du dich nicht auf die Antworten verlassen und ungeprüft übernehmen. Der Chatbot macht noch Fehler und das Ergebnis sollte noch einmal professionell bewertet werden. Ebenso kann er ohne präzise Anweisungen keine kompletten Anwendungen entwickeln.