Autor Thema: Import von Daten aus SAP/R3  (Gelesen 4857 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Import von Daten aus SAP/R3
« am: 02.11.02 - 17:12:31 »
@All

Habe ein kleines Problem bei der Übergabe von Werten an eine RFC von SAP.

Die Sub GetAppointment soll alle Termine aus dem SAP System auslesen. Dabei kann das Start und Enddatum angegeben werden. Beim Aufruf der Funktion miezt mich SAP aber an, daß die Datumswerte nicht im richtigen Format übergeben wurden.
Hab mal den Code des RFC Funktionsbausteins APPOINTMENT_GET auch hier mit gepostet.

Eventuell hat ja jemand so etwas schon gemacht.
Ich kann z.B. der RFC Customer_GET einen String für die zu exportierenden Daten übergeben. Dann funktioniert das auch. Nur halt nicht beim Datum.
(Im SAP habe ich als sap* alle Berechtigungen, nur falls diese Frage auftauchen sollte)


Sub GetAppointment
%REM
FUNCTION APPOINTMENT_GET.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"              DATE_FROM LIKE  SCAPPT-DATE_FROM
*"              DATE_TO LIKE  SCAPPT-DATE_TO
*"       TABLES
*"              OWNER_OR_DISTR_LIST STRUCTURE  SCSOWNERDL
*"              APPOINTMENTS STRUCTURE  SCSAPPT
*"       EXCEPTIONS
*"              DATE_HAS_INVALID_FORMAT
*"              DATE_INCONSISTENCY
*"----------------------------------------------------------------------
   
*  DATA: BEGIN OF OWNER_RANGE_TABLE OCCURS 10.
*          INCLUDE STRUCTURE g_owner_range_tab.
*  DATA: END OF OWNER_RANGE_TABLE.
 DATA: BEGIN OF ERROR_MESSAGE.
         INCLUDE STRUCTURE SCSERROR.
  DATA: END OF ERROR_MESSAGE.
   
************************************************************************
* Verteilerlisten auflösen
************************************************************************
   
PERFORM G_OWNER_RANGE_TAB_FILL TABLES   OWNER_OR_DISTR_LIST
                               CHANGING ERROR_MESSAGE.
   
************************************************************************
* Datum prüfen
************************************************************************
   
PERFORM DATE_CHECK_PLAUSIBILITY USING DATE_FROM
                                      'DATE_FROM'.
   
PERFORM DATE_CHECK_PLAUSIBILITY USING DATE_TO
                                      'DATE_TO'.
   
PERFORM DATE_CHECK_CONSISTENCY USING DATE_FROM
                                    DATE_TO.
   
************************************************************************
* Termine lesen
************************************************************************
   
PERFORM APPOINTMENT_GET_ TABLES APPOINTMENTS
   USING  DATE_FROM
   DATE_TO
                                C_no.
   
ENDFUNCTION.
%END REM   
     '
     'Declare objects for creation of Notes documents and other Notes related stuff.
   Dim Session As New NotesSession
   Dim dbCurr As NotesDatabase
   Dim docCurr As NotesDocument
   Set dbCurr = Session.CurrentDatabase
   'Counter vars    
   Dim intRow As Integer
   Dim intEndRow As Integer
   'Declare the function object
   Dim RfcAppointmentGet As RFCfunction
   
     'Declare the table object
   Dim tblAppointment_t As RFCtable
   
     'Create the function object and bind it to the R/3 function module "RFC_CUSTOMER_GET".
     'The first parameter "objServer" is a global variable previously set by the function "AssertConnection".
     'It specifies the R/3 application server on which the function module will be processed.
   Set RfcAppointmentGet = New RFCfunction(objServer, "APPOINTMENT_GET")
   
     'Assign the "Import" parameters of the function module for data selection.
     'We look from the client's side: The function module's "Imports" are our "Exports"
     'Wildcards are allowed.
   RfcAppointmentGet.Exports("DATE_FROM").Value = "01.01.2002"
   RfcAppointmentGet.Exports("DATE_TO").Value = "01.01.2003"
   
     ' Call the function. If the result is true process the data, else pop up a message.
   If RfcAppointmentGet.Call = True Then
      
         'Bind the table object to the function's interface table "APPOINTMENTS"          
      Set tblAppointment_t = RfcAppointmentGet.Tables("APPOINTMENTS")
      
         'get number of rows to be imported          
      intEndRow = Cint(Inputbox$("Number of documents to be imported:",  _
      "Table contains" & Str$(tblAppointment_t.ColumnCount) & " columns and " & Str$(tblAppointment_t.Rows.Count) & " rows" , _
      Str$(tblAppointment_t.Rows.Count)))
      
          'Loop through the retrieved data and create a Notes document for each row.
      For intRow = 1 To intEndRow
         
         Set docCurr = dbCurr.CreateDocument
         
               'Set various fields              
         docCurr.Type = "APPOINTMENT"
         docCurr.Form = "APPOINTMENT"
         
               'Write the customer data into the Notes document.
         docCurr.WHO= tblAppointment_t.GetCell  (intRow, 1)
         '... and what have ya
         Call docCurr.Save (True, True)
         
      Next
   Else
          'In this case of error the "Message" property contains the appropriate error message.
      Print "Call Failed! error: " + RfcAppointmentGet.Message
   End If
   
End Sub
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #1 am: 02.11.02 - 19:44:24 »
nun, den Fehler beim Datum habe ich gefunden.

statt

RfcAppointmentGet.Exports("DATE_FROM").Value = "01.01.2002"
RfcAppointmentGet.Exports("DATE_TO").Value = "01.01.2003"

muss es einfach

RfcAppointmentGet.Exports("DATE_FROM").Value = "20020101"
RfcAppointmentGet.Exports("DATE_TO").Value = "20030101"

heißen.

Leider liefert die Funktion (noch) keine Werte zurück.

eknori

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Hoshee

  • Administrator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
  • Try To Be Mensch ...
    • Syslords Solutions IT-Dienstleistungen
Re:Import von Daten aus SAP/R3
« Antwort #2 am: 02.11.02 - 20:35:25 »
Yoo eknori,

ich hab' leider Business-Explorer zur Hand, aber in Deinem Script taucht die Variable C_no auf.

Zitat
PERFORM APPOINTMENT_GET_ TABLES APPOINTMENTS
   USING  DATE_FROM
   DATE_TO
                                C_no.
   

Ich nehme man an soll heissen "Kundennummer", aber Du übergibst diesen Wert nirgendwo.
Schau mal in diese Richtung.

Vielleicht sucht Du mal nach einem entsprechenden BAPI oder BO im SAP. Die sind meist besser beschrieben.

Gruss ...

Hoshee
Detlef

-> Syslords Solutions
*************************************
Wer dem Chef in den Hintern kriecht, muß damit rechnen, daß er ihm eines Tages zum Hals heraushängt

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #3 am: 02.11.02 - 20:45:34 »
Hallo Hoshee,

die RFC hat als export (also Parameter) nur DATE_FROM und DATE_TO. C_No ist bereits innerhalb der ABAP und kann nicht übergeben werden.
Der Aufruf wird jetzt auch Fehlerfrei ausgeführt, nur leider kommen keine Werte zurück. Im Debugger sieht man auch, daß er APPOINTMENTS als Object initialisiert; leider steht bei ROWS nix drin.

Na, hab ja heute erst mit dem Kram angefangen; das wird schon.

Ziel ist eine Sychronisation des SAP Kalenders mit dem NotesKalender und andersherum.

Na, der Abend ist ja noch lang; bin Strohwitwer  ;D ;D
Frau zum Klassentreffen in Dresden, Tochter auf ner Party mit Übernachtung, Werner in der Glotze und nen Falschbier aufm Tisch.  ;D ::) ::)

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Hoshee

  • Administrator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
  • Try To Be Mensch ...
    • Syslords Solutions IT-Dienstleistungen
