Quantcast
Channel: SAP BusinessObjects Design Studio
Viewing all 662 articles
Browse latest View live

BI2014 Design Studio 1.3 Planned Updates

$
0
0

This past week at BI 2014 we learned more about what is coming in Design Studio 1.3.  I discussed some of this here at BI 2014 Design Studio and Dashboards - Looking to the Future but I didn't have high quality screen shots.

 

Given the feedback of the low quality of my pictures at BI 2014, I decided to cut and paste slides from a DSAG webinar on Design Studio, combining it from notes at BI 2014.  Note that the usual legal disclaimer applies that things in the future are subject to change. See below:

 

1fig.PNG

Figure 1: Source: SAP

 

 

Figure 1 shows BW Integrated Planning support.  At last year's TechEd, SAP explained this was the number one rated feature on Idea Place for Design Studio.  This week SAP relayed that charing extensions and configuration properties were enhanced.  Bookmarking was also planned to be delivered in 1.3

2fig.PNG

Figure 2: Source: SAP

 

Planned for Design Studio 1.3 is HANA native deployment.  So starting with Design Studio 1.3 you can use Design Studio locally, on BIP, on BW, and HANA.

 

3fig.PNG

Figure 3: Source: SAP

 

As discussed Monday at BI 2014 more CVOM properties are exposed as shown in Figure 3.  You can see font weight, colors on the axes, and a long list on the general properties.

4fig.PNG

Figure 4: Source: SAP

 

Figure 4 shows conditional formatting for charts so you can configure threshold for charts, changing colors.

5fig.PNG

Figure 5: Source: SAP

 

Figure 5 shows that scaling factors will be supported in Design Studio 1.3.  At BI 2014 I don't recall that much was discussed on Lumira CVOM SDK integration.

6fig.PNG

Figure 6: Source: SAP


Figure 6 shows improvements in variable prompts.  You can set the maximum value displayed in the right of Figure 6. 


There was a discussion whether you should really be using variables in a dashboard at BI 2014.

7fig.PNG

Figure 7: Source: SAP


Figure 7 shows support for bookmarking, which was also discussed at Las Vegas TechEd last year.


Personalization is supported, allowing you to save your own views of the Design Studio application.

8fig.PNG

Figure 8: Source: SAP


Figure 8 shows more flexible scripting options



Via twitter, more upcoming scripting options are mentioned for 1.3 :


We also saw a recording of a Design Studio 1.3 demonstration:

9figdemo.PNG

Demonstration of Design Studio 1.3


For more information and more opportunity to ask SAP questions join ASUG May 6 for this webcast: ASUG.com - Events


Join us at ASUG Annual Conference June 2nd for the ASUG pre-conference also includes Design Studio:

Jump Start ASUG Annual Conference SAPPHIRE with a Pre-Conference Session - Back and Better than Ever

Register Today



Building (some) context menu functionality in Design Studio

$
0
0

Whereas Andrew Fox talked in his blog (What is the future for Dashboards created by the mythical "Business User?")

about the adaption of Design Studio as the successor for Dashboards aka Xcelsius, there is also a big role to play for Design Studio as the successor for the BEx Web Application Designer.

In the future directions of the Design Studio roadmap, closing the gap with BEx Web is listed, among features as context menu, RRI, favorites and broadcasting, with only favorites expected in the DS1.3 version. In the case that is required to do an upgrade from BEx WAD 3.5 front-end to Design Studio, there is thus a challenge to meet.

 

In this blog I report on some ideas we used to close the gap.

 

First of all, the functionality is part of a template we use as a base for all the WAD reports to convert. The scripting is made generic by using BEx query metadata that is stored in a DSO and InfoObjects. The idea is similar to the approach Dirk Mayrock used in Internationalize DesignStudio Applications by reusing RSBEXTEXTS table from BEx WAD

 

Properties

So to change the properties of characteristics in a crosstab, it is necessary to populate a dropdown box with the characteristics that are used in the crosstab. Using the script:

DS_METADATA.setFilter("ZDSDDWN", "X");

DS_METADATA.setFilter("ZDSRAP", ZDSRAP);

DS_METADATA.setFilter("ZDS_DS", "DS_ANA_TAB1");

DROPDOWN1.setItems(DS_METADATA.getMemberList("ZDSKENM", MemberPresentation.EXTERNAL_NONCOMPOUNDED_KEY, MemberDisplay.TEXT, 150));

The first statements are used to select the proper subset of infoobects options. The last statement fills the dropdown box with values like:

dropdownbox1.png

 

To change to representation of the characteristic (text or key), a dropdown box is offered to the user where the characteristic can be selected, and by choosing a radiobutton, the display changes. The radio button has the following ‘OnSelect’ code:

var RB = RADIOBUTTON1.getSelectedValue();

if (RB == "K")  { DS_ANA_TAB1.setMemberDisplay(DROPDOWN1.getSelectedValue(), MemberDisplay.KEY); }

if (RB == "KT") { DS_ANA_TAB1.setMemberDisplay(DROPDOWN1.getSelectedValue(), MemberDisplay.KEY_TEXT); }

if (RB == "T")  { DS_ANA_TAB1.setMemberDisplay(DROPDOWN1.getSelectedValue(), MemberDisplay.TEXT);      }

  if (RB == "TK") { DS_ANA_TAB1.setMemberDisplay(DROPDOWN1.getSelectedValue(), MemberDisplay.TEXT_KEY); }

 

A similar functionality can be created for activating/deactivating hierarchies.  When more script options will become available, like switching totals on/of, these can be added as well.

 

Filter

Another important function is the filter option in the context menu. For this the ‘OnSelect’ option of the crosstab is used. A popup appears that lists all the selected characteristics in the rows or columns, with the filter value. Using check boxes it is possible to select the filter values that need to be kept.

plaatje2.png        plaatje3.png

 

 

On the background the following happens:

A dropdown box is filled with elements as:

plaatje4.png

 

 

In the script, local variables are filled with the select value in the cross tab and the description of the characteristic:

DROPDOWN2.setSelectedValue("V01");

var A01 CROSSTAB1.getSelectedMember(DROPDOWN2.getSelectedText()).text;

DROPDOWN2.setSelectedValue("T01"); var T01 = DROPDOWN2.getSelectedText();

 

This code is repeated for V01…Vxx, as much as you need. In our general template we have 20 placeholders. With the local variables the checkboxes in the popup are populated:

if ( A01 != '' ) {CH_CONTEXT01.setVisible(true); CH_CONTEXT01.setChecked(true); i = i + 30; CH_CONTEXT01.setTopMargin(i);}

if ( A02 != '' ) {CH_CONTEXT02.setVisible(true); CH_CONTEXT02.setChecked(true); i = i + 30; CH_CONTEXT02.setTopMargin(i);}

CH_CONTEXT01.setText( T01 + ': ' + A01 );

CH_CONTEXT02.setText( T02 + ': ' + A02 );

 

When the filter button is pressed, the filters are set using a similar procedure:

DROPDOWN2.setSelectedValue("V01");

       if ( CH_CONTEXT01.isChecked() == true  )

       {      DS_ANA_TAB1.clearFilter(DROPDOWN2.getSelectedText()); DS_ANA_TAB1.setFilter(DROPDOWN2.getSelectedText(), CROSSTAB1.getSelectedMember(DROPDOWN2.getSelectedText())); }

 

With the command  removeDimension(DROPDOWN2.getSelectedText()) it is possible to remove the characteristic from the crosstab as well.

 

RRI

Finally we also managed to use the local variables in a report to report interface kind of way. For the receiving report global variables XV01..XVxx need to be created as placeholders for the filter values. We realized this in a prototype but decided not to use this, since it requires a lot of maintenance. Instead the RRI is simulated by having the RRI receiver report in a hidden panel. When pressing the RRI button, the applied filters are copied using copyFilters, and this panel is shown.

 

To conclude

For the experienced analytical user, this functionality is a step back compared to the functionality offered in WAD 3.5. For the majority of the users, combined with the realization of other benefits, this is acceptable though.

Real time twitter Tracking with Design Studio

$
0
0

What does the application do?

Recently I had some discussions where we thought about tracking twitter messages. Retrieving Twitter messages and being able to put them into an analytic framework. There are scenario’s where this kind of live tracking can be an added value. For example in communications where you want to have a feel for the opinions about the organization at a glance. Or at a helpdesk. For example an internet provider could track how people are tweeting about the service level or how they feel they have been treated during an outage.

 

picture_1.jpg

image: live tracking of twitter messages

 

I made a bare-bone example with a twitter component and a real time barchart.

The barchart tracks the results of the number of tweets during a period of time. The component has a property “numberoftweets” that you can use and pass to the bar chart. Each time a value is passed to the bar chart a new bar will appear and the older bars will move to the left and fade to white.

 

progression_1.jpg

progression_2.jpg

progression_3.jpg

 

 

images : Progression of the values

