2009 Jan 09 2:00 PM
Hello gurus,
I'm getting an intermittent Status value of '02' on outbound DESADV Idocs.
There's no problem creating the IDOC segments.
The details on the status message are:
MsgID: EA
Msgno: 299
The system could not convert data from the data record 000010.
I'd like to locate the exact function module that composes the message.
I've tried setting a watchpoint for SY-MSGID = EA
and SY-MSGNO = 299
But, they aren't hit.
I also used transaction SE91 and the "where used" on the message number. That comes up blank.
Does anyone know which function module or class method is used to write this message?
Thanks
Ed Baker
2009 Jan 10 2:08 AM
Hello Ed
According to the longtext of the message there is a problem with the port definition.
A possible soure for the message generation might be include LEDI7F11, e.g. lines 717ff (on ERP 6.0):
...
if conv_return ge 6.
* das aktuelle IDoc muß aus I_EDIDC genommen werden
save_msgid = 'EA'.
save_msgty = 'E'.
save_msgno = '299'.
save_msgv1 = conv_edidd-segnum.
APPEND EDIDC TO ERR_SEND.
DELETE I_EDIDC. " Löschen aus der internen Tabelle der
" zu versendenden Kontrollsätze
* loop über Kontrollsätze muß verlassen werden
* Datei muß gelöscht werden-kann außerhalb des loops über i_edidc sein
exit. "verlasse loop
endif.
ENDIF.
...
Regards
Uwe
Hello Ed
According to the longtext of the message there is a problem with the port definition.
A possible soure for the message generation might be include LEDI7F11, e.g. lines 717ff (on ERP 6.0):
...
if conv_return ge 6.
* das aktuelle IDoc muß aus I_EDIDC genommen werden
save_msgid = 'EA'.
save_msgty = 'E'.
save_msgno = '299'.
save_msgv1 = conv_edidd-segnum.
APPEND EDIDC TO ERR_SEND.
DELETE I_EDIDC. " Löschen aus der internen Tabelle der
" zu versendenden Kontrollsätze
* loop über Kontrollsätze muß verlassen werden
* Datei muß gelöscht werden-kann außerhalb des loops über i_edidc sein
exit. "verlasse loop
endif.
ENDIF.
...
Regards
Uwe
2009 Jan 09 2:34 PM
Maybe IDOC_STATUS_WRITE_TO_DATABASE, can't verify that though. Set a breakpoint there and see if this FM is being executed.
Thomas
2009 Jan 09 3:33 PM
HI,
It may be because the message might be getting populated dynamically hence it does not show in Where-used list.
If you are in the mood to debug a little then you could set up a Watchpoint for 'sy-subrc NE 0'...
For an error message for sure 'sy-subrc goes NE 0'
Edited by: Ankesh on Jan 9, 2009 9:03 PM
Edited by: Ankesh on Jan 9, 2009 9:04 PM
2009 Jan 10 2:08 AM
Hello Ed
According to the longtext of the message there is a problem with the port definition.
A possible soure for the message generation might be include LEDI7F11, e.g. lines 717ff (on ERP 6.0):
...
if conv_return ge 6.
* das aktuelle IDoc muß aus I_EDIDC genommen werden
save_msgid = 'EA'.
save_msgty = 'E'.
save_msgno = '299'.
save_msgv1 = conv_edidd-segnum.
APPEND EDIDC TO ERR_SEND.
DELETE I_EDIDC. " Löschen aus der internen Tabelle der
" zu versendenden Kontrollsätze
* loop über Kontrollsätze muß verlassen werden
* Datei muß gelöscht werden-kann außerhalb des loops über i_edidc sein
exit. "verlasse loop
endif.
ENDIF.
...
Regards
Uwe
2009 Jan 10 6:53 AM
This is brilliant Uwe.
It points to the exact code that set the error message.
How did you do it?
I tried looking for the long text you referred to. But, I couldn't replicate what you found.
2009 Jan 10 7:00 AM
I think I found how you did it. Tell me if I'm correct.
In the "Logging" tab of the message, program LEDI7F10 (the include file of the EDI7 function group) is mentioned. You then went into that include and located the string "299"
I'd never observed this before. It's terrific to know it now.
Thank you so much
2009 Jan 10 8:46 AM
Hello Ed
I did the Where-Used-List for message class EA in SE80 (displayed its assigned package SED) because in SE91 you do not find any cross-reference. My expection was that at least the message class is somewhere referenced.
The LEDI1Uxx function modules appealed my attraction but I did not find the message there. The third try with the FORM include was successful. Within the include I simply did a text search for '299' in the main program (not really sophisticated but it works...).
By the way, if you need to send messages like they did in the include but want to be able to trace it I use the following trick that I have learnt from RE-FX:
...
if conv_return ge 6.
* das aktuelle IDoc muß aus I_EDIDC genommen werden
" Ensure traceability of the message:
IF 1 = 2. MESSAGE E299(EA). ENDIF.
save_msgid = 'EA'.
save_msgty = 'E'.
save_msgno = '299'.
save_msgv1 = conv_edidd-segnum.
APPEND EDIDC TO ERR_SEND.
...
Regards
Uwe
2009 Jan 10 8:12 PM
Very nice, Uwe
I did something similar to you. I frequently use this technique when dealing with function module groups.
As soon as I saw the LEDI7F10 in the logging tab of the IDOC error message, I just opened SAPLEDI7 with se38 and did a global search for "299"
Thanks again for your help. It was terrific.
2009 Jan 20 10:25 AM
Hi Ed,
Wonder if you manage to find out what is the root cause of the intermittent issue. If yes, kindly share your finding.
Best Regards,
Philip
2009 Jan 20 2:34 PM
I did find out how to do this after discussing it with Uwe in previous messages in this thread.
I actually wrote a small application note on it for other members of my team.
I'd be glad to email it to you if you want.
2009 Jan 21 1:32 AM
Hi Ed,
Thanks for sharing your finding. Wonder if it is alright to share it here.
Best Regards,
Philip
2009 Jan 21 3:08 AM
I'd be glad to send it to you. But, I don't know how to attach a document to a forum message.
Is there a way to do that?
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |