Currency example – how Smart field works
- Part1 – this blog
- Part2 – Smart field with value help
- Part3 – Smart Field with Smart Link
- Part4 – How Smart table works
What is smart field
According to SAP help, “Smart controls are a specific category of SAPUI5 controls that have some special features in addition to the standard SAPUI5 features and thus make it easier to use the control in certain scenarios. One important building block of smart controls is the SmartField control that, depending on the OData metadata defined, allows you to renders other controls and, for example, define fields with certain attributes based on the metadata.”
All the source code of this example could be found from this link.
In xml view definition, only one SmartLabel and one SmartField are declared.
However, in rendered UI, there is additional currency field displayed as well. This is the meaning of “Smart”.
How SmartField works
1. SmartField which is bound to Price field is rendered as usual:
2. The mock data, Products.json, will be loaded by Mock server and once it is available, success callback is triggered.
3. In callback, setElementBindingContext will trigger initialization logic of SmartField:
4. Here ODataControlFactory will try to get all sap defined annotation from OData Metadata,
The picture above highlights some of sap annotations. For a complete list of them, please refer to this link.
Parse logic of all annotations could be find from AnnotationHelper.get<Annotation name>. The example below introduces how sap:unit annotation is parsed.
The string “CurrencyCode” is returned:
At this time, metadata for currency UI element is available and it is ready for creation:
5. UI element for currency code display is created here:
And CSS class sapUiCompSmartFieldUnit is added:
Thanks for this Jerry! As always your blogs are highly infomative.
Can I have a zip file for this? I have downloaded from samples but it is not working.