Skip to Content
0
Jan 30, 2008 at 02:39 PM

Unicode - "DMBTR" must be a character-type field (data type C,N,D or T)

1816 Views

Greetings Experts!

I am trying to convert legacy code to Unicode for a current ERP6.0 reinstallation and have encountered the syntax error "DMBTR" must be a character-type field (data type C,N,D or T)

The field is part of a structure and the fields attributes are as follows:

COMPONENT = DMBTR

COMPONENT TYPE = DMBTR

DATA TYPE = CURR

LENGTH = 13

DECIMALS = 2

DESCRIPTION = Amount in Local Currency

The code in question is as follows:-

*

  • macro Move_Zoned.

*

  • Converts a numeric variable to zoned format and moves it to a

  • target variable.

*

DEFINE move_zoned.

*

  • &1 - source variable

  • &2 - Number of Decimal Places

  • &3 - 'To'

  • &4 - Target Variable.

*

write &1 to w_zoned no-grouping decimals &2.

condense w_zoned.

*

*

  • Remove the Decimal Points.

*

search w_zoned for '...'.

while sy-subrc = 0.

move sy-fdpos to w_to_point.

if w_to_point = 0.

w_to_point = 1.

endif.

compute w_from_point = sy-fdpos + 1.

concatenate w_zoned+0(w_to_point)

w_zoned+w_from_point

into w_zoned.

search w_zoned for '...'.

endwhile.

shift w_zoned right deleting trailing space.

translate w_zoned using ' 0'.

call function 'Z_TRANSLATE_ZONED_DECIMALS'

exporting

i_input = w_zoned

importing

i_output = w_zoned

exceptions

x_invalid_zoned_char = c_invalid_zoned_char

x_numeric_info_lost = c_numeric_info_lost

others = c_other_zoned_error.

*

  • Get the length of the recipient field so we don't truncate the

  • numbers....

*

describe field &4 length w_flength in character mode.

describe field &4 type w_type.

describe field w_zoned length w_zoned_len in character mode.

if w_zoned_len <= w_flength.

move w_zoned to &4.

shift &4 right deleting trailing space.

translate &4 using ' 0'.

else.

*

  • Get the start position....

  • If it's a packed field allow for values up to 6 figures

*

compute w_zoned_len = w_zoned_len - w_flength.

if w_type = 'P'.

subtract 2 from w_zoned_len.

clear w_type.

endif.

*

move w_zoned+w_zoned_len &3 &4.

endif.

END-OF-DEFINITION. "Move_zoned

LOOP AT t_single_kunnr.

move_zoned t_single_kunnr-postamt 2

to t_single_kunnr-dmbtr.

DIVIDE t_single_kunnr-dmbtr BY 100.

MODIFY t_single_kunnr.

ENDLOOP.

Is there a solution to get past this syntax error as I would rather not change the datatype of the field in the structure.

Much Obliged

Elphick.