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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 16:47 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Konstantin Anikeev написал:
tdebug написал(а):
И когда например дата приходит в несаповском виде в строке, а в таблице в которую нужно складывать, вид саповский, на лету никак не преобразуешь ей :?

А это уже от вас зависит, точнее от типа данных и convert-routinen...


Например как можно с этой функцией сконвертировать дату вида 2005-08-01 (такое приходит в строке) в саповский DATS? Функция попытается это записать в DATS, вылетит в дамп и всё?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 17:03 
Гуру-модератор
Гуру-модератор
Аватара пользователя

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 17:19 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Konstantin Anikeev написал:
Ну вы чего, не читаете меня? Используйте домен, у которого есть convert-routine...


Читать я вас читаю, просто я такого никогда не делал раньше.
У меня есть транзакционный DSO и структура такого же типа, там тип даты DATS и домен DATUM. Т.е. есть какие-то sap расширения на эту тему, user-exits в которых можно подставить конверсию при записи такого типа в такие поля в конкретную таблицу? Или я что-то не так понял?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 17:56 
Гуру-модератор
Гуру-модератор
Аватара пользователя

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

1. Вручную лопатить табличку через SPLIT
2. Использовать Zwischentabelle с удобными доменами
3. Привести файл импорта в божеский вид (либо до импорта, либо при).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 18:26 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Konstantin Anikeev написал:
Ну тогда есть три варианта.

1. Вручную лопатить табличку через SPLIT
2. Использовать Zwischentabelle с удобными доменами
3. Привести файл импорта в божеский вид (либо до импорта, либо при).


2) это значит написать в коде структуры по 30 значений. Тогда вообще смысл всех этих плясок пропадает. Я бы если бы так сделал, подставил в SPLIT по очереди поля каждой структуры. Страшный код бы получился :))

3) Нет возможности. Файлы заливаются автоматически, и имеют размер по 180 мегабайт..

1) Похоже придётся. Вот и не пригодится та функция. Может поэтому для неё нет ни описания и нигде она не используется :(

И всё-таки, значит нет ни какой возможности - никакого exit для DATS и TIMS, который бы вызывался при записи таких полей чтобы их можно было привести в SAP формат?
А если создать самому таблицы и изменить там домены DATS и TIMS на какие-нибудь другие - есть ли такие к которым можно будет приделать какой-нибудь exit?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 18 2008, 19:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
tdebug написал(а):
И всё-таки, значит нет ни какой возможности - никакого exit для DATS и TIMS, который бы вызывался при записи таких полей чтобы их можно было привести в SAP формат?
А если создать самому таблицы и изменить там домены DATS и TIMS на какие-нибудь другие - есть ли такие к которым можно будет приделать какой-нибудь exit?

Есть... Этот Exit и называется Convert-Routinen и привязывается к доменам. А то, что вы описываете во втором абзаце и есть способ 2. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 21 2008, 12:47 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
В общем, функция RSS_LINE_SPLIT работает странно ну или по сути почти не работает.
У меня была строка, разделённая символом | на подстроки, которые нужно было выделить и сложить по порядку в таблицу. Вызываю следующим образом

Code:
CALL FUNCTION 'RSS_LINE_SPLIT'
        EXPORTING
          i_input                 = i_po_data
*          i_line_width            = 180
           i_delimiters            = '|'
*          i_break_chars           = '|'
*          i_line_comment_char     = ''
*          i_comment_char          = ''
          i_append_lines          = l_append_lines
        CHANGING
          c_t_lines               = T_RS
        EXCEPTIONS
          no_break_position_found = 1.


В таком слчае выдаётся сообщение "отсутствует правый ограничитель". В чём его смысл? Не понятно, т.к. ограничители везде есть. Пробовал добавлять | так же в самое начало и в самый конец строки, всё равно такое же сообщение.

Если закоментировать i_delimiters и раскоментировать * i_break_chars = '|'
строки складываются в таблицу, но функция не обращает внимания на |, рубит строку на размеры каждого поля в таблице и таким образом складывает в неё, получается само собой полная ерунда.


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
tdebug написал(а):
В общем, функция RSS_LINE_SPLIT работает странно ну или по сути почти не работает.

Код в этой функции сильно навороченный, и по разделителям они считают четность, возможно закладываются на ковычки.
Я бы все-таки посоветовал не париться, а сделать SPLIT в цикле, как советовали выше, ничего уж такого страшного в том коде нет, тем более легко сделать подпрограмму или метод класса и пользоваться потом.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 21 2008, 16:22 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, апр 25 2006, 15:14
Сообщения: 280
Всем большое спасибо!

В конце концов реализовал всё при помощи SPLIT и ASSIGN, не осилил научиться пользоваться этой функцией. Наверное она работает только когда размер подстроки точно соотвествует размеру поля таблицы, что как-то очень по-аквариумному, ну да ладно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 22 2008, 14:33 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Konstantin Anikeev написал:
А вот если вы делить пробелами ее не будете, то можно просто присвоить :)
Тупо по длине компонент все разобьется... В смысла присвоить структуре и в аппендом в табличку...

Можно и делить
Вот остроумно придумал:
1) создать вспом.структуру - копию строки нужной табл., но после кажд.поля вставлять поле типа char1
2) присвоить (вспом.структ) = (строка для сплита)
3) move-corresponding (вспом.структ) to (раб.область целевой табл.)
ЗЫ: ну и аппенд если нужно

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Вт, янв 20 2009, 17:58 
Начинающий
Начинающий

Зарегистрирован:
Чт, дек 25 2008, 10:00
Сообщения: 3
tdebug написал(а):

Code:
CALL FUNCTION 'RSS_LINE_SPLIT'
        EXPORTING
          i_input                 = i_po_data
*          i_line_width            = 180
           i_delimiters            = '|'
*          i_break_chars           = '|'
*          i_line_comment_char     = ''
*          i_comment_char          = ''
          i_append_lines          = l_append_lines
        CHANGING
          c_t_lines               = T_RS
        EXCEPTIONS
          no_break_position_found = 1.




Вы не могли бы привести ту часть кода, где Вы объявляете T_RS?


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

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


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

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


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

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