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

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


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

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


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

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