Текущее время: Пн, июл 21 2025, 12:17

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Исправление глюков кириллицы
СообщениеДобавлено: Вт, окт 07 2008, 13:52 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Народ, хелп плиз...
После загрузки csv-файла на сервер, у него слетает к шайтану вся кириллица. Задача - написать подпрограмму, для инфопакета BW (транзакция rsa1), которая этот глюк правит. Пока в голову приходит только что-то в духе:
open dataset.
read dataset.
*правка*
transfer to dataset.
close dataset.
Но система юникод, поэтому translate to codepage не пашет, и чем исправлять кодировку опять-таки непонятно. Может, еще как-то это можно сделать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 07 2008, 13:58 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Вот как можно исправить translate ... FROM PAGE:
Code:
*      TRANSLATE gs_quelle_ebcdic FROM CODE PAGE '0100'.

  DATA conv_0100 TYPE REF TO cl_abap_conv_in_ce.

  FIELD-SYMBOLS:
    <fs_input_hex>     TYPE x.

    conv_0100 = cl_abap_conv_in_ce=>create( encoding = '0100').

    ASSIGN gs_quelle_ebcdic TO <fs_input_hex>  CASTING.

    conv_0100->convert( EXPORTING input = <fs_input_hex>
                          IMPORTING data = gs_quelle_ebcdic ).

    free conv_0100.

В вашем случае будет похожая конструкция, только нужно использовать cl_abap_conv_out_ce


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 14 2008, 14:11 
Специалист
Специалист

Зарегистрирован:
Вт, авг 09 2005, 15:51
Сообщения: 149
Подскажите пожалуйста, как cl_abap_conv_out_ce->convert работает... В поле data загоняется нужная строка, но откуда считывать результат? из поля buffer?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Исправление глюков кириллицы
СообщениеДобавлено: Пн, окт 20 2008, 10:06 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 16 2008, 10:11
Сообщения: 9
Вот такую форму навоял для правильного преобразование кирилицы к виндовому формату.

*----------------------------------------------------------
FORM save_file USING i_filename TYPE char100.

DATA: file_res TYPE c LENGTH 100.
DATA: _syst TYPE sy-sysid.
DATA: _err TYPE i,
shdl TYPE i,
dhdl TYPE i.

TYPES: BEGIN OF text,
line(120) TYPE c,
END OF text.
DATA: chardata TYPE TABLE OF text WITH HEADER LINE.

DATA: lv_xstring TYPE xstring.
DATA: nlen TYPE i.
DATA: bindata TYPE TABLE OF blob WITH HEADER LINE.
DATA: command(100) TYPE c.
DATA: nlist_result TYPE TABLE OF text WITH HEADER LINE.

DATA: conv_obj TYPE REF TO cl_abap_conv_obj.
DATA: in_codepage TYPE cpcodepage.
DATA: out_cp TYPE cpcodepage.
DATA: ctrlcode TYPE rscpctrlco.
DATA: sapownch TYPE rscpownch.
DATA: out_len TYPE i.
DATA: in_used TYPE i.
DATA: input_ch_broken.
DATA: lv_string1 TYPE string.
DATA _c3 TYPE char3.

nlen = STRLEN( lv_string ) - 2.
IF nlen > 0.
lv_string = lv_string(nlen).
ELSE.
RETURN.
ENDIF.

CALL FUNCTION 'SCP_GET_CODEPAGE_NUMBER'
EXPORTING
database_also = ' '
IMPORTING
appl_codepage = in_codepage.

out_cp = 1504.
ctrlcode = 'T'.
sapownch = '.'.
CREATE OBJECT conv_obj
EXPORTING
incode = in_codepage
outcode = out_cp
ctrlcode = ctrlcode
sapownch = sapownch
EXCEPTIONS
invalid_codepage = 1
internal_error = 2
OTHERS = 3.

out_len = 0.
CALL METHOD conv_obj->convert
EXPORTING
inbuff = lv_string
outbufflg = out_len
IMPORTING
outbuff = lv_string1
inused = in_used
input_ends_in_char = input_ch_broken
EXCEPTIONS
internal_error = 1
OTHERS = 2.

MOVE i_filename TO file_res.
CONDENSE file_res.

DELETE DATASET file_res.

OPEN DATASET file_res FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE.
TRANSFER lv_string1 TO file_res NO END OF LINE.
CLOSE DATASET file_res.

_err = 0.
PERFORM ftp_connect USING duser dpwd dhost
CHANGING _err dhdl.
IF _err <> 1.
CONCATENATE 'cd' ddir INTO command SEPARATED BY ' '.
CLEAR: nlist_result[].
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = dhdl
command = command
TABLES
data = nlist_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3
OTHERS = 4.

IF sy-subrc NE 0.
WRITE 'На ftp сервере нет указанного каталога'.
ELSE.
CLEAR: nlist_result[].
CONCATENATE 'put' i_filename INTO command SEPARATED BY ' '.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = dhdl
command = command
TABLES
data = nlist_result
EXCEPTIONS
tcpip_error = 1
command_error = 2
data_error = 3
OTHERS = 4.

IF sy-subrc NE 0.
WRITE 'Ошибка команды PUT'.
ENDIF.
ENDIF.

DELETE DATASET file_res.

PERFORM ftp_discon USING dhdl dest.
ENDIF.

ENDFORM. "SAVE_FILE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 21 2008, 09:41 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
а не пробовали настройки фротенда менять ? SAP logon \ кодовая страница \ кодировка выгрузки загрузки


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB