Autor Thema: SAP Connector - Artikel mittels BAPI ändern  (Gelesen 4776 mal)

Offline STB82

  • Frischling
  • *
  • Beiträge: 8
SAP Connector - Artikel mittels BAPI ändern
« am: 19.03.14 - 10:50:37 »
Hallo,
 ich habe folgendes Problem. Es soll in Lotusscript mittels einer BAPI ein Artikel in SAP bearbeitet werden. Hierzu habe ich zuerst BAPI_MATERIAL_EDIT gesehen, bin dann aber durch Internet-Recherche auf BAPI_MATERIAL_SAVEDATA gestoßen. Leider finden sich weder zu der einen noch zu der anderen entsprechende Lösungen für SAP. Durch die Dokumentation weiß ich, dass man nur Artikelnummer (als Key) und den neuen Kurztext und die Sprache mitgeben muss, damit die Artikelkurzbeschreibung geändert wird.

Folgenden Code kann ich anbieten:

Code
	Dim src As New LCConnection("sap")
	Dim fieldlist As New LCFieldlist
	Dim Res As New LCFieldList
	Dim field1 As LCField
	Dim field2 As LCField
	Dim field3 As LCField
	Dim counter As Integer

	src.Database = "BAPI_MATERIAL_SAVEDATA"	
	
	Set field1 = fieldlist.Append("IMPORTSHEADDATAMATERIAL",LCTYPE_TEXT)
	field1.Value= "000000000000012345"
	
	Set field2 = fieldlist.Append("MATERIALDESCRIPTIONMATL_DESC",LCTYPE_TEXT)
	field2.Value= "Neuer Kurztext"
	
	Set field3 = fieldlist.Append("MATERIALDESCRIPTIONLANGU",LCTYPE_TEXT)
	field3.Value= "DE"
	
	counter = src.Call(fieldlist, 1, Res)

Hier wird leider die Fehlermeldung
Code
Error: No value supplied for required property,  Connector 'sap',  Method -Call-
ausgeworfen.

Ich bin ehrlich gesagt momentan etwas ratlos, wo hier der Fehler liegt?! Ich hoffe ich liege nicht komplett daneben.

Wäre nett wenn mir hier einer weiterhelfen könnte.

Offline STB82

  • Frischling
  • *
  • Beiträge: 8
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #1 am: 24.03.14 - 11:00:29 »
Hat keiner eine Lösung für mich parat?!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #2 am: 25.03.14 - 08:35:08 »
Sieht für so aus, als wenn nicht alle benötigten Parameter übergeben werden.
Hast Du den Funktionsbaustein mal im SAP aufgerufen, um anzeigen zu lassen, welche Parameter pflicht und welche optional sind (TAC SE37)?
Dort kannst Du zumindest auch mal mit Testdaten spielen und bekommst gegebenfalls auch eine detailliertere Fehlerbeschreibung.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline STB82

  • Frischling
  • *
  • Beiträge: 8
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #3 am: 25.03.14 - 09:34:54 »
Ja, das habe ich getan während ich mir die Pflichtfelder rausgesucht habe.

Habe dort für das aufrufen des Funktionsbausteins die Materialnummer eingetragen, anschließend in der Tabelle MATERIALDESCRIPTION den neuen Wert für den Kurztext und das Länderkennzeichen. Dort wurde es auch korrekt bearbeitet.

Daher würde ich diese Fehlerquelle ausschließen...

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #4 am: 26.03.14 - 11:20:58 »
Für eine Fehleranalyse von Funktionsbausteinen habe ich mir einen kleinen Trick ausgedacht:
Ich kapsel den bestehenden Funktionsbaustein, d.h. ich baue einen eigenen, der dann den gewünschten einfach wieder aufruft.
Hier kann ich dann aber einen Stop einbauen, der den Ablauf des Programms anhält.
Über die SM50 kann ich dann den laufenden Prozess im Debugger starten und nun im Einzelschritt schauen, welche Parameter kommen denn tatsächlich an und wie sollten sie aussehen. Zudem kann ich natürlich auch testweise bestimmte Felder noch korrigieren und schauen, ob der BAPI dann sauber läuft oder nicht.
Ist übrigens auch praktisch bei Funktionen über Browser, z.b. SAP CRM oder Netwiever.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline STB82

  • Frischling
  • *
  • Beiträge: 8
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #5 am: 27.03.14 - 08:31:32 »
Das erstellen eines eigenen Bausteins ist mir leider nicht möglich. Da fehlt mir erstens die Erfahrung in ABAP und zweitens wäre das nicht gewünscht.

Leider finde ich zu der Anwendung von mir, auch wenn es doch recht simpel ist, leider keine Anwendungsbeispiele im Netz. Auch in Büchern wie "RedPaper - Lotus Notes access for SAP Solutions" oder "Lotus Connector LotusScript Extensions Guide" werden Fälle welche dem gleichen nicht behandelt :(

Wäre für einen Code welcher eine nachvollziehbare Lösung  zeigt und/oder Korrektur meines Codes sehr dankbar

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: SAP Connector - Artikel mittels BAPI ändern
« Antwort #6 am: 27.03.14 - 10:46:38 »
Das Erstellen eigener Bausteine ist durchaus sinnvoll. Zum Einen, weil einige SAP-Standard-Bausteine nicht remotefähig sind und zum Anderen kann man einige Standardvorgaben hinterlegen und muss diese nicht jedesmal am Connector übergeben.

Ich bin mir ziemlich sicher, dass es nicht an Deinem Code liegt, sondern schlicht, wie die Fehlermeldung besagt, nicht alle Werte übergeben werden, die verlangt werden.
Ein Remote-Aufruf eines Funktionsbausteins reagiert leider immer etwas anders als der Aufruf über SE37, da über die SE37 einiges automatisch korrigiert wird. Z.B. die Feldlänge, führende Nullen oder ähnliches. Im Debugging würde man sicher direkt sehen, welcher "required property" kein "value" mitgegeben wurde.
Ohne SAP-Debugging bleibt dann nichts übrig, als sich dem Fehler zu nähern, indem man z.B. alle möglichen Felder übergibt und bei allen Feldern explizit darauf achtet, dass die Feldlängen etc. exakt sind.

Wenn ich mir den Quellcode von Dir anschaue, dann sieht es für mich allerdings so aus, als wenn Du die benötigten Werte nicht korrekt bzw. gar nicht übergibst.
Laut SE37 ist nur ein einziges Feld bei der Übergabe ein Pflichtfeld: HEADDATA
Und das ist wieder als Struktur also eine Art Tabelle zu sehen.
HEADDATA-MATERIAL-> ist aller wahrscheinlichkeit nach die Materialnr die geändert werden soll (und hat 18 Zeichen, also eventuell mit führenden Leerzeichen oder Nullen auffüllen)
Werte die geändert werden sollen, müssen dann wiederum in Strukturen z.B. CLIENTDATA oder PLANTDATA übergeben werden oder einer Tabelle MATERIALDESCRIPTION.
Aber das müsste Dir eigentlich beim Testen über die SE37 bereits aufgefallen sein.
Die in Deinem Scriptteil verwendeten Felder habe ich im BAPI nicht gefunden.

Ich bin allerdings weder der große SAP- noch der große Notes-Entwickler. Viel weiter kann ich Dir wohl leider nicht helfen.




Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz