Verwendung von Variablen in Selektionsvarianten:
Die dynamische Datumsberechnung ist für alle Selektionsparameter möglich, die vom Typ DATUM (Typ DATS) oder Zeit (TIMS) sind.
Selektionsvariable D
Name der Variablen --> passenden Eintrag auswählen
Beispiel: Tagesdatum – 2 Arbeitstage
-->
Die Definition eigener Variablen ist leider ohne Modifikation nicht möglich. Die Liste der zur Verfügung stehenden dynamischen Datumsvariablen wird im Funktionsbaustein RS_VARI_V_INIT aufgebaut. Hierbei werden Bezeichnung, Typ und Berechnungsfunktionsbaustein pro Variable im System bekannt gemacht. Ggf. könnte man über eine geeignete Erweiterungsimplementierung des o.g. Funktionsbausteins die Liste der Variablen erweitern. Dazu müsste dann noch ein eigener Berechnungsbaustein (z.B. als Kopie des FB RS_VARI_V_1_NEXT_MONTH) ausprogrammiert werden. Sofern zur Berechnung weitere Daten eingegeben werden müssen (z.B. Fabrikkalender), ist darüber hinaus der SAP-Funktionsbaustein RS_VARI_V_SAVE umfänglich anzupassen.
Vor diesem Hintergrund ist von der Verwendung kundeneigener dynamischer Datumsvariablen eher abzuraten.
Für andere Datentypen mit variablem Inhalt kann in der Tabelle TVARV eine Variable angelegt und in Varianten verwendet werden:
SM31 – TVARV – pflegen oder Transaktion STVARV
Auf diese Weise definierte Variablen können nun in Varianten verwendet werden. Der Datentyp des Selektionsparameters muss natürlich mit dem angegebenen Variableninhalt kompatibel sein.
Der Variableninhalt kann entweder manuell im Dialog über die Tabelle TVARV gepflegt oder programmtechnisch gesetzt werden.
Die o.g. Bsp. genannte Variable ZFIC_COPA_PREV_PERIOD wird automatisch auf den „richtigen“ Wert (d.h. im Feb 2012 auf 001.2012) durch ein entsprechendes kundeneigenes Programm gesetzt (Beispielcoding s.u.).
D.h. sofern dafür Sorge getragen wird, dass der Report immer am 1. des Monats VOR allen anderen Reports, die entsprechende Variablen verwenden, läuft, kann die Variable ohne Probleme verwendet werden und ist in Bezug zum aktuellen Datum korrekt gefüllt.
Beispielcoding:
REPORT Y_TVARVC_UPDATE.
TABLES: TVARVC .
DATA: DATUM LIKE SY-DATUM.
DATA: NDAYS TYPE i.
* To be on the safe side, En-/Dequeues
* should be performed on table TVARVC
*...
* Example for Parameter-Variable
TVARVC-TYPE = 'P'.
TVARVC-NUMB = 0. "no multiple entries for PARAMETERS
TVARVC-NAME = 'Y_DAYS_TO_XMAS_EVE'.
DATUM = SY_DATUM.
DATUM+4(4) = '1224'.
IF SY-DATUM > DATUM. "X-mas eve is over – cu next year
DATUM(4) = DATUM(4) + 1.
ENDIF.
NDAYS = DATUM – SY-DATUM.
TVARVC-LOW = NDAYS.
UPDATE TVARVC.
* Example for Select-Option-Variable
TVARVC-TYPE = 'S'.
TVARVC-NAME = 'Y_SO_AGES_FOR_MONOPOLY'.
TVARVC-NUMB = 1. "first entry
TVARVC-SIGN = 'I'. "(I)nclude, (E)xclude
TVARVC-OPTI = 'BT'. "BT = BETWEEN, …
TVARVC-LOW = 8. "Family-fun from age x…
TVARVC-HIGH = 99. "…to y
UPDATE TVARVC.
ADD 1 TO TVARVC-NUMB. "2nd entry, if necessary
* fill TVARVC-fields according to above example
* …