Текущее время: Вс, авг 03 2025, 00:54

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: [РЕШЕНО] Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вс, янв 11 2009, 02:07 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Доброго всем времени суток.

Есть потребность при получении строки (которая представляет из себя кусок HTML кода) разрезать ее и сохранить в табличку. Потом соответственно достать ее из таблички и склеить дальше строку.

Чего боюсь: того, что при таком разделении могут потеряться пробелы. Т.е. если пробел выпадет на конец разрезанного куска, то при сохранении и чтении этот пробел потеряется.

Чего хочется: найти существующий функционал (функцию или класс) для грамотной обработки строк. К сожалению, поиск по форуму ничего не дал.

Собственно с чем и прошу помочь.


Последний раз редактировалось Konstantin Anikeev Вт, янв 13 2009, 23:48, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вс, янв 11 2009, 02:09 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Собственно вот тут http://sapnet.ru/viewtopic.php?t=2043 нашел функцию...
Однако остаются два вопроса:
Как поведет себя табличка при сохранении/чтении из DB? Есть ли аналогичный класс?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 13:29 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Собственно как и ожидалось,
Code:
что-то<strong>что-то</strong>что-то

Преобразуется SOTR_SERV_STRING_TO_TABLE в
Code:
что-то<strong>что-то</str
ong>что-то

После вызова SOTR_SERV_TABLE_TO_STRING
Code:
что-то<strong>что-то</str ong>что-то

Ну и собственно дамп... Так что тема все еще актуальна.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 13:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Насчет существующего функционала не знаю, могу только идеей поделиться.

В случае, если таблица для хранения строк своя, то можно добавить в нее поле типа boolean и каждый раз после разреза строки проверять, является ли последний символ левого куска строки или первый символ правого куска пробелом и если да, то ставить галку в это поле, нет - оставлять пустым. Потом при склеивании строк соответственно учитывать значение этого поля, что будет значить добавлять после этого куска пробел или нет.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 13:50 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
VID написал:
Насчет существующего функционала не знаю, могу только идеей поделиться.

В случае, если таблица для хранения строк своя, то можно добавить в нее поле типа boolean и каждый раз после разреза строки проверять, является ли последний символ левого куска строки или первый символ правого куска пробелом и если да, то ставить галку в это поле, нет - оставлять пустым. Потом при склеивании строк соответственно учитывать значение этого поля, что будет значить добавлять после этого куска пробел или нет.


Да я тоже о реализации подобного думал, но, сами понимаете, стандартный он все-таки лучше... Насколько я себе представляю, все уже давно реализовано, надо только уметь найти... :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 14:06 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Да уж, стандартное оно хорошо, особенно если подходит к случаю :)

Помню еще в Украине проблема такая была с текстами, но только тогда я вышел из положения так. Перед разбитием проверял, являются ли символы справа и слева от точки разреза пробелами, если да, то сдвигал точку разрыва влево (в сторону уменьшения куска) на символ, потом снова проверял, пока не добивался того, чтобы пробелов рядом не было. А потом при склеивании просто склеивал не задумываясь без separated by space. Но в моем случае было не обязательным иметь размер куска скажем в 72 символа, можно было и меньше.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 14:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Цитата:
Да я тоже о реализации подобного думал, но, сами понимаете, стандартный он все-таки лучше... Насколько я себе представляю, все уже давно реализовано, надо только уметь найти... :)

Может кому то это покажется извращением, но как вариант могу предложить хранить Ваши HTML коды в подробных текстах используя ФМы 'SAVE_TEXT' и 'READ_TEXT' и немного в SPRO настроить объект и ИД текста, я так делал когда столкнулся с необходимостью хранить в таблицах примечания которое очень длинные, а как вы знаете поля в таблицах только 255 символов, а плодить их не красиво получается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 14:18 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Besa написал:
Может кому то это покажется извращением, но как вариант могу предложить хранить Ваши HTML коды в подробных текстах используя ФМы 'SAVE_TEXT' и 'READ_TEXT' и немного в SPRO настроить объект и ИД текста, я так делал когда столкнулся с необходимостью хранить в таблицах примечания которое очень длинные, а как вы знаете поля в таблицах только 255 символов, а плодить их не красиво получается.
Так вопрос то в том и состоит как "красиво" склеить то что, скажем, будет прочитано через 'READ_TEXT' к примеру в STRING

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 14:26 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Цитата:
Так вопрос то в том и состоит как "красиво" склеить то что, скажем, будет прочитано через 'READ_TEXT' к примеру в STRING

