<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Artikel (chronologisch) on Volker Wegert</title><link>https://volker-wegert.de/de/posts/</link><description>Recent content in Artikel (chronologisch) on Volker Wegert</description><generator>Hugo -- 0.147.7</generator><language>de</language><lastBuildDate>Tue, 12 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://volker-wegert.de/de/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>java.util.functional Interface-Auswahlhilfe</title><link>https://volker-wegert.de/de/posts/2025-08-12-java-functional-interfaces/</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2025-08-12-java-functional-interfaces/</guid><description>&lt;p>Zur Unterstützung der mit Java 8 eingeführten Lambda-Ausdrücke gibt es eine Reihe sogenannter funktionaler Interfaces
im Paket &lt;code>java.util.function&lt;/code> (siehe auch die zugehörige
&lt;a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html#package.description">Paketdokumentation&lt;/a>).&lt;/p>
&lt;p>Nun gibt es zwar eine sauber definierte Logik in der Benennung der Interfaces und der Methoden, die sei bereitstellen,
aber es ist in der Praxis dennoch nicht immer einfach zu erkennen, welches Interface für eine gegebene Fragestellung
am besten geeignet ist. Über die Jahre sind einige Cheat Sheets veröffentlicht worden, aber sie bieten meistens nur eine
etwas andere Sortierung oder Kategorisierung der Interfaces, was bei der Auswahl nur wenig hilft.&lt;/p></description></item><item><title>Frühlings-Renovierung</title><link>https://volker-wegert.de/de/posts/2025-03-30-renovating-again/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2025-03-30-renovating-again/</guid><description>&lt;p>Die letzten Jahre war es sehr ruhig auf dieser Internet-Seite. Das hing mit einer Reihe von Arbeitgeberwechseln und
einem weiteren Fernstudium - diesmal ein &lt;a href="https://www.wings.hs-wismar.de/de/fernstudium_master/it_sicherheit_und_forensik">Master of Engineering IT-Sicherheit uns
Forensik&lt;/a> - zusammen. Ich kann nicht
wirklich versprechen, dass sich in Zukunft etwas daran ändern wird, aber wenn, dann ist jetzt die Grundlage gelegt.&lt;/p>
&lt;p>Ich habe micht dazu entschlossen, die Seite von &lt;a href="https://new.drupal.org/home">Drupal&lt;/a>, also einem eher dynamischen CMS,
auf den statischen Seiten-Generator &lt;a href="https://gohugo.io/">Hugo.io&lt;/a> umzustellen. Ich war nicht notwendigerweise
unzufrieden mit Drupal, aber der Aufwand für die Wartung (Sicherheits-Updates, aber auch die Major-Upgrades, die immer
wieder massiven Migratonsaufwand produzieren) standen in keinem Verhältnis zum Nutzungsgrad dieser Seite. Vor allem
brauche ich keine dynamische Content-Generierung. Das war zwar nett, aber eben nur nett und nicht notwendig. Deshalb -
einmal alles migriert und neu gestartet.&lt;/p></description></item><item><title>Einsatz von eCATT für laufendes Performance-Monitoring</title><link>https://volker-wegert.de/de/posts/2017-09-02-ecatt-performance-monitoring/</link><pubDate>Sat, 02 Sep 2017 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2017-09-02-ecatt-performance-monitoring/</guid><description>&lt;p>Das beiliegende Video ist eine Neuaufzeichnung meines Vortrags beim SAP Inside Track Berlin, der am 2. September 2017
stattfand. Es gab irgendwelche Audio-Probleme, die leider zwei Vorträge betroffen haben - meiner war dabei. Da meine
Folien ohne den Votrag vermutlich nicht viel Sinn ergeben, habe ich den gesamten Vortrag noch einmal mit Voiceover
aufgenommen. &lt;/p>
&lt;p>Mehr Informationen zum SAP Inside Track gibt
es &lt;a href="https://wiki.scn.sap.com/wiki/display/events/SAP&amp;#43;Inside&amp;#43;Track&amp;#43;Berlin&amp;#43;%7C&amp;#43;September&amp;#43;2017">im SAP-Wiki&lt;/a>.
Eine &lt;a href="https://wiki.scn.sap.com/wiki/display/events/SAP&amp;#43;Inside&amp;#43;Track&amp;#43;Berlin&amp;#43;%7C&amp;#43;September&amp;#43;2017">Playlist&lt;/a> mit den meisten
Vorträgen existiert ebenfalls.&lt;/p></description></item><item><title>Stop Coding, Start Ruling</title><link>https://volker-wegert.de/de/posts/2016-03-23-stop-coding-start-ruling/</link><pubDate>Wed, 23 Mar 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-03-23-stop-coding-start-ruling/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/healthcare/blog/2016/03/23/stop-coding-start-ruling">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;h2 id="hintergrundinformationen">Hintergrundinformationen&lt;/h2>
&lt;p>Eine Kernfunktion des Klinischen Systems i.s.h.med ist die Verwaltung klinischer Dokumente. Unabhängig von der
Darstellung und Struktur der Inhalte haben klinische Dokumente einen gemeinsamen Satz von Verwaltungsdaten,
einschließlich wichtiger Referenzdaten: Zu welchem Patienten, Fall, welcher Bewegung oder Leistung gehört dieses
Dokument? Man muss die Dokumentreferenzebene angeben, wenn man den sogenannten Dokumenttyp erstellt, und das System
stellt dann sicher, dass ein Dokument, das einem Fall zugeordnet werden muss, erst erstellt werden kann, wenn eine
Fallnummer angegeben wurde. Bei der normalen Entwicklung und Wartung neigen die meisten Administratoren dazu, diese
Referenzebenen als transitiv zu betrachten: Ein Fall spezifiziert immer einen bestimmten Patienten, eine Bewegung
identifiziert immer eindeutig einen Fall und so weiter. Leider ist das nicht ganz richtig. Es ist möglich, Leistungen zu
erfassen und zu verarbeiten, die einem Patienten zugewiesen sind, aber (noch) keinem Fall zugewiesen wurden. Dies kann
beispielsweise bei der Planung von Leistungen für einen Patienten der Fall sein, der in Zukunft wieder aufgenommen wird:
Die Leistung wird dem Patienten zugewiesen, aber sonst nichts. Normalerweise sollte der Benutzer erst nach der Aufnahme
und der Erstellung des Falls Dokumente und andere klinische Daten erstellen, aber manchmal kommt es zu Verwechslungen.
Dies führt dazu, dass mehrere Dokumente mit Bezug auf einen Patienten und eine Leistung erstellt werden, aber kein Fall-
oder Bewegungsbezug besteht, was wiederum zu allen möglichen Folgeproblemen führt.&lt;/p></description></item><item><title>Öl ins Feuer: Präfix-Notation für ABAP-Variablen und -Attribute</title><link>https://volker-wegert.de/de/posts/2016-02-06-abap-prefixes/</link><pubDate>Sat, 06 Feb 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-02-06-abap-prefixes/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2016/02/06/fanning-the-flames-prefixing-variableattribute-names">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Triggerwarnung: Dieser Blog wird wahrscheinlich eine Reihe von Menschen verärgern. Er schlummert schon seit einiger
Zeit in meinem Hinterkopf, ursprünglich inspiriert von &lt;a href="http://scn.sap.com/people/ralf.wenzel.heuristika">Ralf Wenzels&lt;/a>
Artikel &lt;a href="http://scn.sap.com/community/abap/blog/2015/09/22/hungarian-beginners-course--a-polemic-scripture-against-hungarian-notation">Hungarian beginner&amp;rsquo;s course - a polemic scripture against Hungarian
Notation&lt;/a>.
Unter anderem wäre ich nicht allzu überrascht, kritische Kommentare von &lt;a href="http://scn.sap.com/people/matthew.billingham">Matthew
Billingham&lt;/a> zu erhalten – aber vielleicht auch nicht. Wie Tolkien es vor
langer Zeit ausdrückte: &amp;ldquo;So many strange things have chanced that to learn the praise of a fair lady under the loving
strokes of a Dwarf&amp;rsquo;s axe will seem no great wonder.&amp;rdquo; Ich dachte mir, ich könnte es genauso gut versuchen, auch wenn es
meine Geburtstagsfeier verderben könnte.&lt;/p></description></item><item><title>Systemlandschaft zur Add-On-Entwicklung</title><link>https://volker-wegert.de/de/posts/2016-01-10-addon-landscape/</link><pubDate>Sun, 10 Jan 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-01-10-addon-landscape/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2016/01/10/system-landscape-for-add-on-development">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Dies ist der zweite Teil meiner Antwort auf &lt;a href="http://scn.sap.com/people/christian.drumm">Christian Drumms&lt;/a> Frage &lt;em>&lt;a href="http://scn.sap.com/community/netweaver/blog/2015/12/30/system-landscapes-and-transport-routes-for-add-on-development">What
System Landscapes Setup to use for Add On
Development?&lt;/a>&lt;/em>
– und wahrscheinlich eher eine Antwort auf die ursprüngliche Frage als der erste Teil. Im Moment entscheiden sich viele
Autoren dafür, in ihren Blogs eher obskure Hinweise auf TFA zu platzieren, aber da es in diesem Beitrag um eher
grundlegende Aspekte geht, möchte ich einen anderen Rahmen wählen.&lt;/p></description></item><item><title>Erste Kugelbahn 2016</title><link>https://volker-wegert.de/de/posts/2016-01-03-first-marble-coaster-2016/</link><pubDate>Sun, 03 Jan 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-01-03-first-marble-coaster-2016/</guid><description>&lt;p>Nach den Standardmodellen habe ich mal die Fördermechanismen kombiniert: Ein Kettenförderer versorgt den Kugelflipper,
der wieder den Stufenförderer bedient.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/IdK1a8sdg6M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Fischertechnik-Möbel</title><link>https://volker-wegert.de/de/posts/2016-01-03-fischertechnik-furniture/</link><pubDate>Sun, 03 Jan 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-01-03-fischertechnik-furniture/</guid><description>&lt;p>Meine fischertechnik-Sammlung, die in den letzten Jahren mehr oder weniger ziellos durch die Wohnung gewandert ist,
sollte anlässlich der anstehenden Umräumarbeiten mal einen festeren Platz bekommen. Ich habe relativ lange nach einem
passenden Möbelstück dafür gesucht und leider nichts gefunden; deshalb war an den Urlaubs- und Feiertagen mal wieder
Basteln angesagt.&lt;/p>
&lt;p>Gegeben: ein Platz, an dem der ganze Kram unterkommen soll.&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://volker-wegert.de/posts/2016-01-03-fischertechnik-furniture/FT-Schrank-Platz.jpeg"/>
&lt;/figure>
&lt;p>Gegeben weiterhin: fischertechnik, größtenteils verpackt in Allit-Sortierkästen (gibt&amp;rsquo;s immer mal wieder beim Discounter
im Angebot). Es ist noch etwas mehr loser Krams zu verstauen, der nicht auf dem Bild drauf ist.&lt;/p></description></item><item><title>Dynamic XL 5 - Schießförderer</title><link>https://volker-wegert.de/de/posts/2016-01-01-dynamic-xl-5/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2016-01-01-dynamic-xl-5/</guid><description>&lt;p>Ich hab mir den Namen nicht ausgedacht, der steht so in der Anleitung. Dieses Modell ist relativ einfach zu bauen, hat
aber bei mir nicht ohne weiteres funktioniert. Feder-Tuning hat nicht gereicht - ich musste die Rampe und Bahn um 15 mm
absenken, da die Kugeln ansonsten nicht genügend Schwung gehabt hätten.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/S5RldoucWFs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Branching = schwierig</title><link>https://volker-wegert.de/de/posts/2015-12-31-abap-branching/</link><pubDate>Thu, 31 Dec 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-12-31-abap-branching/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/netweaver/blog/2015/12/31/branching-hard">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Vor einiger Zeit hatten &lt;a href="http://scn.sap.com/people/christian.drumm">Christian Drumm&lt;/a>, &lt;a href="http://scn.sap.com/people/fred.verheul">Fred
Verheul&lt;/a> und ich eine „Twitter-Diskussion“, die Christian bereits im gestrigen
Blog zusammengefasst hat &lt;a href="http://scn.sap.com/community/netweaver/blog/2015/12/30/system-landscapes-and-transport-routes-for-add-on-development">Question: What System Landscapes Setup to use for Add On
Development?&lt;/a>.
Während ich versuchte, eine für den Artikel geeignete Antwort zu finden, kamen mir immer mehr Details in den Sinn,
sodass ich beschloss, die Diskussion mit einem oder zwei eigenen Blogs weiterzuverfolgen. Zunächst möchte ich mich dem
Thema der fehlenden Branching-Unterstützung in ABAP widmen.&lt;/p></description></item><item><title>Dynamic XL 4 - Stufenförderer</title><link>https://volker-wegert.de/de/posts/2015-12-31-dynamic-xl-4/</link><pubDate>Thu, 31 Dec 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-12-31-dynamic-xl-4/</guid><description>&lt;p>Bei diesem Modell habe ich zwei Fehlerchen gemacht: Ich habe ein paar Teile falsch zusammengesteckt (schnell korrigiert)
und ich habe die Höhe des Modells unterschätzt. Deshalb fehlt im Zeitraffer leider die Spitze&amp;hellip;&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/NLLfb-gOKZc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Dynamic XL 2 - Radförderer</title><link>https://volker-wegert.de/de/posts/2015-12-30-dynamic-xl-2/</link><pubDate>Wed, 30 Dec 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-12-30-dynamic-xl-2/</guid><description>&lt;p>Bei Modell 2 aus dem Dynamic XL-Kasten hab ich mich erst etwas verbaut - aber nichts, was man nicht korrigieren
könnte&amp;hellip;&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8e54KI3zGME?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Dynamic XL 3 - Treppenförderer</title><link>https://volker-wegert.de/de/posts/2015-12-30-dynamic-xl-3/</link><pubDate>Wed, 30 Dec 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-12-30-dynamic-xl-3/</guid><description>&lt;p>Dieses Modell war zwar recht einfach zusammenzusetzen, aber die Tücke steckt im Detail: Wenn nicht alle Teile der Treppe
sauber aneinander vorbei gleiten, verbiegen sich die Schubstangen. Nicht gut.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/sSpbc1VSn8I?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Dynamic XL 1 - Kettenförderer</title><link>https://volker-wegert.de/de/posts/2015-12-29-dynamic-xl-1/</link><pubDate>Tue, 29 Dec 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-12-29-dynamic-xl-1/</guid><description>&lt;p>Unter dem Weihnachtsbaum lag dieses Jahr unter anderem ein Riesenkasten Plastikteile (fischertechnik Dynamic XL). Da ich
ein wenig aus der Übung geraten bin, baue ich erstmal gemäß Anleitung die Modelle nach. Hier das erste Modell - ein
relativ einfacher Kettenförderer:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/BFqF_uSRzv8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Auslieferung von ABAP-Produkten</title><link>https://volker-wegert.de/de/posts/2015-10-29-delivery-barrier/</link><pubDate>Thu, 29 Oct 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-10-29-delivery-barrier/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2015/10/29/the-delivery-barrier">SAP Community Network&lt;/a>
veröffentlicht; diese Fassung ist um einen weiteren Absatz ergänzt.&lt;/em>&lt;/p>
&lt;h2 id="einleitung">Einleitung&lt;/h2>
&lt;p>In den letzten Jahren ist die ABAP-Entwicklung viel einfacher geworden. Die Perspektive des einzelnen Entwicklers hat
sich durch fortschrittliche Tools (ADT!), bessere Online-Dokumentation und Community-Unterstützung erheblich verbessert.
Als ich um 2001 mit der ABAP-Entwicklung begann, brauchte man noch eine dedizierte Maschine mit unrealistischer
Hardwareausstattung, nur um das Entwicklungssystem unserer Landschaft mit einer anständigen Geschwindigkeit laufen zu
lassen. Heute ist das mit einer virtuellen Maschine leicht zu bewerkstelligen, sogar auf billiger Standardhardware (was
natürlich nicht für ein Produktionssystem empfohlen wird, aber hey – was glauben Sie, auf was der durchschnittliche
Hudson-CI-Server in einem kleinen Entwicklungsbüro läuft?). Mit &lt;a href="http://scn.sap.com/docs/DOC-67351">vorgefertigten
Demo-Systemen&lt;/a> ist eine vollständige ABAP-Entwicklungsumgebung für die meisten
Menschen erreichbar – ich habe ich ein System innerhalb weniger Stunden installiert (einschließlich des Herunterladens
von 15 GB Installationsdateien, der Einrichtung des VirtualBox-Servers und des zugrunde liegenden Betriebssystems,
während ich nebenbei noch andere Dinge erledigt habe). Wenn Sie das System nicht auf Ihrer eigenen Hardware ausführen
möchten, können Sie ein CAL-Konto erwerben und die Systeme auch in der Cloud ausführen.&lt;/p></description></item><item><title>ABAP-Fallen: Kritische Größenangaben</title><link>https://volker-wegert.de/de/posts/2015-08-20-abap-trapdoors-size-does-matter/</link><pubDate>Thu, 20 Aug 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-08-20-abap-trapdoors-size-does-matter/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2015/08/20/abap-trapdoors-size-does-matter">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Es gibt verschiedene Möglichkeiten, mit XML-Daten in ABAP umzugehen, die alle mehr oder weniger gut dokumentiert sind.
Wenn Sie beispielsweise einen abwärtskompatiblen ereignisbasierten Parsing-Ansatz benötigen, können Sie die
&lt;a href="http://help.sap.com/abapdocu_740/en/abenabap_ixml_lib.htm">iXML-Bibliothek&lt;/a> mit ihrem integrierten Parser im SAX-Stil
verwenden. (Beachten Sie, dass iXML das gesamte Dokument immer noch erstellt, sodass es eher einem DOM-Parser mit einer
angehängten SAX-Ereignisausgabe ähnelt. Wenn Sie eine streng serielle Verarbeitungsfunktion suchen, sehen Sie sich
stattdessen die relativ neue &lt;a href="http://help.sap.com/abapdocu_740/en/abenabap_sxml_lib.htm">sXML-Bibliothek&lt;/a> an.&lt;/p></description></item><item><title>NWP1-Anwendungsstatistik erweitern</title><link>https://volker-wegert.de/de/posts/2015-08-17-nwp1-workload-statistics/</link><pubDate>Mon, 17 Aug 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-08-17-nwp1-workload-statistics/</guid><description>&lt;p>Mit &lt;a href="http://service.sap.com/sap/support/notes/1609418">Hinweis 1609418&lt;/a> aus 2011 wurde der Klinische Arbeitsplatz (NWP1)
dahingehend erweitert, dass im Verlauf der Anwendung zusätzliche Informationen in die Anwendungsstatistik (Transaktion
&lt;code>STAD&lt;/code>) protokolliert werden. (Beachten Sie, dass Sie je nach Ihrem Systemzustand die Korrektur aus &lt;a href="http://service.sap.com/sap/support/notes/2193204">Hinweis
2193204&lt;/a> einbauen müssen, um die Protokollierung einschalten zu
können.) Die so protokollierte Information ist zwar nützlich, aber für Performance-Untersuchungen leider nicht
ausreichend.&lt;/p>
&lt;p>Der Grund liegt im Umfang der protokollierten Informationen. Dazu noch einmal &lt;a href="http://service.sap.com/sap/support/notes/1609418">Hinweis
1609418&lt;/a>:&lt;/p></description></item><item><title>ABAP-Fallen: CALL TRANSFORMATION id(ontwork)</title><link>https://volker-wegert.de/de/posts/2015-06-05-abap-trapdoors-call-transformation-idontwork/</link><pubDate>Fri, 05 Jun 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-06-05-abap-trapdoors-call-transformation-idontwork/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2015/06/05/abap-trapdoors">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Ich verwende &lt;a href="http://help.sap.com/abapdocu_740/en/abenabap_xslt_asxml.htm">asXML&lt;/a> seit einigen Jahren als bequeme
Möglichkeit, beliebige ABAP-Datenstrukturen zu serialisieren und zu deserialisieren. Vor einiger Zeit habe ich von
&lt;code>IF_SERIALIZABLE_OBJECT&lt;/code> und seiner Verwendung zum [Einfügen von Klasseninstanzen (auch &lt;em>Objekte&lt;/em> genannt) in eine
asXML-Darstellung Darstellung] (&lt;a href="http://help.sap.com/abapdocu_740/en/abenasxml_class_instances.htm">http://help.sap.com/abapdocu_740/en/abenasxml_class_instances.htm&lt;/a>) erfahren. Vor ein
paar Tagen beschloss ich, diese Technik in einem aktuellen Entwicklungsprojekt zu verwenden. Gleichzeitig versuchte ich,
&lt;code>CL_DEMO_OUTPUT_STREAM&lt;/code> anstelle von klassischen Listen zu verwenden [wie in der Online-Dokumentation vorgeschlagen]
(&lt;a href="http://help.sap.com/abapdocu_740/en/abenabap_dynpro_list.htm%29">http://help.sap.com/abapdocu_740/en/abenabap_dynpro_list.htm)&lt;/a>. Da ich mit den Grundlagen der
Verwendung von Transformationen vertraut war, konzentrierte ich mich eher auf die Verwendung dieser neuen
Ausgabetechnologie. Ich habe ein kleines Demoprogramm wie dieses hier zusammengeworfen:&lt;/p></description></item><item><title>ABAP Object Services (Persistenzklassen) und Änderungsbelegschreibung</title><link>https://volker-wegert.de/de/posts/2015-03-21-object-services-change-documents/</link><pubDate>Sat, 21 Mar 2015 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2015-03-21-object-services-change-documents/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2015/03/21/combining-object-services-and-change-documents">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>Wir kann ich die mit den Object Services (OS generierten Persistenzklassen mit Änderungsbelegschreibung (Change
Documents, CDO) kombinieren?&lt;/p>&lt;/blockquote>
&lt;p>Diese Frage wurde bereits mehrfach an verschiedenen Stellen gestellt, und bisher bin ich noch nicht auf eine Antwort
gestoßen, die als Umsetzungsrichtlinie dienen könnte. Da wir die beiden Frameworks für ein Entwicklungsprojekt
kombinieren müssen, habe ich beschlossen, eine kurze Machbarkeitsanalyse durchzuführen und einige Details und
Fallstricke mit der Community zu teilen. Für diesen Artikel benötigen Sie ein grundlegendes Verständnis sowohl der
Objektdienste als auch der Änderungsdokumente und ein recht solides Verständnis der grundlegenden Prinzipien der
Objektorientierung.&lt;/p></description></item><item><title>PMD-Bücher veröffentlicht</title><link>https://volker-wegert.de/de/posts/2014-12-11-pmd-books/</link><pubDate>Thu, 11 Dec 2014 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2014-12-11-pmd-books/</guid><description>&lt;p>Seit einigen Tagen sind meine drei Bücher zum Thema i.s.h.med Parametrierbare Medizinische Dokumentation (PMD) allgemein
verfügbar. Die Bücher sind über den Buchhandel erhältlich, können aber auch direkt von mir über die Website
&lt;a href="https://www.pmd-buch.de">www.pmd-buch.de&lt;/a> bezogen werden.&lt;/p></description></item><item><title>Erweiterbarkeit sind nicht nur 15 Buchstaben</title><link>https://volker-wegert.de/de/posts/2014-11-16-extensibility/</link><pubDate>Sun, 16 Nov 2014 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2014-11-16-extensibility/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/eclipse/blog/2014/11/16/extensibility-aint-just-a-13-letter-word">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Einer der Hauptgründe, warum die Eclipse-Plattform als Grundlage für die neue ABAP-Entwicklungsumgebung gewählt wurde,
ist ihre Erweiterbarkeit. In fast jeder Einführung in ADT, die ich bisher gesehen habe, wird der zusätzliche Nutzen
betont, der durch die Kombination von Plug-ins aus verschiedenen Quellen erzielt werden kann. Ich benutze Eclipse schon
seit einiger Zeit (seit etwa Version 3.2 oder 3.3), habe meine eigenen Eclipse-basierten Tools entwickelt und bin zwar
sicherlich kein Experte, kenne mich aber mit den Grundlagen der Implementierung und Erweiterung von Eclipse-Plug-ins
aus.&lt;/p></description></item><item><title>ABAP-Fallen: RFC ja, Konvertierung nein</title><link>https://volker-wegert.de/de/posts/2014-11-14-abap-trapdoors-rfc-conversion/</link><pubDate>Fri, 14 Nov 2014 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2014-11-14-abap-trapdoors-rfc-conversion/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2014/11/14/abap-trapdoors-r-f-conversion-on-a-string">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Vor einigen Wochen musste ich eine scheinbar einfache Aufgabe programmieren: Von einem SAP Business Workflow, der in
System ABC ausgeführt wird, musste ein Sub-Workflow mit mehreren Schritten in einem anderen System oder sogar in
mehreren anderen Systemen gestartet werden. Da keine BPM-Engine verfügbar war, entschied ich mich, einfache RFC-fähige
Funktionsbausteine zu verwenden, um Workflow-Ereignisse im Zielsystem auszulösen. Die Sub-Workflows können dann über
einfache Objekttyp-Verknüpfungseinträge gestartet werden. Dieser Ansatz funktioniert zwar für mein einfaches Szenario
recht gut, aber ich bin auf ein völlig unerwartetes Problem gestoßen, dessen Lösung mich eine ganze Weile gekostet hat.&lt;/p></description></item><item><title>Kugel-Bahn</title><link>https://volker-wegert.de/de/posts/2014-06-08-marbles-rails/</link><pubDate>Sun, 08 Jun 2014 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2014-06-08-marbles-rails/</guid><description>&lt;p>Seit einiger Zeit liegt hier eine fischertechnik Bau-Spiel-Bahn herum und wartete - zunächst auf neue Gleise, dann auf
den Einsatz in einem größeren Gebilde. Das ist jetzt entstanden - im doppeltsten Sinn der Worte eine Kugel-Bahn.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/sN3JVwHYkOE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div>
&lt;p>Dazu gibt es noch ein separates Making-Of-Video - die Bauzeit von etwas mehr als 9 Stunden hat selbst bei einem Faktor
von 120:1 nicht wirklich mehr in das Video gepasst.&lt;/p></description></item><item><title>Karussell mit mechanischem Rundenzähler</title><link>https://volker-wegert.de/de/posts/2013-12-31-carousel-mechanical-lap-counter/</link><pubDate>Tue, 31 Dec 2013 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2013-12-31-carousel-mechanical-lap-counter/</guid><description>&lt;p>Und noch ein Video, das ich irgendwie vergessen habe, hier aufzuführen. Irgendjemand - Yeti? - hat mich auf die Idee
gebracht, mal mit Foto-Zeitraffern zu experimentieren; herausgekommen ist dieses Video. Als Software habe ich &lt;a href="http://www.dayofthenewdan.com/projects/time-lapse-assembler-1/">Time
Lapse Assembler&lt;/a> verwendet.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4Qmu4AoMJy0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>Kugelbahn mit Weiche, Auswurf und elektonischer Steuerung</title><link>https://volker-wegert.de/de/posts/2013-12-15-marble-coaster/</link><pubDate>Sun, 15 Dec 2013 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2013-12-15-marble-coaster/</guid><description>&lt;p>Es mag jetzt etwas unfair sein, das zurückzudatieren, aber irgendwie habe ich es damals[™] verpennt, das Video hier
unterzubringen&amp;hellip; sei&amp;rsquo;s drum&amp;hellip;&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Vo32qUmRIxc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
&lt;/div></description></item><item><title>ABAP-Fallen: Death By STRING</title><link>https://volker-wegert.de/de/posts/2011-11-21-abap-trapdoors-death-by-string/</link><pubDate>Mon, 21 Nov 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-11-21-abap-trapdoors-death-by-string/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2011/11/21/abap-trapdoors-death-by-string">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Wie im vorherigen Beitrag ist auch dieser eine Fallstrick, den eher die Entwickler von Frameworks und Toolkits als deren
Nutzer betrifft.&lt;/p>
&lt;p>Der Datentyp &lt;code>STRING&lt;/code> ist in ABAP seit 4.6A verfügbar (wie viele von Ihnen erinnern sich übrigens daran, an diesem
Release gearbeitet zu haben?), und viele Entwickler scheinen Strings als die einzige Möglichkeit zu betrachten,
textähnliche Daten in einem ABAP-Programm zu transportieren. Ich kann nur über die Gründe spekulieren – vielleicht liegt
es daran, dass ABAP für die meisten Entwickler nicht die erste Programmiersprache ist und in anderen Sprachen Strings
das gängige Instrument zur Verarbeitung von Textdaten sind. Einige langjährige ABAP-Entwickler könnten auch auf Strings
umgestiegen sein, weil sie einfacher zu verwenden sind als die herkömmlichen C-Felder – man muss nicht mehr über die
maximale Länge des Wertes nachdenken. In vielen Programmen und Frameworks habe ich das folgende Muster gesehen:&lt;/p></description></item><item><title>ABAP-Fallen: Type Lock-In</title><link>https://volker-wegert.de/de/posts/2011-10-05-abap-trapdoors-type-lock-in/</link><pubDate>Wed, 05 Oct 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-10-05-abap-trapdoors-type-lock-in/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2011/10/05/abap-trapdoors-type-lock-in">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>In den vergangenen ABAP-Fallen-Blogs habe ich über verschiedene Probleme geschrieben, die beim Schreiben von Code in
ABAP auftreten können. Beim heutigen Thema geht es eher um ein strukturelles oder gestalterisches Problem. Für dieses
Beispiel verwenden wir die folgende Klassenhierarchie:&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://volker-wegert.de/posts/2011-10-05-abap-trapdoors-type-lock-in/CHANGING-Hierarchy.png"/>
&lt;/figure>
&lt;h2 id="importing">IMPORTING&lt;/h2>
&lt;p>Stellen Sie sich eine Methode vor, die eine Instanz von &lt;code>CL_SUPER&lt;/code> verwendet, um eine beliebige Operation auszuführen:&lt;/p>
&lt;pre tabindex="0">&lt;code>METHODS bar
IMPORTING ir_object TYPE REF TO cl_super.
...
DATA: lr_super TYPE REF TO cl_super,
lr_sub1 TYPE REF TO cl_sub1,
lr_sub2 TYPE REF TO cl_sub2.
...
lr_foo-&amp;gt;bar( lr_super ).
lr_foo-&amp;gt;bar( lr_sub1 ).
lr_foo-&amp;gt;bar( lr_sub2 ).
&lt;/code>&lt;/pre>&lt;p>Das ist ziemlich einfach – wenn wir diese Methode aufrufen, können wir entweder eine Variable von &lt;code>TYPE REF TO cl_super&lt;/code>
oder eine beliebige der Unterklassen übergeben, da jede Instanz von &lt;code>CL_SUB1&lt;/code> eine &lt;code>CL_SUPER&lt;/code>-Instanz ist. Dies gilt
auch für Unterklassen, von denen der Ersteller der ursprünglichen Klassen nichts weiß – zum Beispiel für alle
Kundenimplementierungen, die das bestehende Framework erweitern.&lt;/p></description></item><item><title>ABAP-Fallen: LOOP-Schwindeleien</title><link>https://volker-wegert.de/de/posts/2011-04-28-abap-trapdoors-loop-dizziness/</link><pubDate>Thu, 28 Apr 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-04-28-abap-trapdoors-loop-dizziness/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/people/volker.wegert2/blog/2011/04/28/abap-trapdoors-loop-dizziness">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Wie Sie sicherlich alle wissen, gibt es zahlreiche Möglichkeiten, eine interne Tabelle zu durchlaufen. Die
wahrscheinlich beliebtesten sind &lt;code>LOOP AT table INTO line&lt;/code>, &lt;code>LOOP AT table ASSIGNING &amp;lt;fs&amp;gt;&lt;/code> und &lt;code>LOOP AT table REFERENCE INTO dref&lt;/code>. Jeder sollte sich der Leistungsprobleme und Nebenwirkungen bewusst sein, die bei der Verwendung der
verschiedenen Versionen auftreten können – am wichtig ist, dass &lt;code>LOOP AT … INTO …&lt;/code> eine Kopie jeder einzelnen
Tabellenzeile erstellt, während die anderen Varianten nur Zeiger oder Adressen verschieben. Einerseits bedeutet dies,
dass bei „breiten“ Tabellen viel Zeit für das Verschieben von Daten aufgewendet wird, andererseits bedeutet dies aber
auch, dass Sie die Daten nach der Änderung wieder in die Tabelle kopieren müssen, während die anderen Varianten eine
direkte Bearbeitung der Tabelleninhalte ermöglichen.&lt;/p></description></item><item><title>Eclipse PDE Headless Build: hinten anstellen!</title><link>https://volker-wegert.de/de/posts/2011-04-24-eclipse-pde-headless-build-order/</link><pubDate>Sun, 24 Apr 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-04-24-eclipse-pde-headless-build-order/</guid><description>&lt;p>Wenn man sich mit dem Eclipse PDE Headless Build einen produktbasierten Build-Prozess zusammengeklebt hat, der scheinbar
ganz gut funktioniert, erlebt man manchmal noch eine unschöne Überraschung:&lt;/p>
&lt;blockquote>
&lt;p>Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see
config.ini)&lt;/p>&lt;/blockquote>
&lt;p>Diese Meldung steht im Fehlerprotokoll, auf das beim Start der Anwendung mit einem schmucklosen Diealogfenster
hingewiesen wird. Das Problem löst man, indem man in der Produktdefinition (.product-Datei) auf der Registerkarte
&lt;em>Configuration&lt;/em> das Plug-In &lt;code>org.eclipse.core.runtime&lt;/code> einträgt, Auto-Start aktiviert und den Start-Level auf 2 stellt. Der
OSGi-Standard-Start-Level ist nämlich 4 - so ist sichergestellt, dass dieses zentrale Paket vor den anderen geladen
wird. Ach so, wenn man die &lt;code>config.ini&lt;/code> manuell erstellt, muss man das natürlich von Hand anpassen&amp;hellip;&lt;/p></description></item><item><title>Eclipse PDE Headless Build: Vorsicht vor OpenJDK / Debian</title><link>https://volker-wegert.de/de/posts/2011-04-24-eclipse-pde-headless-build-openjdk/</link><pubDate>Sun, 24 Apr 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-04-24-eclipse-pde-headless-build-openjdk/</guid><description>&lt;p>Wenn man auf einem Linux-Server eine Umgebung zur Ausführung des Eclipse PDE Headless Build konfiguriert und sich dabei
zufällig oder sogar absichtlich eines Debian-Servers bedient und wiederum zufällig oder absichtlich das OpenJDK
installiert, wird man spätestens bei der Aktivierung der p2-Integration die folgende Meldung des p2-Directors sehen:&lt;/p>
&lt;blockquote>
&lt;p>One or more certificates rejected. Cannot proceed with installation.&lt;/p>&lt;/blockquote>
&lt;p>Diese Meldung ist leider sehr wenig aussagekräftig, denn sie verrät nicht, welche Zertifikate abgewiesen wurden. Noch
verwirrender ist, dass sie selbst dann erscheint, wenn man eigentlich gar keine Codesignierung aktiviert hat. Des
Rätsels Lösung findet sich auf den &lt;a href="http://openjdk.java.net/groups/security/">OpenJDK-Seiten&lt;/a>:&lt;/p></description></item><item><title>ABAP-Fallen: Parameter-Morphing</title><link>https://volker-wegert.de/de/posts/2011-03-25-abap-trapdoors-morphing-method-parameters/</link><pubDate>Fri, 25 Mar 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-03-25-abap-trapdoors-morphing-method-parameters/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/blog/2011/03/25/abap-trapdoors-morphing-method-parameters">SAP Community Network&lt;/a>
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Während unserer grundlegenden Programmierkurse haben wir alle gelernt, wie man den Datenfluss durch eine Reihe von
Methodenaufrufen steuert und warum das wichtig ist. Hoffentlich mögen Sie &lt;code>FORM foo USING bar&lt;/code> genauso wenig wie ich und
ersetzen es durch &lt;code>METHOD foo IMPORTING x EXPORTING x CHANGING z&lt;/code>, wobei Sie den Teil &lt;code>CHANGING&lt;/code> nach Möglichkeit
weglassen. Auf diese Weise können Sie immer erkennen, welche Parameter Sie der Methode bereitstellen müssen und welche
Parameter nur Ausgabewerte liefern. Sie können sich auch darauf verlassen, dass der Wert des Exportparameters
ausschließlich durch den Methodenaufruf bestimmt wird, unabhängig von anderen Aktionen – oder etwa nicht? Schauen wir
uns das genauer an:&lt;/p></description></item><item><title>ABAP-Fallen: Der Mythos der Konstruktor-Instanzmethode</title><link>https://volker-wegert.de/de/posts/2011-03-07-abap-trapdoors-myth-instance-constructor/</link><pubDate>Mon, 07 Mar 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-03-07-abap-trapdoors-myth-instance-constructor/</guid><description>&lt;p>&lt;em>Diesen Artikel habe ich ursprünglich im
&lt;a href="http://scn.sap.com/community/abap/application-development/objects/blog/2011/03/07/abap-trapdoors-the-myth-of-the-instance-constructor">SAP Community Network&lt;/a>.
veröffentlicht.&lt;/em>&lt;/p>
&lt;p>Einer der wohl irreführendsten Feldwerte in der gesamten ABAP Workbench ist dieser:&lt;/p>
&lt;figure>
&lt;img loading="lazy" src="https://volker-wegert.de/posts/2011-03-07-abap-trapdoors-myth-instance-constructor/AT-Constructor-InstanceMethod.png"/>
&lt;/figure>
&lt;p>Er suggeriert, dass der Konstruktor nur eine weitere Instanzmethode ist, die vom Kernel automatisch aufgerufen wird,
sobald eine Instanz erstellt wird – aber das ist grundlegend falsch. Ich möchte anhand eines kleinen Beispiels zeigen,
was schiefgehen kann, wenn man in diese Falle tappt.&lt;/p>
&lt;p>(Ich verwende hier lokale Klassen, um die Anzahl der Screenshots zu reduzieren, aber dasselbe gilt natürlich auch für
globale Klassen.)&lt;/p></description></item><item><title>Funktions-Referenz für ALV Grid-Programmierer</title><link>https://volker-wegert.de/de/posts/2011-02-20-alv-function-codes/</link><pubDate>Sun, 20 Feb 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-02-20-alv-function-codes/</guid><description>&lt;p>Ich habe mich wieder einmal mit dem &lt;a href="http://help.sap.com/saphelp_nw04/helpdata/de/8d/e994374c9cd355e10000009b38f8cf/frameset.htm">ALV
Grid&lt;/a> und seiner
Standard-Toolbar herumgeschlagen. Da ich mir die Funktionscodes bzw. deren Konstanten, mit denen man die einzelnen
Knöpfe deaktivieren kann, einfach nicht merken kann und will, habe ich jetzt mal eine kleine Referenzkarte
zusammengepinselt. Vielleicht kann ja noch jemand etwas damit anfangen&amp;hellip;&lt;/p>
&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'>&lt;/script>
&lt;style>
#embed-pdf-container {
position: relative;
width: 100%;
height: auto;
min-height: 20vh;
}
.pdf-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
#the-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.pdf-loadingWrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.pdf-loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
#overlayText {
word-wrap: break-word;
display: grid;
justify-content: end;
}
#overlayText a {
position: relative;
top: 10px;
right: 4px;
color: #000;
margin: auto;
background-color: #eeeeee;
padding: 0.3em 1em;
border: solid 2px;
border-radius: 12px;
border-color: #00000030;
text-decoration: none;
}
#overlayText svg {
height: clamp(1em, 2vw, 1.4em);
width: clamp(1em, 2vw, 1.4em);
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
&lt;/style>&lt;div class="embed-pdf-container" id="embed-pdf-container-669942ee">
&lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-669942ee">
&lt;div class="pdf-loading" id="pdf-loading-669942ee">&lt;/div>
&lt;/div>
&lt;div id="overlayText">
&lt;a href="https://volker-wegert.de/posts/2011-02-20-alv-function-codes/ALV_Function_Codes.pdf" aria-label="Download" download>
&lt;svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
&lt;path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z" />
&lt;/svg>
&lt;/a>
&lt;/div>
&lt;canvas class="pdf-canvas" id="pdf-canvas-669942ee">&lt;/canvas>
&lt;/div>
&lt;div class="pdf-paginator" id="pdf-paginator-669942ee">
&lt;button id="pdf-prev-669942ee">Previous&lt;/button>
&lt;button id="pdf-next-669942ee">Next&lt;/button> &amp;nbsp; &amp;nbsp;
&lt;span>
&lt;span class="pdf-pagenum" id="pdf-pagenum-669942ee">&lt;/span> / &lt;span class="pdf-pagecount" id="pdf-pagecount-669942ee">&lt;/span>
&lt;/span>
&lt;a class="pdf-source" id="pdf-source-669942ee" href="https://volker-wegert.de/posts/2011-02-20-alv-function-codes/ALV_Function_Codes.pdf">[pdf]&lt;/a>
&lt;/div>
&lt;noscript>
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-669942ee" href="https://volker-wegert.de/posts/2011-02-20-alv-function-codes/ALV_Function_Codes.pdf">here&lt;/a>.
&lt;/noscript>
&lt;script type="text/javascript">
(function(){
var url = '\/posts\/2011-02-20-alv-function-codes\/ALV_Function_Codes.pdf';
var hidePaginator = "true" === "true";
var hideLoader = "" === "true";
var selectedPageNum = parseInt("") || 1;
var pdfjsLib = window['pdfjs-dist/build/pdf'];
if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
pdfjsLib.GlobalWorkerOptions.workerSrc = "https:\/\/volker-wegert.de\/" + 'js/pdf-js/build/pdf.worker.js';
var pdfDoc = null,
pageNum = selectedPageNum,
pageRendering = false,
pageNumPending = null,
scale = 3,
canvas = document.getElementById('pdf-canvas-669942ee'),
ctx = canvas.getContext('2d'),
paginator = document.getElementById("pdf-paginator-669942ee"),
loadingWrapper = document.getElementById('pdf-loadingWrapper-669942ee');
showPaginator();
showLoader();
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
showContent();
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('pdf-pagenum-669942ee').textContent = num;
}
function showContent() {
loadingWrapper.style.display = 'none';
canvas.style.display = 'block';
}
function showLoader() {
if(hideLoader) return
loadingWrapper.style.display = 'flex';
canvas.style.display = 'none';
}
function showPaginator() {
if(hidePaginator) return
paginator.style.display = 'block';
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function onPrevPage() {
if (pageNum &lt;= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('pdf-prev-669942ee').addEventListener('click', onPrevPage);
function onNextPage() {
if (pageNum >= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('pdf-next-669942ee').addEventListener('click', onNextPage);
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
var numPages = pdfDoc.numPages;
document.getElementById('pdf-pagecount-669942ee').textContent = numPages;
if(pageNum > numPages) {
pageNum = numPages
}
renderPage(pageNum);
});
})();
&lt;/script></description></item><item><title>Xtext-Artikel veröffentlicht</title><link>https://volker-wegert.de/de/posts/2011-01-05-xtext-article/</link><pubDate>Wed, 05 Jan 2011 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2011-01-05-xtext-article/</guid><description>&lt;p>Im &lt;a href="http://www.linux-magazin.de/Heft-Abo/Ausgaben/2011/02">Linux-Magazin 02/2011&lt;/a>, das ab heute im Handel erhältlich
ist, findet sich auf Seite 112 ein Artikel aus meiner Feder^WTastatur. In diesem Artikel beschreibe ich, wie man
&lt;a href="http://www.eclipse.org/Xtext/">Xtext&lt;/a> und die ex-oAW-Technologien Xtend, Xpand und Check verwenden kann, um sich eine
eigene Konfigurationssprache zu erstellen und daraus Konfigurationsdateien zu generieren. Der Artikel zeigt das am
Beispiel einer Firewall-Konfiguration auf iptables-Basis, aber ich habe diese Technologie auch schon eingesetzt, um
procmail- und Sieve-Skripte zur Mailfilterung oder einen Satz von über 350 Steuerdateien zur Konfiguration einer
verteilten Anwendung zu erstellen.&lt;/p></description></item><item><title>Folien zum Graphiti-Vortrag</title><link>https://volker-wegert.de/de/posts/2010-12-07-graphiti-talk-slides/</link><pubDate>Tue, 07 Dec 2010 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2010-12-07-graphiti-talk-slides/</guid><description>&lt;p>In der beiliegenden Datei befinden sich die Folien zu meinem Vortrag &lt;strong>project.replaceAll(&amp;ldquo;GMF&amp;rdquo;, &amp;ldquo;Graphiti&amp;rdquo;);&lt;/strong> vom
07.12.2010. Auf dem &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2010/Berlin">Eclipse Demo Camp&lt;/a> habe ich über
den Austausch des &lt;a href="http://www.eclipse.org/modeling/gmp/">Graphical Modeling Framework&lt;/a> durch das neue Projekt
&lt;a href="http://www.eclipse.org/graphiti/">Graphiti&lt;/a> berichtet. Beispielcode gibt&amp;rsquo;s keinen - der Grund dafür ist aus der
Präsentation zu erkennen (man muss de facto alles neu schreiben). Einsteigern kann ich aber die Tutorials sehr
empfehlen. Leider sind die Folien unkommentiert, ich weiß also nicht, wieviel die ohne den Vortrag dazu wirklich
bringen&amp;hellip;&lt;/p></description></item><item><title>Flight</title><link>https://volker-wegert.de/de/posts/2010-03-23-flight/</link><pubDate>Tue, 23 Mar 2010 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2010-03-23-flight/</guid><description>&lt;p>Das erste halbwegs anhörliche Ergebnis meiner Einarbeitung in Ableton Live. Viel Spaß damit&amp;hellip;&lt;/p>
&lt;figure >
&lt;audio controls preload="metadata">
&lt;source src="https://volker-wegert.de/posts/2010-03-23-flight/Flight-HQ.mp3" type="audio/mpeg">
&lt;/audio>
&lt;/figure>
&lt;figure>
&lt;img loading="lazy" src="https://volker-wegert.de/posts/2010-03-23-flight/Flight.png"/>
&lt;/figure></description></item><item><title>exim: Smarthost anhand der Absenderadresse auswählen</title><link>https://volker-wegert.de/de/posts/2009-10-16-exim-smarthost-sender-address/</link><pubDate>Fri, 16 Oct 2009 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2009-10-16-exim-smarthost-sender-address/</guid><description>&lt;p>Ich möchte von meinen Systemen aus je nach der Absender-Adresse unterschiedliche Smarthosts ansteuern. Sprich: Wenn ich
im MUA als &lt;code>vwegert@web.de&lt;/code> schreibe, soll die Mail zur Auslieferung an &lt;code>smtp.web.de&lt;/code> übergeben werden, wenn ich als
Absender meine Manitu-Adresse verwende, soll der dortige Smarthost verwendet werden und so weiter. Exim kann das mit ein
wenig Bastelei.&lt;/p>
&lt;p>Erstmal lege ich mir eine Datei namens &lt;code>/etc/exim/smarthosts&lt;/code> an, in der ich die &amp;ldquo;Routing-Regeln&amp;rdquo; definiere. Die Datei
sieht so aus:&lt;/p></description></item><item><title>MDD trifft ABAP</title><link>https://volker-wegert.de/de/posts/2009-10-12-mdd-meets-abap/</link><pubDate>Mon, 12 Oct 2009 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2009-10-12-mdd-meets-abap/</guid><description>&lt;p>MDD ist seit einiger Zeit ein heißes Thema. Mit der Einführung leistungsstarker Tools wie EMF und oAW ist es möglich
geworden, die Vorteile der modellgetriebenen Entwicklung tatsächlich zu nutzen, ohne zu viel Zeit und Geld für die Tools
aufzuwenden. MDD hat bei bestimmten Projekttypen längst die Gewinnschwelle zwischen intellektuellem Aufwand und
Entwicklungsbeschleunigung erreicht. Es ist nicht die Lösung für alle Probleme, aber es ist eine wirklich
leistungsstarke Technik mit einer Reihe stabiler und bewährter Tools.&lt;/p></description></item><item><title>Warum ich ABAP-Entwicklung mag (2)</title><link>https://volker-wegert.de/de/posts/2009-10-08-why-i-enjoy-abap-development-2/</link><pubDate>Thu, 08 Oct 2009 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2009-10-08-why-i-enjoy-abap-development-2/</guid><description>&lt;p>Im &lt;a href="https://volker-wegert.de/de/content/prof/sap/warum-ich-gerne-abap-entwickle">ersten Artikel&lt;/a> habe ich bereits einige Aspekte erwähnt, die
ABAP zu einer meiner bevorzugten Entwicklungsumgebungen machen: das zentrale Datenwörterbuch und seine Verbindungen zur
Sprache und zum Laufzeitsystem, der Datenbankzugriff und das Änderungs- und Transportsystem. In diesem Artikel möchte
ich Ihnen ein paar Hinweise geben, was Sie bei der Entwicklung von ABAP-Programmen beachten sollten und was nicht.&lt;/p>
&lt;p>Zunächst einmal ist das SAP R/3-System eine Mehrbenutzerumgebung – aber es fühlt sich nicht so an. Als Entwickler müssen
Sie sich keine Gedanken über die Trennung von Benutzern und Sitzungen machen, denn das System erledigt das für Sie.
Meistens können Sie ein Programm einfach so schreiben wie in den guten alten DOS-Zeiten, weil Sie einfach nicht auf die
Laufzeitdaten anderer Sitzungen zugreifen und dort Chaos anrichten können. Sie müssen sogar einige zusätzliche Maßnahmen
ergreifen, um &lt;a href="http://help.sap.com/saphelp_nw70ehp1/helpdata/en/14/dafc3e9d3b6927e10000000a114084/frameset.htm">einen gemeinsamen Speicherbereich zu
erstellen&lt;/a> – aber wenn
Sie dies tun, sorgt das System für die Konsistenz des gemeinsamen Speichers nicht nur zwischen Sitzungen auf einem
einzelnen Server, sondern auch über mehrere physische Anwendungsserver hinweg.&lt;/p></description></item><item><title>Warum ich ABAP-Entwicklung mag</title><link>https://volker-wegert.de/de/posts/2009-08-20-why-i-enjoy-abap-development/</link><pubDate>Thu, 20 Aug 2009 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2009-08-20-why-i-enjoy-abap-development/</guid><description>&lt;p>Es war wieder eines dieser Déjà-vu-Erlebnisse. Gestern erwähnte ich beim Eclipse Modeling Stammtisch, dass Eclipse
sozusagen mein Hobby ist. Ich verdiene meinen Lebensunterhalt mit der SAP R/3-Entwicklung (und tue dies immer noch, wenn
ich die Zeit dafür habe). Ja, genau: ABAP. Und es macht mir tatsächlich Spaß. Jetzt können Sie sich die
Gesichtsausdrücke eines durchschnittlichen IT-Experten vorstellen – von Verwunderung bis hin zu Unglauben oder sogar
Abscheu reichen. ABAP – wie kann man das mögen?&lt;/p></description></item><item><title>The Old Rambler</title><link>https://volker-wegert.de/de/posts/2009-04-02-the-old-rambler/</link><pubDate>Thu, 02 Jul 2009 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2009-04-02-the-old-rambler/</guid><description>&lt;p>Eine kleine irische (?) Melodie, irgendwo aufgelesen und für die Gitarre notiert (mit Noten und Tabulatur).&lt;/p>
&lt;figure >
&lt;audio controls preload="metadata">
&lt;source src="https://volker-wegert.de/posts/2009-04-02-the-old-rambler/TheOldRambler.mp3" type="audio/mpeg">
&lt;/audio>
&lt;/figure>
&lt;script type="text/javascript" src= '/js/pdf-js/build/pdf.js'>&lt;/script>
&lt;style>
#embed-pdf-container {
position: relative;
width: 100%;
height: auto;
min-height: 20vh;
}
.pdf-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
#the-canvas {
border: 1px solid black;
direction: ltr;
width: 100%;
height: auto;
display: none;
}
.pdf-loadingWrapper {
display: none;
justify-content: center;
align-items: center;
width: 100%;
height: 350px;
}
.pdf-loading {
display: inline-block;
width: 50px;
height: 50px;
border: 3px solid #d2d0d0;;
border-radius: 50%;
border-top-color: #383838;
animation: spin 1s ease-in-out infinite;
-webkit-animation: spin 1s ease-in-out infinite;
}
#overlayText {
word-wrap: break-word;
display: grid;
justify-content: end;
}
#overlayText a {
position: relative;
top: 10px;
right: 4px;
color: #000;
margin: auto;
background-color: #eeeeee;
padding: 0.3em 1em;
border: solid 2px;
border-radius: 12px;
border-color: #00000030;
text-decoration: none;
}
#overlayText svg {
height: clamp(1em, 2vw, 1.4em);
width: clamp(1em, 2vw, 1.4em);
}
@keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
to { -webkit-transform: rotate(360deg); }
}
&lt;/style>&lt;div class="embed-pdf-container" id="embed-pdf-container-31f6cf98">
&lt;div class="pdf-loadingWrapper" id="pdf-loadingWrapper-31f6cf98">
&lt;div class="pdf-loading" id="pdf-loading-31f6cf98">&lt;/div>
&lt;/div>
&lt;div id="overlayText">
&lt;a href="https://volker-wegert.de/posts/2009-04-02-the-old-rambler/TheOldRambler.pdf" aria-label="Download" download>
&lt;svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
&lt;path d="M9 13c.3 0 .5-.1.7-.3L15.4 7 14 5.6l-4 4V1H8v8.6l-4-4L2.6 7l5.7 5.7c.2.2.4.3.7.3zm-7 2h14v2H2z" />
&lt;/svg>
&lt;/a>
&lt;/div>
&lt;canvas class="pdf-canvas" id="pdf-canvas-31f6cf98">&lt;/canvas>
&lt;/div>
&lt;div class="pdf-paginator" id="pdf-paginator-31f6cf98">
&lt;button id="pdf-prev-31f6cf98">Previous&lt;/button>
&lt;button id="pdf-next-31f6cf98">Next&lt;/button> &amp;nbsp; &amp;nbsp;
&lt;span>
&lt;span class="pdf-pagenum" id="pdf-pagenum-31f6cf98">&lt;/span> / &lt;span class="pdf-pagecount" id="pdf-pagecount-31f6cf98">&lt;/span>
&lt;/span>
&lt;a class="pdf-source" id="pdf-source-31f6cf98" href="https://volker-wegert.de/posts/2009-04-02-the-old-rambler/TheOldRambler.pdf">[pdf]&lt;/a>
&lt;/div>
&lt;noscript>
View the PDF file &lt;a class="pdf-source" id="pdf-source-noscript-31f6cf98" href="https://volker-wegert.de/posts/2009-04-02-the-old-rambler/TheOldRambler.pdf">here&lt;/a>.
&lt;/noscript>
&lt;script type="text/javascript">
(function(){
var url = '\/posts\/2009-04-02-the-old-rambler\/TheOldRambler.pdf';
var hidePaginator = "true" === "true";
var hideLoader = "" === "true";
var selectedPageNum = parseInt("") || 1;
var pdfjsLib = window['pdfjs-dist/build/pdf'];
if (pdfjsLib.GlobalWorkerOptions.workerSrc == '')
pdfjsLib.GlobalWorkerOptions.workerSrc = "https:\/\/volker-wegert.de\/" + 'js/pdf-js/build/pdf.worker.js';
var pdfDoc = null,
pageNum = selectedPageNum,
pageRendering = false,
pageNumPending = null,
scale = 3,
canvas = document.getElementById('pdf-canvas-31f6cf98'),
ctx = canvas.getContext('2d'),
paginator = document.getElementById("pdf-paginator-31f6cf98"),
loadingWrapper = document.getElementById('pdf-loadingWrapper-31f6cf98');
showPaginator();
showLoader();
function renderPage(num) {
pageRendering = true;
pdfDoc.getPage(num).then(function(page) {
var viewport = page.getViewport({scale: scale});
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function() {
pageRendering = false;
showContent();
if (pageNumPending !== null) {
renderPage(pageNumPending);
pageNumPending = null;
}
});
});
document.getElementById('pdf-pagenum-31f6cf98').textContent = num;
}
function showContent() {
loadingWrapper.style.display = 'none';
canvas.style.display = 'block';
}
function showLoader() {
if(hideLoader) return
loadingWrapper.style.display = 'flex';
canvas.style.display = 'none';
}
function showPaginator() {
if(hidePaginator) return
paginator.style.display = 'block';
}
function queueRenderPage(num) {
if (pageRendering) {
pageNumPending = num;
} else {
renderPage(num);
}
}
function onPrevPage() {
if (pageNum &lt;= 1) {
return;
}
pageNum--;
queueRenderPage(pageNum);
}
document.getElementById('pdf-prev-31f6cf98').addEventListener('click', onPrevPage);
function onNextPage() {
if (pageNum >= pdfDoc.numPages) {
return;
}
pageNum++;
queueRenderPage(pageNum);
}
document.getElementById('pdf-next-31f6cf98').addEventListener('click', onNextPage);
pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) {
pdfDoc = pdfDoc_;
var numPages = pdfDoc.numPages;
document.getElementById('pdf-pagecount-31f6cf98').textContent = numPages;
if(pageNum > numPages) {
pageNum = numPages
}
renderPage(pageNum);
});
})();
&lt;/script></description></item><item><title>RCP-Einsteiger-Workshop</title><link>https://volker-wegert.de/de/posts/2008-09-14-rcp-introductory-workshop/</link><pubDate>Sun, 14 Sep 2008 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2008-09-14-rcp-introductory-workshop/</guid><description>&lt;p>Die Eclipse Rich Client Platform (RCP) ist eine stabile und bewährte Grundlage zur Entwicklung client-seitiger
Anwendungen. Der Mächtigkeit dieser Plattform steht allerdings eine Komplexität gegenüber, die viele Einsteiger
abschreckt. Dieser Workshop führt praxisorientiert durch die ersten Schritte der Erstellung einer RCP-Anwendung und
vermittelt die wichtigsten Grundbegriffe zur weiteren Einarbeitung.&lt;/p>
&lt;p>Auf dieser Seite finden Sie jeweils die aktuelle Version des Begleittextes. Der Text ist auch zum Selbststudium
geeignet; weitere Hinweise finden Sie in der Einleitung.&lt;/p></description></item><item><title>MDA / MDSE im SAP R/3-Umfeld</title><link>https://volker-wegert.de/de/posts/2008-05-30-mda-sap-development/</link><pubDate>Fri, 30 May 2008 00:00:00 +0000</pubDate><guid>https://volker-wegert.de/de/posts/2008-05-30-mda-sap-development/</guid><description>&lt;p>&lt;em>Hier standen ursprünglich die Folien meines Vortrags bei der &lt;a href="http://www.sig-mdse.de">Special Interest Group Model-Driven Software Engineering
(SIG-MDSE)&lt;/a> vom 30.05.2008. Da ich diesen Vortrag im Siemens-CD erstellt habe, aber kein
Siemens-Mitarbeiter mehr bin, mag ich die Folien nicht mehr einfach so in der Welt herumstehen lassen. Bei Interesse
bitte melden&amp;hellip;&lt;/em>&lt;/p>
&lt;p>Sucht man nach Werkzeugen zur Unterstützung modellgetriebener Vorgehensweisen in der Software-Entwicklung, so besteht
das Hauptproblem in der Regel darin, unter der Vielzahl der vorhandenen Werkzeuge dasjenige auszuwählen, was für die
anstehende Aufgabe am sinnvollsten einsetzbar ist. Sobald die gestellte Aufgabe jedoch die Zielplattform SAP R/3
beinhaltet, wird die Luft schlagartig dünn. Obwohl es sich bei SAP R/3 um ein weit verbreitetes System handelt und bei
den marktüblichen Preisen für SAP R/3-Entwicklungsdienstleistungen eigentlich jede Effizienzsteigerung willkommen sein
sollte, sind Werkzeuge zur Unterstützung modellgetriebener Vorgehensweisen für diese Zielplattform anscheinend nicht
vorhanden. Liegt das wirklich nur daran, dass SAP R/3 von vielen Entwicklern als &amp;ldquo;Teufelszeug&amp;rdquo; angesehen wird, oder gibt
es auch noch andere Gründe? Ist es möglich, die vorhandenen und bewährten Technologien der Java-Welt zu nutzen, und
lässt sich damit tatsächlich der gewünschte Erfolg erzielen?&lt;/p></description></item></channel></rss>