Author |
Message
|
hellobond070 |
Posted: Mon Jul 26, 2010 3:15 pm Post subject: Issue with SAP Input Adapter : Unconvertable character |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
Hi everyone,
I am getting an error with few IDOCs which comes in the messsage flow using SAP Input adapter.
I tried searching and found the below links which are very close to my problem. But couldn't really find any solution.
http://www.mqseries.net/phpBB/viewtopic.php?p=212907&sid=fac4372d0b1b45fdc2e5913a4ce5bc9e
How do I actually change the ccsid and encoding ?? Can I do it at SAPInput node ??
My message flow is as below :
SAPInput Node -> MQOutput Node
The message flow throws an error at MQOutput node everytime this IDOC is triggered with strange data.
Does anyone have any suggestion/solutions |
|
Back to top |
|
 |
hellobond070 |
Posted: Mon Jul 26, 2010 3:58 pm Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
I tried the below code to change properties, but I get 0 byte output message in the queue
Code: |
SET OutputRoot.Properties.CodedCharSetId = 1208;
SET OutputRoot.Properties.Encoding = 546;
SET OutputRoot.DataObject = CAST(InputRoot.DataObject AS BLOB CCSID 1208); |
|
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Jul 26, 2010 7:28 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
As you should. Check it out with a trace node. You need to get the tree right, including the namespace...  _________________ MQ & Broker admin |
|
Back to top |
|
 |
flahunter |
Posted: Mon Jul 26, 2010 8:03 pm Post subject: |
|
|
 Acolyte
Joined: 30 Oct 2008 Posts: 62
|
Quote: |
SET OutputRoot.DataObject = CAST(InputRoot.DataObject AS BLOB CCSID 1208); |
DataObject = BLOB? It's wrong.
Try this and see what will happen(I'm not sure )
Code: |
SET OutputRoot.DataObject = InputRoot.DataObject |
|
|
Back to top |
|
 |
Amitha |
Posted: Tue Jul 27, 2010 5:19 am Post subject: |
|
|
 Voyager
Joined: 20 Nov 2009 Posts: 80 Location: Newyork
|
Are you trying to output SAPInput message to an Queue?
what is the CCSID set by the SAP, it is usually UTF-8(1208) . In that case you dont need any compute node to change the CCSID. So,you just need to connect SAPInput node out terminal to MQOutput node. |
|
Back to top |
|
 |
hellobond070 |
Posted: Tue Jul 27, 2010 6:06 am Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
First the flow was just, SAPInput node -> MQoutput node
BUt due to this character issue, I tried introducing a compute node to change the ccsid |
|
Back to top |
|
 |
AndreasMartens |
Posted: Tue Jul 27, 2010 6:09 am Post subject: What's the actual problem |
|
|
 Acolyte
Joined: 30 Jan 2006 Posts: 65 Location: Hursley, UK
|
I think we're jumping to conclusions here...
- What's the exact error you're seeing?
- Where is the error being emitted from?
cheers |
|
Back to top |
|
 |
hellobond070 |
Posted: Tue Jul 27, 2010 7:32 am Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
Hi everyone,
Sticking my exception I am getting below.
We have a IDOC coming in from SAP input node going to MQoutput node.
THe error is getting thrown at MQOutput node and the IDOC is rolling back in SAP.
Please advise.
Quote: |
(0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File = 'F:\build\S610_P\src\DataFlowEngine\ImbMqOutputNode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 910 (INTEGER)
(0x03000000:NameValue):Function = 'ImbMqOutputNode::evaluate' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmMQOutputNode' (CHARACTER)
(0x03000000:NameValue):Name = 'mnm/ABC_SAP_XXXXXX#FCMComposite_1_1' (CHARACTER)
(0x03000000:NameValue):Label = 'mnm.ABC_SAP_XXXXXX.ABC.SAP.WMB.PACKAGEPO' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2230 (INTEGER)
(0x03000000:NameValue):Text = 'Caught exception and rethrowing' (CHARACTER)
(0x01000000:Name ):ParserException = (
(0x03000000:NameValue):File = 'F:\build\S610_P\src\MTI\MTIforBroker\GenXmlParser4\ImbXMLNSCParser.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 737 (INTEGER)
(0x03000000:NameValue):Function = 'ImbXMLNSCParser::refreshBitStreamFromElementsCommon' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmSAPInputNode' (CHARACTER)
(0x03000000:NameValue):Name = 'mnm/ABC_SAP_XXXXXX#FCMComposite_1_4' (CHARACTER)
(0x03000000:NameValue):Label = 'mnm.ABC_SAP_XXXXXX.IA_SAP_ALE_XXXXXX_Operations' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 5010 (INTEGER)
(0x03000000:NameValue):Text = 'XML Writing Errors have occurred' (CHARACTER)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = 'F:\build\S610_P\src\CommonServices\ImbConverter.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 290 (INTEGER)
(0x03000000:NameValue):Function = 'ImbConverterCPP::internalFromUnicode' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2136 (INTEGER)
(0x03000000:NameValue):Text = 'Unconvertable character' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'c300' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '4c0061006e00640031003e00420052003c002f004c0061006e00640031003e003c005a006c007300630068003e0046003c002f005a006c007300630068003e003c00540065007800740031003e0041
0052002d00560065006e0064006100200041006e00740065006300690070006100640061003c002f00540065007800740031003e003c002f005
300610070005a0073006400740054006100620065006c00610073005a0073006400730054003000340032007a003000300030003e003c005300610070
005a0073006400740054006100620065006c00610073005a0073006400730054003000340032007a003000300030003e003c004d0061006e006400740 ' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 2 (INTEGER)
(0x03000000:NameValue):Text = '437' (CHARACTER) |
|
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Jul 27, 2010 7:38 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Amitha wrote: |
Are you trying to output SAPInput message to an Queue?
what is the CCSID set by the SAP, it is usually UTF-8(1208) . In that case you dont need any compute node to change the CCSID. So,you just need to connect SAPInput node out terminal to MQOutput node. |
Don't forget to set OutputRoot.Properties.CodedCharSetId=1208; _________________ MQ & Broker admin |
|
Back to top |
|
 |
Amitha |
Posted: Tue Jul 27, 2010 8:01 am Post subject: |
|
|
 Voyager
Joined: 20 Nov 2009 Posts: 80 Location: Newyork
|
Add an trace node and extract the ${Root} message.See what is the message coming from SAP and what is the CCSID set. |
|
Back to top |
|
 |
hellobond070 |
Posted: Tue Jul 27, 2010 9:33 am Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
Hi All,
I found the special character in the input SAP IDOC.
[quote]Ã[/quote]
I changed the data by modifying the special character with a replacement and it worked fine.
Can anyone let me know how can I resolve this issue with ESQL statements and the CCSID I need to use.
Environment details
Broker : 6.1.0.4
Platform : Windows |
|
Back to top |
|
 |
hellobond070 |
Posted: Tue Jul 27, 2010 9:37 am Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
Even if I use
OutputRoot.Properties.CodedCharSetId=1208;
I get the below error. This is the extrac of trace logs :
Quote: |
f004a005f00330041004b004f005200440032003e003c004a005f00330041004b004f005200440033003e003c002f004a005f00330041004b004f005200440033003e003c004d0045004e00470045003e00310'' cannot be converted from Unicode to codepage ''437''.
The source character is an invalid code point within the given codepage.
Correct the application or message flow that generated the message to ensure that all data within the message can be represented in the target codepage. |
|
|
Back to top |
|
 |
fjb_saper |
Posted: Tue Jul 27, 2010 10:19 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
hellobond070 wrote: |
Even if I use
OutputRoot.Properties.CodedCharSetId=1208;
I get the below error. This is the extrac of trace logs :
Quote: |
f004a005f00330041004b004f005200440032003e003c004a005f00330041004b004f005200440033003e003c002f004a005f00330041004b004f005200440033003e003c004d0045004e00470045003e00310'' cannot be converted from Unicode to codepage ''437''.
The source character is an invalid code point within the given codepage.
Correct the application or message flow that generated the message to ensure that all data within the message can be represented in the target codepage. |
|
Well the error message here is quite clear. You are trying to output some kind of multibyte character into a single byte character CCSID (437) which does not cater for the character you are trying to portrait...
So find out what is setting the CCSID to 437 (MS DOS) (maybe just default CCSID of the qmgr?)  _________________ MQ & Broker admin |
|
Back to top |
|
 |
hellobond070 |
Posted: Tue Jul 27, 2010 3:11 pm Post subject: |
|
|
 Centurion
Joined: 18 Nov 2009 Posts: 118
|
Everybody,
Thanks a lot of for your inputs.
I was able to resolve the issue by adding MQMD using ESQL statements and setting CCSID to 819.
I tried using the MQMD header node but got few plugin errors.
Quote: |
(0x03000000:NameValue):Function = 'ImbJniNode::evaluate' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmMQHeaderNode' (CHARACTER)
(0x03000000:NameValue):Name = 'gtn/VFC_SAP_YOONGC#FCMComposite_1_9' (CHARACTER)
(0x03000000:NameValue):Label = 'gtn.VFC_SAP_YOONGC.MQHeader' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2230 (INTEGER)
(0x03000000:NameValue):Text = 'Caught exception and rethrowing' (CHARACTER)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = 'F:\build\S610_P\src\DataFlowEngine\PluginInterface\com_ibm_broker_plugin_CMbService.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1861 (INTEGER)
(0x03000000:NameValue):Function = 'ImbJavaExceptionUtils::throwableToNativeException' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 4367 (INTEGER)
(0x03000000:NameValue):Text = 'Unhandled exception in plugin method.' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'evaluate' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'MQHeader' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'java.lang.NullPointerException' (CHARACTER)
)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = 'F:\build\S610_P\src\DataFlowEngine\PluginInterface\com_ibm_broker_plugin_CMbService.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1879 (INTEGER)
(0x03000000:NameValue):Function = 'ImbJavaExceptionUtils::throwableToNativeException' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 4395 (INTEGER)
(0x03000000:NameValue):Text = 'Unhandled exception in plugin method' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'java.lang.NullPointerException' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'com.ibm.broker.transportheadernodes.mq.MQHeaderNode' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'evaluate' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'MQHeaderNode.java' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 2 (INTEGER)
(0x03000000:NameValue):Text = '1074' (CHARACTER)
)
) |
|
|
Back to top |
|
 |
flahunter |
Posted: Tue Jul 27, 2010 6:00 pm Post subject: |
|
|
 Acolyte
Joined: 30 Oct 2008 Posts: 62
|
Quote: |
I was able to resolve the issue by adding MQMD using ESQL statements and setting CCSID to 819. |
How do you know you have resolved this issue, since another issue raised. And I don't think that it's a good idea to use MQHeader node
1. When your message flow is sourced by an MQInput node, the MQMD takes precedence over the Properties folder in terms of value propagation between the folders.
2. When your message flow is sourced from an input node that is not the MQInput node (such as the HTTPInput node or a user-defined input node), the MQMD header does not take precedence over Properties folder .
3. When a MQMD folder is added in a tree that was created by the HTTP Transport, this MQMD does not have control over the Properties folder and the value propagation direction is not MQMD to Properties; it is Properties to MQMD. |
|
Back to top |
|
 |
|