TVARVC tablosu yardımıyla yapılır. Eğer bu tabloya göz atılırsa eski varyant değişkenleri gelecektir. Bunun için "STVARVC" t-code kullanalım.
Yukarda görüldüğü gibi iki sekme var, parametreler için ve selection options lar için. Eğer varyanta setlenecek değişken parametre ise parametre sekmesinde, selection option ise selection sekmesine ekleme yapmak gerekir. Aksi halde o değişken için yeni tanımladığınız varyant değerini göremezsiniz.
Bundna sonra CNTRL+F1 (Display-Change) butonunu kullanarak yazmaya açık hale getirip, yeni kayıt ekleme işlemi yapılabilir.
"Name" kısmına "TEST", "Val." kısmına "2013" yazalım. Kaydet ile çıkalım.
Sonra bir programa varyant kaydederken bu değişkeni giriş olarak verelim.
Program ekranında SAVE-Kaydet butonuna basalım,
karşımıza aşağıdaki gibi gelen ekranda, "Selection Variable" kısmında "T", Table variable from TVARVC yazan seçeneği seçelim.
"Name of Variable" kısmında ise biraz önce tanımladığımız "TEST" parametre değişkenini seçelim. Eğer kontrol etmek istersen, "TEST" seçiliyken "Value" butonuna basarsak, değişkenin içindeki değeri aşağıdaki gibi okuyabiliriz.
"Continue" diyerek geçelim.
Değişken artık, yukardaki gibi görünecektir. SAVE diyerek kaydedelim.
Artık varyantımızın "Date" parametresi bizim TVARVC de tanımladığımız kendi değişkenimizin değeri ile çağrılacaktır her seferinde.
NOTE: Bu halde yapınca biraz mantıksız gelebilir bu özellik. Ancak bir program yazıp, TVARVC deki bizim yarattığımız değişken içeriğini her gün veya har ay background job la değiştirirsek, kendi dinamik değişkenimizi yaratmış oluruz.
Tabi eğer zaten tanımlı olan "D: Dynamic Data Calculation " kısmındaki değerler bizim işimize yaramıyorsa bunu kullanmamız daha akılcıl olur :)
VEYA
TVARVC tablosuna değişkenlerimizi bir program aracılığı ile yazarız, ve değerlerimizin değiştiği hergün bu programı background job ile çalıştırırız, böylece tablodaki değerler de değişmiş olur.
TABLES : tvarvc. " Table of variables in selection criteria
DATA: gv_date1 LIKE sy-datum,gv_date2 LIKE sy-datum,
gv_date3 LIKE sy-datum,
gv_prev_month LIKE sy-datum,
gv_bfr_prev_mnth_h LIKE sy-datum,
gv_bfr_prev_mnth_l LIKE sy-datum.
*---SELECTION-SCREEN
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_day LIKE sy-datum DEFAULT sy-datum.
SELECTION-SCREEN END OF BLOCK b1.
*---START-OF-SELECTION
START-OF-SELECTION.
CLEAR: gv_date1, gv_date2, gv_date3.
gv_date1 = p_day.
SUBTRACT 1 FROM gv_date1+4(2).
gv_prev_month = gv_date1+4(2).
gv_date2 = p_day.
SUBTRACT 1 FROM gv_date2+4(2).
gv_date3 = gv_date2.
gv_date3+4(4) = '0101'.
gv_bfr_prev_mnth_h = gv_date2.
gv_bfr_prev_mnth_l = gv_date3.
DATA: gv_bfr_prev_mnth LIKE tvarvc-name VALUE 'BFR_PREV_MNTH',
gv_prev_mnth LIKE tvarvc-name VALUE 'PREV_MONTH'.
CONSTANTS: gc_0000 LIKE tvarv-numb VALUE '0000'.
PERFORM f_update_tvarvc USING gv_prev_mnth
'S'
gc_0000
gv_prev_month
''
'EQ'.
PERFORM f_update_tvarvc USING gv_bfr_prev_mnth
'S'
gc_0000
gv_bfr_prev_mnth_l
gv_bfr_prev_mnth_h
'BT'.
*---------------------------------------------------------------------*
*FORM UPDATE_tvarvc *
*---------------------------------------------------------------------*
FORM f_update_tvarvc USING lv_w_name LIKE tvarvc-name
lv_w_type LIKE tvarvc-type
lv_w_numb LIKE tvarvc-numb
lv_w_value1 TYPE any
lv_w_value2 TYPE any
lv_w_option LIKE tvarvc-opti.
SELECT SINGLE * FROM tvarvc WHERE name = lv_w_name
AND type = lv_w_type
AND numb = lv_w_numb.
IF sy-subrc NE 0.
PERFORM f_create_entryc USING lv_w_name lv_w_type lv_w_numb lv_w_value1
lv_w_value2 lv_w_option.
ELSE.
CALL FUNCTION 'ENQUEUE_ESVARV'
EXPORTING
name = lv_w_name
type = lv_w_type
EXCEPTIONS
foreign_lock = 4
system_failure = 8.
CASE sy-subrc.
WHEN 0.
IF lv_w_type = 'P'.
IF tvarvc-low = lv_w_value1.
MESSAGE i999(b1) WITH lv_w_name '= ' lv_w_value1.
ELSE.
MESSAGE i999(b1) WITH lv_w_name text-002.
MESSAGE i999(b1) WITH text-003 tvarvc-low text-004 lv_w_value1.
ENDIF.
tvarvc-sign = 'I'.
tvarvc-opti = 'EQ'.
tvarvc-low = lv_w_value1.
tvarvc-high = space.
ELSEIF lv_w_type = 'S'.
tvarvc-sign = 'I'.
tvarvc-opti = lv_w_option.
tvarvc-low = lv_w_value1.
IF lv_w_option = 'EQ'.
tvarvc-high = space.
ELSEIF lv_w_option = 'BT'.
tvarvc-high = lv_w_value2.
ENDIF.
ENDIF.
MODIFY tvarvc.
COMMIT WORK.
CALL FUNCTION 'DEQUEUE_ESVARV'
EXPORTING
name = lv_w_name
type = lv_w_type.
ENDCASE.
ENDIF.
ENDFORM. " UPDATE_tvarvc
*&---------------------------------------------------------------------*
*& Form CREATE_ENTRYC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->Lv_W_NAME text
* -->Lv_W_TYPE text
* -->Lv_W_NUMB text
* -->Lv_W_VALUE1 text
* -->Lv_W_VALUE2 text
* -->Lv_W_OPTION text
*----------------------------------------------------------------------*
FORM f_create_entryc USING lv_w_name LIKE tvarvc-name
lv_w_type LIKE tvarvc-type
lv_w_numb LIKE tvarvc-numb
lv_w_value1 TYPE any
lv_w_value2 TYPE any
lv_w_option LIKE tvarvc-opti.
tvarvc-name = lv_w_name.
tvarvc-type = lv_w_type.
tvarvc-numb = lv_w_numb.
tvarvc-low = lv_w_value1.
tvarvc-high = lv_w_value2.
tvarvc-opti = lv_w_option.
tvarvc-sign = 'I'.
INSERT INTO tvarvc VALUES tvarvc.
* IF sy-subrc NE 0.
IF sy-subrc = 0.
COMMIT WORK.
ELSE.
WRITE:/ 'Line could not be inserted.'(e03).
ENDIF.
ENDFORM. " CREATE_ENTRYC
Hiç yorum yok:
Yorum Gönder