Minuszeichen vor dem Wert im ALV anzeigen

Heute hat ein Gruppenmitglied in unserer Telegram Chatgruppe die Frage gestellt, wie man das Minuszeichen vor dem Wert anstatt hinter dem Wert im ALV anzeigen kann. Dabei soll aber die Möglichkeit der Summen- und Zwischensummenbildung erhalten bleiben.

Anforderung an den Test:

  • Einen Weg finden das Minuszeichen vor den Wert zu bringen
  • Sicherstellen, dass die Dezimaldarstellung des Benutzers erhalten bleibt

Fragestellung und Entscheidung zur Umsetzung:

  1. Kann es unter Berücksichtigung des Standards umgesetzt werden?
    • Nein, denn weder der Feldkatalog noch das Layout des ALV bieten eine Möglichkeit.
  2. Muss hier entwickelt werden?
    • Ja, wir benötigen eine Konvertierungsroutine. Das bedeutet, dass wir eine Funktionsgruppe und zwei Funktionsbausteine anlegen müssen.

Index der Umsetzungsschritte

  1. Gedanken über die Anforderung und die Probleme während der Implementierung machen.
  2. Konvertierungsroutine anlegen.
    1. Funktionsgruppe anlegen
    2. Funktionsbaustein Intern -> Anzeige anlegen
    3. Funktionsbaustein Anzeige -> Intern anlegen
    4. Aktivierung der neuen Funktionsgruppe und Funktionsbausteine
  3. Konvertierungsroutine implementieren
    1. Konvertierungsroutine in eine Domäne implementieren
    2. Konvertierungsroutine zur Laufzeit in ein ALV implementieren
  4. Demo Report
  5. Ergebnis

Umsetzungsschritte

Info: Ich habe alle Popup mit Warnungen und Paketzuweisungen nicht in Artikel aufgenommen. Alle Warnungen, die in diesem Beispiel auftreten habe ignoriert und die Objekte habe ich in das lokale Paket $TMP aufgenommen.

    1. Gedanken über die Anforderung und die Probleme während der Implementierung machen.

Wenn wir eine Konvertierungsroutine für eine Zahl implementieren möchten, müssen wir auch daran denken, dass die Dezimaldarstellung des Benutzers aus seinen Einstellungen (TAC:SU01/SU3) erhalten bleibt. Das bedeutet, dass wir eine flexible EDIT MASK in die Konvertierungsroutine für die Anzeige einbauen müssen.

    1. Konvertierungsroutine anlegen.

Eine Konvertierungs-Routine wird über einen fünfstelligen Namen identifiziert und ist als Gruppe von zwei Funktionsbausteinen abgelegt. Die Funktionsbausteine haben dabei eine festgelegte Namenskonvention. Der Konvertierungs-Routine xxxxx sind folgende Funktionsbausteine zugeordnet:

        • CONVERSION_EXIT_xxxxx_INPUT
        • CONVERSION_EXIT_xxxxx_OUTPUT
      1. Funktionsgruppe anlegen


Um die benötigte Funktionsgruppe anzulegen, habe ich die Transaktion SE37 benutzt. Dafür sollte das Funktionsbaustein Feld leer bleiben und wir navigieren zu Menü->Springen->FGruppenverwaltung->Gruppe anlegen.

Gewünschten Name und Kurztext für die Gruppe eingeben und Sichern.

Navigiere zum Topinclude der Funktionsgruppe und füge den folgenden Code ein:

      1. Funktionsbaustein Intern -> Anzeige anlegen


Im Einstiegsbild der SE37 einen Namen für den Funktionsbaustein eingeben „CONVERSION_EXIT_XXXXX_OUTPUT“ (XXXX durch den gewünschten Namen für die Routine ersetzen).

Den Funktionsbaustein der neuen Funktionsgruppe zuweisen, den Kurztext eingeben und Sichern.

Es ist erforderlich einen Importingparameter mit INPUT zubenennen.

Es ist erforderlich einen Exportingparameter mit OUTPUT zubenennen.

      1. Funktionsbaustein Anzeige -> Intern anlegen


Im Einstiegsbild der SE37 einen Namen für den Funktionsbaustein eingeben „CONVERSION_EXIT_XXXXX_OUTPUT“ (XXXX durch den bereits für OUTPUT benutzen Namen für die Routine ersetzen).

Den Funktionsbaustein der neuen Funktionsgruppe zuweisen, den Kurztext eingeben und Sichern.

Es ist erforderlich einen Importingparameter mit INPUT zubenennen.

Es ist erforderlich einen Exportingparameter mit OUTPUT zubenennen.

Für die korrekte Fehlerbehandlung, falls der Benutzer eine ungültige Zahl eingibt, ist es erforderlich einen Exceptionparameter mit ERROR_MESSAGE zubenennen.

      1. Aktivierung der neuen Funktionsgruppe und Funktionsbausteine


Jetzt müssen die Funktionsgruppe und die Funktionsbausteine noch aktiviert werden.

    1. Konvertierungsroutine implementieren
      1. Konvertierungsroutine in eine Domäne implementieren


Nun legen wir eine neue Domäne an oder kopieren eine vorhandene und weisen die neu angelegte Konvertierungsroutine der Domäne zu.

      1. Konvertierungsroutine zur Laufzeit in ein ALV implementieren

In dem Demo Report findest du, wie du die Konvertierungsroutine zur Laufzeit den Feldern des ALV zuweisen kannst.

    1. Demo Report

Hier ist ein kleiner Demo Report mit der Implementierung.

    1. Ergebnis


So sieht das Ergebnis der Entwicklung aus.

    • Die vierte Spalte „Frei verwendbar“ benutzt die neue Konvertierungsroutine nicht und zeigt das Minuszeichen somit hinter dem Wert an.
    • Die fünfte Spalte „Frei verwendbar“ benutzt die neue Konvertierungsroutine und zeigt das Minuszeichen, wie erwartet, somit vor dem Wert an.
    • Die sechste Spalte „Baugruppenstufe“ ist vom Typ Integer, benutzt die neue Konvertierungsroutine und zeigt das Minuszeichen, wie erwartet, somit vor dem Wert an.