ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Trailing blank in fixed lenght format in DFDL model

Post new topic  Reply to topic
 Trailing blank in fixed lenght format in DFDL model « View previous topic :: View next topic » 
Author Message
ediman
PostPosted: Wed Jun 12, 2013 12:41 am    Post subject: Trailing blank in fixed lenght format in DFDL model Reply with quote

Newbie

Joined: 05 Jun 2013
Posts: 9

Hi,
I have another little problem while migrating from MRM in Wmb6 to DFDL in Wmb8.

We read input messages from a MQ queue as flat file with fixed lenght records, and some fields can have trainling blanks.
I need to keep this characters in the message tree because some output fields are fixed substrings of this fields or a concatenation of fixed substrings of two or more fields.

In MRM model that was not a problem, as you can see in trace


Code:

2013-06-12 09:16:52.736128       18   UserTrace   BIP4060I: Data ''*****************************************************
                                       Letto messaggio in coda
                                       ( ['mrm' : 0x25d09a0]
                                         (0x01000013:Name+):Testata = (
                                           (0x01000013:Name+     ):Adial                       = (
                                             (0x0300000B:NameValue+):Progressivo = '000001' (CHARACTER)
                                             (0x0300000B:NameValue+):Source      = '2400' (CHARACTER)
                                             (0x0300000B:NameValue+):NomeFlusso  = 'VEFA-DOCALT   ' (CHARACTER)
                                             (0x0300000B:NameValue+):MaggTo      = ' ' (CHARACTER)
                                           )
                                           (0x0300000B:NameValue+):TipoRecord                  = '01' (CHARACTER)
                                           (0x0300000B:NameValue+):DocId                       = '0003675866' (CHARACTER)
                                           (0x0300000B:NameValue+):ScanId                      = '            ' (CHARACTER)
                                           (0x0300000B:NameValue+):CodFoam                     = '00027384' (CHARACTER)
                                           (0x0300000B:NameValue+):Societa                     = '0004' (CHARACTER)
                                           (0x0300000B:NameValue+):Pdv                         = '0080' (CHARACTER)
                                           (0x0300000B:NameValue+):TipoDocumento               = '0' (CHARACTER)
                                           (0x0300000B:NameValue+):NumeroDocumento             = '11004208        ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataDocumento               = DATE '2011-02-21' (DATE)
                                           (0x0300000B:NameValue+):TotaleDocumento             = 6581.20 (DECIMAL)
                                           (0x0300000B:NameValue+):RegistroIva                 = '    ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataRegistrazioneProtocollo = '        ' (CHARACTER)
                                           (0x0300000B:NameValue+):NrProtocolloIva             = '          ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataArrivoFattura           = '        ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataInvioFattura1           = '        ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataRicevimentoFattura      = '        ' (CHARACTER)
                                           (0x0300000B:NameValue+):DataInvioFattura2           = '        ' (CHARACTER)
                                           (0x0300000B:NameValue+):CodiceContabile             = '          ' (CHARACTER)
                                           (0x0300000B:NameValue+):CodiceContabileTransitorio  = '          ' (CHARACTER)
                                         )
                                         (0x01000013:Name+):Iva     = (
                                           (0x01000013:Name+     ):Adial      = (
                                             (0x0300000B:NameValue+):Progressivo = '000002' (CHARACTER)
                                             (0x0300000B:NameValue+):Source      = '2400' (CHARACTER)
                                             (0x0300000B:NameValue+):NomeFlusso  = 'VEFA-DOCALT   ' (CHARACTER)
                                             (0x0300000B:NameValue+):MaggTo      = ' ' (CHARACTER)
                                           )
                                           (0x0300000B:NameValue+):TipoRecord = '03' (CHARACTER)
                                           (0x0300000B:NameValue+):DocId      = '0003675866' (CHARACTER)
                                           (0x0300000B:NameValue+):Imponibile = 5484.33 (DECIMAL)
                                           (0x0300000B:NameValue+):CodiceIva  = '20  ' (CHARACTER)
                                           (0x0300000B:NameValue+):Imposta    = 1096.87 (DECIMAL)
                                         )
                                       )
                                       *****************************************************


In DFDL editor of Wmb8 I defined a string field, i.e. "Numero Documento", in this way


    Representation -> Text
    Length Kind -> Explicit
    Length -> 16
    Length Units -> Characters
    Nillable -> False
    Default Value -> <unset>
    Fixed Value -> <unset>
    String Giustification -> Left
    String Pad Character -> %SP;
    Truncate Specified Length -> no
    Pad Kind -> padChar
    Trim Kind -> padChar


However in message logical tree trailing blanks are deleted as you can see in trace

Code:

2013-06-12 09:20:38.706184       18   UserTrace   BIP4060I: Data ''*****************************************************
                                       Letto messaggio in coda
                                       ( ['dfdl' : 0x7f993804dba0]
                                         (0x01000000:Name):VefaDocAlt = (
                                           (0x01000000:Name):Testata = (
                                             (0x01000000:Name     ):Adial                       = (
                                               (0x03000000:NameValue):Progr      = '000001' (CHARACTER)
                                               (0x03000000:NameValue):Source     = '2400' (CHARACTER)
                                               (0x03000000:NameValue):NomeFlusso = 'VEFA-DOCALT' (CHARACTER)
                                               (0x03000000:NameValue):MAggTo     = '' (CHARACTER)
                                             )
                                             (0x03000000:NameValue):TipoRecord                  = '01' (CHARACTER)
                                             (0x03000000:NameValue):DocId                       = '0003675866' (CHARACTER)
                                             (0x03000000:NameValue):ScanId                      = '' (CHARACTER)
                                             (0x03000000:NameValue):CodFoam                     = '00027384' (CHARACTER)
                                             (0x03000000:NameValue):Societa                     = '0004' (CHARACTER)
                                             (0x03000000:NameValue):Pdv                         = '0080' (CHARACTER)
                                             (0x03000000:NameValue):TipoDocumento               = '0' (CHARACTER)
                                             (0x03000000:NameValue):NumeroDocumento             = '11004208' (CHARACTER)
                                             (0x03000000:NameValue):DataDocumento               = DATE '2011-02-21' (DATE)
                                             (0x03000000:NameValue):TotaleDocumento             = 6581.20 (DECIMAL)
                                             (0x03000000:NameValue):RegistroIva                 = '' (CHARACTER)
                                             (0x03000000:NameValue):DataRegistrazioneProtocollo = '' (CHARACTER)
                                             (0x03000000:NameValue):NrProtocolloIva             = '' (CHARACTER)
                                             (0x03000000:NameValue):DataArrivoFattura           = '' (CHARACTER)
                                             (0x03000000:NameValue):DataInvioFattura1           = '' (CHARACTER)
                                             (0x03000000:NameValue):DataRicevimentoFattura      = '' (CHARACTER)
                                             (0x03000000:NameValue):DataInvioFattura2           = '' (CHARACTER)
                                             (0x03000000:NameValue):CodiceContabile             = '' (CHARACTER)
                                             (0x03000000:NameValue):CodiceContabileTransitorio  = '' (CHARACTER)
                                           )
                                           (0x01000000:Name):Iva     = (
                                             (0x01000000:Name     ):Adial      = (
                                               (0x03000000:NameValue):Progr      = '000002' (CHARACTER)
                                               (0x03000000:NameValue):Source     = '2400' (CHARACTER)
                                               (0x03000000:NameValue):NomeFlusso = 'VEFA-DOCALT' (CHARACTER)
                                               (0x03000000:NameValue):MAggTo     = '' (CHARACTER)
                                             )
                                             (0x03000000:NameValue):TipoRecord = '03' (CHARACTER)
                                             (0x03000000:NameValue):DocId      = '0003675866' (CHARACTER)
                                             (0x03000000:NameValue):Imponibile = 5484.33 (DECIMAL)
                                             (0x03000000:NameValue):CodiceIva  = '20' (CHARACTER)
                                             (0x03000000:NameValue):Imposta    = 1096.87 (DECIMAL)
                                           )
                                         )
                                       )
                                       *****************************************************


How can I make to get all string value ?

Regards
Back to top
View user's profile Send private message
kimbert
PostPosted: Wed Jun 12, 2013 2:22 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Very simple - set TrimKind to 'None'.

Quote:
I need to keep this characters in the message tree because some output fields are fixed substrings of this fields or a concatenation of fixed substrings of two or more fields.
There may be a good reason why you are doing it this way, but it sounds like bad design. You are putting knowledge of the data format into the message flow logic.

My approach would be to parse out those substrings using DFDL, and then simply map the fields to the output.
Back to top
View user's profile Send private message
ediman
PostPosted: Wed Jun 12, 2013 4:13 am    Post subject: Reply with quote

Newbie

Joined: 05 Jun 2013
Posts: 9

Thank you very much, now it works.

Quote:

There may be a good reason why you are doing it this way, but it sounds like bad design. You are putting knowledge of the data format into the message flow logic.

I have to map input data into IDoc and send it to SAP, and sometimes IDoc fields are required to be created in a particoular way.

For example, suppose we have in input
Code:

Field1(30) = "This is field 1              "
Field2(25) = "This is field 2         "


IDoc field could require

    Field1 + Field2 as they arrive in the system

so we have to send
Code:

"This is field 1              This is field 2"


    or last 20 characters of Field1 + first 5 characters of Field2

so we have to send
Code:

"eld 1              This"

and so on.

Since we used MRM all flow logics expected trailing blanks, that's why we need them, otherwise we have to change the flow logics.

Regards.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Trailing blank in fixed lenght format in DFDL model
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.