Einzelnen Beitrag anzeigen

NoName1

Registriert seit: 8. Mär 2018
194 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wie werden Überweisungen / Lastschriften mit der DDBAC realisiert

  Alt 28. Apr 2021, 07:54
Guten Tag TurboMagic,
es ist eine Überweisung von DE zu DE
Delphi-Version 10.2

ich benutze um zu testen den Originalcode aus dem SDK:

Delphi-Quellcode:
procedure TFormMain.btnExecuteRemitClick(Sender: TObject);
var
  aHKUEB: BACSegment;

  aMsg: BACMessage;
  sVerwendungszweck: array of string;
  i, j: Integer;
begin
  try
    Screen.Cursor := crHourGlass;
    btnExecuteRemit.Enabled := false;
    {Erzeuge eine HKUEB transaction}
    aHKUEB := CreateTransactionSegment('HKUEB');
    SetAuftraggeberKontoverbindung(aHKUEB);

    {Hier wird die Kontoverbindung des Empfängers eingestellt. Für das
    Empfängerkonto können wir kein Unterkontomerkmal wissen, und geben deshalb
     auch keines an.}

    aHKUEB.Item['EmpfaengerKontoverbindung1', 'Kontonummer1'] := txtAccountNr.Text; // KontoNummer
    aHKUEB.Item['EmpfaengerKontoverbindung1', 'Laenderkennzeichen1'] := 280;
    aHKUEB.Item['EmpfaengerKontoverbindung1', 'Kreditinstitutcode1'] := txtRemitBankCode.Text; // BLZ

    aHKUEB.Item['EmpfaengerNameEins1', 1] := txtPayee.Text;
    aHKUEB.Item['Zahlungsbetrag1', 'Wert1'] := txtAmount.Text;
    aHKUEB.Item['Zahlungsbetrag1', 'Waehrung1'] := 'EUR';
    aHKUEB.Item['Textschluessel1', 1] := 51;
    aHKUEB.Item['Textschluesselergaenzung1', 1] := '';

    aHKUEB.Item['Verwendungszweck1', 'Zeile1'] := RichEditPurpose.Lines[0];
    aHKUEB.Item['Verwendungszweck1', 'Zeile2'] := RichEditPurpose.Lines[1];

    aMsg := BACMessage(aDialog.ExecuteSegment(aHKUEB));

    ReportResult(aMsg, '', aHKUEB);
  finally
    Screen.Cursor := crDefault;
    btnExecuteRemit.Enabled := true;
  end;
end;

Delphi-Quellcode:
{ *****************************************************************************
  Function:  SetAuftraggeberKontoverbindung()

  Comments:  Setzt die Kontoverbindungsdaten des Auftraggebers in ein
              Auftragssegment. Die korrekten Kontodaten werden dabei aus dem
              HIUPD Segment des Kontos gelesen.

***************************************************************************** }

procedure TFormMain.SetAuftraggeberKontoverbindung(aSegment: BACSegment);
begin
  { Alle Kontodetails aus den UPD werden kopiert. Obwohl das GD
    "Unterkontomerkmal" erst mit HBCI 2.2 eingeführt wurde, wird es hier
    dennoch immer kopiert. Liegt dieses GD nicht vor, so wird einfach ein
    leerer Wert kopiert, der später beim Segmentaufbau in der DDBAC
    ignoriert wird.}


  aSegment.Item['AuftraggeberKontoverbindung1', 'Kontonummer1'] := aAccount.AccountNumber;
  aSegment.Item['AuftraggeberKontoverbindung1', 'Unterkontomerkmal1'] := aAccount.SubAccountNumber;
  aSegment.Item['AuftraggeberKontoverbindung1', 'Laenderkennzeichen1'] := aAccount.CountryCode;
  aSegment.Item['AuftraggeberKontoverbindung1', 'Kreditinstitutcode1'] := aAccount.BankCode;
  aSegment.Item['AuftraggeberKontoverbindung1', 'IBAN1'] := aAccount.IBAN;
  aSegment.Item['AuftraggeberKontoverbindung1', 'BIC1'] := aAccount.BIC;
end;
Die Fehlermeldung ist im Anhang.
Miniaturansicht angehängter Grafiken
fehler-1.png  
  Mit Zitat antworten Zitat