One easy way to find which standard delivered InfoObject to use in a transformation for a corresponding field in ECC is to look at table RSTRFIELDSH, Shadow table: Transfer Structure Fields.
Let’s say you have a field in a DataSource from ECC named BWART. Just run SE16 for table RSTRFIELDSH and enter BWART in FIELDNM –> it will return 2 possible entries in field IOBJNM, either 0OI_BWART or 0MOVETYPE.
Make sure you search in a BW system, not in an ECC system 🙂
How to check a real table size in an SAP BW HANA system
One way to get the theoretical size of a table is to multiple the number of records in SE16 (enter table name, and click on Number of entries button or CTRL-F7) by the table width from the table definition in SE11, using the menu option Extras -> Table length). This gives you a theoretical size.
But you can see the real size by querying (SQL) view M_CS_TABLES in HANA studio. This gives you information regarding the specific table such as total memory size, delta memory size, etc. If you want to know the active table size for DSO 0SD_O01 – /BI0/0SD_O0100, you execute the SQL command
Dashboard with page book and left panels to select page
In this application the four panels on the left represent 4 main KPI areas. When you click on any of them, the color of the panel goes darker and the purple left bar (also a panel) is made visible to show it is the one is selected.
So, once a panel is selected, you need to make sure all other 3 panels show in a lighter color, that the other purple bars are hidden, that the specific purple bar to the left of the selected panel is made visible and that the selected panel goes darker. One last action is to activate the specific page in a page book and it will show in the main part of the dashboard.
You could accomplish this by having a similar script on every On Click event of every one of the panels, or better yet, modularize in a global script and pass parameters to it such as panel to activate, purple panel to make visible and page index to activate on page book:
(Note: the panels are named PANEL_SA_MAIN, PANEL_CE_MAIN, PANEL_OE_MAIN, and PANEL_PE_MAIN. The purple panels have similar names with _LEFT as a suffix)
Actions on click
So, on the On Click of the four panels:
Panel 1 On Click script:
And on the global scripts section we have a script named panelToggle
And the code is quite simple, the first parameter PanelOn is the name of the panel to turn on, the second parameter PanelVisible is the left purple panel to make visible, the third parameter pageOn is the corresponding index of the page in the page tab we want to activate and the fourth parameter FA is a global variable that is also set for further use in other areas of the dashboard.
In lines 2-9 All main panels color are set to a lighter color by setting the CSS Class to “mypaneloff” and all left panels are hidden (setVisible(false)).
In lines 11-12 the specific panel is set to a darker color (mypanelon) and the corresponding left purple panel is made visible.
In line 14 the specified page is selected on the PAGEBOOK object and
In line 15 the global variable FA is set.
By modularizing code in a global script we reduce the amount of code to maintain and review and make the whole code easier to understand and debug.
You can watch an explanatory video on this topic on this link
If you are getting “an error has occurred. See error log for more details”, but if you go to the error log, it does not show anything and you have recently upgraded the Eclipse Version, it is possible that updating the runtime version of java will fix the issue.
Learnings on SAP BI Analysis Process Designer APD to extract a query result to a file
While there are several limitations on the extraction process from a query to a file, the benefit is that you get a result extracted quite fast as compared with some other methods. Once valid concern is that if the query results in a large dataset you can face issues, but there are some workarounds to overcome that limitation, such a splitting into several APDs or setting the query element to divide the data collection into Packages, in the Extended Settings for the element. Here are some of my learnings:
Unless you use a logical path / filename, you cannot specify a file termination, the APD check fails explaining that file names may only contain the characters A-Z, 0-9 and _.
If you have a column in the report that is set as hidden, it will be extracted regardless of its show/hide status.
The order of the fields on the file for a report I used with characteristics in rows and key figures in columns: it listed first all key figures in the file and then all characteristics: it did not follow the order of the key figures in the BEX report, it sorted the key figures by description and that was the order. For the characteristics it did respect the order as specified in the BEX report.
The format of the key figures is ignored: for restricted key figures it used 3 decimals and for formulas / calculated key figures it used scientific notation. Also, for the restricted key figures with unit it added a column for the unit and for the calculated key figures / formulas it did not add a unit column.
If you need to debug the extraction to understand it a little bit better, use the context menu on the query node and select the option display data after setting a breakpoint at method CL_RSCRMBW_BAPI->GENERATE_MDX.
A way to overcome all these limitations regarding formats, column order, etc., would be to insert a routine between the query source element and the file target element. Then you can select what columns to pass as a source, removing for example the unit fields, you could also set the order of the fields and for fields the APD could not determine an infoObject for reference (hence the floating point type), you could use standard KF InfoObjects such as 0AMOUNT and 0QUANTITY.
The BEx report cannot have display hierarchies neither as filters nor as elements in the report (rows or columns).
If you have key figures showing inside key figures (expand / collapse), you will also get the warning “RSCRM 252 does not support display hierarchies” like in the image below.
As an example of an MDX generated query, see below
SELECT{[7VP3WTOGPDCZW6ZZAMN8SM8F0].[7ZYK7HLNG4UC6JD3PY2AH9IQK],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8AM6Y5EMB1JOWE9WS8LWOVQJG],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8CQX3HD7OFAD1KGGZWBFJ7DP8],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8EVN8TBT1T116QN17K0YDJ0V0],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[823ACTK8TIL0BPJNXLRTBL5WC],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[86CQNHHFKA2CM1WSCX6V08G7W],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8H0DE5AEF6RPBWTLF7QH7UO0S],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8J53JH8ZSKIDH305MVG026B6K],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8L9TOT7L5Y91M96PUJ5IWHYCC],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8NEJU566JBZPRFDA26V1QTLI4],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8480I5IU6WBOGVQ859HC5WT24],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8PJ9ZH4RWPQDWLJU9UKKL58NW],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[88HGSTG0XNT0R83CKKWDUK3DO],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8RO04T3DA3H21RQEHIA3FGVTO],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8TSQA51YNH7Q6XWYP5ZM9SIZG],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8VXGFH0K0UYEC43IWTP544658],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8Y26KSZ5E8P2HAA34HENYFTB0],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[92BMVGWC506ERMN7JSTPN33MK],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[94GD0SUXIDX2WSTRRGJ8HEQSC],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[96L364TIVRNR1Z0BZ48RBQDY4],[7VP3WTOGPDCZW6ZZAMN8SM8F0].[98PTBGS495EF756W6RYA6213W]} ON COLUMNS,
NON EMPTY CROSSJOIN(CROSSJOIN({[0MATERIAL].LEVELS(01).MEMBERS},{[CRMSET_0PLANT]}),{[0MATERIAL__0PRODH2].LEVELS(01).MEMBERS})
ON ROWSFROM[-yourProvider-/-yourQuery-]
SAP VARIABLES [-versionDate-]INCLUDING[-calDayVar-].[20141112][-UOMVar-]INCLUDING[0UNIT].[CS][-PlantVar-]INCLUDING[0PLANT].[plantLow]:[0PLANT].[plantHigh]
SELECT {
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[7ZYK7HLNG4UC6JD3PY2AH9IQK],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8AM6Y5EMB1JOWE9WS8LWOVQJG],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8CQX3HD7OFAD1KGGZWBFJ7DP8],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8EVN8TBT1T116QN17K0YDJ0V0],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[823ACTK8TIL0BPJNXLRTBL5WC],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[86CQNHHFKA2CM1WSCX6V08G7W],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8H0DE5AEF6RPBWTLF7QH7UO0S],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8J53JH8ZSKIDH305MVG026B6K],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8L9TOT7L5Y91M96PUJ5IWHYCC],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8NEJU566JBZPRFDA26V1QTLI4],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8480I5IU6WBOGVQ859HC5WT24],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8PJ9ZH4RWPQDWLJU9UKKL58NW],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[88HGSTG0XNT0R83CKKWDUK3DO],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8RO04T3DA3H21RQEHIA3FGVTO],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8TSQA51YNH7Q6XWYP5ZM9SIZG],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8VXGFH0K0UYEC43IWTP544658],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[8Y26KSZ5E8P2HAA34HENYFTB0],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[92BMVGWC506ERMN7JSTPN33MK],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[94GD0SUXIDX2WSTRRGJ8HEQSC],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[96L364TIVRNR1Z0BZ48RBQDY4],
[7VP3WTOGPDCZW6ZZAMN8SM8F0].[98PTBGS495EF756W6RYA6213W]} ON COLUMNS,
NON EMPTY CROSSJOIN(CROSSJOIN({
[0MATERIAL].LEVELS(01).MEMBERS},
{[CRMSET_0PLANT]}),
{[0MATERIAL__0PRODH2].LEVELS(01).MEMBERS})
ON ROWS FROM [-yourProvider-/-yourQuery-]
SAP VARIABLES [-versionDate-] INCLUDING
[-calDayVar-].[20141112]
[-UOMVar-] INCLUDING [0UNIT].[CS]
[-PlantVar-] INCLUDING [0PLANT].[plantLow]:[0PLANT].[plantHigh]
As you can see SAP BW is the first term to appear on the graph, since February 2004, I guess that the default in the graph is to show the last ten years. Once the term SAP BI starts ramping up around 2005, the term BW starts to decline, I could guess as a substitution of one term by the other. It’s always funny how SAP manages to replace one term with another just for marketing purposes without any real substantial or dramatic change on the product or platform (remember PSA was originally called ODS, or the change from ODS to DSO).
There is a point in which both terms SAP BI and BW have a very similar count, so a replacement or substitution did not happen, rather the terms seem to be used interchangeably. If you do a search on Wikipedia, you will find there is no specific entry for SAP BI but there are for BW and SAP Netweaver Business Warehouse. What I get from my personal experience is that people call now BI to what used to be called BW.
In September 2010, the term SAP HANA starts to show up and ramps up fast and it is around May 2013 that HANA surpasses BI and BW.
As SAP HANA is currently used across all type of solution offerings in SAP, not only data warehousing, it is easy to infer that the term has a bigger scope or audience than the data warehousing ones. The question is, once I have for example, my ERP system running in HANA, do I really need an SAP BI (or BW) system in place?
Another interesting trend is the one related to jobs, below.
In this case the job search for SAP HANA has not yet surpassed the combined job search for SAP BI or SAP BW.
This is just a conversation teaser, it does not intend in any way to be of statistical value or “scientific” study. It only shows trends on what people search, not on the real weight on jobs on the market.
Even when the start process job scheduling in a process chain shows the name of the user that scheduled it, the user that executes the process chain is generally ALEREMOTE or whatever name is given to the batch job processing user.
To check which user is set up for a specific process chain, display it / or modify it in transactions RSPC or RSPC1, and execute the menu path Process Chain → Attributes → Execution User.
You can then select between using the BW Background User, the current user or a specific Special User.
This information is then stored in table RSPCCHAINATTR field BATCHUSER: if empty, it will use the BW Background User, if the value is %%actual%%, it means it will run under the current user, if it set to any other value, it will run under that specific user.
Missing Element ID when transporting query elements
When transporting a BEX query, a transport fails with an error but not self-explanatory.
Fortunately there is an SAP Note that helps in this issue, 1593665 – Missing Element Id when transporting query elements.
Running report CHECK_MISSING_ELEMENTS, copy the element ID from the transport log and enter the version M
It will then tell you if there is a missing element for the specif query noted in the transport. You can also check it without query parameter to see all missing elements in the target system.
If you then get a result, check this element in the source system in table RSZCOMPDIR and / or RSZGLOBV as it is very likely to be a global report variable. This happens frequently when you share the same path in the landscape for production support and projects as some objects belonging to the project may be in development but not yet migrated to production. All this to diagnose the root cause as the problem gets solved if you collect the BEX query in the transport connection with all objects.