SEGW-Projekt (OData Service) mitsamt Implementierung kopieren

Der Gateway Service Builder (Transaktion SEGW) ist das allseits bekannte Werkzeug zur Implementierung eines OData Service auf einem SAP ABAP-System. Der Service Builder bietet die Funktion ein SEGW-Projekt zu kopieren. Das Kopieren kann notwendig sein, wenn

  • man eine neue Version eines vorhandenen Service parallel zur existierenden Version erstellen will
  • man mit einem von SAP ausgelieferten Service spielen möchte. Spielen meint auf den vorhandenen Entities und deren Logik aufsetzen und diese erweitertern oder anpassen.

Die Kopierfunktion im Service Builder kopiert jedoch nur das Model, aber nicht die Laufzeitartefakte (MPC- und DPC-Klassen). In diesem Blog beschreibe ich, wie man mit ein bisschen Handarbeit die Laufzeitartefakte kopiert, um dann eine vollständig funktionale Kopie des Service zu erhalten. Als  Beispiel nehme ich den Service GWSAMPLE_BASIC, welcher viele Aspekte der OData-Entwicklung aufzeigt… Also auf gehts mit der Kopie eines SEGW-Projekt.

1. Kopieren des Service Builder Projekts /IWBEP/GWSAMPLE_BASIC

Starte den Service Builder und öffne das Projekt /IWBEP/GWSAMPLE_BASIC. Die Laufzeitartefakte für den Service bestehen ABAP-seitig aus globalen Klassen /IWBEP/CL_GWSAMPLE_BAS_DPC, /IWBEP/CL_GWSAMPLE_BAS_DPC_EXT, /IWBEP/CL_GWSAMPLE_BAS_MPC und /IWBEP/CL_GWSAMPLE_BAS_MPC_EXT.

SAP Gateway Serive Builder

Die folgende Abbildung zeigt das Kopieren auf das neue Projekt ZRLGWSAMPLE_BASIC.

Projekt Beschreibung

Ein Generieren des neuen Projekts erzeugt die Laufzeitartefakte in den globalen ABAP-Klassen ZCL_ZRLGWSAMPLE_BASIC_DPC, ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT, ZCL_ZRLGWSAMPLE_BASIC_MPC, ZCL_ZRLGWSAMPLE_BASIC_MPC_EXT.

Laufzeitartefakte

2. MPC_EXT-Klasse: Neuanlage und Anpassen der Vererbung

Nun lösche die generierte ZCL_ZRLGWSAMPLE_BASIC_MPC_EXT-Klasse. Lege sie danach als Kopie von Klasse /IWBEP/CL_GWSAMPLE_BAS_MPC_EXT neu an.

Kopie von Klasse /IWBEP/CL_GWSAMPLE_BAS_MPC_EXT

Ändere die Vererbung der Klasse CL_ZRLGWSAMPLE_BASIC_MPC_EXT von /IWBEP/CL_GWSAMPLE_BAS_MPC auf Klasse ZCL_ZRLGWSAMPLE_BASIC_MPC. Es kommt das Popup mit der Frage, ob Methodenredefinitonen erhalten bleiben sollen. Diese Frage mit Ja beantworten.

Methodenredefinitonen

 

3. MPC_EXT-Klasse: Anpassen des Codes

Die Typen in der Klasse ZCL_ZRLGWSAMPLE_BASIC_MPC_EXT referenzieren noch die originäre MPC-Klasse /IWBEP/CL_GWSAMPLE_BAS_MPC. Deshalb in die Quelltextansicht wechseln und /IWBEP/CL_GWSAMPLE_BAS_MPC durch ZCL_ZRLGWSAMPLE_BASIC_MPC ersetzen.

4. DPC_EXT-Klasse: Neuanlage und Anpassen der Vererbung

Das Vorgehen bei der DPC_EXT-Klasse ist analog zur MPC_EXT-Klasse.

  1. Klasse ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT löschen
  2. Klasse ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT neu anlegen als Kopie von /IWBEP/CL_GWSAMPLE_BAS_DPC_EXT
  3. Vererbung von /IWBEP/CL_GWSAMPLE_BAS_DPC auf ZCL_ZRLGWSAMPLE_BASIC_DPC ändern. Im Popup die Frage nach dem Erhalt der Redefinitionen wieder mit Ja beantworten

5. DPC_EXT-Klasse: Anpassen des Codes

Im Code der DPC_EXT-Klasse ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT nun die Referenzen auf /IWBEP/CL_GWSAMPLE_BAS_MPC durch ZCL_ZRLGWSAMPLE_BASIC_MPC ersetzen. Rund 80 Ersetzungen werden damit durchgeführt. Jetzt kannst Du aktivieren und solltest keine Syntaxfehler bekommen.

6. Zusammenfassung

Das war es schon! Wir haben den GWSAMPLE_BASIC mitsamt seiner Implementierung in den neuen Service ZRLGWSAMPLE_BASIC kopiert. Wir mussten hierfür lediglich die DPC_EXT- und MPC_EXT-Klassen ein wenig anpassen.

Hast du noch Fragen zur Kopie von einem SEGW-Projekt oder zu anderen Themen?

Nutze gerne unsere Kommentarfunktion oder schreib mir direkt eine eMail

Suchst du einen spannenden Job als SAP-Consultant?

Klick hier

Weitere spannende Themen

https://abaptalk.acando-live.de

Über den Autor

Rüdiger Lühr

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

− 2 = 1