Уверен на 99% что как раз таки SAVE_TEXT и занимается тем что ложит в таблицы красиво, а READ_TEXT достает и возвращает табличку, потом просто Loop и cancatenate без свяких сепароторов, по крайней мере текста примерно в 2000 строк собирались красиво на сколько я помню, но я могу ошибаться, предлагаю Константину проверить :) или ковырять SAVE_TEXT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 14:39 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
Собственно как и ожидалось,
Code:
что-то<strong>что-то</strong>что-то

Преобразуется SOTR_SERV_STRING_TO_TABLE в
Code:
что-то<strong>что-то</str
ong>что-то

После вызова SOTR_SERV_TABLE_TO_STRING
Code:
что-то<strong>что-то</str ong>что-то

Ну и собственно дамп... Так что тема все еще актуальна.

Обратное преобразование делайте не через ФМ, а обрабатывая построчно таблицу - строка таблицы в стринг через CL_ABAP_STRING_UTILITIES=>C2STR_PRESERVING_BLANKS и склейка через простой CONCATENATE.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 23:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Besa написал:
Цитата:
Так вопрос то в том и состоит как "красиво" склеить то что, скажем, будет прочитано через 'READ_TEXT' к примеру в STRING

Уверен на 99% что как раз таки SAVE_TEXT и занимается тем что ложит в таблицы красиво, а READ_TEXT достает и возвращает табличку, потом просто Loop и cancatenate без свяких сепароторов, по крайней мере текста примерно в 2000 строк собирались красиво на сколько я помню, но я могу ошибаться, предлагаю Константину проверить :) или ковырять SAVE_TEXT.


Не-а... не пойдет... Дело в том, что SAVE_TEXT/READ_TEXT работают с таблицами, одним из столбцов которой как раз и является формат строки (новая строка, мягкая связка/жесткая связка). Поэтому и заморачиваться с ними неохота... Плюс настройки типов текстов - есть обременительная вещь для разработки, т.к. хочется таскать все одним Workbench-Auftrag.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Препарирование строк для хранения в таблицах
СообщениеДобавлено: Вт, янв 13 2009, 23:47 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
sy-uname написал(а):
Обратное преобразование делайте не через ФМ, а обрабатывая построчно таблицу - строка таблицы в стринг через CL_ABAP_STRING_UTILITIES=>C2STR_PRESERVING_BLANKS и склейка через простой CONCATENATE.


Спасибо, то, что доктор прописал... Завернул все в класс - работает "на ура"...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [РЕШЕНО] Препарирование строк для хранения в таблицах
СообщениеДобавлено: Пт, янв 16 2009, 12:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Эм, я все понимаю, но не проще сделать в табличке поле типа string и не резать строку вобще?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: [РЕШЕНО] Препарирование строк для хранения в таблицах
СообщениеДобавлено: Пт, янв 16 2009, 12:53 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Пономарев Артем написал:
Эм, я все понимаю, но не проще сделать в табличке поле типа string и не резать строку вобще?

Проще, но:
Для этого нужно внести изменение в ядро системы, чтобы она(система) допускала использование в таблицах БД строк с неопределённой длиной

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [РЕШЕНО] Препарирование строк для хранения в таблицах
СообщениеДобавлено: Пт, янв 16 2009, 19:02 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 25 2005, 19:26
Сообщения: 67
Пол: Мужской
В свежих версиях уже можно.

См., например, элемент данных STRINGVAL.

Сам в таблицах юзать не пробовал - только в структурах, но where used выдает ссылки и на прозрачные таблицы.

_________________
Come to Cookies! We Have Dark Sides!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

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


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

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


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

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