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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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