Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Difference between IN LEGACY TEXT MODE & TEXT MODE ENCODING NON-UNICODE

former_member195355
Participant
0 Kudos

Hi,

We're upgrading to ECC5 and the 'open dataset' command needs amending if the program is flagged for Unicode (which usually occurrs in user/fm exits). Therefore is ECC5 this command is no longer valid:

"open dataset DSN in text mode"

We currently interface with systems that may not have unicode enabled. Yet we have not enabled unicode in our own system just yet.

So we think these two commands are the most approriate for replacing the 'old' open dataset command:

"open dataset DSN for input in TEXT MODE encoding NON-UNICODE"

"open dataset DSN in LEGACY TEXT MODE for input"

However we're not really sure what the difference between these two commands is?

Has anyone worked with these commands?

Could you offer some help as to their differences and when each should be used?

Many thanks!

1 ACCEPTED SOLUTION

suresh_datti
Active Contributor
0 Kudos

HI Robert,

Did you check this <a href="http://help.sap.com/saphelp_erp2005/helpdata/en/79/c554a0b3dc11d5993800508b6b8b11/frameset.htm">SAP Help</a>?

Regards,

Suresh Datti

9 REPLIES 9

suresh_datti
Active Contributor
0 Kudos

HI Robert,

Did you check this <a href="http://help.sap.com/saphelp_erp2005/helpdata/en/79/c554a0b3dc11d5993800508b6b8b11/frameset.htm">SAP Help</a>?

Regards,

Suresh Datti

Former Member
0 Kudos

The LEGACY MODE allows you to read files that were written before Release 6.10.

former_member181962
Active Contributor
0 Kudos

Hi Robert,

Here is an excerpt from sap documentation.

... TEXT MODE ENCODING {DEFAULT|UTF-8|NON-UNICODE}

Effect:

The addition IN TEXT MODE opens the file as a text file. The addition ENCODING defines how the characters are represented in the text file. When writing in a text file, the content of a data object is converted to the representation entered after ENCODING, and transferred to the file. If the data type is character-type and flat, trailing blanks are cut off. In the data type string, trailing blanks are not cut off. The end-of-line marking of the relevant platform is applied to the transferred data by default. When reading from a text file, the content of the file is read until the next end-of-line marking, converted from the format specified after ENCODING into the current character format, and transferred to a data object.

The end-of-line marking depends on the operating system of the application server. In the MS Windows operating systems, the markings "CRLF" and " LF" are possible, while under Unix, only "LF" is used. If, when using Windows, an existing file is opened without the TYPE addition (see os_addition), the first end-of-line marking is found and used for the whole file. If a new file is created without the TYPE addition, the content of the profile parameter abap/NTfmode is used. If the profile parameter is not set, "CRLF" is used. If a file with the TYPE addition is opened and a valid value is contained in attr, this value is used.

In Unicode programs, only the content of character-type data objects can be transferred to text files and read from text files. The addition ENCODING must be specified in Unicode programs, and can only be omitted in non-Unicode programs.

The additions after ENCODING determine in which character representation the content of the file is handled.

DEFAULT

In a Unicode system, the designation DEFAULT corresponds to the designation UTF-8, and the designation NON-UNICODE in a non-Unicode system.

UTF-8

The characters in the file are handled according to the Unicode character representation UTF-8.

NON-UNICODE

In a non-Unicode system, the data is read or written without being converted. In a Unicode system,the characters in the file are handled according to the non-Unicode-codepage that would be assigned to the current text environment according to the database table TCP0C, at the time of reading or writing in a non-Unicode system.

If the addition ENCODING is not specified in non-Unicode programs, the addition NON-UNICODE is used implicitly.

... LEGACY TEXT MODE [{BIG|LITTLE} ENDIAN] [CODE PAGE cp]

Effect:

Opening a Legacyfile. The addition IN LEGACY TEXT MODE opens the file as a legacy text file. As with legacy binary files, the byte order and the codepage with which the content of the file should be handled can also be specified. The syntax and meaning of {BIG|LITTLE} ENDIAN and CODE PAGE cp are the same as for legacy binary files.

In contrast to legacy binary files, the trailing blanks in a legacy file are cut off when writing character-type flat data objects in a legacy text file. As for a text file, an end-of-line marking is also applied to the transferred data. In contrast to text files opened with the addition INTEXT MODE, Unicode programs do not check whether the data objects used for reading or writing are character-type. Furthermore, the LENGTH additions of the statements READ DATASET and TRANSFER are used for counting in bytes in legacy text files and in the units of a character represented in the memory for text files.

Note:

As with legacy binary files, text files that have been written in a non-Unicode system can be accessed in Unicode systems as legacy text files, and the content is converted accordingly.

Example

A file test.dat is created as a text file, filled with data, changed, and exported. As every TRANSFER statement applies end-of-line marking to written content, after the change, the content of the file has two lines. The first line contains "12ABCD". The second line contains "890". The character "7" has been overwritten by the end-of-line marking of the first line.

DATA: file TYPE string VALUE `test.dat`,

result TYPE string.

OPEN DATASET file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

TRANSFER `1234567890` TO file.

CLOSE DATASET file.

OPEN DATASET file FOR UPDATE IN TEXT MODE ENCODING DEFAULT

AT POSITION 2.

TRANSFER `ABCD` TO file.

CLOSE DATASET file.

OPEN DATASET file FOR INPUT IN TEXT MODE ENCODING DEFAULT.

WHILE sy-subrc = 0.

READ DATASET file INTO result.

WRITE / result.

ENDWHILE.

CLOSE DATASET file.

Regards,

Ravi

0 Kudos

Thanks for the helps so far.

You see, I've read the SAP documentation but it doesn't clearly state what the difference is between these two statments:

"OPEN DATASET file FOR INPUT IN TEXT MODE ENCODING DEFAULT"

"open dataset DSN in LEGACY TEXT MODE for input"

As they both seem to do the same thing?

Any ideas?

0 Kudos

Hi Robert,

I've gone thru the documentation as well and AFAIK, they are two ways of doing the same.

I'll wait along woth you for more answer anyhow.

Cheers and Regards,

Ravi

0 Kudos

Anyone else got any ideas....

0 Kudos

Still no-one...

What if I say pretty please with a cherry on top...

0 Kudos

Hi Robert,

Did you find any answer to your question??

0 Kudos

The difference is you can go for ENCODING UTF-8 or DEFAULT if you want the characters in the file are handled according to the Unicode character representation UTF-8.

Or else

ENCODING NON-UNICODE / using LEGACY text mode are same.

If the addition ENCODING is not specified in non-Unicode programs, the addition NON-UNICODE is used implicitly.