Текущее время: Вс, июл 20 2025, 21:59

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: BDS
СообщениеДобавлено: Ср, май 23 2007, 15:02 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
Господа!
почему выполнив программу
SUBMIT bdsfind_1 WITH classn = p_clname
WITH classtyp = p_ctype AND RETURN.
и посмотрев файл в блокноте видим что русские буквы в нем показываются нормально. Шаблон сохранен в ASCII.

если же я выгружаю шаблон во внутреннюю таблицу
call method ob_document_set->GET_WITH_AS_TABLE
EXPORTING
classname = p_clname
classtype = p_ctype
changing
ASCII_CONTENT = content
exceptions
others = 8.
то вместо русских букв в ней я получаю крякозябры.
в чем может быть проблема?
и если сохранить потом внутренню таблицу в файл (GUI_DOWNLOAD), то в некоторых строках в файле появляются лишние переводы каретки.


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
с переводом каретки разобрался. Остаорсь с русскими буквами разобраться.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 23 2007, 15:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Блокнот, как правило, показывает текст в кодировке cp1251, а в дебаггере SAP — в ISO-8859-5. Так что, может и проблемы нет никакой.

Если проблема есть — опишите подробно, где и какие кракозябы.
Можно воспользоваться Штирлицем, чтобы понять путь перекодировки.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 23 2007, 16:19 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
и в сапе при просмотре в дебагере таблицы крякозябры и в блокноте после выброса таблицы в файл тоже крякозябры.

наблюдаем строчку "дѓђх№ юђїхђр" вместо "Футер отчета". утф-8 наверное получается почему-то.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 23 2007, 16:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
_gary_ написал(а):
наблюдаем строчку "дѓђх№ юђїхђр" вместо "Футер отчета". утф-8 наверное получается почему-то.


В UTF-8 русские буквы представляются двумя байтами.
А то, что Вы показали, как раз и есть образчик того, как выглядит виндовый cp1251 текст, интерпритируемый как ISO-8859-5.

Так что всё так, как я предполагал.

Если лень Штирлица ставить, так хотя бы под FAR установите набор русских кодировок.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 29 2007, 09:45 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
Ну если это дебагер так отображает, то в файл таблица должна сохраниться в ANSI. Ведь в BDS я засовывал ANSI. А сохраняются в файл крякозябры.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 29 2007, 10:00 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
С этим не может быть связано?
http://sapboard.ru/forum/viewtopic.php?t=6014


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 29 2007, 10:17 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
Врядли мне это поможет. тем более версия не та.
Меня интересует откуда вообще появляется необходимость перекодировать?
вот ФМ для загрузки файла на сервер. Файл в ANSI - это точно.
<code>
FUNCTION ZIP_BDS_FILE_UPLOAD.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(CLASSNAME) TYPE SBDST_CLASSNAME
*" REFERENCE(CLASSTYPE) TYPE SBDST_CLASSTYPE DEFAULT 'OT'
*" REFERENCE(CLIENT) TYPE SBDST_CLIENT DEFAULT SY-MANDT
*" REFERENCE(LOCFILE) TYPE LOCALFILE
*" EXPORTING
*" REFERENCE(LV_NEW_VERSION) TYPE SBDST_DOC_VER_NO
*" EXCEPTIONS
*" X_ERROR
*" INTERNAL_ERROR
*" ERROR_KPRO
*" PARAMETER_ERROR
*" NOT_ALLOWED
*" NOT_AUTHORIZED
*" NOTHING_FOUND
*"----------------------------------------------------------------------
data: lf type LOCALFILE.
lf = locfile.
translate lf to upper case.

DATA :
lt_signature TYPE STANDARD TABLE OF bapisignat,
lt_signature1 TYPE STANDARD TABLE OF bapisignat,
lwa_signature TYPE bapisignat,
lwa_signature1 TYPE bapisignat,
lv_doc_count TYPE bds_dcount,
lv_docversion TYPE bds_dverno,
lv_docvarid TYPE bds_dvarid,
lt_files TYPE TABLE OF bapifiles,
lt_files1 TYPE TABLE OF bapifiles,
lwa_files TYPE bapifiles,
lv_objkey TYPE sbdst_object_key,
lv_dir TYPE char128,
lv_file TYPE char128,
lt_popli TYPE STANDARD TABLE OF spopli,
lwa_popli TYPE spopli,
lv_ans.

data: ob_document_set TYPE REF TO cl_bds_document_set.

CLEAR : lv_dir,lv_file.
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
full_name = lf
IMPORTING
stripped_name = lv_file
file_path = lv_dir
EXCEPTIONS
x_error = 1
OTHERS = 2.
if sy-subrc <> 0.
case sy-subrc.
when 1.
msg 'Ошибка при получении директории и имени файла.' x_error.
endcase.
exit.
endif.

