Cuma , 28 Temmuz 2017
Home » SAP Eğitimleri » ABAP Eğitimleri » ABAP ile Rapor Geliştirme

ABAP ile Rapor Geliştirme

ABAP ile Rapor Geliştirme

 

Se38 işlem koduna giriş yapılıy. Yazılacak programın adı Z veya Y ile başlayacak şekilde yazılır. Yarat tuşuna başılır.

İlk açılan ekranda Programın adı ve zorunlu olarak programın tipi girilir, Program Rapor olduğu için “Yürütülebilir Program” seçilir.

Kaydet tuşuna bastığınızda size programı hangi paketin içerisine alacağınızı soracaktır, burada geliştirmenin yapıldığı modülle ilgili paket seçilir. Satınalma sipariş listesi raporu yaptığımız için “ZMM” paketini seçiyoruz.

 

111014_2140_ABAPileRapo1.png

Seçim ekranını tanımlamak için ilk olarak “Selection-Screen” bloğu içinde kullanıcıdan isteyeceğimiz bilgileri aşağıdaki şekilde tanımlıyoruz.

 

111014_2140_ABAPileRapo2.png

Program yapısının düzgün olması için elimizden geldiğinde yapılan işlemleri Performlar içine yazmalıyız, ayrıca perform işlemlerini de gruplayarak includların içine yazabiliriz bu şekilde programımız daha okunabilir olacaktır. Ayrıca mutlaka programdaki önemli noktalara açıklama yazmayıda atlamayalım, bu şekilde ileride biz veya başkası programa baktığında kullanım amacını daha kolay anlayacak ve müdahale etmesi gerekirsede, doğru şekilde müdahale edebilecektir.

 

111014_2140_ABAPileRapo3.png

ALV rapor için gerekli olan kod bloğunu ayrı bir include içine koyuyoruz, bu şekilde yazdığımız kodlamayı daha derli toplu yapabiliyoruz, bu kodlar standart kodlardır ve her raporunuzda kullanabilirsiniz.

 

 

 

*&———————————————————————*
*&  Include           ZMM_SAS_LIST_ALV
*& ALV report çıktısı almak için gerekli kodlar
*&———————————————————————*

*———————————————————————*
*       FORM e03_eventtab_build                                       *
*———————————————————————*
FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
EXPORTING
i_list_type = 0
IMPORTING
et_events   = e03_lt_events.

READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE ‘SAYFA_BASI’ TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.                    “e03_eventtab_build

*———————————————————————*
*       FORM e04_comment_build                                        *
*———————————————————————*
FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
FREE : e04_lt_top_of_page.
DATA : _tarih(10).
DATA : _saat(10).
DATA : temp_tarih(10).
CLEAR ls_line.
ls_line-typ = ‘H’.
ls_line-key = ‘Rapor :’.
ls_line-info = ‘Sipariş Raporu’.
APPEND ls_line TO e04_lt_top_of_page.
CLEAR ls_line.
ls_line-typ = ‘S’.
ls_line-key = ‘Kullanıcı’.
ls_line-info = sy-uname.
ls_line-info+35(10) = sy-tcode.
APPEND ls_line TO e04_lt_top_of_page.
CLEAR ls_line.
ls_line-typ = ‘S’.
ls_line-key = ‘Raporun Çekildiği Tarih’.
WRITE sy-datum TO _tarih DD/MM/YYYY.
WRITE sy-uzeit TO _saat .
ls_line-info = _tarih.
ls_line-info+20(10) = _saat.
APPEND ls_line TO e04_lt_top_of_page.
CLEAR ls_line.

ENDFORM.                    “e04_comment_build

*———————————————————————*
*       FORM get_format                                               *
*———————————————————————*
FORM get_format USING i_internal_tabname  .
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name         = sy-repid
i_internal_tabname     = i_internal_tabname
i_inclname             = sy-repid
CHANGING
ct_fieldcat            = er_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error          = 2
OTHERS                 = 3.
PERFORM fieldcat_modify USING er_fieldcat[].
ENDFORM. ” get_format
*&———————————————————————*
*&      Form  FIELDCAT_MODIFY
*&———————————————————————*
FORM fieldcat_modify USING u_er_fieldcat TYPE slis_t_fieldcat_alv.
DATA: xs_fieldcat TYPE slis_fieldcat_alv.
LOOP AT u_er_fieldcat INTO xs_fieldcat.
CASE xs_fieldcat-fieldname.
WHEN ‘EBELN’.
xs_fieldcat-seltext_l = ‘Sipariş No’.
xs_fieldcat-ddictxt = ‘L’.

