Текущее время: Пн, июл 07 2025, 05:46

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


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

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


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

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