Merhabalar,
Yeni oluşturulacak bir ekran için Dropdown List sütunu olan bir ALV oluşturdum. Ancak bu listelerin değerlerinin sabit değil dinamik olarak doldurulması gerekiyordu. Birkaç saatlik araştırma sonunda kayda değer bir sonuca rastlamadım ve hatta bazıları mümkün değil yazmıştı. Kendim yaptım ve paylaşmak istedim :)
SAP'nin demo tabloları SFLIGHT ve SBOOK'u kullandım. ALV'de uçuşları listelerken, her bir uçuş için kayıtlı olan yolcu listesini de Dropdown ile getirdim. Aşağıda ne demek istediğimi daha rahat görebilirsiniz. :)
Kodu okuyarak anlamak zaman alır, çalıştırmak bu süreyi oldukça kısaltır. En azından bu süreç benim için böyle işliyor. Bu yüzden kodu kolayca ve değiştirmeden çalışabilir olması için düzenledim. Kullandığınız herhangi bir Report'da Screen '0100' ve içinde de Custom Container 'CONT100' oluşturarak kodu çalıştırabilirsiniz.
Yeni oluşturulacak bir ekran için Dropdown List sütunu olan bir ALV oluşturdum. Ancak bu listelerin değerlerinin sabit değil dinamik olarak doldurulması gerekiyordu. Birkaç saatlik araştırma sonunda kayda değer bir sonuca rastlamadım ve hatta bazıları mümkün değil yazmıştı. Kendim yaptım ve paylaşmak istedim :)
SAP'nin demo tabloları SFLIGHT ve SBOOK'u kullandım. ALV'de uçuşları listelerken, her bir uçuş için kayıtlı olan yolcu listesini de Dropdown ile getirdim. Aşağıda ne demek istediğimi daha rahat görebilirsiniz. :)
Dinamik Dropdown List Görsel 1 |
Dinamik Dropdown List Görsel 2 |
Dinamik Dropdown List Görsel 3 |
Kodu okuyarak anlamak zaman alır, çalıştırmak bu süreyi oldukça kısaltır. En azından bu süreç benim için böyle işliyor. Bu yüzden kodu kolayca ve değiştirmeden çalışabilir olması için düzenledim. Kullandığınız herhangi bir Report'da Screen '0100' ve içinde de Custom Container 'CONT100' oluşturarak kodu çalıştırabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | REPORT z_xxxx. "Flight tablosu genişletimiş versiyonu. Result sonuçlar için, Keyc ise satır ayrımı için DATA: BEGIN OF gt_flights_extended OCCURS 0. INCLUDE STRUCTURE sflight. DATA: result(15). DATA: keyc TYPE int4, END OF gt_flights_extended. *Container tanımlamaları DATA: r_container100 TYPE REF TO cl_gui_custom_container, r_grid100 TYPE REF TO cl_gui_alv_grid. *Dropdown list datasının tutulacağı yapı DATA: gt_dropdown TYPE lvc_t_drop, gs_dropdown TYPE lvc_s_drop. *Her bir satırı saydırmak için int DATA: gv_counter TYPE int4 VALUE 0. *Catalog/layout için DATA: gt_fieldcat TYPE lvc_t_fcat WITH HEADER LINE, gs_layout TYPE lvc_s_layo. INITIALIZATION. PERFORM retrieve_data. PERFORM create_catalog. PERFORM show_alv_and_screen. *&---------------------------------------------------------------------* *& Form retrieve_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM retrieve_data. SELECT * FROM sflight INTO CORRESPONDING FIELDS OF gt_flights_extended UP TO 50 ROWS. *Her bir satır için counter'ı koy gv_counter = gv_counter + 1. gt_flights_extended-keyc = gv_counter. APPEND gt_flights_extended. *Ve her bir satır için müşteri çek SELECT customid FROM sbook INTO (gs_dropdown-value) UP TO 10 ROWS WHERE carrid = gt_flights_extended-carrid AND connid = gt_flights_extended-connid AND fldate = gt_flights_extended-fldate. *Her bir satır için yine counter'ı işaretle gs_dropdown-handle = gv_counter. APPEND gs_dropdown TO gt_dropdown. ENDSELECT. ENDSELECT. ENDFORM. "retrieve_data *&---------------------------------------------------------------------* *& Form create_catalog *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM create_catalog. gt_fieldcat-fieldname = 'CARRID'. gt_fieldcat-coltext = 'CARRID'. APPEND gt_fieldcat . gt_fieldcat-fieldname = 'CONNID'. gt_fieldcat-coltext = 'CONNID'. APPEND gt_fieldcat . gt_fieldcat-fieldname = 'FLDATE'. gt_fieldcat-coltext = 'DATE'. APPEND gt_fieldcat . *Dropdown list tanımı böyle yapılmalı gt_fieldcat-fieldname = 'RESULT'. gt_fieldcat-coltext = 'Results'. gt_fieldcat-checktable = '!'. gt_fieldcat-edit = 'X'. gt_fieldcat-drdn_hndl = 1. gt_fieldcat-drdn_field = 'KEYC'. APPEND gt_fieldcat . gs_layout-zebra = 'X'. gs_layout-no_toolbar = 'X'. ENDFORM. "create_catalog FORM show_alv_and_screen. CREATE OBJECT r_container100 EXPORTING container_name = 'CONT100'. CREATE OBJECT r_grid100 EXPORTING i_parent = r_container100. *Dropdown list olacağını set ediyoruz ve table ı söylüyoruz CALL METHOD r_grid100->set_drop_down_table EXPORTING it_drop_down = gt_dropdown. CALL METHOD r_grid100->set_ready_for_input EXPORTING i_ready_for_input = 1. CALL METHOD r_grid100->set_table_for_first_display EXPORTING i_structure_name = 'GT_FLIGHTS_EXTENDED' is_layout = gs_layout CHANGING it_outtab = gt_flights_extended[] it_fieldcatalog = gt_fieldcat[]. CALL SCREEN '0100'. ENDFORM. |
Hiç yorum yok:
Yorum Gönder
Heyyyy !!!!
Merhabalar,
Blogumu ziyaret edip, yazımı okuduktan sonra yorum yazmanıza çok sevindim ancak lütfen kırıcı, ayrımcı, ırkçı davranmayın siyasi ve dini tartışmalara girmeyin.