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

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

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

 _rfcDestination = RfcDestinationManager.GetDestination(_destinationName);

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

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

2 ответа

Функциональным модулем является один из способов передачи 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 и использовать ее в своем коде, но я никогда не пробовал этого.

Есть выход. SAP предоставляет еще один функциональный модуль RFC «IDOCTYPE_READ_COMPLETE», который согласно документу «Чтение типа IDoc с сегментами (RFC-совместимо)»

Из этого функционального модуля вы получите все определения сегментов/полей.

Важно отметить параметр «PI_RELEASE», который, если вы оставите его пустым, по умолчанию будет использовать версию приложения SAP.

IDOC может иметь несколько «версий», созданных для разных PI_RELEASES... Надеюсь, это поможет.

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