Hola. @Gera_Mendez, comparto lo que hice:
En primer lugar los pondre en contexto de que me solicitaron hacer:
Lo que me solicitaron fue:
Limpiar completamente los anexos de todo el maestro de articulos, pues la persona encargada de crear y actualizar los articulos dentro de SAP, muchas veces se encontraba con el problema que al momento de querer actualizar algun dato X del maestro de articulos, el sistema SAP, le mostraba un mensaje de error, indicando que el archivo Anexo No existia, esto por la razon de que algunos anexos se ingresaron anteriormente, y luego fueron borrados o movidos de ubicacion, pero hoy por hoy ya no se esta usando esa opcion de SAP.
En resumen lo que me solicitaron fue borrar el anexo para evitar ese error.
Volviendo al “work around”
Use el siguiente codigo (en VB6)
Tomando lo que amablemente compartio el compañero: @GabrielGS, lo adecue a algo que ya tenia, quedo como sigue:
Public Sub Actualizacion_attachments()
Dim RetVal As Long
Dim ErrCode As Long
Dim ErrMsg As String
Dim oDocEntry As String
Dim strsql As String
Dim RS As New ADODB.Recordset
Dim Conec As New ADODB.Connection
Dim vAtt As New sapbobscom.attachments2
Dim i As Integer
Set vAtt = sc.GetBusinessObject(oAttachments2)
Conec.ConnectionTimeout = 200
Conec.CommandTimeout = 0
Conec.Open "Provider=SQLOLEDB;SERVER=10.10.1.4;UID=sa;PWD=XXXX;DATABASE=PRUEBAS_XXX"
strsql = "select absentry from ATC1"
Set RS = Conec.Execute(strsql)
While Not RS.EOF
oDocEntry = RS(0) 'tomo insID
vAtt.GetByKey (oDocEntry)
i = 0
While i < vAtt.Lines.Count
vAtt.Lines.SetCurrentLine (i)
vAtt.Lines.Override = sapbobscom.BoYesNoEnum.tYES
vAtt.Lines.SourcePath = "\\XXXserver\ARCHIVOSPDF"
vAtt.Lines.FileName = "a.txt"
vAtt.Lines.FileExtension = ""
i = i + 1
Wend
RetVal = vAtt.Update
'verifico que no halla ningun error al hacer la operacion
If RetVal < 0 Then
ErrCode = sc.GetLastErrorCode
ErrMsg = sc.GetLastErrorDescription
If ErrCode < 0 Then
MsgBox RetVal & "<" & ErrCode & "> <" & ErrMsg & ">", vbCritical
End If
End If
RS.MoveNext
Wend
MsgBox "Proceso de actualizacion Anexos finalizado", vbInformation
End Sub
El codigo hace lo siguiente:
1.- Tomo todos los articulos de la tabla ATC1, que es donde SAP B1 guarda los anexos vinculados al maestro de articulos.
2.- Actualizo uno por uno, dichos anexos. Como el objeto de SAP llamado (attachments2) por ningun lado da la opcion de borrar, eliminar, limpiar o similar, decidi colocar el mismo anexo a todos los articulos que tuvieran anexo.
Esto se hace en esta parte del codigo:
vAtt.Lines.SourcePath = "\\XXXserver\ARCHIVOSPDF"
vAtt.Lines.FileName = "a.txt"
Como SAP no da esa opcion de borrar esto (al menos desde estos objetos-solo manualmente) decidi colocar archivo txt (que no contiene nada relevante), unicamente se busca que a la persona que crea y actualiza el maestro de articulos de SAP no le muestre el ERROR cuando modifique un articulo en SAP.
Esa fue la solucion.
La otra opción era borrar uno a uno, manualmente los anexos de SAP, pero son muchos articulos y me quitaría mucho tiempo, además de ser algo muy tedioso.
Un poco extendida la explicación, pero les comparto lo que hice al final, como bien dice el compañero @Gera_Mendez, por si a alguien mas le sirve.
Saludos.