Feeds:
Posts
Comments

I’d like to share about the presentation in BI 7 Report. Sometimes in the report, there is a requirement to display the data for 1 year or even more than 2 years whereby it’s displayed in monthly basis.

Well, the standard options, we can use paging (there is required time to navigate from 1 page to another page) or display everything in one shot (so it exceeds the width of windows / user need to scroll right and left).

There is another option that we can use that it uses an internal scrolling. So the scrolling only happens within that data analyzer only (like the picture below). Using this way, users don’t have to wait for sometimes to navigate to next page (if we use pages) /scroll left/right of the window.

The good thing from it that we can setup the fixed column, the default fixed column is the characteristic so that the key figures that we can scroll left/right or we also can setup the fixed column on the key figure itself e.g. there is summation of the previous year that user want to use it as reference. So that usually, it’s also able to be used as fixed column.

For this one, you’re not needed to be able to code an ABAP. The module is already provided by SAP :D. You only use and configure it.

Fixed Column and Scrolling in BI7

How to configure it:

  1. Go to property for your analysis Item.
  2. You will find Internal Display property, the first setting , you will see Modification.
  3. Change the value for Modification to Single Module.
  4. Insert this module: com.sap.ip.bi.rig.Scrolling
  5. Activate the module, there is a value to be configured as active.

Bim, salabim .. You activate, save, and execute it. Then you’ve already had it. The fixed column for that one is still the default one which is the characteristic. If you wanna configure it, you can configure the parameter for COLUMN.

The things that I want to highlight is about the performance :p. It impacts the performance J. Especially in loading data when opening report because there’s required time for rendering. There are many layers used for creating this good report presentation, but after that, user will be happy. So don’t forget that performance things must be told to the user and they need to sign to approve :p

Hope this sharing is helpful

In order to start planning for the next quarter, administrator needs to prepare the box/data, so users can start planning or in closing period administrator/business user need to prepare the data submitted to present to management. Administrator/Business user need to massage the data, and in order to do that, they need to lock the data to refrain from user access the data.

If user’s accessing data means they reserve data ( impacting to conflicting locking ), data is not valid. But bear in mind, data locking only happens to users not to administrator/business user. Usually before administrator do data locking, administrators will inform to user by e-mail about planning/forecasting unavailability beforehand. But let say, there are still users planning/forecasting/reserving data though they’ve already been informed in advance, system will keep user not able to submit their changed data.

To make it, I use characteristic relationship. Both Characteristic Relationship and Data Slice are able to make planning layout not input-ready. The different is if user is in the midst editing data, and we activate data slice. Users are still able to save/submit the data, the planning layout will not be input-ready, if users refresh the planning layout. But for Characteristic Relationship will refrain system from user submit the data, though users will see the planning layout as well after they refresh the planning layout, but at least they can’t save/submit their data. You can see the data validation done by characteristic relationship in the picture above ( pict: data validation).

Administrator Locking Maintenance

There is a layout for administrator/business user to maintain the data locking. At here, I set that administrator is able to lock for all data or based on particular selection data. The configuration in term of what Company Code or LoB or AOO to be locked are stored in ODS, I use planning function in order for user enable to store it (see left picture). The beauty is when administrator activate the locking, it doesn’t only activate the characteristic relationship but it also release the reserved data in t-code rsplse. In the other words, we’re no longer see the user data reserve/lock in t-code rsplse (IP Locking maintenance).

Unreserve user’s data locking

When users do a planning, you’ll see in the t-code rsplse that they’re reserving the data. If you’re opening the same data like what they’re opening at that moment than you’re unable to plan / even you’ll . System will refrain you from planning and sytem will throw out the message ” the data is locked by XXX” . Vividly it’ll be explained in t-code rsplse in tab ‘conflicting locking’ that you’re opening the same data that user’s opening now. With regards to this mater, definitely when administrator is running their fucntions, all data are being reserved by user must be released. We can release it by t-c0de sm12, but it’s not safe, if we grant administrator that t-code. Therefore, this solution use ABAP to replicate what sm12 does to release that lock.

You can use function module: ENQUE_READ and ENQUE_DELETE. The steps are you read first what user is currently locking, than using the derived data, delete the data from lock queue. If in this solution, I can release according to what user select (Line of Bussiness, Company Code, and Area of Operation), than you definitely must check the detail from that locking. What data are currently locked. You can get the detail by using method read_locks of class cl_rspls_enq, by using this method, you’ll know what user’s locking e.g. target version.

Refrain user from planning

If we’ve already activated admin locking than all the planning data are opened by users will not get input-ready. For this one I handle it using characteristic relationship at method check. In the method check, if you go to attribute class, you’ll see e_is_valid, you just assign blank value .

