11 Şubat 2014 Salı

TVARVC TVARV Table - Tablodan Dinamik Varyant Değişkeni Tanımlama


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
DATAgv_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.


  CLEARgv_date1gv_date2gv_date3.

     gv_date1 p_day.
     SUBTRACT FROM gv_date1+4(2).
     gv_prev_month gv_date1+4(2).
 
    gv_date2 p_day.
    SUBTRACT 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.

  DATAgv_bfr_prev_mnth      LIKE tvarvc-name VALUE 'BFR_PREV_MNTH',
            gv_prev_mnth      LIKE tvarvc-name VALUE 'PREV_MONTH'.



  CONSTANTSgc_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(b1WITH lv_w_name '= ' lv_w_value1.
          ELSE.
            MESSAGE i999(b1WITH lv_w_name text-002.
            MESSAGE i999(b1WITH 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