Re:Import von Daten aus SAP/R3
« Antwort #4 am: 02.11.02 - 20:48:59 »
Yoo,

bei mir fast ähnlich. Frau in der Badewanne und beide Kinder im Bett.
Ich werde mir am Montag mal den Business-Explorer schnappen (wenn ich noch eine ID finde, die das darf und mal schauen)

Gruss ...

Hoshee
Detlef

-> Syslords Solutions
*************************************
Wer dem Chef in den Hintern kriecht, muß damit rechnen, daß er ihm eines Tages zum Hals heraushängt

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #5 am: 03.11.02 - 16:56:31 »
Das ist schon eine vetrakte Geschichte:

Gebe ich das Datum in der Form "20020101" ein, dann wandelt SAP das intern um in "20.02.0101" um.

Das würde auch erklären, warum ich keine Rückgabewerte erhalte; leider liefert aber auch ein test der RFC im SAP keine Werte ( auch wenn ich dort den richtigen Bereich eingebe )

@Hoshee:

und das sind eben nur die Werte DATE_FROM und DATE_TO; weitere Parameter können der RFC nicht übergeben werden.

@All

Gibt es im Forum jemanden, der auf seinem SAP mal den Funktionsbaustein APPOINTMENT_GET im Function Builder testen kann ??
Gibt es jemanden, der mir die internen Datenbankzusammenhänge bei der Erstellung eines Termins erklären kann ( Tabellen ) ??

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Hoshee

  • Administrator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
  • Try To Be Mensch ...
    • Syslords Solutions IT-Dienstleistungen
Re:Import von Daten aus SAP/R3
« Antwort #6 am: 03.11.02 - 20:49:05 »
Yoo eknori,

