En Kısa Kod ile ALV Rapor Ekranı Yapın

Buradaki paylaştığım kodu en kısa yoldan ALV rapor yapabileceğiniz notlarınıza almanızı tavsiye ederim. Kullanacağımız ALV türü class alv olmasına rağmen çekinmeden kullanabilirsiniz. Daha fazla birçok ayrıntısı ile de sizlere bu konuda paylaşım yapmaya çalışacağım.

Öncelikle isterseniz selection ekranı dediğimiz kullanıcıdan seçim parametreleri alacağınız kodu üstüne ekleyin. Seçim parametrelerini kullanıcıdan alın ve tablonuz için bir internal tablo veri kümesini oluşturun. Ben bu kısımların kodunu yazmayayım kafa karışıklığı olmasın.

Benim aşağıda yazdığım kod için internal tablonuz hazır ve ekrana vermek istediğiniz adım olacaktır. Benim internal tablomun adı lt_log olacak. Bu tabloyu tanımlarken de benim gibi tanımlamanız gerekecektir. Dikkat edin tanımlama benim gibi olmazsa tablonuz class ile çağırılmayabilir.

DATA: lt_log TYPE TABLE OF zsd_t_aras_log WITH HEADER LINE.
DATA lo_alv TYPE REF TO cl_salv_table.
DATA: lo_column TYPE REF TO cl_salv_column.
DATA: lo_cols TYPE REF TO cl_salv_columns.

TRY.
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = lo_alv
        CHANGING
          t_table      = lt_log[] ).
    CATCH cx_salv_msg.
  ENDTRY.

lo_alv->display( ).

Farklı bir kod bloğu daha ekleyeyim. Bu örnekteki alv tablom gt_alv’dir. Data tanımına dikkat edin.

TYPES: BEGIN OF ty_alv,

    opbel     TYPE dfkkop-opbel,
    betrw     TYPE dfkkop-betrw,
    vkont     TYPE dfkkop-vkont,
    gpart     TYPE dfkkop-gpart,
         END OF ty_alv.

DATA: gt_alv      TYPE TABLE OF ty_alv,
      gs_alv      TYPE ty_alv.
DATA: go_alv TYPE REF TO cl_salv_table.

*** ALV ekrana koymak için aşağıdaki satırları ekledim.

  TRY.
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = go_alv
        CHANGING
          t_table      = gt_alv.
    CATCH cx_salv_msg .
  ENDTRY.
  go_alv->display( ). 

Farklı şekilde bu kısa kod ile kullandığınız class alv için isterseniz birçok yeteneği de eklemeniz mümkün. Mesela kolonların genişliğini, başlık bilgisini vs her şeyi ufak araştırmalar ile yada bu siteden bulabilirsiniz.