Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
jie_deng
Product and Topic Expert
Product and Topic Expert
15,649

Update:


Composite examples (Story Header, Navigation Menu, Collapse_Lane_Chart, Collapse_Lane_Table and Collapse_Lane which i am demonstrating in my below demo ) are now published in SAP Analytics Cloud Community Github. You can download them here.

 

I am happy to share that Composite as reusable widget now is available with QRC4/2023 release in SAP Analytics Cloud!

 

 

 

What is a composite?


A composite is a combination of widgets with configured data and scripting elements, which can be reused across optimized stories.  It can be a corporate header or footer, page navigation menu, some customized dialogs or even a pre-defined chart. These composites are saved as artefacts in SAP Analytics Cloud file repository and can be transported through different tenants.

To be more concisely, composites are modular, reusable building blocks that can be plugged into any optimized story.  When  the story is run by the end user, it is dynamically assembled by leveraging the newest version of composites in it.  With that, SAP Analytics Cloud is opening a brand new option to enable parallel and modular development, efficiently improve the development efficiency and reduce maintenance effort.

 

 

What are the benefits?

 

Re-usability


There are certain elements of your stories that you need to create over and over. Like a story header which contains text and a company logo, or a dialog which you can select the time period and organization unit. In the past, you need to copy and paste these header and dialogs into different stories. Or you created a template which contains header and dialogs. But if the company logo changes or another icon needs to be added to story header, then you need to manually apply these changes one by one to each story because the change of template does not automatically take effect to the existing stories.

With composite, it is no longer the case. You only need to update the change in composite, then you are done! The changes in composite can be automatically be taken over by all stories! You no longer need to manually update story one after another!


Example: Story header defined as composite


 

Standardization


Imagine, if you leverage the composite in your story, then all your stories have the same header, dialog, navigation menu, collapse lane etc. This extremely helps you ensure that  the stories in your company have the same look/feel and the same workflow for story consumers. They no longer need to learn how to use different dialogs, different navigation menu etc. because all the dialogs across different stories have the same function, the same UX workflow based on composites.

Through standardization you can provide the corporate identity, consistency and easy-to-use aspect for story consumers. It can reduce the learning curve for story consumers to improve the working efficiency.

Example: Collapse Lane with Charts defined as composite to ensure the standardization


 

Modular/Collaborative Development


With the composite concept, now you have the possibility to break down the story to different parts and assign them to different story designers/developers. They can work parallel on their own composites. All the updates made in the composites, can automatically take effect in the main story.  Composites opens the possibility that multiple people can work collaboratively in parallel on the same project.


 

QRC4/2023 Release Feature Scope


With QRC4/2023 release you are receiving the below features for composite:

Creating a composite:



    • via story module in tab composite

 

    • Define Interface Functions and Events to be able to communicate between composites and stories

 

    • Save composite as artefact in SAP Analytics Cloud file repository



Consuming a composite in Story:



    • Import composite into design time

 

    • communicating with composites via interface functions and events



Composite in general



    • Composite has its own privilege. If custom role is leveraged in your company, don't forget to assign the composite privilege to these custom roles.

 

    • Story features like filter, bookmark, theme etc can be applied to the widgets inside composites



Current Limitation:


please refer to the restriction document here

 

Demo


This video demonstrates the feature highlights of composite:



 

What's the next?


With the above blog, i hope you understand  the benefits and feature overview about Composite. With the next blog, i am going to dig into more details and guide you to build a composite 🙂 Please stay turned!

 

31 Comments
yuanga
Explorer
Thanks Jie,

 

Great demo!

Would you mind sharing a copy of the composites used in your demo please?

 

Regards

Gaby
ronaldvissers
Discoverer
hi Jie,

Thank you, we like this addition.

Can you please share me the link to where we can find information on how to create this "collapse" Lane you are writing about, as I cannot find it.

And yes a demo file would be nice to have.

Thank you.

 

Regards,

Ronald
mikhailsychev
Newcomer
Hi Jie,

is it possible to bind different models to different instances of the same composite? E.g. create a kind of tiles for different models? Or any way we have to use a fixed model inside the composite?

BR

Mike

 

 
mfoeken
Active Contributor
Hi Jie,

Great addition! Still quite some limitations but for an MVP it's quite nice, congrats! One question though: what permissions do I need to set to be able to consume the composite on a folder level? And what would be best practices to keep track of all composites that will be created? Some kind of catalog function? Any ideas about this?

Kind regards,
Martijn van Foeken | Interdobs
jie_deng
Product and Topic Expert
Product and Topic Expert
Hi Gaby,

