Meine Projekte - Christian Schwanse

Projekte: Christian Schwanse

Projekte.

Kunterbunt aufgelistet: Von Hobby-Projekten bis hin zu meinen Verewigungen in der Arbeit.

Webentwicklungs-Projekte

Portfolio-Webseite

Die Portfolio-Webseite ist die Webseite, auf der du dich gerade befindest - wo ich mich selbst, meine Fähigkeiten, Berufserfahrung und Projekte vorstelle.

Allgemeine Informationen über das Projekt
  • Auftraggeber: Ich selbst
  • Projektziel: Im Internet auffindbare Demonstration meiner Fähigkeiten, Berufserfahrung und Projekte sowie Frontend-Webentwicklung ohne Framework lernen
  • Anzahl Projektbeteiligte: 1
  • Zeitraum: 05/2024 - 08/2024 (+ hin und wieder neue Implementierungen)
  • Branche / Bereich: Allgemein / Webentwicklung
  • Rolle: Hauptentwickler
  • Sprache: Deutsch, Englisch
  • Ergebnis: Eine im Internet auffindbare Webseite, die von allen möglichen Interessenten auf der ganzen Welt gefunden werden kann. Die Webseite ist für alle möglichen Endgeräte optimiert worden und somit mobilfreundlich. Außerdem eine deutliche Verbesserung der Kenntnisse in der Front-End-Webentwicklung (HTML, CSS und JavaScript) sowie Testing Framework Jest und Domain Hosting ohne Content Management System (CMS).
  • Link zum Github-Repository: www.christian-schwanse.com.
  • Tech Stack:
    • HTML
    • CSS
    • JavaScript
    • PHP
    • Testing Framework: Jest
    • Inkscape
    • Gimp
    • Github
    • MS Visual Studio
    • Domain Hosting: Strato
    • FTP: FileZilla
    • Material Design
Wie ich an diesem Projekt gearbeitet habe

Am Anfang die Planung. Die Beantwortung von Fragen wie:

  • Wie will ich die Webseite umsetzen?
  • Welchen Umfang soll das Projekt haben - unter Berücksichtigung, dass ich arbeite und andere Verpflichtungen habe?
  • Welche Seiten und Inhalt soll die Webseite enthalten?
  • An wen soll die Webseite gerichtet sein und wie soll diese erreichbar / auffindbar sein (z. B. Marketing)?

Stand die Planung, so ging es ans Eingemachte - ein Zyklus aus folgenden Schritten:

  1. Planung eines Arbeitsschrittes einer neuen Funktionalität
  2. Programmieren
  3. Testen
  4. Falls erfolgreich: Code-Refactoring. Falls gescheitert: Bugfixing
  5. Testen
  6. Github Commit bzw. Push

Am Ende kam der Feinschliff der Webseite: Mobile Responsiveness, Code-Refactoring, Benutzerfreundlichkeit und SEO.

=== Update: 04.09.24 ===
Als ich neue Technologien gelernt habe, hat sich auch gleichzeitig meine übliche Vorgehensweise verändert: Ich plane meine Projekte mit der Kanban-Board-Funktion in Github Projects.

Gewünschte Anforderungen dokumentiere ich mit Hilfe eines selbst erstellten Github-Issue-Template. Innerhalb des Templates kommt die Gherkin-Syntax für das Behavior-Driven-Development (BDD) zum Einsatz.

Die Issues sind nach Priorität sortiert. Ich benutze Scrum und definiere Sprints, was als Nächstes in naher Zukunft erledigt werden sollte. Issues mit der höchsten Priorität werden als Erstes erledigt.

Ist klar, was als Nächstes erledigt werden sollte, erstelle ich mit Hilfe des Testing Frameworks Jest Tests, die es im Nachhinein zu erfüllen gilt (Test-Driven-Development, TDD).

Nach einem Sprint reflektiere ich, was in der Zukunft besser gemacht werden könnte. Im Anschluss wird der nächste Sprint geplant und implementiert.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Ich habe diese Webseite ohne Framework entwickelt - nur das liebe Dreiecks-Gespann: HTML, CSS und JavaScript.

Grund: Es ist meine erste richtige, selbst programmierte Webseite. Ich bin allgemein ein Fan davon, dass man erst ausführlich die Grundlagen übt, bevor man sich an neuen, “interessanten“ Sachen wagt.

Ich hatte auch den Gedanken, dass ich dadurch in der Zukunft deutlich die Vorteile sowie die Kompromisse von Frameworks sehen würde.

