Splitte das Ganze doch mal, vielleicht wird es dann klarer
Lege in der Funktion doch nur das PRDoc an, schreibe dort die gewünschten Werte rein, speichere es und gebe es zurück. Hierbei am besten das Hintergrunddokumet Deines UI Docs reingeben (doc.Document)
Das sieht dann in etwa so aus
Private Function CreatePR(_
parrPositions As Variant, _
pdoc As NotesDocument, _
phazard As Boolean) As NotesDocument
On Error GoTo lblErrorHandler
lblDeclarations:
Dim session As NotesSession
Dim dbCurrent As NotesDatabase
Dim dbBF As NotesDatabase
Dim docPR As NotesDocument
Dim first As Long
dim last As Long
Dim index As long
Dim server As String
Dim file As String
Dim sPrefixNF As String
Dim sPrefixPR As String
Set session = New NotesSession
Set dbCurrent = session.CurrentDatabase
If Left(dbCurrent.Title,3) = "***" Then
server = "EuropeNotesDev1/Servers/XXX"
file = "Firma\IT\DEV_Purchase.nsf"
Else
server = dbCurrent.Server
file = "XXX\Purchase.nsf"
End If
Set dbBF = session.GetDatabase(server, file, False)
Set docPR = New NotesDocument(dbBF)
Call docPR.ReplaceItemValue("Form", "PReq")
Call docPR.ReplaceItemValue("UNIDLinkToNachforderung", pdoc.Universalid)
Call docPR.ReplaceItemValue("Currency3B", "EUR")
first = LBound(parrPositions)
last = UBound(parrPositions)
For index = first To last
sPrefixNF = "P" & parrPositions(index)
sPrefixPR = "_" & CStr(index+1)
Call docPR.ReplaceItemValue("QTY" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "Mge")(0))
Call docPR.ReplaceItemValue("DESC" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "ArtBeschr")(0))
Call docPR.ReplaceItemValue("PRTNO" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "ANR")(0))
Call docPR.ReplaceItemValue("LESTUNITPRICE" & sPrefixPR, pdoc.GetItemValue(sPrefixNF & "EP")(0))
Next index
Call docPR.Save(Tue, False)
lblEnd:
Set createPR = docPR
Exit Function
lblErrorHandler:
Print Err, Error &" in " & GetThreadInfo(1) & "/" & Erl
Goto lblEnd
End Function
Anschließend erstellst Du Dir eine neue Sub, die den Rest erledigt (z. B. Sub CreateLink)
Dort dann: UIDoc schliessen (Speichern nicht vergessen), Hintergrund Dokument davon holen, die Felder setzen und anschließend wieder als UIDoc öffnen (EditDocument).
Beispiele hierfür gibt es hier im Forum einige, suche einfach mal nach "reopen".