Thursday, December 11, 2014

Dərs 30: Data Dictionary Nümunə Table yaradılması...


Yeni bir Database Table yaratmaq üçün SE11 əməliyyat kodundan istifadə edirik. Bizim yaradacağımız Table Z ilə başlamalıdır. Database Table sahəsinə ZTELEBE yazıb və create düyməsini vurun. Əvvəla table-ın zəruri sahələri doldurmaq məcburiyyətindəyik.


  Short Description qisminə Table-ın qısa şərhini yazıb Delivery Class-ı A, Data Browser/ Table View Maintenances-i X seçirik.


Sonra Fields sahəsinə keçərək ilk stünun adını yazırıq. Əgər biz Table yaradacıyıqsa ilk stün mütləq MANDT və dataelementi isə MANDT olmaq məcburiyyətindədir.


İkinci stün olaraq isə ID Yazaq. Data Element qisiminə gəlincə isə Predefined Type düyməsinə vurun və açılan pəncərədə göreceksinizki Data Element adı yazmaq yerinə birbaşa stünun tipini özümüz yaza biləcəyik. F4-ə bassaq giriş köməyi pəncərəsi açılacaq.


Biz ID üçün NUMC xarakterini seçirik. İnitial valuesi və keyi bu sahədə də seçməliyik. açarsız və mandt-sız table olmaz. Çox nadir table-lar mand-sız olar. Bizim yaratdığımız hər table-da mandt olmalıdır.

Tələbənin adını və soyadını ardıcıl olaraq daxil edin.




Tələbənin adı və soyadı üçün biz özümüz Data Element yaradaq. 

Ən son table-ı aktiv etməyə çalışaq. Əvvəla olaraq table-ın Technical Settings hissəsini nizamlayaq. Onu menyudan GOTO-> Technical settings orada verilən classı APPL0 və kateqoriyanı 0 seçin. 























Wednesday, December 3, 2014

Dərs 29: ALV hesabat (FIELDCAT istifadəsi)...

ALV hesabatda FİELDCAT-dan istifadə edərək hazırlanması.








*&---------------------------------------------------------------------*
*& Report  ZTEST_FIELDCAT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_FIELDCAT.

TYPE-POOLS slis.
TABLES spfli.

DATA BEGIN OF gt_spfli OCCURS 0,
         carrid  LIKE spfli-carrid,
         connid  LIKE spfli-connid,
         countryfr  LIKE spfli-countryfr,
         cityfrom  LIKE spfli-cityfrom,
       END OF gt_spfli.

DATA gv_repid TYPE sy-repid.

SELECT-OPTIONS so_carid FOR spfli-carrid.


START-OF-SELECTION.
  gv_repid sy-repid.
  SELECT FROM spfli
           INTO CORRESPONDING FIELDS OF TABLE gt_spfli
           WHERE carrid IN so_carid.

  IF sy-subrc NE 0.
    MESSAGE 'Seçilmiş kriteriyaya görə məlumat yoxdur' TYPE 'I'.
    RETURN.
  ELSE.
    PERFORM alv_goster.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  ALV_GOSTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM alv_goster .

  DATA lt_fieldcat TYPE slis_t_fieldcat_alv.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               gv_repid
      i_internal_tabname           'GT_SPFLI'
*     I_STRUCTURE_NAME             =
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_inclname                   gv_repid
*     I_BYPASSING_BUFFER           =
*     I_BUFFER_ACTIVE              =
*     I_MODE                       =
   CHANGING
     ct_fieldcat                  lt_fieldcat
*   EXCEPTIONS
*     INCONSISTENT_INTERFACE       = 1
*     PROGRAM_ERROR                = 2
*     OTHERS                       = 3
           .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
*     I_CALLBACK_PROGRAM                = ' '
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME                  =
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE                      =
*     I_GRID_SETTINGS                   =
*     IS_LAYOUT                         =
      IT_FIELDCAT                       lt_fieldcat[]
*     IT_EXCLUDING                      =
*     IT_SPECIAL_GROUPS                 =
*     IT_SORT                           =
*     IT_FILTER                         =
*     IS_SEL_HIDE                       =
*     I_DEFAULT                         = 'X'
*     I_SAVE                            = ' '
*     IS_VARIANT                        =
*     IT_EVENTS                         =
*     IT_EVENT_EXIT                     =
*     IS_PRINT                          =
*     IS_REPREP_ID                      =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     I_HTML_HEIGHT_TOP                 = 0
*     I_HTML_HEIGHT_END                 = 0
*     IT_ALV_GRAPHICS                   =
*     IT_HYPERLINK                      =
*     IT_ADD_FIELDCAT                   =
*     IT_EXCEPT_QINFO                   =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          gt_spfli
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    " ALV_GOSTER

Monday, December 1, 2014

Dərs 28: Table-ın əlaqələrini görmək üçün...


