Limpiar campo Anexos del Maestro de articulos


#1

Estimados buen dia.
Alguien sabe como puedo limpiar (de forma masiva) el campo anexos del maestro de articulos de SAP B1.Ya que tengo muchos articulos que debo limpiar dicho campo. (adjunto imagen)

Actualmente tengo la version 9.0 PL15

Cualquier sugerencia es bienvenida.
De antemano gracias.


#2

Por medio de la DI API A hice algo asi hace algun tiempo:

Dim vAtt As SAPbobsCOM.Attachments2

vAtt = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oAttachments2)
         
vAtt.GetByKey(AttCode)
vAtt.Lines.SetCurrentLine(AttLine)
vAtt.Lines.Override = SAPbobsCOM.BoYesNoEnum.tYES
vAtt.Lines.SourcePath = ""
vAtt.Lines.FileName = ""
vAtt.Lines.FileExtension = ""
retval = vAtt.Update

If retval <> 0 Then
    oCompany.GetLastError(lErrCode, sErrMsg)
    oApp.SetStatusBarMessage("Exception removing attachment" & sErrMsg)
End If

Saludos.


#3

Hola estimado.
Voy a probar lo que me indicas…y te comento que resultados obtuve…gracias por la sugerencia…saludos…


#4

Hola Estimado @GabrielGS Te comento que me sirvio bastante tu codigo. Te comento que borrar o quitar los anexos no me dejo. Sin embargo por medio de tu codigo encontramos el “work around” del problema que se necesita resolver.

Gracias por tu apoyo.
Saludos.


#5

Hola Saul.

¿Y cuál es dicho “work around”? Tal vez pudiera servirle a alguien más.

Saludos.


#6

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.


#7

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.