=== Update: 04.09.24 ===
Testing Framework Jest für Unit Testing hinzugefügt. Ich habe mich für Jest entschieden, da es ein beliebtes Testing Framework ist und mir gesagt wurde, dass es einfach einzurichten ist.

Meine wichtigsten Punkte, die ich aus diesem Projekt gelernt habe
  1. Eigene Komponenten wie Header oder Footer erstellen, die seitenübergreifend wiederverwendet werden können.
  2. Mobile Responsiveness. Ich dachte, es wäre mit Flexbox und Grid getan - da habe ich mich sehr getäuscht. Das Design musste ich an verschiedenen Stellen anpassen, sodass es auf kleinen, mittelgroßen als auch extra-extra-großen Bildschirmen gut aussieht. Allein das Testen war aufwendig genug.
  3. Es ist sehr zeitintensiv, eine Webseite (inkl. Inhalt) von Grund auf zu entwickeln. Figma wäre langfristig sinnvoll. Ein Tool für Designer und Entwickler, um Prototypen von UIs erstellen zu können. So vermeidet man den Fall, dass lange Zeit etwas programmiert wird und am Ende verworfen, weil es einem doch nicht gefällt - Ich sag lieber nichts dazu, ob mir das während des Projektes auch passiert ist 😉 Ebenfalls ist eine Todo-Verwaltungs-Software wie bspw. Jira hilfreich.
  4. Testing Framework Jest: Ich wusste nicht, wie man Unit Tests in JavaScript erstellt. Also habe ich mich in das Framework von Grund auf eingearbeitet und dabei viel gelernt.
  5. Kanban-Board in Github Projects: Ich wusste nicht, dass solch eine Funktion in Github existiert. Es hilft mir dabei, den Überblick bei meinen Projekten und Todos zu behalten. Außerdem ermöglicht es mir, BDD zu verwenden als auch wichtige Hinweise zu dokumentieren.

WordPress-Webseiten

Verschiedene Webseiten mit dem Content-Management-System WordPress erstellt. Beispielsweise über Themen wie Fitness oder sogar Bügeln! 😉 Die Webseiten gibt es allerdings nicht mehr.

Allgemeine Informationen über das Projekt
  • Auftraggeber: Ich selbst
  • Projektziel: Aus eigenem Interesse Blog über Fitness als auch etwas über neue Themen lernen und darüber berichten (z. B. Bügeln). Mit SEO Sichtbarkeit der Webseiten erhöhen und mit bspw. Affiliate-Marketing den ein oder anderen Groschen verdienen.
  • Anzahl Projektbeteiligte: 1
  • Zeitraum: 07/2017 - 02/2020
  • Branche / Bereich: Divers
  • Rolle: Webseiten-Betreiber
  • Sprache: Deutsch
  • Ergebnis: Webseiten inklusive Inhalt erstellt. Bei bestimmten, weniger kompetitiven Suchbegriffen auf den Google-Suchseiten 1, 2 oder 3 auffindbar gewesen und dadurch Internet-Besucher weltweit generiert. Aneignung von Wissen über diverse Themen wie:
    • Content-Management-System
    • Domain-Hosting
    • Recht im Internet
    • Marketing (Affiliate-Marketing, Copywriting, Google Ads, SEO, ...)
    • Nicht zu vergessen: Bügeln 😉

    Webseiten wurden am Ende eingestampft, da zu wenig Zeit & Geld verfügbar. Zu dieser Zeit war ich Schüler / Student. Für mehr Optimierungs-Tests und Besucher (die gewinnbringenderen, kompetitiveren Suchbegriffe) hätte ich deutlich mehr Zeit und ggfs. Geld zur Hand nehmen müssen. Die Konkurrenz ist stark gewesen.

  • Tech Stack:
    • WordPress
    • HTML
    • CSS
    • Inkscape
    • GIMP
    • Mailchimp
    • All-Inkl (Domain-Hosting)
    • Google Analytics
    • SEO
Wie ich an diesem Projekt gearbeitet habe

Ich hatte grob eine Idee, was ich machen wollte - eine Webseite, die ich mit Inhalt befülle und anschließend vermarkte.

Ganz am Anfang musste ich mir Wissen über Webentwicklung, Recht und Internet Marketing aneignen. Für die Aneignung des Wissens las ich Bücher, Blogs und schaute Videos auf Youtube an. Themen wie:

  1. Wie erstelle ich eine Webseite ohne Programmierkenntnisse?
  2. Wie mache ich eine Webseite im Internet auffindbar?
  3. Wie bringe ich meine Besucher dazu, meine Webseite zu durchstöbern?
  4. Falls etwas nicht funktioniert: Wie optimiere ich? Wie teste ich die Ergebnisse bzw. wie messe ich Kennzahlen?
  5. Was gilt es, rechtlich zu beachten?

