on 11-27-2017 6:54 AM
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
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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Good point about table definition, this should be an answer not a comment 🙂
Hint: Under 'actions' you can convert comment to answer and vice versa...
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.
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..
"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.
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).
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.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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..
User | Count |
---|---|
87 | |
10 | |
10 | |
9 | |
7 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.