ABAP

ABAP

Wednesday, April 13, 2011

Dinamik tablo yaratma

*Bu örneğimizde dinamik bir tablo yaratcaz. Bir tane internal tabloda kaç tane kayıt varsa o kadar column yaratcaz?
PERFORM f_create_itab.


FORM f_create_itab .
  DATA : lt_data    TYPE REF TO data,
         ls_new_line  TYPE REF TO data.

*Şimdi burada ilk önce fieldcatimizi oluşturuyoruz.
  PERFORM f_prepare_fcat.
*Aşağıda bu performun içini yazdım orada bir fieldcat oluşturuldu gt_fcat diye. Bu gt_fcat başka dinamik tablo gerektiren örneklerde neye göre çoğalcağına göre istenilen şekilde oluşturulabilir.

  ASSIGN lt_data TO <fs_data>.

*Sonra bu gt_fcat'i bu method'a göndererek, gt_fcat içindeki alan isimlerine göre  tablo oluşturuyoruz.
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = gt_fcat[]
    IMPORTING
      ep_table        = <fs_data>.

  ASSIGN <fs_data>->* TO <gt_display>.

  CREATE DATA ls_new_line LIKE LINE OF <gt_display>.
  ASSIGN ls_new_line->* TO <gs_display>.
*ve tablomuz <gt_display> olarak oluşturuldu. Aynı türde bir structure'da <gs_display> olarak oluşturuldu. Artık bu işlemden sonra field symbol kurallarına göre tabloyla ilgili istediğimiz işlemi yapabiliriz.


**********************************
*Burada fieldcatimizi hazırlarken ilk önce iki tane sabit alanımızı yazıyoruz QNAME ve WERKS olmak üzere.
FORM f_prepare_fcat .
  CLEAR : gt_fcat, gt_fcat[].
  PERFORM f_add_fcat USING 'QNAME' '<gt_display>' 'QNAME' 'LTAP' ''.
  PERFORM f_add_fcat USING 'WERKS' '<gt_display>' 'WERKS' 'LTAP' ''.
*Sonra burada gt_yutwm0003 internal tablosunda kaç tane kayıt varsa o kadar COLUMN1 COLUMN2 COLUMN3 vs. diye field lerimizi oluşturuyoruz.

  LOOP AT gt_yutwm0003.
    gv_tabix = sy-tabix.
    CONCATENATE 'COLUMN' gv_tabix INTO gv_fname.
    PERFORM f_add_fcat USING gv_fname '<gt_display>' 'REMOVAL_COUNTER' 'KPI_EQUI_STRUC' gt_yutwm0003-yucolumn.
  ENDLOOP.
ENDFORM.
*********************************************
*Yukarıda gönderdiğimiz alanları bu alanlara karşılık gelecek şekilde assign ediyoruz.
FORM f_add_fcat  USING p1 p2 p3 p4 p5.
  CLEAR gt_fcat.
  gt_fcat-fieldname = p1.
  gt_fcat-tabname   = p2.
  gt_fcat-ref_field = p3.
  gt_fcat-ref_table = p4.
  gt_fcat-scrtext_l = p5.
  gt_fcat-scrtext_m = p5.
  gt_fcat-scrtext_s = p5.
  gt_fcat-coltext   = p5.
  APPEND gt_fcat.ENDFORM.            


No comments:

Post a Comment

Total Pageviews