At this solution, the system have luxuries:

  1. Though admin locking status is in active, but it won’t lock administrator. It’s very important, otherwise administrator won’t be able to run functionalities because of encountering locking.
  2. When admin locking status is active, user won’t see their planning layout be input-enabled, nevertheless they’re still reserving the data. It looks awkward, but it’s true. Therefore, for user, if they’re encountering not input-enabled caused by admin locking, system will also unreserve data according only to his/her userid.
  3. System is aware, currently, administrator lock all data or lock according to company code or LoB or Version or Terminal node or etc.

Those 3 points logic are coped in the characteristic relationship.

Messages

Messages are also important at here, otherwise user will yell out when they know that they’re unable to forecast, they think that they’re encountering system error. Therefore, everytime admin lock is in active mode, there will be message saying that admin lock is active, and they’re kindly asked to logoff from system.

With regards to this message, I use custom extension web item. It’s same like what we have for extension for analyzer in bw 3.x. Due I’m currently at BI 7.0, so I use this web item. At high-level one, this web item is very good. Due we can interact to ABAP table directly and convert it to html for presentation. In the other word, I read my ABAP admin locking table and get the current status value, and presenting it at wad.
The detail for using this web item, I’ll explain in my other different blog.

Hi All,

As we know that’s business is growing up, so sometimes user request some information to be revealed within the reports. Somehow this case needs to add info object within Info Provider, but the info provider has already had huge data, so it needs a lot of time and resource to update/extract filling the new field.

The solutions for it, we can use virtual characteristic/key figure. Virtual characteristic itself means that the info object is within info provider, but it’s not filled up the data. even thought it’s not filled up the data, but report sill can show the corresponding data, due it will process to extract the data for that info object when query running.

Right now, i’m gonna deliver this virtual characteristic using BADI. Using BADI, we don’t have to care about transport request. Means, if our colleague is creating the virtual characteristic, we can also create our own virtual characteristic without must wait until he/she finish their job.

My case is:

Pic 1

For this case, I’m gonna map between Inquiry type and pocket.
Inquiry type => Pocket
TI => DP (Dopod)
PT => ET (Eten)
OT => HTC (HTC)
BT => KJ (K-Jam)
OL => OT (O2)

The Pocket is Virtual Characteristic

How to make it:

1. Prepare the Pocket IO (info-object) with master data (In order to fill the description).

Pic 2

2. Maintain it’s master data text.

3. Insert the IO Pocket to corresponding Info Provider.

4. Make it blank in the update rules.

5. Go tcode: se18

6. Choose for create for new, change for modification.

7. Define the info-provider, name, and description.

8. SAP has already had the template for it. You can use it.

Pic 3

9. There are 2 methods need to be modified, for initialize don’t have to be modified.

10.  You need to add all info-object needed from corresponding info provider to it’s attributes.

Double-click on this

Double-click on this

You need to add suffix P_CHA_(characteristic name)

You need to add suffix P_CHA_(characteristic name)

11.  Modify the define method, for definition area. .

Pic 6

*** Like zactvtyp ,,, the mode is read, because you only read the value from ODS. <point A>
*** zactvmpk,,, the mode is no selection (writting), because you’ll store some value on it <point B>

12. Modify compute method, for logic area.

Pic 7

13. Add the virtual characteristic in Query Designer.

14. Generate report for in tcode: RSRT.

Pic 8

*** If you tap on that button, the system will run the code in define method area.

15. Execute it, you’ll get the result.

Well, these all are the steps that i can deliver here.

Hope it can help you .

Hi All ,,

I used to have requirement to transfer data from SAP BW into SAP CRM for data sales. The data that we wanna fetch were not from info provider, but from Reporting.

Actually there is another techniques to read data from query bw report, that techniques is MDX. But MDX is more complex.

High level:
CRM :

1. Creating table in order to keep data from SAP BW using t-code EEWB.

BW :
1. Creating APD using t-code RSANWB and transfer the data to SAP CRM.

Detail levels in SAP CRM:

1. Go to t-code: EEWB.
2. Create New Project
3. Create Extension

Pict 1

Pict 1

Then it will show in wizard.

4. Step  1: Input the scenario name.
e.g. ZTBL1
This name will be table name for keeping data from SAP BW.

5. Step 2
– Input the system ID of your BW System.

6. Step 3

Pict 2

Pict 2

Defining what Info Object gonna be transfered from BW to SAP CRM. For the primary Key, you can define it based on point A pict 2 above.

7. Step 4.
– If it has finished, you’ll see the summary for what info object that’s gonna be picked out.

8.  You’ll also see the successfull sign within t-code EEWB.

Pict 3

Pict 3

Successful sign -> point A
Table name within SAP CRM for keeping data SAP BW  -> point B
Table name within SAP CRM as the shadow to keep data -> point C

Detail in SAP BW

In this case i’ll use the most simple case that we don’t do a transformation, but we only transfer data.

1. Go to t-code: RSANWB

Pict 4

Pict 4

2. Buat schenario :
Z1 use point A
Z2 use point B
Z3 drag & drop from Z1 to Z2.

