This website is not affiliated with, sponsored by, or approved by SAP AG.

BPS - Rolling planning with 2 dynamic characteristics?

All postings related to SEM only

Moderators: Snowy, thx4allthefish

BPS - Rolling planning with 2 dynamic characteristics?

Postby CF » Mon Mar 03, 2003 7:07 pm

Hello,

We are upgrading to version 3.1B, and would like to implement the rolling planning idea suggested in the help documentation. The problem is, our InfoCubes are defined with both fiscal year/period (0FISCPER) and posting period (0FISCPER3). Seems to me that both should be defined as dynamic in order for the data to be retrieved and saved properly? Since the system only allows one characteristic to be defined as dynamic, is there any way to get around this?

Thanks,
CF
CF
 

Postby Guille » Tue Mar 04, 2003 9:17 am

We faced a similar problem with 0FISCPER and 0CALMONTH. We are on SEM 3.2 and as of this release, there is no way to have more than one dynamic characteristic.
We solved it with a user exit function that runs either "On Save Folder" or "Before Layout Change" and which fills the 0CALMONTH according to the 0FISCPER (probably it can be done with a formula, but we needed extra processing so we didn't consider using FOX).
The way we implemented this is not optimal, since it required level duplication (planning was done on levels with only 0FISCPER and the 0CALMONTH was filled in levels which included both time char's), maybe you can find a better solution giving it a bit more thought.
One option we didn't explore was defining a characteristic relationship between 0FISCPER and 0CALMONTH in the planning area, maybe you can get somewhere that way.
Good luck (and please post here if you find a better solution, I feel curious).
Guille
 
Posts: 130
Joined: Wed Oct 23, 2002 2:47 pm
Location: Madrid

Postby SAPBWSEM » Tue Mar 04, 2003 9:28 am

If you only need one and not the other, you can just have either 0fiscper and 0fisper3 posting period on the level and use characteristic relationship.

Hope that helps.
SAPBWSEM
 
Posts: 214
Joined: Mon Jan 06, 2003 8:53 pm

Postby CF » Tue Mar 04, 2003 11:50 am

Thanks for the replies. My thinking right now is that it's better if we don't try to use the dynamic function. Since we overwrite data for the recast version with actuals as they become available anyway, the template can simply display 12 months of data with the recast version all the time. Now we are still faced with blocking people from entering data into those months not within the recast period range, and I can think of 2 ways to do that. The simpliest solution would be to create or adjust a data slice every time actuals are copied. The other solution would be to lock the cells via a VB macro which retrieves the recast period from a variable by calling the function module API_SEMBPS_VARIABLE_GETDETAIL.
CF
 

Postby Guille » Tue Mar 04, 2003 11:58 am

You can have two 0FISCPER variables for actuals and forecast (which you could even fill via user-exit to reduce maintenance) and use dynamic columns anyway (when creating the layout, one of the dynamic columns will use the actuals variable and will be for comparison only and another column will use the forecast variable, where data-entry is allowed).
That's the way we do it in our project (in case I have understood what you mean).
Guille
 
Posts: 130
Joined: Wed Oct 23, 2002 2:47 pm
Location: Madrid

Postby CF » Tue Mar 04, 2003 1:22 pm

We actually run a job before a recast to copy the data from the actuals version to the recast version. For example, in April we would copy Jan-Mar actuals to the recast version and overwrite the data that was previously there (in this case it would be Jan-Mar budget). Users are allowed to change Apr-Dec data for the recast version only. By displaying Jan-Dec data for the recast version I am in fact showing the appropriate data. The only challenge then is to disallow Jan-Mar data from being changed by mistake. The data slice solution would work but the data is not physically locked on the screen. In order to lock the cells on the template on the fly, I will have to find a way to call a function module from the VB exit in the template. The trick is to get a handle with the SAP connection. I tried getobject(,"SAP.FUNCTIONS") but it didn't work, probably because the template was rendered with Excel in place. Do you know of a way to do that?
CF
 

Postby Raycop » Tue Mar 04, 2003 7:20 pm

If I understand this correctly, you want to access the value in a planning area variable and use it to restrict entry in columns or rows on your layout. If that's it then you can do the following.
Hide an unused column on your layout.
Use a spreadsheet exit to read your variable and paste its value into a specific cell in the hidden column.
Use the cell value in SAPAfterDataPut to prevent entry into cells, in your example the Jan-Mar range.
Raycop
 
Posts: 16
Joined: Tue Jan 21, 2003 6:09 pm
Location: Sydney, Australia

Postby CF » Tue Mar 04, 2003 9:30 pm

Thanks for the suggestion. I was actually thinking about reading a variable defined for one of the planning areas (thus requiring the VB macro to read the ABAP API function module that retrieves the variable value). If I understand your suggestion correctly, the variable values (in this case the period range) would be imbedded directly in the template itself. The disadvantage might be that the values would need to be repeated in each template where this logic is required, with the associated maintenance effort every time the period range changes.
CF
 

Postby Raycop » Tue Mar 04, 2003 10:04 pm

We are not quite on the same wavelength on this one.
I am talking about using a spreadsheet exit to ABAP, retrieve variable values, and store those values in hidden cells on the spreadsheet for use by the macro.
The value range would not be embedded in the template. The name of the variable is required and can be hard coded in the ABAP function or in another hidden cell on the layout.
Raycop
 
Posts: 16
Joined: Tue Jan 21, 2003 6:09 pm
Location: Sydney, Australia

Postby Guille » Wed Mar 05, 2003 3:13 am

Sorry to insist on this solution, but we have achieved that functionality without any macro programing at all, just standard BPS.
We have a 0FISCPERvariable for Jan-Mar (actuals) and another one for Apr-Dec (recast) (we change this variables every month).
We create the layout in a level where 0FISCPER is restricted using the recast variable.
When defining the layout, we define data columns as dynamic for 0FISCPER.
Then, when defining the data columns we use two entries. One of them uses the actuals variable as Fiscal year/period (since this is "outside" of the level restriction, it is automatically set to comparison and no data entry is allowed) and in the other entry we use "0FISCPER" as Fiscal year/period (so the values in the level, the recast periods, will be used and data entry will be allowed).
I promise not to insist more on this if you tell me this doesn't work for you :wink:
Good luck.
Guille
 
Posts: 130
Joined: Wed Oct 23, 2002 2:47 pm
Location: Madrid

Postby CF » Wed Mar 05, 2003 5:27 am

Raycop,

Can you elaborate on what you mean by "spreadsheet exit to ABAP, retrieve variable values"? As far as I know, the only opportunity for coding on a template (manual planning function) is putting VB code in either of the two events (before data get and after data put). Is this where you would put the spreadsheet exit to ABAP? I'm just not sure how to call ABAP from there. Can you provide some sample code?

Guille,

I am probably missing something, but how does your solution deal with my original problem, where both 0FISCPER and 0FISCPER3 (or in your case 0CALMONTH) need to be kept in sync, but only one of them can be flagged as dynamic? Our InfoCube has been populated with both characteristics, so I would have to define 0FISCPER3 as a data column, right? Or are you suggesting that 0FISCPER3 be left out of the planning area enitrely, and only fill it with a function after the data is saved?
CF
 

Postby Guille » Wed Mar 05, 2003 5:37 am

Yes, that is the way we do it: 0FISCPER3 (0CALMONTH in our case) is not used in the layout, and it is filled afterwards automatically by a function running "Before Layout Change" or "On Saving Folder".
It may not be a very elegant solution, but it saves programming effort.
Guille
 
Posts: 130
Joined: Wed Oct 23, 2002 2:47 pm
Location: Madrid

Postby Raycop » Wed Mar 05, 2003 6:46 pm

CF,
Great to see a lively debate in this forum.

SAP provides exits to ABAP immediately after data has been pasted to an Excel spreadsheet, and just before data is retrieved. For some unknown reason they have chosen not to document this but I can assure you the exits are there.

The function modules to be called are declared in the layout definition, a write module and a read module. The write is executed immediately after the Excel layout has been pasted to the screen, but before any macros run. The read module is executed immediately after macros have run when checking and saving data.

I started using these exits in Aug 2000 and that was on 3.0A, so it's not something new. Apart from getting variable values, you can use them for complex selections of master data which you can paste to a hidden work area, and then use VB to check entered data.

I have some documentation but it is too much to post here. If you email me I'll see if I can put some something together over the weekend when I get back home.
Raycop
 
Posts: 16
Joined: Tue Jan 21, 2003 6:09 pm
Location: Sydney, Australia

Postby CF » Wed Mar 05, 2003 9:10 pm

Raycop,

I would love to learn about this technique. It sounds really powerful. Please email the documentation to cwf_ca@yahoo.com.

Thanks again,
CF
CF
 


Return to SEM

Who is online

Users browsing this forum: No registered users and 1 guest





This website is not affiliated with, sponsored by, or approved by SAP AG.