SAP Connector mit Netweaver RFC SDK
-
Die beiden Warnungen bzgl der Subsystem-Einstellungen und die Funktion "_nlsui_main" sieht so aus als ob es sich da garnicht um natives C++ handelt. Ohne Code kann man dir aber auch nicht wirklich viel sagen. Hast du ein Tutorial zu dem Framework, das du da benutzt, mal durchgespielt?
-
bist du sicher, dass SAP-Release und SAP RFC SDK-Version zusammenpassen?
Wenn du mit Visual Studio arbeitest, als was hast du dein Programm erstellt? Win32-Anwendung?
Ansonsten findet sich im SDN einiges über RFC SDK (im OSS leider weniger)
-
pumuckl schrieb:
Die beiden Warnungen bzgl der Subsystem-Einstellungen und die Funktion "_nlsui_main" sieht so aus als ob es sich da garnicht um natives C++ handelt. Ohne Code kann man dir aber auch nicht wirklich viel sagen. Hast du ein Tutorial zu dem Framework, das du da benutzt, mal durchgespielt?
Hallo Leute vielen Dank für so viele Antworten. Hier mein Code:
// sap_connect0r_v001.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "include\sapnwrfc.h" #include <stdlib.h> #include <stdio.h> void errorHandling(RFC_RC rc, SAP_UC description[], RFC_ERROR_INFO* errorInfo, RFC_CONNECTION_HANDLE connection) { printfU(cU("%s: %d\n"), description, rc); printfU(cU("%s: %s\n"), errorInfo->key, errorInfo->message); // It's better to close the TCP/IP connection cleanly, than to // just let the backend get a "Connection reset by peer" error... if (connection != NULL) RfcCloseConnection(connection, errorInfo); exit(1); } int mainU(int argc, SAP_UC** argv) { RFC_RC rc = RFC_OK; RFC_CONNECTION_PARAMETER loginParams[6]; RFC_ERROR_INFO errorInfo; RFC_CONNECTION_HANDLE connection; RFC_FUNCTION_DESC_HANDLE bapiCompanyDesc; RFC_FUNCTION_HANDLE bapiCompany; RFC_STRUCTURE_HANDLE returnStructure; SAP_UC message[221]; RFC_BYTE buffer[1105]; unsigned utf8Len = 1105, resultLen; FILE* outFile; // ----------------------------------------------- // OPEN CONNECTION // ----------------------------------------------- // Create logon parameter list loginParams[0].name = cU("ashost"); loginParams[0].value = cU("hs0023"); loginParams[1].name = cU("sysnr"); loginParams[1].value = cU("05"); loginParams[2].name = cU("client"); loginParams[2].value = cU("800"); loginParams[3].name = cU("user"); loginParams[3].value = cU("alice"); loginParams[4].name = cU("lang"); loginParams[4].value = cU("EN"); loginParams[5].name = cU("passwd"); loginParams[5].value = cU("secret"); // Open connection connection = RfcOpenConnection(loginParams, 6, &errorInfo); if (connection == NULL) errorHandling(rc, cU("Error during logon"), &errorInfo, NULL); //----------------------------------------------- // DYNAMIC METADATA retrieval (can also be executed using STATIC functions) //----------------------------------------------- bapiCompanyDesc = RfcGetFunctionDesc(connection, cU("BAPI_COMPANY_GETDETAIL"), &errorInfo); if (bapiCompanyDesc == NULL) errorHandling(rc, cU("Error during metadata lookup"), &errorInfo, connection); // ----------------------------------------------- // FUNCTION CALL // ----------------------------------------------- // Create function instance bapiCompany = RfcCreateFunction(bapiCompanyDesc, &errorInfo); // Parameter setting RfcSetChars(bapiCompany, cU("COMPANYID"), cU("000007"), 6, &errorInfo); // Call rc = RfcInvoke(connection, bapiCompany, &errorInfo); if (rc != RFC_OK) errorHandling(rc, cU("Error calling BAPI_COMPANY_GETDETAIL"), &errorInfo, connection); // Getting parameters RfcGetStructure(bapiCompany, cU("RETURN"), &returnStructure, &errorInfo); RfcGetString(returnStructure, cU("MESSAGE"), message, 221, &resultLen, &errorInfo); // After having finished the procedure: release memory only if a // ‘create’ function was invoked before RfcDestroyFunction(bapiCompany, &errorInfo); // Final UTF8-UTF16 conversion // windows.h utf8Len = WideCharToMultiByte(CP_UTF8, 0, message, strlenU(message), buffer, 1105, NULL, NULL); // RfcSAPUCToUTF8(message, strlenU(message), buffer, &utf8Len, // &resultLen, &errorInfo); // outFile = fopen("message.xml", "w"); // fputs("<?xml version=\"1.0\"?>\n<message>", outFile); // fputs(buffer, outFile); // fputs("</message>", outFile); // fclose(outFile); return 0; }
Vielleicht hilft dieses Code-Beispiel zu verstehen was ich falsch mache. Diesen habe ich aus einem Tutorial bzw. Beispiel zum Testen übernommen. Aber ich glaube am Code liegt es nicht wenn dann an den Einstellungen von Visual Studio oder am Compiler.
Danke im Voraus
-
Wie und welche LIBs hast Du denn eingebunden?
-
Ich habe die benötigte lib Datei von der SAP eingebunden. Die heißt sapnwrfc.lib.
Ich habe es so gemacht wie im Tutorial erklärt wird, welchen ich in meinem ersten Beitrag gepostet habe.Bitte hilft mir die die lib richtig einzubinden.!! Ich versuch es schon seit Tagen.
-
Also entweder gibt es noch mehr LIBs oder Du hast die nicht richtig eingebunden...
Rechte Maustaste auf Projekt -> Eigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten -> Libnamen hinschreiben (entweder mit absolutem Pfad oder mit relativem Pfad nebst VC++-Verzeichnis-Angabe)
-
Hallo,
die Libs sind 1000fach benutzt und ok, demnach muß irgendwas in Deinen Visual Studio Einstellungen nicht stimmen.Hier gibt es ein Tutorial (inklusive Beispiel für die nötigen Visual Studio Einstellungen im ersten Teil). Läuft bei mir einwandfrei.
Part I -- RFC Client Programming
http://www.sdn.sap.com/irj/sdn/index?rid=/library/uuid/302f1a30-f4cb-2c10-e985-c8a280a96e43
Part II -- RFC Server Programming
http://www.sdn.sap.com/irj/sdn/index?rid=/library/uuid/b02b0719-4ccc-2c10-71ab-fe31483e466fPart III -- Advanced Topics
http://www.sdn.sap.com/irj/sdn/index?rid=/library/uuid/5070f62a-6acd-2c10-8cb5-858ef06adbb9Für VS 2010 solltest Du außerdem noch Hinweis 1056696 beachten: die U-Funktionen (printfU usw.) dürfen nicht benutzt werden und sollten durch die entsprechenden Standard-Unicode Funktionen von Microsoft ersetzt werden (_wprintf usw.), sonst crasht es...
Bei VS 2005 gibt es diese Inkompatibilität nicht.
-
Vielen Dank an Lanzelot und allea naderen, jetzt klappt es. Es lag tatsächlich an meinen Einstellungen für Visual Studio.
Also Danke an alle für die vielen Antworten und die Hilfe.
-
Ich steh vor dem gleichen Problem. Welche Projekteinstellungen waren bei dir falsch?
-
Hallo alreemmi,
würdest du mir deine Projekt-Einstellungen verraten?
Schon mal vielen Dank!