CLEAR:lt_popli,lwa_popli.
lwa_popli-selflag = 'X'.
lwa_popli-varoption = 'Create a new version'.
APPEND lwa_popli TO lt_popli.

IF ob_document_set IS INITIAL.
CREATE OBJECT ob_document_set.
CLEAR : lt_signature,lwa_signature,lt_files,lwa_files,
lv_doc_count,lv_docvarid,lv_docvarid.
lwa_files-directory = lv_dir.
lwa_files-filename = lv_file.
APPEND lwa_files TO lt_files.
CALL METHOD cl_bds_document_set=>get_with_files
EXPORTING
classname = classname
classtype = classtype
client = client
CHANGING
files = lt_files
signature = lt_signature
EXCEPTIONS
nothing_found = 1
error_kpro = 2
internal_error = 3
parameter_error = 4
not_authorized = 5
not_allowed = 6
OTHERS = 7.
READ TABLE lt_signature INTO lwa_signature
WITH KEY prop_value = lv_file.
IF sy-subrc EQ 0.
CLEAR : lt_signature1,lwa_signature1.
LOOP AT lt_signature INTO lwa_signature
WHERE prop_value = lv_file.
MOVE-CORRESPONDING lwa_signature TO lwa_signature1.
APPEND lwa_signature1 TO lt_signature1.
ENDLOOP.
SORT lt_signature1 BY doc_ver_no DESCENDING.
READ TABLE lt_signature1 INTO lwa_signature1 INDEX 1.
lwa_signature = lwa_signature1.
CALL FUNCTION 'POPUP_TO_DECIDE_LIST'
EXPORTING
textline1 = 'Файл уже существует'
titel = 'Файл уже существует'
IMPORTING
answer = lv_ans
TABLES
t_spopli = lt_popli
EXCEPTIONS
not_enough_answers = 1
too_much_answers = 2
too_much_marks = 3
OTHERS = 4.
IF lv_ans NE 'A'.
CLEAR lt_files.
lwa_files-directory = lv_dir.
lwa_files-filename = lv_file.
APPEND lwa_files TO lt_files.
CALL METHOD cl_bds_document_set=>create_version_with_files
EXPORTING
classname = classname
classtype = classtype
client = client
doc_id = lwa_signature-doc_id
doc_ver_no = lwa_signature-doc_ver_no
doc_var_id = lwa_signature-doc_var_id
IMPORTING
new_doc_ver_no = lv_new_version
CHANGING
files = lt_files
EXCEPTIONS
internal_error = 1
error_kpro = 2
parameter_error = 3
not_allowed = 4
not_authorized = 5
nothing_found = 6
OTHERS = 7.
if sy-subrc <> 0.
case sy-subrc.
when 1. msg 'Internal Error.' internal_error.
when 2. msg 'KPro Error.' error_kpro.
when 3. msg 'Error in Transfer Parameters.' parameter_error.
when 4. msg 'Action not Permitted.' not_allowed.
when 5. msg 'No Authorization.' not_authorized.
when 6. msg 'Nothing Found.' nothing_found.
endcase.
exit.
endif.
ELSE.
lwa_signature-doc_count = '1'.
lwa_files-doc_count = lwa_signature-doc_count.
lwa_signature-comp_count = '1'.
lwa_signature-doc_ver_no = '1'.
lwa_signature-doc_var_id = '1'.
lwa_signature-prop_name = 'FILE_NAME'.
lwa_signature-prop_value = lv_file.
APPEND lwa_signature TO lt_signature1.

lwa_files-directory = lv_dir.
lwa_files-filename = lv_file.
APPEND lwa_files TO lt_files1.

CALL METHOD cl_bds_document_set=>create_with_files
EXPORTING
classname = classname
classtype = classtype
client = client
CHANGING
files = lt_files1
object_key = lv_objkey
signature = lt_signature1
EXCEPTIONS
internal_error = 1
error_kpro = 2
parameter_error = 3
not_allowed = 4
not_authorized = 5
nothing_found = 6
OTHERS = 7.
if sy-subrc <> 0.
case sy-subrc.
when 1. msg 'Internal Error.' internal_error.
when 2. msg 'KPro Error.' error_kpro.
when 3. msg 'Error in Transfer Parameters.' parameter_error.
when 4. msg 'Action not Permitted.' not_allowed.
when 5. msg 'No Authorization.' not_authorized.
when 6. msg 'Nothing Found.' nothing_found.
endcase.
exit.
endif.
ENDIF.
ELSE.
lwa_signature-doc_count = '1'.
lwa_files-doc_count = lwa_signature-doc_count.
lwa_signature-comp_count = '1'.
lwa_signature-doc_ver_no = '1'.
lwa_signature-doc_var_id = '1'.
lwa_signature-prop_name = 'DESCRIPTION'.
lwa_signature-prop_value = lv_file.
APPEND lwa_signature TO lt_signature1.
lwa_files-directory = lv_dir.
lwa_files-filename = lv_file.
APPEND lwa_files TO lt_files1.