In the future 1.3 release you could also pass the values to a planning model and store these results.

 

How does it work?

 

The Tweet component

First of all I searched the internet. I looked for a javascript solution that didn’t have to do all the authorization and needed server side scripting. I found something at http://jasonmayes.com/projects/twitterApi/#sthash.V0yIsiJI.dpbs. I used it and pressed the donate button for his caffeine / beer beverage to code even more.

This is a version where you use your personal twitter account (or organization) to set up widgets. The javascript code uses these widgets to collect the data.

To be able to pass the number of tweets to another component I added the property number of tweets. In the afterupdate event I have 2 lines to update the value :

numberTweets = tweetMessages.length;

this.firePropertiesChanged(["tweetnumber"]);

for the example I just counted the tweets although it is fixed in a parameter. You can also do a substring and search for “seconds ago” and “minutes ago” in the lines. This would give you the number of tweets in the last minute or hour.

to build the html table I relied heavily on the simple table example. As the retrieved tweets are already html it is possible to just append them to the component :

 

var html = '<ul>';           while(n < x) {             html += '<li class=\"" + "tweetline" + >' + tweetMessages[n] + '</li>';             n++;           }           html += '</ul>';           this.jqTable.append(html);

the javascript itself was documented on the site and looks like this :


 

twitterFetcher.fetch('449308105306693633', 'example4', 7, true, true, true, '', false, handleTweets, false);

 

note that the long number is the widget number and the “handletweets” is a function that translates this to a variable that we work with.

 

 

The Bar Chart

I will not go too much into the barchart itself but instead focus only on the part that makes it a realtime chart. The intention is that at the start no bars are visible, but that values are added to the chart and represented in the bars.

In the init stage I set up the dataset for the chart. This is an array. The length depends on a property settings (how much history you want to see).

In the getter/setter function for the history length the array is reset when the property is changed :

 

this.history = function(value) {             if (value === undefined) {                    return historyBars;             } else {                    historyBars = value;                    dataset.length = 0;                    for (var i=0,historyBars; i<historyBars; i++) {                           dataset[i] = {};                           dataset[i].value = 0;                           dataset[i].index = i;                    };                                        return this;             }

Each time a new number is added the number will be set on the right hand side and the value to the left will be removed. This is a getter/setter that is attached to the method

 

this.measurenumber = function(value) {             if (value === undefined) {                    return measureNumber;             } else {                    measureNumber = value;                    for (var i = 0; i < dataset.length; i++) {                             (function  {                                    dataset[i].index = i - 1;                                    })(i);                           }                    dataset.shift();                                        dataset[dataset.length] = {"index": dataset.length, "value": newNumber};                                        return this;             }

The method is in the ztl file and looks like this :

void setNewNumber( int NewNumber) 
{* this.newnumber = NewNumber;*}

Note that the source of the number also can be a datasource or any other component that provides an integer number. For a timer you can use the SDK component that SAP already provided as a standard example.

Finally for the fading color I use a a d3 scale function. With D3 you can set a domain and a range. The domain is the high and low value of your data. The range is the high and low value of the way you want to represent it. In a bar chart it translates as a height, but you can do any translation. In this instance we use the index value. The higher the value the closer the color gets to midnight blue. The lower, it gets closer to white :

 

                     var color = d3.scale.linear()                    .domain([0, 25])                    .range(["#ffffff", "#191970"]);

Summary

Using these two techniques I was able to build the realtime scenario. Adding things will make it more useful for all kinds of scenario’s. planning functions in 1.3 will make storage available. For the future and for bigger scenario's you probably want to implement the more official version with the twitter 1.1 api. There is  an application authorization available that is enough for any search query. But with looking for javascript on the internet you can go a long way.

Slide Show of Monthly Region wise Data

$
0
0

Slide Show of Monthly Region wise Data

 

First Create Two Global variable .

V_pbcounting :  Integer (0)

AutoChart_Player : String (Play)

 

  Global Script variable.png

 

Now add PAGEBOOK in your Application.

Add 5 Pages in It . // I Have Taken Example for 5 Months Only June 2013 , July 2013 … October 2013

Set Transition Effect “Slid In”.

 

  Slide In Transition Effect Of Pagebook.png

 

 

 

Now Add 5 Charts & 5 Text Box in your PAGEBOOK .

1 Text & 1 Chart in Each Page of PAGEBOOK .

 

CSS Style for all TEXT :

-ms-transform: rotate(-90deg);

-moz-transform: rotate(-90deg);

border-style:solid;

text-align:center;

 

Now add 2 more TEXTs (TEXT_5 : ”Counting” And TEXT_6) Outside PAGEBOOK (In Application )

& 2 Buttons 

  1. PLAY_BTN_1
  2. PAUSE_BTN_1 .

 

Now In “On StartUp” Write the Code below .

 

  1. APPLICATION.doBackgroundProcessing();

 

Now In “On Background Processing” Write the Code below .

 

if (AutoChart_Player == "Play") {

       v_pbcounting = v_pbcounting + 1;

       TEXT_6.setText(Convert.floatToString(v_pbcounting + 0.00));

       if (v_pbcounting == 20) {

              PAGEBOOK_1.setSelectedPageIndex(1);

              APPLICATION.doBackgroundProcessing();

       }

       else {

              if (v_pbcounting == 40) {

                     PAGEBOOK_1.setSelectedPageIndex(2);

                     APPLICATION.doBackgroundProcessing();

              }

              else {

                     if (v_pbcounting == 60) {

                           PAGEBOOK_1.setSelectedPageIndex(3);

                           APPLICATION.doBackgroundProcessing();

                     }

                     else {

                           if (v_pbcounting == 80) {

                                  PAGEBOOK_1.setSelectedPageIndex(4);

                                  APPLICATION.doBackgroundProcessing();

                           }

                           else {

                                  if (v_pbcounting == 100) {

                                         PAGEBOOK_1.setSelectedPageIndex(0);

                                         APPLICATION.doBackgroundProcessing();

                                         v_pbcounting = 0;

                                  }

                                  else {

                                         APPLICATION.doBackgroundProcessing();

                                  }

                           }

                     }

              }

       }

}

else {

       "";

}

Now Provide “Play” & “Pause” Button in Application .

 

Now In “PLAY_BTN_1” OnClick  Write the Code below .

AutoChart_Player = "Play";

PLAY_BTN_2.setVisible(false);

PAUSE_BTN_1.setVisible(true);

  1. APPLICATION.doBackgroundProcessing();

 

Now In “PAUSE_BTN_1” OnClick  Write the Code below .

AutoChart_Player = "Pause";

PLAY_BTN_2.setVisible(true);

PAUSE_BTN_1.setVisible(false);

 

Application will Look Like :


Application.png

 

 

 

You Can Use SetFilter Also to change the Data in Different Chart .


Design Studio Overview Roadmap EMEA Webcast – Includes Design Studio 1.3 Details

$
0
0

This was an EMEA webcast given by SAP today.  Because this was in English, I have better notes than what I posted here BI2014 Design Studio 1.3 Planned Updates with some more information.

 

The usual disclaimer applies that things in the future are subject to change.

1fig.png

Figure 1: Source: SAP

 

Three categories offered:

 

Agile Visualization – discover for business user, predict – Lumira, Analysis for Office

 

Enterprise BI – more based on the corporate data – technical background to create dashboard, more IT based

 

Enterprise BI Reporting – distribute securely throughout the organization – print in a reasonable way

                Web Intelligence

                Crystal Reports

2fig.png

Figure 2: Source: SAP

 

SAP stated there would be "No major investments on Dashboards or Web Application Designer"

3fig.png

Figure 3: Source: SAP

 

SAP said Design Studio 1.3 is planned for end of May/early June.  It is now in customer validation

4fig.png

Figure 4: Source: SAP

 

With 1.3 BW IP and Planning Application Kit in BW 7.40 – we can write data back and use the planning functions, and sequences in the backend and then plan in Design Studio and can be saved to BW InfoProvider.

 

Native HANA deployment is another option

 

More charting extensions with more chart types is planned

 

Design Studio SDK can be deployedon NW Platform.  With 1.2 deploy custom components and now on NW

 

Application bookmarking allows you to create /personalize bookmarks for your users

 

Lumira SDK integration – if use Lumira SDK custom components and can be reused in Design Studio – later SP’s

 

Advanced table formatting – change table settings, scaling factors, decimal places, total rows on top or bottom

 

Advanced scripting is coming with loops, arrays and sorting

 

Printing is WYSIWYG / browser based printing

5fig.png

Figure 5: Source: SAP

 

Figure 5 covers planning, including input ready measures, add blank lines.  You can trigger planning functions/sequences.  You can save data back to InfoProvider

 

Three limitations for planning:

1) Cell locking is not possible

2) Copy and paste is not possible – multiple copy lines from Excel to Web

3) If you have planning functions – input mandatory variable

6fig.png

