Delphi-PRAXiS
Seite 7 von 7   « Erste     567   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi von Delphi 2006 aus Datensätze zu SAP R/3 senden (https://www.delphipraxis.net/78762-von-delphi-2006-aus-datensaetze-zu-sap-r-3-senden.html)

Misek 22. Feb 2007 12:21

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
hmmm.... na dann.
Ich werde weiterhin mich an den Kompos dran setzen... die werden um einiges schneller sein als ActiveX. Gerade für Migrationstools von sehr großen Vorteil. Aber das ist dann jedem seine Sache, wer auf was setzt.

kalmi01 22. Feb 2007 12:55

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
hi
Zitat:

Ich werde weiterhin mich an den Kompos dran setzen... die werden um einiges schneller sein als ActiveX.
find ich gut.
Ich halte nichts von den ActiveX-Sachen.
Zu umständlich und man weis nicht, was passiert.

Roland Wind 1. Mär 2007 11:32

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Misek

Hast du eigentlich die Email Adresse oder Telefonnummer vom Michael Schumann ??
Wollte mal ein bißchen mit ihm plauschen.

kalmi01 7. Mär 2007 19:15

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Moin moin,

wie ist eigentlich der Stand der Dinge, bei diesem Projekt ?

Bei einer aktuellen Aufgabenstellung, ergab sich mir die Frage:
wie transferiere ich TABELLEN gleichzeitig hin/zurück ?

Bei Exporting/Importing/Changing ist die Datenrichtung beim RFC-Aufruf ja recht eindeutig.

Bei Tabellen (Mehrzahl !) scheint mir das aber nicht so zu sein.
Was, wenn ich 0 Tabellen exportiere, aber 5 importiere; oder umgekehrt.
Oder, wenn 2 nach SAP müssen und 3 wieder zurück zu mir ?

Hat da jemand Erfahrungen mit ?

pertzschc 7. Mär 2007 20:29

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von kalmi01
Bei einer aktuellen Aufgabenstellung, ergab sich mir die Frage:
wie transferiere ich TABELLEN gleichzeitig hin/zurück ?

Du initialisierst alle benötigten Tabellen vor dem Aufruf.
Dann bestückst Du die "Import"-Tabellen mit den notwendigen Werten und machst Deinen RFC-Aufruf.
Anschließend nimmst Du Dir die "Export"-Tabellen und liest wenn Werte vorhanden diese aus.

Gruß,
Christoph

kalmi01 19. Mär 2007 11:50

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
hi Christoph
Zitat:

Zitat von pertzschc
Zitat:

Zitat von kalmi01
Bei einer aktuellen Aufgabenstellung, ergab sich mir die Frage:
wie transferiere ich TABELLEN gleichzeitig hin/zurück ?

Du initialisierst alle benötigten Tabellen vor dem Aufruf.
Dann bestückst Du die "Import"-Tabellen mit den notwendigen Werten und machst Deinen RFC-Aufruf.
Anschließend nimmst Du Dir die "Export"-Tabellen und liest wenn Werte vorhanden diese aus.

Vielen Dank für den Tip.
Soweit, so gut.
Bei der Gelegenheit dachte ich mir, machste doch gleich ne Klasse draus.
Um die Strukturen dynamisch halten zu können, hab ich mir Array's als Container angelegt, welche
die Initialisierungparameter in Records beinhalten.
Meine Überlegung ging dahin, die für den RFC-Call benötigten Strukturen erst kurz vor dem
Call zu realisieren, um bei der Parameteranzahl flexibel zu bleiben.
Delphi-Quellcode:
    function TSAP.CallRFC(Name : string) : boolean;
      var
        tmpImport,
        tmpExport,
        tmpChange  : array [0..10] of TRfcParam;  // array of TRfcParam;
        tmpTables  : array [0..10] of TRfcTable;  // array of TRfcTable;
        tmpTableRow : TTableRow;
        TableNames : string;
       
        pException,
        iTab       : pointer;
        FuncRes    : integer;

        i, j       : integer;
      begin
      //  SetLength(tmpImport, Length(FImport) + 1);
        for i := 0 to Length(FImport) - 1
        do begin
             tmpImport[i].name := PChar(FImport[i].Name);
             tmpImport[i].nlen := Length(FImport[i].Name);
             tmpImport[i].atype := FImport[i].Typ;
             tmpImport[i].leng := Length(FImport[i].Wert);
             tmpImport[i].addr := PChar(FImport[i].Wert);
           end;
        tmpImport[Length(FImport)].name := nil;
Seltsamer weise funktioniert obiges.
Delphi-Quellcode:
        tmpChange  : array of TRfcParam;
        tmpTables  : array of TRfcTable;
lege ich die Array's dynamisch an und setze die Länge mit
Delphi-Quellcode:
SetLength(tmpImport, Length(FImport) + 1);
kommt nur Mist bei rum. :gruebel:

Misek 20. Mär 2007 08:48

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
so,... ich hatte ein sehr viel stress gehabt. Muss ja meine Bewerbungen losschicken und schön für Prüfung vorbereiten :((

also ne Nummer habe ich leider nicht, mein Projektleiter hat mich zu ihm weitergeleitet :( ist jetzt natürlich n bissl dumm. Ich habe auch bei xing nachgeschaut, ob er dort irgendwie eingetragen ist. Ich würde eher die "entwickler" fragen, ob sie nicht eine Mail weiterleiten könnten.

hmm... also ich habe auch sehr lange geschraubt, damit das teil 100%ig funktioniert. Hatte am Anfang auch nur Müll

ReinholdF 5. Apr 2007 07:54

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Misek
Das mit den Strukturen war früher bei mir auch das Problem!
Die "Schuhmann" - Klassen von Herrn Schuhmann aus der Entwickler sind auch nicht ganz fehlerfrei. Ich habe mich mit dem Autor unterhalten und konnte mir auch in dem Bereich nicht wirklich weiterhelfen. Dann habe ich so lange ausprobiert, bis ich eine zeile in der Datenbank geschrieben habe ;) da war ich superglücklich!!! Das war der schönste Tag als AZUBI für mich...

Ich Maile es dir gleich zu... es ist aber nur ein Beispiel, wie man es machen kann.


Hallo Misek,

hast du dieses Beispiel noch? -
ich habe schon einige Zeit mit den Klassen von Herrn Schuhmann experimentiert und
es hat soweit ganz gut funktioniert, jedoch beim Aufruf eines RFCs mit einer Struktur
als Import-Parameter erhalte ich Fehler.

hier der Code meines Aufrufs

funcRes := connection.FRfcCallReceiveEx( connection.fconnHandle, pchar(RfcName),
@FExporting, @FImporting, @FChanging,
@FTables , @pException);
if funcres <> 0 then begin
OK := false;
result := pchar(pException);
// Wenn wir keinen Klartext-Fehler bekommen, geben wir den Fehlercode aus
if result = '' then result := 'Error ' + IntToStr(funcres);
exit;
end;

funkres ist 3 = 'SSYSTEM FAILURE'

ich wäre dir sehr dankbar, wenn du mir hier einen Schritt weiterhelfen könntest

Heiksch 5. Apr 2007 13:56

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Hi Mandi,

das ist kein großes Problem. Du kannst die Datensätze in eine Excel Tabelle speichern. Dein Kunde kann diese von SAP aus mittels CATT öffnen und in R/3 einlesen.

Ob Du mit ADO an SAP (DB2, ORACLE, ..) kommst, wage ich zu bezweifeln. Dein Kunde kann aber, wenn Du ihm eine Datenbank bereit stellst mittels eines ABAP Programmes auf diese zugreifen. Unter ABAP gibt es 2 Möglichkeiten um Dateien zu öffnen. Erste Möglichkeit ist die ganz normale für die SAP eigene Datenbank und die zweite ist der "Native" Zugriff. Ein ABAP Programmierer sollte sich damit auskennen.

Gruss Heike



Zitat:

Zitat von Mandi Nice
Hallöchen

Ich soll von meiner Anwendung Datensätze zum SAP R/3 - System des Kunden senden
( inkl Anmeldung usw .... was halt nötig ist )
Ich bin in dem bereich Neuling und hab bisher nicht viel keine Ahnung.

Der EDV-Mensch hat mit erzählt mit dem JAVA Connector sollte es gehen.

Kann aber in Internet nicht viel finden.
Das ganze hört sich auch stark nach JAVA an.
Kann ich das in Delphi verwenden und wenn ja wie und wo kann ich den Connector runterladen.


Kann man mit ADO auf SAP zugreifen.
Wäre mir lieber. Hab damit schon mal auf eine Access-Datenbank zugegriffen.

Grundlagen und Beispielcode wäre für mich sehr wichtig.

Vielen Dank im voraus.

hmg
Mandi


kalmi01 5. Apr 2007 16:59

Re: von Delphi 2006 aus Datensätze zu SAP R/3 senden
 
Zitat:

Zitat von Heiksch
Du kannst die Datensätze in eine Excel Tabelle speichern. Dein Kunde kann diese von SAP aus mittels CATT öffnen und in R/3 einlesen.

Oh Graus, Performance scheint kein Thema mehr zu sein.
Die Lösung mit der Excel-Tabelle scheint unter SAP-Beratern aber sehr beliebt zu sein :roll:

Zitat:

Zitat von Heiksch
Erste Möglichkeit ist die ganz normale für die SAP eigene Datenbank und die zweite ist der "Native" Zugriff. Ein ABAP Programmierer sollte sich damit auskennen.

Also, wenn man es "zu Fuss" machen will, ist der Kram aus "Entwickler" schon nicht schlecht.
Im Prinzip baut man für jedes Prob einen eigenen Wrapper um die RFC-DLL.

Wesentlich eleganter geht es aber mit SAPx.
Kostet rund 700€, was für Tools im SAP-Umfeld ein wahres Schnäppchen ist !

Dank des SAP-Explorers kann man SAP-RFCstrukturen analysieren, ohne auf irgendwelche SAP-Spezies angewiesen zu sein.
Und nicht zu verachten, der SAPx-Server.

Also, wer im SAP-Umfeld tätig ist, für den sind 700€ noch nicht einmal "Portokasse" !
Mich hat ein Kollege angesichts des Preises jedenfalls gefragt: "Taugt das was ???"

[Werbung off]

Ich habe viel Zeit vertan, um mich mit der Connectivität von SAP-RFC-DLL und Delphi auseinander zu setzen und das ganze auch noch hübsch in Klassen zu packen.

"Entwickler" und "BAPI-is-here" waren dabei hilfreich und mein CodeEd+ wird demnächst mit Sicherheit eine einfache native RFC-Schnittstelle bekommen.
Aber, um alles in ein schönes Gewand zu packen, lohnt sich, angesichts des Preises für SAPx, der Aufwand wirklich nicht mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr.
Seite 7 von 7   « Erste     567   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz