12 Temmuz 2016 Salı
Döngüler
DO any times : içindeki sayı kadar döngüde kalır
DO 5 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.
DO 5 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.
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.
alt_olcu radiobutton group gr1 modif id gr1.
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.
"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.
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.
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
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[].
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 .
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
DATA: gs_mara TYPE mara.
gs_mara-ernam = 'AYILDIZ'.
INSERT INTO mara VALUES gs_mara.
UPDATE mara SET ernam = 'AYILDIZ' WHERE matnr EQ '000000000000000001' .
Delete
DELETE FROM mara WHERE matnr EQ '000000000000000001'.
İnsert
DATA: gs_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.
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
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'.
AND '000000000000000009'.
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%'.
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'.
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.
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 .
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.
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
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.
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.
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.
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 :
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.
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.
Kaydol:
Kayıtlar (Atom)