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: 
6,883
Hello Everyone,

Hope you are doing well and safe too ?

Hyperlink helps us to navigate from one screen to another screen hasslefree.
Saving a bookmark for google URL saves your time & efforts to re-enter the URL every time.
Now just imagine having a dynamic URL that takes you to a execute defined URL with defined parameter(s) without entering any details. Amazing!  right.

Let's Get Started.

In this development, we will use the core concept of SAP C4C Mashup and Field type Link to create a clickable dynamic URL field.

Process Flow to create Dynamic hyperlink


We will discuss process flow steps one by one with an example.

  1. Prerequisites

  2. Create an Embedded component

  3. Adding fields into the EC

  4. Create an event to fetch existing value for the field

  5. Adding a first half of the link (Can be done in many ways)

  6. Adding field as a Link

  7. Opening Final Link

  8. Adding EC to Account TI

  9. Testing






Step 1: Prerequisites



  1. Login into the SDK. Select your solution from the “My Solutions” window.Make sure you are using the latest version of SDK






Step 2: Create an Embedded component



  1. Click on 'Add New Item' from Solution Explorer

  2. Select 'Embedded Component' from the list and specify the name as 'Dynamic_Fields'

  3. New EC 'Dynamic_Fields' is added in our Solution


 




Step 3:Adding Fields in EC



  1. Double click on newly create EC to open it in UI Designer

  2. Navigate to 'Data Model' tab right-click and select 'Add Data Structure' rename it as 'Inport'
    Right-click on the structure and add the field 'In_Address' as shown in the below screenshot.

  3. Create additional field under 'Root' as 'Lv_Address' to hold address value



adding a field in the data model







Step 4: Create an event to fetch existing value for the address field



  1. 1. Navigate to 'Controller tab', Right-click on 'Inport' and select 'Add Inport'

  2. 2. Click on 'Add Parameter' button and bind it with field 'In_Address' created at Step 3.2

  3. 3. Click on the 'Properties' tab and change 'RequestFireOnInitialization' value as 'True'


Before
FireOnInitialization default

After.

After setting FireOnInitialization = True

4. In the Same 'Properties' tab, under the 'Events' section.
Add new 'OnFire' event, name it as 'OnInitialization' Event

Adding Event


 

5. Click on 'Add Operation' and select 'BOOperation' from the list.

now on 'Add parameter' Input the parameter name and select the variable created in step 3.2 for binding.


 


 




Step 5: Adding a first half of the link (Can be done in many ways)



  1. Add field as 'FinalURL' and 'URL1' in datamodel of the EC

  2. Data Field FinalURL will be our final URL which we will fire at the end using an event handler

  3. URL1 contains the static part of our URL,
    add a default value for 'URL1' field as 'http://maps.google.com/?q='   this is the google map URL,
    now static part of URL is done, let's move to construct Dynamic URL.






Step 6: Adding field as a Link



  1. Open 'Designer' window  and  'Data Browser/Data Model'

  2. Drag & Drop the field which contains our value ( in our case it is field Lv_address) from Data Model to Designer Screen.

  3. Select a field on UI Designer and navigate to 'Properties' tab  and change display type as 'Link' to make our field clickable
    4. Click on Event and select 'New Event Handler'
    5. Input a name for new event as 'OnClick',
    Click on 'Add Operation' and select 'Script' from the list.

    6. Add below Ruby script code in 'Source' textbox as shown below


 $data.FinalURL = $data.URL1 + $data.Lv_Address​

What this code will do:
URL1  is our static part of URL
Lv_Address will hold the address value of the customer as configured in Above Steps 3 and 4.
This script will concatenate the Static part and current Address into the variable 'FinalURL'




Step 7: Opening Final Link


The above step will create our final URL as a concatenation of  URL1 and Address value at runtime.

Now we have a complete URL with us, Let's open it from the same 'OnClick' event as the user has already clicked on Hyperlink,

  1. Click on 'Add Operation' select 'OpenLink' from the list and select the 'FinalURL' field for binding as shown.



Now our embedded component is ready.

Let's attach it to the Account Screen.




Step 8: Adding EC to Account TI



  1. Open Account TI, Click on 'Configuration Explorer' and '/BYD_COD/SalesOnDemand/Account/UI/COD_Account_TI.TI.uicomponent' double click on Account TI to open it in the designer.



      2. Open 'Extensibility Explorer' tab click on 'Undefined' and then click on 'Add View with Embedded Component' to add our component on Account TI


3. Give new facet/tab name and select our Embedded component from the list


4. Click on 'Bind' Select 'Address_Info_Out' as an Outport from COD_Account_TI outport and bind it to our inport and field as shown in the below screenshot.


now the configuration is done.

Click on the 'OK' button.

5. Click on the 'Save and Activate' button.




Step 8:Testing



  1. Login into the UI and navigate to the Customer->Account screen


2. Open an account and navigate to our newly added facet 'Dynamic Fields'
The account address is correctly displayed on the screen.


3. Click on the newly created Address hyperlink


           4. Google map is opened with the correct address (Available from Account Address tab).


Conclusion: This way we can create Dynamic Hyperlink without using mashup or creating any of the mashup configuration required.

Regards,
Kartik Metkar
6 Comments
Daniel_KASIMIR
Participant
0 Kudos
Very interesting approach. I created our needed hyperlinks with a mashup, which is quite okay. But you alwas see the mashup laoding.
Thanks Daniel, yes mashup is good approach but with this mentioned approach we get that required space to manipulate the data before launching our final URL.

Trust me it's very much needed in few business scenarios.
With this Approach: Number of SDK objects Created : 1

With Mashup Approach: Number of SDK objects Created : 4

We all know, Lighter the solution (in term of # Object )  easier to deploy.
DamoH
Participant
0 Kudos
Hi,

Very informative.  How do we create a dynamic hyperlink ( URLs ) for work centre navigation? e.x. create a work centre to navigate a dynamic link or URL on a click.



Regards

Damo
Thanks and that's good Idea Damo, to launch Custom WC,
But how do you want to launch it? for now i will create dynamic URL based on some user field value like user name, address or gender.

Will prepare a blog and post it soon if everything goes well (I have limited bandwidth, considering my current project work ).

Will keep you updated.

Kartik
S0019221080
Explorer
0 Kudos
Hi Kartik,

 

I've tried your approach and it works perfectly.

I was wondering how you would use your approach if you are working with several environments.

The static URL-part would be different for development than production. Imagine you want the URL to work on both development as production, that would create the need to change the static URL-part based on the environment.. Any thoughts on how this could be achieved?

 

Kind regards,

 

Kristoff
Labels in this area