SAP for Utilities Discussions
Connect with fellow SAP users to share best practices, troubleshoot challenges, and collaborate on building a sustainable energy future. Join the discussion.
cancel
Showing results for 
Search instead for 
Did you mean: 

SETTLEMENT procedures - change values statuses (SET_CUSTOMER_VALUE_STATUS?)

Former Member
0 Kudos

Hi, Experts,

at customer, we have implemented a solution, in which during processing of settlement step (e.g. standard 'SUMINTSU' step), we redefined the PROCESS method (in this case of class CL_ISU_EDM_SETTLSTEP_0003).

In that redefinition, we use standard method ADD_SUBTRACT_VALUES to compute the output value for the corresponding profile. Now, this solution is OK and works fine.

Cusomer's next need is to evaluate the output profile values statuses (that means the status of each profile value at each timestamp). Those statuses are located in the interface IF_ISU_EDM_PROFILE_DATA, attributes VALUE_STAT_TAB, VALUE_STAT_TAB_UTC. In the database, statuses are located in table EPROFVALSTAT.

We have already made one working solution in 4.6C system, but we managed that only by changing many standard objects (under time pressure). Now we have to do the same on a 6.0 system with a minimum of changes to standard objects. I already made some analysis in the CL_ISU_EDM* classes framework and found out methods SET_CUSTOMER_VALUE_STATUS and LCL_PERFORM_VALUES_ACTION in class CL_ISU_EDM_PROFILE that should do the job (as I made some sort of debugging).

Now my problem is to find out, how to call those methods and how to manage to compute the values and statuses of values either at once (in 1 processing step) or even in 2 steps. Again, with a minimum of changes to standard objects. I was not able to find any docu on this topic (I only have Guidelines for the Development of Settlement Procedures" - year 2001 and did not find any newer.

Any help will be appreciated

Thanks in advance

6 REPLIES 6

Former Member
0 Kudos

anybody did setting of customer value status during settlement steps?

thanks for any help

0 Kudos

HI, Jozef,

at my project i am always checks the status of profile values in the settlement period. For this is propose exist settlement step STATCHECK1, which is based on the standard class CL_ISU_EDM_SETTLSTEP_0010.

In case if you want to use table VALUE_TAB, VALUE_STAT_TAB and etc may be optimal is to use class CL_ISU_EDM_SETTLSTEP_0010, method PERFORM_VALUES_ACTION, one of the parameter for this method is X_HANDLE TYPE IF_ISU_EDM_PROFILE_DATA. In this is interface exist attributes what you need.

Best regards,

Igor

0 Kudos

Hi, Igor,

thanks a lot for your answer. I already know about the method PERFORM_VALUES_ACTION, it's implementation is placed in the class CL_ISU_EDM_SETTLSTEP (not in CL_ISU_EDM_SETTLSTEP_0010 - as the method is flagged as final, you can't redefine this one). Yes, you are right, that the attributes (tables VALUE_TAB, VALUE_TAB_UTC) are placed in the corresponding interface, but this does not help me solving the problem, how to change the statuses during settlement step.

1. In the call of LCL_PERFORM_VALUES_ACTION (class CL_ISU_EDM_PROFILE), there is a parameter - CUST_VAL_STAT_TAB, but this only works in the process of importing profile values - not in the process of settlement step (I can't fill the parameter, as there are other calls precending this one).

2. Even if I could fill the parameter, mentioned above (1.), I still have to use only one of the parameters ACTION_TAB / CUST_VAL_STAT_TAB. As ACTION_TAB will keep the computed profile values and CUST_VAL_STAT_TAB can set the statuses of profile values, but I can't combine them (leads to an error). This I tried only in debugging.

3. If i set the settlement steps in the order - first the step to compute the values, second the step to set the value statuses, then the statuses will be set, but values will be initial (as the second step initializes the values). If I reverse the order of those two steps, then the values will be computed ok, but the statuses will remain system-managed (no custom statuses are set).

So really helpful would be any real implementation of this process - if anybody did exactly this - setting customer statuses for calculated profile values.

0 Kudos

Sorry, Jozef

several words.

My opinion is - you must create new class(by example redefine CL_ISU_EDM_SETTLSTEP....it's working, create new class "Save as" from existing class). For our project it's regular task.

Inside new class, you can write either logic to calculate value or status. And of course you can implement other classes, methods into your new class (by example, CALL METHOD cl_isu_edm_profile=>check_opening_timerange from class CL_ISU_EDM_SETTLSTEP).

At the standard list of classes for EDM settlement you can't find any step to calculate\change value status.(may be only one method Estimate Missing Profile Values - replacement procedure).

Igor

0 Kudos

Thanks again, Igor, for your answer,

yes, I already have a new class, which had to be binded with the corresponding settlement step (to compute the value statuses). I have it named in the customer namespace (Z*) - but this is not important.

I don't have any problems with the logic of computing values / statuses, but I do not know, where to put the logic. As for the values, it is easy - method PROCESS and in in, calling method ADD_SUBTRACT_VALUES - method can be redefined, but it's purpose is to serve as a place for changing the values (not statuses). Therefore the attributes of changing profile parameter are read-only (VALUE_STAT_TAB, VALUE_STAT_TAB_UTC).

Also, I know, that there probably is not any standard method for deriving customer output status for incoming statuses. But still, I'm looking for a solution with a minimum of changes to standard objects. I know how to customize the settlement process, how to manage classes, redefining their methods and all the coding. The problem remains in the place, where to do the status changing (which method) and how to implement it (in one settlement step including computing the profile values, or in two steps, where one computes the values and the second derives the output statuses).

Any help will still be appreciated.

Thanks a lot

0 Kudos

As there was no other way found, for those of you with the same issue, here is MY final solution:

- having settlement step 'ZTEST', create a new class in your customer namespace (inherited e.g. from CL_ISU_EDM_SETTLSTEP_0003) and bind it in view-cluster VC_EEDMSETTLSTEP with the corresponding step ('ZTEST'). Of course, the step has to be correctly customized,

- redefine method PROCESS, implement ADD_SUBTRACT_VALUES (or other method, if needed) to compute the profile values. As I derived outcoming value statuses, I stored them in a local table and passed it via MEMORY ID,

- from that MEMORY ID I loaded derived statuses in class CL_ISU_EDM_PROFILE, method LCL_PERFORM_VALUES_ACTION and AFTER THE CALL of function module ISU_EDM_STATUS_PROFVAL_CHANGE, I filled my own customer value statuses to the attributes me->profile-profstatus and me->profile-profstatus_utc.

Hope this helps somebody

Thanks Igor for his effor