Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
EkanshCapgemini
Active Contributor
Hi,

I started using smart controls a year and a half back and was surprised to experience that the mundane tasks of UI are handled so smoothly. Although I don't say that smart controls are the perfect go to choice for all scenarios but if you are ready to challenge yourself a little, it would add another arsenal in your kitty.

If you are using CDS views, it's fairly straight forward to add the required annotations but it's quite a  journey to add the similar annotations in SEGW based OData service. To change the label of property itself is a quite a bit of work, not to mention the annotation terms that you must remember. So I and my colleague devis134 started creating a class which helped us a lot in our projects.

We added methods for all the frequent use cases specially linked to smart filter bar and smart table in our class. Here is the link to the github repo for the class and sample code to use this class. You can copy the class code in source code based view of SE24.

It helps to serve the below cases:

  • Set a single or multiple properties as

    • filterable - true/false

    • updatable - true/false

    • sortable - true/false

    • creatable - true/false




  • Set display format for properties

    • date - to render datepicker control

    • time - to render timepicker control



  • Set as dropdown

    • to show a dropdown for a smartfield



  • Set as text

    • to set the description property for a ID field



  • Set an entity as media

  • Set a property as email

  • Set the unit of a property

  • Set label for a property

    • using hardcoded text - quick way

    • using SAP text



  • Set a filter as mandatory in filter bar

  • Set filter value restrictions

    • single value

    • multi value

    • interval like date range




Here are some samples on how we used it. Feel free to add more methods in this and send a PR.
    DATA : lo_odata TYPE REF TO zcl_odata_v2_annotations.

super->define( ).

CREATE OBJECT lo_odata
EXPORTING
im_model = model
im_vocab_anno_model = vocab_anno_model
im_service_name = 'Z_MY_SERVICE_srv'.


lo_odata->set_filterable(
EXPORTING
im_entity = 'MyEntity' " Entity Type
im_properties = 'FilterProperty1,FilterProperty2' " List of properties of the entity separated by ','
im_value = abap_false " Value for Annotation (Boolean)
).

lo_odata->set_updateable(
EXPORTING
im_entity = 'MyEntity' " Entity Type
im_properties = 'CreatedOn,ChangedOn,SentOn,CreatedBy,ChangedBy' " List of properties of the entity separated by ','
im_value = abap_false " Value for Annotation (Boolean)
).

lo_odata->set_display_format(
EXPORTING
im_entity = 'MyEntity' " Entity Type
im_properties = 'ChangedOn,SentOn,OpenedOn,ClosedOn,CreatedOn' " List of properties of the entity separated by ','
im_value = 'Date' " Value for display-format
).

lo_odata->set_as_text(
EXPORTING
im_entity = 'MyEntity' " Entity Type
im_property_key = 'Vendor' " Property Key
im_property_desc = 'VendorName' " Property Description
).

lo_odata->set_as_text(
EXPORTING
im_entity = 'MyEntityItem' " Entity Type
im_property_key = 'Material' " Property Key
im_property_desc = 'MaterialDesc' " Property Description
).

lo_odata->set_as_dropdown(
EXPORTING
im_entity_set = 'SendMethodSet' " Entity Set
im_entity = 'SendMethod' " ( Optional ) Entity Type
im_property_key = 'DomvalueL' " ( Optional ) Property Key
im_property_desc = 'Ddtext' " ( Optional ) Property Description
).

lo_odata->set_as_media(
EXPORTING
im_entity = 'ExcelFile' " Entity Type
im_property_mimetype = 'MimeType' " MimeType Property Key
).

lo_odata->set_label(
EXPORTING
im_entity = 'MyEntityItem' " Entity Type
im_property = 'Order' " Property Key
im_label = 'Ordered Quantity' " Label Text
).

 

Regards,

Ekansh

 
4 Comments
Labels in this area