Ansicht
Dokumentation

DYN_FIELD_MAINTAIN_GROUPING - Dynamische Felder: Gruppierungen bilden

DYN_FIELD_MAINTAIN_GROUPING - Dynamische Felder: Gruppierungen bilden

CL_GUI_FRONTEND_SERVICES - Frontend Services   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionsbaustein DYN_FIELD_MAINTAIN_GROUPING

Dieser Funktionsbaustein dient dazu, für ein nahezu beliebigen Feld Gruppierungen zu pflegen.

Schnittstelle

C_CRITERION ist das Kriterium, für das dieses Popup gebildet werden soll. Es besteht aus dem komplexen Datentyp VT04_CRITERION, welcher neben Tabellename und Feldname (z.B. VTRLK-ROUTE) eiige andere Zusatzinformationen enthält. Die wichtigste sind hier die Gruppierungen zu diesem Feld (C_CRITERION-GROUPINGS), die auf diesem Popup gepflegt werden können.

C_CRITERION-GROUPINGS ist eine Tabelle der Gruppen, die man auf dem Popup gebildet hat. Jede Gruppe ist ein sogenannter RANGE (repräsentiert auf dem Popup als SELECT-OPTION), ist also selbst wieder eine Tabelle. C_CRITERION-GROUPINGS ist daher eine Tabelle mit Tabellen.

I_IS_SORT_CRITERION gibt an, ob es sich um ein Sortier- oder ein Trennkriterium handelt. Abhängig davon werden einige Felder ausgeblendet (Bei einem Sortierkriterium macht die Option 'Alle anderen Werte auslassen' keinen Sinn).

I_DISPLAY gibt an, ob die Gruppierungen nur angezeigt werden sollen oder ob sie auch pflegbar sind.

Die Ausnahme MAINTAINANCE_ABORTED wird ausgelöst, wenn der User auf dem Popup 'Abbrechen' gedrückt hat.

Realisierung

Technisch ist dieses Popup mit SELECT-OPTIONS realisiert; es wird mit CALL SELECTION-SCREEN gerufen. Auf dem Popup sind immer 10 SELECT-OPTIONS zu sehen. Es können aber mehr gepflegt werden indem man blättert. Die eigentlichen Daten der Gruppierungen werden daher in der globalen Variablen G_CRITERION gehalten. Die SELECT-OPTIONS stellen immer nur den aktuellen Auschnitt dar, der durch die Blätter-Tasten verschoben wird.

Daher wird direkt vor dem Aufruf des Selektionsbildes (CALL SELECTION SCREEN) der anzuzeigende Abschnitt aus G_CRITERION herausgezogen und in die SELECT-OPTIONS gestellt (siehe Form move_criterion_to_screen).

Zu PAI (AT SELECTION-SCREEN) werden die in den SELECT-OPTIONS gepflegten Daten wieder in G_CRITERION zurückgeschrieben. (siehe Form move_screen_to_criterion). Danach werden User-Commands verarbeitet, z.B. 'Eine Zeile nach unten blättern' (siehe Form user_command). Mit diesen veränderten Vorgaben (z.B. um 1 erhöhter Offset) werden dann die SELECT-OPTIONS wieder befüllt.

Anpassung an beliebige Felder

Die SELECT-OPTIONS passen sich immer an den aktuellen Feldtyp an, der in C_CRITERION angegeben wurde. Das heißt:

  • Die Feldlänge wird angepaßt (z.B. bei der Versandstelle nur Länge 4)
  • Es kommt die richtige F1-Hilfe zum Feld hoch
  • Es kommt die richtige F4-Hilfe zum Feld hoch
  • Das 'technische' Verhalten wird korrekt nachgeahmt (Wenn das Feld zum Beispiel ein Datum ist, dann wird die Eingabe 220798 sofort richtig konvertiert in 22.07.1998). Außerdem muß die interne Repräsentation 19980722 auch erzeugt werden, denn damit arbeitet der ABAP.

Diese Punkte werden auf unterschiedliche Weise realisiert.

  • Zu PBO (oder besser: AT SELECTION-SCREEN OUTPUT) wird im LOOP AT SCREEN die Feldlänge der SELECT-OPTIONS modifiziert (siehe Form modify_screen).
  • Die Anpassung des 'technischen' Verhaltens ist am schwierigsten.
    Siehe dazu das nächste Kapitel.

Konvertierung Intern-Extern und umgekehrt

Leider gibt es keinen Funktionsbaustein im System, der unter Vorgabe von Tabelle-Feldname einen String von der externen in die interne Repräsentation konvertiert (es gibt sie für einzelne Fälle, aber keinen, der generisch genug arbeitet). Ebenso fehlt ein entprechender Funktionsbaustein für die umgekehrte Richtung.

Die Konvertierungslogik ist im ABAP teilweise in den Dynpros verankert, teilweise in sogenannten Konvertierungsexits, etc. Es gibt derzeit keine einheitliche Möglichkeit zur Konvertierung.

Das Gruppierungspopup nutzt daher einen Umweg: Tatsächlich enthält das Popup nicht nur einen Satz von 10 SELECT-OPTIONS, sondern 5:

  • für Character-Felder (z.B. Versandstelle, Route, etc.)
  • für Datums-Felder (z.B. Lieferdatum, Transport-Dispo-Datum)
  • für Uhrzeit-Felder (z.B. Lieferuhrzeit)
  • für Quantity-Felder (z.B. Bruttogewicht)
  • für numerische Felder (z.B. Lieferpriorität)

Dadurch sind (hoffentlich) alle in der Struktur VTRLK vorkommenden technischen Feldtypen abgedeckt.

Speziell für die Character-Felder kann noch eine Feldlängen-Anpassung zu PBO vorgenommen werden.

Je nachdem, welches Feld zur Zeit gerade Aktiv ist, werden zu PBO des Selektionsbildes die anderen SELECT-OPTIONS auf inaktiv geschaltet.

Zusätzliche Felder

Zu bestimmten Feldern (z.B. Gewicht oder Volumen) müssen auf dem Popup noch Zusatzdaten eingegeben werden (Gewichtseinheit, Volumeneinheit). Bei anderen Feldern gibt es Optionen, die nur bei diesem Feldtyp sinn machen (z.B.: Ist das Datum absolut gemeint oder relativ zum heutigen Tag ?)

Die Zusatzfelder werden zu PBO ebenfalls aus- oder eingeblendet

Das Selektionsbild

Da das Selektionsbild aus sehr vielen SELECT-OPTIONS besteht (5 x 10 = 50 Stück), ist das Selektionsbild durch Macros definiert. Näheres bitte dem Coding im INCLUDE LV56MF01 entnehmen.





Parameter

C_CRITERION
I_DISPLAY
I_IS_SORT_CRITERION

Ausnahmen

MAINTAINANCE_ABORTED

Funktionsgruppe

V56M

RFUMSV00 - Advance Return for Tax on Sales/Purchases   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7004 Date: 20240523 Time: 135221     sap01-206 ( 108 ms )