Figure 6: Source: SAP

 

Figure 6 shows saving applications the in HANA repository.  You need prerequisite – HANA 1.0 72+

 

Some limitations are as follows:

  • Issues with hierarchies and variables do not work – not from Design Studio – limitation is from HANA side
  • OSS notes are available

7fig.png

Figure 7: Source: SAP

 

With the HANA Native deployment option there are two layers

 

You save the application to the HANA repository

 

At runtime it does not use BICS but uses Firefly to get data from HANA – optimized data access from HANA

8fg.png

Figure 8: Source: SAP

 

Figure 8 shows more configuration chart options, including exposing items from CVOM charting library

 

You can define font size for charting label, font label, legend

 

CSS can be done with charting

 

Padding is also introduced

9fig.png

Figure 9: Source: SAP

 

Conditional formatting can be defined

10fig.png

Figure 10: Source: SAP

 

Figure 10 shows more integration with SAP Lumira

 

Version 1.3 is the first step with Lumira integration

11fig.png

Figure 11: Source: SAP

 

Figure 11 shows the change the sequence of the prompting

 

Define max number for variable; 1.2 is hard coded for 100 – if you have over 100 materials you get message of too many members and search

 

12fig.png

Figure 12: Source: SAP

 

Bookmarks works on BI Platform; not on BW

 

For your user for your application you define bookmarks and personalized views

 

You can share bookmark with co-workers and URL

13fig.png

Figure 13: Source: SAP

 

Figure 13 shows the ability to define totals and position and configure sorting

14fig.png

Figure 14: Source: SAP

 

Array uses get the command (see Figure 14)

 

For each statement to look over the array and define more complex calculations

 

As the coding example shows in Figure 13, based on certain dimensions, get all hierarchies for dimensions and get the array and use them in drop down boxes

15fig.png

Figure 15: Source: SAP

 

Figure 15 shows the overall roadmap.

 

Then we saw a demo of 1.3.  If there is interest in seeing those screen shots, please post a note below, but the quality of the screen shots are not good.

 

Related:

 

For more information and more opportunity to ask SAP questions join ASUG May 6 for this webcast: ASUG.com - Events


Join us at ASUG Annual Conference June 2nd for the ASUG pre-conference also includes Design Studio:

Jump Start ASUG Annual Conference SAPPHIRE with a Pre-Conference Session - Back and Better than Ever

Register Today


ASUG Annual Conference Sessions regarding Design Studio:

Latest News on Design Studio

ASUG Influence Council for Design Studio

Getting Started on SAP Design Studio powered by BW on HANA – Part 1

$
0
0

Alright!! it feels nice to be back on SCN. Let’s get straight to the topic, In this blog series which i am planning to publish i will talk more about the SAP Design Studio powered by BW on HANA.


Architecture:
I know I’m just too good at drawing

photo.PNG

Below are different connectivity options that can be used to connect SAP Design Studio and BW on HANA:

  1. BICS Direct - via BI 4.x Platform
  2. BICS (NW BI JAVA) - direct connectivity via SAP Netweaver BW
  3. SAP HANA Connection - Direct Connectivity via SAP HANA Connections maintained in ODBC Data Source Administrator.
  4. SAP HANA Connection via BI 4.x Platform (OLAP Connection).
  5. BICS (transient Universe) – via Relational Universe.

 

Before we jump into building applications on BW on HANA, understand what Design Studio can and cannot do on different platforms.

 

Design Studio onBI 4.x platform vs SAP Netweaver BW platform:

 

Application will run a little faster on SAP Netweaver BW than on the BI platform, for obvious reasons. Although some of them might say it will work great if the BI platform is tuned correctly and APS is sized correctly etc. etc., you are right, however by the end of the day "why should we add an additional layer" is what I keep hearing from all the customers, and they are absolutely correct as well . Below are couple of things to consider before you jump into conclusion.

 

Mobility:

  • You will be able to leverage the BI Mobile (SAP BI Mobile app) solution only if you publish DS application on BI Platform.
  • You would have to leverage the Portal mobile client for any mobile deployment or use the URLs directly in the browser on a mobile device if you publish DS application on SAP NetWeaver BW as platform


Connectivity:

  • DS application on SAP NetWeaver BW as platform can connect ONLY to SAP NetWeaver BW.
  • DS application on BI platform can connect to SAP BW, SAP HANA, SAP Universes, and to multiple of those systems.


Just to add to this you can leverage the integration with Analysis Office and Analysis OLAP if you are using DS application on BI Platform.

 

Happy Learning!!

An overview of the DesignStudio SDK development workshop

$
0
0

Last week i attended the SDK workshop in Walldorf that was presented by Reiner Hille Döring and Lorenz Wiest. These guys developed the SDK tool so they brought a lot of knowledge to the workshop. It was alsno nice to finally meet Mustafa Bensan after I've already seen a lot of contributions from him on SDN.

 

In the two days we covered a lot of topics. First of all we looked at the basics. Installing the software, creating a new SDK. From there we looked at the inner workings of an SDK extension. The  contribution.xml file is the central place in the extension. in the file you will find the definitions of the extension with all the components and their properties.  Additionally there are also other files that help to make the extension work:  The JavaScript component to render the component, the ztl file for the script contributions and the additional properties html+js file for creating the option for users to use the additional properties pane at design time.

From there we went over events, additional property sheets and databinding. Additionally we looked at some special features such as Cascading Style Sheets, using jQuery, using D3, and finally using SAP UI5 based SDK extensions.

 

 

so what is a Design Studio SDK?

- with it you can create SDK extensions

- SDK extensions are libraries of extension components (components)

- extensions are created using Javascript, jQuery,, HTML and CSS
     not java as that is reserved for the internal working of Design Studio

 

 

What are relevant files  in a SDK extension?

- Contribution.xml - main definitions

- Component JavaScript - where you build the visualization and functionality

- Script Contribution - the methods

- Additional properties HTML - where you define what you see in the additional properties panel

- Additional properties Javascript

 

Additionally you can insert a CSS file , icon file or additional javascript files as you go.

 

In the contribution.xml file you can find the main settings for the extension. This is the place where you define the components, the properties of those components and where the source files for the functionality of the component.

Additional things you can set here is the group where the component belongs to in the component pane and the group where the component property belongs to in the properties pane.

 

 

Scripting.

The most important picture of scripting is to know that scripting happens in three separate parts.. The central place is the Design Studio script and that the additional properties HTML and the component javascript only can communicate to each other via the Design Studio Script. So When you set a property in the additional property sheet. This will first inform the Design Studio Script (the ZTL file) and this will in turn inform the Component javascript via the property getter/setter functions.

At design time you even could make a graph renderer into the additional property pane and only transfer the properties when you hit a commit button. Only then would the graph on the canvas change shape.

 

Also very interesting was to learn that there are possibilities in the Design Studio Script. This is the place where you would be able to 'talk' to the rest of the application outside the extension. (for example with the datasource).

 

If you look at the Component Javascript there is a specific Call Sequence

1) init () - When the component is initialized (or resized at design time)

2)  beforeUpdate() - before the component's properties are updated

3) Property getter/setter functions - these are called during properties update

4) afterUpdate() -  called after all component's properties are updated

5) componentDeleted() - called after component was deleted from the application

 

a thing to notice is that internal variables should represent the state of the rendered component. For example if your component would render a value 0 after init() the internal variable should also show 0.In that case the property getter/setter will notice that the value at the component is different from the value at the server side and will update the variable AND the afterUpdate() will be called. This will start the code that uses the property value.

 

if you want to inform the server (Design Studio Script) of some change or you want to trigger a script you use event methods.

for signalling a changed property you use .firePropertiesChanges() with a list of changed properties and .fireEvent("scriptname") you call the script on the server. These are properties and scripts that you have defined in the contributions.xml file.

 

Data-Binding

now one of the most important things. The data binding. This is the way you can connect the content of the datasource to your component.

the first step is to signal that you want to data bind with the property "databound=true".

Additionally you define one or more properties that can hold the data. You have a couple of types that are able to respectively hold one value, a row/column, a combination of rows/columns or the entire dataset.

 

The result will be at runtime a Data Json file with a specific structure that holds the data, tuple references to the metadata and selection. This variable you will be using as input for your graphs and tables.

The metadata json is a separate json variable that contains all the metadata such as dimension lists, formatting, keys, texts and so on.

 

some final remarks

It was a nice 2 days where we got a comprehensive overview of the SDK. Even if you are already experienced using the SDK you will find interesting bit of information throughout the workshop. Some basic options in the XML files with regard to grouping, or how you can control the name that is being rendered when added to the application. Sometimes an advanced topic was thrown into the mix. jQuery, D3, SAPUI5. A lot of information that would make you wish that the workshop was longer so you could go more into depth with these topics.

Learnings from Dashboard Design - things to consider

$
0
0

I have had experiences designing dashboards in Web Application Designer and currently am designing one on the Design Studio. Some of my thoughts on how to approach Dashboard design.

 

