{"id":36861,"date":"2024-09-04T09:47:28","date_gmt":"2024-09-04T07:47:28","guid":{"rendered":"https:\/\/www.blue.works\/?p=36861"},"modified":"2026-02-17T10:40:38","modified_gmt":"2026-02-17T09:40:38","slug":"dos-and-donts","status":"publish","type":"post","link":"https:\/\/www.blue.works\/de\/dos-and-donts\/","title":{"rendered":"ALM Kaffeekr\u00e4nzchen VI &#8211; ChaRM, Dos and Don&#8217;ts"},"content":{"rendered":"\n<p>Management Summary: Denkt nicht nach, sondern lasst die ChaRM-Maschine laufen!<\/p>\n\n\n\n<p>Es besteht ein jahrzehntelanger Konflikt zwischen der Art und Weise, wie SAP ABAP Transporte konzipiert und wie die SAP-Kunden sie handhaben wollen. ChaRM versucht, mit sanftem Druck den SAP Standard durchzusetzen, ist aber im Laufe der Jahre im Sinne der Kundenw\u00fcnsche flexibler geworden. Doch damit \u00f6ffnen sich t\u00fcckische Fallen, in die ein SAP-Kunde stolpern kann.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1647\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-01-1.jpg\" alt=\"\" class=\"wp-image-36868\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-01-1.jpg 1920w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-01-1-1024x878.jpg 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-01-1-768x659.jpg 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-01-1-1536x1318.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p>Hier m\u00f6chte ich den Konflikt beleuchten und die gef\u00e4hrlichsten Fallen aufdecken.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Das ABAP Transportsystem<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Nicht manuell eingreifen<\/h2>\n\n\n\n<p>Seitdem es R\/3 gibt, seit mehr als 30 Jahren also, hadern Entwickler:innen und Customizer:innen mit dem ABAP <a href=\"https:\/\/help.sap.com\/docs\/ABAP_PLATFORM_NEW\/4a368c163b08418890a406d413933ba7\/48c4300fca5d581ce10000000a42189c.html\">Change and Transport System (CTS)<\/a>.<\/p>\n\n\n\n<p>Sie betrachten sich als Handwerker oder sogar K\u00fcnstler und denken prinzipiell in Einzel\u00e4nderungen, an denen sie liebevoll lange herumwuseln. Wenn schliesslich das kunstvoll getriebene Werkst\u00fcck fertig ist, wird es in einen Transport verpackt, und wie ein Paket soll dann dieser Einzel-Transport an das Produktivsystem \u00fcbergeben werden, damit es vom Operating importiert werden kann \u2013 nat\u00fcrlich sofort.<\/p>\n\n\n\n<p>Doch leider f\u00fcr die K\u00fcnstler folgt das CTS einem industriellen Paradigma: Das CTS ist wie ein Fliessband, in dem <strong>alles<\/strong>, aber auch wirklich alles, was per automatischer Aufzeichnung auf das Band kommt, <strong>in derselben Reihenfolge<\/strong> in das Produktivsystem transportiert werden <strong>muss<\/strong>.<\/p>\n\n\n\n<p>Idealerweise geschieht dies automatisiert mit dem ChaRM.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"900\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-20.jpg\" alt=\"\" class=\"wp-image-36870\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-20.jpg 1200w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-20-1024x768.jpg 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-20-768x576.jpg 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Attribution I Cory M. Grenier, <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\" title=\"\">CC BY-SA 2.0<\/a>, via Wikimedia Commons<\/p>\n\n\n\n<p>Denn SAP, als Hersteller von Software, hat das CTS f\u00fcr eigene Zwecke entwickelt. Das Hauptziel des CTS ist eine konsistente Transportlandschaft. Eine Transportlandschaft ist nur dann konsistent, wenn Entwicklung, QA, eventuell PreProd und Produktion den gleichen Software-Stand haben.<\/p>\n\n\n\n<p>Daher gilt die goldene Regel, um Chaos zu vermeiden: <strong>kein manuelles Eingreifen!<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"841\" height=\"649\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-04-1.png\" alt=\"\" class=\"wp-image-36986\" style=\"width:840px;height:auto\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-04-1.png 841w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-04-1-768x593.png 768w\" sizes=\"(max-width: 841px) 100vw, 841px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">CTS \u2013 Die goldene Regel<\/h2>\n\n\n\n<p>Die Hauptregel ist also: <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Exportreihenfolge == Importreihenfolge<\/mark><\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Der Transportauftrag \u2013 ein Zwitter<\/h3>\n\n\n\n<p>W\u00e4hrend der Entwicklung und dem Customizing sammelt das CTS jede \u00c4nderung in Transportauftr\u00e4gen. Es werden dabei nur die Schl\u00fcssel der ge\u00e4nderten Objekte aufgezeichnet, nicht die Objekte selbst, die Inhalte also.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1290\" height=\"696\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-21-3.png\" alt=\"\" class=\"wp-image-37132\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-21-3.png 1290w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-21-3-1024x552.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-21-3-768x414.png 768w\" sizes=\"(max-width: 1290px) 100vw, 1290px\" \/><\/figure>\n\n\n\n<p>Dies ist wichtig zu verstehen, denn deswegen ist es irrelevant, in welcher Reihenfolge die Transportauftr\u00e4ge angelegt werden, ebenso irrelevant ist es, in welcher Reihenfolge die Objekte aufgezeichnet werden \u2013 solange der Transportauftrag \u00e4nderbar ist.<\/p>\n\n\n\n<p>Erst bei der Freigabe (Export) des Transportauftrages liest das System (Kernel-Programme <a href=\"https:\/\/help.sap.com\/docs\/ABAP_PLATFORM_NEW\/4a368c163b08418890a406d413933ba7\/3dad5a8a4ebc11d182bf0000e829fbfe.html\">tp<\/a> und <a href=\"https:\/\/help.sap.com\/docs\/ABAP_PLATFORM_NEW\/4a368c163b08418890a406d413933ba7\/3dad5c974ebc11d182bf0000e829fbfe.html\">R3trans<\/a>) anhand jener Schl\u00fcssel die Datenbank und speichert den ausgelesenen Inhalt in eine Archivdatei auf Betriebssystemebene.<\/p>\n\n\n\n<p>Somit haben die exportierten Inhalte den Stand eingefroren, den sie zum Zeitpunkt des Exports besassen.<\/p>\n\n\n\n<p>Ein freigegebener Transportauftrag ist also gleichzeitig eine Sammlung von Schl\u00fcssel in der Datenbank und ein nicht mehr \u00e4nderbares Archiv auf Betriebssystemebene.<\/p>\n\n\n\n<p>Ein freigegebener Transportauftrag ist deswegen nicht mehr \u00e4nderbar.<\/p>\n\n\n\n<p>Werden die Objekte im Entwicklungssystem sp\u00e4ter erneut ge\u00e4ndert, dann werden dieselben Schl\u00fcssel in einen neuen Transportauftrag aufgezeichnet. Bei Freigabe (Export) wird diese neuere Transport-Archivdatei die aktuellste Version der Objekte enthalten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Downgrade und \u00dcberholer<\/h3>\n\n\n\n<p>Da jeder Transportauftrag zeitabh\u00e4ngige Inhalte hat, ist es von entscheidender Bedeutung, dass der \u00e4ltere Transportauftrag zuerst importiert wird, und der neuere danach.<\/p>\n\n\n\n<p><a id=\"_msocom_1\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"350\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-22.webp\" alt=\"\" class=\"wp-image-36876\"\/><\/figure>\n\n\n\n<p>Die <a href=\"https:\/\/help.sap.com\/docs\/SAP_Solution_Manager\/8b923a2175be4939816f0981b73856c7\/6a2347390517468db54e767b122110a1.html?locale=en-US\">Downgrade Protection<\/a> versucht, genau diese Fliessband-Reihenfolge zu erzwingen, indem der sp\u00e4tere Import des \u00e4lteren Transportauftrags verhindert wird. Das \u00dcberschreiben der neueren Version eines Objektes mit einer \u00e4lteren wird Downgrade genannt, der \u00e4ltere Transportauftrag hat damit den neueren \u00fcberholt.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><a href=\"https:\/\/www.youtube.com\/watch?v=rUVEFkjqiEE\" title=\"\">With a little help from my ChaRM<\/a><\/h1>\n\n\n\n<p>Ich habe bereits die Vorz\u00fcge einer ChaRM-Einf\u00fchrung <a href=\"\/de\/alm-kaffekraenzchen-iii-charm-warum-weshalb-wieso-teil-3\/\">in diesem Blog<\/a> durchdekliniert. Auch hier gilt: je mehr man stur das Maschinenband laufen l\u00e4sst &#8211; ohne manuell einzugreifen!! &#8211; desto besser lebt man.<\/p>\n\n\n\n<p>Aber nicht immer ist das Herumfummeln in dem Fliessband die Ursache f\u00fcr \u00c4rger und Stress. Es reicht auch eine gut gemeinte, jedoch unzul\u00e4ngliche Architektur.<\/p>\n\n\n\n<p>Problematisch wird es n\u00e4mlich, wenn man auf der einen Seite Projekt und Wartung sauber trennen m\u00f6chte, aber auf der anderen Seite die Empfehlungen <a href=\"\/de\/alm-kaffeekraenzchen-v-dual-landscape-teil-1\/\">dieser Blog-Reihe<\/a> ignoriert und beide, Projekt und Wartung, in eine einzige Systemlandschaft zwingt, weil man die Kosten zus\u00e4tzlicher SAP ABAP Systeme scheut.<\/p>\n\n\n\n<p>Auf den Pr\u00e4sentationsfolien sieht alles sch\u00f6n ordentlich aus, doch in der Praxis scheppert es gewaltig.<\/p>\n\n\n\n<p>Was passiert hier?<\/p>\n\n\n\n<p>Da beide einen eigenen Zyklus und einen eigenen Aufgabenplan besitzen, geh\u00f6ren deren Transporte unterschiedlichen CTS-Projekten; es gibt keinen gemeinsamen Import, denn der ChaRM importiert nur pro Zyklus und nicht Zyklus-\u00fcbergreifend.<\/p>\n\n\n\n<p>Wartungskorrekturen gehen in der Regel viel schneller in die Produktion als die langsamen, phasengesteuerten Projekt\u00e4nderungen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1277\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-1920x1277.jpg\" alt=\"\" class=\"wp-image-36878\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-1920x1277.jpg 1920w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-1024x681.jpg 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-768x511.jpg 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-1536x1021.jpg 1536w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-23-2048x1362.jpg 2048w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p>Attribution&nbsp; II Rados\u0142aw Dro\u017cd\u017cewski (Zwiadowca21), <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\">CC BY-SA 4.0<\/a>, via Wikimedia Commons<\/p>\n\n\n\n<p>Wird daher dasselbe Objekt sowohl durch die Projektarbeit als auch durch eine Fehlerkorrektur in der Wartung ge\u00e4ndert, so kann es leicht passieren, dass ein Wartungs-Transport die Projekt-Transporte \u00fcberholt, die nur in das Testsystem importiert wurden, aber noch nicht in das Produktivsystem.<\/p>\n\n\n\n<p>Hier haben wir ein sch\u00f6nes Beispiel aus dem realen Leben. Eine wichtige kundeneigene Klasse f\u00fcr den Vertrieb wurde von f\u00fcnf verschiedenen Entwickler:innen im Rahmen von drei \u00c4nderungsdokumenten ge\u00e4ndert:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><tbody><tr><td>TR<\/td><td>Export<\/td><td>Import QA<\/td><td>Import PreProd<\/td><td>Owner<\/td><td>Change<\/td><td>Status<\/td><td>CTS Project<\/td><\/tr><tr><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEVK922007<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">23.07.24 12:51<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">23.07.24 17:10<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">23.07.24 17:16<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">USR1<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">602542<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">TR to Retesting<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEV_P03<\/mark><\/td><\/tr><tr><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEVK922158<\/mark><\/td><td>30.07.24 12:54<\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">30.07.24 17:10<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">30.07.24 17:16<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">USR<\/mark>2<\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">602542<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">TR to Retesting<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEV_P03<\/mark><\/td><\/tr><tr><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">DEVK922389<\/mark><\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">14.08.24 14:49<\/mark><\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#ff0000\" class=\"has-inline-color\">14.08.24 17:11<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <\/mark><\/strong><\/td><td><strong>&#8211;<\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">USR3<\/mark><\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">851879<\/mark><\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">Being Corrected<\/mark><\/strong><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#981e1e\" class=\"has-inline-color\">DEV_P05<\/mark><\/strong><\/td><\/tr><tr><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEVK922591<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">14.08.24 17:01<\/mark><\/td><td><strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">14.08.24 17:01<\/mark><\/strong><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">14.08.24 17:16<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">USR1<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">602542<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">TR to Retesting<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEV_P03<\/mark><\/td><\/tr><tr><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEVK922725<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">16.08.24 11:18<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">16.08.24 12:11<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">16.08.24 12:16<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">USR<\/mark>4<\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">602542<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">TR to Retesting<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEV_P03<\/mark><\/td><\/tr><tr><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEVK921089<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">19.08.24 18:01<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">19.08.24 18:01<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">19.08.24 18:31<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">USR<\/mark>5<\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">602490<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">TR to Retesting<\/mark><\/td><td><mark style=\"background-color:rgba(0, 0, 0, 0);color:#110f75\" class=\"has-inline-color\">DEV_P03<\/mark><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Blaue Schriftfarbe: Projekt (DEV_P03), rote Schriftfarbe Wartung (DEV_P05), die in einer 4-Systemlandschaft koexistieren. In der Tabelle sieht man sehr sch\u00f6n, wie der \u00e4ltere Wartungstransport DEVK922389, da zu einem anderen Zyklus geh\u00f6rig, den j\u00fcngeren Projekttransport DEVK922591 \u00fcberschrieben hat.<\/p>\n\n\n\n<p>Auch gab es Abh\u00e4ngigkeiten zwischen den Transporten, der Wartungstransport enthielt die Implementierung einer Methode, auf die sich sp\u00e4tere Projekttransporte bezogen. Resultat: RC=8.<\/p>\n\n\n\n<p>Und da Wartung und Projekt wie in einem Reissverschluss miteinander verzahnt sind, ist es nicht m\u00f6glich, eine sinnvolle Reihenfolge f\u00fcr den Go-Live zu etablieren. Eine Situation zum Haare-Ausreissen!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"658\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-24.jpg\" alt=\"\" class=\"wp-image-36880\" style=\"width:386px;height:auto\"\/><\/figure>\n\n\n\n<p>Attribution&nbsp; III Caravaggio, Public domain, via Wikimedia Commons<\/p>\n\n\n\n<p>In solchen wirren F\u00e4llen bleibt nur noch die \u00abJungbrunnenmethode\u00bb \u00fcbrig.<\/p>\n\n\n\n<p>Zwei der drei \u00c4nderungsdokumente, eins f\u00fcr Wartung und eins f\u00fcr Projekt wurden wieder im Status so zur\u00fcckgesetzt, dass zwei Transportauftr\u00e4ge angelegt werden konnten, einen innerhalb des Wartungszyklus, den anderen innerhalb des Projektzyklus.<\/p>\n\n\n\n<p>In beide Transporte wurde die St\u00fcckliste aller involvierten Transportauftr\u00e4ge kopiert und sie wurden praktisch gleichzeitig freigegeben; beide wurden dann am selben Wochenende live gesetzt. Da beide Transporte bei Freigabe den identischen j\u00fcngsten Stand enthielten, und da beide Transporte die j\u00fcngsten und letzten in der Import Queue des Produktivsystems waren, war jetzt deren Reihenfolge egal.<\/p>\n\n\n\n<p>Doch dies funktioniert leider nur, wenn man so schnell handelt, dass keine weiteren \u00c4nderungen an den Objekten bereits vorgenommen wurden, die erst eine Tester-Freigabe ben\u00f6tigen w\u00fcrden.<\/p>\n\n\n\n<p>Fazit:<\/p>\n\n\n\n<p>Nie, niemals nie einen Wartungszyklus und einen Projektzyklus in ein und derselben Transportlandschaft f\u00fchren, sondern entweder f\u00fcr Korrekturen die Vorabfunktionalit\u00e4t bei Work Items anwenden, oder <a href=\"\/de\/alm-kaffeekraenzchen-v-dual-landscape-teil-1\/\">zwei Transportlandschaften mit Retrofit<\/a> etablieren.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Exkurs: Transporte Entkoppeln<\/h1>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"298\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-05-1.png\" alt=\"\" class=\"wp-image-36999\"\/><\/figure>\n\n\n\n<p>Attribution V Uri-Levy, <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/3.0\">CC BY-SA 3.0<\/a>, via Wikimedia Commons<\/p>\n\n\n\n<p>Ein Lieblingssport der Entwickler:innen und Customizer:innen ist das fr\u00f6hliche Umschichten der Arbeitspakete, sprich: der \u00c4nderungsdokumente.<\/p>\n\n\n\n<p>Neue \u00c4nderungsdokumente werden angelegt, alte sollen gel\u00f6scht werden, was aber nicht geht, also sollen sie wenigstens zur\u00fcckgezogen werden. Doch dies funktioniert nur, wenn diese \u00c4nderungsdokumente keine oder nur leere Transportauftr\u00e4ge besitzen.<\/p>\n\n\n\n<p>Hat jedoch das \u00c4nderungsdokument Transportauftr\u00e4ge, die nicht leer sind, so m\u00fcssen diese vorher umgeh\u00e4ngt werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Umh\u00e4ngen eines \u00e4nderbaren Transportes<\/h2>\n\n\n\n<p>Ein direktes Umh\u00e4ngen per drag&amp;drop gibt es nicht.<\/p>\n\n\n\n<p>Zuerst muss man den Transportauftrag von seinem \u00c4nderungsdokument entkoppeln, erst dann kann man ihn dem anderen \u00c4nderungsdokument zuordnen.<\/p>\n\n\n\n<p>Beide T\u00e4tigkeiten verbergen sich im \u201eMore\u201c Men\u00fc des Transport Management Blocks:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1396\" height=\"243\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/PIc-06-1.png\" alt=\"\" class=\"wp-image-37001\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/PIc-06-1.png 1396w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/PIc-06-1-1024x178.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/PIc-06-1-768x134.png 768w\" sizes=\"(max-width: 1396px) 100vw, 1396px\" \/><\/figure>\n\n\n\n<p>In Focused Build sind diese Aktionen sichtbarer:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1394\" height=\"507\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-07-1.png\" alt=\"\" class=\"wp-image-37003\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-07-1.png 1394w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-07-1-1024x372.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-07-1-768x279.png 768w\" sizes=\"(max-width: 1394px) 100vw, 1394px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Transportauftrag Entkoppeln<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"483\" height=\"634\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-08-1.png\" alt=\"\" class=\"wp-image-37005\" style=\"width:360px;height:auto\"\/><\/figure>\n\n\n\n<p>Nach der Entkopplung ist der Transport aus der ChaRM Verwaltung verschwunden. Er hat auch die Verbindung zum CTS Projekt verloren. Eine Spur der vergangenen Zugeh\u00f6rigkeit bleibt aber noch (neben der ID des alten \u00c4nderungsdokuments im Kurztext)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"467\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-09-1.png\" alt=\"\" class=\"wp-image-37007\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Transportauftrag zuordnen<\/h3>\n\n\n\n<p>Wir koppeln den einsamen Transport an einen Urgent Change an, der zu einem anderen Zyklus geh\u00f6rt. Der Transport erh\u00e4lt jetzt ein neues, anderes CTS Projekt:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"467\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-10-1.png\" alt=\"\" class=\"wp-image-37009\"\/><\/figure>\n\n\n\n<p>Und die ChaRM Verwaltung verzeichnet jetzt den Transport unter dem Aufgabenplan des Urgent Changes:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"513\" height=\"596\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-11-1.png\" alt=\"\" class=\"wp-image-37011\" style=\"width:358px;height:auto\"\/><\/figure>\n\n\n\n<p>Wenn man den BAdI \/TMWFLOW\/ASSIGN_TRANS_DESC_UPD aktiviert hat (IMG \u00abBAdI: Change Description after Assign Transport Request to Change Document\u00bb), dann wird die ID des neuen \u00c4nderungsdokumentes in den Transportauftrags-Kurztext eingetragen, siehe SAP Hinweis <a href=\"https:\/\/me.sap.com\/notes\/2849745\/E\">2849745 \u00abRename transport request when reassigning to a new change<\/a>\u00bb<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Entkoppeln eines freigegebenen Transportes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Spoiler: Es geht nicht.<\/h3>\n\n\n\n<p>Im Standard wird diese Aktion nur im Status \u201eDevelopment\u201c angeboten, in allen anderen Status ist der Men\u00fc-Eintrag inaktiv:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"827\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-1920x827.png\" alt=\"\" class=\"wp-image-37015\" style=\"width:839px;height:auto\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-1920x827.png 1920w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-1024x441.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-768x331.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-1536x662.png 1536w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-12-3-2048x882.png 2048w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<p>Wir sind schlau und \u00e4ndern das Customizing, um die Aktion beim Status E0009 \u201eTestedOK\u201c doch zu erlauben:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2334\" height=\"503\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1.png\" alt=\"\" class=\"wp-image-37017\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1.png 2334w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1-1024x221.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1-1920x414.png 1920w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1-768x166.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1-1536x331.png 1536w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-13-1-2048x441.png 2048w\" sizes=\"(max-width: 2334px) 100vw, 2334px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"2070\" height=\"898\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2.png\" alt=\"\" class=\"wp-image-37019\" style=\"width:838px;height:auto\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2.png 2070w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2-1024x444.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2-1920x833.png 1920w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2-768x333.png 768w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2-1536x666.png 1536w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-14-2-2048x888.png 2048w\" sizes=\"(max-width: 2070px) 100vw, 2070px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1319\" height=\"682\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-15-1.png\" alt=\"\" class=\"wp-image-37021\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-15-1.png 1319w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-15-1-1024x529.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-15-1-768x397.png 768w\" sizes=\"(max-width: 1319px) 100vw, 1319px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Und es geht doch!<\/h3>\n\n\n\n<p>Da aber diese Aktivit\u00e4t sich \u00e4usserster Beliebtheit erfreut, habe ich den Report \/BLUWRKS\/TRANSPORT_DELETE geschrieben, der \u00c4nderungsdokumente von bereits freigegebene Transportantr\u00e4gen befreit:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"235\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-16-1.png\" alt=\"\" class=\"wp-image-37027\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-16-1.png 786w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-16-1-768x230.png 768w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"230\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-17-1.png\" alt=\"\" class=\"wp-image-37025\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-17-1.png 855w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-17-1-768x207.png 768w\" sizes=\"(max-width: 855px) 100vw, 855px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1084\" height=\"251\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-18-1.png\" alt=\"\" class=\"wp-image-37023\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-18-1.png 1084w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-18-1-1024x237.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-18-1-768x178.png 768w\" sizes=\"(max-width: 1084px) 100vw, 1084px\" \/><\/figure>\n\n\n\n<p>E voila:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1449\" height=\"766\" src=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-19-1.png\" alt=\"\" class=\"wp-image-37029\" srcset=\"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-19-1.png 1449w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-19-1-1024x541.png 1024w, https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-19-1-768x406.png 768w\" sizes=\"(max-width: 1449px) 100vw, 1449px\" \/><\/figure>\n\n\n\n<p>Das \u00c4nderungsdokument kann jetzt endlich zur\u00fcckgezogen werden.<\/p>\n\n\n\n<p>Dieser Report geht weg wie warme Semmeln, wie man hier in M\u00fcnchen sagen w\u00fcrde.<\/p>\n\n\n\n<p>\u00dcbrigens, bei Aufgabenpl\u00e4nen mit Central CTS kann man auch bereits freigegebene Transportauftr\u00e4ge umh\u00e4ngen, doch cCTS ist ziemlich langsam und daher unbeliebt.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es besteht ein jahrzehntelanger Konflikt zwischen der Art und Weise, wie SAP ABAP Transporte konzipiert und wie die SAP-Kunden sie handhaben wollen. ChaRM versucht, mit sanftem Druck den SAP Standard durchzusetzen, ist aber im Laufe der Jahre im Sinne der Kundenw\u00fcnsche flexibler geworden. Doch damit \u00f6ffnen sich t\u00fcckische Fallen, in die ein SAP-Kunde stolpern kann.<\/p>\n","protected":false},"author":16,"featured_media":36912,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[344],"tags":[336],"class_list":["post-36861","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-alm-kaffeekraenzchen-das-alm-magazin","tag-kaffeekraenzchen"],"acf":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/www.blue.works\/wp-content\/uploads\/2024\/09\/Pic-02-2-scaled.jpg","_links":{"self":[{"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/posts\/36861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/comments?post=36861"}],"version-history":[{"count":19,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/posts\/36861\/revisions"}],"predecessor-version":[{"id":45072,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/posts\/36861\/revisions\/45072"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/media\/36912"}],"wp:attachment":[{"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/media?parent=36861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/categories?post=36861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blue.works\/de\/wp-json\/wp\/v2\/tags?post=36861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}