Die Umsetzung der einzelnen Seiten der Webseite lief wie folgt ab:

  1. Suche nach geeigneten Begriffen, die Benutzer im Internet eingeben (Keyword Recherche)
  2. Planung des Inhalts der Seite
  3. Umsetzung des Inhalts der Seite
  4. Optimierung (SEO und Copywriting) der Seite
  5. Kennzahlen messen und dokumentieren (z. B. Google Analytics)
  6. Falls genügend Besucher: Tests einbauen und durchführen (z. B. A/B-Tests)
Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Am Anfang steckte ich sehr viel Zeit in die Aneignung des Wissens, bevor ich mich an die Umsetzung gewagt habe. Das hatte drei Gründe:

  1. Ich hatte absolut null Ahnung. Je mehr ich wusste, desto mehr wusste ich, dass ich nichts weiß.
  2. Vermeidung von aufwendigen Anpassungen im Nachhinein
  3. Vermeidung von Verschwendung von Ressourcen (Zeit & Geld)
Meine 3 wichtigsten Punkte, die ich aus diesem Projekt gelernt habe

Ich habe wahnsinnig viel in den unterschiedlichsten Bereichen gelernt. Die 3 wichtigsten Punkte:

  1. Es ist gut, einfach mal etwas auszuprobieren und ins kalte Wasser zu springen. Im schlimmsten Falle lieber einen Fehlschlag als Reue, es nicht probiert zu haben.
  2. Um Webseiten zu erstellen, zu pflegen, zu optimieren und zu vermarkten gehört viel mehr dazu als man denkt.
  3. Steckt man Zeit und Disziplin in etwas, kann man viel mehr erreichen als man sich vorstellen kann.

SAP-Projekte

QM-Schnittstelle: Quipsy - Prüfplan inklusive Skip-Lot-Verfahren

Erweiterung der Schnittstelle zwischen SAP und der externen QM-Software Quipsy. Dabei wurden Daten aus SAP ins Quipsy geschickt (Prüfplan inklusive Skip-Lot-Verfahren). Als auch umgekehrt Daten aus Quipsy ins SAP (Quipsy-Datenbankänderungen der Artikel-Prüfplan-Zuordnung).

Allgemeine Informationen über das Projekt
  • Auftraggeber: Führender Hersteller in Bürostuhl-, Loungemöbel- und Automobilindustrie, > 2.000 Mitarbeiter
  • Projektziel: Übermittlung des Prüfplans inklusive Skip-Lot-Verfahren in SAP-Wareneingangsprüfungen von SAP ins Quipsy, um die Qualitätsmanagement-Abteilung zu entlasten. Besonderheiten: Es gibt kein Quipsy-Test-System. Deswegen muss im Produktiv-System getestet werden. Auch gibt es keinen QM-SAP-Berater, welcher sich mit dem QM-Modul in SAP auskennt.
  • Anzahl Projektbeteiligte: ~ 8 MA.
  • Zeitraum: 10/2023 - 12/2023
  • Branche / Bereich: Bürostuhl-, Loungemöbel- und Automobilindustrie
  • Rolle: Hauptentwickler (SAP-seitig).
  • Sprache: Deutsch
  • Ergebnis: Erfolgreiche Übermittlung des Skip-Lot-Verfahrens inklusive dazugehörigem Prüfplan. Dadurch deutliche Entlastung der QM-Abteilung. Außerdem automatische Aktualisierung der Artikelprüfplanzuordnungs-Datenbanktabelle (SAP-seitig), wodurch Pflegeaufwand als auch Fehler minimiert werden. Mögliche Fehler werden abgefangen und in ein Fehlerprotokoll geschrieben. Da fehlerhafte Datenbankänderungen möglicherweise erst zu spät auffallen, werden bei neuen Einträgen im Fehlerprotokoll Benachrichtigungen an entsprechende Mitarbeiter versendet.
  • Tech Stack (in Bezug auf meine Rolle innerhalb des Projektes):
    • ABAP (Prozedural, OO)
    • ABAP Eclipse
    • Quipsy-Server (Task Scheduler, Log-, Ini-Files, ...)
    • SAP-Datenbank (SE11, SM30)
    • SAP-Verzeichnis (AL11)
Wie ich an diesem Projekt gearbeitet habe

Die Besonderheiten des Projektes, die es deutlich schwieriger gestalten:

  • Es gibt kein Quipsy-Test-System. Das heißt, der Datenaustausch zwischen SAP und Quipsy musste im Produktiv-System getestet werden. Es musste auf Korrektheit der Daten (Bestellung, Wareneingang) geachtet werden. Auch zusätzlicher organisatorischer Aufwand, da mehrere Abteilungen inkl. Quipsy-Berater involviert sind.
  • Kein Inhouse-SAP-QM-Berater vorhanden. Da nicht vollständig klar war, inwiefern man Skip-Lot bzw. Prüfpläne in SAP anlegen und steuern kann (inkl. den „Nebenwirkungen“), mussten die Prüfpläne (Artikelprüfplanzuordnung) von Quipsy ins SAP exportiert und aktuell gehalten werden.
  • Fehlendes Wissen über die Schnittstelle. Die Schnittstelle wurde vom SAP-Dienstleister NTT DATA entwickelt. Es war nur Dokumentation vorhanden. Keiner der damaligen Verantwortlichen war noch angestellt. Dadurch musste ich mir alles (Zusammenhänge, Code-Basis, ...) selber beibringen.

Um zu prüfen, ob die Daten (Prüfplan inkl. Skip-Lot) richtig in SAP gezogen werden, war es nötig, für jeden Test den kompletten Wareneingangs-Prozess zu durchlaufen. Das heißt, es muss eine Bestellung angelegt, eine Anlieferung angelegt, verteilt sowie im EWM gepflegt werden.

Für Quipsy-seitige Anpassungen war ein externer Quipsy-Berater nötig.

Anfangs sollte nur das Skip-Lot-Verfahren (Skip-Lot-Button im Materialstamm) von SAP ins Quipsy importiert werden. Da es aber zu Problemen kam, musste zusätzlich auch der dazugehörige Prüfplan ins Quipsy importiert werden.

Wie oben schon erwähnt, war es nicht klar, wie aufwendig bzw. machbar die Einführung von Prüfplänen in SAP ist. Deswegen wurde eigens eine SAP-Datenbanktabelle für die Artikelprüfplanzuordnung in der SE11 erstellt. Diese wurde per Dateiupload initial befüllt.

Damit der Quipsy-Keyuser bei Änderungen die SAP-Datenbanktabelle manuell aktualisieren kann, wurde ebenfalls eine SM30-Tabelle sowie eine dazugehörige Anwender-Dokumentation erstellt. Das war nötig, da der automatische Export der Artikelprüfplanzuordnungs-Datenbanktabelle in Quipsy nach SAP noch nicht implementiert wurde und sich die Entwicklung auch verzögert hatte.

Wurde der Export des Skip-Lots inklusive Prüfplan erfolgreich implementiert und getestet, war der nächste Schritt der automatische Export der Artikelprüfplanzuordnung-Datenbanktabelle von Quipsy ins SAP, um auch in Zukunft die korrekten Prüfpläne ermitteln zu können. Somit läuft die Schnittstelle vollautomatisch.

Laut Quipsy ist es nicht möglich, einzelne Datenbankänderungen zu exportieren. Es musste immer die komplette Datenbanktabelle ins SAP übermittelt werden. Diese Txt-Datei musste im ABAP-Code aufbereitet werden (z. B. Trennzeichen entfernen oder prüfen, ob Materialnummer in Quipsy überhaupt in SAP vorhanden ist).

Damit die Fehlerbehebung möglichst einfach ist, wurde ebenfalls ein Fehlerprotokoll mit den fehlerhaften Datenbankänderungen implementiert, welches eine Txt-Datei ins SAP-Verzeichnis hochlädt.

Damit diese Fehler nicht im dunklen Kämmerchen „verrotten“, sondern diese gleich behoben werden, wird bei einem neuen Eintrag im Fehlerprotokoll eine Benachrichtigung an die entsprechenden Mitarbeitern versendet.

Zum Schluss wurde der Code gerefactored sowie die bereits vorhandenen Dokumentationen geupdatet und der eigenen SAP- als auch QM-Abteilung zur Verfügung gestellt.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Vieles ist im vorherigen Abschnitt schon beschrieben worden. Vielleicht gab es bessere Lösungen. Auch musste ich mich an die bereits bestehende Code-Basis bzw. Schnittstelle richten.

Damit die Entwickler nach mir es einfacher haben, habe ich den kompletten Wareneingangs-Prozess dokumentiert, wodurch das Testen leichter wird. Außerdem Code-Refactoring betrieben als auch stets festgehalten, warum etwas genau auf die Art und Weise umgesetzt werden musste.

Meine 3 wichtigsten Punkte, die ich aus diesem Projekt gelernt habe
  1. Wareneingangs-Prozess: Sehr viel über die funktionale Seite gelernt. Zusammenhänge wurden deutlich klarer. Auch besser kennengelernt, wie man Bestellungen und Anlieferungen anlegt und pflegt sowie die QM-Software Quipsy.
  2. Es ist sehr interessant, wie ein führender SAP-Dienstleister eine Schnittstelle implementiert als auch dokumentiert.
  3. Technisch ebenfalls enorm viel gelernt: Wie lege ich eine Datenbanktabelle an (SE11 als auch SM30)? Was ist ein SAP-Verzeichnis? Wie entwickle ich den Upload von Dateien (via SAP GUI als auch AL11)? Wie funktioniert die Quipsy-Schnittstelle? Wie ist der Quipsy-Server aufgebaut? Und so weiter.

Rollout: Formular Angebot

Einführung eines neuen SAP-Formulares: Angebot (Modul: SD).

Allgemeine Informationen über das Projekt
  • Auftraggeber: Führender Hersteller in Bürostuhl-, Loungemöbel- und Automobilindustrie, > 2.000 Mitarbeiter
  • Projektziel: Einführung eines neuen SAP-Formulares (Angebot), welches anschließend vom Vertrieb benutzt werden soll. Dient zur Prozessoptimierung.
  • Anzahl Projektbeteiligte: 4 MA (SAP-Entwickler, SAP-Berater, Vertrieb: Abteilungsleiter und Tester)
  • Zeitraum: 05/2024 - 06/2024
  • Branche / Bereich: Bürostuhl-, Loungemöbel- und Automobilindustrie
  • Rolle: SAP-Entwickler
  • Sprache: Deutsch, Englisch
  • Ergebnis: Erfolgreiche Einführung des Angebots-Formulares, welches von der kompletten Vertriebs-Abteilung eingesetzt wird. Vereinfachung, Beschleunigung und Fehlerminimierung bei der Erstellung von Angeboten.
  • Tech Stack:
    • ABAP (Prozedural, OO)
    • XML
    • ABAP Eclipse
    • SAP-Formulartechnologie Adobe Forms
    • SAP-Standard-Erweiterung (Customizing der Nachrichtenart, Unvollständigkeitsprotokoll, ...)
Wie ich an diesem Projekt gearbeitet habe

Am Anfang stand die Anforderungsanalyse. Es gab von meinen Vorgängern bereits ein entwickeltes, unvollständiges Angebots-Formular. Die Daten stammen aus dem gleichen Druckprogramm wie das Bock-Auftragsbestätigungs-Formular.

Der Vertrieb definierte anhand der zwei Formulare ihr gewünschtes angepasstes Angebots-Formular. Dieses besprach ich Schritt für Schritt mit dem Vertrieb und hielt es in einer Entwicklungsdokumentation fest. Die Entwicklung kann beginnen.

Das bisherige Angebots-Formular war eine Kopie des SAP-Standard-Angebotsformular und wurde etwas modifiziert. Es enthielt Bugs, unschönen als auch toten Code. Somit standen Bugfixing und Code-Refactoring an erster Stelle meiner Todo-Liste.

Anschließend entwickelte ich neue Funktionalitäten. Es war ein Zyklus aus folgenden Schritten:

  1. Neue Funktionalitäten implementieren
  2. Testen (Ich)
  3. Besprechung mit dem Vertrieb
  4. Testen (Vertrieb)
  5. Feedback einholen. Dokumentieren
  6. Ggfs. Bugfixing

Am Ende des Projektes wurde der Code gerefactored. Die Entwicklungsdokumentation wurde angepasst, formatiert und den Projektbeteiligten als auch dem ganzen SAP-Team zur Verfügung gestellt.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Bevor ich viel Zeit in die Entwicklung steckte, war es meiner Meinung nach wichtig, die Anforderungen gemeinsam schriftlich und übersichtlich festzuhalten. Das hatte mehrere Vorteile wie:

  1. Nachträgliche Änderungen auf ein Minimum reduzieren (Zeitersparnis)
  2. Erleichtert die Übergabe an andere Entwickler als auch das mentale Wechseln zwischen mehreren SAP-Projekten
  3. Aufgrund der Übersichtlichkeit lasst sich der Stand der vielen Änderungen besser besprechen / identifizieren (Was ist fertig? Was hat noch Optimierungsbedarf? Was fehlt?)

Auch habe ich viel Wert auf einen Zyklus zwischen Implementierung und Feedback gelegt. Um eventuelle Kursänderungen frühzeitig erkennen zu können und um das Testen einfacher zu halten, da Änderungen in Units bzw. Blöcke untergliedert sind.

Meine 3 wichtigsten Punkte, die ich aus diesem Projekt gelernt habe
  1. Bei der Anforderungsanalyse ein Formular (Layout) in Blöcke untergliedern (Kopfzeile links, Kopfzeile rechts, vor Positionstabelle, Positionstabelle an sich, nach Positionstabelle, ...). Verleiht dem Ganzen mehr Struktur und erleichtert Absprache mit dem Fachbereich.
  2. Vorher-Nachher-Übersicht der Anforderungen bzw. Änderungen erstellen und regelmäßig aktualisieren. Verleiht ebenfalls dem Ganzen mehr Struktur und erleichtert Absprache mit dem Fachbereich.
  3. Mehr Wissen über das SD-Modul bezüglich Angebots-Prozess, -Kopf als auch -Position.

Preisfindung-Report: Dynamische Programmierung

Ein Report über alle Preiskonditionen im Vertrieb. Das Besondere: Der Selektionsbildschirm, die Datenbankabfrage und die ALV-Tabelle werden dynamisch (während der Laufzeit) erstellt.

Allgemeine Informationen über das Projekt
  • Auftraggeber: Führender Hersteller in Bürostuhl-, Loungemöbel- und Automobilindustrie, > 2.000 Mitarbeiter
  • Projektziel: Report über alle möglichen Preisfindungs-Konditionen (Transaktion VOK0). Jede Konditionsart hat dabei eine Zugriffsfolge mit mehreren Zugriffen. Jeder Zugriff besitzt eine Datenbanktabelle. Jede Datenbanktabelle hat mehrere Felder bzw. Primärschlüssel. Zur selben Zeit können auch mehrere unterschiedliche Konditionsarten abgefragt werden.
  • Anzahl Projektbeteiligte: ~ 4 MA (SAP-Entwickler, SAP-Berater, 2 Tester aus Fachabteilung)
  • Zeitraum: 06/2024 - 07/2024
  • Branche / Bereich: Bürostuhl-, Loungemöbel- und Automobilindustrie
  • Rolle: SAP-Entwickler
  • Sprache: Deutsch, Englisch
  • Ergebnis: Report, mit dem alle möglichen Preiskonditionen und deren Sätze angezeigt werden können. Es skaliert schön, da neue Preiskonditionen nicht extra programmiert werden müssen. Auch bei Löschung oder Änderung von bereits existierenden Preiskonditionen (inkl. Zugriffsfolge, Zugriffe und Felder) keine Anpassung nötig. Mögliche Fehler während der Verwendung werden abgefangen und Anwender als auch Entwickler mit inhaltsreicher Meldung entsprechend informiert.
  • Tech Stack:
    • ABAP (Prozedural, OO)
    • ABAP Eclipse
    • ABAP-Unit-Testing
    • SAP-Reports (ALV)
    • SAP-Standard-Erweiterung (Customizing)
Wie ich an diesem Projekt gearbeitet habe

Nachdem die Anforderungen klar waren, hatte ich zuerst ich keine Ahnung, wie ich das Projekt umsetzen soll. Wie schreibe ich einen Report, ohne mindestens 50 Selektionsbildschirme, Datenbankabfragen sowie Ausgabe-Tabellen erstellen zu müssen?

Das wäre unheimlicher Aufwand. Und bei neu hinzugefügten Preiskonditionen als auch wenn neue verändert oder gelöscht werden, ist Wartungsaufwand notwendig.

Als ich das Vorgehen in der Transaktion VOK0 (Preisfindung Customizing) aus der Vogelperspektive auf ein Blatt Papier gezeichnet hatte, kam mir die goldene Idee: Dynamische Programmierung.

Bisher hatte ich damit nur oberflächlich in der Schulung „ABAP für Fortgeschrittene“ der TH Brandenburg (siehe Über mich-Seite, Abschnitt Zertifikate für mehr Informationen) zu tun. Also musste ich mich erstmal ausführlich einlesen und ausprobieren.

Während der Entwicklung wurde viel getestet, dokumentiert als auch Code Refactoring betrieben. Es wurden ebenfalls Unit-Tests geschrieben.

War der Report fertig, wurden die finalen Tests gemacht und der Code als auch die Dokumentation verfeinert. Anschließend stellte ich es vor.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Da jede Preiskondition eine andere Zugriffsfolge inklusive mehrerer Zugriffe mit jeweils unterschiedlicher Datenbanktabelle + Selektionsfelder hat, ist eine manuelle, statische Programmierung nicht möglich.