I have summarized my points under various headings - please feel free to add to it if required.

 

Approach :

This is going to be an application you are developing. Make sure that users understand the difference between a dashboard and an interface to get to the data. This is not going to be a link where people assume that they can dump the data into an excel file and build off the same.

 

Target audience

Understand the target audience – this will give you an understanding of their current needs and how they do things right now and what the dashboard seeks to improve

Is it C-Level or Senior Management or purely operational. Accordingly validations will have to be built in.. Basic questions like - how do you know if the data was incorrect or if it was indeed a lousy day for sales ..?

If your dashboard goes to the CEO or Vice President of Sales , the numbers on the dashboard have to be backed up.

 

Consumption format

Is the dashboard meant for desktops , e-mail distribution , Mobile devices ( iDevices to be specific ). Accordingly your level of detail will change

Also depending on the device – test the look and feel beforehand and tweak the design if required accordingly.

 

Prototyping

If possible – develop a simple prototype / wireframe to demonstrate the look and feel of the dashboard. This will help in getting good requirements and also driving usability requirements. This applies to mobile devices too.. This is an application which has equal importance to visual representation and the data being displayed.

 

Business Case

Why should users use the dashboard ? What is the Savings in terms of cost or effort that is seen by implementing the dashboard

 

Ownership

Establish strong functional ownership for the dashboard application. In almost all cases – there will be a lot of logic in terms of calculations embedded into the dashboard and at some point in time – these will get questioned , make sure that there is a strong functional group who is responsible for the numbers

Also when you have ownership , it will drive usage and establish trust in the data. Also since the data in the dashboard application is going to be summarized at best , have BW / BO reports developed that will give you additional details to troubleshoot / consume. Also if possible have a separate validation report with more details that could be used for validation and the same numbers expressed more visually in the dashboard application.

 

Styleguide

Preferably – have one style developed for the dashboard and use it across all applications. This helps in driving usage and rapid prototyping

 

Performance

Establish performance expectations upfront – this will drive your data model and also establish variances that are acceptable

 

Schedule

Early on - understand expectations on when the users expect the data to be available in the application

 

Sizing and patch levels

Make sure your systems are correctly patched to ensure that all the promised features work. In one of our projects , we realized that we had to do an SP upgrade on our BO systems to get our Mobile reporting working - after we gave estimates and timelines.

 

Requirements

Involve the end users to the best possible extent in defining requirements. In order to drive usage , such projects have to be business driven and not IT driven

 

Future roadmap

Establish certain criteria like - number of users , number of tickets raised , number of times the dashboard application went out on time etc to determine if the initiative was a success. Also ensure requirement sanity - do not try to do all at once if this is the first dashboard that you are doing , take it one piece at a time and establish a rollout schedule

 

Disclaimer - these are my own views and do not necessarily prescribe things that one should do for designing Dashboard Applications. Do let me know if you found these useful and if you have anything more to add to the same.


Dashboard Migrator to Design Studio - Recent Webcast

$
0
0

SAP's Ian Mayor was part of this APOS webcast.  He said the usual disclaimer applies that things are subject to change. I won't repeat what was already covered Design Studio Overview Roadmap EMEA Webcast – Includes Design Studio 1.3 Details and BI2014 Design Studio 1.3 Planned Updates

 

Ian said that Design Studio 1.3 is planned to be released at the end of May (roughly)

 

Dashboard Migrator

1fig.png

Figure 1: Source: APOS

 

APOS Dashboard Migration was released recently

 

Another release this past week, a new version.

 

It enables XCelsius content in Design Studio

 

The reasons to develop are because many organizations have assets in XCelsius and want to find a way to use that content as they transition to Design Studio

2fig.png

Figure 2: Source: APOS

 

In this webcast APOS reviewed use case scenarios

 

This supports HTML5 and SWF dashboards

 

Will you support dashboards on an iOS device?  Yes

 

You can pass parameters from Design Studio to an XCelsius dashboard

 

Phase 2 has expanded – HTML5, and bring SWF – SWF will not display on iOS

 

HTML5 is supported

 

Phase 2 (in Figure 2) allows bi-directional parameters and enhanced data transfer is supported

3fig.png

Figure 3: Source: APOS

 

Figure 3 shows how the migrator looks in a Design Studio design.

4fig.png

Figure 4: Source: APOS

 

Figure 4 shows Design Studio run-time with an embedded dashboard.

 

5fig.png

Figure 5: Source: APOS

 

Figure 5 shows how the Dashboard Migrator works and handles the view control in the Design Studio application

 

It communicates with Java bridge which communicates to BI using the SDK

 

Use Scenarios

6fig.png

Figure 6: Source: APOS

 

Figure 6 use cases "removes need to recreate this content"

 

Different skill sets are required

 

They want to leverage the skill sets

 

You can use components in XCelsius model

 

Ian said he is asked when will Design Studio have all components that XCelsius has?  With over 100 components, they are working to close the gap

7fig.png

Figure 7: Source: APOS

 

With Design Studio, move away from spreadsheet model and data at runtime

8fig.png

Figure 8: Source: APOS

 

XCelsius works with smaller datasets

 

Design Studio works likely large datasets from HANA/BW.  You can pass filters to Design Studio

9fig.png

Figure 9: Source: APOS


Figure 9 use case covers legacy data source connections.  The example provided was Qwaas; they said several have invested into Qwaas

10fig.png

Figure 10: Source: APOS

 

Figure 10 is a demo of the migrator.

11fig.png

Figure 11: Source: APOS

 

Figure 11 is another sample demo.

12fig.png

Figure 12: Source: APOS

 

Figure 12 is another use case to use third party XCelsius components.

 

Here is a video

 

Related:

Sharing is Caring – Submit your ASUG d-code (former SAP TechEd) Proposal

For more information and more opportunity to ask SAP questions join ASUG May 6 for this webcast:ASUG.com - Events


ASUG Annual Conference Sessions regarding Design Studio:

Latest News on Design Studio

ASUG Influence Council for Design Studio

What is new in Design Studio 1.3 ASUG Webcast

$
0
0

Below are my notes from today's ASUG webcast.  The usual disclaimer applies that what is planned for the future is subject to change.

 

Similar slides were shown here BI2014 Design Studio 1.3 Planned Updates and Design Studio Overview Roadmap


Overview:

Design Studio is not a 1:1 replacement for either SAP BusinessObjects Dashboards or Web Application Designer (WAD) yet

Design Studio is What You See Is What You Get

Microsoft & Sybase are data sources for UNX; this will change in the future

Design Studio 1.2 brought the Design Studio SDK

 

Coming with Design Studio 1.3:

  • BW IP and BPC unified model with BW 740
  • Native HANA deployment, which does not use BICS
  • SDK in 1.2 wasonly deployable on BI Platform. – in 1.3 – deploy anywhere – BW or HANA
  • Share charts with SAP Lumira– 1.3 extended
  • Bookmarking – save navigation state of application
  • Not in DS 1.3 – coming in SP – support Lumira SDK
  • Advanced table formatting – those familiar with BEx, WAD, take for granted – setting scaling factors, turn on/off hierarchy display, turn on/off totals – available in the properties pane or scripted and connected to events and dynamic at runtime
  • Scripting language improved – support for loops and arrays as well as sorting for arrays
  • Printing: whatever you see is what you get – maybe in future a printable flag in the properties
  • Conditional formatting
  • Install Lumira Visualizations (coming in a later support pack)
  • Prompt enhancements
  • Bookmarking/personalization will work on BIP (BI Platform) and locally too

 

Planning Support in 1.3:

Planning supports for input-ready measures, add new lines, execute planning functions & sequences

It does not yet support cell locking – coming in future

BPC Unified Model in BW740 is supported

 

enhanced crosstab.png

Source: SAP

 

We've seen this slide before, but today I learned that you can select booked values or master data values

 

This is helpful if the end user is on a slow connection and does not wait for round trip to the server.

roadmap.png

Source: SAP

 

In the future, SAP plans to round off gap list with WAD – context menu, RRI, drag & drop

 

Offline is not likely in 1.4

 

Geomaps are coming in the future; delay right now due to licensing issues

 

InfoGraphics support for Infographics similar to Lumira infographics coming in 1.16

 

Long-term includes migration support for BEx Web & XCelsius.  SAP said they will need communication with the communities to determine what are the most important scenarios to transport

 

Lumira Integration is coming further down the line

 

SAP plans to continue to close the gap list between Design Studio and XCelsius

 

They said they they understand those who know Excel and not JavaScript – plan to make the ramp “more accessible”

 

Demo:

plan dashboard.png

Source: SAP

 

The above shows a Fiori-style dashboard with tool tips

 

Click on one of the charts and the following appears:

clickonchart.png

Source: SAP

 

The screen above shows set scaling and setting decimal places

recalc.png

Source: SAP

 