ich war eben mal am schauen im Interface Repository (Sehr interessant: http://ifr.sap.com), kann die RFC aber nicht finden. In welcher Komponente, Version und BO ist APPONTMENT_GET denn zu finden?

Gruss ...

Hoshee
Detlef

-> Syslords Solutions
*************************************
Wer dem Chef in den Hintern kriecht, muß damit rechnen, daß er ihm eines Tages zum Hals heraushängt

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:Import von Daten aus SAP/R3
« Antwort #7 am: 03.11.02 - 23:15:30 »
@All

Gibt es im Forum jemanden, der auf seinem SAP mal den Funktionsbaustein APPOINTMENT_GET im Function Builder testen kann ??
Hallo Ulrich,

meine "bessere Hälfte" hats gerade mal SAP-seitig getestet. Sie meint, es hätte einwandfrei funktioniert.
Beim Test im Function Builder (Testhilfe) wird das Datum mit Punkten (tt.mm.jjjj) angegeben. Zusätzlich ist darauf zu achten, daß die Tabelle OWNER_OR_DISTR_LIST im SAP System beim Test mit dem entsprechenden SAP User befüllt wird. Danach liefert das Ding dann auch Werte in die Tabelle APPOINTMENTS.

Viele Grüße
Andreas

P.S. Wenn Du willst, können wir das morgen ja mal "gemeinsam" durchgehen.
Andreas Fritz

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #8 am: 04.11.02 - 07:51:28 »
Beim Test im Function Builder (Testhilfe) wird das Datum mit Punkten (tt.mm.jjjj) angegeben. Zusätzlich ist darauf zu achten, daß die Tabelle OWNER_OR_DISTR_LIST im SAP System beim Test mit dem entsprechenden SAP User befüllt wird. Danach liefert das Ding dann auch Werte in die Tabelle APPOINTMENTS.

@Andreas:

Ahhh, das wird es sein. Das ist dann mysteriöse Parameter "C_no" in der RFC. Der hat  bei mir natürlich keinen Wert; daher kann in den APPOINTMENTS auch nix stehen. Werde das heute abend mal zuhause testen.

Erstmal Danke.

Ulrich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #9 am: 04.11.02 - 17:28:23 »
so, habs getestet; wenn ich im Function Bulder in die Tabelle OWNER_OR_DISTR_LIST einen SAP User eintrage, liefert die Funktion auch Werte zurück.

Trotzdem habe ich jetzt immer noch das Problem, daß ich nicht wei0, wie ich den ScriptCode so erweitern muß, daß ich den Wert für einen User an SAP übergeben kann.

Irgendwie fehlt mir da das Verständnis.

Hat jemand eine Idee ??

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Hoshee

  • Administrator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
  • Try To Be Mensch ...
    • Syslords Solutions IT-Dienstleistungen
Re:Import von Daten aus SAP/R3
« Antwort #10 am: 04.11.02 - 18:33:40 »
Yoo,

da es sich anscheinend um einen SAP-Importparameter handelt, dann an
Zitat
'Assign the "Import" parameters of the function module for data selection.
    'We look from the client's side: The function module's "Imports" are our "Exports"
    'Wildcards are allowed.
   RfcAppointmentGet.Exports("DATE_FROM").Value = "01.01.2002"
   RfcAppointmentGet.Exports("DATE_TO").Value = "01.01.2003"

die Zeile
   RfcAppointmentGet.Exports("C_NO").Value = xxxxxxx

Hier stellt sich nun die Frage, um was für einen Wert es sich handelt, der eingetragen werden muss.

Gruss ...

Hoshee
Detlef

-> Syslords Solutions
*************************************
Wer dem Chef in den Hintern kriecht, muß damit rechnen, daß er ihm eines Tages zum Hals heraushängt

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #11 am: 04.11.02 - 18:45:12 »
C_no ist aber kein Parameter von APPOINTMENT_GET. Das ist ja das Problem.

Owner_or_DISTR_LIST ist auch keine Tabelle, sondern wird zur Laufzeit von APPOINTMENT_GET temp erzeugt.
Wie kriege ich da den Wert für den User rein ?

Ich dreh noch durch  :P :P
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #12 am: 04.11.02 - 19:16:34 »
hab noch ein bißchen was rausbekommen:

Set tblOwner_t = RfcAppointmentGet.Tables("OWNER_OR_DISTR_LIST")

dummy = tblOwner_t.SetCell (1, 1,"HR1")

( wobei HR1 mein SAP User ist und 1,1 die erste Spalte in der ersten Reihe der Tabelle)

Das scheint wohl von der Syntax einigermaßen richtig zu sein; leider erhalte ich die fehlermeldung:

"Error accessing product object method"

wenn ich den Code im Debugger teste.

mühsam ernährt sich das Eichhörnchen...

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Import von Daten aus SAP/R3
« Antwort #13 am: 04.11.02 - 19:41:58 »
Sorry, schon wieder ich.

bin wieder ein Stück weitergekommen.

      Set tblOwner_t = RfcAppointmentGet.Tables("OWNER_OR_DISTR_LIST")
      Set OwnerRow = tblOwner_t.Rows.InsertRow
      Call OwnerRow.SetCell("OWNER","HR1")


Die Fehlermeldung ist nun weg; auch wird die tabelle mit "HR1" gefüllt. Aber irgendwie bekomme ich immer noch keone Werte zurück. Habe die Vermutum´ng , daß durch das Insert die erste zeile leer bleibt und SAP auf Grundlage der ersten zeile die Appointments zurückgibt.

Sorry, wenn ich hier mit dem SAP Sche.. nerve

eknori
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz