Hi Jeff,
You are correct, you cannot just call the Update screen via a procedure call. It requires specific fields on the URL (eg in SetValues).
But you also want it to be a popup, so its a bit more involved.
In the ValidateAll embed point add:
lbidv = p_web.AddBrowseValue(lParentBrowse,lFile,lKey)
p_web.Script('ntd.push('''&CLIP(lProcedure)&''','''','''&CLIP(lTitle)&''',1,'&lAction&',null,'''&CLIP(lCalledFrom)&''','''&CLIP(lbidv)&''','''&CLIP(lParams)&''');')
In the Popup embed point add (as its at login, you might need to add it to your pageheader procedure):
lProcedure(p_web,Net:Web:Popup)
Where
lParentBrowse your nearest browse (for login use your main window)
lFile is you user file
lKey is your unique user key
lProcedure is the procedure name of your change
lTitle is the text title of the popup window
lAction is 2 for change and 1 for insert
lCalledFrom is the procedure you are calling from
lbidv is the special code needed when in change mode
lParams is any extra URL style parameters you want to pass
Explanation
Some of this may be very obvious, so please ignore.
p_web.Script places javascript into the ajax response once the login is complete (its a great way to control program flow after a window end/closes)
ntd.push is NTs internal javascript for opening a popup window.
lProcedure(p_web,Net:Web:Popup) places the "ajax stub" into the page to allow a popup window to work.
p_web.AddBrowseValue generates the obsticated sysid that the udpate process need to find the record in question.
Hope that helps.
Regards
Bill