The above shows recalculate the planning after entering the overall measure, trigger planning function and distribute it by raising the price

 

Question and Answer

Q: Is it possible to receive an advanced (beta) version of 1.3?

A: Unfortunately the answer is no.

________________________________________________________________

Q: My understanding is if we have Xcelsius license then we are free to use design studio. can you please confirm if this true?

A: Yes, for most licenses this is true, please contact your account executive if you do not see it on SMP

________________________________________________________________

Q: Will SAP offer migration options to Xcelsius and not just through the APOS add-on?

A: This is something they are investigating - they have had some proof of concepts - similar to way Analysis Office approaches problem.

________________________________________________________________

Q: Will Design Studio 1.3 support displaying Medium Text from a Bex Query? Currently it only allows Text and Value.

A: Don't think this has changed - this is  BICS

________________________________________________________________

Q: Are hierarchy node variables supported?

A: Those are supported today - see SAP BusinessObjects BI4 - Supported BEx Query Elements

________________________________________________________________

Q: Is there a language reference with examples for the Design Studio scripting language?

A: Have Designer Guide that explains script language - other than that it is JavaScript

________________________________________________________________

Q: Is Printing in DS 1.3 browser based or PDF based? Is there an option to download the dashboard output to Excel or PDF?

A: It is WYSIWYG - browser based

________________________________________________________________

Q: Ok, what about PDF or Excel download? Will this functionality be available? Not the dataset the visualizations.

A: Design Studio today supports an export to Excel.  PDF support is not there - will be WYSIWYG in 1.3

A: Most end users have option to print to PDF

________________________________________________________________

Q: What is the lower BOE version compatible with Design studio 1.3?

A: BI4 SP5 or any version BI4.1

________________________________________________________________

Q: Advance Scripting,, like if i want to get top 10 records from result of 100 records which came when i called DS_1.  i should not go back and create a new view or bw query to achieve this

A: Open query in Analysis Office, top 10 - Smart copy

________________________________________________________________

 

Q: Will we have the ability to create custom columns in script

A: Not yet

________________________________________________________________

Q: Will there be any additional enhancements to DS SDK in Design Studio 1.3(other than netweaver deployment)?

A: Not in 1.3 - coming further down road yes

 

Related:

ASUG Annual Conference - Add Dashboarding/Design Studio to Your Agenda

Design Studio will be part of the ASUG Annual  pre-conference on June 2nd:

SAP BusinessObjects BI 4.1, SAP BW, and SAP BW on HANA - All in One Day Hands on Full Day

For more details see Preview of 2014 ASUG Annual Conference: Focus SAP Integration with SAP BI BW ERP/ECC and Analytics SIG

Design Studio 1.2 - Embedding Bullet-proof Web Fonts

$
0
0

It's been a busy few months but with the long weekend looming, I figured I'd stop long enough to share a fun technique I had the chance to end up using that may make for some more aesthetically pleasing dashboards.  After all, a lot of it has to do with presentation (whether we all agree on how important that should be or not.)

 

So before my time in the BI area, I was a web designer/developer.  One of the considerations during the page design was font choice.  Serif?  Sans-serif?  Playful fonts?  Or boring Arial/Helvetica or (shudder) a client demanding Comic-Sans.  Now, if you are in a scenario where you can get by with just the normal Windows fonts (Arial, Tahoma, Verdana, Segoe UI, whatever), this probably won't excite you.  However for those cases where you'd like to use the more playful fonts, but aren't sure how to handle workstations that do not have them installed, read on.

 

Now, prior to the days of web-fonts, the solution for ensuring what I developed on the website was what viewers had was to use a lowest-common-denominator font, or to raster each heading as a GIF/PNG and put it in the page that way.  (This was early 2000s, if I recall)  While web-fonts now help, in that we can dynamically load them via @font-face CSS rules, there still some annoyances I have:

 

You must have confidence that the font url is reliable, and you must also host that font file somewhere.  As we know with MIME resources in Design Studio implementations on BI Platform or NetWeaver, this can be tricky or cumbersome.  These are sentiments I share with Image files in Design Studio, which I've gone the way of Base64 encoding in source tags where it makes sense.  Which lead me to wonder if I couldn't do the same for web fonts.

 

Turns out you can!

 

In an effort to not reinvent the wheel, I did a quick Googling of 'web fonts' and 'Base64' and ran across this page:

 

http://sosweetcreative.com/2613/font-face-and-base64-data-uri

 

 

It turns out that there's an excellent website, Font Squirrel, which will take a Font you like, and Base64 encode it for you into your own CSS rules that you can then incorporate into Design Studio.  (http://www.fontsquirrel.com/tools/webfont-generator)

 

The end result is a self-contained Design Studio application that does not rely on external URL resources so that you are guaranteed that the user experience is reliable and consistent.  The below example are two standard Design Studio text items showing the application of two custom embedded fonts, all contained in the one CSS style sheet:

 

step 1.png

The two fonts I used 'Pacifico Regular' (in green), and 'TeX Gyre Adventor' (in black).  The resulting CSS is attached as a .txt file in this post.  To see it in action, include the contents of the file in your CSS file that you are using in your application (Application Properties, under 'Custom CSS')

 

Now go make some pretty dashboards that aren't in boring Arial! 

Customize Checkbox with CSS in SAP BO Design Studio

$
0
0

