AFH написал(а):
Попробуйте одно определение метаданных использовать везде (у вас тип строки одинаковый во входном параметре, таблице и выходном параметре?)
Code:
RfcStructureMetadata stru = new RfcStructureMetadata("TLINE");
stru.AddField(new RfcFieldMetadata("TDFORMAT", RfcDataType.CHAR, 2, 0, 0, 0));
stru.AddField(new RfcFieldMetadata("TDLINE", RfcDataType.CHAR, 132, 0, 0, 0));
fmd.AddParameter(new RfcParameterMetadata("ET_ORGS", stru, RfcDirection.TABLES, false));
fmd.AddParameter(new RfcParameterMetadata("I_STRU", stru, RfcDirection.IMPORT, false));
fmd.AddParameter(new RfcParameterMetadata("E_STRU", stru, RfcDirection.EXPORT, false));
я так изначально и делал. результат тот же.
кстати тип таблицы я переопределил VALUE(ET_ORGS) TYPE ZDDK_ORG_T
Code:
RfcStructureMetadata BOX = new RfcStructureMetadata("ZDDK_BOX");
BOX.AddField(new RfcFieldMetadata("ID", RfcDataType.CHAR, 200, 0, 0, 0));
BOX.AddField(new RfcFieldMetadata("TITLE", RfcDataType.CHAR, 200, 0, 0, 0));
RfcTableMetadata BOXES = new RfcTableMetadata("BOXES", BOX);
RfcStructureMetadata ORG = new RfcStructureMetadata("ZDDK_ORG");
ORG.AddField(new RfcFieldMetadata("ID", RfcDataType.CHAR, 200, 0, 0, 0));
ORG.AddField(new RfcFieldMetadata("INN", RfcDataType.CHAR, 16, 0, 0, 0));
ORG.AddField(new RfcFieldMetadata("KPP", RfcDataType.CHAR, 18, 0, 0, 0));
ORG.AddField(new RfcFieldMetadata("FULLNAME", RfcDataType.CHAR, 200, 0, 0, 0));
ORG.AddField(new RfcFieldMetadata("BOXES", BOXES, 0, 0));
RfcTableMetadata ORGS = new RfcTableMetadata("ET_ORGS", ORG);
fmd.AddParameter(new RfcParameterMetadata("ET_ORGS", ORGS, RfcDirection.EXPORT, false));
каждая строка таблицы - структура с вложенной таблицей.
и все работает.