Clean Core und Standardtabellen: Warum direkte Zugriffe keine Zukunft haben

In der ABAP-Entwicklung stößt man immer wieder auf klassische Standardtabellen wie BUT000 (Business Partner), MARA (Materialstamm) oder VBAK (Verkaufsbelege). Lange Zeit waren direkte Zugriffe via SELECT gang und gäbe. Doch mit dem Clean Core-Prinzip von SAP und der zunehmenden Cloudifizierung ändert sich die Situation grundlegend.

SAP dokumentiert im Cloudification Repository klar, welche Objekte in der Cloud nicht mehr direkt nutzbar sind. Tabellen wie BUT000, MARA, VBAK werden als Not To Be Released klassifiziert – sie sind intern und sollten auch in Private Cloud Systemen oder OnPremise nicht mehr direkt angesprochen werden. Es gibt aber überlicherweise einen Nachfolger.

Für die MARA gibt es beispielsweise I_PRODUCT als freigegebenen Nachfolger.

Clean Core Level A-D

SAP bewertet die Interaktion mit Standardobjekten nach den sicher bereits bekannten Clean Core Levels A – D.

  • Level A: Zugriff auf Released Tabellen oder CDS Views.
  • Level B: In diesem Zusammenhang irrelevant
  • Level C: Zugriff auf Tabellen oder CDS Views welche noch einen undefinierten Status haben.
  • Level D: Zugriff auf Tabellen welche als Not To Be Released oder no API klassifiziert sind.

Über Level D brauchen wir hoffentlich nicht mehr reden. Einfach vermeiden, wenn möglich.

Level C ist zwar nicht ganz so schlimm, sollte aber wo möglich auch vermieden werden. Level C wird oft als Conditional Clean Core definiert. Das heißt, das Pendel kann in die eine oder andere Richtung ausschlagen.

Beispiel BUT000 – hat den Status Not To Be Released. Die Tabellen BUT020, BUT0ID, … sind derzeit noch Level C, da undefiniert. Es ist nur eine Frage der Zeit, bis diese auch auf Not To Be Released gesetzt werden, was vollkommen richtig wäre.

Andere Alternativen

Es ist durchaus möglich, dass zu manchen Datenbanktabellen welche auf Not To Be Released stehen freigegeben RAP Objekte, BAPIs, Klassen oder Funktionsbausteine zur Verfügung stehen. Wieder als Beispiel BUT000. – Es gibt den BAPI BAPI_BUPA_CENTRAL_GETDETAIL welcher als Classic API eingestuft wurde – und welcher genau die BUT000 Daten liefert.

Fazit

Direkte Zugriffe auf nicht freigegebene Standardtabellen sind nicht zukunftsfähig. Wer einen Clean Core haben will, oder Cloud-Kompatibel entwickeln will – sollte bei allen DB Zugriffen möglichst die offiziellen CDS Views oder APIs.

Wertvolle Links

https://sap.github.io/abap-atc-cr-cv-s4hc

https://software-heroes.com/en/blog/abap-cloud-clean-core-level-concept-en

https://www.computerweekly.com/de/tipp/Was-ist-Clean-Core-und-wie-setzt-man-es-fuer-SAP-Systeme-um

https://me.sap.com/notes/3578329/D

Veröffentlicht in ABAP & ABAP Cloud, Clean Core und verschlagwortet mit , , .