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