Algorithmen in ABAP
Algorithmen in ABAP
Unter Theoretikern und Experten wird gerne die Frage erörtert, ob ABAP® eine ‘vollwertige’ Programmiersprache ist.
Ich würde diese Frage mit Ja beantworten.
Das Einzige, das syntaktisch gesehen bei ABAP® fehlt, ist ein Konstrukt, das essentiell für nahezu alle Standardalgorithmen der Informatik (z.B. Dijkstra, Stable Marriage, Knuth-Morris-Pratt, Bellman-Ford) ist: das Array.
Es stellt sich also die Frage, wie man die klassischen Algorithmen der Informatik in ABAP übersetzen kann.
Ich habe hierzu weder in der Literatur noch im Internet Beispiele gefunden (Hinweise dazu sind willkommen!), also begann ich das Projekt, diese Algorithmen selbst in ABAP zu schreiben.
Als Systemumgebung wählte ich das MiniWebAS 6.20-System. Dieses ist ein vollständiges SAP-System und weist mit dem bekannten Flugdatenmodell eine veritable Testumgebung auf.
MiniWebAS 6.20 ist kostenlos, z. B. als Beilage zu einigen Galileo Press-Büchern, erhältlich.
Dijkstra-Algorithmus
Der Dijkstra-Algorithmus ist das praktikableste Verfahren dafür, kürzeste oder billigste komplexe Verbindungen zwischen zwei Zielen zu berechnen. Dabei wird eine Tabelle von Einzelverbindungen zugrundegelegt, die so genannte Adjazenzmatrix.
Ich habe den Algorithmus in ABAP im Flugdatenmodell implementiert.
Die Einzelverbindungen entsprechen hierbei genau den einzelnen Flügen, die in den Tabellen SPFLI und SFLIGHT abgelegt sind. Komplexe Verbindungen sind hierbei alle Umsteigeverbindungen (z. B. Berlin-Tokio über Frankfurt), wobei entweder der Preis oder der Weg optimiert werden kann. Das Program findet einfach kürzeste bzw. billigste Flugverbindungen zwischen zwei Städten.
Hier geht es zu einem ABAP-Beispielprogramm (lauffähig unter MiniWAS 6.20, wenn dieses Datenelement mit dieser Suchhilfe angelegt wird).