Как создавать и отправлять Idoc в SAP с помощью SAP .Net Connector 3

Я хочу создавать и отправлять файлы idoc в SAP с помощью SAP. Сетевой коннектор 3.x.

И у меня есть настроенный пункт назначения RFC в моем приложении:

 _rfcDestination = RfcDestinationManager.GetDestination(_destinationName);

Но я не могу найти примеры того, как создавать и отправлять idocs.

Может ли кто-нибудь дать пример кода о том, как создать и отправить idoc?


person flosk8    schedule 20.01.2016    source источник
comment
SAP NCo 3.0 не имеет встроенных наборов функций для обработки IDOC, как в версии Java, или в некоторых API, таких как ERP connect. Один из способов сделать это без помощи SAP NCo — через HTTP, вы можете увидеть его в этой статье, scn.sap.com/community/pi-and-soa-middleware /blog/2012/01/14/ вам понадобится ваша база, чтобы помочь вам с профилями партнеров и т. д., но вы можете опубликовать настоящий XML в веб-службе и сгенерировать IDOC.   -  person Bearcat9425    schedule 03.02.2016


Ответы (1)


Одним из способов отправки idoc в систему SAP с помощью NCo является функциональный модуль IDOC_INBOUND_ASYNCHRONOUS. Функциональный модуль имеет несколько табличных параметров, содержащих ваши данные idoc. Таблица IDOC_CONTROL_REC_40 содержит контрольную запись, IDOC_DATA_REC_40 содержит сегменты данных idoc.

IDOC_DATA_REC_40 содержит поле с именем SDATA. Это поле содержит данные сегмента idoc в виде одной объединенной строки с фиксированной длиной поля.

var fnc = destination.Repository.CreateFunction("IDOC_INBOUND_ASYNCHRONOUS");
var controlTable = fnc.GetTable("IDOC_CONTROL_REC_40");
var dataTable = fnc.GetTable("IDOC_DATA_REC_40");

// control segment
controlTable.Append();
controlTable.CurrentRow.SetValue("TABNAM", "EDI_DC40  ");
...


// here you add the data segments
dataTable.Append();
dataTable.CurrentRow.SetValue(...);

fnc.Invoke(destination);

построение данных idoc для IDOC_DATA_REC_40-SDATA должно быть выполнено вручную в вашем коде - вам нужно знать длины полей, включая цифры для числовых полей. Может быть способ получить эту информацию из системы SAP и использовать ее в своем коде, но я никогда этого не пробовал.

person Dirk Trilsbeek    schedule 20.01.2016