Per enésima vegada ens trobem que una obligació legal no es atesa per SAP a SAP Business One: malgrat estar actualitzats a la última versió (SAP Business One Version For HANA FP 2602) arriba el moment de presentar el model 347 a hisenda i ens trobem amb que els fitxers generats per la aplicació generen aquest error:

L’error “E010330 Caracteres no válidos ‘Número de convocatoria BDNS’ correspon a una modificació al format del fitxer 347 que va documentar hisenda al BOE del 12 de desembre de 2025:

Per sol·lucionar-ho, he creat una petita funció de Powershell que modifica els fitxers i els hi posa els valors correctes:
PowerShell
function Corregir-Model347EnFitxer {
param(
[Parameter(Mandatory = $true)]
[string]$RutaFitxer
)
# Resoldre ruta absoluta
try {
$RutaFitxer = (Resolve-Path $RutaFitxer -ErrorAction Stop).Path
}
catch {
throw "No s'ha trobat el fitxer: $RutaFitxer"
}
$inici = 299
$longitud = 6
$rutaTemporal = "$RutaFitxer.tmp"
$reader = [System.IO.StreamReader]::new($RutaFitxer, [System.Text.Encoding]::ASCII)
$writer = [System.IO.StreamWriter]::new($rutaTemporal, $false, [System.Text.Encoding]::ASCII)
try {
while (($linia = $reader.ReadLine()) -ne $null) {
if ($linia.Length -ge ($inici + $longitud) -and $linia.StartsWith("2")) {
$chars = $linia.ToCharArray()
for ($i = $inici; $i -lt ($inici + $longitud); $i++) {
if ($chars[$i] -eq ' ') {
$chars[$i] = '0'
}
}
$linia = -join $chars
}
$writer.WriteLine($linia)
}
}
finally {
$reader.Close()
$writer.Close()
}
Move-Item -Path $rutaTemporal -Destination $RutaFitxer -Force
}