ABAP Dinamik parametre ile fonksiyon çağırma kodu kullanımı örneği (ABAP Call function with Dynamic parameter(s) code usage example)

*&———————————————————————*
*& Report  ZFIASB_DYNAMIC_PARAMETERS
*&
*&———————————————————————*
*& Bu program DATE_GET_WEEK fonksiyonu ile yapılabilecek işlemin
*& parametereler dinamik olarak gonderilerek nasıl yapılabileceğini
*& gostermek için yazılmıstır.
*&
*& Bu sekilde optional parametreleri olan bir fonskiyonu duruma
*& gore farklı parametreler ile run etmek için kullanabiliriz
*& a. Sadece export parametresini gonderip sy-subrc kontrol edebiliriz.
*& b. Export parametresi gonderip import parametresi
*&    ile sonucu alabiliriz.
*& Burada dikkat edilmesi gereken ptab_line olusturulurken
*& KIND parametresiyle parametrenin import/export/table/change oldugu dogru
*& tanımlanmalıdır
*( Bununla ilgili kullanılacak değerler ABAP type pool dan bulunabilir )
*& abap_func_exporting/abap_func_importing/abap_func_tables/abap_func_changing
*&
*&CALL FUNCTION ‘DATE_GET_WEEK’
*&  EXPORTING
*&    date               = sy-datum
*& IMPORTING
*&   WEEK               = aweek
*& EXCEPTIONS
*&   DATE_INVALID       = 1
*&   OTHERS             = 2
          .
*&IF sy-subrc <> 0.
*& MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*&        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*&ENDIF.
*&———————————————————————*

          REPORT  zfiasb_dynamic_parameters.

          TYPE-POOLS abap.

          DATA: func TYPE string,
                aweek TYPE scal-week,
                date TYPE sy-datum,
                ptab TYPE abap_func_parmbind_tab,
                ptab_line TYPE abap_func_parmbind,
                etab TYPE abap_func_excpbind_tab,
                etab_line TYPE abap_func_excpbind.

          func = ‘DATE_GET_WEEK’.
*&a+&b Export parameters
          date = sy-datum.
          ptab_line-name = ‘DATE’.
          ptab_line-kind = abap_func_exporting." !!!!!! onemli
          GET REFERENCE OF date INTO ptab_line-value.
          INSERT ptab_line INTO TABLE ptab.
*only &b Import parameters
          ptab_line-name = ‘WEEK’.
          ptab_line-kind = abap_func_importing." !!!!!! önemli
          GET REFERENCE OF aweek INTO ptab_line-value.
          INSERT ptab_line INTO TABLE ptab.
* exception table
          etab_line-name = ‘DATE_INVALID’.
          etab_line-value = 1.
          INSERT etab_line INTO TABLE etab.
          etab_line-name = ‘OTHERS’.
          etab_line-value = 2.
          INSERT etab_line INTO TABLE etab.

          CALL FUNCTION func
            PARAMETER-TABLE
              ptab
            EXCEPTION-TABLE
              etab.

IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

** Burada eğer gecersiz bir tarih girilirse
** aweek = 000000 sy-subrc = 1 donecektir
          WRITE :/ date,aweek,sy-subrc.

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on StumbleUpon0Share on Reddit0

Leave a Reply


*