Search on this Website

Tuesday, September 8, 2009

Common Unicode Errors ( SAP Version ECC6.0 )

Transaction Code to Perform Unicode Compliance check

TCode to perform Unicode Check : UCCHECK

How to Set the Unicode Flag Active

After resolving all the errors under the Unicode Check, we can set the Unicode Flag.
This can be done in either of the two ways.

1.From the Transaction UCCHECK itself, by selecting the success message of the
object and then clicking on the Set Unicode Attribute button .

2.Go directly to the object, Go To -> Attributes -> Change Display -> Check the
Unicode Flag Active -> Save -> Activate.


Some of the Common Errors in UCCHECK and their resolution.


Case - 1:

Error : Upload/Ws_Upload and Download/Ws_Download are obsolete, since they are not Unicode-enabled; use the class cl_gui_frontend_services

Cause : From Version ECC6.0 (Unicode complaint environment), the Function Mod-ules UPLOAD / WS_UPLOAD / DOWNLOAD / WS_DOWNLOAD has become obso-lete. In replacement of these Function Modules, we have GUI_UPLOAD / GUI_DOWNLOAD.

Solution: All the UPLOAD / WS_UPLOAD function modules need to be replaced with GUI_UPLOAD FM and all the DOWNLOAD / WS_DOWNLOAD with the GUI_DOWNLOAD function modules.

For replacing WS_UPLOAD :

*{ REPLACE EMPK900094 1
*\ call function 'WS_UPLOAD'
*\ exporting
*\ filename = p_filel
*\ filetype = 'DAT' "'ASC' "'DAT'
*\ tables
*\ data_tab = record
*\ exceptions
*\ conversion_error = 1
*\ file_open_error = 2
*\ file_read_error = 3
*\ invalid_type = 4
*\ no_batch = 5
*\ unknown_error = 6
*\ invalid_table_width = 7
*\ gui_refuse_filetransfer = 8
*\ customer_error = 9
*\ others = 10.

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
DATA : L_P_FILEL TYPE STRING.
** End of Changes - 46C To ECC6 - IN9AGARWAL


** Begin of Changes - 46C To ECC6 - IN9AGARWAL
Clear: L_P_FILEL.
L_P_FILEL = P_FILEL.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_P_FILEL
FILETYPE = 'ASC'
TABLES
DATA_TAB = RECORD
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Clear: L_P_FILEL.
** End of Changes - 46C To ECC6 - IN9AGARWAL
*} REPLACE



Note - 1 : The parameter FILENAME in GUI_UPLOAD is of type STRING for version ECC6.0. In 4.6C version (Non Unicode complaint environment), for the above code, ex-port parameter filename in UPLOAD / WS_UPLOAD was of data type “Character”. This need to be taken care of otherwise if an Extended Syntax Check is performed using the transaction SLIN, there would bet a Call Function Interface Error because of this. So to avoid that, one needs to declare a variable L_P_FILEL of type STRING and assign-ing that to the Parameter FILENAME. Also it’s better to have file type ‘ASC’.

For replacing WS_DOWNLOAD:

*{ REPLACE RE2K900049 1
*\ CALL FUNCTION 'WS_DOWNLOAD'
*\ EXPORTING
*\ FILENAME = W_FILENAME
*\ FILETYPE = 'ASC'
*\ TABLES
*\ DATA_TAB = TAB_PC2
*\ EXCEPTIONS
*\ FILE_OPEN_ERROR = 1
*\ FILE_WRITE_ERROR = 2
*\ INVALID_FILESIZE = 3
*\ INVALID_TYPE = 4
*\ NO_BATCH = 5
*\ UNKNOWN_ERROR = 6
*\ INVALID_TABLE_WIDTH = 7
*\ GUI_REFUSE_FILETRANSFER = 8
*\ CUSTOMER_ERROR = 9
*\ OTHERS = 10.
*\

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
DATA : L_W_FILENAME TYPE STRING.
** End of Changes - 46C To ECC6 - IN9AGARWAL

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
Clear: L_W_FILENAME.
L_W_FILENAME = W_FILENAME.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_W_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = TAB_PC2
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** End of Changes - 46C To ECC6 - IN9AGARWAL

For replacing UPLOAD :

PARAMETERS: I_NFILE LIKE RLGRAP-FILENAME DEFAULT
'c:\fi\docgen.prn'.

Note : Please make sure that default location is given if its not then dont use default file-name parameter in your Function module.

*{ REPLACE RE2K900049 1
*\ CALL FUNCTION 'UPLOAD'
*\ EXPORTING
*\ FILENAME = I_NFILE "NOME FILE
*\ FILETYPE = 'ASC'
*\ TABLES
*\ DATA_TAB = FILIN
*\ EXCEPTIONS
*\ CONVERSION_ERROR = 1
*\ INVALID_TABLE_WIDTH = 2
*\ INVALID_TYPE = 3
*\ NO_BATCH = 4
*\ UNKNOWN_ERROR = 5
*\ OTHERS = 6.
*\

So we will be using the method ` GUI_UPLOAD` of the class `CL_GUI_FRONTEND_SERVICES`. Now in 4.6, while using FM UPLOAD, a pop-up used to appear, prompting you to get/locate the path of the file. To get the same function-ality in GUI_UPLOAD use code as below-


** Begin of Changes - 46C To ECC6 - IN9AGARWAL
data: ft type filetable,
rc type i,
l_i_nfile type string,
l_i_nfile_temp type string.

data: l_ft type line of filetable.
** End of Changes - 46C To ECC6 - IN9AGARWAL

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
clear: l_i_nfile_temp, rc, l_ft, l_i_nfile.
refresh: ft.
l_i_nfile_temp = i_nfile.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'File open'
DEFAULT_FILENAME = l_i_nfile_temp
CHANGING
FILE_TABLE = ft
RC = rc
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
others = 5.

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

read table ft into l_ft index 1.

l_i_nfile = l_ft-filename.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = l_i_nfile
FILETYPE = 'ASC'
TABLES
DATA_TAB = FILIN
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.

IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

clear: l_i_nfile_temp, rc, l_ft, l_i_nfile.
refresh: ft.

** End of Changes - 46C To ECC6 - IN9AGARWAL

For replacing DOWNLOAD :

DOWNLOAD is obsolete function module for storing SAP data in a file in the file sys-tem of the presentation server.
EXAMPLE :

PARAMETERS: PC_FILE LIKE RLGRAP-FILENAME DEFAULT
'c:\test.txt' modif id LOC.


* CALL FUNCTION 'DOWNLOAD'
* EXPORTING
* FILENAME = PC_FILE
* FILETYPE = 'DAT'
* IMPORTING
* FILESIZE = W_FSIZE
* ACT_FILENAME = W_FNAME
* ACT_FILETYPE = W_FTYPE
* TABLES
* DATA_TAB = TAB
* EXCEPTIONS
* CONVERSION_ERROR = 1
* INVALID_TABLE_WIDTH = 2
* INVALID_TYPE = 3
* NO_BATCH = 4
* UNKNOWN_ERROR = 5
* OTHERS = 6.

So we will be using the method `GUI_DOWNLOAD` of the class `CL_GUI_FRONTEND_SERVICES`. Now in 4.6, while using FM DOWNLOAD, a pop-up used to appear, prompting you to to put the path to save the file. To get the same functionality in GUI_DOWNLOAD use code as below-

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
data: l_filename type string,
l_path type string,
l_fullpath type string,
l_filename_temp type string.
** End of Changes - 46C To ECC6 - IN9AGARWAL

** Begin of Changes - 46C To ECC6 - IN9AGARWAL
Clear: l_filename, l_path, l_fullpath, l_filename_temp.
l_filename_temp = PC_FILE.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = 'File save'
DEFAULT_FILE_NAME = l_filename_temp
CHANGING
FILENAME = l_filename
PATH = l_path
FULLPATH = l_fullpath
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
others = 4.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = l_filename
FILETYPE = 'ASC'
TABLES
DATA_TAB = tab
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** End of Changes - 46C To ECC6 - IN9AGARWAL

No comments: