Exits aktivieren

Mit diesem Programm können Sie Felder zu einzelnen Tabelleneinträgen ändern. Das Programm eignet sich gut, wenn eine Matrix übersichtlich dargestellt und bearbeitet werden soll.

Beschreibung

 Das folgende Programm wurde entwickelt, um Userexits zu verschiedenen Vertriebsbereichen einfach und übersichtlich aktivieren zu können.

Es sind jedoch auch noch andere Anwendungen denkbar, bei denen eine Matrix bearbeitet werden muss.

Der Status eines jeden Feldes wird farbig dargestellt. In diesem Beispiel kann ein Feld einen der drei folgenden Status haben:

  • Rot:   Inaktiv
  • Gelb: gesperrt
  • Grün: Aktiv

Der Wechsel des Status kann beliebig erweitert werden. Im einfachsten Fall kann ein Feld “Aktiv” oder “Inaktiv” sein. 


Aktivieren von Feldinhalten

Hinweis

Wie Sie die geänderten Einträge in einen Transportauftrag übernehmen können, erfahren Sie hier: Tabelleneinträge transportieren

GUI Status

Sie müssen zur vollen Funktionalität noch den PF-STATUS ‘LIST’ anlegen. Klicken Sie hierzu doppelt auf ‘LIST’. Mischen Sie die List-Funktionen ein (Vorlage abgleichen) und legen Sie auf die Tasten F5 den Funktionscode “LINKS” und auf und F6 den Funktionscode “RECHTS”. Zudem müssen Sie noch den Sichern-Knopf aktivieren, indem Sie den Funktionscode “SAVE” dort eintragen. 

Coding

REPORT ZZEXITLIST NO STANDARD PAGE HEADING LINE-SIZE 332.

TYPES:
*** Tabelle mit den zu aktivierenden Einträgen/ Feldern
      BEGIN OF ZVEXIT45,
        VKORG TYPE VKORG,          “Schlüsselfeld 1
        VTWEG TYPE VTWEG,          “Schlüsselfeld 2
        SPART TYPE SPART,          “Schlüsselfeld 3
        AUART TYPE AUART,          “Schlüsselfeld 4
*** –> Exits
        01, 02, 03, 04, 05, 06, 07, 08, 09, 10,
        11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
        21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
        31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
        41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
        51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
        61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
        71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
        81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
        91, 92, 93, 94, 95, 96, 97, 98, 99,
*** Tabelleneintrag geändert?
        UPDKZ TYPE C,
      END OF ZVEXIT45.


*** Variablen
DATA: GV_FELD(50)  TYPE C,
      GV_VALUE(50) TYPE C,
      GV_STACO     TYPE I,
      GV_INDEX     TYPE I,
      GV_TABIX     TYPE I,
      GV_EXIT(2)   TYPE N,
      GV_STATUS    TYPE C,
*** Tabelle
      STRUC        TYPE ZVEXIT45 OCCURS 0 WITH HEADER LINE.

*** Konstanten
*** Bitte an geänderte Tabellenstruktur anpassen!!

CONSTANTS:
      V                       TYPE C VALUE ‘|’,
      GK_FIRST_COL            TYPE I VALUE 25,
      GK_SCROLL_BOUNDARY      TYPE I VALUE 26,
      GK_COL_ACTIVE           TYPE I VALUE 5,
      GK_COL_INACTIVE         TYPE I VALUE 6,
      GK_COL_TEMP             TYPE I VALUE 3,
      GK_NUMBER_OF_EXITS      TYPE I VALUE 99,
      GK_NUMBER_OF_KEY_FIELDS TYPE I VALUE 5.

*** Feldsymbol
FIELD-SYMBOLS <EXIT>.

 

START-OF-SELECTION.

*** Dummy Einträge erzeugen
  APPEND ‘000101’ TO STRUC.
  APPEND ‘001101’ TO STRUC.
  APPEND ‘003310’ TO STRUC.
  APPEND ‘150050’ TO STRUC.
  APPEND ‘160099’ TO STRUC.
  APPEND ‘800011’ TO STRUC.

*** Ausgabe der Liste
  PERFORM LISTE.


TOP-OF-PAGE.
*** Top of Page: Überschrift ausgeben
  PERFORM TOP.

TOP-OF-PAGE DURING LINE-SELECTION.
*** Top of Page: Überschrift ausgeben
  PERFORM TOP.

AT LINE-SELECTION.
*** Klick auf ein Feld:
  GET CURSOR FIELD GV_FELD VALUE GV_VALUE.
  GV_STACO = SY-STACO.
  GV_EXIT = ( SY-CUCOL – GK_FIRST_COL + SY-STACO ) / 3.
  IF GV_TABIX > 0.
*** Einzelnen Exit aktivieren
    READ TABLE STRUC INDEX GV_TABIX.
    IF SY-SUBRC = 0.
      CONCATENATE ‘STRUC-‘ GV_EXIT INTO GV_FELD.
      ASSIGN (GV_FELD) TO <EXIT>.
      CASE  <EXIT>.
        WHEN SPACE.
*** Wechseln zu “Eintrag vorgemerkt”
          <EXIT> = ‘*’.
          MESSAGE S000(VZ) WITH ‘Exit’ GV_EXIT ‘Aktivierung vorgemerkt’.
        WHEN ‘*’.
*** Wechseln zu “Exit aktiv”
          <EXIT> = ‘X’.
          MESSAGE S000(VZ) WITH ‘Exit’ GV_EXIT ‘aktiviert’.
        WHEN ‘X’.
*** Wechseln zu “Exit deaktiv”
          <EXIT> = SPACE.
          MESSAGE S000(VZ) WITH ‘Exit’ GV_EXIT ‘deaktiviert’.
      ENDCASE.
      SPLIT GV_FELD AT ‘-‘ INTO GV_FELD GV_FELD.
*** Eintrag geändert
      STRUC-UPDKZ = ‘U’.
*** Eintrag ändern
      MODIFY STRUC INDEX GV_TABIX TRANSPORTING UPDKZ (GV_FELD).
      CLEAR GV_TABIX.
    ENDIF.
  ELSE.
*** Gesamte Spalte umsetzen
    GV_STATUS = ‘$’.
    LOOP AT STRUC.
      CONCATENATE ‘STRUC-‘ GV_EXIT INTO GV_FELD.
      ASSIGN (GV_FELD) TO <EXIT>.
      IF GV_STATUS = ‘$’.
        CASE  <EXIT>.
          WHEN SPACE.
            GV_STATUS = ‘*’.
          WHEN ‘*’.
            GV_STATUS = ‘X’.
          WHEN ‘X’.
            GV_STATUS = SPACE.
        ENDCASE.
      ENDIF.
      <EXIT> = GV_STATUS.
      SPLIT GV_FELD AT ‘-‘ INTO GV_FELD GV_FELD.
      STRUC-UPDKZ = ‘U’.
      MODIFY STRUC TRANSPORTING UPDKZ (GV_FELD).
    ENDLOOP.
  ENDIF.
*** Listausgabe
  PERFORM LISTE.

AT USER-COMMAND.
*** Benutzerkommando
  CASE SY-UCOMM.
    WHEN ‘RECHTS’.
*** 10 Spalten nach rechts scrollen
      SCROLL LIST RIGHT BY 60 PLACES.

    WHEN ‘LINKS’.
*** 10 Spalten nach links scrollen
      SCROLL LIST LEFT  BY 60 PLACES.

    WHEN ‘SAVE’.
*** Eintrag sichern
      PERFORM SICHERN.
  ENDCASE.

*———————————————————————*
*       FORM LISTE                                                    *
*———————————————————————*

FORM LISTE.

*** Eigener List-Status
  SET PF-STATUS ‘LIST’.

*** Ausgabe der Tabelle
  LOOP AT STRUC.
    GV_TABIX = SY-TABIX.
*** Keyfelder
    WRITE: / V, STRUC-VKORG,
             V, STRUC-VTWEG,
             V, STRUC-SPART,
             V, STRUC-AUART, V NO-GAP.

*** Index: Anzahl Keyfelder
    GV_INDEX = GK_NUMBER_OF_KEY_FIELDS.
    DO GK_NUMBER_OF_EXITS TIMES.
*** Exit zuweisen
      ASSIGN COMPONENT GV_INDEX OF STRUCTURE STRUC TO <EXIT>.
*** Exit ausgeben
      PERFORM WRITE_EXIT USING <EXIT>.
      ADD 1 TO GV_INDEX.
    ENDDO.
    HIDE: GV_TABIX, STRUC.
  ENDLOOP.
  CLEAR: STRUC, GV_TABIX.
  ULINE.

*** Zur Spalte scrollen, die vor LINE-SELECTION aktiv war
  SCROLL LIST TO COLUMN GV_STACO INDEX 1.

ENDFORM.

*———————————————————————*
*       FORM WRITE_EXIT                                               *
*———————————————————————*

FORM WRITE_EXIT USING FLAG   TYPE C.

  DATA LV_COLOR     TYPE I.

  CASE FLAG.
    WHEN ‘X’.
*** Feld ist aktiv
      LV_COLOR = GK_COL_ACTIVE.
    WHEN ‘*’.
*** Feld ist vorgemerkt
      LV_COLOR = GK_COL_TEMP.
    WHEN ‘ ‘.
*** Feld ist deaktiviert
      LV_COLOR = GK_COL_INACTIVE.
  ENDCASE.

*** Ausgabe
  WRITE: ‘  ‘ COLOR = LV_COLOR HOTSPOT ON NO-GAP, V NO-GAP.

ENDFORM.

*———————————————————————*
*       FORM TOP                                                      *
*———————————————————————*
FORM TOP.

*** Seitenindex wieder zurücksetzen, damit keine Verzweigungsliste
*** erzeugt wird
  SY-LSIND = 0.
*** Keyfelder nicht scrollen
  SET LEFT SCROLL-BOUNDARY COLUMN GK_SCROLL_BOUNDARY.

*** Überschrift
  ULINE.
  FORMAT COLOR COL_HEADING.
  WRITE: /01 V, ‘VKO’,
       AT 08 V, ‘VTW’,
       AT 13 V, ‘Sp’,
       AT 18 V, ‘AArt’,
       AT 25 V NO-GAP.

  DO GK_NUMBER_OF_EXITS TIMES.
    GV_INDEX = SY-INDEX.
*** Ausgabe der Feldnummer
    WRITE: (2) GV_INDEX NO-GAP HOTSPOT ON, V NO-GAP.
*** GGfs. zusätzliche Info zum Exit ermitteln und mittels QUICKINFO
*** zur Verfügung stellen

    HIDE: GV_INDEX.
  ENDDO.

  FORMAT COLOR OFF.
  ULINE.

ENDFORM.

*———————————————————————*
*       FORM SICHERN                                                  *
*———————————————————————*
FORM SICHERN.

  LOOP AT STRUC WHERE UPDKZ <> SPACE.
    WRITE / STRUC.
  ENDLOOP.

ENDFORM.

Enno Wulff

Leave a Comment