WHEN ‘LIFNR’.
xs_fieldcat-seltext_l = ‘Satıcı Firma’.
xs_fieldcat-ddictxt = ‘L’.
WHEN ‘Bukrs’.
xs_fieldcat-seltext_l = ‘Şirket Kodu’.
xs_fieldcat-ddictxt = ‘L’.

WHEN ‘EKGRP’.
xs_fieldcat-seltext_l = ‘Satınalma Grubu’.
xs_fieldcat-ddictxt = ‘L’.

ENDCASE.
xs_fieldcat-reptext_ddic = xs_fieldcat-seltext_l.
xs_fieldcat-seltext_m = xs_fieldcat-seltext_l.
xs_fieldcat-seltext_s = xs_fieldcat-seltext_l.
MODIFY u_er_fieldcat FROM xs_fieldcat.
ENDLOOP.

ENDFORM.                    “fieldcat_modify
*&———————————————————————*
*& Form alv_alv
*&———————————————————————*
FORM alv_alv TABLES outtab TYPE table.

er_layout-zebra = ‘X’.
er_layout-colwidth_optimize = ‘X’.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program       = sy-repid
*     i_callback_pf_status_set = ‘PF_STATUS_SET’
i_callback_user_command  = user_command
i_buffer_active          = space
i_bypassing_buffer       = ‘X’
is_layout                = er_layout
it_fieldcat              = er_fieldcat[] it_special_groups        = er_sp_group
i_save                   = ‘A’
is_variant               = e_variant
it_events                = er_events[] TABLES
t_outtab                 = itab_out.
ENDFORM. ” alv_alv

*&———————————————————————*
*& Form sayfa_basi
*&———————————————————————*
FORM sayfa_basi.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
i_logo             = ‘ ‘
it_list_commentary = gt_list_top_of_page.
ENDFORM. ” sayfa_basi

*———————————————————————*
*  FORM user_command
*———————————————————————*
FORM user_command USING r_ucomm     LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

DATA : l_grid TYPE REF TO cl_gui_alv_grid.
DATA : l_ucomm LIKE sy-ucomm.
DATA : lv_answer.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = l_grid.

l_ucomm = ‘&REFRESH’.
CALL METHOD l_grid->set_function_code
CHANGING
c_ucomm = l_ucomm.

CASE r_ucomm.
*    WHEN ‘BACK’ OR ‘EXIT’ OR ‘CANCEL’.
*      LEAVE TO SCREEN 0.

ENDCASE.
rs_selfield-refresh = ‘X’.
ENDFORM.                   ” USER_COMMAND
*———————————————————————*
*  FORM pf_status_set
*———————————————————————*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.

ENDFORM.

 

 

Programı geliştirmeyi tamamladıktan sonra çalıştır tuşuna basarak seçim ekranına gelebilirsiniz. Seçim ekranında metinler için henüz bir tanımla yapmadığımız için değişken adları ekrana gelmektedir.

111014_2140_ABAPileRapo4.png

 

 

Yazdığımız programın selection Text kısmına giderek yazdığımız değişkenler için istersek kendimiz tanımları yazabiliriz, yada SAP elementlerini kullandığımız için sözlükteki tanımları al diyebiliriz.

111014_2140_ABAPileRapo5.png

Programı gerekli değişiklikleri aktivte ettikten sonra çalıştığırdığımızda aşağıda göreceğiniz gibi tanımlar düzgün şekilde görünecektir.

Gerekli bilgileri girerek “F8“ tuşuna basarak programı çalıştırıyoruz.

 

 

111014_2140_ABAPileRapo6.png

 

Verdiğimiz kiriterlere göre rapor gerekli datayı çekerek, aşağıdaki şekilde gösterecektir.

Bu şekilde ilk abap raporumuzu yazmış olduk, sonraki eğitimlerde buluşmak dileğiyle.

 

111014_2140_ABAPileRapo7.png

(Visited 759 times, 1 visits today)

About Sinan Dilaver

Sinan Dilaver’in profil fotoğrafı

Check Also

ABAP Program Ekranına Buton Ekleme

ABAP Program Ekranına Buton Ekleme   Daha önceki eğitimlerimizde yaptığımız ekrana, satıcı bilgilerini güncelleyebileceğimiz bir …

Bir Cevap Yazın