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.
Die folgende Abbildung zeigt das Kopieren auf das neue Projekt ZRLGWSAMPLE_BASIC.
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.
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.
Ä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.
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.
- Klasse ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT löschen
- Klasse ZCL_ZRLGWSAMPLE_BASIC_DPC_EXT neu anlegen als Kopie von /IWBEP/CL_GWSAMPLE_BAS_DPC_EXT
- 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
Du programmierst, bist ABAP-interessiert und hast Lust coole Projekte mit uns zu machen? Wir suchen dich! Schau doch mal in unserer Stellenbeschreibung vorbei.