Overblog
Folge diesem Blog Administration + Create my blog
SAPManDoo - SAP Resource

Der vorliegende Blog enthält von mir im Laufe meiner beruflichen Tätigkeit als SAP-Berater zusammengetragene Informationen / Beispiel-Codings zum Themenkreis SAP, speziell FI/CO.

Variablen in Selektionsvarianten

Veröffentlicht am 21. Februar 2013 von sapmandoo in Basis-Entwicklung allg.

Verwendung von Variablen in Selektionsvarianten:

 

Dynamische Datumsberechnung

 

Die dynamische Datumsberechnung ist für alle Selektionsparameter möglich, die vom Typ DATUM (Typ DATS) oder Zeit (TIMS) sind.

 

Selektionsvariable D

image002-Kopie-2.png

 

Name der Variablen --> passenden Eintrag auswählen

image004-Kopie-1.png

Beispiel: Tagesdatum – 2 Arbeitstage

 

image007-Kopie-1.png

 -->

image009-Kopie-2.png 

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.

  

Verwendung von Variablen aus Tabelle TVARV

 

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

 image011-Kopie-2.png

 

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.

 

image015.jpg

 

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

* …

 

Kommentare