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.