Autor Thema: Export aus Notes via Agent mit LCLSX (SAP Connector) nach SAP  (Gelesen 1962 mal)

Offline hübi

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Hallo zusammen

Grobbeschreibung:
ich exportiere mit einem LotusScript Agent Daten aus einer Notes DB via dem Lotus Connector for SAP R/3 1.7.1 FIX Pack ins SAP (habe den Connector momentan lokal auf meinem PC installiert).  Ich verwende die Klasse LCConnection um mich mit einem BAPI (SAP Stored Procedure) auf der SAP-Seite zu verbinden (meine Connection heisst 'sapsession')

Um die Daten via BAPI in 2 SAP-Tabellen (1-n Beziehung) zu schreiben, benutze ich den (Direct Transfer to SAP using Call). d.h. ich fülle auf der Notesseite eine Liste (LCFieldList) mit den Daten. Diese Liste (unten inputfieldlist) wird dann mit dem Call()-Befehl dem BAPI übergeben.

counter = sapsession.Call(inputfieldlist,1,outputfieldlist)

Der Agent durchlauft eine DocumentCollection. Pro NotesDokument wird die inputfieldlist neu aufbereitet und mit call() dem BAPI übergeben. Die Connection zum BAPI erfolgt nur einmal am Anfang des Agenten.

Problem 1:
Der erste Record wird korrekt in die SAP-Tabellen geschrieben. Der zweite Record in der SAP-Tabelle enhält überall dort wo ein Attribut leer sein sollte den Wert des Attributes des vorigen Records. Die Call()-Parameterliste 'inputfieldlist' wird jedesmal nach einem Call() gelöscht und für das neue Notesdocument neu aufgebaut. Im Debugmodus kann ich feststellen, dass die Liste vor dem Call() korrekt aussieht. Trotzdem ist das Resultat in der SAP-Tabelle falsch.
Nach x-Varianten habe ich mal probiert, die SAP-Connection nach jedem Call() zu Disconnecten und wieder neu zu Connecten. Habe dann das Problem mit den Werten des vorigen Records nicht mehr. Sobald ich aber eine grössere Anzahl Dokumente exportieren möchte crasht der Agent (NSD Fehlermeldung... und der NotesClient wird abgeschossen)

Problem 2:
Obwohl ich am Schluss des Agents die SAP-Connection mit Disconnect herunterfahre crasht der NotesClient, wenn ich den Agenten mehrmals hintereinander laufen lasse.
Habe festgestellt, dass wenn der NotesClient nach jedem start des Agenten geschlossen und wieder gestartet wird die Probleme nicht auftauchen. Dieser Lotus SAP Connector hats in sich !!!

Fragen:
Hat jemand schon gleiche Probleme mit dem SAP-Connector erlebt ?

Kann man das Problem gar nicht so lösen, gibt es andere Varianten um meine Daten ins SAP zu pumpen ?

Kann man die SAP-Connection (LCConnection) nach dem Call() irgendwie initialisieren, ohne sie zu schliessen ? (habe mit "Call sapsession.Action(LCACTION_RESET)" probiert, dies bringt zwar keinen Fehler, es hilft aber auch nichts)

Kennt jemand einen Notes / SAP Spezi der mich da weiterhelfen könnte ?

Sorry das ich soviel geschrieben habe, hoffe aber trotzdem das einer da draussen irgend eine Idee für mein Probelm hat.

Ach ja, ich benutze Notes 6.5.

Bis dann  ???

Danke und GRuass
Hubi

Offline zaphod

  • Aktives Mitglied
  • ***
  • Beiträge: 132
  • Geschlecht: Männlich
  • don't panic!
Hallo

hmmm... das Thema BAPI wurde doch auch schon hier http://www.atnotes.de/index.php?topic=22559.0 behandelt.  Jedoch so ganz abschliessend ist das vielleicht auch nicht ???

ciao z
Es gibt eine Theorie die besagt, wenn jemals irgendwer herausfindet, wozu das Universum da ist und warum es da ist,
dann verschwindet es auf der Stelle und es wird durch etwas noch Bizarreres und Unbegreiflicheres ersetzt.


Es gibt eine andere Theorie nach der das schon passiert ist.

DOUGLAS ADAMS

klaussal

  • Gast
Zitat
Kennt jemand einen Notes / SAP Spezi der mich da weiterhelfen könnte ?

eknori wäre da wohl der Richtige. Aber der ist z. Zt. in Urlaub...

Offline hübi

  • Frischling
  • *
  • Beiträge: 4
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Hallo zusammen

bin immer noch am kämpfen.

Weis jemand, wie mann in einer LCFieldlist ein Feld vom Typ LCTYPE_DATETIME nicht mit einem Datum sondern "leer" abfüllen kann.

Hier ein kleines Beispiel einer TestLCFieldlist:

Sub setTestinputfieldlist(record As Integer)
Dim testLCField1 As LCField
Dim testLCField2 As LCField
Set testinputfieldlist = New Lcfieldlist()
Set testLCField1 = testinputfieldlist.Append("IMPORTSI_KOPFZDOCNUM02",LCTYPE_TEXT)
Set testLCField2 = testinputfieldlist.Append("IMPORTSI_KOPFAOFFDFREI",LCTYPE_DATETIME)
   
   
If record = 1 Then
   testLCField1.Text = "o-0502-9-0003392A"
   Dim flddate As New LCDatetime (2005,02,14)
   Call testLCField2.SetDatetime(1,flddate)
Else
   testLCField1.Text = "o-0504-9-00038C5A"
   testLCField2.Value = "00000000"                     '?????
End If
End Sub

---
Mit dieser Testfunktionalität möchte ich das Schreiben von 2 Records ins SAP testen.
Ich baue einmalig eine SAPConnection mit einem BAPI auf. Danach wird die testinputfieldlist zwei Mal wie folgt dem SAP-Connector übergeben (die Connection wird zwischen den Call's nicht abgebaut):
counter = sapsession.Call(testinputfieldlist,1,outputfieldlist)

Beim ersten Aufruf wird das erste Record mit einem Textvalue und einem Datum korrekt geschrieben. Beim zweiten Aufruf, wenn ich das Datum LCField 'testLCField2' nicht abfülle, wird im SAP das Datum des ersten Records auch im zweiten Record geschrieben.
Also habe ich versucht beim zweiten Record das Datum irgendwie als leer mitzugeben.
Vor dem Call() sieht die testinputfieldlist noch korrekt aus. d.h. das LCField 'IMPORTSI_KOPFAOFFDFREI' hat das Value [00:00:0000]. Im SAP wird aber das Datum '79.96.4294' geschrieben.

Wie könnte man das Feld 'testLCField2' in der testinputfieldlist abfüllen, dass KEIN Datum in der SAPTabelle für dieses Attribut geschrieben wird ??

Freue mich auf irgendwelche inputs ;D

merci und GRuass
hubi

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz