Update UDT from CI_Item

SOLVED

After reading a few post about updating UDT's from scripts I am wondering if my events are wrong or do I need to SetKey before SetValue?  In the debug I couldn't get any return values, so I am guessing my events are wrong, I've tried a PRE-WRITE and a POST-READ on the CI_Item. 

If oSession.CompanyCode = "ZZZ" then

sIC = ""
sUK = ""
sVENDOR=""
oUDT=0

retVal = oBusObj.GetValue("ItemCode$", sIC)
r=oScript.DebugPrint("IC: " & sIC)
retVal = oBusObj.GetValue("UDF_UNIQUEKEY$", sUK)
r=oScript.DebugPrint("UK: " & sUK)
retVal = oBusObj.GetValue("PrimaryVendorNo$", sVENDOR)
r=oScript.DebugPrint("VENDOR " & sVENDOR)

IF sVENDOR = "0001904" then

Set oUDT = oSession.AsObject(oSession.GetObject("CM_UDTMaint_bus","PO_UDT_ROG_IMPORT_ITEM_MAPPING"))

retVal = oUDT.SetValue("UDF_SANMAR_ITEMCODE$",sUK)
retVal = oUDT.SetValue("UDF_SAGE_ITEMCODE$",sIC)
retVal = oUDT.Write()

End If
End IfIf oSession.CompanyCode = "ZZZ" then

sIC = ""
sUK = ""
sVENDOR=""
oUDT=0

retVal = oBusObj.GetValue("ItemCode$", sIC)
r=oScript.DebugPrint("IC: " & sIC)
retVal = oBusObj.GetValue("UDF_UNIQUEKEY$", sUK)
r=oScript.DebugPrint("UK: " & sUK)
retVal = oBusObj.GetValue("PrimaryVendorNo$", sVENDOR)
r=oScript.DebugPrint("VENDOR " & sVENDOR)

IF sVENDOR = "0001904" then

Set oUDT = oSession.AsObject(oSession.GetObject("CM_UDTMaint_bus","PO_UDT_ROG_IMPORT_ITEM_MAPPING"))

retVal = oUDT.SetValue("UDF_SANMAR_ITEMCODE$",sUK)
retVal = oUDT.SetValue("UDF_SAGE_ITEMCODE$",sIC)
retVal = oUDT.Write()

End If
End If

Parents
  • 0

    Been trying several different ways but only getting this far in the trace window on a column post validate and a post write event.

    So I am not getting to the message box, I should have all rights and under Roles all the UDT's are checked off.  Would the way a UDT is setup not allow for access through scripting?

    oUDT = oSession.GetObject("CM_UDTMaint_bus","PO_UDT_ROG_IMPORT_ITEM_MAPPING")
        r=oScript.DebugPrint("After GetObject oUDT ")
        
            If oUDT <> 0 then
            
            Set oUDT = oSession.AsObject(oUDT)
            else
            
            retVal = oSession.AsObject(oSession.UI).MessageBox("", "Access to PO_UDT_ROG_IMPORT_ITEM_MAPPING is required for the ??? script to work.")
            r=oScript.DebugPrint("After AsObject oUDT ")        
    
            exit sub
    
            retVal =oUDT.SetKeyValue("UDF_SANMAR_ITEMCODE$", sUK)
            r=oScript.DebugPrint(retVal)
    
                If retVal = 2 then
        
                'retVal = oUDT.SetValue("UDF_SANMAR_ITEMCODE$",sUK)
                retVal = oUDT.SetValue("UDF_SAGE_ITEMCODE$",sIC)
                retVal = oUDT.SetKey()

    Would I be better off just trying to update the fields in SQL instead of through BOI?

  • 0 in reply to jland47

    The code should look like this:

    retVal = oUDT.SetKeyValue("UDF_SANMAR_ITEMCODE$", sUK) 
    retVal = oUDT.SetKey()

    If retVal = 2 then
           retVal = oUDT.SetValue("UDF_SAGE_ITEMCODE$",sIC) 

           retVal = oUDT.Write()

    End if

Reply Children
No Data