Inspired by the questions asked in this thread (http://scn.sap.com/thread/3559715) and the link (http://www.csscheckbox.com/checkboxes) containing different checkbox designs I have chosen 1 checkbox design and was curious whether it can be used in Design Studio (with the html structure that is generated by Design Studio) and what needs to be changed in the CSS to make it work.

 

Here is the result (how do the new checkboxes look like in IE):

customize_checkbox_css_1.png

 

So here is what I did step by step:

  • First I got inspired.
  • Then I searched for the word “green” because I was interested in some green designs: http://www.csscheckbox.com/search/green/0/
  • Then I downloaded the “Goofy Green Swatch Checkbox” – the Standard Pure CSS Version: http://www.csscheckbox.com/checkbox/5385/goofy-green-swatch-checkbox/
  • Then I viewed the 3 files in it: 1x txt, 1x html, 1x css
  • The readme.txt file was useful to see what the requirements/conditions are to make this solution work.
  • I compared the html for the checkboxes with the html generated by Design Studio for a checkbox and I have seen so far so good, this could work out.
  • So I copied the contents of the css file into my custom css file that is linked to my Design Studio BI app and started the adjustments in the css file: first only the css selectors.
  • Finished successfully.

 

Here is a comparison between the 2 files (left the original file from the download, right the adjusted file):

customize_checkbox_css_2.png

 

To summarize my changes:

  • I adjusted the CSS selectors - see the before/after image:

customize_checkbox_css_3.png

  • I added some color definitions because I like those new colors more
  • I base64 encoded the image instead of loading it from a foreign server (there are many sites that can do that online and for free)
  • At the top there are some small optimizations which aren’t necessary. For example I tried to optimize the height of the span element in which the checkbox resides to override its default value so that it is better in sync with the checkbox height-related definitions and I have removed the outline (dotted border) around the checkbox when it is in a focused state. Note that this is not best practice, there is a page with its own unique domain only for it (crazy): http://www.outlinenone.com/

 

I have used Internet Explorer Developer Tools F12 to track down the current css properties of the elements and to see where (from which selectors) they are coming from and to make quick changes and see their effect right away so that I could then implement the changes in the custom css file to make them permanent.

 

Don’t forget to use the following setting in IE in order to see the changes in your Browser (of course page refresh is still required) that you made in your custom css file (F12 > Cache > Always refresh from server):

customize_checkbox_css_4.png

 

See attached the 2 css files (with .txt extension) – the original and the modified one that is adjusted for design studio.

 

Conclusion:

After little adjustments to the css selectors it is possible to use in Design Studio a checkbox design downloaded for free from a site that contains many checkbox designs.

I hope somebody else got inspired too and will find it easier to try out some other checkbox designs after reading this post.

Suggestions to Install Design Studio 1.3 Client

$
0
0

Good news - I saw on Twitter this morning that Design Studio 1.3 is released, and this is before SAPPHIRE NOW.  However, when Design Studio 1.2 was released last November, many experienced issues.


If you have already installed Design Studio 1.2, you may be tempted or think to install the Design Studio 1.3 under "Installation and Upgrades" on the software distribution center at service.sap.com/swdc - but don't do this as we saw the last time that unexpected errors would occur.


You will want to install the version under "Support Packages and Patches" - see below:

1afigsupport.gif

After downloading select the executable:

1fig.gif


Click Next

2fig.gif

Hopefully you will see "The deployment and reconfiguration of SAP products was successful"


When I first launched Design Studio 1.3 I was prompted for the SDK migration:

3samplesdkmigration.gif


I went ahead and installed these custom SDK components.

4restart.gif


Then I restart the session.


Now into Design Studio with so many features to try.  I am not using Planning, so hopefully others will share their experience with Planning which is one of the main features of this release.

NEWW.gif


Also new is the HANA native connectivity.


 

Related:

Design Studio Sessions at ASUG Annual Conference in June (next week)


Also if you are interested in English Design Studio 1.3 training please comment on Dirk Mayrock document for Design Studio 1.3 training at Design Studio 1.3 Delta Training - WDES13 available


BI 2014 Design Studio and Dashboards - Looking to the Future


SAP BusinessObjects Design Studio 1.3 Charts

$
0
0

This blog looks at some of the new Chart Functionality available in DS 1.3.  There are three different sections, new Chart types,  Chart Properties and Chart API.

 

If the images are not clear click on them to zoom to get a better view.

 

Chart Types: The following new chart types are accessible from the “Additional Chart Types ” under “Chart Type” Property of the Chart:

      1. Heat Map
      2. Tree Map: The Properties pane for Heat Map and Tree Map are similar to below. You can set the Measures for Weight and Color and also the Title with the Dimension name.TreeMap.png
      3. Trellis (Bar, Column, Line, Area, Horizontal line, Horizontal area):  For Trellis depending on your requirement you could use Row or Column multiplier for the additional Dimension (it didn't look good when I did this).


Trellis Charts worked fine for me in IE 9 and Chrome on Windows 7, there seems to be some issues with IE 11 even though PAM says IE 11 is supported.


Trellis Chart.png                         I think overall Trellis Charts require some more refinement.

 

 

               Chart Properties:

 

Conditional Formatting:Conditional Formatting is available from the Chart Properties and Provides basic operators for applying conditional formatting for Charts. You can define several rules for Measures and Dimension from the Conditional Formatting window. In the example below Conditional formatting is applied on a measure Open Order quantity and you can see one Column (2013 Open Order Qty) getting highlighted in a different color.

 

DS13 Conditional Formatting.png

Note: Conditional Formatting is based on Measure names and not UID (BW technical names), if you have duplicate Measures you could run into issues.

 

Chart Area Formatting: This is available under the Advanced Properties section of the Chart Properties.  Under this section you can edit the basic properties of the chart area. The property list here is dynamic and will change based on the Chart Type selected. See example below for Trellis and Bar Chart Properties.  Legend, Axis scaling,  Padding etc. can be changed from here.

DS13 ChartProp1.pngDS13 ChartProp2.png

 

Data Series Formatting: Data Series colors, Chart Display Type (for Combination Chart) and Measure Axis Selector (for Dual Axis Charts) can be selected from this section. You could use the Color Picker here or type in the HEX color values if you know them.

 

I did notice that the additional Data Series Option does not have any options while selecting the new “Additional Chart Types” (Trellis, Tree Map and Heat Map), not sure whether this will be fixed with DS 1.3 SPS 1.

 

DS13 ChartPropDS1.png

    Fig: Data Series Properties for Dual Axis Chart

DS13 ChartPropDS2.png

    Fig: Data Series Properties for Single Axis Chart


CSS Formatting: This section provides an easy to use UI for formatting the title, labels etc. You can change the Fonts, Color, size, weight etc. Additional formatting will have to be done via CSS, the help documentation provides details on the CSS classes which can be used.

DS13 ChartPropCSS.png


Chart API


There are several enhancements available for Charts in API. I did try using the setAxisScaling API. To make this more user friendly you could provide the users with the SAPUI5 slider and attach to the onChange even to change the Axis scaling value.


I could not get Convert function in DS to work and had to add both Axis values with .0 to get it working.

DS13 Chart API.png


This is the full list of new Chart APIs in 1.3:


        1. showScalingFactors
        2. setAxisScaling
        3. removeAxisScaling
        4. setDataSelection


Overall DS 1.3 Charting is a good enhancement over what we had in DS 1.2. There are several new chart types and properties which are available now to create great visualizations.  I was expecting more Chart types with 1.3 (at BI 2014 in Orlando we were told there will be around 100 different new charts, not sure whether there will be more added with DS 1.3 SPS).


If you need more Chart Types (Gauges, Bullets, Bubbles with Quadrants etc.), work with local data (for rapid prototyping), superior Chart formatting or more runtime control for Chart Properties you could refer Archius ChartsPLUS™ for Design Studio developed by our labs.


PS: The author works for Archius


#1 Planning in Design Studio 1.3

$
0
0

Hello Everyone,

 

So as a first of the series I am here to introduce to you one of the biggest features for Design Studio 1.3, that being BI Integrated Planning.

Here I am going to cover the very basic steps you need to do to get started with your very first design studio planning application.

 

1. First of all you need to configure the Connection that you will be using for planning in your application under the application properties.

          1.png

          Note:  You can only use one BW system connection in an application for write back purpose even though you can have data sources from multiple connections in the same application.

 

 

2. Now insert the input enabled query in your application and assign it to a Crosstab. Go to the properties of Crosstab now.

 

      You should see a new property for planning with options to define the following :

 

            2.png

 

    In the example I am setting the number of new lines to be 5 and the position of the new lines to be on top.

 

    Note:

 

    1. The newlines and the input enabled cells will appear in the runtime only and will not reflect during the design time in Design Studio designer.
    2. The lock for your input enabled query will not get created unless you execute the application in the runtime browser. You can check this in sm12 transaction in the backend.

 

3. Configure the data source to be executed in the input enabled mode directly upon execution in the browser by giving the following command in the Application On Startup event :

 

          DS_1.configureInputReadiness(true);

 

      Note: This command can be configured to any other component such as a Button etc as well to mimic the behavior of Display and Change functionality for planning applications. For the Change mode you can have the Boolean value as true and for the display mode as false.

 

4. Execute the Application locally or on Netweaver and you can see the query available in change mode with 5 new lines on the top position of the crosstab as designed earlier.

 

  3.png

New lines and input enabled cells

 

As discussed earlier after specifying the new line property under crosstab and enabling the data source for planning by using the command : DS_1.configureInputReadiness(true);

 

You are good to go to try out the planning via new line and the input enabled cells.

 

Input enabled cell :

    a. You can click on any of the input enabled cell and the value can be entered in it. Data validation happens when you hit enter or click tab.

    b. If the value is wrongly entered say any text in the input enabled cell for transactional data, than an error message will come up when you hit enter or hit tab or simply move the focus out of the cell and the input enabled cell will have a red border to show the cells affected with the error.

    13.PNG

          eg: Here,an invalid value for currency EURO (Not EUR) has been entered for which there exists no masterdata and which has been shown with the red borders around the cells for new line. An error message for the same will pop up as well.

 

    c. Navigating between the cells of the crosstab can be done one by one, row-wise using tab

    d. When an input-enabled cell receives focus via keyboard navigation, it behaves as if it were clicked (input field gains focus, all text is selected) and a cross appears to delete the value as well.

      12.png

    e. Its possible to navigate between input ready as well as read only cells using the top-down and left-right arrow keyboard keys

    f. It is also possible to copy and paste the value, from a single, read only or input enabled cell to an input enabled cell in the crosstab or in the newline as well.

 

Newline entry :

 

  1. In order to plan data using the newline, enter data directly in the input enabled cell for the dimension respectively.
  2. When entering a value without using the value help, the external key of the dimension member must be entered
  3. Enter the value either using value help or direct manual entry of dimension values and enter the transaction data and Recalculate, the data entered via the newline should be transferred now and be a part of the crosstab.
  4. Entry and transfer of values for multiple New lines is supported as well

Working with Bookmarks in Design Studio 1.3

$
0
0

Design Studio 1.3 has a new features for creating application Bookmarks and Personalization.  Bookmarks are a saved navigation state of a Design Studio Application, similar to "Scenarios" in Dashboards Designer (Scenarios are local to the user PC, bookmark information is stored on the BI Platform).  Bookmark and Personalization functionality has been available in SAP BW BEx Web users since BW 3.X days.

 

Bookmarks can be used in the following scenarios:

 

  1. Save the Design Studio Application with the Current Filter settings for future access. You can save the Bookmark to the BI Platform and also to the browser favorites.
  2. Share the current Design Studio Application state with other users via URL

 

Saving Bookmarks:

 

You can use the command Bookmark.saveBookmark();  to save a Bookmark for the application, this command accepts a title as input.  You can use a text box for users to input text for saving it with some meaningful names for the bookmarks, default Bookmark title is the application name.

 

You could do Bookmark.saveBookmark(BOOKMARKTXT.getValue());  BOOKMARKTXT is the Input field in DS.


When a Bookmark gets created locally it stores the bookmark information in the folder C:\Users\<userid>\Analysis-workspace\com.sap.ip.bi.zen\repository\__TECHNICAL_CONTENT\BOOKMARK

 

There are 3 types of files which gets created while creating a Bookmark:

 

  1. Relations file:  One per DS Application, this file has all the Bookmark ID stored in it.
  2. Properties file: One per Bookmark with Bookmark ID as the file name
  3. BIBOK File: One per Bookmark with Bookmark ID as the file name, this is the file which has all the navigation state information.  The file is in XML format and is very similar to the Bookmark Information stored in RSWRDATA tables in BW system for BW BEx web bookmarks.  Sample XML file below with the bookmark information.

BIBOK File.png

 

Accessing Bookmarks:

 

You can view all the Bookmarks available for an Application by using Bookmark.getAllBookmarks(); Command.

 

Using the new Array function you could load all the Bookmarks to a dropdown box on the start up event of the application. In the example below BOOKMARK_DD is the Dropdown box with the list of Bookmarks.

 

Bookmark.loadBookmark(BOOKMARK_DD.getSelectedValue());

var array = Bookmark.getAllBookmarks();

 

array.forEach(function(element, index)

 

{ BOOKMARK_DD.addItem(element.name, element.text);

 

});

BIDS_StartUP.png

 

This will add all the bookmarks for the existing application to the Dropdown box, you can add a command to the On Change Event of the dropdown to load the selected the Bookmark.

 

Bookmark.loadBookmark(BOOKMARK_DD.getSelectedValue());

 

 

To Populate the newly created Bookmark ID to the Dropdown box after saving we need to add the same code above to the On Background Processing event also. If you don't add it then the Dropdown box will be empty after loading the Bookmark.


If DS supported full JavaScript functionality we could enhance the Bookmark functionality more (I guess their could be other benefits too if there was full JS support... topic for another conversation).  Examples: Share Bookmark URL via mail client using HTML mailto command, Validate user title while saving Bookmark URL.

 

You could also look at possibly extending Bookmark functionality by leveraging the BI Platform SDK to add the Bookmark URL to user favorites on the BI Platform. I have not explored this option yet.

 

See screenshot below how the bookmark solution in a real Design Studio Application, users have the option to Save the bookmark with a title and also load the Bookmark by selecting from the Dropdown.


BIDS_BOOK.png


Personalization:


Personalization provides the option for users to Personalize the application with a default view. For example if you want to hide certain components, select certain filter values etc. as the default view everytime you run the application you could do this using the Personalize command.  Users should be trained well on how to use Personalization functionality or they could end up with the wrong or impartial data set views if they personalize with certain filter criteria.

 

The following methods can be used to Set and Delete Personalization:

 

State.setPersonalization().

State.deletePersonalization().

 

Happy Bookmarking!

#2 Planning in DS 1.3 - Using different script methods for planning

$
0
0

Hello everyone,

So as a continuation of the previous blog post I would like to take it further and go a bit more into the details for performing various operation on the input enabled queries. Such as Recalculate, Save and Reset to Client/server.

If you havent had a chance to go through my first blog yet, you may do so here : #1 Planning in Design Studio 1.3

 

  1. You have the following methods available via script editor which you can use in your planning application :

4.png

2.  Let’s create one button for each function and see how we can use each of them

5.png

 

Each button has the following script assigned to it respectively :

 

     a. Recalculate :

     Planning.recalculate();

   b. Save :

     Planning.save();

   c. Server Reset :

     Planning.reset();

   d. Client Reset :

     Planning.clientReset();

   e. Check unsaved changes :

if ((Planning.hasUnsavedChanges() == true)) {

   APPLICATION.alert("Application has unsaved changes");

} else {

   APPLICATION.alert("Application does not have any unsaved changes") ;

}

     f. Check not recalculated client Changes :

if ((Planning.hasClientChanges() == true)) {

   APPLICATION.alert("Application has client(not recalculated) changes");

} else {

   APPLICATION.alert("Application does not have any client(not recalculated) changes") ;

}


3. Now let’s look into the working of each method :

 

a. Initial view of the application :

  6.png

b.     Let’s change the Current salary value for Employee ID = E06 to 1000 EUR and then click on recalculate button

     7.png

         Result : you can see that the value gets changed and is updated in the Result for Employee ID E06 as well.


c.     Click on save and the new data gets saved in the backend. Every time you refresh the application now, always the newly saved data will be reflected for the data source in the application.

 

d.     There are two reset methods, one is the server reset and the other is the client reset.

 

Server Reset :

This is to take you to the last unsaved state of the data for your input enabled query.

 

Client Reset:

This is mainly to go back to your last recalculated state.

 

You can check this by changing some value in any of the input fields, say change the value of salary of employee E11 to 2000 Euro and click on recalculate.

Now click on server reset and you will see the value will be set back to the last unsaved state i.e. 1 EUR

 

Similarly in order to check Client reset again change the value of salary of employee E11 to 2000 Euro and recalculate and then change it to 3000 but do not recalculate this time.

Now click on Client reset and you will see the value will be set back to the last client (not recalculated) state i.e. 2000 EUR

 

e.    hasUnsavedChanges and hasClientChanges:

 

These two methods are mainly to check whether there are any unsaved or client(not recalculated) changes currently in your application respectively.

 

hasUnsavedChanges :

 

To check this lets change the value of salary of employee E11 to 2000 Euro and click on recalculate.

Now click on the button “Check unsaved changes”.

 

Based on the scripting done earlier, You will get the alert message :

8.png

 

Now click on the button Server Reset and hit the button “Check unsaved changes” again.

Based on the scripting done earlier, You will get the alert message :

9.png

hasClientChanges :

 

Similarly now change the value of salary of employee E11 to 2000 Euro and do not recalculate.

Now click on the button “Check not recalculated client Changes”.

Based on the scripting done earlier, You will get the alert message :

                    10.png

Now click on the button Client Reset and hit the button “Check not recalculated client Changes” again.

Based on the scripting done earlier, You will get the alert message :

 

                    11.png

RELATED:

 

#1 Planning in Design Studio 1.3

How to Create Multiple Dropdown boxes (Cascading Filters) when using Universe in the backend.

$
0
0

I searched a lot to  find a solution to this looks like there is no readymade solution available anywhere.  Cascading Filters work only with BW or HANA (OLAP) datasources.


I found the only solution (I could not think of anything else) to this issue.  Hope this is helpful to you guys.  Here is what I did.

 

Country>>State>>City

 

1) Create three data sources:

 

1.1-- COUNTRY_DS. This will load on startup of the dashboard.  Just get the Country object and some measure through this query.  I created a column 'count' in the database so you can pull Country field and 'Count' measure field as a query.

 

1.2-- STATE_DS: Set Load in Script to 'True'.  Get State and Count fileds, but only this time you set a Country prompt for this query.

 

1.3-- CITY_DS: Set Load in Script to 'True'.  Get City and Count fields and set State prompt for this query.

 

 

2) create global variables v_country, v_state

 