We are going to publish the examples in Github. Once it is published, i will add this information into my blog!

thank you

Jie
jie_deng
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi Ronald,

thanks for the input! With the next blog i am going to guide you to create a collapse lane as composite.

stay tuned!

tahnks

Jie
jie_deng
Product and Topic Expert
Product and Topic Expert
Hi Martijn,

This is the first phase of delivery for composite. We will further work on composite topics and remove  the current limitations  in the next couple of quarters.

On the user level, you need to first assign the composite privilege to users/teams (read, write, delete etc).

On the folder level, you just need to assign the folder permission to users, then the composites inside the folder also apply the permission.

You can e.g.

  • create a folder for some general/cooperate composites (like header, footer etc) and give the privilege of this folder to all story designers/developers.

  • create different folders for business area related composites (like pre-defined chart/tables etc) and then give the privilege to different users/teams


Currently the Composite is not yet supported in Analytics Catalog. Please submit an influence request for this topic and describe your desired workflow.

Thank you

Jie
jie_deng
Product and Topic Expert
Product and Topic Expert
Hi Mike,

Binding different model in different stories is not supported with this QRC 4 release. But it is possible in QRC4 release to bind different measure/dimensions/filter etc. based on the same model in different stories (by leverage script APIs).

We are planning to provide the model repointing for composite (binding different models in different stories) with QRC2/2024 release.

thank you

Jie
paul_mahoney5
Discoverer
0 Kudos
Hi Jie,

Can you supply the URL for your GitHub site?

 

Thanks,

Paul
marius_margraf
Participant
0 Kudos
Hi Jie,

could you please give me an advice for the following problem:

 

I would like to encapsulate logic into composites. Is it possible to manipulate a table (e.g. set the number of decimal places) which is not part of the composite (but in the story) with logic within the composite?

 

I have tried this by giving the composite a function with a parameter with the type table and then call this function from the story. But it seems like this is not working.

 

Thanks for your advice,

Marius
vera_ju
Explorer
0 Kudos
Hi Jie,

if I see it right not all APIs for the composite is available now? I don't get "setTitle" for example.



 

Regards,

Maren
JefB
Active Contributor
0 Kudos
Hi Maren, you have to add these functions (yourself) in the composite first. I see in your screenshot that you added a 'function1' already.
jie_deng
Product and Topic Expert
Product and Topic Expert
jie_deng
Product and Topic Expert
Product and Topic Expert
jie_deng
Product and Topic Expert
Product and Topic Expert
Hi Maren,

Now you can download the composite samples that i used in my demo: https://github.com/SAP-samples/analytics-cloud-datasphere-community-content/tree/main/Sample_Composi....

thank you

Jie

 
DiegoCurci
Explorer
0 Kudos
Hi Jie,

Firstly, I want to thank you for sharing this content.

We first saw the new composites 1-2 weeks ago in a video on the new release features and immediately started creating our own composites with a corporate header, lanes and especially the collapsible sidebar composite.

If came to be a little challenging with all the code and styling but we managed to create these objects however not as nice as yours.

We were super ecstatic to find that the package containing this content has been released but I personally am having trouble installing the package from Content Network and File System.

As an Admin, I'm unable to upload any this package file from Content Network. No option available however, I am able to select the file for import using the File System option.


I get an error: Illegal File



Would appreciate any assistance.

 

Best,

Diego Curci
JefB
Active Contributor
Hi Diego,

It's a confusing process, but you first have to go to Transport > Export and stay in the 'Content Network Storage' tab. There you should see an upload&download icon. First upload the .package file in there.

Only then navigate to Transport > Import screen to find your package and import it in your system.

Kind regards,

Jef
DiegoCurci
Explorer
Hi Jef,

I can't thank you enough for pointing me in the right direction. I tried countless ways and couldn't find how to get this running. That absolutely did the trick.

Note: You first have to go to Transport > Export and stay in the 'Content Network Storage' tab but the upload&download options will only appear once you have clicked the My Content folder.

Thanks again. I was going nuts. You're a lifesaver.

Best,

Diego
paul_mahoney5
Discoverer
0 Kudos
Hi Jie,

 

Can you tell us where the custom widgets used in your demo are located on Github?

 

Thanks

Paul
vera_ju
Explorer
0 Kudos
Hi Jie, hi Jef,

thanks for sharing and explanation.

Regards,

Maren
david3030
Explorer
0 Kudos
Hie Jie,

