Übersicht
Für häufig benötigte Aufgaben in der Anwendungsentwicklung bietet das S10 Framework die Möglichkeit einer automatischen Generierung von Anwendungsteilen. Das spart Entwicklungszeit und sorgt gleichzeitig für einen einheitlichen Aufbau.

Zur Verfügung stehen diese Generierungsmöglichkeiten:  

Zudem gibt es noch folgende Werkzeuge:  

Der Einstieg ist die Transaktion /S10/UTIL:

                   

In allen Fällen dient eine Struktur aus dem SAP Data Dictionary als Grundlage (Tabelle, View oder CDS View).

Tipp: Falls Sie Daten aus mehr als einer Tabelle benötigen, ist es praktisch, zunächst mit Transaktion SE11 einen Datenbankview zu suchen oder anzulegen, der die benötigten Felder enthält.

Die einzelnen Generierungen sind voneinander unabhängig. Zum Beispiel ist es zur Generierung einer Liste nicht erforderlich, zunächst eine ABAP-Klasse zu generieren, sondern die Generierung der Liste enthält bereits die Generierung aller dazu erforderlichen Klassen.

 

1. Generierung einer ABAP Klasse

Sie geben die Datenbanktabelle an, auf die sich die Klasse bezieht, den Sprachenschlüssel für die generierten Kommentare im Coding sowie den ABAP Includenamen. Es werden immer lokale Klassen generiert, die man selbst später in der Klassenbibliothek SE24 importieren kann, falls eine globale Klasse benötigt wird.

Bei dem Include-Namen arbeiten Sie am besten mit den SAP Namenskonventionen für eigene ABAP Programme, also mit Y oder Z oder mit einem eigenen Namensraum /xxx/  beginnend.

Beispiel:

Wir generieren eine Klasse aus der SAP Tabelle"MARA":

Auswahl der Felder als Klassenattribute

Generierte ABAP Klasse

 

Neben den eigentlichen Klassenattributen werden dabei aufgrund der Data Dictionary Informationen einige Konstanten generiert:

  • "dbtabname" nennt die Datenbanktabelle. Diese Information ist für die Anweisungen s10databaseread() und s10databaseselect() erfoderlich.

  • "unit_ ..." Hierdurch wird einzelnen Attributen ein anderes Attribut zugeordnet, das eine Mengeneinheit oder eine Währung enthält. Die Ein- und Ausgabe erfolgt dann automatisch mit der zur Mengeneinheit oder Währung passenden Anzahl von Dezimalstellen, beispielsweise bei Stück "ST" ohne Dezimalstellen.

 

2. Generierung einer Liste

Hier wird eine fertige, sofort ablauffähige Listanwendung generiert, also sowohl die ABAP-Klassen als auch die HTML-Dateien. Sie können die Anwendung lokal testen, weiter anpassen und dann bei Bedarf als Listanzeige innerhalb einer umfassenderen Anwendung übernehmen.

Wie bei der Generierung einer einzelnen ABAP-Klasse geben Sie die Datenbanktabelle an, auf die sich sich die Liste bezieht, den Sprachenschlüssel sowie den ABAP Includenamen für die Generierung der Klasse. Es werden immer lokale Klassen generiert, die Sie später in der Klassenbibliothek SE24 importieren können, falls eine globale Klasse benötigt wird.

Alle HTML-Dateien werden in ein lokales Verzeichnis auf Ihrem PC generiert, sodass Sie lokal testen und weiter anpassen können. Später können Sie die Dateien dann mit dem SAP Programm "BSP_UPDATE_MIMEREPOS" von Ihrem lokalen Verzeichnis in das SAP MIME Repository des SAP Entwicklungssystems importieren. Dabei wird dann nach einem Entwicklungspaket gefragt und ein SAP Transportauftrag erstellt, mit dem Sie den Transport in Test- und Produktivsystem durchführen können.

Für den Namen des erzeugten ABAP-Programms wird der Tabellenname verwendet und mit einem Präfix versehen. Als Präfix wird vom System  "ZZS10_" vorgeschlagen, was zum Testen ausreichen sollte. Bei der späteren Übernahme in eine umfassendere Anwendung dann den eigenen Namensraum verwenden.

Bitte beachten:
Alle Konfigurationsdaten der Liste werden als Kommentare in dem generierten Programm abgelegt und bei erneutem Aufruf daraus gelesen. Wenn Sie das Programm löschen, ist auch die Listkonfiguration gelöscht.

Beispiel einer Listgenerierung:

Wir generieren eine Liste von Buchhaltungsbelegen aus dem SAP Datenbankview "VB_DEBI", der einen Join aus dem Kundenstammsatz und dem Buchhaltungsbeleg darstellt.

