![]() |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Hallöchen
War ein paar Tage weg. Daher meld ich mich erst heute wieder. Der Kunde hat halt gemeint ich soll es mit dem JavaConnector machen. Habe aber unter Delphi ein Pech damit. Delphi ist halt kein JAVA. Ich denke ich werde auch eine CSV-Export vorschlagen oder der Kunde soll sich den Datenimport selbst ( in JAVA ) programmieren und ich rufe das Importprogramm auf wenn ich Daten senden muss. Und wenn er das nicht will, gibt es das zwei fertig OXC die ich verwenden könnte. Auf jedenfall vielen Dank an alle. hmg Mandi |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Zitat:
Zitat:
|
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Wir haben unsere SAP-Schnittstellen immer mit IDOC gelöst. Das bietet saubere Schnittstellendefinitionen für den Datenaustausch mit allen Systemen. Die zugrunde liegende Klasse zum Lesen und Erzeugen von IDOC-Dateien ist zum Beispiel
![]() |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Wenn hier schon mal über SAP R/3 geschrieben wird, nutze ich mal die Gelegenheit mal was zu fragen.
Ich sitze gerade hier und weiss mal echt nicht weiter. Unzwar geht es um einen BAPI call den ich gerne ausführen möchte: Dieser benötigt mehrere Felder als import. So weit noch verständlich.... Nun habe ich aber zwei Felder mit dem selben bezeichner, jedoch in unterschiedlichen Tabellen wie mache ich dem importParameter klar in welcher Tabelle sich dieses Feld befindet? Ich gehe durch die RfcAPI mit der librfc.dll und rufe die RfcRecieveEx - Funktion auf Vielen Dank im voraus |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Wenn Du die Möglichkeit hast, schau Dir den SAP .NET Connector an. Der funktioniert zwar nur mit dem Visual Studio 2003. Aber die Unterstützung zur Einbindung von BAPI´s/RFC sind damit optimal. Ist dann natürlich .NET 1.1.
|
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Würde ich gerne! Die möglichkeit ist mir jedoch leider nicht gegeben.
trotzdem Besten Dank! |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Zitat:
Zuerstmal die Schnittstelle instanzieren:
Delphi-Quellcode:
Parameter füllen, die für einzelne Werte stehen:
l_func := a_SAPFunctionsObject.Add('BAPI_REPO_XYZ_F4');
Delphi-Quellcode:
Strukturierte Parameter füllen, d.h. unter dem Namen des Struktur
// werte Importieren
l_func.exports('I_OBJECT_TYPE'):='GC'; l_func.exports('I_MULTIPLE_SELECTION'):='X'; sind nochmal einzelne Felder ansprechbar:
Delphi-Quellcode:
Tabellen-Parameter füllen, d.h. unter dem Namen der Tabelle
// einzelnes Feld einer Struktur füllen
l_importstructur := l_func.exports('IS_STRUKTUR_MATERIAL'); l_ImportStructur.Value[1] := _matnr; müssen Zeilen (Rows) angelegt werden, deren einzelne Felder sind ansprechbar:
Delphi-Quellcode:
Gruß,
// Struktur-Tabelle auslesen
l_IT_STRUCTURE_IDS:= l_func.tables.item('IT_STRUCTURE_IDS'); // alle Einträge löschen l_IT_STRUCTURE_IDS.rows.removeall; / neue Zeile anhängen l_eintrag:=l_IT_STRUCTURE_IDS.rows.add; // einfügen der TestID l_eintrag.Value['STRUCTURE_ID']:=_task.TestID; Christoph |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
was ist l_func für ein Typ? Kann es sein, dass du die BAPIS mit ActiveX ansteuerst?
Im Moment sieht es bei mir noch so aus: Hier werden die Inputparameter gesetzt. Bitte nicht verwirren lassen... der name FExporting ist das, was an das SAP raus geht. trotzdem verwende ich den Namen "setRFCInputParam" als Funktionsaufruf.
Delphi-Quellcode:
Und nun wird das ganze abgeschickt mit folgendem Code...
procedure TSAPRFC.setRFCInputParam(paramName: string; paramlength: integer; pparamValue: pointer;
paramType: integer); // Setzt Eingabeparameter für den RFC var i: integer; begin i := 0; while (i < SAPRFC_Maxparameters) and (FExporting[i].name <> nil) do inc(i); if i = SAPRFC_Maxparameters then raise exception.create('Max params exeeded!'); FExporting[i].name := pchar(paramName); FExporting[i].nlen := length(paramName); FExporting[i].atype := paramType; FExporting[i].leng := paramlength; FExporting[i].addr := pparamValue; end;
Delphi-Quellcode:
function TSAPRFC.execute: string;
var funcres: integer; begin result := ''; funcRes := connection.FRfcCallReceiveEx(connection.fconnHandle, pchar(fRfcName), @FExporting, @FImporting, @FChanging, @FTables, @pException); if funcres <> 0 then begin result := pchar(pException); // Wenn wir keinen Klartext-Fehler bekommen, geben wir den Fehlercode aus if result = '' then result := 'Error ' + IntToStr(funcres); end; end; |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Zitat:
Delphi-Quellcode:
Gruß,
TSAPFunctions = class(TOleControl)
... var l_func, l_IT_STRUCTURE_IDS, l_eintrag, l_resultTabelle: variant; Christoph |
Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
Das bringt mich leider auch nicht weiter, trotzdem Danke!
Also weiterhin besteht das Problem Felder in einer Struktur mit tabellennamen von SAP genau zu identifizieren und zu setzen. Quasi den importparameter richtig zu setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz