Friday, 20. February 2009
Mit PHP auf SAP zugreifen - first Strike (part two)
In diesem Artikel möchte ich euch zeigen, wie man gezielt eine RFC-Funktion bzw. genauer gesagt ein BAPI über PHP aufruft und das Ergebnis verarbeitet.
In meinem letzten Artikel bin ich bereits darauf eingegangen, wie man grundsätzlich ein PHP-Script mit einem SAP-Server verbinden kann. Dabei habe ich als SAP-Server das Test-System von SAP verwendet. Wobei ich mit dem Begriff Test-System vorsichtig sein muss, weil damit in einer typischen SAP Drei-System-Landschaft meist auch das Qualitätssicherungs-System gemeint ist. Also ihr braucht dagegen so eine kostenlose 90-Tage Ausprobier-Version, entweder Mini-SAP oder Mini-WAS, die ihr z. B. im SAP Developer Network downloaden könnt.
Wenn man ein Datenbank-Anwendung kennenlernen will, benötigt man Testdaten. Was die Nordwind-Datenbank bei MS Access ist, ist die Flugdatenbank bei SAP Mini-WAS. Unter diesem Link findet man übrigens eine Übersicht über die Tabellen der Flugdatenbank.
Als Ziel setzen wir uns, die Kundendaten aus Tabelle SCUSTOM auszulesen. Dabei können wir mit PHP natürlich nicht direkt auf die Datenbanktabelle zugreifen. Stattdessen benötigen wir einen ABAP-Funktionsbaustein, den wir über RFC aufrufen und der uns die Ergebnisse zurück liefern soll. So einen FuBa könnten wir natürlich selber in ABAP programmieren. Das Problem ist, eigene Programme liegen im sog. Z-Namensraum und weichen vom SAP-Standard ab. Besser ist es, wenn man Standard-Funktionen von SAP aufrufen kann. Außerdem, warum das Rad neu erfinden? Wir haben Glück. Für die Ausgabe einer Kundenliste existiert die BAPI-Funktion BAPI_FLCUST_GETLIST.
BAPI steht für Business Application Programming Interfaces. BAPIs gehören zum SAP Business Frameworks und stellen eine Kommunikations-Schnittstelle nach außen dar. Während klassische Funktionsbausteine explizit als Remote-Baustein deklariert werden müssen, damit sie von extern aufgerufen werden können, sind BAPIs automatisch Remote-fähig.
Nun zu unserem Script. Damit wir auf den SAP-Server zugreifen können, brauchen wir wieder die Verbindungs- und Logindaten. Für eine leichtere Wiederverwendung habe ich diese Daten in ein externes Script conf/sap_connection.conf.php ausgelagert:
Im Haupt-Script wird diese Datei mit
eingebunden.
Danach führen wir einige Vorbelegungen durch:
Zunächst mal geben wir die gewünschte BAPI-Funktion BAPI_FLCUST_GETLIST an. Diese BAPI gibt ihr Ergebnis u.a. in die Tabelle CUSTOMER_LIST zurück. Danach verbinden wir uns mit dem SAP-Server.
Die Variable $rfcCon erhält das Connection-Handle und muss in den folgenden Funktionen mit angegeben werden. Als nächstes registrieren wir die RFC-Funktion (also unser BAPI), die Rückgabe-Tabelle und den Import-Parameter. Wobei der Import-Parameter als Übergabe-Parameter an die RFC-Funktion zu verstehen ist.
Es gibt zwei Möglichkeiten, die Signatur einer RFC-Funktion festzulegen. Entweder man definiert die Signatur einer RFC-Funktion direkt über saprfc_function_define() oder man ermittelt die Signatur über saprfc_function_discover() automatisch. Die erste Variante ist aufwändiger dafür schneller, die zweite Variante bequemer, dafür aber etwas weniger performant. Wie man sieht, mag ichs bequem
Ist alles korrekt festgelegt, können wir den RFC-Aufruf ausführen:
Hat alles geklappt, können wir die Ergebnismenge zeilenweise auslesen. Dazu ermitteln wir mit saprfc_table_rows() die Anzahl der Reihen in der Ergebnistabelle und verarbeiten dann die Tabelle über eine for-Schleife. Die einzelnen Zeilen lesen wir mit saprfc_table_read() aus und speichern diese in einem Array.
Ab jetzt können wir die Daten mit PHP so verarbeiten wie gewünscht. Z. B. könnten wir die Daten in einer Tabelle ausgeben:
Das Ergebnis sollte dann im Browser in etwa so aussehen (Ok, ich hab hier etwas das SAP-GUI nachgebaut
):

In der Erweiterten Ansicht dieses Artikels ist der komplette Code nochmal dargestellt.
Links:
Allgemeine Einführung in die BAPIs (CA-BFA)
BAPI List
Absicherung der SAP RFC-Schnittstelle (BSI)
In meinem letzten Artikel bin ich bereits darauf eingegangen, wie man grundsätzlich ein PHP-Script mit einem SAP-Server verbinden kann. Dabei habe ich als SAP-Server das Test-System von SAP verwendet. Wobei ich mit dem Begriff Test-System vorsichtig sein muss, weil damit in einer typischen SAP Drei-System-Landschaft meist auch das Qualitätssicherungs-System gemeint ist. Also ihr braucht dagegen so eine kostenlose 90-Tage Ausprobier-Version, entweder Mini-SAP oder Mini-WAS, die ihr z. B. im SAP Developer Network downloaden könnt.
Wenn man ein Datenbank-Anwendung kennenlernen will, benötigt man Testdaten. Was die Nordwind-Datenbank bei MS Access ist, ist die Flugdatenbank bei SAP Mini-WAS. Unter diesem Link findet man übrigens eine Übersicht über die Tabellen der Flugdatenbank.
Als Ziel setzen wir uns, die Kundendaten aus Tabelle SCUSTOM auszulesen. Dabei können wir mit PHP natürlich nicht direkt auf die Datenbanktabelle zugreifen. Stattdessen benötigen wir einen ABAP-Funktionsbaustein, den wir über RFC aufrufen und der uns die Ergebnisse zurück liefern soll. So einen FuBa könnten wir natürlich selber in ABAP programmieren. Das Problem ist, eigene Programme liegen im sog. Z-Namensraum und weichen vom SAP-Standard ab. Besser ist es, wenn man Standard-Funktionen von SAP aufrufen kann. Außerdem, warum das Rad neu erfinden? Wir haben Glück. Für die Ausgabe einer Kundenliste existiert die BAPI-Funktion BAPI_FLCUST_GETLIST.
BAPI steht für Business Application Programming Interfaces. BAPIs gehören zum SAP Business Frameworks und stellen eine Kommunikations-Schnittstelle nach außen dar. Während klassische Funktionsbausteine explizit als Remote-Baustein deklariert werden müssen, damit sie von extern aufgerufen werden können, sind BAPIs automatisch Remote-fähig.
Nun zu unserem Script. Damit wir auf den SAP-Server zugreifen können, brauchen wir wieder die Verbindungs- und Logindaten. Für eine leichtere Wiederverwendung habe ich diese Daten in ein externes Script conf/sap_connection.conf.php ausgelagert:
//
// Verbindungsdaten zum SAP-Server
//
$sapServer = array();
// NSP
$sapServer["NSP"] = array( 'USER' => 'bcuser', // SAP User
'PASSWD' => 'minisap', // SAP User Passwort
'NSP' => 'NSP', // SAP SID
'ASHOST' => '127.0.0.1', // SAP Application Server
'SYSNR' => '00', // System Nummer
'CLIENT' => '000' // Mandant
);
?>
Im Haupt-Script wird diese Datei mit
include("conf/sap_connection.conf.php");
eingebunden.
Danach führen wir einige Vorbelegungen durch:
define("RFC_FUNCTION_NAME", "BAPI_FLCUST_GETLIST");
$rfcReturnTable = "CUSTOMER_LIST";
$rfcCon = null;
$rfcResult = array();
Zunächst mal geben wir die gewünschte BAPI-Funktion BAPI_FLCUST_GETLIST an. Diese BAPI gibt ihr Ergebnis u.a. in die Tabelle CUSTOMER_LIST zurück. Danach verbinden wir uns mit dem SAP-Server.
$rfcCon = saprfc_open($sapServer["NSP"]); // Verbindungsdaten als Array
if( !$rfcCon ) // Verbindung fehlgeschlagen
{
die( "RFC Verbindung fehlgeschlagen: " . saprfc_error() );
}
Die Variable $rfcCon erhält das Connection-Handle und muss in den folgenden Funktionen mit angegeben werden. Als nächstes registrieren wir die RFC-Funktion (also unser BAPI), die Rückgabe-Tabelle und den Import-Parameter. Wobei der Import-Parameter als Übergabe-Parameter an die RFC-Funktion zu verstehen ist.
$rfcFunction = saprfc_function_discover( $rfcCon, RFC_FUNCTION_NAME );
if( !$rfcFunction )
{
die( "RFC Funktion konnte nicht ermittelt werden" );
}
@saprfc_table_init( $rfcCon, $rfcReturnTable );
saprfc_import( $rfcFunction, "MAX_ROWS", 20 );
Es gibt zwei Möglichkeiten, die Signatur einer RFC-Funktion festzulegen. Entweder man definiert die Signatur einer RFC-Funktion direkt über saprfc_function_define() oder man ermittelt die Signatur über saprfc_function_discover() automatisch. Die erste Variante ist aufwändiger dafür schneller, die zweite Variante bequemer, dafür aber etwas weniger performant. Wie man sieht, mag ichs bequem
Ist alles korrekt festgelegt, können wir den RFC-Aufruf ausführen:
$rfcStatus = saprfc_call_and_receive( $rfcFunction );
if( $rfcStatus != SAPRC_OK )
{
if( $rfcStatus == SAP_EXCEPTION )
{
die( "RFC Exception: " . saprfc_exception( $rfcFunction ) );
}
else
{
die( "Fehler RFC-Aufruf: " . saprfc_error( $rfcFunction ) );
}
}
Hat alles geklappt, können wir die Ergebnismenge zeilenweise auslesen. Dazu ermitteln wir mit saprfc_table_rows() die Anzahl der Reihen in der Ergebnistabelle und verarbeiten dann die Tabelle über eine for-Schleife. Die einzelnen Zeilen lesen wir mit saprfc_table_read() aus und speichern diese in einem Array.
$rows = saprfc_table_rows($rfcFunction, $rfcReturnTable);
for( $i = 1; $i <= $rows; $i++ )
{
$rfcResult[$i] = saprfc_table_read( $rfcFunction, $rfcReturnTable, $i );
}
Ab jetzt können wir die Daten mit PHP so verarbeiten wie gewünscht. Z. B. könnten wir die Daten in einer Tabelle ausgeben:
<table border="0" cellpadding="3" cellspacing="0">
<tr>
<th>Kunden-ID</th>
<th>Kunden-Name</th>
<th>Straße</th>
<th>PLZ</th>
<th>Ort</th>
<th>Telefon</th>
<th>eMail</th>
</tr>
<?php
foreach( $rfcResult as $record )
{
echo "<tr>";
echo "<td>" . $record["CUSTOMERID"] . "</td>";
echo "<td>" . $record["CUSTNAME"] . "</td>";
echo "<td>" . $record["STREET"] . "</td>";
echo "<td>" . $record["POSTCODE"] . "</td>";
echo "<td>" . $record["CITY"] . "</td>";
echo "<td>" . $record["PHONE"] . "</td>";
echo "<td>" . $record["EMAIL"] . "</td>";
echo "</tr>";
}
?>
</table>
Das Ergebnis sollte dann im Browser in etwa so aussehen (Ok, ich hab hier etwas das SAP-GUI nachgebaut

In der Erweiterten Ansicht dieses Artikels ist der komplette Code nochmal dargestellt.
Links:
Allgemeine Einführung in die BAPIs (CA-BFA)
BAPI List
Absicherung der SAP RFC-Schnittstelle (BSI)
"Mit PHP auf SAP zugreifen - first Strike (part two)" vollständig lesen
PHP und Java
Ich habe noch einen weiteren guten Artikel gefunden, der die unterschiedlichen Möglichkeiten beleuchtet, wie man PHP und Java miteinander verheiratet.
Integration von PHP mit der Java Enterprise Edition, ein Artikel von Markus Eisele auf entwickler.de vom Oktober 2007.
Integration von PHP mit der Java Enterprise Edition, ein Artikel von Markus Eisele auf entwickler.de vom Oktober 2007.
Geschrieben von Stephan Beeker
um
12:36
Sunday, 15. February 2009
Ranking zur Popularität der Programmiersprachen
Der TIOBE Programming Community Index ermittelt die populärsten Programmiersprachen anhand der Anzahl der Programmierer, Kurse oder Anbieter von Lösungen. Zusätzlich werden zur Berechnung der Popularität die Suchtreffer (Suchstring: " programming") der Suchmaschinen Google, MSN, Yahoo! und Youtube herangezogen.
Nach dem TIOBE Index vom Februar 2009 rangiert Java mit 19,4% an erster Stelle, gefolgt von C (15,8%) und C++ (9,6%). Das '"Stockerl" knapp verpasst haben Visual Basic mit 8,8% auf Platz 4 und PHP mit 8,7% auf Platz 5. Der TIOBE Index gibt auch die Differenz zum Vorjahreszeitraum an. So lässt sich eine Entwicklung über die letzten 12 Monate ablesen. Demnach haben sich die C-basierten Compiler-Sprachen wie C#, C++ oder Java verbessert oder sind etwa gleich geblieben.
Ich habe hier noch einen Ausdruck vom Stand September vor mir liegen, also ein knappes halbes Jahr alt. Interessant ist hier die Entwicklung von C#. Microsofts .Net Kernsprache hat sich von Platz 8 auf Platz 6 vorgeschoben. Auch bemerkenswert, Logo landet auf Platz 15 und zeigt einen starken Trend nach oben?!? Wer bitteschön programmiert denn in Logo?
Ebenfalls interessant ist die Entwicklung von ABAP. Vor Jahresfrist noch auf Platz 29, im September 2008 auf Platz 24 und im Februar 2009 schon auf Platz 17. Hat SAP nicht vor kurzem einen Einstellungsstop verhängt? Und überhaupt, propagiert SAP nicht ihren neuen SOA-Ansatz über Java. Anscheinend suchen immer noch viele Berater- und Anwender-Firmen R/3 Experten für den klassischen ABAP-Stack.
Der Markt für ERP-Experten ist aber wohl so leer wie die Atacama-Wüste trocken. Daher findet man an jeder (Web)-Ecke Jobangebote für SAPler oder solche, die es noch werden wollen. Dieses erhöhte Hintergrundrauschen im Web wirkt sich natürlich auch auf so einen Index wie TIOBE aus.
Zu PHP muss man sagen, dass sie sich als reine Webprogrammiersprache wacker auf Platz 5 hält. Schließlich bieten die anderen Programmiersprachen drumherum ein breiteres Einsatzspektrum. Daher vermute ich, dass allein bezogen auf den Bereich webbasierte Softwareentwicklung PHP die Nase vorn hätte. Aber hierzu ist mir leider noch keine stichhaltige Statistik untergekommen.
Nach dem TIOBE Index vom Februar 2009 rangiert Java mit 19,4% an erster Stelle, gefolgt von C (15,8%) und C++ (9,6%). Das '"Stockerl" knapp verpasst haben Visual Basic mit 8,8% auf Platz 4 und PHP mit 8,7% auf Platz 5. Der TIOBE Index gibt auch die Differenz zum Vorjahreszeitraum an. So lässt sich eine Entwicklung über die letzten 12 Monate ablesen. Demnach haben sich die C-basierten Compiler-Sprachen wie C#, C++ oder Java verbessert oder sind etwa gleich geblieben.
Ich habe hier noch einen Ausdruck vom Stand September vor mir liegen, also ein knappes halbes Jahr alt. Interessant ist hier die Entwicklung von C#. Microsofts .Net Kernsprache hat sich von Platz 8 auf Platz 6 vorgeschoben. Auch bemerkenswert, Logo landet auf Platz 15 und zeigt einen starken Trend nach oben?!? Wer bitteschön programmiert denn in Logo?
Ebenfalls interessant ist die Entwicklung von ABAP. Vor Jahresfrist noch auf Platz 29, im September 2008 auf Platz 24 und im Februar 2009 schon auf Platz 17. Hat SAP nicht vor kurzem einen Einstellungsstop verhängt? Und überhaupt, propagiert SAP nicht ihren neuen SOA-Ansatz über Java. Anscheinend suchen immer noch viele Berater- und Anwender-Firmen R/3 Experten für den klassischen ABAP-Stack.
Der Markt für ERP-Experten ist aber wohl so leer wie die Atacama-Wüste trocken. Daher findet man an jeder (Web)-Ecke Jobangebote für SAPler oder solche, die es noch werden wollen. Dieses erhöhte Hintergrundrauschen im Web wirkt sich natürlich auch auf so einen Index wie TIOBE aus.
Zu PHP muss man sagen, dass sie sich als reine Webprogrammiersprache wacker auf Platz 5 hält. Schließlich bieten die anderen Programmiersprachen drumherum ein breiteres Einsatzspektrum. Daher vermute ich, dass allein bezogen auf den Bereich webbasierte Softwareentwicklung PHP die Nase vorn hätte. Aber hierzu ist mir leider noch keine stichhaltige Statistik untergekommen.
Saturday, 14. February 2009
Mit PHP auf SAP zugreifen - first Strike (part one)
Mit PHP auf SAP zugreifen? Viele werden sich vielleicht fragen, wat?!? Warum dass denn? Schließlich hat SAP doch seine eigene Programmiersprache - nämlich ABAP. Der Allgemeine Berichts-Anwendungs-Prozessor, äh sorry, natürlich heißt's ja seit langem schon Advanced Business Application Programming. SAP ändert ja gerne mal die Namen ihrer Produkte.
Das derzeit wichtigste Produkt, der Netweaver, bietet eine enge Integration von Java über den hauseigenen J2EE-Server und dem Java Connector JCO. Außerdem existieren in SAP seit jeher Schnittstellen nach außen - klassische wie die RFCs oder moderne über HTTP/Webservices - SOA lässt grüßen. Ahh jetzt! Der Zugriff von PHP auf SAP läuft also über SOAP oder so ähnlich. Falsch gedacht! Obwohl dies natürlich auch ginge. Die Unterstützung von SOAP ist in PHP5 sehr ausgereift.
Nein. Der Zugriff erfolgt über die RFC-Schnittstelle. Möglich wird das durch die SAPRFC Extension, die 2001 von Eduard Koucky entwickelt wurde. Diese Extension wird allerdings seit 2005 nicht mehr weiterentwickelt. Es gibt aber mit SAPNWRFC, eine interessante Neuentwicklung von Piers Harding.
Ein guter Artikel, wie man SAP mit PHP connected ist "Integrating SAP with PHP" von Jason Simmons. Nach diesem Artikel bin ich auch vorgegangen.
Zunächst mal, ich hatte fürs rumspielen mit ABAP bereits eine 90-Tage Testversion von Netweaver 7.1 installiert. Diese kann man sich von sdn.sap.com runterladen. Mit dem SAP-GUI Client wird auch die notwendige librfc.dll installiert. Als PHP Umgebung verwendete ich XAMPP unter Windows. Für Windows gibt es eine DLL von SAPRFC. Diese php_saprfc.dll habe ich ins Extension-Verzeichnis von PHP kopiert und in der php.ini mit dem Eintrag
extension=php_saprfc.dll
die Extension aktiviert. Dies sollte dann über phpinfo() erkennbar sein.
Danach habe ich das mitgelieferte Script saprfc_test.php ausgeführt. Es erschien dann ein Formular, über das ich dann die Verbindungsdaten zum Mini-SAP System eingegeben habe:
Application Server: 127.0.0.1
System Number: 00
User: BCUSER
Passwort: minisap
System Name: NSP
Client: 000
Der Test war erfolgreich.
Es wurde also Zeit für ein erstes Script.
Entscheidend ist die Funktion saprfc_open(), welche die Verbindung zum SAP-Server aufbaut. Als Parameter übergibt man der Funktion die Verbindungsdaten als Assoziatives Array. Der Rest des Scripts ist simpel. Es gibt einfach nur die Verbindungseigenschaften aus, die über saprfc_attributes() ermittelt werden.
"Du hast den ersten Schritt in eine neue Welt getan, Luke".
Das Script hat einwandfrei funktioniert und der Zugriff auf SAP mit PHP war garnicht so schwierig. Stellt sich immer noch die Frage, warum man denn überhaupt PHP für den SAP-Zugriff verwenden sollte. Nunja, mit Scriptsprachen lassen sich schnell und effizient Anwendungen entwickeln. Außerdem sind Scriptsprachen längst reif für den Enterprise-Einsatz, wie Grails, Ruby und nicht zuletzt PHP5 beweisen. Aber dazu mehr in einem anderen Blog-Eintrag.
Weitere Links:
SAP RFC Homepage
Blog-Seite von Piers Harding zur neuen sapnwrfc Extension
Working with PHP and SAP (Artikel von Stoyan Stefanov)
HOWTO: SCRIPTING LANGUAGE SUPPORT FOR SAP SERVICES - PHP (SAP Developer Network - Vasil Bachvarov)
Das derzeit wichtigste Produkt, der Netweaver, bietet eine enge Integration von Java über den hauseigenen J2EE-Server und dem Java Connector JCO. Außerdem existieren in SAP seit jeher Schnittstellen nach außen - klassische wie die RFCs oder moderne über HTTP/Webservices - SOA lässt grüßen. Ahh jetzt! Der Zugriff von PHP auf SAP läuft also über SOAP oder so ähnlich. Falsch gedacht! Obwohl dies natürlich auch ginge. Die Unterstützung von SOAP ist in PHP5 sehr ausgereift.
Nein. Der Zugriff erfolgt über die RFC-Schnittstelle. Möglich wird das durch die SAPRFC Extension, die 2001 von Eduard Koucky entwickelt wurde. Diese Extension wird allerdings seit 2005 nicht mehr weiterentwickelt. Es gibt aber mit SAPNWRFC, eine interessante Neuentwicklung von Piers Harding.
Ein guter Artikel, wie man SAP mit PHP connected ist "Integrating SAP with PHP" von Jason Simmons. Nach diesem Artikel bin ich auch vorgegangen.
Zunächst mal, ich hatte fürs rumspielen mit ABAP bereits eine 90-Tage Testversion von Netweaver 7.1 installiert. Diese kann man sich von sdn.sap.com runterladen. Mit dem SAP-GUI Client wird auch die notwendige librfc.dll installiert. Als PHP Umgebung verwendete ich XAMPP unter Windows. Für Windows gibt es eine DLL von SAPRFC. Diese php_saprfc.dll habe ich ins Extension-Verzeichnis von PHP kopiert und in der php.ini mit dem Eintrag
extension=php_saprfc.dll
die Extension aktiviert. Dies sollte dann über phpinfo() erkennbar sein.
Danach habe ich das mitgelieferte Script saprfc_test.php ausgeführt. Es erschien dann ein Formular, über das ich dann die Verbindungsdaten zum Mini-SAP System eingegeben habe:
Application Server: 127.0.0.1
System Number: 00
User: BCUSER
Passwort: minisap
System Name: NSP
Client: 000
Der Test war erfolgreich.
Es wurde also Zeit für ein erstes Script.
// Verbindungsdaten
$sapConnectionData = array( 'USER' => 'bcuser',
'PASSWD' => 'minisap',
'NSP' => 'NSP',
'ASHOST' => '127.0.0.1',
'SYSNR' => '00',
'CLIENT' => '000'
);
//
// RFC Verbindung zum Server aufbauen
//
$rfc = saprfc_open($sapConnectionData);
//
// prüfen ob Verbindung steht
//
if( !$rfc )
{
echo "Fehler Verbindung: ";
print_r( saprfc_error() );
die();
}
else
{
$info = saprfc_attributes($rfc);
print_r($info);
}
saprfc_close($rfc);
Entscheidend ist die Funktion saprfc_open(), welche die Verbindung zum SAP-Server aufbaut. Als Parameter übergibt man der Funktion die Verbindungsdaten als Assoziatives Array. Der Rest des Scripts ist simpel. Es gibt einfach nur die Verbindungseigenschaften aus, die über saprfc_attributes() ermittelt werden.
"Du hast den ersten Schritt in eine neue Welt getan, Luke".
Das Script hat einwandfrei funktioniert und der Zugriff auf SAP mit PHP war garnicht so schwierig. Stellt sich immer noch die Frage, warum man denn überhaupt PHP für den SAP-Zugriff verwenden sollte. Nunja, mit Scriptsprachen lassen sich schnell und effizient Anwendungen entwickeln. Außerdem sind Scriptsprachen längst reif für den Enterprise-Einsatz, wie Grails, Ruby und nicht zuletzt PHP5 beweisen. Aber dazu mehr in einem anderen Blog-Eintrag.
Weitere Links:
SAP RFC Homepage
Blog-Seite von Piers Harding zur neuen sapnwrfc Extension
Working with PHP and SAP (Artikel von Stoyan Stefanov)
HOWTO: SCRIPTING LANGUAGE SUPPORT FOR SAP SERVICES - PHP (SAP Developer Network - Vasil Bachvarov)
(Seite 1 von 1, insgesamt 4 Einträge)
Kalender
|
|
February '09 |
|
||||
| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | |
Suche
Kategorien
Blog abonnieren
Verwaltung des Blogs
Powered by serendipity, Design by Garvin Hicking. Smile, you're on the candid credit line!

