<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>faebulicious strikes back</title>
	<atom:link href="http://www.faebu.ch/feed" rel="self" type="application/rss+xml" />
	<link>http://www.faebu.ch</link>
	<description></description>
	<lastBuildDate>Thu, 28 Jan 2010 13:45:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;Boolsche&#8221; Variabeln invertieren</title>
		<link>http://www.faebu.ch/boolsche-variabeln-invertieren</link>
		<comments>http://www.faebu.ch/boolsche-variabeln-invertieren#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:45:35 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=65</guid>
		<description><![CDATA[In ABAP gibt es nach wie vor keinen echten boolschen Datentyp. Stattdessen wird ein Charactertyp mit einer L&#228;nge von 1 verwendet. Bindet man die Typen-Gruppe ABAP ein, erh&#228;lt man nebst einem Typ abap_bool auch zwei Konstanten abap_true und abap_false f&#252;r &#8220;boolsche&#8221; Vergleiche. Da es sich hierbei jedoch eben nicht um einen boolschen Typ handelt, kann [...]]]></description>
			<content:encoded><![CDATA[<p>In ABAP gibt es nach wie vor keinen echten boolschen Datentyp. Stattdessen wird ein Charactertyp mit einer L&#228;nge von 1 verwendet. Bindet man die Typen-Gruppe <em>ABAP</em> ein, erh&#228;lt man nebst einem Typ <em>abap_bool</em> auch zwei Konstanten <em>abap_true</em> und <em>abap_false</em> f&#252;r &#8220;boolsche&#8221; Vergleiche. Da es sich hierbei jedoch eben nicht um einen boolschen Typ handelt, kann der Werte auch nicht mittels <em>NOT </em>oder &#228;hnlichem invertiert werden. Da mal oftmals auf einen invertierten Wert angewiesen ist, habe ich bis anhin einfach die folgende einfach Abfrage gemacht.</p>

<div class="wp_syntax"><div class="code"><pre class="abap" style="font-family:monospace;"><span style="color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;">data</span><span style="color: #808080;">:</span> lf_bool <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span> abap_bool
    .
&nbsp;
<span style="color: #339933;">*...</span>
&nbsp;
<span style="color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;">if</span> lf_bool <span style="color: #800080;">=</span> abap_true.
  lf_bool <span style="color: #800080;">=</span> abap_false.
<span style="color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;">else</span>.
  lf_bool <span style="color: #800080;">=</span> abap_true.
<span style="color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;">endif</span>.</pre></div></div>

<p>Mittlerweile habe ich aber eine etwas einfachere M&#246;glichkeit gefunden, die sich zu nutzen macht, dass es sich um ein Charactertyp handelt und somit mit dem Befehl Translate eine einfache Zeichenersetzung m&#246;glich ist. Daraus ergibt sich der nachfolgende 1-Zeiler, welcher &#8220;true&#8221; in &#8220;false&#8221; und umgekehrt invertiert.</p>

<div class="wp_syntax"><div class="code"><pre class="abap" style="font-family:monospace;"><span style="color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;">data</span><span style="color: #808080;">:</span> lf_bool <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span> abap_bool
    .
&nbsp;
<span style="color: #339933;">*...</span>
&nbsp;
<span style="color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;">translate</span> lf_bool <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">using</span> <span style="color: #4da619;">' XX '</span>.</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/boolsche-variabeln-invertieren/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nachrichtenlangtexte in SAP</title>
		<link>http://www.faebu.ch/nachrichtenlangtexte-in-sap</link>
		<comments>http://www.faebu.ch/nachrichtenlangtexte-in-sap#comments</comments>
		<pubDate>Wed, 27 Jan 2010 11:17:06 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[ABAP Entwicklung]]></category>
		<category><![CDATA[SAP]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=63</guid>
		<description><![CDATA[Mit der Anweisung nach dem Muster MESSAGE E100(Z&#8230;) WITH &#8230; kann im SAP eine Nachricht ausgegeben werden. Der Nachricht k&#246;nnen 4 Parameter mitgegeben werden, die direkt in der Nachricht die entsprechenden Platzhalter &#38; ersetzen.
Wenn eine Nachricht jedoch nicht selbsterkl&#228;rend ist, kann zus&#228;tzlich ein Langtext erfasst werden. Um auch den Langtext so aussagekr&#228;ftig wie m&#246;glich zu [...]]]></description>
			<content:encoded><![CDATA[<p>Mit der Anweisung nach dem Muster MESSAGE E100(Z&#8230;) WITH &#8230; kann im SAP eine Nachricht ausgegeben werden. Der Nachricht k&#246;nnen 4 Parameter mitgegeben werden, die direkt in der Nachricht die entsprechenden Platzhalter &amp; ersetzen.<br />
Wenn eine Nachricht jedoch nicht selbsterkl&#228;rend ist, kann zus&#228;tzlich ein Langtext erfasst werden. Um auch den Langtext so aussagekr&#228;ftig wie m&#246;glich zu gestalten und dem Benutzer allf&#228;llige Navigationsm&#246;glichkeiten zu bieten, k&#246;nnen die &#252;bergebenen Variabeln und Links eingef&#252;gt werden.</p>
<p><a href="http://wiki.faebusoft.ch/doku.php?id=sap:development:allgemein:nachrichtenlangtexte">Weiterlesen im faebusoft Wiki &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/nachrichtenlangtexte-in-sap/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Integration von WP Calendar</title>
		<link>http://www.faebu.ch/integration-von-wp-calendar</link>
		<comments>http://www.faebu.ch/integration-von-wp-calendar#comments</comments>
		<pubDate>Sat, 07 Nov 2009 15:58:51 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=60</guid>
		<description><![CDATA[WP Calendar ist ein sehr flexibles Wordpress Kalender Plug-In. W&#228;hrend die Administrationsoberfl&#228;che dem Wordpress &#8220;Standard&#8221; entspricht und sich ein Benutzer ohne weitere Hilfe darin zu Recht findet, erfordert die Integration in den eigenen Blog schon etwas mehr Know-How &#8211; nicht zuletzt wegen den vielen verschiedenen Integrationsm&#246;glichkeiten.
Die Integration von WP Calender in einen Blog kann auf [...]]]></description>
			<content:encoded><![CDATA[<p>WP Calendar ist ein sehr flexibles Wordpress Kalender Plug-In. W&#228;hrend die Administrationsoberfl&#228;che dem Wordpress &#8220;Standard&#8221; entspricht und sich ein Benutzer ohne weitere Hilfe darin zu Recht findet, erfordert die Integration in den eigenen Blog schon etwas mehr Know-How &#8211; nicht zuletzt wegen den vielen verschiedenen Integrationsm&#246;glichkeiten.</p>
<p><span id="more-60"></span>Die Integration von WP Calender in einen Blog kann auf verschiedene Weise erfolgen. Die Integration in ein Theme (z.B. in die Sidebar) erfolgt normalerweise &#252;ber die mitgelieferten Funktionen. Wer seine Kalendardaten jedoch einfach in Seiten oder Artikel einbinden m&#246;chte, der ben&#246;tigt keine Programmierkenntnisse, sondern verwendet sog. <em>Tags</em>. Tags werden direkt innerhalb von Artikel und Seiten notiert und stehen im Falle von WP Calendar immer in geschweiften Klammern &#8220;{&#8221; bzw. &#8220;}&#8221;.</p>
<p>Die nachfolgende Beschreibung mit einigen Beispielen erkl&#228;rt nicht jedes zu verwendende Feld im Details, da s&#228;mtliche Funktionen und Tags in der Dokumentation des Plug-Ins bereits ausf&#252;hrlich beschrieben sind. Vielmehr wird anhand ganz einfacher Beispiele aufgezeigt, wie die Grundbed&#252;rfnisse abzudecken und die einzelnen Tags zu verwenden sind.</p>
<p><strong>Nachfolgend werden an diverser Stellen Tags definiert, welche zwischen der &#246;ffnenden geschweiften Klammer und dem nachfolgenden Inhalt ein Leerzeichen enthalten (z.B. { event_subject}). Dieses Leerzeichen wird nur hier verwendet, da ansonsten der Tag ausgewertet w&#252;rde. In den eigenen Seiten und Artikel ist dieser Leerzeichen zu <span style="text-decoration: underline;">entfernen</span>.</strong></p>
<h4>Eine Auflistung von Kalendereintr&#228;gen erstellen</h4>
<p>F&#252;r das generieren einer Auflistung stehen zwei Tags zu Verf&#252;gung: Der Tag { events_print } generiert eine einfache Auflistung, der Tag { events_printlist } erzeugt eine hierarchische unsortierte Liste (HTML-Tag &lt;UL&gt;&lt;/UL&gt;). Der wesentliche Unterschied dieser Tags liegt darin, dass bei einer hierarchischen Liste eine datumsbezogene Gruppierung stattfinden kann. Untenstehend sieht man die beiden Tags in Aktion:</p>
<blockquote><p>Auflistung mit { events_print } ohne irgendwelche weitere Parameter:<p><strong><a href="" title="Freundliche Kundgebung">Freundliche Kundgebung</a></strong><br />1. April 2010 16:00 -  17:00 @ Paradeplatz, Zürich</p><p><strong><a href="" title="Rüdigers Geburtagsparty">Rüdigers Geburtagsparty</a></strong><br />23. Oktober 2010 16:00 - 24. Oktober 2010--- 01:00 @ Im Paradies</p></p></blockquote>
<blockquote><p>Auflistung mit { events_printlist} ohne irgendwelche weitere Parameter:<ul class="groups"><li class="event_header">Apr 2010<ul class="events"><li class="event" id="event-1"><stront><a href="">Freundliche Kundgebung</a></strong><br />1. April 2010 16:00 -  17:00 @ Paradeplatz, Zürich</li></ul></li><li class="event_header">Okt 2010<ul class="events"><li class="event" id="event-2"><stront><a href="">Rüdigers Geburtagsparty</a></strong><br />23. Oktober 2010 16:00 - 24. Oktober 2010--- 01:00 @ Im Paradies</li></ul></li></ul></p></blockquote>
<p>Beide Varianten stellen in ihrer Grundvariante nur Termine aus der Zukunft darf. Aus den Einstellungen von WP Calendar wird zudem die maximale Anzahl Events sowie eine Ausgabevorlage ermittelt, wobei f&#252;r die flache wie auch f&#252;r die hierarchische Ausgabe eine separate Vorlage definiert werden kann. F&#252;r die hierarchische Ausgabe wird zudem in den Einstellungen festgelegt, ob und wie gruppiert werden soll, und welches Datumsformat f&#252;r die entsprechende &#220;berschrift verwendet werden soll. Die nachfolgenden Einstellungen entsprechen den Standardeinstellungen, wie sie nach der Installation vorbelegt sind und erzeugen das oben gezeigt Resultat.</p>
<p><img class="aligncenter size-full wp-image-61" title="WP Calendar Einstellungen: Ausgabe" src="http://www.faebu.ch/wp-content/uploads/2009/11/optionen_ausgabe.jpg" alt="WP Calendar Einstellungen: Ausgabe" width="715" height="470" /></p>
<p>Beide dieser Tags k&#246;nnen aber auch mit Parametern erweitert werden, um die Ausgabe zu ver&#228;ndern. Grunds&#228;tzlich k&#246;nnen mit den Parameter s&#228;mtliche Einstellungen &#252;bersteuert werden. Zudem kann die Selektion mit Hilfe von Filtern &#252;ber Start-/Endezeitpunkt, Kategorie, Autor und Status die Ausgabe  gefiltert werden. Alle Parameter sind in der Verwendungsdokumentation in den WP Calender Einstellungen detailliert beschrieben. Zudem sind dort auch die Standard-Werte ersichtlich.</p>
<p>Eine Auflistung, welche maximal 50 Anl&#228;sse f&#252;r das Jahr 2009 der Kategorien 30 und 31 vom Autor 3 ausgibt, jedoch die Events 544 und 923 explizit ausschliesst und auch solche Events ber&#252;cksichtigt, die zwar im Jahr 2008 bereits beginnen, aber im Jahr 2009 oder sp&#228;ter zu ende gehen, und zudem noch nach Subjekt (anstelle vom Datum) sortiert ist, w&#252;rde dann wie folgt aussehen:</p>
<blockquote><p>{ events_print; number=50; datefrom=1230789600; dateend=1262325599; datemode=1; categories=30,31; author=3; exclude=923,544; orderby=subject }</p></blockquote>
<p>Mit dem obenstehenden Beispiel wird eine Vielzahl der Parameter verwendet, in der Dokumentation sind noch weitere Parameter beschreiben, auf die an dieser Stelle nicht weiter eingegangen wird.</p>
<p>Denjenigen, die beim Parameter datefrom und dateend nicht wirklich etwas erkennen k&#246;nnen, sei gesagt, dass hier nicht ein Datum und eine Uhrzeit in einfach leserlicher Form, sondern ein<em> Unix-Timestamp</em> verwendet werden muss. Einen einfachen Konverter findet man <a href="http://www.unixtimestamp.com" target="_blank">hier</a>.</p>
<h4>Details zu einem einzelnen Anlass ausgeben</h4>
<p>Mit Tags, welche mit { event_ beginnen (im Gegensatz zu den Auflistungen, die mit { event<strong><span style="text-decoration: underline;">s</span></strong>_ beginnen), k&#246;nnen s&#228;mtliche Daten von einem Event ausgegeben werden. Da es sich um einen spezifischen Event handelt, der nur &#252;ber eine Id eindeutig identifiziert wird, muss die Id bekannt gemacht werden. Dies ist entweder &#252;ber die URL m&#246;glich oder &#252;ber den speziellen Tag { event_id; id=312 }.</p>
<p>Die beiden Varianten werden jedoch f&#252;r unterschiedliche Szenarien verwendet. Habe ich einen Artikel, in welchem ich explizit Daten von einem Event einbinden m&#246;chte, macht es nicht sonderlich Sinn die Id &#252;ber die URL mitzugeben, zumal Wordpress grunds&#228;tzlich in seinen Permalink keine Event Id vorsieht.</p>
<h5>Statische &#8220;Inline&#8221; Deklaration</h5>
<p>Vielmehr macht es an dieser Stelle Sinn, die Daten explizit durch die Angabe der Id im Tag { event_id } zu laden. Auf diese Weise k&#246;nnen auch mehrere Events in einer sequentiellen Reihenfolge ausgegeben werden, allerdings macht es in diesem Fall unter Umst&#228;nden mehr Sinn, eine Auflistung zu verwenden und mit Filtern zu arbeiten.</p>
<blockquote><p>{ event_id; id=1}<br />
&lt;p&gt;{ event_subject} @ { event_location}&lt;br /&gt;{ event_startdate} { event_starttime}  &#8211; { event_enddate} { event_endtime}&lt;/p&gt;</p>
<p>{ event_id; id=2}<br />
&lt;p&gt;{ event_subject} @ { event_location} geschrieben von { event_author}, ver&#246;ffentlicht am { event_publishdate}&lt;/p&gt;</p></blockquote>
<p>ergibt die folgende Ausgabe:</p>
<blockquote><p>{event_subject} @ Paradeplatz, Zürich<br />
1. April 2010 16:00  &#8211;  17:00</p>
<p>{event_subject} @ Im Paradies geschrieben von faebu, ver&#246;ffentlicht am 07.11.2009</p></blockquote>
<p>Es f&#228;llt beim genauen Hinschauen auf, dass beim ersten Event keine Ausgabe f&#252;r den Tag { event_enddate } stattfindet. Auch das liegt an den Einstellungen (Siehe Bild oben), welche grunds&#228;tzlich so eingestellt sind, dass das Enddatum (und auch die Endzeit) nur dann ausgegeben werden, wenn sie vom Startzeitpunkt abweichen. Durch das Hinzuf&#252;gen des Parameters <em>alwaysshowenddate </em>mit dem Wert <em>1</em>, kann die Ausgabe aber dennoch erzwungen werden:</p>
<blockquote><p>{ event_id; id=1}<br />
&lt;p&gt;{ event_subject} @ { event_location}&lt;br /&gt;{ event_startdate} { event_starttime}  &#8211; { event_enddate; alwaysshowenddate=1} { event_endtime}&lt;/p&gt;</p></blockquote>
<p>ergibt jetzt</p>
<blockquote><p>{event_subject} @ Paradeplatz, Zürich<br />
1. April 2010 16:00  &#8211; 1. April 2010--- 17:00</p></blockquote>
<h4>Dynamische Ausgabe und die &#8220;Seite f&#252;r Einzelanzeige&#8221;</h4>
<p>Um eine Seite dynamische mit Event Details zu bef&#252;llt, sollte die Event Id als URL Parameter <em>event</em> &#252;bergeben werden (z.B. www.meinblog.ch/2009/12/31/mein-artikel?event=681). Mit diesem Prinzip l&#228;sst sich eine Seite (nennen wir Sie doch auch gleich <em>Events </em>und vergeben wir den Permalink<em> http://ww.meinblog.ch/events</em>) anlegen, die nur dazu verwendet wird um die Details von einzelnen Events darzustellen. Diese Seite k&#246;nnten wir doch nun bei der Aufliste hervorragend integrieren, wenn wird die Vorlage f&#252;r die Listausgabe wie folgt anpassen w&#252;rden:</p>
<blockquote><p>&lt;p&gt;&lt;strong&gt;&lt;a href=&#8221;<em>http://www.meinblog.ch/events?event={ event_id}</em>&#8221; title=&#8221;{ event_subject}&#8221;&gt;{ event_subject}&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;{ event_startdate} { event_starttime} &#8211; { event_enddate} { event_endtime} @ { event_location}&lt;/p&gt;</p></blockquote>
<p>Verwenden wir also diese Vorlage in einer Auflistung, erhalten wir eine Auflistung von Events, mit einer URL auf unsere erstellte Seite, die dann die Details anzeigen kann, in dem man dort vielleicht etwas in dieser Art einbauen w&#252;rde:</p>
<blockquote><p>{ event_subject}<br />
Wo: { event_location}<br />
Wann: { event_startdate} { event_starttime} &#8211; { event_enddate} { event_endtime}</p>
<p>{ event_description}</p>
<p>Ver&#246;ffentlicht am { event_publishdate} von { event_publisher}</p></blockquote>
<p>Damit unsere Seite <em>Events </em>jedoch nicht einfach <em>Events </em>im Titel von Wordpress darstellt oder ich gar im meinem Theme den Seitentitel ausgebe und somit bei jedem Event zus&#228;tzlich noch ein Titel <em>Event </em>erscheint, kann man auch im Titel der Seite solche Tags verwenden. Anstatt die Seite <em>Events </em>zu benennen, k&#246;nnte man die Seite einfach in<em> { event_subject} @ { event_location} </em>benennen.</p>
<h5>F&#252;r was ist die &#8220;Seite f&#252;r Einzelanzeige&#8221;</h5>
<p>In den Einstellungen kann eine <em>Seite f&#252;r Einzelanzeige</em> ausgew&#228;hlt werden. Dies ist jedoch optional, damit dem oben beschriebenen Ansatz ohne Probleme auch auf die Seite f&#252;r die Detailanzeige gesprungen werden kann. Dieser Ansatz einer statischen Verwendung einer URL hat jedoch den grossen Nachteil, dass ich unter Umst&#228;nden beim Anpassen des Permalink (z.B. durch eine Reorganisation, oder durch das &#196;ndern einer URL) &#252;berall die URL anpassen muss. Zudem hat diese Seite Events eigentlich gar keinen Inhalt, erscheint aber dennoch bei jeder Seiten-Auflistung, welche mit Wordpress Bordmitteln erzeugt wird.</p>
<p>An dieser Stelle kommt nun die <em>Seite f&#252;r Einzelanzeige</em> ins Spiel. Wenn n&#228;mlich nun die erzeugte Seite <em>Events </em>bzw. <em>{ event_subject} @ { event_location} </em>als die <em>Seite f&#252;r Einzelanzeige </em>ausgew&#228;hlt wird, kann in den Einstellungen nun definiert werden, dass die Seite in keiner Auflistung mehr erscheinen soll und Sie kann zudem in der Administrationsoberfl&#228;che der Seite entsprechend markiert und hervorgehoben werden. Der grosse Vorteil ergibt sich aber in der Vorlage. W&#228;hrend wird vorhin noch</p>
<blockquote><p>&lt;p&gt;&lt;strong&gt;&lt;a href=&#8221;<em>http://www.meinblog.ch/events?event={ event_id}</em>&#8221; title=&#8221;{ event_subject}&#8221;&gt;{ event_subject}&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;{ event_startdate} { event_starttime} &#8211; { event_enddate} { event_endtime} @ { event_location}&lt;/p&gt;</p></blockquote>
<p>notierten, k&#246;nnen wir nun die ganze URL ersetzten und folgendes notieren:</p>
<blockquote><p>&lt;p&gt;&lt;strong&gt;&lt;a href=&#8221;<em></em>&#8221; title=&#8221;{ event_subject}&#8221;&gt;{ event_subject}&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;{ event_startdate} { event_starttime} &#8211; { event_enddate} { event_endtime} @ { event_location}&lt;/p&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/integration-von-wp-calendar/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Neues Wordpress Plug-In &#8220;Post and Page Counter for Admin Menu&#8221; freigegeben</title>
		<link>http://www.faebu.ch/neues-wordpress-plug-in-post-and-page-counter-for-admin-menu-freigegeben</link>
		<comments>http://www.faebu.ch/neues-wordpress-plug-in-post-and-page-counter-for-admin-menu-freigegeben#comments</comments>
		<pubDate>Fri, 25 Sep 2009 08:52:52 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=56</guid>
		<description><![CDATA[Heute wurde die Version 1.0.0 des Wordpress Plug-Ins Post and Page Counter for Admin Menu offiziell publiziert. Mit dem schlanken Plug-In k&#246;nnen direkt im Admin Men&#252; die Anzahl von Artikeln und/oder Seiten in einem bestimmten Status dargestellt werden. In erster Linie habe ich das Plug-In entwickelt um auf einen Blick zu sehen, wieviele Entw&#252;rfe noch [...]]]></description>
			<content:encoded><![CDATA[<p>Heute wurde die Version 1.0.0 des Wordpress Plug-Ins <em>Post and Page Counter for Admin Menu</em> offiziell publiziert. Mit dem schlanken Plug-In k&#246;nnen direkt im Admin Men&#252; die Anzahl von Artikeln und/oder Seiten in einem bestimmten Status dargestellt werden. In erster Linie habe ich das Plug-In entwickelt um auf einen Blick zu sehen, wieviele Entw&#252;rfe noch vorhanden sind, mit dem Plug-In kann jedoch jeder Status dargestellt werden.</p>
<p>Weiter Informationen gibt es auf der <a href="http://www.faebu.ch/downloads/post-and-page-counter-for-admin-menu">offiziellen Plug-In Seite</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/neues-wordpress-plug-in-post-and-page-counter-for-admin-menu-freigegeben/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Langtexte lesen und formatieren</title>
		<link>http://www.faebu.ch/langtexte-lesen-und-formatieren</link>
		<comments>http://www.faebu.ch/langtexte-lesen-und-formatieren#comments</comments>
		<pubDate>Fri, 11 Sep 2009 14:07:21 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=52</guid>
		<description><![CDATA[Immer wieder werden im SAP Langtexte ben&#246;tigt, die einfach &#252;ber den Funktionsbaustein READ_TEXT gelesen werden. Dieser Baustein gibt aber gar keinen Plaintext zur&#252;ck, sondern sog. ITF Text, welcher von SAPScript verwendet wird. In der ersten Spalte steht somit die entsprechenden Absatzformatierung, welche steuert, wo eine neue Zeile bzw. ein neuer Absatz beginnt. Zudem h&#228;ngt an [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder werden im SAP Langtexte ben&#246;tigt, die einfach &#252;ber den Funktionsbaustein <code>READ_TEXT</code> gelesen werden. Dieser Baustein gibt aber gar keinen Plaintext zur&#252;ck, sondern sog. ITF Text, welcher von SAPScript verwendet wird. In der ersten Spalte steht somit die entsprechenden Absatzformatierung, welche steuert, wo eine neue Zeile bzw. ein neuer Absatz beginnt. Zudem h&#228;ngt an der Text-Id die Zeilenbreite (Einsehbar &#252;ber Transaktion SE75), welche hier streng ber&#252;cksichtigt wird. Somit erhalten wir im Idealfall bereits einen Text mit 132 Zeichen Zeilenbreite, im Normalfall wird dies jedoch nur ein Text mit einer Breite von 72 Zeichen sein und unter Umst&#228;nden betr&#228;gt die Breite aber auch nur 40 Zeichen.<span id="more-52"></span></p>
<p>Um nun die Zeilenbreite variabel zu gestalten und die Abs&#228;tze korrekt zu interpretieren habe ich oftmals selber eine L&#246;sung gestrickt, was jedoch sehr umst&#228;ndlich ist. Die Suche nach einem geeigneten Baustein hat sich jedoch als sehr schwierig herausgestellt, da es keine Baustein gibt, der diese ITF Daten in der Breite flexibel macht. Mehr durch einen Zufall bin ich darauf gestossen, dass der Weg zum Ziel &#252;ber eine Konvertierung l&#228;uft, n&#228;mlich der von ITF nach ASCII (darauf muss man auch erst einmal kommen).</p>
<p>Um nun aus diesem ITF Text einen reinen ASCII Text zu erstellen, der die Zeilenumbr&#252;che aus dem Absatzformat ber&#252;cksichtigt existiert der Baustein CONVERT_ITF_TO_ASCII, der zugleich die Angabe einer neuen Zeilenbreite beinhaltet &#8211; allerdings ebenfalls auf 132 Zeichen beschr&#228;nkt, was jedoch normalerweise ausreicht. Damit ist das gesamte Problem einfach und unumst&#228;ndlich gel&#246;st:</p>

<div class="wp_syntax"><div class="code"><pre class="abap" style="font-family:monospace;"><span style="color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;">data</span><span style="color: #808080;">:</span> lt_text_itf   <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span> tlinetab
    , lt_text_ascii <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">type</span> tdtab_c132
    .
&nbsp;
<span style="color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;">call function</span> <span style="color: #4da619;">'READ_TEXT'</span>
  <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">exporting</span>
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">id</span>       <span style="color: #800080;">=</span> <span style="color: #4da619;">'MPO'</span>
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">language</span> <span style="color: #800080;">=</span> sy<span style="color: #808080;">-</span>langu
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">name</span>     <span style="color: #800080;">=</span> <span style="color: #4da619;">'600M........'</span>
    object   <span style="color: #800080;">=</span> <span style="color: #4da619;">'BOM'</span>
  <span style="color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;">tables</span>
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">lines</span>    <span style="color: #800080;">=</span> lt_text
  <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">exceptions</span>
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">others</span>   <span style="color: #800080;">=</span> 1.
&nbsp;
<span style="color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;">check</span> sy<span style="color: #808080;">-</span>subrc <span style="color: #800080;">=</span> 0.
&nbsp;
<span style="color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;">call function</span> <span style="color: #4da619;">'CONVERT_ITF_TO_ASCII'</span>
  <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">exporting</span>
    formatwidth             <span style="color: #800080;">=</span> <span style="color: #3399ff;">110</span>
  <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">importing</span>
    c_datatab               <span style="color: #800080;">=</span> lt_text_ascii
  <span style="color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;">tables</span>
    itf_lines               <span style="color: #800080;">=</span> lt_text_itf
  <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">exceptions</span>
    <span style="color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;">others</span>                  <span style="color: #800080;">=</span> 1.</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/langtexte-lesen-und-formatieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weitere Spielerein mit AHK und SAP</title>
		<link>http://www.faebu.ch/weitere-spielerein-mit-ahk-und-sap</link>
		<comments>http://www.faebu.ch/weitere-spielerein-mit-ahk-und-sap#comments</comments>
		<pubDate>Thu, 18 Jun 2009 07:32:55 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=47</guid>
		<description><![CDATA[Im Februar habe ich dar&#252;ber berichtet, wie mit der Maus im SAP mit der daf&#252;r vorgesehenen Maustaste zur&#252;ck navigieren kann und so dasselbe Verhalten wie in Windows oder einem g&#228;ngigen Web Browser erreichen kann. Mittlerweile habe ich min Skript minimal erweitert. Einerseite kann ich nun in der Workbench auch Vorw&#228;rts navigieren mit der Maus, andererseits [...]]]></description>
			<content:encoded><![CDATA[<p>Im Februar habe ich dar&#252;ber <a href="http://www.faebu.ch/mit-maus-zurueck-navigieren-in-sap">berichtet</a>, wie mit der Maus im SAP mit der daf&#252;r vorgesehenen Maustaste zur&#252;ck navigieren kann und so dasselbe Verhalten wie in Windows oder einem g&#228;ngigen Web Browser erreichen kann. Mittlerweile habe ich min Skript minimal erweitert. Einerseite kann ich nun in der Workbench auch Vorw&#228;rts navigieren mit der Maus, andererseits kann ich mit der Tastenkombination Ctrl+N einen neuen Modus &#246;ffnen. Wie man mit der Tastenkombination Ctrl+Shift+1 einen neuen Modus &#246;ffnen kann, habe ich bereits einmal beschrieben, scheinbar funktioniert dies jedoch nicht bei allen SAP Gui Installationen. Bei mir hat es jedoch immer und auf jedem Client funktioniert&#8230; Hier meine neuste Version des Scriptes</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">#IfWinActive ahk_class SAP_FRONTEND_SESSION
XButton1::F3
XButton2::+F7
^n::^+1
#IfWinActive</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/weitere-spielerein-mit-ahk-und-sap/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Floorball Webservice Class v1.3 released</title>
		<link>http://www.faebu.ch/floorball-webservice-class-v13-released</link>
		<comments>http://www.faebu.ch/floorball-webservice-class-v13-released#comments</comments>
		<pubDate>Wed, 13 May 2009 12:01:38 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webdevelopment]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=44</guid>
		<description><![CDATA[Die Version 1.3 der Floorball Webservice Class wurde offiziell freigegeben. Eine neue Methode erlaubt das lesen s&#228;mtlicher Spieldaten zu einer Gruppe. Zudem wurde der ganze Code gez&#252;gelt und steht nun unter der GPL 3 Lizenz. Die offizielle Projekthomepage mit eigenem Wiki und Download Bereich befindet sich nun hier.
]]></description>
			<content:encoded><![CDATA[<p>Die Version 1.3 der Floorball Webservice Class wurde offiziell freigegeben. Eine neue Methode erlaubt das lesen s&#228;mtlicher Spieldaten zu einer Gruppe. Zudem wurde der ganze Code gez&#252;gelt und steht nun unter der GPL 3 Lizenz. Die offizielle Projekthomepage mit eigenem Wiki und Download Bereich befindet sich nun <a href="http://code.google.com/p/floorballch-webservice/">hier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/floorball-webservice-class-v13-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit Maus zur&#252;ck navigieren in SAP</title>
		<link>http://www.faebu.ch/mit-maus-zurueck-navigieren-in-sap</link>
		<comments>http://www.faebu.ch/mit-maus-zurueck-navigieren-in-sap#comments</comments>
		<pubDate>Mon, 16 Feb 2009 13:50:29 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[SAP]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=43</guid>
		<description><![CDATA[Vor rund zwei Monaten habe ich hier beschrieben, wie mittels Tastatur-Shortcuts SAP Transaktionen aufgerufen werden k&#246;nnen. Mit derselben Software AutoHotKey l&#228;sst sich auch ein f&#252;r mich lange bestehendes Bed&#252;rfniss abdecken, n&#228;mlich das Zur&#252;ck-Navigieren mit der Maus, wie man es sich von Windows und Browser gewohnt ist. AutoHotKey bietet die M&#246;glichkeit eines Mapping von Tastatur- wie [...]]]></description>
			<content:encoded><![CDATA[<p>Vor rund zwei Monaten habe ich <a href="http://www.faebu.ch/sap-transaktionen-mit-tastatur-shortcut-aufrufen">hier</a> beschrieben, wie mittels Tastatur-Shortcuts SAP Transaktionen aufgerufen werden k&#246;nnen. Mit derselben Software <a href="http://www.autohotkey.com/" target="_blank">AutoHotKey</a> l&#228;sst sich auch ein f&#252;r mich lange bestehendes Bed&#252;rfniss abdecken, n&#228;mlich das Zur&#252;ck-Navigieren mit der Maus, wie man es sich von Windows und Browser gewohnt ist. <a href="http://www.autohotkey.com/" target="_blank">AutoHotKey</a> bietet die M&#246;glichkeit eines Mapping von Tastatur- wie auch Mausereignissen. Da im SAP der Zur&#252;ck-Button standardm&#228;ssig mit F3 erreichbar ist, kann also die Zur&#252;ck-Taste der Maus (sofern eine vorhanden ist) auf F3 &#8220;umgeleitet&#8221; werden &#8211; nat&#252;rlich nur, wenn das SAP Gui Fenster fokusiert ist.</p>
<p>Um dies zu bewerkstelligen, ist AHK zu &#246;ffnen. &#220;ber das Men&#252; <em>File -&gt; Edit Script</em>, l&#228;sst sich das &#8220;Standard&#8221; Script bearbeiten. Dort sind die nachfolgenden Zeilen Code ganz unten anzuh&#228;ngen. Anschliessend die Datei speichern und schliessen und &#252;ber das Men&#252; <em>File -&gt; Reload Script</em> das Skript neu laden. Fertig.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">; Zurück navigieren mit der Maus innerhalb von SAP
#IfWinActive ahk_class SAP_FRONTEND_SESSION
XButton1::F3
#IfWinActive</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/mit-maus-zurueck-navigieren-in-sap/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Control Fehler (MESSAGE_TYPE_X)</title>
		<link>http://www.faebu.ch/control-fehler-message_type_x</link>
		<comments>http://www.faebu.ch/control-fehler-message_type_x#comments</comments>
		<pubDate>Fri, 13 Feb 2009 08:53:02 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[ABAP Entwicklung]]></category>
		<category><![CDATA[SAP]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=41</guid>
		<description><![CDATA[Kommt es zu einem Laufzeitfehler MESSAGE_TYPE_X mit der Meldung &#8220;ControlFrameWork : Fehler bei der Ansteuerung eines Controls!&#8221; ist auf den ersten Blick nicht ersichtlich, weshalb der Fehler auftritt. Nachdem sichergestellt wurde, dass der Fehler nicht nur auf einem einzelnen Client auftritt &#8211; was auf eine fehlerhafte GUI Installation hindeuten w&#252;rde &#8211; kann &#252;ber einen sog. [...]]]></description>
			<content:encoded><![CDATA[<p>Kommt es zu einem Laufzeitfehler MESSAGE_TYPE_X mit der Meldung &#8220;ControlFrameWork : Fehler bei der Ansteuerung eines Controls!&#8221; ist auf den ersten Blick nicht ersichtlich, weshalb der Fehler auftritt. Nachdem sichergestellt wurde, dass der Fehler nicht nur auf einem einzelnen Client auftritt &#8211; was auf eine fehlerhafte GUI Installation hindeuten w&#252;rde &#8211; kann &#252;ber einen sog. Automation-Trace ermittelt werden, was den Fehler verursacht hat.<span id="more-41"></span></p>
<p>Wie der Automation-Trace aktiviert werden kann, ist im <a href="https://service.sap.com/sap/support/notes/158985" target="_blank">Hinweis 158985 &#8211; Automation: Wie erzeuge ich einen Automation-Trace?</a> beschrieben. Wie im SAP anschliessend vorgegangen werden muss beschreibt <a href="https://service.sap.com/sap/support/notes/316243" target="_blank">Hinweis 316243 &#8211; Exception CNTL_ERROR oder Dump in SAPLOLEA</a>.</p>
<p>Entgegen der Beschreibung reicht es jedoch aus, in den Debug Modus zu springen, die Automatische Queue synchrone Verarbeitung zu aktivieren und anschliessend den Code bis zum Dump einfach durchlaufen zu lassen. Das debuggen bis zur Stelle vor dem Dump ist nicht notwendig.</p>
<p>Das Resultat ist eine sehr un&#252;bersichtliche und informationsreiche Trace Datei. Eine Suche nach &#8220;Error&#8221; oder &#8220;Exception&#8221; liefert jedoch sehr rasch die gew&#252;nschte Stelle, bzw. das Control und die Methode, die zum Dump gef&#252;hrt hat.</p>
<pre>&lt;2475=Automation(Error):    CALL METHOD "ABAPExpandNodes"[DispID=45] OF [#11/0x107F13B0/202/SAP.TableTreeControl.1]
                    #0: STRING "DORN"
                    #1: LONG "1"
IDispatch::Invoke raised exceptionAusnahmefehler aufgetreten</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/control-fehler-message_type_x/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP Transaktionen mit Tastatur-Shortcut aufrufen</title>
		<link>http://www.faebu.ch/sap-transaktionen-mit-tastatur-shortcut-aufrufen</link>
		<comments>http://www.faebu.ch/sap-transaktionen-mit-tastatur-shortcut-aufrufen#comments</comments>
		<pubDate>Wed, 17 Dec 2008 10:54:51 +0000</pubDate>
		<dc:creator>faebu</dc:creator>
				<category><![CDATA[Dies und Das]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips & Tricks]]></category>

		<guid isPermaLink="false">http://www.faebu.ch/?p=40</guid>
		<description><![CDATA[Ben&#246;tigt man im SAP immer wieder dieselben Transaktionen, ist es m&#252;ssig diese jedesmal von Hand eingeben zu m&#252;ssen. Da das Kommandofeld im SAP mit der Tastenkombination Ctrl+Shift+7 fokusiert werden kann, bietet sich hier die Verwendung eines Tastaturmakros an.
Das Tool AutoHotKey wird unter der GPL Lizenz vertrieben und kann somit frei genutzt werden. Es handelt sich [...]]]></description>
			<content:encoded><![CDATA[<p>Ben&#246;tigt man im SAP immer wieder dieselben Transaktionen, ist es m&#252;ssig diese jedesmal von Hand eingeben zu m&#252;ssen. Da das Kommandofeld im SAP mit der Tastenkombination Ctrl+Shift+7 fokusiert werden kann, bietet sich hier die Verwendung eines Tastaturmakros an.<span id="more-40"></span></p>
<p>Das Tool AutoHotKey wird unter der GPL Lizenz vertrieben und kann somit frei genutzt werden. Es handelt sich bei dieser Software um ein sehr m&#228;chtiges Paket, das weit mehr beherrscht, als ein paar Tastenanschl&#228;ge von Geisterhand abspielen zu lassen. Das dies f&#252;r unseren Zweck aber v&#246;llig ausreicht, werde ich hier nicht tiefer auf dieses Tool eingehen.<br />
Die Software unterst&#252;tzt auch das Binden von Scripts and Windows-Hotkeys, da auf meiner Logitech Tastatur noch einige Funktionstasten unbelegt sind, m&#246;chte ich diese f&#252;r mein Vorhaben nutzen. Auch hier spielt uns AutoHotKey in die Karten, erm&#246;glicht es doch die Erstellung von ausf&#252;hrbaren Dateien (exe) aus bestehenden Script Dateien. Diese lassen sich mit Logitech SetPoint problemlos an die gew&#252;nschten Funktionstasten binden.</p>
<h4>AHK Script erstellen</h4>
<p>Damit eine Transaktion in SAP direkt aufgerufen werden kann, muss folgende Tastenkombination gefeuert werden: Ctrl+Shift+7 &#8211; /n &#8211; Transaktionscode &#8211; ENTER. Ein entsprechendes Tastaturmakro sieht also z.B. f&#252;r die Transaktion SE80 wie folgt aus:</p>
<p>Send, {CTRLDOWN}{SHIFTDOWN}7{SHIFTUP}{CTRLUP}{SHIFTDOWN}7{SHIFTUP}nse80{ENTER}</p>
<p>Dieser Befehl kann nun in eine AutoHotKey Script Datei eingef&#252;gt werden. Dabei handelt es sich um eine normale Textdatei mit der Endung .ahk, welche &#252;ber das Kontext-Men&#252; im Explorer in einem beliebigen Verzeichnis angelegt werden kann.</p>
<h4>Executable erstellen</h4>
<p>Ebenfalls mitgeliefert wird ein Tool zum Konvertieren eines AHK Script in eine ausf&#252;hrbare Datei. Die entsprechende Anwendung wird nach der Installation im Startmen&#252; unter dem Namen „Convert .ahk to .exe“ verkn&#252;pft. Die damit erstellten Dateien lassen sich nun Problemlos in Logitechs SetPoint verwenden. Nat&#252;rlich k&#246;nnen die erstellten Dateien auch &#252;ber die Schnellstartleiste verkn&#252;pft werden, wobei hier die Erstellung einer ausf&#252;hrbaren Datei nicht unbedingt notwendig ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.faebu.ch/sap-transaktionen-mit-tastatur-shortcut-aufrufen/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