Als lokales Verzeichnis haben wir "F:\S10\VB_DEBI" angegeben. Es ist geschickt, das Verzeichnis passend zur Konfiguration der lokalen Testumgebung zu wählen, sodass Sie ohne Umkopieren sofort testen können.

Bei Klick auf "Start" werden die Data Dictionary Informationen gelesen, zum Beispiel Feldnamen, Texte und Feldlängen, und als Konfigurationstabelle für die Liste angezeigt. Sie können jetzt die benötigten Felder ankreuzen, dann am besten einmal "Enter", damit die ausgewählten Felder in der Tabelle als erstes angezeigt werden. Nun konfigurieren Sie die Liste wie gewünscht:

Zu den einzelnen Optionen gleich mehr. Durch einen Klick auf "Sichern und Generieren" wird das ABAP Programm und die HTML-Datei generiert und Sie können durch einen Klick auf "Anwendung testen" die erzeugte Anwendung lokal testen. Die Liste wird so generiert, dass sie sich an die Breite des Ausgabemediums weitgehend anpasst:

Desktop-Format

 

Phone, Landscape-Format

 

Phone, Portrait-Format

Neben den Feldern zur Datenselektion und der Liste selbst wird auch die Anzeige von Details zur Listzeile generiert:

Folgende Möglichkeiten zur Konfiguration der Liste stehen zur Verfügung:

  • Listfolge
    Nummer 1,2,3,... zur Reihenfolge der Listausgabe
  • Breite
    Breite der Spalte in Zeichen. Sie wird aus dem Data Dictionary vorgeschlagen. Bei der Generierung der HTML-Dateien findet eine Umsetzung in Pixel statt, die wegen der proportionalen Schrift nicht exakt der Anzahl Zeichen entsprechen muss.

    Durch den Button "Breiten vorschlagen" können Sie eine Breite auswählen, die den größten Teil oder aller in der Datenbank vorhandenen Einträge abdeckt. 
  • Text
    Falls angekreuzt, wird zusätzlich der Text ausgegeben. Voraussetzung: Im Data Dictionary ist für das Feld eine Texttabelle angegeben.
  • Textbreite
    Breite der Textspalte
  • Suchfolge
    Nummer 1,2,3,... zur Reihenfolge bei der Generierung des Feldes als Selektionskriterium
  • Text
    Falls angekreuzt, bezieht sich die Suche auf den Text ("enthalten in")
  • Auswahlbox
    Falls angekreuzt, wird zur Selektion eine Auswahlbox generiert. Voraussetzung: Im Data Dictionary ist für das Feld eine Wertetabelle hinterlegt
  • Intervall
    Falls angekreuzt, wird zur Selektion die Möglichkeit angegeben, Intervalle und komplexe Suchbedingungen einzugeben
  • Valuehelp
    Falls angekreuzt, wird der Aufruf einer Wertehilfe ermöglicht
  • Default
    Das Feld wird mit dem eingetragenen Wert vorbelegt
  • Hidden
    Das Feld wird nur versteckt, also für den Benutzer nicht sichtbar, am Frontend ausgegeben.
    Dies kann für die weitere Verarbeitung der Daten nützlich sein, um z.B. Diagramme zu generieren
  • Detailfolge
    Nummer 1,2,3,... zur Reihenfolge bei der Generierung des Feldes in der Detailanzeige (Zeilenselektion)
  • Text
    Zusätzliche Ausgabe des Textes in der Detailanzeige. Voraussetzung: Im Data Dictionary ist für das Feld eine Texttabelle angegeben.

 

 

3. Generierung einer Wertehilfe

Hier wird eine Listanzeige generiert, die zusätzlich die Möglichkeit bietet, eine Zeile zu selektieren und den Schlüsselwert aus der selektierten Zeile in ein Eingabefeld zu stellen. Zur einfachen Testmöglichkeit wird eine HTML-Seite mit einem Eingabefeld generiert, in der Sie die Wertehilfe testen können. Es wird jeweils das erste Schlüsselfeld der Tabelle zurückgeliefert. Falls eine Wertehilfe mehrere Schlüsselfelder setzen soll, müssen Sie das Programm selbst entsprechend anpassen.

Die Optionen sind identisch mit der Konfiguration der Listanzeige. Das generierte ABAP-Programm erhält den gleichen Namen wie bei der Generierung der Listanzeige plus ein angehängtes "_vh" für "valuehelp".

Beispiel:

 

Einstieg in die Generierung einer Wertehilfe für die Kundennummer, Tabelle KNA1

 

Konfiguration der Wertehilfe 

 

