Einsatz des
ABAP Test Cockpit (ATC)
Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis .................................................................................................... 2
1 Einleitung .......................................................................................................... 5
1.1 Motivation .................................................................................................. 5
1.2 Positionierung ............................................................................................ 6
1.3 Gender-Erklärung ...................................................................................... 6
2 Motivation ......................................................................................................... 7
2.1 Abgrenzung: Code Inspector (SCI) vs. CHECKMAN ................................. 8
2.2 Remote- vs. Non-Remote-ATC .................................................................. 8
2.3 ATC- und S/4HANA-Konvertierung.......................................................... 10
2.4 ATC und ABAP in der Cloud .................................................................... 11
2.5 Verfügbarkeit ........................................................................................... 11
3 Deployment-Optionen und technisches Set-up .......................................... 12
3.1 Allgemeines ............................................................................................. 12
3.2 Set-up Non-Remote-ATC ........................................................................ 13
3.3 Set-up Remote-ATC mit zentralem Prüfsystem ....................................... 14
3.3.1 Vor- und Nachteile des zentralen Prüfsystems ............................. 23
3.3.2 Zusätzliche Hinweise .................................................................... 23
3.4 ATC in ChaRM Solution Manager............................................................ 23
4 Inhaltliches und organisatorisches Set-up .................................................. 27
4.1 Verbindlichkeit ......................................................................................... 27
4.2 Umfang der Prüfungen ............................................................................ 29
4.3 Allgemeine organisatorische Empfehlungen ............................................ 30
4.4 Prioritäten ................................................................................................ 31
4.5 Befreiungen (Ausnahmen), Prozessintegration ....................................... 32
4.6 Eigene Namensräume für ATC-Prüfungen registrieren ........................... 33
4.7 Baseline ................................................................................................... 33
4.8 Anpassung/Filterung der Prüfergebnisse per Code ................................. 34
4.9 Missbrauch von Pragmas/Pseudokommentaren ..................................... 34
4.10 Rollen/Berechtigungen ............................................................................ 35
5 Definition einer eigenen Standard-Prüfvariante .......................................... 36
5.1 Baseline – konkretes Vorgehen ............................................................... 40
1 Einleitung
Die professionelle Software-Entwicklung verfolgt das Ziel, das erstellte Produkt in
hoher Qualität zu liefern. Dies ist insbesondere im Bereich der kundenindividuellen
Erweiterungen oder Individualentwicklungen auf Basis von SAP ein essenzieller
Aspekt, um die Geschäftsprozesse im SAP-System nicht zu gefährden. Ein Baustein
dafür stellt die statische Code-Analyse dar. Das Mittel der Wahl im Bereich der ABAP-
Entwicklung ist das ABAP Test Cockpit (ATC), das eine statische Überprüfung des
Codes nach unterschiedlichen Gesichtspunkten erlaubt.
Neben der „klassischen“ Qualitätssicherung, wie die statische Code-Prüfung auf eine
robuste und performante Programmierung, hat sich in den letzten Jahren ein weiterer
„Qualitätsaspekt“ für die Entwicklung von ABAP Code ergeben: Die Readiness des
kundenindividuellen Codes für die Konvertierung nach SAP S/4HANA oder für die
Überführung in das SAP-Cloud-Platform-ABAP-Environment. Auch hier setzt SAP auf
das ATC, was die zentrale Bedeutung des Tools unterstreicht. Hier ist zu bedenken,
dass die Readiness keine einmalige Aktion ist, sondern die fortschreitende
Simplifizierung in S/4HANA eine kontinuierliche Überprüfung des Codes mit jedem
neuen Release bedingt.
Das Ziel des Dokuments ist es daher, durch beschriebene Best-Practices die
Einführung und den Einsatz des ATC so effizient und effektiv wie möglich für Ihr
Unternehmen zu gestalten.
1.1 Motivation
Als Autoren-Team ist es unser Anliegen, das in den Unternehmen gesammelte Wissen
zum ATC in einem kompakten Dokument zur Verfügung zu stellen. Allerdings wird das
ATC kontinuierlich weiterentwickelt, und auch die Erfahrungen im Umgang mit dem
Tool werden bei den DSAG-Mitgliedern zunehmen. Vor diesem Hintergrund ist es
unser Ziel, dass auch dieses Dokument „lebt“ und sich durch Ihren Erfahrungsschatz
kontinuierlich verbessert.
Sie haben zwei Optionen, uns Feedback zukommen zu lassen. Zum einen können Sie
im DSAGNet im Bereich des Arbeitskreises Development einen Beitrag
veröffentlichen. Zum anderen stellen wir mit dem Leitfaden Code-Beispiele im GitHub-
Account der DSAG zur Verfügung (https://github.com/1DSAG/ATC-Best-Practice-
Guide). Dort können Sie den GitHub-Mechanismus von Issues für Ihre Anmerkungen
nutzen. Wir freuen uns auf Ihre Rückmeldung!
1.2 Positionierung
Von SAP und auch von einigen Fachverlagen existieren bereits sehr gute
Publikationen zum ATC und dessen Einsatz im Bereich der Qualitätssicherung und der
Konversion nach S/4HANA. Im Verlauf des Leitfadens verweisen wir auf aus unserer
Sicht lesenswerte Literatur aus diesen Quellen.
Wir haben das Ziel verfolgt, die richtige Mischung aus Überblickswissen und Detailtiefe
zum Thema ATC zu Papier zu bringen. Aus diesem Grund verweisen wir an den
entsprechenden Stellen auf weiterführende Quellen, um das Dokument nicht zu
überfrachten und der Leserschaft trotzdem die Möglichkeit zu bieten, bei Bedarf
detaillierte und weiterführende Informationen zu finden.
1.3 Gender-Erklärung
Aus Gründen der besseren Lesbarkeit wird in diesem Leitfaden die Sprachform des
generischen Maskulinums angewandt. Es wird an dieser Stelle darauf hingewiesen,
dass die ausschließliche Verwendung der männlichen Form geschlechtsunabhängig
verstanden werden soll.
2 Motivation
Bei der Erstellung von Software treten in der Regel Fehler auf, die sich schon während
der Entwicklung vermeiden lassen. Häufige Fehler sind zum Beispiel:
Mit Hilfe des in die ABAP Workbench und die ABAP Development Tools integrierten
Frameworks ABAP Test Cockpit (ATC) können Sie derartige Probleme ohne größeren
Aufwand erkennen und im Entwicklungsprozess die notwendigen Korrekturen
vornehmen. Dabei enthält das ATC schon in der Standardkonfiguration eine Vielzahl
an statischen Code-Tests. Falls Sie ABAP Unit Tests einsetzen, können die Tests
automatisch im Rahmen einer Prüfung ausgeführt werden. Zusätzlich gibt es z. B. in
GitHub etliche außerhalb von SAP programmierte, frei verfügbare Prüfklassen, und bei
Bedarf können Sie auch eigene implementieren.
Zusätzlich kann das ATC auch dafür genutzt werden, bestimmte Programmierstile zu
etablieren. Hierzu gehören Themen wie Definition von Modularisierungsobjekten und
Das ATC kommt mit zwei „Flavors“, welche sich je nach Einstellung des Systemtyps
(Systemparameter transport/systemtype in Transaktion RZ11) unterschiedlich
verhalten:
Das ATC lässt sich in zwei Varianten aufsetzen: Remote- oder Non-Remote-ATC. Die
Varianten unterscheiden sich in erster Linie dadurch, wo die Code-Prüfungen erfolgen.
Je nachdem ergeben sich unterschiedliche Möglichkeiten und Einschränkungen.
Beim Remote-ATC haben Sie ein zentrales ATC-System, das die Entwicklungsobjekte
auf verschiedenen sogenannten Satellitensystemen per RFC-Verbindung prüft.
Der große Vorteil ist, dass Sie ein zu prüfendes System in Ihrer Landschaft nicht erst
auf einen „aktuellen“ Release-Stand bringen müssen, um „aktuelle“ Prüfungen auf den
dortigen Entwicklungsobjekten ausführen zu können.
Sie können Befreiungen beantragen, welche auf dem zentralen System bearbeitet
werden müssen.
Sie können zentrale Prüfläufe durchführen, wobei die Ergebnisse immer auf dem
zentralen Prüf-Server bleiben. Eine Replikation der Ergebnisse ist nicht vorgesehen
und daher technisch nicht möglich.
Auch bei dieser Variante kann das System so konfiguriert werden, dass bei Task
und/oder Transportfreigabe auf den Entwicklungssystemen via RFC eine Prüfung mit
einer Prüfvariante auf dem zentralen ATC-Server durchgeführt wird. Hier wird in der
zentralen Prüfvariante definiert, welche Befunde mit welchen Prioritäten belegt
werden. Somit können Sie eine zentrale Variante definieren, um auf dem zentralen
System Prüfungen der Entwicklungssysteme durchzuführen. Die
Entwicklungssysteme können dabei auch unterschiedliche Release-Stände haben.
Nehmen Sie Alt-Befunde in die Baseline auf, so können Sie sich bei weiteren
ATC-Läufen tatsächlich auf Befunde zu neuem oder geändertem Coding
fokussieren. Weitere Infos zur Baseline finden Sie im Blog-Artikel von Olga
Dolinskaja:
https://blogs.sap.com/2016/12/13/remote-code-analysis-in-atc-working-with-
baseline-to-suppress-findings-in-old-legacy-code/ (abgerufen am 10.05.2019)
Mit der Einführung von S/4HANA werden nicht nur neue Funktionalitäten bereitgestellt,
sondern auch viele bestehende Komponenten unter dem Stichwort „Simplification“
modernisiert.
Falls Sie eine S/4HANA Konvertierung planen, sollten Sie sich am besten schon
frühzeitig damit auseinandersetzen, welche Anpassungen in Ihren Systemen notwendig
sind.
Dafür können Sie ein zentrales ATC-System nutzen, das den Code Ihres zu
konvertierenden Systems schon vor der Migration auf „S/4HANA-Readiness“ überprüft.
SAP stellt dafür eine Simplification Database bereit, die für alle relevanten Fälle
Prüfungen und Hinweise zur Aktualisierung enthält. Details zur Aktualisierung der
Simplification Database finden Sie im Hinweis 2241080.
Wie bereits in der Einleitung erwähnt, stellt diese Überprüfung keine einmalige Aktion
dar. Sie sollten regelmäßig, u.a. auch bei S/4HANA-Upgrades, die Simplifizierungen
enthalten, ihre Code-Basis mit einer aktualisierten Version der Simplification Database
überprüfen.
Mit der Aktivierung des ABAP Call Monitors (SCMON) im Produktivsystem erhalten
Sie eine detaillierte Übersicht über die tatsächlich genutzten Programme und
Funktionen. Zudem sollten Sie die Aggregation der so gesammelten Daten per SUSG
aktivieren, damit diese nicht nach sieben Tagen verlorengehen. Im Vergleich zum
Vorgänger Usage Procedure Logging (UPL) wird nicht nur das aufgerufene Objekt,
sondern werden auch Daten zum Aufrufer gespeichert. Somit können Sie das UPL
durch SCMON und SUSG ersetzen.
Damit können Sie Ihre Aktivitäten priorisieren und herausfinden, welcher Code nicht
mehr relevant für Ihre Geschäftsprozesse ist. Übernehmen Sie nur Custom-Code, den
Sie wirklich benötigen; vermeiden Sie „toten“ Code.
Nach der Konvertierung Ihres Systems nach S/4HANA werden Sie bei den Code-
Anpassungen durch Eclipse ADT mit Quick-Fixes unterstützt, die für ausgewählte Fälle
die technische Anpassung Ihres Codes automatisieren. Weiterhin stellt SAP die Fiori-
App Custom Code Migration zur Verfügung, die Sie bei der Abarbeitung unterstützen
kann. Diese App setzt ein zentrales ATC-System ab S/4HANA 1809 voraus.
Weitere Details und Tipps zur Einbindung der weiteren Tools, wie SQLM, SUSG und
auch der Custom Code Migration, finden Sie in Kapitel 8.
https://help.sap.com/viewer/7bfe8cdcfbb040dcb6702dada8c3e2f0/7.5.4/de-
DE/0bb83ef76fbf46c89fd9fa5f3af8c0c6.html (abgerufen am 10.05.2019)
2.5 Verfügbarkeit
Das ABAP Test Cockpit wird mit den folgenden Release-Ständen eingeführt:
Das ATC ist vollständig in den Object Navigator und den Transport Organizer integriert
und steht für entwicklungsbegleitende Tests zur Verfügung. Das ATC unterstützt
sowohl Entwickler als auch Qualitäts-Manager. Entwickler können
Entwicklungsobjekte im Entwicklungssystem testen. Qualitäts-Manager führen
Überprüfungen im Rahmen eines Massenlaufs mit der gleichen ATC-Konfiguration im
Qualitätssicherungssystem durch.
Weiterhin können Sie das ATC als Quality-Gate bei der Transportfreigabe oder
Freigabe einer Aufgabe2 konfigurieren und den Transport von Objekten so lange
verhindern, bis alle entsprechenden ATC-Befunde korrigiert oder befreit worden sind.
Das ATC ersetzt ab SAP Solution Manager 7.1 SP12 den Code Inspector (SCI) als
Werkzeug zur Sicherstellung der Code-Qualität und ist in den ChaRM- und CCLM-
Prozess integriert. Der SCI dient aber weiterhin als Basis für die Definition von
Prüfvarianten, die vom ATC verwendet werden.
Das ATC lässt sich auf unterschiedliche Arten in Ihre Systemlandschaft integrieren:
Die folgenden Abschnitte zeigen Ihnen das Set-up der Deployment-Optionen und
liefern Ihnen weiterführende Informationen, wie zum Beispiel Nutzung des ATC in
Verbindung mit ChaRM Solution Manager.
Die Optionen 1 und 2 kommen nur dann in Betracht, wenn Sie nicht auf einen zentralen
ATC-Server umstellen können. Sie haben einige technische Nachteile und führen zu
einem erhöhten administrativen Aufwand im Daily-Business, da Sie z. B. auf jedem
System eigene Prüfvarianten definieren müssen. Außerdem können Sie auf älteren
Systemen bestimmte Prüfungen nicht implementieren.
Sollten Sie jedoch zwingend eine der Optionen nutzen müssen, dann möchten wir hier
auf die Blogs von Olga Dolinskaja verweisen, in denen detailliert der technische
Aufbau und die Administration der Szenarien beschrieben werden.
ATC-Introduction:
https://blogs.sap.com/2012/09/19/abap-test-cockpit-an-introduction-to-sap-s-new-
abap-quality-assurance-tool/ (abgerufen am 28.10.2019)
ATC-Administration:
https://blogs.sap.com/2012/10/19/getting-started-with-the-abap-test-cockpit-for-qms-
and-admins/ (abgerufen am 28.10.2019)
https://blogs.sap.com/2012/10/18/getting-started-with-the-abap-test-cockpit-for-
developers/ (abgerufen am 28.10.2019)
Falls Sie in diesem Set-up eine Migration auf die HANA-DB durchführen wollen, ist
die Möglichkeit einer statischen Remote-Prüfung ggf. von Bedeutung. Sie finden
weitere Informationen dazu auf help.sap.com unter:
https://help.sap.com/viewer/7bfe8cdcfbb040dcb6702dada8c3e2f0/7.5.4/de-
DE/550a16acb2de445a85e96b5406cf6ee7.html (abgerufen am 29.10.2019)
Führen Sie folgende Schritte aus, um das Remote-ATC-Szenario mit einem zentralen
Prüfsystem zu konfigurieren.
4. Danach müssen Sie die „Basic Settings“ hinsichtlich der Behandlung von
Ausnahmen (Exemptions) setzen. Sie konfigurieren so, ob Sie grundsätzlich
mit Ausnahmen arbeiten wollen und für welche Art von Befunden Sie
Ausnahmen genehmigen können.
Ebenso haben Sie die Möglichkeit, an dieser Stelle die Qualitäts-Manager für die
Genehmigung der Ausnahme zu pflegen.
8. Erstellen Sie im Code Inspector (Transaktion SCI oder aus ATC heraus) auf
dem zentralen Prüfsystem eine globale Prüfvariante, die ausschließlich RFC-
fähige Prüfungen beinhaltet. Ansonsten kann die Variante nicht in den
Satellitensystemen als Remote-Prüfvariante ausgewählt werden. Prüfungen
mit einer markierten Checkbox „RFC-based“ erfüllen dieses Kriterium.
9. Hinterlegen Sie auf dem Satellitensystem im Code Inspector (SCI) noch das
„Referenzsystem zum Prüfen“.
10. Erstellen Sie auf dem Satellitensystem eine Prüfvariante, die auf die im
zentralen Prüfsystem erstellte Prüfvariante verweist. Das System prüft, ob
eine RFC-Verbindung zum zentralen Prüfsystem vorhanden ist und der User
die notwendigen Berechtigungen hat.
(1) Frei zu vergebender Name der Prüfvariante. Es sollte aus dem Namen
hervorgehen, dass es sich um eine Remote-aufgerufene Variante handelt.
(2) Name der im zentralen Prüfsystem erzeugten RFC-fähigen Prüfvariante
(3) RFC-Destination (des zentralen Prüfsystems)
(4) RFC-System (des zentralen Prüfsystems)
11. Bei der Definition eines Object-Sets im SCI haben sie die Möglichkeit, Code,
der auf dem Satellitensystem generiert wurde, auszuschließen. Dies ist aber
nur relevant, wenn Sie eine Batch-Analyse starten, bei der auch ein Object-
Set angegeben werden kann. Alternativ können Sie direkt im ATC bei der
Definition der Run-Series eine Query mitgeben. Sie können so z. B. die
relevanten oder die auszuschließenden Pakete angeben.
Hinweis:
Bei der Definition von „Scheduled Runs“ (Laufserien) im ATC können Sie entweder
direkt Selektionskriterien eingeben (Pakete, Transport Layer etc.) oder ein
vordefiniertes Object-Set aus dem SCI angeben.
Leider verhalten sich diese Selektionen unterschiedlich. Um z. B. generierte
Tabellenpflegedialoge und deren Coding bei Events analysieren zu können, müssen
Sie die direkte Abfrage im ATC wählen. Wenn Sie eine SCI-Prüfvariante nutzen,
haben Sie keine Möglichkeit, diese Art der Unterprogramme zu inkludieren.
Dieses ist der aktuelle Software-Stand des ATC zum 19.11.2019.
Gegebenenfalls wird diese Design-Lücke in einem der zukünftigen Releases
geschlossen oder über eine SAP-Note.
Nachteile:
● SAP stellt derzeit nur eine Teilmenge aller Prüfungen als Remote-fähige
Prüfungen bereit.
● Es entstehen zusätzliche Kosten für das zentrale Prüfsystem. Ist die
Transportfreigabe an den ATC gekoppelt, muss die Verfügbarkeit des
Systems hoch sein, da bei Ausfällen keine Freigaben im Entwicklungssystem
möglich sind.
In der ATC-Konfiguration können Sie wählen, ob bei Freigabe eines Transports oder
einer Aufgabe eine Information ausgegeben werden soll oder die Freigabe
abgebrochen wird.
In ChaRM wird der Transport bei Auftreten eines ATC-Fehlers nicht freigegeben, und
die aktuelle Aktion wird nicht ausgeführt. Im Gegensatz dazu erzeugt der Code
Inspector eine allgemeine Fehlermeldung. Der Transport wird allerdings trotz des
Fehlers freigegeben.
Die Wahl zwischen Code Inspector und dem ATC treffen Sie direkt in der Transaktion
ATC: „ATC-Administration/Setup/Basiseinstellungen“ im Bereich „Transportwerk-
zeugintegration“. Um das ATC zu aktivieren, müssen Sie den Code Inspector auf die
Auswahl „Code Inspector als Testtreiber deaktivieren“ stellen. Diese Einstellung muss
auf dem Satellitensystem vorgenommen werden.
Wichtig: Mit der SAP-Note 2688510 wird die Funktionalität ausgeliefert, dass aus
dem ChaRM heraus das globale Transport-Customizing des Satellitensystems
überhaupt berücksichtigt wird.
Für das ATC können Sie im Bereich „Verhalten bei Transportfreigabe“ festlegen, ob
ein Transport überhaupt geprüft werden soll oder bei Auftreten eines Fehlers der
Priorität 1, 1 und 2 oder allen Prioritäten nicht freigegeben werden kann (welche
Prioritäten geblockt werden können, hängt vom Release-Stand ab). Für die gleichen
Kombinationen an Fehlerprioritäten können Sie alternativ auch nur eine Information
bei Freigabe des Transports oder der Aufgabe anzeigen lassen.
● Wie verbindlich soll die Durchführung der automatischen Prüfungen und die
Behebung der gefundenen Probleme sein?
- als optionale Hilfestellung für die Entwickler
- oder ganz verbindlich: Ein Transport von Entwicklungen ins Testsystem
ist nur nach Behebung aller gefundenen ATC-Probleme möglich.
- Oder man wählt einen Weg zwischen diesen beiden Extremen, z. B.
Behebung von Problemen erst vor Produktivsetzung, oder zu bestimmten
Zeitpunkten innerhalb einer mehrmonatigen Release-Entwicklung.
Durch die Anlage verschiedener Prüfvarianten sind auch Kombinationen möglich: Eine
umfangreiche Prüfvariante als optional nutzbare Hilfestellung und eine kleinere für
obligatorisch zu behebende Probleme.
4.1 Verbindlichkeit
Setzt man das Cockpit nur als optionales Hilfsmittel für Entwickler ein, so wird es nach
allgemeiner Erfahrung nur von einer Minderheit der Entwickler genutzt werden. Daher
sollten Sie zum einen den Einsatz des ATC in den Entwicklungsrichtlinien
vorschreiben. Zum anderen ist es sinnvoll, die Behebung der wichtigsten ATC-
Probleme (normalerweise Priorität 1 und 2 einer bestimmten Prüfvariante)
verpflichtend zu bestimmten Zeitpunkten einzustellen.
Aus der Sicht von Entwicklern kann dies allerdings teilweise stark negativ erlebt
werden, vor allem in der Einführungsphase. Denn für den Entwickler ergeben sich
folgende Einschränkungen:
● Der Entwickler kann nicht mehr so einfach und schnell etwas im Q-System
ausprobieren, sondern muss sich sofort mit den durch die automatische
Prüfung gefundenen Problemen auseinandersetzen. Diese können in vielen
Fällen als „unnötig formal“ erscheinen und den tatsächlichen Arbeitsfortschritt
bremsen sowie evtl. auch den eigentlichen Problemlösungs-„Flow“ unter-
brechen.
● Es kommt durch die im Rahmen der Transportfreigabe durchgeführten ATC-
Prüfungen zu einer Wartezeit, die bei umfangreichen Transportobjektlisten
unter Umständen im Minutenbereich liegen kann.
● In Einzelfällen kann ein Befreiungsantrag notwendig werden, wenn das vom
ATC gefundene Problem nicht sinnvoll behoben werden kann und kein
Pragma oder Pseudokommentar möglich ist. Dadurch kommt es dann zu
einer weiteren Wartezeit, bis einer der zur Genehmigung der
Befreiungsanträge hinterlegten Kollegen den Antrag anschauen und
genehmigen kann.
Demgegenüber stehen aber die Nachteile, wenn man die Behebung der
Prüfmeldungen erst zu einem späteren Zeitpunkt (aber natürlich immer vor
Produktivsetzung) verlangt:
3 Je nach Release und Anforderung per Konfiguration oder mit dem BAdI CTS_REQUEST_CHECK
Die folgenden Ausführungen gelten für Systemlandschaften mit mindestens drei Systemen.
Best-Practice: Wir empfehlen aus der Gesamtsicht die obligatorische Prüfung bei
Freigabe der Transportaufgabe, auch wenn diese für die Entwickler etwas
unbequemer ist.
Bei Add-on-Herstellern, die umfangreichere Releases und längere Zeitspannen bis zur
Finalisierung einer Entwicklung haben, ist die obligatorische Prüfung bei
Transportfreigabe etwas weniger wichtig und wird manchmal nicht erzwungen. Dafür
kann aber eine Prüfung zum Ende des Entwicklungszyklus dort wesentlich leichter
durchgesetzt werden. Teilweise gibt es hierzu auch Regularien von SAP.
Der Umfang der Prüfungen wird optimalerweise direkt durch das Kosten-Nutzen-
Verhältnis bestimmt. Folgende Kriterien sind hier auf Ebene der einzelnen Prüfung
wichtig:
● Wie performant ist die Prüfung? Dies gilt insbesondere für die nicht für den
ATC optimierten Prüfungen der erweiterten Programmprüfung.
● Gegebenenfalls: welche Fehler müssen behoben werden, z. B. wegen der
Migration auf die HANA-Datenbank?
● Entwicklung/Programmierung
● Basis/Betrieb - vor allem, wenn ein zentrales ATC-System installiert werden
soll, aber auch für das Aufsetzen der notwendigen Berechtigungen und dem
Einspielen diverser OSS-Notes
● Qualitäts-Manager/Qualitätsverantwortliche, falls diese Rolle vorhanden ist
● Prozess-Teams/fachliche IT-Experten - informatorisch
Der Zeitrahmen für die Einführung sollte nicht zu knapp bemessen werden, damit
ausreichend Zeit für
● Infoveranstaltungen
● Justierung der Einstellungen im System
● Einspielen von OSS-Hinweisen
Wir empfehlen, vor allem die Programmierer/Entwickler frühzeitig über die Einführung
von ATC-Prüfungen zu informieren. Dies kann z. B. durch intern verteilte Blog-Artikel
Allgemein ist in der Regel der unten beschriebe Baseline-Mechanismus sinnvoll, und
Sie sollten einen robusten Genehmigungsprozess für Ausnahmen etablieren, damit es
zu keinen unnötigen Verzögerungen bei der Freigabe von Transporten kommt. Siehe
dazu die Ausführungen unten in Abschnitt 4.5.
4.4 Prioritäten
Hinweis: Allerdings ist es (wie allgemein bei der Verwendung von Software) ratsam,
nicht unnötig stark vom Standard abzuweichen. Wenn viele Prioritäten angepasst
werden sollen, sollte das Vorgehen hinterfragt und diskutiert werden.
Wenn ein ATC-Befund nach Meinung des Entwicklers nicht sinnvoll behebbar ist und
auch kein Pragma oder Pseudokommentar zur Verfügung steht (z. B.
Namenskonventionsprüfungen bei generiertem Coding), kann der Entwickler aus der
Anzeige des ATC-Befundes heraus einen Befreiungsantrag stellen.
Details zum Vorgehen (z. B. Für welche Objekte ist es möglich, Befreiungen zu
beantragen?) bietet folgender Blog:
https://blogs.sap.com/2017/02/27/remote-code-analysis-in-atc-working-with-
exemptions/ (abgerufen am 22.11.2019)
Der aktuelle Standard sieht vor, dass der Entwickler einen Genehmiger aus einer Liste
von eingerichteten Genehmigern auswählt, und dann vom System eine automatische
Mail an diesen versendet wird. Diese kann vom System dank Hinweis 2619387
mittlerweile nicht nur täglich, sondern auch unmittelbar oder wöchentlich verschickt
werden. Normalerweise wird man die Option „sofort versenden“ wählen, da unnötige
Wartezeit vermieden werden soll.
Hinderlich ist oft, dass im Standard der Genehmiger explizit ausgesucht werden muss.
Der Beantragende weiß häufig nicht, welcher Genehmiger gerade verfügbar ist. Dies
lässt sich am einfachsten über einen technischen User, hinter dem eine Postfach-
Mailadresse oder Verteilerliste steht, lösen.
Ein anderes Problem kann darin bestehen, dass für die Entwicklungs- und
Qualitätssicherungssysteme in manchen Firmen kein Anschluss an das Mail-System
eingerichtet ist.
Das ATC kann neben den Standardnamensräumen „Y*“ und „Z*“ auch Objekte in
eigenen Namensräumen prüfen. Die eigenen Namensräume müssen dazu registriert
werden. Diese Namensraumreservierung wird ausschließlich vom ATC verwendet und
hat keine Auswirkungen auf die Namensräume, die bei der SAP lizenziert wurden.
Vorgehensweise:
4.7 Baseline
Ein Entwickler soll eine kleine Änderung an einem älteren Programm vornehmen.
Wenn das Programm schon lange Zeit ohne auffällige Fehler produktiv genutzt wurde
und er es evtl. auch nicht selbst geschrieben hat, wird er wenig Motivation aufbringen,
eine große Anzahl „alter Probleme“ (ATC-Befunde) in dem Programm zu korrigieren.
Auch der jeweilige Auftraggeber hat oft kein Verständnis für den Zusatzaufwand bei
der Entwicklung und beim Testen.
Mit einer Baseline können Sie eine Menge von bekannten Befunden im Legacy-Code
für weitere ATC-Läufe so markieren, dass sie nicht mehr in den Resultaten auftauchen.
● Befund unterdrücken
● Befund befreien
● niedrige Priorität zuordnen
Die Definition der Baseline können Sie auch nachträglich noch anpassen und
verfeinern.
Mit der Baseline haben Sie also die Möglichkeit, einen Nullpunkt zu definieren, ab dem
Ihre aktuelle Prüfvariante gültig sein soll. Optional können Sie auch bestimmte,
besonders wichtige Prüfungen von der Baseline-Definition ausnehmen, so dass die
entsprechenden Befunde auch in Alt-Coding behoben werden müssen. Eine weitere
Möglichkeit ist, in größerem Umfang bestimmte False-Positive-Befunde zu
unterdrücken. Mehr Informationen dazu finden Sie in folgendem Blog:
https://blogs.sap.com/2016/12/13/remote-code-analysis-in-atc-working-with-baseline-
to-suppress-findings-in-old-legacy-code/ (abgerufen am 10.05.2019)
Aus verschiedenen Gründen kann es sinnvoll sein, die vom ATC im Standard
gefundenen Befunde anschließend mit einer impliziten Erweiterung5 anzupassen bzw.
zu filtern:
● Änderung der Priorität, wenn dies mit dem Standardmechanismus nicht geht
(z. B. bei der generischen Suchfunktion, die für kritische Sprachelemente wie
Makros verwendet wird)
● Falls dies – je nach NetWeaver-Release – noch nicht im Standard
gewährleistet wird: Löschung von Befunden für eingebundene SAP-Includes
● Löschung von Befunden für mehrfach-verwendete „Legacy“-Includes gemäß
einer „Whitelist“ in einer Z-Tabelle, wenn man diese aus Qualitätssicht
akzeptiert, aber nicht erneut genehmigen möchte. (Ansonsten werden diese
Befunde - trotz Baseline-Mechanismus - bei jeder Verwendung in einem
neuen Rahmenprogramm erneut bemängelt.)
● Löschung von Namenskonventions-Befunden für generiertes Coding oder
Framework-Coding, wo die Parameternamen nicht frei gewählt werden können
Hierfür kann (im Fall NetWeaver 7.50, dezentraler ATC) eine implizite Erweiterung am
Ende der Methode IF_SATC_CI_ADAPTER~ANALYZE_OBJECTS() der lokalen
Klasse ADAPTER_2_CODE_INSPECTOR in der globalen Klasse
CL_SATC_CI_ADAPTER verwendet werden.
Es besteht immer die Gefahr, dass die Möglichkeit von Pragmas bzw.
Pseudokommentaren missbraucht wird, dass also – ohne nachzudenken – ein ATC-
Befund immer durch Eintragen des Pragmas „gelöst“ wird. Mit solch einem Vorgehen
wird das eigentliche Ziel der ATC-Einführung wissentlich oder unwissentlich
unterlaufen.
5 Anmerkung für Nicht-Entwickler: Implizite Erweiterungen sind eine von SAP angebotene
Erweiterungsmöglichkeit, bei der ohne Modifikationsschlüssel zusätzliche Programmzeilen am
Anfang oder Ende einer Modularisierungseinheit eingefügt werden können.
4.10 Rollen/Berechtigungen
Die Prüfvarianten können als lokale oder globale (für alle Benutzer sichtbare)
Varianten hinterlegt werden. Die folgende Darstellung liefert einen Überblick über die
wesentlichen Aspekte des ATC.
Eine lokal definierte Kopie der globalen Prüfvariante kann hilfreich sein, wenn z. B. bei
einem technischen Ausfall des zentralen Systems die Prüfungen trotzdem durchlaufen
werden sollen.
Die Definition des Prüfumfangs muss sich nach dem Zeitpunkt der Durchführung der
Prüfung richten. Sowohl die lokale Online-Prüfung der Entwickler als auch die Prüfung
bei der Freigabe eines Transports sollte möglichst schnell durchgeführt werden
können und nur in Ausnahmefällen länger als einige Minuten dauern (z. B. bei
Objekten mit vielen Includes). Deshalb sollten Sie in der Standard-Prüfvariante nur
Prüfungen hoher Priorität aufnehmen, welche beim Auftreten eines Fehlers einen
Transport ins nachgelagerte System verhindern sollen.
Die Einstellung, die Freigabe eines Transportes aufgrund von ATC-Fehlern der
Priorität 1 und 2 abzubrechen, können Sie unter dem Menüpfad „ATC-
Administration/Setup/Basiseinstellungen“ im Bereich „Transportwerkzeugintegration“
vornehmen.
Eine Übersicht der Fehlerpriorität bekommen Sie in der Transaktion SCI oder dem
ATC-Menüpfad „ATC-Administration/Qualitäts-Governance/Prüfvarianten verwalten“
unter dem Menü „Code Inspector/Verwaltung von/Meldungsprioritäten“. Hier können
Sie bei Bedarf die Meldungspriorität anpassen.
Für Hintergrundjobs können Sie die zu untersuchenden Objekte in der Transaktion SCI
oder unter dem Menüpfad „ATC-Administration/Qualitäts-Governance/Prüfvarianten
verwalten“ bestimmen. Dies kann eine Objektmenge, ein bestimmter Transportauftrag
oder auch ein bestimmtes Entwicklungsobjekt sein.
Bei der Freigabe eines Transports von Kopien wird bis zum aktuellen Release
7.52 SP 0002 grundsätzlich keine ATC-Prüfung durchgeführt6.
Bei der Verwendung von Prüfvarianten kann exemplarisch zwischen folgenden Use-
Cases unterschieden werden:
In der Regel wird die Baseline für alle kundeneigenen Programme einmal erstellt und
die zu verwendende Prüfvariante orientiert sich daran, was zukünftig bei der
Transportfreigabe geprüft werden soll. Beim Erstellen der Baseline können Sie
festlegen, ob die Befunde komplett unterdrückt, als „ausgenommen“ oder mit Priorität
3 angezeigt werden sollen.
Praxisbeispiel:
Im Unternehmen wird festgelegt, dass direkte Updates auf SAP-Tabellen eine der Prio-
1-Prüfungen bei der Transportfreigabe sein sollen. Diese Updates sollen wenn möglich
entfernt werden, weshalb die Meldung eine Transportfreigabe verhindern soll, selbst
wenn das betroffene Coding durch die aktuelle Änderung nicht angefasst wurde. Der
Programmierer kann dann gegebenenfalls eine Befreiung beantragen und eine
Begründung liefern, weshalb es aktuell keine Alternative zum harten Update gibt.
6 https://answers.sap.com/questions/309739/atc-transport-checks-not-working.html
(abgerufen am 14.04.2019)
Da die Befreiungen in einer Tabelle gespeichert werden, steht die Information später
noch zur Verfügung und kann bei der Dokumentation und der Festlegung weiterer
Maßnahmen helfen.
Für die Prüfvarianten bedeutet dies, dass die Prüfung auf direkte SAP-Tabellen-
Updates in der Prüfvariante für die Transportfreigaben enthalten sein muss, in der
Prüfvariante für die Erstellung der Baseline jedoch nicht enthalten sein darf.
Hinweis: Damit bei der Prüfung auf harte Tabellen-Updates nur SAP-Tabellen
berücksichtigt werden, können Sie in den Einstellungen die Auswahl entsprechend
einschränken, z. B. durch das Ausschließen aller Tabellen im Kundennamensraum
und der TVARVC:
Der Code Vulnerability Analyser ist ein Add-on zum ATC, um statische
Sicherheitsprüfungen auszuführen. Im SAP-Standard werden bereits statische
Security-Prüfungen angeboten. Der Vorteil des CVA ist der umfangreichere
Prüfrahmen der Code-Stelle. Als Beispiel sei die SQL-Injection-Prüfung genannt: Der
CVA erkennt mit einer Datenflussanalyse eine SQL-Injection dann, wenn der
dynamische Wert an einer anderen Stelle des Programms durch Benutzereingabe
befüllt wird. Dies führt zu einem genaueren Resultat.
Dies ist in sehr detailliertem Ausmaß (je Meldung) konfigurierbar, oder man deaktiviert
einzelne Meldungen, indem diese nicht angezeigt werden sollen.
Eine detaillierte Übersicht zu den angebotenen Prüfungen findet sich in folgendem SAP-
Blog: https://blogs.sap.com/2017/01/19/code-vulnerability-analyzer-checks/
(abgerufen am 22.11.2019)
Sie müssen den CVA-On-Premise separat lizenzieren und mit dem Report
RSLIN_SEC_LICENSE_SETUP aktivieren. Genauere Informationen finden Sie im
Hinweis 1855773. Für ABAP in der Cloud ist die Nutzung des CVA lizenzkostenfrei.
Hinweis: Die abapOpenChecks und der Code Pal for ABAP sind Community-
Projekte und somit kein Teil des SAP-Supports. Bitte öffnen Sie bei SAP keine
Meldungen zu diesen Themen.
Üblicherweise wird im ATC eine Prüfvariante als Default definiert, die dann
standardmäßig sowohl bei manuell angestoßenen Prüfungen als auch bei der Task-
/Transportfreigabe verwendet wird, in der Regel durch den Baseline-Mechanismus nur
für neue oder geänderte Codestücke. Es kann aber Gründe geben - z. B. die
Performance bestimmter Prüfungen -, diese nicht im Zuge der Transportfreigabe
auszuführen. In diesem Fall empfehlen wir die Definition einer weiteren Prüfvariante,
die diese zusätzlichen Prüfungen enthält und den Entwicklern für Ad-hoc-Prüfungen
zur Verfügung gestellt werden kann. Diese Variante muss dann in der SE80 (bzw.
ADT) manuell im Kontextmenü über „Prüfen – ABAP Test Cockpit (ATC) mit…“
ausgewählt werden (anschließend im Reiter Optionen die Code-Inspector-Prüfvariante
wählen).
Die folgende Tabelle soll als Anregung dienen, welche Prüfungen aus unserer Sicht
als Default-Prüfvariante Sinn machen. Welche davon einsetzbar sind, ist unter
anderem vom Release-Stand abhängig.
Beim Thema Performance wird manchmal außer Acht gelassen, dass es in der Regel
nur extrem wenige „Hotspots“ gibt. Gemeint sind die Code-Stellen, die die Gesamt-
Performance wirklich in relevantem Maße verschlechtern, also einige Prozent der
Gesamtlaufzeit von Performance-kritischen Programmen ausmachen.
Auch für Neu-Coding sollten Sie beachten, dass es einen Zielkonflikt zwischen
Performance und Einfachheit/Wartbarkeit geben kann. Wenn also das Coding durch
eine von der ATC-Performance-Prüfung geforderte „Verbesserung“ komplexer
(schwerer lesbar, schlechter wartbar) wird, sollte man ein Pragma/Pseudokommentar
nutzen, solange der jeweilige SQL-Befehl noch nicht als Hotspot identifiziert ist.7
Allgemeine Prüfungen
CDS-Modellierungsprüfung (SADL/BOPF) +
Performance-Prüfungen
Syntaxprüfung/Generierung
Robuste Programmierung
DB-Operationen in Pool/Cluster-Tabellen ++
suchen
Komplexe WHERE-Bedingung in +
SELECT-Anweisung
Dynamische Tests
Suchfunktionen
Anweisungsmuster: aufnehmen
CALL FUNCTION 'DB_EXISTS_INDEX' *
CALL FUNCTION 'DD_INDEX_NAME' *
Regex zur Mailadressenerkennung
Nutzen Sie bereits die abapOpenChecks, steht Ihnen hier auch eine Prüfroutine
„NamingConventions“ zur Verfügung. Hier haben Sie u. a. die Möglichkeit, z. B.
generierte BW-Extraktor-Bausteine von der Prüfung auszunehmen (in der Regel
entsprechen die generierten Signaturen nicht den eigenen Namenskonventionen).
Obsolete statement ++
Kernel CALL +
Empty branch +
Da das Projekt Code Pal for ABAP relativ jung ist, können wir noch keine fundierten
Empfehlungen zu den Prüfungen abgeben. Dies wird ergänzt, sobald wir mehr
Erfahrung sammeln konnten.
Wie der Name schon vermuten lässt, ist „Functional DB“ Pflicht und „Functional DB
Addition“ optional.
Die Variante „Functional DB“ hat das Ziel, Eigenentwicklungen zu bewerten, die auf
spezifische DB-Funktionen angewiesen sind und daher bei der Migration auf eine
HANA-Datenbank angepasst werden müssen.
Prüfungen dieser Prüfvariante sind nicht obligatorisch für die Migration von HANA,
werden aber von SAP empfohlen.
Da die Ergebnisse dieser Prüfungen sich überlappen können, ist es ggf. sinnvoll, eine
eigene Prüfvariante mit der Kombination der beiden Varianten anzulegen.
Es hat sich bewährt, sich schon frühzeitig mit diesen Prüfungen zu beschäftigen.
Allgemeine Informationen zum ATC und der HANA-Migration finden Sie auch auf
help.sap.com:
https://help.sap.com/viewer/7bfe8cdcfbb040dcb6702dada8c3e2f0/7.5.4/de-
DE/2b99ce231e7e45e6a365608d63424336.html (abgerufen am 22.11.2019)
Abbildung 25 S/4HANA-Readiness-Release-Einstellungen
In den meisten Fällen werden Sie voraussichtlich mit den von SAP ausgelieferten
Standardprüfungen auskommen. Falls Sie aber etwas vermissen, können Sie Ihre
eigenen Prüfungen implementieren.
Bevor Sie das tun, sollten Sie unbedingt prüfen, ob nicht doch eine der
Standardprüfungen so eingestellt werden kann, dass sie Ihren Anforderungen
entspricht. Am besten erstellen Sie sich dazu vorab passende Testobjekte, mit denen
Sie testen können, wie die Prüfungen reagieren. Ähnlich wie bei ABAP Unit Tests hat
es sich bewährt, dafür mindestens ein positives und mehrere negative Beispiele zu
finden.
Zu guter Letzt können Sie prüfen, ob Ihnen die abapOpenChecks oder der Code Pal
for ABAP weiterhelfen. Hierbei handelt es sich um Open-Source-Projekte, die viele
weitere Prüfungen bereitstellen und durch die Community (also auch Sie!)
weiterentwickelt werden. Weitere Details zu den abapOpenChecks und dem Code Pal
for ABAP finden Sie in Anhang B bzw. Anhang C.
Denken Sie auch daran, dass SAP selbst die Prüfungen immer weiterentwickelt. Ggf.
gibt es also schon einen SAP-Hinweis, der die von Ihnen vermisste Prüfung enthält
und in Ihr System eingespielt werden kann. Falls Sie dennoch zum Schluss kommen,
dass die bestehenden Prüfungen Ihren Fall nicht abdecken können, können Sie die
Ärmel hochkrempeln!
Welche meiner Regeln in den Guidelines Nicht jede Regel innerhalb der Guidelines
sind als eigene kundenindividuelle Prüfung kann als automatisierte Prüfung abgebildet
umsetzbar? werden. Daher ist ein grober Algorithmus
bzw. ein Design notwendig, bevor Sie mit der
Entwicklung einer eigenen Prüfung starten.
Lässt sich die Prüfung Remote-fähig Abwägen, wie hoch der Aufwand ist, um die
implementieren? Prüfung Remote-fähig zu machen (wegen
lokaler Datenabhängigkeiten).
Wo finde ich die Daten zu meiner Ein tiefes Verständnis vom SAP-Standard ist
betreffenden Prüfung? notwendig.
Beispiele hierfür sind:
● aus welchen SAP-Tabellen oder
Methoden Daten ermittelt werden
können, bzw.
● für Coding: Wie die Statement- und
Token-Tabellen zu interpretieren sind
Was ist das Ziel meiner Prüfung? Stoppen des Transportes oder
Hilfe beim Code-Review
1. Prüfkategorie anlegen
SAP bietet schon vordefinierte Kategorien an, wie beispielsweise
Sicherheits- oder Performance-Prüfung, die man nutzen kann. Will man die
selbst entwickelten Prüfungen in einer eigenen Kategorie zusammenfassen,
erzeugt man eine neue Klasse als Kopie von
CL_CI_CATEGORY_TEMPLATE. Darin ändert man dann den Titel und die
Beschreibung, und über die Transaktion SCI und Verwaltung von Tests kann
man die Kategorie auch aktivieren und sie in der Variantenkonfiguration
sichtbar machen.
Abbildung 27 Prüfkategorien
2. Die nächste Aktion ist es, die Prüfung selbst zu implementieren. Für die
Implementierung stellt SAP Beispielklassen bereit, die Sie als Kopiervorlage
nutzen können. Die Klasse CL_CI_TEST_SCAN_TEMPLATE ist für die
Prüfung von ABAP Code vorgesehen, für andere Entwicklungsobjekte können
Sie die Klasse CL_CI_TEST_ROOT_TEMPLATE verwenden. Die Templates
sind größtenteils leer, Sie müssen einige Methoden mit Coding füllen.
a. CONSTRUCTOR (verpflichtend):
i. Im Konstruktor sind einige Attribute zu setzen, die bereits zu Teilen
im Root-Template zu sehen sind.
ii. Tipp für jene, die ATC-Remote verwenden: Das
REMOTE_RFC_ENABLED-Flag muss gesetzt sein, um die Prüfung
über das Remote-ATC-System verwenden zu können.
b. RUN (verpflichtend):
i. Abhängig von der Art der Prüfung wird hier die Objektkollektion
durchgeführt. Aus Performance-Gründen ist es manchmal
notwendig, die Objekte in der Run-Methode zu sammeln (in einer
eigenen Tabelle vom Typ SCIR_TOBJ - als Klassenattribut) und in
der Methode RUN_END zu prüfen.
c. ANALYZE_PROC:
i. Hier können Sie den ABAP Code prüfen. Neben dem geparsten
Quelltext und den Kommentaren stehen hier auch die Parameter des
Aufrufs zur Verfügung. Üblicherweise wird in dieser Methode auf
bestimmte Schlüsselwörter im Quelltext geprüft.
d. IF_CI_TEST~QUERY_ATTRIBUTES (optional):
i. HAS_ATTRIBUTES muss im Constructor gesetzt werden, wenn die
Prüfung weitere Attribute benötigt.
e. GET_ATTRIBUTES/PUT_ATTRIBUTES (optional):
i. GET_ATTRIBUTES/PUT_ATTRIBUTES wird verwendet, um
Eigenschaften zu liefern bzw. zu setzen
ii. Sie können die Klasse CL_CI_QUERY_ATTRIBUTES nutzen, um
diese Attribute per Pop-up bei der Erstellung der Prüfvariante im
Code Inspector zu pflegen
f. IF_CI_TEST~DISPLAY_DOCUMENTATION (optional):
i. Wenn das Attribut HAS_DOCUMENTATION im Konstruktor gesetzt
ist, wird diese Funktion für die Anzeige der Klassendokumentation
verwendet.
g. ADD_INFO:
Zur Ausgabe der Prüfergebnisse verwenden Sie die ADD_INFO-
Methode.
Falls Ihre Prüfung nicht von CL_CI_TEST_ABAP_COMP_PROCS
abgeleitet ist, nutzen Sie dafür die INFORM-Methode aus der
Referenz B: „How to Build a new Check for the Code Inspector“ (Stand 2004):
https://blogs.sap.com/2018/09/06/remote-code-analysis-in-atc-how-to-write-an-atc-
check/ (abgerufen am 13.11.2019)
Falls Sie in die Thematik der Eigenentwicklung von Prüfungen und Objektkollektoren
tiefer einsteigen möchten, empfehlen wir Ihnen die Lektüre des „Praxishandbuch SAP
Code Inspector” (Randolf Eilenberger, Frank Ruggaber und Reinhard Schilcher, SAP
PRESS). Leider ist dieses Buch auf dem Stand 2011.
6.2.2 Was muss ich tun, wenn ich eine Prüfung Remote-fähig implementiere?
Vorbereitend kann es je nach Release-Stand im zu prüfenden System notwendig sein,
spezielle SAP-Hinweise einzuspielen.
Bei der Entwicklung Ihrer Prüfungen sollten Sie folgende Punkte beachten:
Falls Sie eine eigene Datensammlung brauchen, sollten Sie diese entsprechend als
RFC-Aufruf innerhalb der RUN-Methode implementieren.
● Schaffen Sie keine Abhängigkeiten von lokalen Daten zum globalen Prüfsystem
(z. B.: Abfragen der TADIR-Tabelle im zentralen System, um Objektinfos zu
erhalten).
Um Dictionary-Objekte in Remote-Systemen zu analysieren, muss auf dem
jeweiligen System ein RFC-fähiger Baustein erstellt werden, der die TADIR,
DD02L…. auswertet. Um sich diese Objekte aus der Ergebnisliste des
zentralen ATC-Systems anschauen zu können, muss der Hinweis 2831860
implementiert werden. Ohne den Hinweis wird immer versucht, das Dictionary-
Objekt im zentralen ATC-System zu finden.
https://launchpad.support.sap.com/#/notes/2831860
● Verwenden Sie keine Release- bzw. Kernel-abhängigen Funktionalitäten
(RTTI).
● Verwenden Sie die Methoden der Klasse
CL_CI_TEST_ABAP_COMP_PROCS, um Informationen am lokalen System
zu erhalten.
● Weitere Informationen, die Sie aus dem lokalen System erhalten wollen,
müssen Sie über ein Remote-fähiges Funktionsmodul implementieren. Die
RFC-Destination bei Aufruf ist in Ihrer Prüfung nicht verfügbar. Die aktuell
gültige SourceID ist im Klassenattribut der Klasse
CL_CI_TEST_ROOT=>SRCID verfügbar und muss noch in eine RFC-
Destination gecasted werden. Dies kann mit
CL_ABAP_SOURCE_ID=>GET_DESTINATION erfolgen.
Prüfläufe bestehen aus zwei Komponenten, aus den in der Prüfvariante gesammelten
Einzelprüfungen und der zu prüfenden Objektmenge.
Aktiviert man das ATC bei der Transportfreigabe, ergibt sich die Objektmenge implizit
aus dem Inhalt des Transports. Möchten Sie Aussagen über die Code-Qualität eines
Gesamtsystems treffen, so können Sie dies relativ einfach über die Repository-
basierte Objektselektion bei der Anlage einer Konfiguration vornehmen. Alternativ
können Sie über den Radio-Button „nach Objektmenge“ weitere, im CI definierte
Objektmengen einbinden.
Die „CI Objektmengen“ bieten nun die Option, eigene Objektkollektoren zu entwickeln.
Diese können über den fünften Tab-Reiter in der Objektmengendefinition eingebunden
werden.
Mit Hilfe des TMS lassen sich Objekte ermitteln, die aktuell bearbeitet werden, Objekte,
die kürzlich bearbeitet wurden oder auch Objekte, die importiert wurden. In
Kombination mit der entsprechenden Prüfung können Sie Aussagen ableiten, welche
Befunde bearbeitet werden könnten oder ob die Objekte eines Imports noch korrekt
sind. Letzteres betrifft u. a. Objekte, die nicht statisch beim Import geprüft werden.8
8 Beispielhaft seien hier Adobe Forms genannt. Werden im Kontext DDIC Objekte eingebunden, die
nicht in derselben Form im importierten System vorliegen, kommt es erst bei der Ausführung zu
einem Fehler. Im Zusammenspiel mit einer – eigenen – Prüfung, die die Formulare prüft, können
diese Fehler erkannt werden.
Die Entwicklung eigener Kollektoren ähnelt der Entwicklung von eigenen Prüfungen.
Eine Kollektorenklasse erbt von CL_CI_COLLECTOR_ROOT.
9 UPL-Daten lassen sich mit Hilfe des Programms /SDF/SHOW_UPL deserialisieren und dann über
die Objektmenge „Datei-upload“ für Prüfläufe zur Verfügung stellen. Dies ist aber zum einen ein
ständiger manueller Aufwand und zum anderen lassen sich in großen Systemen nicht alle
Datensätze auf einmal deserialisieren. Über eine Zusatzentwicklung lässt sich dies automatisieren.
https://blogs.sap.com/2012/08/23/code-inspector-custom-object-collectors/
(abgerufen am 25.09.2019)
Bei der Entwicklung von eigenen Prüfungen sind Unit-Tests extrem hilfreich. Sie
sollten sich dabei darauf konzentrieren, den Code so zu strukturieren, dass Unit-Tests
möglichst einfach zu implementieren sind. Falls Sie im Unit-Test die Klasse
CL_CI_CHECK_RESULT für den Aufruf verwenden, sollten Sie daran denken, dass
Sie für die Ausführung der Unit-Tests geeignete Prüfvarianten anlegen müssen und
diese dann auch mittransportiert werden müssen.
Alternativ können Sie sich auch mit den Möglichkeiten der abapOpenChecks
auseinandersetzen, dort sind die Klassen klarer strukturiert und ohne Abhängigkeit von
Prüfvarianten testbar. Auch der Code Pal for ABAP beinhaltet Unit-Tests und kann als
Vorlage für ihre eigenen Prüfungen dienen.
Ein weiterer Vorteil der abapOpenChecks und des Code Pal for ABAP ist, dass man
die neuen Prüfungen problemlos via GitHub mit der Community teilen kann.
SAP hat mit ATC ein umfangreiches, dynamisches Tool entwickelt, welches gewartet und
administriert werden muss. Die Erfahrung im Unternehmen hat gezeigt, dass es sinnvoll
ist, ein ATC-Team, z. B. bestehend aus SAP-Anwendungsentwicklern, zu bilden (siehe
Kapitel 4, Abschnitt „Einführung im Unternehmen“). Dieses Team ist – meist als
Zusatzaufgabe – für folgende Aufgaben zuständig:
Alternative für die letzten beiden Punkte: In Abhängigkeit des Systemkopie-Tools können
ATC-spezifische Tabellen durch eine Systemkopie vom Überschreiben ausgeschlossen
werden. Siehe auch Blog-Eintrag https://answers.sap.com/questions/10168548/atc-
excemptions-and-system-copies.html (abgerufen am 22.11.2019)
● ein Screenshot der Standard-Prüfvariante (am besten auch mit den Details aus
den Attributen/Parametern der einzelnen Prüfungen) erstellt werden
● eine Gesamtprüfung des eigenen Codings im System erstellt werden
(insbesondere sollte die Statistik gesichert werden. Konkrete DB-Tabellen siehe
auch Blog-Eintrag https://answers.sap.com/questions/10168548/atc-
excemptions-and-system-copies.html; abgerufen am 22.11.2019)
● neue Prüfungen
● geänderte Standardprioritäten
● geändertes Verhalten der Prüfungen
Daraus ergeben sich dann möglicherweise Änderungen an der Prüfvariante oder den
Prioritäten.
Falls es mehrere Genehmiger gibt, empfiehlt es sich, ein zentral zugreifbares Dokument
anzulegen, wo generelle „interne Regeln“ bei der Behandlung von Befreiungsanträgen
hinterlegt werden, z. B.:
Vor allem wenn ATC-Prüfungen obligatorisch bei Transportfreigabe sind, werden immer
wieder bestimmte Arten von Anfragen an das ATC-Team gestellt. Hier wollen wir einige
Hinweise geben.
Bei den Befunden, die aus der erweiterten Programmprüfung (SLIN) kommen, sind oft die
im ATC angezeigten Informationen nicht ausreichend verständlich. Hier empfiehlt es sich,
für das jeweilige Objekt direkt die erweiterte Programmprüfung zu starten.
Hinweis: In Zusammenhang mit der SLIN ist auch interessant, dass Fehlermeldungen
der Prio 3 in SLIN (dort linke Spalte, in rot) zurzeit auf Prio 3 in ATC (d. h. bei
Freigabeprüfung nicht zu beheben) gemappt werden. Damit ist das ATC dann weniger
strikt als die erweiterte Programmprüfung. (SLIN kennt die Unterteilung nach zwei
Dimensionen: Fehler/Warnung/Info und Prios)
In diesem Fall können Sie die Prüfklasse ermitteln, indem Sie in der Transaktion SCI unter
Code Inspector > Verwaltung von > Tests die Prüfung identifizieren.
Anschließend setzen Sie einen externen Breakpoint in der Methode RUN der zugehörigen
Klasse. Um direkt eine bestimmte Prüfung zu debuggen, können Sie in den meisten Fällen
im Konstruktor der Klasse den Zusammenhang zwischen der Prüfmeldung und der
„Kennung für Meldungs-Code“ (scimessages-code) ermitteln.
Über Volltextsuche nach diesem Code finden Sie die zugehörige Methode (und evtl. lokale
Klasse) in der Prüfklasse.
Der SQL-Monitor ist ein Tool von SAP, mit dem die Datenbankzugriffe über einen zu
definierenden Zeitraum analysiert werden können. Er steht ab SAP ECC 6.0 EHP7 zur
Verfügung. Das Logging der Datenbankzugriffe geschieht üblicherweise im
Produktivsystem, und der Zeitraum sollte im Bereich von einer Woche bis maximal vier
Wochen liegen. Wie bei jedem Analyse-Tool werden auch hier zusätzlich Ressourcen
verbraucht, und Sie sollten den Einsatz vorher mit der SAP-Basis in Ihrem
Unternehmen besprechen und eventuell überwachen lassen.
Unter diesem Link finden Sie grundsätzliche Informationen zum SQL-Monitor und auch
die Voraussetzungen und Installationsanleitungen:
https://www.sap.com/documents/2013/10/92b57ae6-527c-0010-82c7-
eda71af511fa.html (abgerufen am 05.12.2019)
Die Ergebnisse des SQLM können in der Transaktion SWLT, zusammen mit den
Ergebnissen der ATC-Hintergrund-Jobs auf den Entwicklungssystemen, dediziert
analysiert werden. Man kann so die Laufzeitinformationen des SQLM zusammen mit
den Informationen aus der statischen Prüfung des ATC analysieren und so
Performance-kritische Stellen identifizieren.
Außerdem kann aus Sicht des ATC, wenn dort Befunde im Umfeld der Performance
vorliegen, im SQLM geprüft werden, ob diese überhaupt relevant sind und falls ja, mit
welcher Priorität eine Performance-Optimierung erfolgen soll. Wenn z. B. die Zugriffe
im entsprechenden Development-Objekt äußerst selten im Produktivsystem
durchgeführt werden, muss man diesen Performance-Befund gar nicht oder jedenfalls
nicht mit hoher Priorität bearbeiten.
Im Zusammenspiel von ATC und SQLM kann man sehr effektiv Performance-
Optimierungen erzielen. In der Praxis hat sich immer wieder gezeigt, dass solche
Analysen als iterativer Prozess aufgesetzt werden müssen, also zyklisch durchgeführt
werden sollten. Idealer Zeitpunkt sind z. B. größere Releases oder Monats-Releases.
Wenn man im Unternehmen kürzere Deployment-Zyklen hat, sollte man diese
SQLM-/ ATC-Prüfungen zumindest einmal pro Quartal fahren.
SCMON steht in Systemen mit einem ABAP-Stack ab 7.50 zur Verfügung und kann in
ältere Releases (> 7.00) per ST-PI-Add-on eingespielt werden (SAP-Hinweis
2224462).
https://blogs.sap.com/2017/04/06/abap-call-monitor-scmon-analyze-usage-of-your-
code/ (abgerufen am 01.10.2019)
https://blogs.sap.com/2019/02/27/aggregate-usage-data-in-your-production-system-
with-susg-transaction/ (abgerufen am 01.10.2019)
https://blogs.sap.com/2019/02/25/susg-how-to-aggregate-and-analyze-the-results-of-
scmon-abap-call-statistics-to-do-s4hana-custom-code-housekeeping/ (abgerufen am
30.08.2019)
Im Gegensatz zum UPL, das für die Datensammlung und für die Aufbereitung der
Daten den Solution Manager (und das integrierte BI) voraussetzt, ist die Transaktion
SUSG unabhängig von weiteren Systemen und weniger komplex. Die aggregierte
Datenhaltung der SUSG spart Platz gegenüber der UPL-Lösung und ist für die
Bewertungen im Rahmen von z. B. S/4HANA-Konversionsprojekten völlig
ausreichend.
Das Custom Code Lifecycle Management ist die Zusammenführung der o. g. Tools im
Solution Manager ab Rel. 7.2 SP05. Mit unterschiedlichen zusätzlichen Aspekten und
Dashboards erhält man so die Möglichkeit, die kundeneigenen Entwicklungen
dauerhaft zu überwachen und somit den gesamten Lifecycle zu analysieren, um
frühzeitig zu erkennen, welches Coding nicht mehr genutzt wird. Auch die Software-
Qualität kann im CCLM aus den Ergebnissen des ATC überwacht werden.
Die Aufbereitung kann sowohl für das Qualitätsmanagement als auch für das
übergreifende Management zur Verfügung gestellt werden.
https://blogs.sap.com/2019/05/03/cclmcustom-code-life-cycle-management-
configuration-in-solution-manager-7.2/ (abgerufen am 01.10.2019)
https://wiki.scn.sap.com/wiki/display/SM/SAP+Solution+Manager+WIKI+-
+Custom+Code+Management (abgerufen am 01.10.2019)
Mit dem Einsatz eines S/4HANA-1809-Systems als zentralem ATC steht die Fiori-App
Code Migration zu Verfügung. Mit dem Einsatz dieser App können die Ergebnisse der
ATC-Prüfungen mit den gesammelten Usage-Daten aus den Live-Systemen oder dem
Solman abgemischt und so eine Bewertung der Code-Anpassungen für S/4HANA
vorgenommen werden.
Die von SAP bereitgestellte Simplification Database hilft Ihnen dabei, für S/4HANA
notwendige Anpassungen frühzeitig zu identifizieren. Dafür laden Sie die Simplification
Database (SAP-Hinweis 2241080) herunter und spielen sie mit der Transaktion SYCM
in das zentrale ATC-System ein. Je nach Release-Stand ist es meist notwendig, in den
beteiligten Systemen noch entsprechende SAP-Hinweise einzuspielen (vgl. SAP-
Hinweis 2436688).
Abbildung 37 Remote-ATC-Prüfungen mit der S/4HANA Simplification Database (Quelle: SAP SE)
Anhand der eingespielten Usage-Daten erstellt die App erstmalig einen Vorschlag,
welche Objekte sich im Scope für die S/4HANA-Migration befinden. Der Scope lässt
sich aber jederzeit ändern.
Zusätzlich wird ein Transport angelegt, der alle zu löschenden Objekte (nicht im
Scope) aufnimmt. Bei der Systemumstellung auf S/4HANA werden dann durch den
SUM (Software Update Manager) die nicht mehr verwendeten Objekte automatisch
gelöscht.
Hinweis: Wenn Sie die zu löschenden Objekte als Back-up noch benötigen,
empfehlen wir Ihnen den Einsatz von abapGit (https://github.com/larshp/abapGit),
um die Objekte in einem git-Repository abzulegen.
https://blogs.sap.com/2019/02/27/custom-code-analysis-for-sap-s4hana-with-sap-
fiori-app-custom-code-migration/ (abgerufen am 01.10.2019)
Dokumentationslink:
https://help.sap.com/viewer/9a281eac983f4f688d0deedc96b3c61c/201809.000/en-
US/f3b749efe0674d669fb1ecf9704fcfd3.html (abgerufen am 16.08.2019)
8.6 Eclipse-ADT-Quick-Fixes
Ab S/4HANA 1809 und ADT in Eclipse 3.0 stellt SAP für die Custom-Code-Adaptation
sogenannte Quick-Fixes bereit, um betroffene Code-Stellen automatisch anzupassen
zu können.
Diese Quick-Fixes sind in erster Linie technische Anpassungen, die durch die
Simplification im S/4HANA-System sowie durch die SQL-Anpassungen für HANA
bedingt sind. Zu ersterem gehören u.a. DB-Zugriffsmethoden in den neuen
Datenmodellen im SD, Preisfindung und Hauptbuch sowie Anpassungen des Codes
an lange Materialnummern.
Bei der Ausführung der Quick-Fixes wird ein Wizard gestartet, der einen Code-
Vergleich anbietet. Dort kann man auch sehen, wie im Einzelnen der Quell-Code
angepasst wird.
https://blogs.sap.com/2019/06/25/custom-code-adaptation-for-sap-s4hana-
faq/#_Toc470164440 (abgerufen am 16.08.2019)
https://blogs.sap.com/2018/10/02/semi-automatic-custom-code-adaptation-after-sap-
s4hana-system-conversion/
(abgerufen am 16.08.2019)
Mit dem Einsatz von abapGit können viele neue Möglichkeiten in der Entwicklung zum
Einsatz kommen. Unter anderem ist dabei auch Continuous-Integration
(https://de.wikipedia.org/wiki/Kontinuierliche_Integration) ein wesentlicher Aspekt und
bedeutet, dass schon während der Entwicklung laufend ein Gesamtsystem gebaut und
automatisiert getestet wird.
Das kann z. B. für die Entwicklung von REST-APIs interessant sein, damit Code-
Änderungen im Backend sofort zu einem integrativen Test der Applikation führen und
die Ergebnisse dieser Prüfungen direkt in der Entwicklungsumgebung visualisiert
werden können. Sinnvolle Tests im Rahmen der CI sind u. a. die Ausführung von ABAP
Unit Tests und die Prüfungen durch den ATC.
Abbildung 40 Beispiel für einen CI-Workflow mit abapGit (Quelle: Christian Lechner)
https://github.com/lechnerc77/ABAP_CI_PIPELINE_BASE (abgerufen am
05.12.2019)
https://blogs.sap.com/2018/08/20/abap-continuous-integration-plugin-now-with-plug-
and-play/ (abgerufen am 16.08.2019)
Bezeichnung Hyperlink
SQLM https://launchpad.support.sap.com/#/notes/1885926
Fiori-Custom-Code-Migration-App https://launchpad.support.sap.com/#/notes/2599695
9 Die Autoren
Manuela Graf
SAP Technical Expert for Development & Configuration, Infineon IT Services GmbH
Manuela Graf startete 2007 als ABAP-Entwicklerin im HR-Umfeld. Sie ist seit 2013 in
einem zentralen Team bei Infineon beschäftigt, das sich mit Qualität und Governance im
SAP-Umfeld auseinandersetzt. In dieser Funktion ist sie für die konzernweiten SAP-
Entwicklungsrichtlinien, das Aufsetzen und Erweitern des ATC sowie das Prüfen der
Entwicklungs- und Design-Qualität verantwortlich.
Frank Hampel
Florian Henninger
Senior Consultant SAP Development, FIS Informationssysteme und Consulting GmbH
Florian Henninger ist zertifizierter ABAP-Entwickler und seit 2010 im Bereich SAP-ABAP-
Entwicklung tätig. Sein fachlicher Schwerpunkt liegt im Bereich Core
Development/Enhancements, API-Bereitstellungen sowie dem Thema Output
Management bei ERP-Einführungsprojekten und Bestandssystemen. Außerdem ist er
Mitglied des Qualitätmanagements, bei der er unter anderem die Entwicklungsrichtlinien
ständig weiterentwickelt.
Oliver Hütköper
Oliver Hütköper ist seit 2010 im Umfeld der SAP-Entwicklung tätig. Neben der Erstellung
von kundeneigenen Entwicklungen stehen dabei insbesondere die technische Beratung
in Projekten, die Steuerung von internen und externen Entwicklern sowie die
Qualitätssicherung im Fokus. Er ist bei der Hauni Maschinenbau GmbH verantwortlich für
das ABAP Test Cockpit.
Mario Kopp
Senior Software Developer SAP, Phoenix Contact GmbH & Co. KG
Mario Kopp ist seit 2004 im Umfeld des SAP Development bei Phoenix Contact
beschäftigt und seit 1985 im Unternehmen. Der Tätigkeitsbereich umfasst die
Anwendungs- und Interface-Entwicklung in ABAP. Zusätzlich ist er verantwortlich für die
Software-Qualität im Zusammenspiel mit dem zentralen ATC und das Aufsetzen von
Prüfvarianten und eigenen ATC-Checks. Des Weiteren umfasst sein Arbeitsbereich auch
die Performance-Analysen von ABAP Code in den jeweiligen Produktivsystemen. Die
ABAP-Entwicklungsrichtlinie wird von ihm und zwei anderen Kollegen ständig
weiterentwickelt.
Christian Lechner arbeitet seit 2005 als Entwickler, Architekt und Projektleiter in der SAP-
Standard- als auch Kunden-individuellen Entwicklung. Mit der Nutzung des ATC kam er
daher schon in vielen Bereichen in Berührung. Aktuell liegt sein Fokus im Kontext ATC
bei der S/4HANA-Readiness von Kundensystemen.
Michael Lichtinger
SAP Technical Consultant, Clientis AG
Michael Lichtinger entwickelt seit 2006 in diversen Kundenprojekten in ABAP und SAPUI5
und konnte dort Erfahrungen sammeln. Neben der Einführung des ATC als Quality-Gate
bei der Clientis AG hat er dieses auch bei einigen Kunden mit eingeführt.
Stefan Nothaft
Stefan Nothaft arbeitet seit 2004 bei dem SAP-Beratungs- und -Entwicklungspartner
msg systems ag und entwickelt dort SAP-Anwendungen für individuelle Kundenprojekte.
Darüber hinaus ist er an der Entwicklung von Produktlösungen im Bereich
Insurance/Reinsurance und Food beteiligt. Bei seiner täglichen Arbeit als Software-
Architekt in R/3 und S/4 legt er besonders viel Wert auf erstklassige Code-Qualität und
setzt auf intelligente (Test-) Automatisierung. Im „Arbeitskreis Development“ der DSAG
teilt er sein Wissen als erfahrener Entwickler in der ABAP-Programmierung.
Sebastian Oswald
Junior Professional SAP Solution Development, Schwarz IT KG
Sebastian Oswald arbeitet seit 2018 bei der Schwarz IT KG als ABAP-Entwickler. Zu
seinen Aufgaben gehören sowohl die Weiterentwicklung von kundeneigenen Lösungen,
als auch die Einführung des remote ATC bei der Schwarz IT. Die stetige Erweiterung von
Fachwissen und die Einhaltung und Erhöhung von Softwarequalität ist für ihn von
besonderer Bedeutung.
Volker Pröbius
SAP Technical Development Manager, Robert Bosch GmbH
Volker Pröbius ist seit 1998 im SAP-Umfeld tätig und seit 2006 im Robert Bosch Konzern
in der zentralen IT. Der Tätigkeitsbereich umfasst die Anwendungs- und
Schnittstellenentwicklung in ABAP und UI5. Seit 2018 verantwortet er als Technical
Development Manager die Entwicklungsrichtlinien und Software-Qualität einiger
S/4HANA-Systeme.
Norbert Schulte
SAP inhouse Consultant BI/SAP Basis & ABAP/OO Developer, KTR Systems GmbH
Norbert Schulte ist seit 2006 im SAP-Umfeld tätig, arbeitet seit 2008 bei der KTR Systems
und war maßgeblich beim Aufbau einer SAP-BI-Umgebung, von der Modellierung der
Datenmodelle über die Berichterstellung und sämtliche Basisaktivitäten, beteiligt. Aktuell
setzt er unternehmensweit ein Berechtigungskonzept, angelehnt an die DSGVO, um.
2016 initiierte er das Thema ATC bei KTR und ist Teil des dreiköpfigen ATC-Teams.
Susanne Schuster
SAP Technical Expert & Quality Gate, Infineon IT Services GmbH
Susanne Schuster ist seit 2013 im SAP-Bereich bei Infineon IT Services GmbH
beschäftigt. Zu ihren Hauptaufgabengebieten zählen die Qualitätssicherung der
Kundenentwicklungen auf den SAP-Systemen sowie diverse Prozesse im Bereich
Design, Governance und Guidelines. Im Zuge der Qualitätssicherung wurde ATC für alle
SAP-Systeme eingeführt. Außerdem befasst sie sich mit der Entwicklung kundeneigener
Prüfungen, um interne Richtlinien und Best-Practices automatisiert zu kontrollieren.
Kay Streubel
Senior Consultant SAP Development, Clientis AG
Kay Streubel ist seit 2001 zertifizierter ABAP-Entwickler und hat in vielfältigen
Kundenprojekten mit dem Schwerpunkt ABAP Erfahrungen gesammelt. Die stetige
Weiterentwicklung des Entwicklungs-Know-hows und die Steigerung der Software-
Qualität im Team liegen ihm besonders am Herzen. Als Mitglied des DSAG-Arbeitskreises
Development beteiligt er sich aktiv an den Interessen der ABAP-Community.
Tim Trumpf
Software Developer SAP, Hansgrohe SE
Tim Trumpf arbeitet seit 2018 im SAP-Umfeld bei der Hansgrohe SE und entwickelt ABAP
und UI5. Er konnte in kundeneigenen Entwicklungen Erfahrungen sammeln und führte ein
Remote-ATC-System ein, welches er betreut.
Edo von Glan hat als Software-Entwickler für IBM und Commerzbank sowie sieben Jahre
in der Produktentwicklung bei SAP gearbeitet.
Seit 2008 arbeitet er in der SAP-Entwicklungsabteilung bei Dräger, davon sechs Jahre in
leitender Position. Sein Verantwortungsbereich umfasst die Applikations- und
Schnittstellenentwicklung sowie Custom Code Lifecycle Management und Software-
Qualität für die im Unternehmen zentral verwalteten SAP-Systeme.
Bärbel Winkler
Systemanalystin SAP-Basis/Programmierung, Alfred Kärcher SE & Co. KG
Der dort abgelegte Code unterliegt der MIT-Lizenz. Beachten Sie bei der Verwendung
des Code die in der Lizenz beschriebenen Anmerkungen bzgl. Wartung etc.:
https://github.com/1DSAG/ATC-Best-Practice-Guide/blob/master/LICENSE (abgerufen
am 05.12.2019)
Ihr Feed-back ist natürlich willkommen. Sie können Rückmeldungen zum Projekt wie
Bugs oder Feature-Requests über den üblichen GitHub-Mechanismus von Issues
abgeben. Da es sich um ein Community-Projekt aus der DSAG heraus handelt, können
Sie natürlich auch selbst in Form von Pull-Requests zum Projekt beitragen.
Anhang B: abapOpenChecks
Bei den abapOpenChecks handelt es sich um ein Open-Source-Projekt, das SAP Code
Inspector/ATC-Prüfungen unter der MIT-Lizenz zur Verfügung stellt. Sie finden das
Projekt auf GitHub unter https://github.com/larshp/abapOpenChecks (abgerufen am
29.10.2019).
Sie können das Tool mittels abapGit (https://github.com/larshp/abapGit) auf Ihrem SAP-
System installieren. Die Installation ist auf der Seite
https://docs.abapopenchecks.org/installation/ (abgerufen am 29.10.2019) beschrieben.
Eine Dokumentation der verfügbaren Prüfungen finden Sie auf der Seite
https://docs.abapopenchecks.org/checks/ (abgerufen am 29.10.2019). Hier können Sie
auch erkennen, ob die Prüfung RFC-fähig ist oder nicht. In den Prüfungen finden Sie –
sofern relevant – auch einen Verweis auf das Community-Projekt Clean ABAP
(https://github.com/SAP/styleguides/blob/master/clean-abap/CleanABAP.md, abgerufen
am 29.10.2019), das weitere Informationen zur Motivation der Prüfung liefert.
Sie können das Tool mittels abapGit (https://github.com/larshp/abapGit) auf Ihrem SAP-
System installieren. Die Installation ist auf der GitHub Seite des Projekts beschrieben
(https://github.com/SAP/code-pal-for-abap#how-to-bring-code-pal-into-your-system –
aufgerufen am 11.06.2020).
Eine Dokumentation der verfügbaren Prüfungen finden Sie auf der Seite
https://github.com/SAP/code-pal-for-abap/blob/master/docs/check_documentation.md
(aufgerufen am 11.06.2020).
Als Community-Projekt liefert die SAP natürlich keinerlei Support zum Code Pal for ABAP.
Die Installation und Nutzung der Prüfungen obliegen daher komplett der Hoheit der Nutzer
des Codes. Rückmeldungen zum Projekt wie Bugs oder Feature-Requests können Sie
über den üblichen GitHub-Mechanismus von Issues abgeben. Sie können sich natürlich
auch mittels Pull-Requests am Projekt beteiligen.
Impressum
Wir weisen ausdrücklich darauf hin, dass das vorliegende Dokument nicht jeglichen
Regelungsbedarf sämtlicher DSAG-Mitglieder in allen Geschäftsszenarien antizipieren
und abdecken kann. Insofern müssen die angesprochenen Themen und Anregungen
naturgemäß unvollständig bleiben. Die DSAG und die beteiligten Autoren können
bezüglich der Vollständigkeit und Erfolgsgeeignetheit der Anregungen keine
Verantwortung übernehmen.
dsag.de
Jedwede unerlaubte Verwendung ist nicht gestattet. Dies gilt insbesondere für die
Vervielfältigung, Bearbeitung, Verbreitung, Übersetzung oder die Verwendung in
elektronischen Systemen/digitalen Medien.