12 Temmuz 2016 Salı

Döngüler

DO any times : içindeki sayı kadar döngüde kalır

DO TIMES.

ENDDO.
5 kere içindeki verilerde dolaşır.

DO  : 
DO .
ENDDO.
Sonsuz Döngüde bulunur.

LOOP: İnternal Table in içinde kaç tane varsa o sayıda döner. Bir structure  a ihtiyaç duyulur o internal table daki verileri teker teker alabilmek erişebilmek için.
LOOP AT gt_data INTO gs_data .

ENDLOOP.

Break

BREAK-POINT : Kaynak kodunuza break point yazarsanız eğer o programı çalıştıran bütün kullanıcılar o break point e düşer .Program a devam etmek için f8 e basılır .Tek tek ilerlemek için f5 e basarak tek tek ilerlenebilir eğer bir fonksiyon da ya da subroutine de iseniz f7 ile o fonksiyondan çıkarak işleminize devam ettirebilirsiniz.
BREAK kullanıcıadi. Örneğin : Break ayildiz. Sadece kendi kullanıcınız düşer.

/h :  Diyelim ki kaynak kodunuza müdahele etmeden break atmak istiyorsunuz o zaman da  transaction code kısmına /h yazıp enter a basılarak debug çalıştırılır.

Bir başka yöntem kod yazmaksızın komut satırının yanına nokta işareti bırakılmasıdır.

Yada bir başka yöntem .sap uzantılı bir dosya oluşturulur ve içerisine de