3) Create three dropdowns COUNTRY_DD, STATE_DD, CITY_DD. For All or at least State and City Dropdowns, manually enter 'ALL' items section in the properties tab. (You will not be loading City datasource until user selects a State; till then ALL will be displayed in the dropdown).

 

4) On Start up, Write the following script.

 

//4.1:--

COUNTRY_DD.setItems(COUNTRY_DS.getMemberList(<country dimension>, MemberPresentation.INTERNAL_KEY, MemberDisplay.TEXT, 0);

//

//(Please note that you might have to experiment a bit with 'MemberPresentation' formats a bit.  Check what works for you. It worked for me when I used MemberPresentation.TEXT, but sorting will  become a problem if you don't use 'internal key', in which case you might have to use sort method to sort data for your dropdowns)

 

//4.2:--

v_country=COUNTRY_DD.getSelectedText();

 

// (you might think of using 'On Variable Initialization' option to load State data (4.2), but what I found is that you need to set a default value for the global variable if you know for sure which country is going to  be the first one in the list or if you have a default value that you want then we can go for this option.  if it is possible that there  is no data for the default country in your database, then the result set is going to be empty.  So best option is load in script and do not set Force Prompts on start up option).

 

//4.3:--

 

STATE_DS.loadDataSource();

//(This will load the datasource for state and the below script will  pass the country parameter)

//4.4:--

APPLICATION.setVariableValue('psEnterCountry',v_country);

//

//4.5:--

STATE_DD.setSelectedValue("ALL");

 

5) in the On Click event of the COUNTY_DD:

 

v_country=COUNTRY_DD.getSelectedText();

//

STATE_DS.LoadDatasource();

//

APPLICATION.setVariableValue('psEnterCountry',v_country);

//

STATE_DD.GetMemberList(<State Dimension>, MemberPresentation.INTERNAL_KEY, MemberDisplay.TEXT, 0,"ALL");

/*0 will give you all the items in the list; and "ALL" will add ALL as the first item in the list in case you already do not have ALL in your database*/

 

//(Please note that you might have to experiment a bit with 'MemberPresentation' formats a bit.  Check what works for you. It worked for me when I used MemberPresentation.TEXT, but sorting will  become a problem if you don't use 'internal key', in which case you might have to use sort method to sort data for your dropdowns)

 

