Skip to Content
0

Binding from method of a class to task container in workflow

Nov 27, 2017 at 06:54 AM

328

avatar image
Former Member

Hi all,

I am trying to bind multi line export parameter of method(class based) to a task in workflow. binding is perfectly defined and step is activated.

when i run the workflow, work item hangs with status 'In progress', and dump is thrown. i have defined a table type for muti line and used the same data type inside method and task container definition. i tired looking all the available resources with out much success. your inputs would be highly help full.

________________________________________-----

DUMP Description

-----------------------------------------------------------------------

Category ABAP programming

error Runtime Errors MESSAGE_TYPE_X

ABAP Program CL_SWF_RUN_WIM_LOCAL==========CP

Application Component BC-BMT-WFM

Date and Time 27.11.2017 16:59:38

Short Text The current application has triggered a termination with a short dump.

What happened? The current application program has detected a situation that should not occur. A termination with short dump has therefore been triggered by the key word MESSAGE (type X).

What can I do? Note which actions and entries caused the error to occur.

Consult your SAP administrator. Using transaction ST22 for ABAP dump analysis, you can view, manage, and retain termination messages for longer periods.

Using Transaction ST22 for ABAP Dump Analysis, you can look at and manage termination messages, and you can also keep them for a long time. Error analysis Short text of the error message:

System error: Database table CONTAINER could not be written to Long text of the error message:

Diagnosis A modifying operation on the database table CONTAINER ended with an error. The problem occurred with instance 000050076677.

System Response The workflow system has canceled further processing and executed a rollback. Procedure Contact your system administrator.

Procedure for System Administration Check the current status of the workflow databases and then try a restart. Technical information about the message:

Message class....... SWF_RUN

Number.............. 661

Variable 1.......... CONTAINER

Variable 2.......... 000050076677

Variable 3..........

Variable 4.......... " "

"MESSAGE_TYPE_X" "CL_SWF_RUN_WIM_LOCAL==========CP" bzw. CL_SWF_RUN_WIM_LOCAL==========CM051 "IF_SWF_RUN_WIM_PERS_INTERNAL~SAVE" If you cannot solve the problem yourself, please send the following

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

3 Answers

Best Answer
Sandra Rossi Nov 28, 2017 at 07:38 AM
1

Could you please attach the whole short dump as a text file?

What is the definition of the table type ZTFIAP_PAYBLK_APP? Is it sorted or hashed or has unique primary or secondary keys?

Show 9 Share
10 |10000 characters needed characters left characters exceeded

Good point about table definition, this should be an answer not a comment :)

1

Hint: Under 'actions' you can convert comment to answer and vice versa...

1

thanks, didn't know

0
Former Member

Hi sandra,

Thanks for the response. table type is just defined as standard with out any keys and uniqueness. i am attaching the dump for you ref. please find the attachment.also find table type properties screen shoot.

your inputs would be highly helpful, its little urgnt peice of work...

dump.txt (245.1 kB)
table-type.png (26.4 kB)
0

I see nothing in the short dump.

Does the line type of ZTFIAP_PAYBLK_APP contain at any level a data or object reference component? (type ref to) The system won't support non-serializable object references.

Did you implement everything correctly in your class? (especially did you implement all methods? cf answer by Vladimir at https://archive.sap.com/discussions/thread/3669051 )

Did you implement an explicit commit work or rollback work in your methods, or did you call anything that could do one?

EDIT: PS: The note 1945437 - Runtime error: MESSAGE_TYPE_X in the program CL_SWF_RUN_WIM_LOCAL describes the error SWF_RUN 661 due to a duplicate entry in table SWWWIHEAD, related to an invalid next number in the number range object SWW_WIID, but it doesn't seem related to your issue.

0
Former Member

Hi Sandra,

thanks for your time. issue has been resolved.

Internal table i was passing to task is having some junk characters. some of the numeric fields in container are not accepting this and throwing the dump. i had to debug the WF program to find out this. same junk characters are accepted if i use BO method.

Thanks all for your inputs and guidance..

1

"same junk characters are accepted if i use BO method."

Don't!

This is a perfect example of why OO is better. If you have non-numeric data in a numeric field then the dump was perfectly valid, thanks to the stricter check in OO ABAP.

BOR (classic procedural ABAP) doesn't care, which really just pushes the problem down the road and potentially makes it worse. Bad data is more difficult to correct later than a crash now.

IMHO, a far better solution would be to look at the source of the data and implement checking / conversion / validation there. Catching a problem as early as possible is always good.

0

Thank you for the feedback, it will be useful if other people encounter the same issue!

I guess the error comes from the "call transformation" to serialize the container data to save into the database (method SAVE_CONTAINER in class CL_SWF_RUN_WIM_PERSISTENCE --> method cl_swf_cnt_conversion_service=>to_xml_xslt, if you can confirm), as it has stricter checks (cf abap documentation of call transformation).

0
Former Member

Hi Sandra & Mike,

Thanks a lot for your inputs.

"a far better solution would be to look at the source of the data and implement checking / conversion / validation there. Catching a problem as early as possible is always good".

I do agree with mike, This particular case i have missed checking data quality. My initial design was with BOR and all worked fine with BOR. So i have over looked into data quality. Till i see this dump i didnt realize my data was corrupted. good lesson learnt.

If anybody facing this problem please check method SAVE_CONTAINER. it has all the validation written on data.

1
Mike Pokraka Nov 27, 2017 at 08:59 AM
1

You write about table type and multi line. Don’t use multi line container elements. A multi line structure is a table, a table type is a table, but a multi line table type is a table of tables.

Show 3 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Hi Mike,

I have taken care for this. container inside the task is defined with table type and marked as both import and export parameter. export parameter inside the method also created with same table type ref.

attached for your ref.

ITEM is a container inside my task to hold data coming from method. This is created by assigning tables type(ZTFIAP_PAYBLK_APP). when i assigned table type ZTFIAP_PAYBLK_APP to ITEM, mutiline check box is ticked by default.

wf-1.png (10.4 kB)
wf-2.png (15.7 kB)
0

The multiline property is on the 'Properties' tab. It must be off.

0
Former Member

hey mike,

when we specify type as table type for a container element, muti-line is ticked by default and we can not un-tick as it is graded out..

I am sure the issues is not because of container element properties...

0
Aditya Varrier Nov 27, 2017 at 08:22 AM
0

Hi Rakesh,

hope taskcontainer is import & export?

try running the BOR for the method and see if method-parameter fetches the value correctly.

Unable to understand the dump you have mentioned.

Aditya V

Show 1 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Hi Aditya,

Thanks for the response. yep task container is marked as both import and export parameter.

I have tried with BOR method, it is successful. Unfortunately i can not call BOR methods as per the coding standards at client site.

attached the dump section below. looking forward to your response..

error1.png (53.0 kB)
erro5.png (24.1 kB)
0