I would like to share with you some of my recent experience with UI API ...
I was trying to forbid the user to modify the discount (both in % or in amount) in a sales order footer.
I first thought that it would be a difficult task to do as those are system fields that appeared on the form. I reported to the UI 2004 help file and start seeking restrictions:
What is mentionned is:
- "You cannot set the item's Editable property to Yes." (Item object)
- "You cannot set this property to True for items of system forms. In addition, if the item is in fucus, you cannot set it to False" (Enabled property for Item object)
Please note that I did not want in anyway to alter the system logic related to the calculation of the discount.
On the form type 139, discount percent is item 24 (databound to field ORDR.DiscPrcnt) and value is item 42. Both are enabled and visible so I thought it was ok (how lucky to be safe from sys forms restrictions 😉)
Thus I tried the following piece of code:
Public Shared Sub ChangeSysItems(ByRef oForm As Form) 'Deactivating the field for discount percentage on the footer of the document If Module1.oInit.bAllowDiscountChange = False Then oForm.Items.Item("24").Enabled = False oForm.Items.Item("42").Enabled = False ElseIf Module1.oInit.bAllowDiscountChange = True Then oForm.Items.Item("24").Enabled = True oForm.Items.Item("42").Enabled = True End If End Sub
But this is not working (of course I tripple check that they were not on focus). I try on another sys field (the field Remarks):
oForm.Items.Item("16").Enabled = False
and this works well.
Funny enough you can hide those fields:
oForm.Items.Item("24").Visible = False oForm.Items.Item("42").Visible = False
But why cannot you disable them?
PS I am working with SAP Business One 2004 A, patch 23.