6) In the On Click even property of STATE_DD:

 

v_state=STATE_DD.getSelectedText();

//

CITY_DS.LoadDatasource();

//

APPLICATION.setVariableValue('psEnterState',v_state);

//

CITY_DD.GetMemberList(<State Dimension>, Memberpresentation.INTERNAL_KEY, MemberDisplay.TEXT, 0,"ALL");

 

//(Please note that you might have to experiment a bit with 'MemberPresentation' formats a bit.  Check what works for you. It worked for me when I used MemberPresentation.TEXT, but sorting will  become a problem if you don't use 'internal key', in which case you might have to use sort method to sort data for your dropdowns)

 

 

Hope this helps.  You will surely have some more questions while implementing these just like I did have, which I will be happy to answer.

 

Vijay Bhaskar P

SAP Design Studio 1.3 – What’s new

$
0
0

With SAP Design Studio 1.3 now in GA, I checked out all the new features available in the new version. As soon as you log in to Design Studio 1.3 to create a new application, you would notice a whole new set of pre-defined templates like “Adhoc Analysis”, “KPI Dashboard”, and “KPI Details” that can be used to create applications on-the-fly. I chose one such template and built a simple analysis application.
Sales-Dashboard-Summary-View-SAP-Design-Studio-1.3
Following are my observations:

Mobile Compatibility– Design Studio 1.3 has some new templates and themes for iPad. In comparison to the previous version, the cross tab component works a lot better in the current version. Scrolling is a lot easier now but there are a few performance issues that are yet to be resolved.
Sales-Dashboard-Summary-View-SAP-Design-Studio-1.3-iPad
Print– Print option is WYSIWYG based printing, but with a few drawbacks – The printed visualizations are a little compressed even if we set the orientation to landscape.
SAP-Design-Studio-1.3-print.png
Bookmarks– You can save navigational states of an application using bookmarks. This can be done both in local and BI platform mode (and not in other modes). You can share your bookmarks with other users on the BI platform, and this is very useful. Most visualization tools like Qlikview and TIBCO Spotfire have been supporting bookmarks and it’s nice to see this now in SAP Design Studio.
Bookmark_Design_Studio_1.3
Personalization– You can set the initial view using personalization options. The next time you run the app, the view that has been set/personalized would automatically load as the initial view. You can also delete it whenever you want. Following code is used to set personalization
State.setPersonalization();

 

Formatted Text– FormattedTextView is a new component used in scenarios where you want a mixed formatting. For eg; you can have normal text, combined with bulleted list. Also options like bold italic etc. are available. It’s a similar to the SAP UI5 component and can be used in scenarios where user needs to enter details like name,address etc or when we add bulleted lists to our application.

 

Conditional Formatting in Charts– You can now set conditional formatting for your charts. Set rules (like greater than, lesser than or equal to) and manipulate the series color of the chart. One drawback is that it doesn’t dynamically update the benchmark value – An implication is that values charted would be impacted by filters, but the benchmark would remain static, leading to inconsistent results.
Conditional-formatting-sap-design-studio-1.3
New Chart Types– SAP Design Studio 1.3 has new chart types such as heat maps,tree maps and trellis. The rendering of Trellis chart could have been a little better (as in SAP Lumira).
SAP-Design-Studio-1.3-Trellis-Chart
Additional Properties in Charts– You don’t have to bank on CSS anymore to style your charts. You can set font type,size, color,weight etc. for axis labels and title using the chart additional properties window. There are also options to set padding for charts.

 

Universe– can now connect to Relational universes, single-source universes and universes with the following as underlying databases:
1. Microsoft SQL
2. Sybase IQ
3. Microsoft Excel
4. CSV
5. ERP system
6. Oracle DB
7. IBM DB2
8. Teradata

 

Passing parameters using url encode– We can encode strings to a URL now using URL encode. Hence a string like “North America” would give us North%20America. This helps in leveraging URL based interactions.

 

String Functions– Options to search for a particular text and return the index, sub string, length of the string etc. are now available. We can leverage this to include different functionalities in our application.

 

Add Items to Selectors– We can dynamically add items during run time to a list box or combo box. This is a great feature that can be used in combination with the bookmark feature where you can add bookmarks dynamically and load the saved bookmark.

 

HANA Deployment– Design Studio applications can now be deployed in the HANA platform. Applications can now load and retrieve data much faster when in comparison with BI platform and Netweaver platform. To know how to install design studio in HANA system clickhere.

 

Lumira integration is planned in future.

 

Overall, SAP Design Studio 1.3 is packed with a lot of new and interesting features, except for the frequent crashes I experienced (I tried in different environments). I’ll keep you posted as I explore further.

 

Republished from www.visualbi.com/blogs

Design Studio 1.2/1.3 SDK - Slideshows

$
0
0

Hi!

 

I had a little time to make another toy that maybe others may find a use for on SCN.  Those who visit the front page of SCN, among other sites, will recognize this type of component, which is a slide show component.  We even see similar concepts in a Fiori Launchpad:

 

SCN Welcome Page:

http://scn.sap.com/welcome

 

SCN.png

 

Fiori:

https://experience.sap.com/fiori-guidelines/FioriDesign/15_Fiori_Design-Theming.html

 

Fiori.png

Can Design Studio join the party?  With a little elbow grease in the Design Studio 1.2 or 1.3 SDK, of course.

 

I have posted the gory code details on Github for examination here:  (DesignStudio1.3UtilityPack/res/js/slideShow.js at master · entmike/DesignStudio1.3UtilityPack · GitHub)  -- As a side note, this is a compilation of all my previous blog postings related to all other SDK components, all bundled up in one place - More on this in a separate blog later...

 

I chose to use an Open Source MIT Licensed library so that I would not need to start from scratch.  I settled on using the Jssor Slider, however I'm sure any favorite JavaScript slide show library could be used.

 

Back to the usability, let's see what happens when we drag over a Slide Show component during design time:

 

SS1.png

As you can see, I've allowed for up to 5 slides, and 5 captions, along with a few duration/interval and autoplay settings.  Also, I have provided an onclick event which is where we can then build some logic into this.  Also, I put a few CSS style fragments in there so some cosmetics can be tweaked, as well.

 

I'll stop here and say that this implementation is very basic, and shouldn't be 100% representative of all the cool stuff that the Jssor library can do. Feel free to enhance this to meet your needs!  It's a pretty cool library.

 

Coming back to this component however, we see that you get some common UI elements like the dots that paginate across the bottom and some arrows to thumb back and forth with.  Also, not shown in this screenshot, but you can see for yourself by installing this addon (more on this later), are some nice transition effects as the slides move.

 

So what would a use case for this in Design Studio be?  How about if you want a hybrid sort of single KPI tile with some image backdrop that represented how good or bad the KPI is doing?  Then by clicking the slide, you can use to BI Action Language scripting to facilitate drilldown or dynamic visibility on a more detailed chart (see below):

 

1) On the Startup Script for the APPLICATION, let's get some data, and give it a rating, caption, and background:

 

var target = 10000;
var billedQty = DS_1.getData("0D9INV9QTY000000000000010", {}).value;
var billedQtyFormatted = DS_1.getDataAsString("0D9INV9QTY000000000000010", {});
if(billedQty >= target){  SLIDESHOW_1.setCaption("Great Quarter! (" + billedQtyFormatted + ")",0);  SLIDESHOW_1.setImageSrc("http://example.com/fireworks.jpg",0);
}else{  SLIDESHOW_1.setCaption("Lousy Quarter! (" + billedQtyFormatted + ")",0);  SLIDESHOW_1.setImageSrc("http://example.com/rain.jpg", 0);
}

2) Let's also add a drilldown capability for on-click on the slide show:

 

var slide = SLIDESHOW_1.getSlideClicked();
if(slide == "0"){  BILLED_QTY_CROSSTAB.setVisible(true);
}else{  BILLED_QTY_CROSSTAB.setVisible(false);
}
// And so on for slide 1, 2, 3...

So, with a target of 10000, what does the first slide look like:

 

good.png

Let's adjust the target to 20000 in the scripting layer to simulate bad:

 

bad.png

(Note: the crosstabs are just a placeholder to represent an on-click drill down that you can do per-slide.)

 

These fundamental pieces of scripting give you enough control to facilitate drilldown navigation, and visualize targets in a fun, engaging way.

 

Feel free to pull down the source from my Github repo here:

entmike/DesignStudio1.3UtilityPack · GitHub

 

As mentioned, this includes several other components that I have blogged about in the past.

 

And as a bonus, I've included them in deployable form for those who don't like messing with the SDK.

 

https://github.com/entmike/DesignStudio1.3UtilityPack/blob/master/Design%20Studio%20Utility%20Pack%20SCN.zip?raw=true

 

Download the .ZIP, and go to Tools -> Install Extension to Design Studio -> 'Archive...'

 

Enjoy!

Viewing all 662 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>