Olá Elder,
Uma outra opção seria você utilizar a DI API para fazer essa movimentação dos anexos. Abaixo um código exemplo, antes de executa-lo faça um backup da base, ou execute ele em base teste.
try { //Cada BP tem um campo chamado AtcEntry(AttachmentEntry API) que liga com a OATC //e por fim com a ATC1 //logica, carrega os BPs BusinessPartners oBp = oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners); Recordset oRs = oCompany.GetBusinessObject(BoObjectTypes.BoRecordset); oRs.DoQuery("SELECT CardCode FROM OCRD WHERE AtcEntry IS NOT NULL"); oBp.Browser.Recordset = oRs; while (!oBp.Browser.EoF) { SAPbobsCOM.Attachments2 oAtt = oCompany.GetBusinessObject(BoObjectTypes.oAttachments2); if (oAtt.GetByKey(oBp.AttachmentEntry)) { for (int i = 0; i < oAtt.Lines.Count; i++) { oAtt.Lines.SetCurrentLine(i); //Indique o seu diretório antigo como origem dos arquivos. //Não é necessário mudar as outras propriedades, já que ele vai buscar o arquivo // e extensão corrente do loop oAtt.Lines.SourcePath = @"C:\Users\diego.lother\Desktop\teste"; } if (oAtt.Update() != 0) MessageBox.Show(oCompany.GetLastErrorDescription()); } oBp.Browser.MoveNext(); } } catch (Exception ex) { MessageBox.Show(ex.Message); }
Do contrário, acredito que seria necessário a abertura de um ticket na SAP, conforme sugestão do Augusto.
Atenciosamente,
Diego Lother