CALL METHOD cl_bds_document_set=>create_with_files
EXPORTING
classname = classname
classtype = classtype
client = client
CHANGING
files = lt_files1
object_key = lv_objkey
signature = lt_signature1
EXCEPTIONS
internal_error = 1
error_kpro = 2
parameter_error = 3
not_allowed = 4
not_authorized = 5
nothing_found = 6
OTHERS = 7.
if sy-subrc <> 0.
case sy-subrc.
when 1. msg 'Internal Error.' internal_error.
when 2. msg 'KPro Error.' error_kpro.
when 3. msg 'Error in Transfer Parameters.' parameter_error.
when 4. msg 'Action not Permitted.' not_allowed.
when 5. msg 'No Authorization.' not_authorized.
when 6. msg 'Nothing Found.' nothing_found.
endcase.
exit.
endif.
ENDIF.
ENDIF.
ENDFUNCTION.
</code>

А вот для загрузки его в таблицу
<code>
FUNCTION ZIP_BDS_AS_TABLE .
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(CLASSNAME) TYPE SBDST_CLASSNAME
*" REFERENCE(CLASSTYPE) TYPE SBDST_CLASSTYPE DEFAULT 'OT'
*" REFERENCE(CLIENT) TYPE SBDST_CLIENT DEFAULT SY-MANDT
*" CHANGING
*" REFERENCE(CONTENTS) TYPE SBDST_ASCII_CONTENT
*" EXCEPTIONS
*" INTERNAL_ERROR
*" ERROR_KPRO
*" PARAMETER_ERROR
*" NOT_ALLOWED
*" NOT_AUTHORIZED
*" NOTHING_FOUND
*" NO_CONTENT
*"----------------------------------------------------------------------

data: bds_instance TYPE REF TO cl_bds_document_set.
data: sig type SBDST_SIGNATURE.

if bds_instance is initial.
CREATE OBJECT bds_instance.

call method bds_instance->GET_WITH_AS_TABLE
exporting
classname = classname
classtype = classtype
client = client
changing
ASCII_CONTENT = contents
SIGNATURE = sig
exceptions
INTERNAL_ERROR = 1
ERROR_KPRO = 2
PARAMETER_ERROR = 3
NOT_ALLOWED = 4
NOT_AUTHORIZED = 5
NOTHING_FOUND = 6
NO_CONTENT = 7
others = 8.
if sy-subrc <> 0.
case sy-subrc.
when 1. msg 'Internal Error.' internal_error.
when 2. msg 'KPro Error.' error_kpro.
when 3. msg 'Error in Transfer Parameters.' parameter_error.
when 4. msg 'Action not Permitted.' not_allowed.
when 5. msg 'No Authorization.' not_authorized.
when 6. msg 'Nothing Found.' nothing_found.
when 7. msg 'No Contents.' NO_CONTENT.
endcase.
exit.
endif.
endif.
ENDFUNCTION.
</code>


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 29 2007, 11:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
_gary_ написал(а):
Ну если это дебагер так отображает, то в файл таблица должна сохраниться в ANSI. Ведь в BDS я засовывал ANSI. А сохраняются в файл крякозябры.


Все ф.м. думают, что на входе ISO-8859-5 и если попросить их выгружать в файл в cp1251, то как раз и будет перекодировка.

Выгружать в файл нужно либо в BIN, либо в кодировке ISO-8859-5.
Тогда данные попадут в файл 1:1 без перекодировок и будет счастье.


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
а тогда почему если анси-файл загрузить во внутреннюю таблицу (GUI_UPLOAD), а потом ее сохранить в файл (GUI_DOWNLOAD). то никакой перекодировки не происходит. файл в итоге тоже анси получается. и ведь я не прошу его выгружать в какой-либо кодировке. Мне нужно чтобы он что принял в таблицу то и сохранил в файл. Или Вы хотите сказать что кодировка происходит во время загрузки файла в BDS? Но тогда почему блокнот все нормально отображает через тран. oaer?


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

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
Хотя нет. скорее перекодировка происходит. во время зачитывания шаблона в таблицу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 07 2007, 16:44 
Специалист
Специалист

Зарегистрирован:
Ср, мар 21 2007, 14:32
Сообщения: 158
после загрузки шаблона во внутреннюю таблицу
сделал для каждой строки
TRANSLATE in_text FROM CODE PAGE '1504' TO CODE PAGE '1500'.
теперь все отображается и в файл GUI_DOWNLOAD сохраняет русские буквы нормально, но теперь вместо символов перевода каретки получились две точки.

получается что после загрузки шаблона в таблицу символы остались в АНСИ. но почему если сделать сохранение без translate и потом открыть в блокноте файл, то вместо русских букв - крякозябры?


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

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


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

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


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

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