Meine Projekte - Christian Schwanse

Projekte: Christian Schwanse

Projekte.

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

Cloud- / DevOps-Projekte

Pokémon Shop: Trainer's Trove

Entdecke, kaufe und sammle Pokémon! In diesem Projekt wird die Cloud Amazon Web Services (AWS) benutzt. Demnächst werden ebenfalls Continous Integration- / Continous Delivery-Pipelines hinzugefügt.

Allgemeine Informationen über das Projekt
  • Auftraggeber: Ich selbst
  • Projektziel: Verbesserung meiner Fähigkeiten in der Softwareentwicklung in den Bereichen Frontend, Backend sowie Cloud und DevOps. Zur selben Zeit ein Hobbyprojekt erstellen - für ein bisschen Nostalgie (Kindheit) ;-).
  • Anzahl Projektbeteiligte: 2
  • Zeitraum: 10/2024 - aktuell
  • Branche / Bereich: E-Commerce / Pokémon
  • Rolle: Hauptentwickler
  • Sprache: Deutsch, Englisch
  • Ergebnis: Projekt befindet sich noch in der Entwicklungsphase.
  • Link zum GitHub-Repository: E-Commerce Pokémon Shop - Trainer's Trove
  • Link zur Webseite: Trainer's Trove
  • Tech Stack (Komplette Liste inklusive Begründung der Wahl im GitHub-Repository):
    • Auszeichnungssprache: HTML
    • Stylesheet-Sprache: CSS
    • Programmiersprache: JavaScript
    • Bibliothek: React
    • Bibliothek: Redux
    • Programmiersprache: Python
    • Web Framework: Flask
    • Testing Framework: unittest / nose
    • Identity and Access Management: AWS IAM
    • Hosting (Storage): AWS S3
    • Hosting (DNS): AWS Route 53
    • Monitoring: AWS CloudWatch
  • Besonderen Dank an
    • die Designerin für ihre tatkräftige Unterstützung: combine visual - Christine Biendl.
    • die Entwickler der PokéAPI für die Datenbereitstellung.
    • die Erschaffer des Pokémon-Franchises. Dadurch konnte ich viele tolle Kindheitserinnerungen sammeln!
Wie ich an diesem Projekt gearbeitet habe

Wenn es um die Entwicklung von neuen Features geht, werden diese als User Stories (unter Verwendung einer Vorlage und Gherkin-Syntax) im GitHub Kanban Board detailliert dokumentiert und priorisiert. Für jedes Feature wird ein neuer GitHub-Branch erstellt.

Anschließend werden Tests nach dem Test-Driven-Development-Ansatz entwickelt, die anschließend erfüllt werden müssen. Der Entwicklungsprozess wird in Zukunft auch mit CI/CD optimiert werden.

Für mehr Details, besuche den oben im Abschnitt "Allgemeine Informationen über das Projekt" genannten GitHub Link.

Warum ich das Projekt auf diese Art & Weise umgesetzt habe

Für mehr Details, besuche den oben im Abschnitt "Allgemeine Informationen über das Projekt" genannten GitHub Link. Dort wird unter anderem ausführlich erklärt, warum ich mich für die ausgewählten Technologien (beispielsweise AWS) entschieden habe.

Meine wichtigsten Punkte, die ich aus diesem Projekt gelernt habe

Obwohl das Projekt noch nicht fertig ist, konnte ich schon zahlreiche Erkenntnisse gewinnen:

  1. Cloud AWS: Für mich war das bisher ein Buch mit sieben Siegeln. Ich habe bestimmt nur an der Oberfläche gekratzt, konnte mir allerdings einen Überblick über wichtige Services (S3, EC2, Route 53, ...) verschaffen und diese einbauen.
  2. Einrichtung und Verknüpfung der Systemkomponenten: Bis alles fertig eingestellt und konfiguriert wurde, kann unheimlich viel Zeit vergehen. Besonders, wenn man bisher kaum bis gar keine Berührungspunkte mit den Technologien hatte.
  3. Planung und Überwachung der Kosten: Was ein Vorteil (Skalierbarkeit und Integrität) bei Cloud-Anbietern sein kann, kann auch ein Nachteil sein. Wählt man die falschen Werkzeuge aus oder konfiguriert diese unüberlegt, können unerwartete Aufwände und Kosten entstehen. Daher mindestens sorgfältig planen und Alarmierungen einrichten, um schnell reagieren zu können (z. B. E-Mail-Benachrichtigung, wenn Kosten einen gewissen Punkt überschreiten).

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 - aktuell (fertiggestellt, aber gelegentlich 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:
    • Auszeichnungssprache: HTML
    • Stylesheet-Sprache: CSS
    • Programmiersprache: JavaScript
    • Programmiersprache: PHP
    • Testing Framework: Jest
    • Static Code Analysis: ESLint (Selbe Konfiguration, welche das ESLint-Team benutzt)
    • Vektorgrafik-Software: Inkscape
    • Bildbearbeitung-Software: Gimp
    • Versionsverwaltung: Github
    • IDE: MS Visual Studio
    • Domain Hosting: Strato
    • FTP: FileZilla
    • Design Tool: 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 / Webentwicklung
  • 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:
    • Content-Management-System: WordPress
    • Auszeichnungssprache: HTML
    • Stylesheet-Sprache: CSS
    • Vektorgrafik-Software: Inkscape
    • Bildbearbeitung-Software: Gimp
    • E-Mail-Marketing-Plattform: Mailchimp
    • Domain-Hosting: All-Inkl
    • Monitoring: Google Analytics
    • Suchmaschinenoptimierung (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

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! 😄