Текущее время: Сб, авг 02 2025, 20:20

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


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

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


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

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