SAPфорум.RU
https://sapboard.ru/forum/

Message Maping в IDOC. Множественное использование сегмента
https://sapboard.ru/forum/viewtopic.php?f=70&t=62987
Страница 1 из 1

Автор:  cons [ Пн, авг 16 2010, 12:51 ]
Заголовок сообщения:  Message Maping в IDOC. Множественное использование сегмента

Добрый день! Нужна помощь!
Настраиваю Message Maping в IDOC тип.
Проблема: В IDOC описан сегмент (текстовые данные) с возможностью множественного использования - для языковых версий.
Не получается заполнить его 2ды. Т.е. мне нужно в выходном IDOC получить 2 сегмента одной структуры. Как это корректно сделать?
Пробую так: правый клик на сегменте - "Duplicate Subtree". Сегмент как бы дублируется. Вроде то что надо. НО! после заполнения при сохранении ругается:
The source structure, target structure, or a function library has been changed or could not be found in the Enterprise Services Repository. The mapping definition contains elements or attributes that do not exist in the changed structure, or functions that were changed in a function library. The relevant entries will be deleted.
Target structure has no such path: /ZMATRL01/IDOC/ZMATRLT[1]/SPRAS. Skipping mapping Node with path /ZMATRL01/IDOC/ZMATRLT[1]/SPRAS not found in source structure.

и продублированный сегмент исчезает.

Автор:  Ich Will [ Пн, авг 16 2010, 16:08 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

Когда мне нужно было расширить IDOC своими полями по какой-то логике я использовал User-exit из ГФ XV50B.

Вам оно вряд ли подойдёт, но как решение может получиться.

Автор:  cons [ Ср, авг 18 2010, 07:54 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

Вы меня не совсем поняли...
Проблема не в добавлении новых полей в IDOC.
В IDOCе описан сегмент подразумевающий множественное использование. Т.е. в рамках одного документа может быть несколько экземпляров данных этого сегмента. При маппировании получается только однократно заполнить сегмент данными из источника. Предполагаю, что должна быть возможность несколько раз заполнить сегмент (типа создать несколько инстанций) т.к. определение IDOCа это позволяет. Но как это сделать?

Автор:  observer [ Ср, авг 18 2010, 08:15 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

Ответ на ваш вопрос зависит от типа сообщения, из которого нужно мапить в IDOC.
Все тексты в одном сообщении с повторяющейся структурой, или это несколько сообщений?

Автор:  cons [ Ср, авг 18 2010, 08:57 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

На входе одно сообщение "плоской" структуры. нужно мапировать в один IDOC-документ.
В исходном документе есть несколько полей с описанием объекта на разных языках (RU, EN и т.д.) - языковые версии. Планировалось разложить эти описания в разные экземпляры спец сегмента. Не получается... Можно конечно исправить IDOC тип - сделать такую же плоскую структуру, благо IDOC свой. Но считаю это не совсем правильным + хочется разобраться.

Автор:  chumpa [ Ср, авг 18 2010, 10:47 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

cons написал(а):
На входе одно сообщение "плоской" структуры. нужно мапировать в один IDOC-документ.


Посмотрите XSD данного сообщения в message mapping, наверное occurs=0..1 а не 0..n

Автор:  cons [ Ср, авг 18 2010, 11:14 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

Входное сообщение(XML) - occurrences 1:1
Выходное сообщение(IDOC) - 1:1
- служебный сегмент EDI_DC40 - 1:1
- сегмент 1 (осн данные) - 1:1
- сегмент 2 (для текстов) - 1:99

соотношение сообщений 1:1 соблюдается. одному входному соответствует одно выходное. а в этом выходном, нужно несколько экземпляров сегмента 2, что не противоречит его описанию (1..99)

Автор:  observer [ Ср, авг 18 2010, 16:04 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

В исходном сообщении языковые версии текстов это повторяющийся сегмент или тексты просто размазаны по сообщению?
Было бы полезно выложить сюда пример (кусок) исходного сообщения...

Автор:  cons [ Чт, авг 19 2010, 09:37 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента  Тема решена

В исходном сообщении тексты "размазаны по сообщению".
Удалось решить проблему!
Через Duplicate Subtree. Чтобы продублированный сегмент не удалялся и не было ошибки надо было для него прописать хоть какое-то правило маппирования (не для полей сегмента, а для самого node).
На решение натолкнул http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/4052
Всем, спасибо за участие!

Автор:  chumpa [ Чт, авг 19 2010, 15:04 ]
Заголовок сообщения:  Re: Message Maping в IDOC. Множественное использование сегмента

cons написал(а):
Чтобы продублированный сегмент не удалялся и не было ошибки надо было для него прописать хоть какое-то правило маппирования (не для полей сегмента, а для самого node).


Была мысль спросить про наличие условия создания самого сегмента, но подумал что наверное оно есть а дело в другом :) MM не уважаю, в XSLT/джаве проще писать (правда, неудобнее деплоить).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/