Zusätzlich kommt auch die Anforderung mehrere Konditionsarten gleichzeitig abfragen zu können. Das wiederum macht das Programm deutlich komplexer (z. B. nur ein Feld namens „Verkaufsorganisation“ im Selektionsbildschirm dynamisch anzeigen lassen, obwohl es mehrmals in verschiedenen Datenbanken vorkommt. Zudem muss die Verkaufsorganisation auch dementsprechend in jeder Datenbanktabelle mitgegeben werden, falls vorhanden).

Das wäre unheimlich viel Schreibaufwand, wenn das Programm statisch geschrieben werden würde. Außerdem würde es auch nicht schön skalieren bzw. bringt bei Preiskonditions-Änderungen viel Wartungsaufwand mit sich.

Da keiner im Betrieb dynamische Programmierung beherrscht hatte, habe ich viel Wert auf Dokumentation und Code Refactoring gelegt. Damit die Programmanpassung durch meine Kollegen möglichst einfach und schnell vonstattengeht - falls ich mir z. B. zu dem Zeitpunkt ein schönes Leben im Ausland mache 😉

Im Report wurde einiges an Fehlerbehandlung betrieben. Damit Anwender als auch Entwickler nicht im Dunkeln gelassen werden. Bei dynamischer Programmierung muss man auch sein Handwerk verstehen, da es z. B. keine Syntax-Prüfung gibt und der Code erst zur Laufzeit festgelegt wird.

Zudem habe ich Unit-Tests geschrieben, damit per Knopfdruck automatisch verschiedene Tests durchlaufen werden. Das erspart nicht nur einiges an Testaufwand. Es erleichtert auch deutlich die Erweiterbarkeit des Programms. Man kann direkt sehen, ob das Programm immer noch so läuft, wie vorgesehen. Das kommt meinen Kollegen als auch mir selbst zugute!

Meine 3 wichtigsten Punkte, die ich aus diesem Projekt gelernt habe
  1. Dynamische Programmierung: Zu dem Zeitpunkt des Projektes beherrschte niemand im Betrieb die Technik. Das heißt, ich war auf mich alleine gestellt. Durch Recherche und Ausprobieren weiß ich nun deutlich mehr (dynamischer Selektionsbildschirm, Datenbankabfrage, Ausgabe-Tabelle, ...).
  2. Papiergekritzel kann Gold wert sein. Durch die Skizzierung des ganzen Preiskondition-Prozesses konnte ich schnell den gemeinsamen Nenner finden, wodurch die dynamische Programmierung erst möglich wurde.
  3. Preisfindung: Preiskonditionen und die Transaktion VOK0 (Preisfindung Customizing) waren mir vorher unbekannt. Ich bin sehr beeindruckt, wie viel dahintersteckt.

SAP-Rollout in Kanada

SAP-Einführung in Kanada. Umstieg von bisherigen ERP-Software Macola auf SAP.

Allgemeine Informationen über das Projekt
  • Auftraggeber: Führender Hersteller in Bürostuhl-, Loungemöbel- und Automobilindustrie, > 2.000 Mitarbeiter
  • Projektziel: Umstieg von bisherigen ERP-Software Macola auf SAP. Bisher wurde SAP nur in den Werken in Deutschland und Ungarn eingesetzt. Kanada (> 150 MA) soll zwecks Vereinheitlichung nun ebenfalls SAP benutzen. Vorteil ist u. a. einfacheres Controlling bzw. Management von Ressourcen.
  • Anzahl Projektbeteiligte: ~ 40 - 60 MA („Normale“ Kanada-Angestellte ausgeschlossen, nur Führungskräfte bzw. Hauptverantwortliche der jeweiligen Abteilungen in Kanada eingeschlossen)
  • Zeitraum: 10/2022 - 10/2023
  • Branche / Bereich: Bürostuhl-, Loungemöbel- und Automobilindustrie
  • Rolle: Hauptentwickler für Formulare (Inhouse). Nebenbei Benutzer- & Berechtigungsverwaltung sowie diversen, kleineren Tätigkeiten unterstützt
  • Sprache: Deutsch, Englisch
  • Ergebnis (allgemein): Erfolgreiche SAP-Integration in Kanada. Die wichtigsten Prozesse laufen reibungslos ab. Alles Go-Live-kritische in allen möglichen SAP-Modulen (PP, MM, WM / EWM, SD, FI, CO, ABAP, BASIS) abgedeckt. Nach Go-Live kleinere Optimierungen / Schulungen.
  • Ergebnis (in Bezug auf meine Rolle): Erfolgreiche Entwicklung von mehr als 8 Formularen in diversen SAP-Modulen (Rechnung, Auftragsbestätigung, Frachtbrief, Zollrechnung, Kundenbeschwerde, ...), welche im gesamten Kanada-Werk eingesetzt werden. Darunter Anpassung von bereits existierenden als auch neu entwickelten Formularen. Umstellung des Papierformates DIN A4 auf Letter bzw. kanada-spezifische Maßen. Nach Go-Live kleinere Optimierungen.
  • Tech Stack (in Bezug auf meine Rolle):
    • ABAP (Prozedural, OO)
    • XML
    • SAP-Formulartechnologie Adobe Forms (druckbasiert, nicht interaktiv)
    • SAP-Reports (ALV, Queries)
    • SAP-Druckerverwaltung
    • SAP-Berechtigungs- & Benutzerverwaltung
    • SAP-Standard-Erweiterungen (Code als auch Customizing für Nachrichtenarten / Druckersteuerung)
