pour autant que je sais qu'il est maintenant aide IDOC dans le connecteur net courant 3. Mais si vous avez un fichier contenant un idoc valide, vous avez déjà toutes les informations dont vous avez besoin.
Les bases sur l'envoi d'Idocs au système SAP sont déjà décrites here, donc je ne vais pas entrer dans les détails à ce sujet dans cette réponse. Pour envoyer votre fichier idoc, vous devez remplir manuellement l'enregistrement de contrôle (première ligne de votre idoc) et les enregistrements de données.
La table de contrôle nécessite un travail manuel. Heureusement l'enregistrement de contrôle est le même sur tous les idocs, donc vous n'avez pas à considérer le type d'idoc votre envoi.
var fileStream = System.IO.File.OpenRead(fullFilepath);
var streamReader = new System.IO.StreamReader(fileStream);
string control = streamReader.ReadLine();
controlTable.Append();
controlTable.CurrentRow.SetValue("TABNAM", control.Substring(0, 10));
controlTable.CurrentRow.SetValue("MANDT", control.Substring(10, 3));
controlTable.CurrentRow.SetValue("DOCNUM", control.Substring(13, 16));
controlTable.CurrentRow.SetValue("DOCREL", control.Substring(29, 4));
controlTable.CurrentRow.SetValue("STATUS", control.Substring(33, 2));
controlTable.CurrentRow.SetValue("DIRECT", control.Substring(35, 1));
controlTable.CurrentRow.SetValue("OUTMOD", control.Substring(36, 1));
controlTable.CurrentRow.SetValue("EXPRSS", control.Substring(37, 1));
controlTable.CurrentRow.SetValue("TEST", control.Substring(38, 1));
controlTable.CurrentRow.SetValue("IDOCTYP", control.Substring(39, 30));
controlTable.CurrentRow.SetValue("CIMTYP", control.Substring(69, 30));
controlTable.CurrentRow.SetValue("MESTYP", control.Substring(99, 30));
controlTable.CurrentRow.SetValue("MESCOD", control.Substring(129, 3));
controlTable.CurrentRow.SetValue("MESFCT", control.Substring(132, 3));
controlTable.CurrentRow.SetValue("STD", control.Substring(135, 1));
controlTable.CurrentRow.SetValue("STDVRS", control.Substring(136, 6));
controlTable.CurrentRow.SetValue("STDMES", control.Substring(142, 6));
controlTable.CurrentRow.SetValue("SNDPOR", control.Substring(148, 10));
controlTable.CurrentRow.SetValue("SNDPRT", control.Substring(158, 2));
controlTable.CurrentRow.SetValue("SNDPFC", control.Substring(160, 2));
controlTable.CurrentRow.SetValue("SNDPRN", control.Substring(162, 10));
controlTable.CurrentRow.SetValue("SNDSAD", control.Substring(172, 21));
controlTable.CurrentRow.SetValue("SNDLAD", control.Substring(193, 70));
controlTable.CurrentRow.SetValue("RCVPOR", control.Substring(263, 10));
controlTable.CurrentRow.SetValue("RCVPRT", control.Substring(273, 2));
controlTable.CurrentRow.SetValue("RCVPFC", control.Substring(275, 2));
controlTable.CurrentRow.SetValue("RCVPRN", control.Substring(277, 10));
controlTable.CurrentRow.SetValue("RCVSAD", control.Substring(287, 21));
controlTable.CurrentRow.SetValue("RCVLAD", control.Substring(308, 70));
controlTable.CurrentRow.SetValue("REFMES", control.Substring(420, 14));
var dataLine = streamReader.ReadLine();
while (dataLine != null) {
dataTable.Append();
dataTable.CurrentRow.SetValue("SEGNAM", dataLine.SubString(0, 30));
dataTable.CurrentRow.SetValue("MANDT", dataLine.SubString(30, 3));
dataTable.CurrentRow.SetValue("DOCNUM", dataLine.SubString(33, 16));
dataTable.CurrentRow.SetValue("SEGNUM", dataLine.SubString(49, 6));
dataTable.CurrentRow.SetValue("PSGNUM", dataLine.SubString(55, 6));
dataTable.CurrentRow.SetValue("HLEVEL", dataLine.SubString(61, 2));
dataTable.CurrentRow.SetValue("SDATA", dataLine.SubString(63, dataLine.Length - 63));
dataLine = streamReader.ReadLine();
}
Cet extrait attend un seul IDoc dans le fichier. Si vous avez plusieurs idocs dans un fichier, vous devez les séparer en recherchant l'enregistrement de contrôle (la ligne d'enregistrement de contrôle commence généralement par "EDI_DC40").
double possible de [Comment créer et envoyer Idocs à SAP en utilisant .Net SAP Connector 3] (http://stackoverflow.com/questions/34896202/ comment-créer-et-envoyer-idocs-à-sap-using-sap-net-connecteur-3) –
Voir ci-dessus éditer. Merci encore! –
ce n'est pas plus difficile. Vous avez déjà toutes les données dans le fichier pour l'enregistrement de contrôle (première ligne de votre fichier) et les enregistrements de données. La longueur est fixe et vous n'avez qu'à remplir manuellement les premiers champs pour les enregistrements de données et les champs pour l'enregistrement de contrôle. Afaik il n'y a plus d'assistant idoc dédié dans la bibliothèque NCo. –