Əvvəla SE11 əməliyyat kodu ilə table-ı ğöstəririk, sonra isə Ctrl-Shift-F11 düymələrini basırıq.
Beləcə Grafic View-ı çalışaraq üzərindəki table-ın əlaqələrini qrafik olaraq görüntüləyirik.
Burada, SPFLİ table-ı seçildi və SPFLİ Table-na bağlı olan bütün Table-lar ekranda göstərildi.




Thursday, November 27, 2014

Dərs 27: İnternal Table-lar üzərində Əməliyyat etmək...

1) APPEND:
APPEND dəyişən TO I_TAB. Dəyişən-i I_TAB-ın son sətirinə yaz".
APPEND INITIAL LINE TO I_TAB. I_TAB-ın son sətirinə boş dəyər yaz".
APPEND LINES OF I_TAB1 TO I_TAB2. I_TAB1-in sətirlərini I_TAB2-nin sətirlərinin sonuna yaz".
APPEND LINES OF I_TAB2 FROM INDEX1 TO INDEX2 TO I_TAB1. “I_TAB1 in INDEX1 ile INDEX2 arasında qalan sətirlərini I_TAB2-in sətirlərinin sonuna əlavə edir".

2) INSERT:
INSERT dəyişən INTO TABLE I_TAB“Dəyişəni I_TAB-ın son sətirinə əlavə edir".
INSERT dəyişən  INTO I_TAB INDEX 3. “Dəyişəni I_TAB-ın 3-cü sətirinə əlavə edir".

3) MODİFY:
MODIFY I_TAB INDEX 2 FROM dəyişən. “I_TAB-ın 2-ci indeksindəki dəyəri dəyişənin qiyməti ilə yeniləyər".

4) DELETE:
DELETE I_TAB INDEX 2. I_TAB-ın 2-ci indeksindəki dəyəri sil".
DELETE I_TAB WHERE ID = 2. I_TAB-ın içindən ID-si 2 olan dəyəri sil".

5) SORT:
SORT I_TAB BY ID DESCENDING/ASCENDING“I_TAB-ın sətirlərini ID dəyərlərinə görə sırala".

6) READ:
READ TABLE I_TAB INTO dəyişən INDEX 1“I_TAB-ın index1-dəki dəyərini dəyişənin içinə at".
READ TABLE I_TAB INTO dəyişən  WITH KEY ID = 10“I_TAB-ın ID-si 10 olan ilk dəyərini dəyişənin içinə at".

7) LOOP:
LOOP AT I_TAB INTO STRUCTURE.
  * I_TAB-ın bütün sətirlərində gəz".
ENDLOOP.

LOOP AT I_TAB INTO STRUCTURE WHERE ID = 10.
  * I_TAB-ın ID dəyəri 10 olan sətirlərində gəz".
ENDLOOP.

LOOP AT I_TAB INTO STRUCTURE FROM INDEX1 TO INDEX2.
  * I_TAB-ın INDEX1 ilə INDEX2 sətirləri arasında gəz".
ENDLOOP.

Wednesday, November 26, 2014

Dərs 26: Standart Function Modul-un Proqramda İstifadə edilməsi...

Standart Function Modulları Proqramda istifadə etmək üçün ilk öncə SE38 Əməliyyat Kodundan ZTEST_RANDOM adlı proqram yaradaq. Dəyişənlər tanıdıldıqdan sonra Pattern düyməsini vuraraq açılan pəncərədə CALL FUNCTİON bölməsinə QF05_RANDOM_INTEGER adlı Function Modulumuzu yazırıq və ENTER düyməsinə vururuq.


Proqramda PARAMETERS bölməsində təyin etdiyimiz dəyişənləri Function Modulun RAN_İNT_MAXRAN_İNT_MİN dəyişənlərinə bərabərləşdiririk.


Proqramı çalışdırırıq və ekranda göstərilmiş xanalara qiymətləri yazırıq.


Random funksiyası proqramın içərisində 10 dəfə çalışaraq fərqli qiymətlər alır və hər bir qiyməti İnternal Table-a yazır. 

Nəticə...


PROQRAMIN TEXT-i...

REPORT  ZTEST_RANDOM.
*****************Ekranda qiymətləri daxil etmək üçün PARAMETERS-dən istifadə edirik****
PARAMETERSpa_n1 TYPE i,
                             pa_n2 TYPE i.

DATAlv_int TYPE i.

******************İnternal Table-ı tanıdırıq************
DATABEGIN OF gt_int OCCURS 0,
               r_say TYPE i,
      END OF gt_int.

DATAgs_int LIKE LINE OF gt_int.

******************Funksiyanın 10 dəfə çalışması üçün DO-ENDDO-dan istifadə edirik.******
DO 10 TIMES.

call function 'QF05_RANDOM_INTEGER'
 EXPORTING
   RAN_INT_MAX         pa_n1
   RAN_INT_MIN         pa_n2
 IMPORTING
   RAN_INT             lv_int
* EXCEPTIONS
*   INVALID_INPUT       = 1
*   OTHERS              = 2
          .
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.

gt_int-r_say lv_int.
APPEND gt_int.
ENDDO.

******************Sonda İnternal Table-dakı məlumatları ekrana çıxarmaq üçün LOOP-dan istifadə edirik.******
LOOP AT gt_int INTO gs_int.
  WRITE:/ gs_int-r_say.
