cancel
Showing results for 
Search instead for 
Did you mean: 

Sender JMS channel - Strange issue with special characters (^, ¢ etc)

Former Member
0 Kudos

Hi

I've a scenario JMS -> PI -> IDOC scenario on SAP PI 7.11. JMS channel is configured to read data from the queue configured the Mainframe (z/OS) system.

Regular alpha & numeric characters are being converted correctly, but special characters such as ^, ¢ are causing the problem. For eg, ^ (cap sign) is being converted as ¢ (cent sign), ¢ (cent sign) is being converted a [ (square bracket) etc. However, " is being converted correctly.

I've found out the CCSID as 500 from the Mainframe team and configured it accordingly. I've tried using various character sets such as UTF-8, US-ASCII, ISO-8859-1, EBCDIC, Cp037, IBM037, Cp500 etc in the ContentType but none of them solved my problem.

I've checked a few forum posts and 'How_to_Work_with_Character_Encodings_in_Process_Integration_(NW7.0)' document. I've tried using XMLAnonymizer bean, but found out that it would not help because the content of JMS messages is ~ delimited plain text, not an XML.

Can you please help me troubleshoot this issue? How do I make sure that special characters are converted correctly?

So far, no message has failed because of special char conversion...they are being converted wrongly but not failing due to parsing or mapping error.

I greatly appreciate your inputs.

Thanks in advance

Praveen

Here is the Module configuration

Processing Sequence

NumberModule Name
Module Key
1SAP XI JMS Adapter/ConvertJMSMessageToBinaryconvert_JMS2Bin
2SAP XI JMS Adapter/ConvertBinaryToXMBMessageconvert_Bin2XI
3AF_Modules/MessageTransformBeanPlain2XML
4CallSapAdaptercall_AF_MS

Module Configuration

Module KeyParameter Name
Parameter Value
Plain2XMLTransform.Classcom.sap.aii.messaging.adapter.Conversion
Plain2XMLTransform.ContentTypetext/xml;charset=utf-8

In addition to the above I've configured the parameters for conversion type StructPlain2XML (similar to FCC, used ~ as field separator)

Accepted Solutions (0)

Answers (2)

Answers (2)

JaySchwendemann
Active Contributor
0 Kudos

For reference: I had some similar issues with JMS receiver adapter (Generic JMS). We have Websphere MQ as JMS system and I solved this by specifying the so called CCSID like so in the additional JMS properties:

JMS.QueueImpl.method.setCCSID = java.lang.Integer 819

HTH

Cheers

Jens

Former Member
0 Kudos

Jens,

Thank you for your response.

I've selected 'WebSphereMQ (MQSeries) JMS Provider' as the Transport Protocol and 'JMS 1.x' as the Message Protocol, so I see parameter 'Character Set ID (CCSID) for non-ASCII Names' in the 'Source' tab. This parameter is currently set to 500. Should I change this parameter to '819' or add property 'JMS.QueueImpl.method.setCCSID' in Advanced Parameters tab?

Thanks

Praveen

JaySchwendemann
Active Contributor
0 Kudos

Hi Praveen,

I wouldn't change anything unless you still have problems with wrong encoded characters.

That said, setting the 'Character Set ID (CCSID) for non-ASCII Names' would be the same as specifying the 'JMS.QueueImpl.method.setCCSID'.  In your case I definitely would opt for the first solution. I only chose the second one because "Generic JMS" doesn't provide dedicated field to set CCSID

About the actual CCSID: It really depends: If you are sure, that your target system uses EBCDIC than setting CCSID to 500 seems right (see IBM Globalization - Coded character set identifiers). However, as you already did that and still having problems I would suggest using XPI Inspector to make sure that setting the CCSID is really reflected in the JMS Queue object (select Capture Template 50 in XPI Inspector)

HTH

Jens

Former Member
0 Kudos

bumping it up to get your kind attention...

I appreciate your help..

JaySchwendemann
Active Contributor
0 Kudos

Did you solve your issue?

Cheers

Jens