Thank you to the whole team for this magnificent early Christmas gift! I have already started to integrate it into my projects! I'm already looking forward to being able to generate composites during run-time and especially being able to do data repointing! Bravo for the work!
zyong
Discoverer
0 Kudos

Hi jie.deng 

 

I have created a header composite as shown in the figure below.

At first, I am able to insert this composite to the optimized canvas story for a few times. But, recently I am not able to insert it into the story, I tried to insert the composite by drag and drop and also from the insert panel. Unfortunately, both ways did not work, as the composite still not inserted. Is this a technical issues related to the composite?

 

I would appreciate a lot if you could help out on this issue. Thanks.

 

Regards,

Zhi Yan

 

DiegoCurci
Explorer
0 Kudos

Hi Zhi,

Are you following the steps below?

  1. Open your story
  2. Import the composite

 

3. Drag and drop from the asset on the left

zyong
Discoverer
0 Kudos
Hi Diego,

 

Thanks for the reply. Yes, I have followed the steps you mentioned. I have created a few more composites (consists of charts and table) and tested them out in the story, all of them are working fine (as they can be imported and inserted to the story), except the one I mentioned as per my last comment (the header composite).

In that case, the header composite I created can be imported to the story, but when I tried to drag it (insert) to the story, it just couldn't be inserted as it doesn't show the inserted composite in the story. (eg: I tried to insert it to a blank story, the story remains blank after inserting the composite) As per my last comment, I was able to insert the header composite to some pages the story, but in the recent few days, I was not able to do this so.

So, I was wondering is it a technical problem behind this, or is there some restrictions which I accidentally applied to the composite which lead to this problem?

 

Regards,

Zhi Yan
jie_deng
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi Zhi Yan,

I assume that you are adding composite into a canvas page, correct?

On canvas there are no limitations of importing composite into story or adding composite to story canvas.

On responsive page you will not be able to import composite at all because composite in responsive page is not yet supported.

You can add composites to canvas either via drag&drop, or via "+" button:


If these 2 options are not working for you, please open an OSS ticket that we can investigate it.

thank you

Jie
vera_ju
Explorer
0 Kudos
Hi Jie,

I implemented your examples.

But the only question is, how does the right link (URL) mean for the Font "SAP-Icons" (arrorw, fullscreen).

If I understand it right, we must add this URL on System->Administration->Default Apprearance under Story - Fonts.

For example  - I found the SAP Icons: https://sapui5.hana.ondemand.com/sdk/test-resources/sap/m/demokit/iconExplorer/webapp/index.html#/ov...

but it doesn't work.

 

Thanks and Regards,

Maren

 
ams547
Discoverer
Hi Jie,

Thanks for the details!  A few questions...

When the composites are available on responsive pages in Q2'24, will the widgets inside the composite also be responsive in nature?  If not, has this been considered?

Specifically, if I create a simple composite with one chart inside, currently the chart has a fixed size.  While the composite/chart is reusable, it's not flexible enough to be used across stories that require different proportions.  For example, one story may require it to be 200x200 pixels, and another 250x325 pixels.

Also, is it true the only way to enable a story consumer to dynamically change the view of chart within a composite (e.g. measure/dimension input control) would be to first build some custom function inside the composite, then in the story add a control with additional scripting to communicate with the composite and act like an input control?  Or another option?

Best,

Aaron
Ashish_Farkya
Participant
0 Kudos

Hi jie.deng

 

Thanks for the detailed blog and very helpful details in comments. I've been using SAP BusinessObjects BI Platform for over a decade and have found "Shared Elements" very useful in developing reports that refer to a centralized widget/component in BOBJ repository, I feel "composite" in SAC are similar to "Shared Elements" in WebIntelligence. 

Would you mind sharing if you agree to the above statement comparing Shared Elements in WebI vs Composite in SAC.

Any clarification / guidance on this aspect would help taking WebI use cases (that use Shared Elements) to SAC. 

~ Cheers

Ashish

MartinS1
Explorer
0 Kudos

Hi All,

I have one composite, which I want to use in two different pages. Composite contains some functions. If I added composite to each page. One composite lost their functions. Can you someone explain me, why?

 

MartinS1_0-1722037635623.png

Thanks a lot.

 

M.

sfilreis_18
Explorer
0 Kudos

Is it possible to have a text box where you can add Dynamic Text in the composite widget ? 

yuanga
Explorer
0 Kudos

@jie_deng , could you please have a look at @MartinS1 's question? I also want to use a navigation pane composite across the pages in story.  Thank you.