Текущее время: Чт, апр 18 2024, 15:01

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: маппинг нескольких строк
СообщениеДобавлено: Чт, янв 23 2014, 10:23 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Приветствую.

Есть структура IDOC типа
Code:
Сегмент1
...
  подсегмент1.1
   ...
   подсегмент 1.1.1_ИМЯ1
     ТИП=*
     ПОЛЕ
   подсегмент 1.1.1_ИМЯ1
     ТИП=\
     ПОЛЕ
   подсегмент 1.1.1_ИМЯ1
     ТИП=\
     ПОЛЕ
   подсегмент 1.1.1_ИМЯ1
     ТИП=\
     ПОЛЕ
   подсегмент 1.1.1_ИМЯ1
     ТИП=\
     ПОЛЕ

нужно эти поля ПОЛЕ смапить вот как: первое вхождение (со звездочкой в типе) в одно поле результата ПЕРВОЕ_ВХОЖДЕНИЕ, а остальные 4 слепить в одно поле ОСТАЛЬНЫЕ_ВХОЖДЕНИЯ

То есть получить в итоге такое
Code:
НАИМЕНОВАНИЕ=СЦЕПЛЕННЫЕ_ЗНАЧЕНИЯ_ИЗ_2-го_И_ПОСЛЕДУЮЩИХ_подсегментов1.1.1_ИМЯ1
ЗНАЧЕНИЕ=ЗНАЧЕНИЕ_ИЗ_ПЕРВОГО_ПОПАВШЕГОСЯ_подсегмента1.1.1_ИМЯ1


как такое сделать? Вроде бы советуют через UDF, но я никогда этого не делал, так что подробные указания приветствуются.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: маппинг нескольких строк  Тема решена
СообщениеДобавлено: Чт, янв 23 2014, 11:53 
Специалист
Специалист

Зарегистрирован:
Пт, май 07 2010, 13:17
Сообщения: 120
Откуда: Сургут
Пол: Мужской
Если праивьно понял
1 у UDF на вхоlе All value of Context ( "a" переменная на входе) - на входе по умолчанию single value.
2 при использовании UDF - надо выбрать context (правой мыкой на элементе) Сегмент1 -

3 исходник у UDF примерно такой.
//write your code here
String s="";
for (int i=0;i<a.length;i++) {s = s+ a[i]; s = s + "\n";
}
result.addValue (s);


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: маппинг нескольких строк
СообщениеДобавлено: Чт, янв 23 2014, 12:25 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
molochko_mf написал:
Если праивьно понял
1 у UDF на вхоlе All value of Context ( "a" переменная на входе) - на входе по умолчанию single value.
2 при использовании UDF - надо выбрать context (правой мыкой на элементе) Сегмент1 -

3 исходник у UDF примерно такой.
//write your code here
String s="";
for (int i=0;i<a.length;i++) {s = s+ a[i]; s = s + "\n";
}
result.addValue (s);


Ну вроде похоже, на сколько я понял. А как задать собственно входной параметр или "все значения из контекста" для данного поля?

У меня создалась такая шапка:
Code:
public void ConcatenateAllinContext(String[] var1, ResultList result, Container container) throws StreamTransformationException{


И еще, Как быть с тем, что первое вхождение нужно в другое значение пихать?


Последний раз редактировалось doleynikov Чт, янв 23 2014, 12:35, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: маппинг нескольких строк
СообщениеДобавлено: Чт, янв 23 2014, 12:32 
Специалист
Специалист

Зарегистрирован:
Пт, май 07 2010, 13:17
Сообщения: 120
Откуда: Сургут
Пол: Мужской
1 да шапка верная.
2 при использовании UDF на входном параметре правой мышкой надо выбрать контекс вышестоящего объекта ( для тебя Сегмент1 должен подойти)
тогда в массиве var1 будет все значения входной переменной


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: маппинг нескольких строк
СообщениеДобавлено: Чт, янв 23 2014, 12:39 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
molochko_mf написал:
тогда в массиве var1 будет все значения входной переменной

тогда в коде нужно a заменить на var1 (или в шапке var1 на a). так?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: маппинг нескольких строк
СообщениеДобавлено: Чт, янв 23 2014, 13:04 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Спасибо! Все вроде заработало. тест в редакторе прошел. Теперь жду выгрузки тестового документа из САП.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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