[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

komut satırları yazılır .Debug atılmak istenen yere sürüklenip bırakılır.

Radio button ve checkbox

 selection-screen begin of block b1 with frame title text-001.

PARAMETERS :
             mus_malz radiobutton group gr1 modif id gr1,
             alt_olcu radiobutton group gr1 modif id gr1.


     PARAMETERS p_chkbox AS CHECKBOX DEFAULT ''.

Selection Screen

 selection-screen begin of block b1 with frame title text-001.
"arasına istenilen parametreler select option lar yazılır.
 selection-screen end of block b1.

Collect

Collect :  id kısımları aynı olan ama para miktarı gibi miktar gibi verileri toplamamıza yarar. Aynı id ye sahip olan verileri bir satıra indirger ve toplanmış bir şekilde.

LOOP AT gt_data INTO gs_data .
  MOVE-CORRESPONDING gs_data TO gt_data2.
  COLLECT gt_data2.
ENDLOOP.

Move Corresponding

DATA BEGIN OF gt_data OCCURS 0,
  matnr LIKE mara-matnr,
  ernam LIKE mara-ernam,
  END OF gt_data,
  gs_data LIKE LINE OF gt_data.

DATA :BEGIN OF gt_data2 OCCURS 0,
  matnr LIKE mara-matnr ,
  ernam LIKE mara-ernam,
  END OF gt_data2,
  gs_data2 LIKE LINE OF gt_data2.



SELECT FROM mara INTO CORRESPONDING FIELDS OF TABLE gt_data.
LOOP AT gt_data INTO gs_data .
  MOVE-CORRESPONDING gs_data TO gs_data2.

"Eğer structure ların içeriği aynı ise aktarma yapar diğer structure a .
  APPEND gs_data2 TO gt_data2.

"Bu aktarılan structure dan internal table a veri ekler.

ENDLOOP.

merge , display

                                                             MERGE
DATA :  ct_fcat       TYPE  slis_t_fieldcat_alv,
        gs_fcat       LIKE LINE OF ct_fcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name         sy-repid "program adı
    i_internal_tabname     'GT_DATA' "internal table adı
    i_client_never_display 'X'
    i_inclname             sy-repid "program adı
  CHANGING
    ct_fieldcat            ct_fcat.
DATA st_layout TYPE slis_layout_alv.
st_layout-colwidth_optimize 'X'.
st_layout-zebra             'X'.

                                                        DISPLAY
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program sy-repid "program adı
    is_layout          st_layout
    it_fieldcat        ct_fcat "fieldcat
  TABLES
    t_outtab           gt_data[]."internal table

Select option , Parameters

                 
DATA BEGIN OF gt_data OCCURS 0,
  matnr LIKE mara-matnr,
  ernam LIKE mara-ernam,
  END OF gt_data,
  gs_data LIKE LINE OF gt_data.

SELECT-OPTIONS :  s_ernam  FOR gs_data-ernam 
NO-EXTENSION NO INTERVALS.
PARAMETERS :      p_matnr  LIKE mara-matnr.
SELECT FROM mara INTO CORRESPONDING FIELDS OF TABLE gt_data
  WHERE ernam IN s_ernam AND matnr EQ p_matnr.


Select options : no-extension no intervals yazılınca select option ı parametre gibi çalışmasını sağlar.

ALV reports

                                                                            ALV
DATA BEGIN OF gt_Data OCCURS 0,
  matnr like mara-matnr,
  ernam like mara-ernam,
  END OF gt_data,
  gs_data LIKE LINE OF gt_data.


SELECT ernam matnr FROM mara INTO CORRESPONDING FIELDS OF TABLE gt_data
  UP TO 10 ROWS.

"up to 10 rows 10 tane sıralar.
"corresponding fields of table ise sütunları eşleştirerek sıralar.

  DATA :  ct_fcat       TYPE  slis_t_fieldcat_alv,
          gs_fcat       LIKE LINE OF ct_fcat.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     I_PROGRAM_NAME               =  SY-REPID program ismini verir
     I_INTERNAL_TABNAME           'GT_DATA' 'internal table ismi verilir.
     I_CLIENT_NEVER_DISPLAY       'X'
     I_INCLNAME                   SY-REPID "program ismini verir
    CHANGING
      CT_FIELDCAT                  CT_FCAT.
  DATA st_layout type slis_layout_alv.
  st_layout-colwidth_optimize 'X'. Sütunları içindeki verilere göre boyutlandırır
  st_layout-zebra             'X'.Her satırda renk değimini sağlar .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program       sy-repid
        is_layout                st_layout
        it_fieldcat              ct_fcat
      TABLES
        t_outtab                 gt_data[]
.
Bu bir alv görüntüsüdür.

Append ,Modify İşlemleri

DATA BEGIN OF gt_Data OCCURS 0,
  matnr like mara-matnr,
  ernam like mara-ernam,
  END OF gt_data,
  gs_data LIKE LINE OF gt_data.

  gs_Data-matnr '000000000000000001'.
  gs_Data-ernam 'OKARAPINAR'.
  APPEND gs_Data TO gt_data.
İnternal Table a veri eklenir append yaparak
 gs_Data-matnr '000000000000000002'.
  gs_Data-ernam 'OKARAPINAR'.
  APPEND gs_Data TO gt_data.

  LOOP AT gt_data INTO gs_Data.
    gs_Data-ernam 'AYILDIZ'.
    MODIFY gt_data FROM gs_Data TRANSPORTING ernam.
  ENDLOOP.
yaratan kişi değiştirilir sadece.Transporting yapınca sadece o alan değiştirilmesini sağlar daha hızlı çalışır transporting yapınca.
OKARAPINAR olan veriler artık bizim için AYILDIZ olarak değiştirildi.

Ayrıca loop döngüsü internal table ın içinde kaç tane varsa o kadar döngü sağlar sırayla structure a yollar 1. veriler 2. veriler gibi .

Update , Delete , İnsert İşlemleri

Update
UPDATE mara SET ernam 'AYILDIZ' WHERE matnr EQ '000000000000000001' .

Delete
DELETE FROM mara WHERE matnr EQ '000000000000000001'.


İnsert
DATAgs_mara TYPE mara.
gs_mara-ernam 'AYILDIZ'.
INSERT INTO  mara VALUES gs_mara.

Rapor Programlama

DATA gt_data TYPE TABLE OF mara,"internal table
       gs_Data LIKE LINE OF gt_data."global structure

DATA BEGIN OF gt_Data OCCURS 0,
  matnr like  mara-matnr,
  ernam LIKE  mara-ernam,
  END OF  gt_data,
  gs_data LIKE LINE OF gt_data.
   internal table ve strucute oluşturmanın diğer bir yöntemi
   


SELECT FROM mara INTO TABLE gt_data UP TO 10 ROWS.
  "bu işlemle mara tablosundan 10 tane veriyi internal table a 
  "aktarma yapılır.
  "Bu verileri internal table dan yazdırmak istiyorsak eğer 
   "bir structure a gerek duyulur.Bu structure ı bir internal table ın
  " her bir satırı diye düşünebiliriz.

  LOOP AT gt_data INTO gs_Data .
    WRITE / gs_Data-matnr,gs_Data-ernam.

  ENDLOOP.

Karşılaştırma Operatörleri

                                                  Sql kullanımı dışındaki operatörler
CO Contains only
String1 sadece String2 deki karakterleri içerir.
CN contains not only
String1 sadece String2 deki karakterleri içermez.
CA Contains any
String1 , String2 den en az 1 karakter içerir.
NA not any
String1 , String2 den karakter içermez.
CS contains string
String1 ,String2 den oluşur.
NS no string
String1 ,String2 den oluşmaz.
CP contains pattern
NP not pattern

Karşılaştırma Operatörleri

                                       Sql Komutlarında Kullanılan Karşılaştırma Operatörleri
EQ = Eşittir (Equal)
NE = Eşit Değildir (Not Equal)
GT = Büyüktür (Greater Than)
LT  = Küçüktür
GE = Büyük Eşittir
LE = Küçük Eşittir
Between = Arasında
LIKE = İçerir
NOT LIKE = İçermez

Örnek kullanım :

DATA gt_data TYPE TABLE OF mara. İnternal Table Oluşturulur.

EQ =  SELECT FROM mara INTO TABLE gt_data
          WHERE ernam eq 'AYILDIZ'

NE = SELECT FROM mara INTO TABLE gt_data
          WHERE ernam ne 'AYILDIZ'

GT = SELECT FROM mara INTO TABLE gt_data
          WHERE matnr gt '000000000000000005'.

LT = SELECT FROM mara INTO TABLE gt_data
          WHERE matnr lt '000000000000000005'. 

GE = SELECT FROM mara INTO TABLE gt_data
          WHERE matnr ge '000000000000000005'.

LE = SELECT FROM mara INTO TABLE gt_data
          WHERE matnr le '000000000000000005'.

Between = SELECT FROM mara INTO TABLE gt_data
  WHERE matnr BETWEEN '000000000000000005'
                AND   '000000000000000009'.

LIKE = SELECT FROM mara INTO TABLE gt_data
  WHERE ernam like 'AYILDIZ'.

yaratan kişi ayıldız olan mara tablosundaki verileri sıralar.

SELECT FROM mara INTO TABLE gt_data
  WHERE ernam like 'AY%'.

yaratan kişi ay ile başlayan mara tablosundaki verileri sıralar.

SELECT FROM mara INTO TABLE gt_data
  WHERE ernam like '%IZ'.
yaratan kişi ız ile biten mara tablosundaki verileri sıralar.

NOT LIKE = like da sıralanan verilerin tam terslerini sıralar.

Radio Button Örneği

Bir radio buttona tıklanınca ona ait selection screen in açılması için at selection screen output eventı kullanılır.Modif id lere göre gruplandırma işlemlerini yapar.

selection-screen begin of block b1 with frame title text-001.

 parameters:malz_ana radiobutton group gr1 user-command
 rd default 'X' modif id gr1,
             mus_malz radiobutton group gr1 modif id gr1,
             alt_olcu radiobutton group gr1 modif id gr1.

 selection-screen end of block b1.

*1.  Malzeme Ana verisi
 selection-screen begin of block b2 with frame title text-002.

 parameters:mlz_ver   radiobutton group gr2 user-command
 rd default 'X' modif id gr2,
            mlz_sts   radiobutton group gr2 modif id gr2 ,
            mlz_urt   radiobutton group gr2 modif id gr2,
            mlz_depo  radiobutton group gr2 modif id gr2,
            mlz_dgr   radiobutton group gr2 modif id gr2,
            depo_mlz  radiobutton group gr2 modif id gr2,
            mlz_avru  radiobutton group gr2 modif id gr2.

 selection-screen end of block b2.

*1.1.  Genel Malzeme Verileri
 selection-screen begin of block b3 with frame title text-003.

 select-options s_matnr for mara-matnr modif id gr3,
                  s_mtart for mara-mtart modif id gr3,
                  s_spart for mara-spart modif id gr3,
                  s_ersda for mara-ersda modif id gr3,
                  s_matkl for mara-matkl modif id gr3,
                  s_mbrsh for mara-mbrsh modif id gr3.

 selection-screen end of block b3 .

*1.2.  Malzeme için satış verileri
 selection-screen begin of block b4 with frame title text-004.

 select-options s_vkorg  for mvke-vkorg modif id gr4,
                  s_vtweg  for mvke-vtweg modif id gr4,
                  s_spart1 for mara-spart modif id gr4,
                  s_matkl1 for mara-matkl modif id gr4,
                  s_prodh  for mvke-prodh modif id gr4,
                  s_mtart1 for mara-mtart modif id gr4,
                  s_matnr1 for mara-matnr modif id gr4.

 selection-screen end of block b4 .

*1.3.  Malzeme için üretim yeri verileri
 selection-screen begin of block b5 with frame title text-005.

 select-options s_werks   for marc-werks modif id gr5,
                  s_matnr2  for mara-matnr modif id gr5,
                  s_mtart2  for mara-mtart modif id gr5,
                  s_spart2  for mara-spart modif id gr5,
                  s_matkl2  for mara-matkl modif id gr5,
                  s_ekgrp   for marc-ekgrp modif id gr5,
                  s_dispr   for marc-dispr modif id gr5.

 selection-screen end of block b5 .

*1.4.  Malzeme depo yeri verileri
 selection-screen begin of block b6 with frame title text-006.

 select-options s_werks3   for mard-werks modif id gr6,
                  s_lgort    for mard-lgort modif id gr6,
                  s_matnr3   for mard-matnr modif id gr6,
                  s_mtart3   for mara-mtart modif id gr6,
                  s_spart3   for mara-spart modif id gr6,
                  s_matkl3   for mara-matkl modif id gr6,
                  s_diskz    for mard-diskz modif id gr6,
                  s_lgpbe    for mard-lgpbe modif id gr6.

 selection-screen end of block b6 .

**1.5.  Depo numarasına ilişkin malzeme verileri
 selection-screen begin of block b8 with frame title text-008.

 select-options s_lgnum8    for mlgn-lgnum modif id gr8,
                  s_matnr8    for mlgn-matnr modif id gr8.

 selection-screen end of block b8 .

*1.6.  Malzemeye ait Avrupa ürün numaraları
 selection-screen begin of block b9 with frame title text-009.

 select-options s_spart9   for mara-spart modif id gr9,
                  s_matnr9   for mlgn-matnr modif id gr9.

 selection-screen end of block b9 .

*2.  Müşteri Malzeme Bilgi Kaydı radio butonunun seçilmesi
 selection-screen begin of block b10 with frame title text-010.

 select-options s_vkor10   for knmt-vkorg modif id g10,
                  s_vtwe10   for knmt-vtweg modif id g10,
                  s_spar10   for mara-spart modif id g10,
                  s_kunn10   for knmt-kunnr modif id g10,
                  s_matn10   for knmt-matnr modif id g10.

 selection-screen end of block b10 .
at selection-screen.

 at selection-screen output.
   loop at screen.
     if malz_ana eq 'X'.
       if mlz_ver eq 'X'.
         if screen-group1 eq 'GR3'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR4' or screen-group1 eq 'GR5'
           or screen-group1 eq 'GR6'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR8'  or screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       elseif mlz_sts eq 'X'.

         if screen-group1 eq 'GR4'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR3' or screen-group1 eq 'GR5'
            or screen-group1 eq 'GR6'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR8'  or screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       elseif mlz_urt eq 'X'.

         if screen-group1 eq 'GR5'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR3' or screen-group1 eq 'GR4'
            or screen-group1 eq 'GR6'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR8'  or screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       elseif mlz_depo eq 'X'.

         if screen-group1 eq 'GR6'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR3' or screen-group1 eq 'GR4'
            or screen-group1 eq 'GR5'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR8'  or screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       elseif depo_mlz eq 'X'.

         if screen-group1 eq 'GR8'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR3' or screen-group1 eq 'GR4'
            or screen-group1 eq 'GR5'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR6'  or screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       elseif mlz_avru eq 'X'.

         if screen-group1 eq 'GR9'.
           screen-active 1.
         endif.
         if screen-group1 eq 'GR3' or screen-group1 eq 'GR4'
            or screen-group1 eq 'GR5'  or screen-group1 eq 'GR7'
           or screen-group1 eq 'GR6'  or screen-group1 eq 'GR8'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
       else.

         if screen-group1 eq 'GR3'or screen-group1 eq 'GR4' or
         screen-group1 eq 'GR5'
           or screen-group1 eq 'GR6' or screen-group1 eq 'GR8' or
           screen-group1 eq 'GR9'
           or screen-group1 eq 'G10'.
           screen-active 0.
         endif.
         if screen-group1 eq 'GR2'.
           screen-active 1.
         endif.
       endif.

     elseif mus_malz eq 'X' .
       if screen-group1 eq 'G10'.
         screen-active 1.
       endif.
         if screen-group1 eq 'GR2' or screen-group1 eq 'GR3' or
         screen-group1 eq 'GR5'
         or screen-group1 eq 'GR4' or screen-group1 eq 'GR6' or
         screen-group1 eq 'GR8'
          or screen-group1 eq 'GR9' .
         screen-active 0.
       endif.
     else.
       if screen-group1 eq 'GR2' or screen-group1 eq 'GR3' or
       screen-group1 eq 'GR5'
         or screen-group1 eq 'GR4' or screen-group1 eq 'GR6' or
         screen-group1 eq 'GR8'
          or screen-group1 eq 'GR9' or screen-group1 eq 'G10'.
         screen-active 0.
       endif.

     endif.
     modify screen.
   endloop.

System komutları

                                                  SYST stucture
Sistemde bazı veriler kolaylık olsun diye bu şekilde tutulmaktadır.Mesela bir sql sorgusunun doğru çalışıp çalışmadığı ,hangi kullanıcı adında giriş yaptığın gibi benzer veriler bulunmaktadır.

sy-index   = do döngüsünde kaçıncı kez döndüğünü belirtir.
sy-pagno  = kaçıncı sayfada olduğumuz.
sy-tabix    = internal table daki kaçıncı indexte olduğumuz.
sy-dynnr   = hangi ekranda olduğumuz.
sy-mandt   = hangi sistemde çalışıtığımızı belirtir.
sy-uzeit = saati belirtir.
sy-datum = tarihi belirtir.
sy-uname = kullanıcı adını belirtir.
sy-subrc   = sql sorgusu doğru ise 0 gelir.
sy-msgid = mesaj id .
sy-msgty = mesaj type.
sy-msgv1 = 1.mesaj.
sy-msgv2 = 2.mesaj.
sy-msgv3 = 3.mesaj.
sy-msgv4 = 4.mesaj.
sy-host = sunucu adı
sy-ucomm = basılan tuşu belirtir.
sy-tcode = hangi transaction kodunda olduğumuzu belirtir.
sy-langu = giriş yapılan dili .

Event

                                                Olaylar
Her bir event hemen alt satırında olan kod satırlarını tetikler.

start-of-selection.
  write :'START-OF-SELECTION'.
Başlangıç event ından hemen sonra bu event tetiklenir.

top-of-page.
  write :'TOP-OF-PAGE'.
Sayfanın başlığı olarak ilk burası çalışmasa da sayfanın en üst kısmına yazar.

end-of-page.
  write 'END-OF-PAGE'.

load-of-program.
  write 'LOAD-OF-PROGRAM'.
Program Yüklendiğinde yani program çalışınca ilk bu işlemi yapması beklenir tabi top of page event ı olduğu için top of page in bi altına yazması beklenir.

initialization.
  write :'INITIALIZATION'.
Başlangıç event ı program çalışınca ilk olarak bu event tetiklenir.

end-of-selection.
write 'END-OF-SELECTION'.
Program biterken en son bu event tetiklenir yani en son bu event ın içindeki veriler yazılması beklenecektir.

at selection-screen.
  write 'AT SELECTION-SCREEN'.
Ekran değiştirğinde yani radio button gibi checkbox gibi şeyler olunca bi değişiklik yapıldığında bu event tetiklenir.

11 Temmuz 2016 Pazartesi

Data Type

                                                       Data Tipleri
C : karakter
I : integer
P : Virgüllü sayı (ör.: sayi type p decimal 3.) virgülden sonra 3 basamak.
F : virgüllü sayi
N : Numeric text
D : date
T : time

X : Hexadecimal

Report

                                        Report Programlama
Rapor oluşturma transaction code u se38 dir.Bu transaction code undan yürütülebilir program(report)
include, modül havuzu , işlev grubu  , alt rutin havuzu, arabirim havuzu ,sınıf havuzu ,tipler havuzu ,xslt programı oluşturulabilir.Biz şimdilik report oluşturalım.

İlk önce se38 transaction code u çalıştırılır . Z li bir program ismi verilir ve yarat tuşuna basılır daha sonra karşımıza çıkan ekrana program başlığı program türü seçilir.Save tuşuna basılır.

Package ismi ve request verilerek program oluşturulur.



Write komutu ekrana yazı yazdırmamızı sağlar .Örneğin merhaba yazıp daha sonra da program ı aktif etmemiz gerekecektir. kibrit çöpü yada ctrl + F3 tuşuna basılarak program aktif edilir.

 Aktif edilen program execute tuşuna basılarak ya da F8 tuşuna basılarak çalıştırılır.Ve yazdırmak istediğimiz string ekrana gelir.

Data Element ve Domain

Data elementleri ve domainleri standart olmadan kendimiz oluştururak bir tablo üretelim.Aynı süreç bizim için devam edecektir sadece field ları girerken data elementleri ve domain leri biz oluşturacağız oluşturulmuşu kullanmayacağız .
Data elementi se11 işlem kodundan da oluşturabiliriz ama buna pek gerek duyulmaz tablonun içerisinde iken oluşturabiliriz.


Z04_sira diye bir data element yazdım ama şuan daha oluşturulmamış çift tıklayarak bu data elementi istediğimiz gibi şekillendirebiliriz.Package ve Request seçilir.Data Element oluşturulsun mu diye soru çıkmakta karşımıza evet butonuna tıkladıktan sonra data element in içine girilecektir.



Öncelikle Field Label yazılır ki data  elementin ne olduğunu belirtsin uzunluk kısalığına göre alv ye dökmektedir bu field label daki isimler.

Daha sonra domain oluşturmak istiyorsak z li ve d li isim yazılır ki domain olduğu belli olsun yine aynı şekilde çift tıklanarak oluşturulur daha özel durumlar için domain oluşturulur aslında o kadar zorunlu bir objcet değildir daha kısa detaysız olmasını istiyorsanız eğer Predefined type tıklanır 
ve char 10 , int 4 gibi data type leri yazılarak data element oluşturulur.

Domain in içine de zaten onun gibi data type leri yazacağız tek farkı value range lerin olması alt limit ve üst limiti belirtmek gibi şeyler.
En son olarak domain den dışa doğru yani data element ve tablo yu arka arkasına aktif etmemiz gerekmektedir.Diğer süreçler yine aynısıdır kolaylıkla yapabileceğinize eminim :D


Table

                                       Tablo Oluşturma
Standart data elementler ile tablo oluşturma
Sap de bazen tablolar yetersiz kalabiliyor O yüzden z li bir tablo oluşturmamıza izin verilebilmektedir.Tabloyu SE11 transaction kodundan oluşturabiliriz.
Se11 transaction kodundan view , data type , type group , domain , search help , lock object
gibi object lerde oluşturabiliriz.
Örneğin tablo :
Database Table seçilir ve z li bir isim girildikten sonra  create butonuna tıklanır.Daha sonra tablo tanımı yazılır Short Description alanına daha sonra tablonunun ne tür tablo olduğu seçilir dışarıdan girişe (el ile manuel) izin ver seçilir .Technical Settings butonuna tıklanır ve bizden package ismi seçmemiz istenir.Package ismini girdikten sonra teknik ayarlamarları yapılır.


 Ana tablo olduğu ve büyüklüğü girilir buraya genellikle 0 yazarız çünkü en fazla 7 000 lik bir girişe izin verir bu da bizim için yeterlidir.
Mandt kesinlikle her tabloda bulunması ve key olması gereken bir alandır .Bu alan ise hangi sistemde olduğunu belirtir.Her tablonun kendine ait en az bir key alanı olmak zorunda uniq olması için bende ise matnr alanını yaptım daha sonra da 2 tane alan ekleyip aktif etme tuşuna yani kibrit çöpü ya da 
ctrl + F3 tuşuna basarız.

Eğer bu şekilde bi ekran karşınıza çıkarsa korkmayın :D doğru yapsanız da yanlış yapsanız da bu ekran karşınıza çıkacaktır.
Evet e basarsanız eğer hatanız varsa kırmızı renkler yoksa sarı renkler göreceksiniz 



.Bazen yanlış yapabilirsiniz tutar  işin içine girince referans vermek zorundasınız .birim gibi mesela wrbtr alanını yazarsanız eğer waers alanını referans olarak vermek zorundasınız.

Ya da bir diğer yöntem birim alanını da tabloya ekleyip o alanı referans vermek olacaktır.

Daha sonra bu tabloya el ile manuel giriş yapmak için tablo bakım ekranı oluşturulur.Utilities ->
Table Generator Maintance tıklanır.&NC& tam yetki anlamına gelmektedir.tablo ile fonksiyon grup ismini aynı veriyoruz ki bi karışıklık olmasın  diğer tablolarla one step seçilir ve 1 . sayfa olduğu yazılır ve create butonuna basılır.