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

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


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

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


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

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