cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

UJK_EXECUTION_EXCEPTION:Runtime error Could not generate the object; the class \PROGRAM=

Former Member
0 Likes
216

Hi,

I have the a script which is working fine for small set of data, script is in the attachment.

The above script works for 100 employees and 50 Grades.

When the Employees and Grade size increase the script is giving the error message as

Ex: Employee = 7000 and Grade = 500

System, generated 2929 records in 40 seconds

UJK_EXECUTION_EXCEPTION:Runtime error Could not generate the object; the class \PROGRAM=

I have tried to use the RunLogic_PH as shown below, i am getting the same number of records i.e 2929 in 40 seconds. With NO ERROR message.

Logic should create 4711 entries, instead it is creating 2929 entries.

Why system is not creating 4711 entries?

This issue is continuation of another closed discussion

Regards,

Tej

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Likes

Hi,

This is my further analysis.

I have tested with 3000 employees and 199 Grades.

My this code is selecting 199 Grades

*SELECT(%EMP%,[GRADENO],EST_POSITION,"[GRADENO] <> ' '")

*SELECT(%FIN2%,[ID],GRADE,"[ID] = '%EMP%'")

So when I use this code

*XDIM_MEMBERSET GRADE = %FIN2%

my Grade has list of all 199 Grades.

When i run the code in UJKT, the Log has 2 sets one is LGX and other in LOG.

LGX is working fine for 199 Grades, problem is with LOG.

It is taking only 34 Grades only.

I have tested this scenarios with 199 Grades and 500 Grades.

LGX is working for 199 or 500 Grades. but LGX is taking only first 34 Grades?

Can it be reason of less storage space in BW?

Regards,

Tej

former_member186338
Active Contributor
0 Likes

Ups, but why do you think that you will have any effect with RUNLOGIC_PH without changes of SALPEREMP.LGF???

If you want to use CHANGED=GRADE, then remove from SALPEREMP.LGF:

*FOR %FIN% = %FIN2%

move

*SELECT(%EMP%,[GRADENO],EST_POSITION,"[GRADENO] <> ' '")

*SELECT(%FIN2%,[ID],GRADE,"[ID] = '%EMP%'")

to the script with RUNLOGIC_PH call

And add line

DIMENSION GRADE=%FIN2%

Then use in SALPEREMP.LGF:

*XDIM_MEMBERSET GRADE = %GRADE_SET%

Vadim

Former Member
0 Likes

Hi vadim,

I have changes the script as per your suggestion.

The end result of script is it didn't post any new entries in the system. Script and Log attached.

Regards,

Tej

former_member186338
Active Contributor
0 Likes

Sorry,

But you didn't change the script SALPEREMP.LGF correctly ...

Have to be:

//NO FOR/NEXT!!!!!!!!!

//The script will be called multiple times in parallel - each call with unique GRADE passed in %GRADE_SET%

*XDIM_MEMBERSET GRADE = %GRADE_SET%

*XDIM_MEMBERSET ACCOUNTHR = AC_ACOA0000500000

*XDIM_MEMBERSET CHANGE_LEDGER = CL_159

*XDIM_MEMBERSET LOCATION = LO_NONE

*XDIM_MEMBERSET PROJECT = PJ_NONE

*XDIM_MEMBERSET RPTCURRENCY = LC

*XDIM_MEMBERSET TIME = 2016.INPUT

*XDIM_MEMBERSET VERSION = VE_ACTUAL

*RUNALLOCATION

*FACTOR = 1

*DIM EST_POSITION WHAT = NO_EMP; WHERE =[GRADENO] = "%GRADE_SET%"

*ENDALLOCATION

The script with RUNLOGIC_PH have to be (correct!):

*SELECT(%EMP%,[GRADENO],EST_POSITION,"[GRADENO] <> ' '")

*SELECT(%FIN2%,[ID],GRADE,"[ID] = '%EMP%'")

*START_BADI RUNLOGIC_PH

QUERY = OFF

WRITE = ON

VALIDATION = OFF

LOGIC = SALPEREMP.LGF

DIMENSION GRADE=%FIN2%

DIMENSION ACCOUNTHR = AC_ACOA0000500000

DIMENSION CHANGE_LEDGER = CL_159

DIMENSION LOCATION = LO_NONE

DIMENSION PROJECT = PJ_NONE

DIMENSION RPTCURRENCY = LC

DIMENSION TIME = 2016.INPUT

DIMENSION VERSION = VE_ACTUAL

CHANGED = GRADE

DEBUG = OFF

*END_BADI

Hope you correctly set up parallel execution...

Vadim

P.S. Please read the document How To Implement the RUNLOGIC_PH Keyword in SAP... | SCN

in order to properly use RUNLOGIC_PH with CHANGED parameter!

Answers (0)