ENDLOOP.

Tuesday, November 25, 2014

Dərs 25: SAP ABAP-da Function Module yaratmaq...


SAP-nin içərisində bir funksiya kitabxanası vardır və bu kitabxananın içərisində isə bir çox funksiyalar vardır. Bu funksiyalar istəndiyi zaman istənilən proqramdan çağırılıb istifadə edilə bilər. Bu funksiyaların hər birinə Function Modul deyilir.
SAP bənzər funksiyadakı function modullarını function grouplarda qruplaşdırma imkanı verir. Hər function group-un özünə aid qlobal dəyişənləri və function modulları var. Function groupları istər SE80 Əməliyyat kodundan istərsə də SE37 Əməliyyat kodundan Goto>Function Groups>Create Group deyərək (aşağıda da göstərilmiş şəkildə) yaratmaq olur.






Yaratmaq istədiyiniz Function Grupu SE80 e gedib Activate etməzsəniz Function Modulu yaradarkən "FUNCTION-POOL" səhvi alırısınız.






     4 növ parametr vardır;
      1)Import Parameters: Proqramdan Funksiya Moduluna göndərilən parametrlər.
      2)Export Parameters: Funksiyanı çağıran proqrama funksiya modulu tərəfindən göndərilən    parametrlərdir.
    3)Changing Parameters: Bu da ikisinin birləşməsi kimi, yəni əvvəl proqram göndərir sonra Funksiya Modulu bunu içində dəyişdirib yenə proqrama göndərir.
      4)Exceptions: Funksiyanın proqrama göndərdiyi səhv parametrləridir.







Sonra Function Modulu calişdıran zaman bizə bir Table verir.





Saturday, November 22, 2014

Dərs 24: ABAP ilə ALV Hesabatı hazırmaq üsulu2 (REUSE_ALV_GRID_DISPLAY)...


SE38 Əməliyyat kodundan proqram yaradırıq və SPFLİ Table-dan məlumatlari İnternal table-a Select edirik. Sonra isə Pattern düyməsinə vururuq. Açılan Pəncərədə CALL FUNCTİON (REUSE_ALV_GRID_DISPLAY) bölməsinə funksiyanın adını yazırıq və Enter düyməsinə basırıq.

Proqramı çalışdıran zaman açılan ilk pəncərənin seçim ekranından dəyərləri seçirik və proqramı yenidən çalışdırırıq.


*& Report  ZALV_GOSTER
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report  zalv_goster.

tables spfli.
type-pools slis.

select-options pa_car for spfli-carrid.

datagt_test type table of spfli.



start-of-selection.

  select from spfli
           into table gt_test where carrid in pa_car.
  if sy-subrc <> 0.
    message 'Melumat yoxdur...' type 'I'.
  endif.

  perform alv_goster.
*&---------------------------------------------------------------------*
*&      Form  ALV_GOSTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form alv_goster .
  call function 'REUSE_ALV_GRID_DISPLAY'
   exporting
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
      i_callback_program                'ZALV_GOSTER'
*     I_CALLBACK_PF_STATUS_SET          = ' '
 *     i_callback_user_command           =
      i_callback_top_of_page            'BASLIQ'
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
      i_structure_name                  'SPFLI'
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE                      =
*     I_GRID_SETTINGS                   =
*     IS_LAYOUT                         =
*     IT_FIELDCAT                       =
*     IT_EXCLUDING                      =
*     IT_SPECIAL_GROUPS                 =
*     IT_SORT                           =
*     IT_FILTER                         =
*     IS_SEL_HIDE                       =
*     I_DEFAULT                         = 'X'
*     I_SAVE                            = ' '
*     IS_VARIANT                        =
*     IT_EVENTS                         =
*     IT_EVENT_EXIT                     =
*     IS_PRINT                          =
*     IS_REPREP_ID                      =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     I_HTML_HEIGHT_TOP                 = 0
*     I_HTML_HEIGHT_END                 = 0
*     IT_ALV_GRAPHICS                   =
*     IT_HYPERLINK                      =
*     IT_ADD_FIELDCAT                   =
*     IT_EXCEPT_QINFO                   =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    tables
      t_outtab                          gt_test
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
            .
  if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.



endform.                    " ALV_GOSTER

*&---------------------------------------------------------------------*
*&      Form  BASLIQ
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form basliq.
  datalt_comment type slis_t_listheader.
  datals_comment like line of lt_comment.
  datalv_tarix type length 10.



  ls_comment-typ 'H'.
  ls_comment-info 'SAP ABAP AZERBAIJAN...'.
  append ls_comment to lt_comment.

  ls_comment-typ 'S'.
  write sy-datum to lv_tarix mm/dd/yyyy.
  ls_comment-info lv_tarix.
  append ls_comment to lt_comment.

  call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
      it_list_commentary lt_comment
*     I_LOGO             =
*     I_END_OF_LIST_GRID =
*     I_ALV_FORM         =
    .



endform.                    "BASLIQ