3. Properties dari Z2

Pict 5

Pict 5

Subobject is the table name within SAP CRM (wizard step 2).

Pict 6

Pict 6

( The attribute tab, is all the info object that’s not chosen as primary key within SAP CRM – wizard step 3).

4. Property of Z3

7

Point A : CRM Target.
Point B : BW Source.

Here it’s my post for now .. Well, hopefully it’s useful . Usually i keep it on my personal database, but right now, i’d like to share to all of you.

GBU All.

Hi All,

Today i’m gonna share my knowledge regarding running info package by program. At that time, I used this way, because i didn’t let user use t-code RSA1, but i also wanna ask them as the one triggering the extraction.

So i decided to create one t-code where they can access, give parameter, and execute the info package.  If in the BPS, we can put this code in exit planning function, then it’s executed within t-code UPSPL. We also can use external program e.g. excel, vb, etc in order to call the RFC containing this code.

Simple case: we have info package to extract sales data where this info package has parameter/selection Date.  I only want to execute it by simple program.

Here it’s the ABAP Program for it.

” define variables.

Data:

p_date TYPE TABLE OF bapi6109sel WITH HEADER LINE ” variables for info package selection

, p_bapireturn LIKE bapiret2 OCCURS 0 WITH HEADER LINE

BEGIN OF it_infopackage OCCURS 0, ”  itab  for  storing info package ID , using ITAB, if you wanna execute multiple info package.

tinfopackage LIKE bapi6109-infopackage,

END OF it_infopackage.

” Input data into info package selection variables

p_date-fieldname = ‘ZSYNCDT’. “this ZSYNCDT is Info Object name representing the selection .

p_date-low = p_datefr. ”  this is the parameter that user can fill in

p_date-high = p_dateto.this is the parameter that user can fill in

APPEND p_date.

Define what info package that’s going to be run.

it_infopackage-tinfopackage = ‘ZPAK_AKBH97TU9YNAN73YHENNSWJ8A’. ” this ID can be captured in info package screen.

APPEND it_infopackage.

Executing info package. .

LOOP AT it_infopackage.

” Use this BAPI in order to input parameter into info package selection.

CALL FUNCTION ‘BAPI_IPAK_CHANGE’

EXPORTING

infopackage = it_infopackage-tinfopackage

TABLES

selections = p_date

return = p_bapireturn.

” Use this BAPI in order to execute the info package.

CALL FUNCTION ‘BAPI_IPAK_START’

EXPORTING

infopackage = it_infopackage-tinfopackage

TABLES

return = p_bapireturn.

ENDLOOP.

This code can be put within program (SE38) so you can create dialog screen, and execute info package. Or you can put it within RFC (SE37), then the RFC can be triggered from external program.

Well..

Hopefully, my share can be usefull ..

Hi All ..

In 2007, we had issues in performance. One of the solutions is archiving data.  At that time, archiving was the first one used in this company, so that I did trial and errors. Here it is some of trials I did. Hopefully it can be usefull.

Btw, the manual document to archive data, can be catched in : http://help.sap.com/bp_biv170/documentation/HowToArchiveInBW.pdf

a. Info Provider is locked once you’ve not finished yet archiving cycle.

Archiving cycle comprises 2 phase: write and delete. Write is gather the data and write it into one file. Delete is get rid off the data from info provider. But, if we only do for write, yet to delete. The info provider will be locked means the info-provider can not be loaded the data.

Error message captured

Error message captured

At that time, we needed to write it first, and later for delete. It’s done due we want to do analyzing the archived data e.g. file size .

The solution i got, you still can extract data eventhough you just did a data write. So you can have the archived file, without needing to delete the data within info-provider.

How can you do it ?

You must change the value of notguilty fields from blank into ‘X’ within admi_run table. Due it’s SAP Table, so you can’t do it directly using t-code SE16; but you need to create small program to alter the value.You can search the value within admin_run table by Archiving Object ID.

b. Getting error when restoring archived data file.

Captured error message

Captured error message

I got this message when getting extract data from archived file.

How did i resolve ??

You must apply this note : 1043355. Then after that, you can re extract data from archived file.

c. Can’t write archived data due to attribute only attribute.

I got this error when archiving data in write phase.

Error message captured from tx: ST22

Error message captured from tx: ST22

it’s caused by ZCRT_DATE info-object is marked as attribute only. If one IO is marked as attribute only means, this IO can’t be resided as navigation attribute. This IO can be put in Info-Provider, but it’s not part from this Info-Provider, so when function RSDRI_INFOPROV_READ is reading the IO, it will raise error (read notes: 979660).

How did i solve it ??

I released the setting of attribute only from ZCRT_DATE  IO and unchecked with ODS setting for SIDs Generation upon Activation.

Then re run archiving process for write phase.

Well those all are the share from some i got during it. I usually keep all what i get within my internal database. But now, i try to share it to you all .

Hopefully it can be useful.