Wie ich an diesem Projekt gearbeitet habe

Das war mein erstes, großes SAP-Projekt. Am Anfang des Rollouts war ich ein SAP-Neuling. Ich hatte zwar vorher schon abseits von SAP mit Software-Entwicklung zu tun, aber SAP (technisch als auch funktional) war mir größtenteils noch fremd.

Von unserem Senior-Entwickler hatte ich eine kleine Einführung in die Formular-Entwicklung bekommen - generell und in Bezug auf die bisherige Code-Basis des Unternehmens. Dieser hatte bisher nur mit den Vorgänger-Formulartechnologien SAPscript und Smart Forms zu tun.

Um die aktuellste Formulartechnologie Adobe Forms und weitere Zusammenhänge zu verstehen, arbeitete ich mich eigenständig in die Thematik mithilfe des Buches „SAP Interactive Forms by Adobe“ von SAP Press ein.

Weitere Themen wie Customizing der Nachrichtenarten, SAP-Druckersteuerung und funktionale Zusammenhänge / Prozesse wurden mir von Kollegen meiner Abteilung beigebracht.

Die Planung von Entwicklungen fanden mit den jeweiligen SAP-Beratern und Abteilungen statt. Meine technischen Fragen klärte unser Senior-Entwickler, Google oder das SAP-Formularbuch. Waren die Anforderungen geklärt, ging es an die Entwicklung.

Meine Entwicklungen, Tests usw. dokumentierte ich ausführlich. Die Dokumentationen standen dem ganzen Projekt-Team zur Verfügung. Die Tests führte ich während der Entwicklung selbst durch und danach mit den jeweiligen Abteilungen und SAP-Beratern.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Meine Entwicklungen dokumentierte ich ausführlich (Word als auch innerhalb des Codes), um nachträgliche Anpassungen meinerseits oder durch meine Kollegen zu vereinfachen und zu beschleunigen.

Dabei legte ich großen Wert auf Übersichtlichkeit und Warum-Kommentare (bspw. Warum wurde genau dieses Feld in der Transaktion XYZ verwendet und nicht ein anderes?).

Ebenfalls benutzte ich objektorientiertes ABAP. Unsere bisherigen Formulare wurden größtenteils prozedural umgesetzt (FORM-Routinen, Funktionsbausteine, ...).

Objektorientierte Programmierung hatte gegenüber der prozeduralen Programmierung große Vorteile wie:

  • Intuitiverer Code, da Objekte in der realen Welt nachgeahmt werden
  • Vererbung, wodurch Code-Wiederverwendung möglich wird (z. B. bei einheitlichen Kopf- und Fußzeilen von Formularen)
  • ABAP OO hat eine strengere Syntaxprüfung als prozedurales ABAP und lässt somit weniger Bugs und schöneren, lesbareren Code zu.
  • Modularität. Es bleibt zusammen, was zusammengehört.
  • Aufgrund der oben genannten Vorteile ist die Software insgesamt skalierbarer und die Wartung / Erweiterung effizienter. Es gibt noch mehr Gründe, warum die Software mit ABAP OO skalierbarer und wartbarer wird.
Meine 3 wichtigsten Punkte, die ich aus diesem Projekt gelernt habe
  1. Projektmanagement: Wie plane und führe ich ein Projekt? Welche Punkte müssen hinsichtlich Formularentwicklung beachtet werden? Wie dokumentiere ich ein Projekt?
  2. Wie gehe ich mit Stress und Verantwortung um? Es war großer Zeitdruck während der Entwicklung. Schlaflose Nächte inklusive.
  3. Formularentwicklung: Funktional (z. B. Wareneingang, Warenausgang, Fertigung, Bestellung) als auch technisch (Nachrichtenarten, Druckprogramm, Schnittstelle, Layout, Drucker, ...)

Kontakt

Habe ich dein Interesse geweckt? Melde dich doch gerne bei mir.
Darüber freue ich mich sehr! 😄