Share

[[{“value”:”*&———————————————————————*
REPORT ysap_shiftjis_to_utf8_csv.

PARAMETERS:
p_infile TYPE ibipparms-path, “” Pick the file from system
p_out TYPE string. “”Assign a path and file name for output file path

DATA:
lt_raw_data TYPE STANDARD TABLE OF x255,
lv_xstring TYPE xstring,
lv_string TYPE string,
lv_utf8_xstr TYPE xstring,
lt_output_raw TYPE STANDARD TABLE OF x255,
lv_filelen TYPE i,
lv_file TYPE string,
lv_encode TYPE string VALUE ‘UTF-8’.

CLASS cl_abap_conv_in_ce DEFINITION LOAD.
CLASS cl_abap_conv_out_ce DEFINITION LOAD.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_infile.

START-OF-SELECTION.
” Step 1: Upload Shift-JIS file as binary
lv_file = p_infile.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_file
filetype = ‘BIN’
IMPORTING
filelength = lv_filelen
CHANGING
data_tab = lt_raw_data.
IF sy-subrc <> 0.
MESSAGE ‘File upload failed’ TYPE ‘E’.
ENDIF.

” Step 2: Convert RAW table to XSTRING
CALL FUNCTION ‘SCMS_BINARY_TO_XSTRING’
EXPORTING
input_length = lv_filelen
IMPORTING
buffer = lv_xstring
TABLES
binary_tab = lt_raw_data
EXCEPTIONS
failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ‘Conversion of RAW to XSTRING failed’ TYPE ‘E’.
ENDIF.

” Step 3: Decode Shift-JIS XSTRING to ABAP string
DATA(lo_in) = cl_abap_conv_in_ce=>create( encoding = ‘8000’ ).
lo_in->convert(
EXPORTING
input = lv_xstring
IMPORTING
data = lv_string ).

CONCATENATE lv_encode
lv_string
INTO lv_string
SEPARATED BY cl_abap_char_utilities=>newline.

” Step 4: Encode ABAP string to UTF-8 XSTRING
DATA(lo_out) = cl_abap_conv_out_ce=>create( encoding = ‘4110’ ).
lo_out->convert(
EXPORTING
data = lv_string
IMPORTING
buffer = lv_utf8_xstr ).

” Step 5: Convert UTF-8 XSTRING back to RAW table
CLEAR lt_output_raw.
CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
buffer = lv_utf8_xstr
TABLES
binary_tab = lt_output_raw
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ‘XSTRING to binary conversion failed’ TYPE ‘E’.
ENDIF.

” Step 6: Download as UTF-8 file
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = p_out
filetype = ‘BIN’
CHANGING
data_tab = lt_output_raw
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
unknown_error = 5
OTHERS = 6.
IF sy-subrc = 0.
MESSAGE ‘File converted successfully to UTF-8’ TYPE ‘S’.
ELSE.
MESSAGE ‘Download failed’ TYPE ‘E’.
ENDIF.

Conversion of SHIFT-JIS Encoding to UTF-8 Encoding for CSV File

This requirement came in picture from ARIBA Functional Side

“}]] 

 [[{“value”:”*&———————————————————————*
REPORT ysap_shiftjis_to_utf8_csv.

PARAMETERS:
p_infile TYPE ibipparms-path, “” Pick the file from system
p_out TYPE string. “”Assign a path and file name for output file path

DATA:
lt_raw_data TYPE STANDARD TABLE OF x255,
lv_xstring TYPE xstring,
lv_string TYPE string,
lv_utf8_xstr TYPE xstring,
lt_output_raw TYPE STANDARD TABLE OF x255,
lv_filelen TYPE i,
lv_file TYPE string,
lv_encode TYPE string VALUE ‘UTF-8’.

CLASS cl_abap_conv_in_ce DEFINITION LOAD.
CLASS cl_abap_conv_out_ce DEFINITION LOAD.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_infile.

START-OF-SELECTION.
” Step 1: Upload Shift-JIS file as binary
lv_file = p_infile.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_file
filetype = ‘BIN’
IMPORTING
filelength = lv_filelen
CHANGING
data_tab = lt_raw_data.
IF sy-subrc <> 0.
MESSAGE ‘File upload failed’ TYPE ‘E’.
ENDIF.

” Step 2: Convert RAW table to XSTRING
CALL FUNCTION ‘SCMS_BINARY_TO_XSTRING’
EXPORTING
input_length = lv_filelen
IMPORTING
buffer = lv_xstring
TABLES
binary_tab = lt_raw_data
EXCEPTIONS
failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ‘Conversion of RAW to XSTRING failed’ TYPE ‘E’.
ENDIF.

” Step 3: Decode Shift-JIS XSTRING to ABAP string
DATA(lo_in) = cl_abap_conv_in_ce=>create( encoding = ‘8000’ ).
lo_in->convert(
EXPORTING
input = lv_xstring
IMPORTING
data = lv_string ).

CONCATENATE lv_encode
lv_string
INTO lv_string
SEPARATED BY cl_abap_char_utilities=>newline.

” Step 4: Encode ABAP string to UTF-8 XSTRING
DATA(lo_out) = cl_abap_conv_out_ce=>create( encoding = ‘4110’ ).
lo_out->convert(
EXPORTING
data = lv_string
IMPORTING
buffer = lv_utf8_xstr ).

” Step 5: Convert UTF-8 XSTRING back to RAW table
CLEAR lt_output_raw.
CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
buffer = lv_utf8_xstr
TABLES
binary_tab = lt_output_raw
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ‘XSTRING to binary conversion failed’ TYPE ‘E’.
ENDIF.

” Step 6: Download as UTF-8 file
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = p_out
filetype = ‘BIN’
CHANGING
data_tab = lt_output_raw
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
unknown_error = 5
OTHERS = 6.
IF sy-subrc = 0.
MESSAGE ‘File converted successfully to UTF-8’ TYPE ‘S’.
ELSE.
MESSAGE ‘Download failed’ TYPE ‘E’.
ENDIF.Conversion of SHIFT-JIS Encoding to UTF-8 Encoding for CSV FileThis requirement came in picture from ARIBA Functional Side”}]] Read More Technology Blog Posts by SAP articles 

#SAPCHANNEL

By ali