tive um problema com o registro Header do CNAB400, foi solucionado da forma que esta abaixo
procedure TACBrBancoSafra.GerarRegistroHeader400(NumeroRemessa: integer;
ARemessa: TStringList);
var aAgencia, aConta, wLinha: String;
begin
aTotal := 0;
aCount := 0;
FNumeroRemessa := NumeroRemessa;
with ACBrBanco.ACBrBoleto.Cedente do
begin
aAgencia := PadLeft(ACBrBoleto.Cedente.Agencia, 4, '0') +
PadLeft(ACBrBoleto.Cedente.AgenciaDigito, 1, '0');
aConta := PadLeft(ACBrBoleto.Cedente.Conta, 8, '0') +
PadLeft(ACBrBoleto.Cedente.ContaDigito, 1, '0');
wLinha := '0' + // ID do Registro Header
'1' + // ID do Arquivo de Remessa
'REMESSA' + // Literal de Remessa
'01' + // Código do Tipo de Serviço
PadRight('COBRANCA', 15) + // Descrição do tipo de serviço + "brancos"
aAgencia+aConta + // Codigo da Empresa no Banco // PadRight(CodigoCedente, 14, '0')
Space(6) + // "brancos"
PadRight(Nome, 30) + // Nome da Empresa
IntToStr(Numero) + // Código do Banco - 237
PadRight('BANCO SAFRA', 15) + // Nome do Banco - BANCO SAFRA + "brancos"
FormatDateTime('ddmmyy', Now) + // Data de geração do arquivo
Space(291) + // "brancos"
IntToStrZero(NumeroRemessa, 3) + // Nr. Sequencial de Geração do Arquivo
IntToStrZero(1, 6); // Nr. Sequencial do Registro no Arquivo
ARemessa.Text := ARemessa.Text + UpperCase(wLinha);
end;
end;
essa informação do código da empresa no banco estava vindo alimentada pelo código do cedente, dai o banco questionou alinhamentos posições e zeros, dai copiei a mesma rotina do registro de transação, onde ele separa ambos e faz o tratamento