Generierte Testseite

 

Wertehilfe , wir wählen den zweiten Eintrag

 

Der ausgewählte Wert wird im Eingabefeld angezeigt

 

4. Generierung einer Transaktion

Hiermit können Sie das Grundgerüst einer S10 Anwendung generieren, die je nach ausgewähltem Transaktionstyp das Anlegen, Ändern oder Anzeigen von Daten ermöglicht. Prinzipiell funktioniert dies wie das Generieren einer Liste. Es besteht zusätzlich die Möglichkeit, Felder als Eingabefelder zu kennzeichen, so dass der Benutzer Daten eingeben oder ändern kann. Das Speichern muss dann in den generierten Methoden implementiert werden.

In vielen Fällen bestehen SAP Tabellen aus einer Kopftabelle, der einer oder mehrere Einträge in einer Positionstabelle zugeordnet werden, z.B. bei Aufträgen (VBAK) mit Positionen (VBAP) oder auch Qualitätsmeldungen (QMEL) und zugehörigen Aktionen (QMMA). Das Generierungstool erkennt hier bei der Angabe entsprechender Tabelle automatisch die Schlüsselbeziehungen und generiert eine entsprechende Anwendung, um Kopfdaten sowie Positionsdaten pflegen zu können.

Auswahl der Felder für eine Qualitätsmeldung 

Auswahl der Felder der Aktionen zur Qualitätsmeldung

 

Generierte Platzhalter-Methoden

Das S10 Generierungstool ermittelt automatisch den Datentyp eines Eingabefeldes und wandelt diesen in den entsprechenden Typ auf der Benutzeroberfläche um, z.B. Texteingabe oder Datumsauswahl.

Pflegen der Aktionen einer Qualitätsmeldung

 

5. Upgrade S10 Framework

Hier kann ein lokales Verzeichnis auf dem PC angegeben werden. Das Tool analysiert daraufhin sämtliche S10 Anwendungen in diesem Verzeichnis hinsichtlich der Version des installierten S10 Frameworks und vergleicht diese mit der Version, die im SAP-System, genauer im MIME-Repository, vorliegt.

Bei einer Abweichung zwischen den Versionen bietet das Tool die Option, ein Update durchzuführen. Hierzu dient der Button „Upgrade starten“. Zusätzlich ermöglicht die Funktion „Upload/Download“ einen Link zu einer SAP-Anwendung, um komplette Verzeichnisse vom oder zum MIME-Repository zu transferieren.

Beispiel für verschiedene Versionen

 

6. Lizenz eingeben

Hier kann eine Lizenz für das S10 Framework eingetragen werden. Bei der Generierung einer Anwendung wird diese dann im ABAP-Code eingetragen.

 

7. Programmanalyse

Verwendung
Konsistensprüfung der Komponenten einer S10 Anwendung

Funktionsumfang
Objekte der Überprüfung sind das ABAP Program und die dazugehörigen HTML Dateien (Views).

Geprüft wird, ob die per Konvention erforderlichen Querbezüge zwischen den Objekten existieren. Ist dies nicht der Fall, z.B. noch nicht implementiert oder Schreibfehler, wird ein Protokolleintrag ausgegeben. Querbezüge sind z.B. :

  • Zu einer im ABAP per SetScreen gerufenen HTML Seite muss in einem Unterverzeichnis eine entsprechende Datei existieren
  • Wenn in einer HTML Datei auf ABAP Variablen referenziert wird, müssen diese Variablen im ABAP deklariert sein, oder global als DDIC Objekte bekannt sein.
  • Zu einem HTML Event, das im ABAP behandelt werden soll, muss dort eine entsprechende Methode deklariert sein.

Selektion

  • ABAP Program: Das der Anwendung zu Grunde liegende ABAP Programm mit den entprechenden Klassen
  • Lokales Verzeichnis: Das zur Anwendung gehörige lokale Verzeichnis, mit dem Unterverzeichnis CLASSES.
  • Sprache: Für die Auswahl des sprachabhängigen Unterverzeichnisses im S10 Anwendungsverzeichnisbaums

Ausgabe
Eine ALV Liste mit allen gefundenen Auffälligkeiten

Innerhalb der Ausgabeliste wird bei Doppelklick auf eine Zelle je nach Spalte folgendes angezeigt:

  • Klasse: ABAP Pogramm (Include)
  • HTML-Seite: HTML Datei in der ein Problem vorliegt
  • Beschreibung: Je nach Art des Fehlers: ABAP Programm / S10 Verzeichnis / DDIC Objekt
  • Lokale Datei: HTML Datei bzw. S10 Verzeichnis

Komponente: S10 Framework