Как построить и отправить IDOC из MII в SAP ECC с помощью IDOC_Asynchronous_Inbound

У нас есть специализированное приложение, которое собирает данные из базы данных SQL-сервера, создает IDOC и затем "отправляет" этот IDOC в ECC. (Это приложение было написано на VB6 и использует SAPGUI 6 SDK для достижения этой цели.)

Я пытаюсь вывести это решение из эксплуатации и заменить его решением, встроенным в MII.

Насколько я могу сказать, мне нужно создать IDOC в MII, используя IDOC_Asynchronous_Inbound но я застрял в том, как я должен заполнить необходимые поля.

IDOC_Asynchronous_Inbound имеет два сегмента: IDOC_CONTROL_REC_40 а также IDOC_DATA_REC_40

Я угадал, какие поля заполнить IDOC_CONTROL_REC_40/item сегмент, посмотрев на исходный код старого приложения VB. Я думаю, что это должно сделать:

IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_CONTROL_REC_40/item
- IDOCTYP: WMMBID01
- MESTYP: WMMBXY
- SNDPRN: <value>
- SNDPRT: LI
- SNDPOR: <value>
- RCVPRN: <value>
- RCVPRT: LS
- EXPRSS: X

Глядя на исходный код старого приложения VB, я должен теперь добавить сегмент типа E1MBXYH со следующими заполненными полями:

- BLDAT: <date>
- BUDAT: <date>
- TCODE: MB31
- XBLNR: <value>
- BKTXT: <value>

Основываясь на догадках и некоторых постах в блоге, я думаю, что мне нужно добавить этот сегмент как item сегмент к IDOC_DATA_REC_40 сегмент.

Я думаю, я должен добавить item сегменты типа E1MBXYI для всех "записей" я хотел бы отправить в SAP следующие поля:

- MATNR: <value>
- WERKS: <value>
- LGORT: <value>
- CHARG: <value>
- BWART: 261 
- ERFMG: <value>
- SHKZG: H
- ERFME: <value>
- AUFNR: <value>
- SGTXT: <value>

Теперь, глядя на IDOC_DATA_REC_40 сегмент в MII, это поля, которые доступны:

- SEGNAM
- MANDT
- DOCNUM
- SEGNUM
- PSGNUM
- HLEVEL
- SDATA

Я думаю, что имя сегмента должно входить в SEGNAM и данные (правильно структурированные / разнесенные) должны идти в SDATA, Я не уверен, что я должен положить в другие поля (если что-нибудь). (У меня есть файл описания для этого типа IDOC, поэтому я знаю, как "структурировать" данные, которые я должен поместить в SDATA сегмент... считая пробелов, ууу!)

Надеемся, чтобы уточнить, как должна быть структурирована IDOC, это (ссылка на) снимок экрана IDOC, размещенного в текущем приложении VB:

снимок экрана IDOC в SAP, показывающий структуру данных

Я надеюсь, что кто-то здесь может подтвердить, что я нахожусь на правильном пути в заполнении сегментов и что есть кто-то, кто знает, какие поля я должен заполнить в сегментах данных.

С уважением,

Томас

PS С некоторыми из ресурсов обращались:

  1. Как создавать и отправлять Idoc в SAP с помощью SAP .Net Connector 3
  2. Документация по движению материала IDOC SAP
  3. Как отправить IDOC из SAP MII в SAP ERP

PPS Полное раскрытие. Я также разместил этот вопрос на доске вопросов и ответов сообщества SAP.

2 ответа

К сожалению, правильно работать с SAP IDoc не так просто, как кажется на первый взгляд. Может быть, было бы неплохо взглянуть на библиотеку классов SAP Java IDoc, как упомянуто здесь:

SAP.Net Connector 3.0 - Как я могу отправить idoc из системы не-SAP?

Даже если вы не хотите переключаться на Java, его можно использовать по крайней мере в качестве справочного примера, чтобы увидеть, как модули удаленной функции должны заполняться данными IDoc для отправки.

Отсюда можно скачать библиотеку классов SAP Java IDoc вместе с SAP Java Connector.

У меня нет системы MII на моей стороне, но вам лучше тщательно изучить документацию IDoc, а не читать чайные листья. Он может содержать полезные советы, как заполнить то или иное поле сегмента.

Перейдите на WE60 и введите имена своих сегментов (IDOC_CONTROL_REC_40/IDOC_DATA_REC_40) или имя определения IDoc IDOC_Asynchronous_Inbound.

Это может быть не очень полезно, но лучше, чем ничего.

Другие вопросы по тегам