29 Temmuz 2008 Salı

ABAP : Hotspot Click Degeri

ALV içersinde kullandığımız bir hotspot'un tıklanan değerini almak için, User_Command formumuza ufak bir değişken eklememiz yeterli olacaktır.


FORM user_command USING u_ucomm LIKE sy-ucomm us_selfield TYPE slis_selfield. "#EC

data: lv_belnr type belnr.

*slis_selfield ALV'de ki cursor pozisyon bilgisini tutan tiptir.

lv_belnr = us_selfield-value. "tıklanan değeri value alanı tutacaktır.
endform.

SAP : Sistem Tabloları

Hepsi olmasada, bir şekilde en çok kullanabileceğiniz tablolar;


ADCPPerson/Address assignment (central address administration)
ADIRACCESSTable to store keys for TADIR objects
ADR2Telephone numbers (central address admin.)
ADRPPersons (central address administration)
APQDDATA DEFINITION Queue
APQIQueue info definition
D010SINFABAP- Information about ABAP program source code
E071Change and Transport System- Object Entries of Requests/Tasks
E07TChange and Transport System- Short Texts for Requests/Tasks
ENLFDIRAdditional Attributes for Function Modules
INDXSystem table INDX
NASTMessage Status
STXHSTXD SAPscript text file header
T005Countries
T005STaxes- Region (Province) Key
T005UTaxes- Region Key- Texts
T006Units of Measurement
T015MNames of the months
T247Month name and short text
T777ABuilding Addresses
TADIRDirectory of Repository Objects
TBTCOJob status overview table
TBTCPBatch job step overview
TFDIRFunction Module
TFTITFunction Module Short Text
TSP03LSpool- Long device names
TSTCSAP Transaction Codes
TSTCTTransaction Code Texts
TUTYPUser Types in Current Price List in SAP System
TUZUSSpecial versions
TVARVTable of variables in selection criteria
TVDIRView Directory
US930Data Relevant to Measurement for User Master Record
USR01User master record (runtime data)
USR02Logon data
USR04User master authorizations
USR06Additional Data per User
USR14Surchargeable Language Versions per User
USR21Assign user name address key
ARCH_OBJObjects for archiving and reorganization
BTCUEDDescription of user event IDs for background processing
BTXSUPBBSI- Upgrade-Information
CCCFLOWClient Copy Control Flow
DBSTATCDB Optimizer Control (Statistics Creation)
DEVACCESSTable for development users
DEVLOBSOLETE- Do not use (See TCETRAL)
E070Change and Transport System- Header of Requests/Tasks
E070LCTS- Index for Assigning Numbers to Requests/Tasks
INSTVERSDocumentation for installation Status and History
PAT03Patch Directory
SDBACDBA Action Table
T100Messages
TAPLTProgram Application Long Texts
TASYSOBSOLETE- Do not use, see TCEDELI
TDEVCDevelopment Classes
TEMSETemp Sequential table.
TLOCKChange and Transport System- Lock Table
TNAPRProcessing programs for output. Can be very handy to find the print program for a SAPScript.
TNASTPrinted output control table
TPFETTable of profile parameters
TPFHTProfile header, administration data for profiles in DB
TPROTTable contains all DD tables to be logged
TRBATCommunication Table for Transport Control
TRDIRTTitle texts for programs in TRDIR
TRESNTable of Naming Conventions in ABAP Workbench
TRJOBJob ID for Coordinating Batch-ABAP/UNIX for Transports
TSP03CSpool- Device Description Extension
TST03TemSe data
TSYSTOBSOLETE- Do not use (see TCESYST)
TWSYSOBSOLETE- Do not use (See TCETRAL)
USOBTRelation transaction - authorization object
USR03User address data
USR05User Master Parameter ID
USR12User master authorization values
USR40Table for illegal passwords
USR41User master- Additional data
UST04User masters
VARITVariant texts
VARIDVariant directory
D010TABTable for Use Report---Tables
DD02LSAP tables
DD02TR/3 DD- SAP table texts
DD03LTable Fields
DD03TDD- Texts for fields (language dependent)
EDIDCIDOC Control Records
EDIDOTShort description of IDoc types
EDID2IDOC segments (version 3.1)
EDID4IDOC segments (version 4.6)
EDSEAEDI- Table of all segments of current release
VRSX2Central Table for Version Management (Report Source)
TSE05Can add parameters to the INSERT COMMAND (IC). Then, when you insert command, your info appears in the editor. Useful for comment blocks, common section of code, etc.
CDPOSChange document items
CDHDRChange document header
T529Agoverns the foreground sequence of infotypes the system will use to prompt the user during online and batch processing. You will have to code your BDC to follow that sequence of creating infotypes.
T588Zgoverns the dynamic event processing that will only take place during online user inputs. For BDC's you will have to create separate BDC's to handle any infotypes that are inserted dynamically by this table.
T588MInfotype Screen Control

28 Temmuz 2008 Pazartesi

ABAP : Malzeme Olcu Donusumu

Malzemelerle uğraşırken zaman zaman ölçü dönüşümü yapmamız gerekebilir. Örneğin 1 KG kaç M2 ya da
5 Koli kaç Adet yapar gibi.
Bu çevirimleri yapmak için, MARC tablosuna gidip dönüşümlerle uğraşmak yerine;

MD_CONVERT_MATERIAL_UNIT

Fonksiyonunu kullanabiliriz.

Örnek;


DATA:
pmatnr LIKE mara-matnr,
pmein1 LIKE mara-meins,
pmein2 LIKE mara-meins,
pmeng1 LIKE ekpo-menge,
pmeng2 LIKE ekpo-menge.

CLEAR : pmatnr, pmein1, pmein2, pmeng1, pmeng2.


CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
i_matnr = pmatnr "malzeme numaramız
i_in_me = pmein1 "dönüşecek ölçü birimi
i_out_me = pmein2 "hangi ölçüye dönüşecek ?
i_menge = pmeng1 "miktar
IMPORTING
e_menge = pmeng2 "dönen miktar
EXCEPTIONS
error_in_application = 1
error = 2
OTHERS = 3.

ABAP : Dialog Ekranini Popup Olarak Cagirma

Normalde , bir dialog ekranını çağırırken basitçe call screen metodunu kullanırırız,
çağırdığımız ekran tüm ekranı kapladığı için, zaman zaman bunun olmasını istemeyiz.
İstediğimiz boyutlarda popup ekranı gibi çağırmak için sonuna starting at komutunu ekleriz. Daha sonra vereceğimiz kordinatlara göre ekran gelecektir.


call screen '0300' starting at 20 11 ending at 70 24.

21 Temmuz 2008 Pazartesi

ABAP : Text Dosyasindan ITAB'a Upload Islemi

TAB Delimeted olarak ayrılmış bir text dosyasını ITAB'a upload etme ve daha sonra yüklenen verileri ALV olarak gösterme işlemi.

REPORT ZDTS_UPLOAD .
type-pools: slis.


datA:
begin of gt_data occurs 0,
ad(10) type c,
soyad(10) type c,
end of gt_grup.




*ALV data declarations
DATA:
fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,

gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event,
gd_prntparams TYPE slis_print_alv,
is_variant LIKE disvariant.

DATA : gt_fcat TYPE slis_t_fieldcat_alv,
gf_fcat LIKE LINE OF gt_fcat.

DATA : layout TYPE slis_layout_alv .


PARAMETERS : FILEX LIKE RLGRAP-FILENAME
DEFAULT
'C:\'
OBLIGATORY.

initialization.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILEX .
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = FILEX .

start-of-selection.
perform read_data. "okuma işlemini yapalım
end-of-selection.

*&---------------------------------------------------------------------*
*& Form read_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text *----------------------------------------------------------------------*
FORM read_data .
data: yol type string. yol = filex.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = yol
FILETYPE = 'ASC'
* HAS_FIELD_SEPARATOR = ' '. "göndermediğiniz takdirde tab delimeted olarak ayarlar

TABLES
DATA_TAB = gt_data
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7 .
* <-- p2 text *----------------------------------------------------------------------* FORM write_data.
*FCAT'imizi oluşturuyoruz

PERFORM appalv USING 'AD' 'GT_DATA' 'Adı' '' 'X' ''. "ad alanını key alan yaptık
PERFORM appalv USING 'SOYAD' 'GT_DATA' 'Soyadı' '' '' ''.


layout-zebra = 'X' .


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = gt_fcat
is_layout = layout
is_variant = is_variant
i_save = 'A'
i_callback_program = sy-repid

TABLES
t_outtab = GT_DATA.

ENDFORM. " write_data

*&---------------------------------------------------------------------*
*& Form appalv
*&---------------------------------------------------------------------*
FORM appalv USING p_fn
p_tn
p_txt
p_fix
p_key
p_no_zero .
CLEAR gf_fcat.
gf_fcat-fieldname = p_fn .
gf_fcat-tabname = p_tn .
gf_fcat-seltext_m = p_txt .
gf_fcat-fix_column = p_fix .
gf_fcat-key = p_key .
gf_fcat-no_zero = p_no_zero .

APPEND gf_fcat TO gt_fcat.

ENDFORM. " appalv


*&---------------------------------------------------------------------*

18 Temmuz 2008 Cuma

ABAP : Dinamik Search Help Olusturma

1000 ekranında , "Select-options" kullanırken zaman zaman direk tablo referansı ile atadığımız "search help"ler yeterli olamayabilir ya da hiç search help olmayabilir. Bu gibi durumlarda yapmamız gereken ; dinamik bir search help oluşturmaktır. Dinamik search help oluşturmak için yapmamız gereken hangi alan için kullanılacağını seçmemiz ve ITAB'ımızı oluşturduktan sonra fonksiyonumuzu çağırmaktır.

*****

Referans ile yaptığımız "select-opitons"lar da arkasında hangi search help veya checktable varsa onun içeriğini getirir.

Örneğin,

Select-Opitons:

So_BUKRS for BSEG-BUKRS.


Tanımlamasını yaptığımızda, SO_BUKRS'nin içi BSEG-BUKRS alanının C_T001 isimli search help'i ile otomatik olarak dolmaktadır . Yukarıda ki resimde gördüğünüz gibi , hangi alan hangi search help'e veya check table'a bağlanmış görebiliriz. Her zaman search help olmayabilir =)


Örneğin ZSINIF bir tablomuz olsun ve onun OBJID alanı için search help yazalım.

Sütun isimleri de ;

NO,

AD ,

SOYAD,

..

..

..

OBJID olsun.

Gelelim dinamik search help oluşturmaya.


Report Z_DINAMIK_SEARCHELP.

*Değişkenleri tanımlıyoruz.

Data:

So_OBJ for ZINIF-OBJID.

*Internal Table tanımlaması

*Kullanıcı F4 e bastığında karşısında ne görecek buradan belirliyoruz

*Tablonu tüm sütunlarını listelemeye gerek yok o yüzden hangilerini göstereceğimizi

*seçiyoruz

Begin of gt_data occurs 0,

OBJID like ZINIF-OBJID,

NO like ZINIF-NO,

AD like ZINIF-AD,

SOYAD like ZINIF-SOYAD,

End of gt_data.

*Select-options'da hem LOW hemde HIGH için aynı işlemleri yaparız böylece Select-Options için oluşan iki kutucuğun da search help' i olmasını sağlarız.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_OBJ-LOW.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'OBJID' "seçim sonucu hangi alanı yazdıracağız, burada AD yazarsak seçili AD satırını so_obj-low alanına yazdırır.

dynpprog = sy-repid "program adı

dynpnr = '1000' "ekran numarası

dynprofield = 'SO_OBJ-LOW' "ekrandaki alan adının LOW kısmı

value_org = 'S' "iki değer almaktadır C ve S , C : cell by cell , S: structured

TABLES

value_tab = gt_data. "Doldurduğumuz tablonun adını buraya yazıyoruz

*High için

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_OBJ-HIGH.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'OBJID'

dynpprog = sy-repid

dynpnr = '1000'

dynprofield = 'SO_OBJ-HIGH'

value_org = 'S'

TABLES

value_tab = gt_data.

*Bu işlemler bittikten sonra program çalışır çalışmaz tetiklenen INITIALIZATION sekmesinde GT_DATA isimli ITAB'ımızı doldururz böylece kullanıcı F4 e bastığı anda veriler karşısına gelir.

INITIALIZATION.

Perform Generate_DATA_SearchHelp. "ITAB'ımızı dolduracak olan form

START-OF-SELECTION.

Perform …

Perform …

Perform … "buralarda kendi perform işlemlerimizi yapıyoruz SEARCH_HELP'den bağımsız olarak

END-OF-SELECTION.



*ITAB'I dolduracak olan formu yaratıyoruz

FORM Generate_DATA_SearchHelp.

Clear gt_data[]. "içini temizleyelim

*Sorgumuzu yazalım ve ITAB dolsun

Select

OBJID

NO

AD

SOYAD

From ZSINIF

into corresponding fields of table GT_DATA.

ENDFORM.

16 Temmuz 2008 Çarşamba

ABAP : Field Catalog Olusturma

ALV'mizi gösterirken, üzerinde bazı değişiklikler sütunlara özel işlemler yapmamız gerekebilir. Bu gibi durumlarda REUSE_ALV_FIELDCATALOG_MERGE fonksiyonunu kullanıp daha sonra üretilen fieldcatalog'da looplar yapıp değişiklik yapmak yerine , sıfırdan manuel olarak fieldcatalog yaratmak en temiz yöntemdir. Hem yukarıda ki fonksiyonda karşılaştığımız sorunlar ortaya çıkmayacaktır (örneğin like yerine type ile tanımladığımız sütun isimleri gibi) hem de her sütuna özel işlemi çok rahat bir biçimde yapabilme imkaanımız olacaktır.

Verileri okuyup ITAB'ımızı (internal table) doldurduğumuzu varsayıyorum.
ITAB'ımız da şöyle olsun,

data:
begin of gt_itab occurs 0,
sira type i,
ad(10) type c,
soyad(10) type c,
no(10) type c,
end of gt_itab.

*** ALV için değişkenler .
DATA : gt_fcat TYPE slis_t_fieldcat_alv,
gf_fcat LIKE LINE OF gt_fcat.
DATA : layout TYPE slis_layout_alv .
DATA : variant TYPE disvariant .
****************
start-of-selection.
perform read_data. "ITAB ımız burada doldu.
perform generate_fcat. "fieldcatalog işlemleri
perform display_alv. "ALV yi görüntüleme
end-of-selection.
****************
ITAB'ımızı veri ile doldurduktan sonra fieldcatalog yaratma kısmına geçebiliriz.

FORM GENERATE_FCAT.

PERFORM appalv USING 'SIRA' 'GT_ITAB' 'Sıra Numarası' 'X' 'X' ' '.
PERFORM appalv USING 'AD' 'GT_ITAB' 'İsim' 'X' 'X' ' '.
PERFORM appalv USING 'SOYAD' 'GT_ITAB' 'Soyisim' ' ' ' ' ' '.
PERFORM appalv USING 'NO' 'GT_ITAB' 'Numara' ' ' ' ' 'X'.

ENDFORM.

FORM appalv USING p_fn
p_tn
p_txt
p_fix
p_key
p_no_zero .
CLEAR gf_fcat.
gf_fcat-fieldname = p_fn . "ITAB da tanımladığımız sütun adı
gf_fcat-tabname = p_tn . "ITAB adı
gf_fcat-seltext_m = p_txt . "ALV de görünecek sütun başlığı
gf_fcat-fix_column = p_fix . "İşaretlendiği takdirde sütunu sabitleyecektir
gf_fcat-key = p_key . "Anahtar bir alan mı ?
gf_fcat-no_zero = p_no_zero . "Soldaki sıfırlar silinsin mi ?

APPEND gf_fcat TO gt_fcat.

ENDFORM.


Bu işlemler bittikten sonra, tek yapacağımız ALV Display fonksiyonunu çalıştırmak.
FORM DISPLAY_ALV.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
it_fieldcat = gt_fcat "oluşturduğumuz fieldcatalog
is_variant = variant "variantlar olsun mu ?
i_save = 'A' "variantlar kaydedilebilsin mi ?
i_callback_program = 'Programızın adı büyük harflerle' "program adı buraya

TABLES
t_outtab = gt_itab. "ITAB adını buraya yazıyoruz

ENDFORM.



****************************************************************
Manuel olarak yarattığımız FieldCatalog'da daha bir sürü opsiyon mevcuttur. Örneğin, istediğiniz sütunu checkbox yapabilir, istediğiniz sütunu gizleyebilir, düzenlenebilir (editable) yapabilir, renklendirebilir ve daha bir çok opsiyonla değiştirebilirsiniz. Esnek olduğu için müdahele etmek çok basittir.

Fakat REUSE_ALV_FIELDCATALOG_MERGE metodunu kullanarak oluşturduğunuz fieldcataloglarda değişiklik yapmak için epey takla atmanız gerekecektir. Yine de ihtiyacınız ve zamanınız doğrultusunda istediğinizi seçebilirsiniz =).



ABAP : Kur Donusumu

Kur dönüşümü için kullanılabilecek birden fazla fonksiyon mevcuttur, bizim kullanacağımız ise
"CONVERT_TO_LOCAL_CURRENCY" fonksiyonudur.


CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
date = '20080716' "buraya kur dönüşüm için baz alınacak tarih değişkeniniz gelecek
foreign_amount = '1000' "buraya dönüştürülecek tutar girilecek
foreign_currency = 'EUR' "hangi para biriminden dönüştürülüyor
local_currency = 'TRY' "hangi para birimine dönüştürülüyor
IMPORTING
local_amount = p_local_amount "dönüştürülen tutarı tutacak olan değişkenimiz
EXCEPTIONS
no_rate_found = 1
overflow = 2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
OTHERS = 6.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Daha önceden tanımladığımız "p_local_amount" değişkeninin 1000 EURO'nun TRY karşılığında ki değeri olduğunu fonksiyon bitiminde görürüz.
********
Sistemde EUR > TRY ve TRY > USD dönüşümü var ise ve biz 1000 EUR değerinin USD karşılığını istiyorsak, fonksiyonda ayrı ayrı önce EUR'dan TRY'ye daha sonra TRY'den de USD ye çevirmeye GEREK YOKTUR. Fonksiyon çapraz kur dönüşümünü kendisi yapacaktır.

********
Not : Eğer belirtilen tarihte bir kur girişi yapılmadı ise, sistem ona en yakın tarihi alacaktır. Eğer kur dönüşüm için hiç bir veri yoksa , fonksiyon hata verecektir.

15 Temmuz 2008 Salı

ABAP : Select-Options Secim Sinirmalamasi

Kullanıcının seçimini sınırlar.
*************************************************************************

REPORT z_sinir.

* Include
TYPE-POOLS sscr.

TABLES :
marc.

* selection-screen leri tanımlarız
select-options :
s_matnr for marc-matnr,
s_werks for marc-werks.

* Ana objelerimizi tanımlıyoruz
DATA restrict TYPE sscr_restrict.

* Sınırlandırmada kullanacağımız değişkenler
DATA : optlist TYPE sscr_opt_list,
ass type sscr_ass.

INITIALIZATION.

* MATNR nin sadece EQ ve 'BT' olarak
*seçilebilmesini sağlayalım.
optlist-name = 'OBJECTKEY1'.
optlist-options-eq = 'X'.
optlist-options-bt = 'X'.
APPEND optlist TO restrict-opt_list_tab.

ass-kind = 'S'.
ass-name = 'S_MATNR'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY1'.
APPEND ass TO restrict-ass_tab.

* WERK alanın da CP, GE, LT, NE ile sınırlayalım.
optlist-name = 'OBJECTKEY2'.
optlist-options-cp = 'X'.
optlist-options-ge = 'X'.
optlist-options-lt = 'X'.
optlist-options-ne = 'X'.
APPEND optlist TO restrict-opt_list_tab.

ass-kind = 'S'.
ass-name = 'S_WERKS'.
ass-sg_main = 'I'.
ass-sg_addy = space.
ass-op_main = 'OBJECTKEY2'.
APPEND ass TO restrict-ass_tab.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction = restrict
EXCEPTIONS
TOO_LATE = 1
REPEATED = 2
SELOPT_WITHOUT_OPTIONS = 3
SELOPT_WITHOUT_SIGNS = 4
INVALID_SIGN = 5
EMPTY_OPTION_LIST = 6
INVALID_KIND = 7
REPEATED_KIND_A = 8
OTHERS = 9
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ABAP : Select-Options Gizleme islemi

Birinci yol, 1000 ekranında daha raporumuzun içinde ki seçim durumları ekrana gelmeden çalışan "AT SELECTION-SCREEN OUTPUT" sekmesinde yapılanıdır.

**************************************************
select-options:
SO_BELNR for bkpf-belnr modif id g1.

...
...
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'G1'.
screen-active = '0'.
MODIFY SCREEN.
ENDCASE.
ENDLOOP.

**************************************************
İkinci yol ise, No-Display kullanmaktır.

SO_BELNR for bkpf-belnr no-display.

SAP : MM tablolari
















EINAPurchasing Info Record- General Data
EINEPurchasing Info Record- Purchasing Organization Data
MAKTMaterial Descriptions
MARAGeneral Material Data
MARCPlant Data for Material
MARDStorage Location Data for Material
MASTMaterial to BOM Link
MBEWMaterial Valuation
MKPFHeader- Material Document
MSEGDocument Segment- Material
MVERMaterial Consumption
MVKESales Data for materials
RKPFDocument Header- Reservation
T023Mat. groups
T024Purchasing Groups
T156Movement Type
T157HHelp Texts for Movement Types
MOFFLists what views have not been created

ABAP : Alan Donusumu

Varolan bir değişkendeki içeriğin soluna , değişkenin uzunluğunu doldurana kadar sıfır koyar.
Örneğin malzeme numarasını sorgulayacaksak ve elimizde o uzunluğa uygun bir veri yoksa , sorgulama başarısız olacaktır. Örneğin "123" ile malzeme numarası bazında sorgulama yapamayız, onu aşşağıda ki fonksiyonu kullanarak "0000000123" formatına çevirmemiz gerekir.

Aşşağıda "123" sayısının char18 tipinde tanımlanan bir değişken ile kullanılışı gösterilmektedir.

************************************************

DATA:
lv_matnr(18) type c.

lv_matnr = '123'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

input = lv_matnr

IMPORTING

output = lv_matnr.

Sonuç:

input  = 123
output = 000000000000000123
************************************************
Aynı şekilde, "000000000000000123" olarak girilmiş bir değerin solundaki
sıfırlardan kurtulmak istiyorsak; CONVERSION_EXIT_ALPHA_OUTPUT fonksiyonunu
kullanabiliriz.
 
DATA: lv_matnr(18) type c.

lv_matnr = '123'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_matnr
IMPORTING
output = lv_matnr.

Sonuç:
input = 000000000000000123
output = 123


ABAP : Secim Ekraninda DropDownList kullanimi

PROGRAM z_drop.


TYPE-POOLS: vrm.


DATA: name TYPE vrm_id, list TYPE vrm_values, value LIKE LINE OF list.


PARAMETERS: ps_parm(10) AS LISTBOX VISIBLE LENGTH 10.


AT SELECTION-SCREEN OUTPUT.

name = 'PS_PARM'.

value-key = '1'. value-text = 'Line 1'. APPEND value TO list.

value-key = '2'. value-text = 'Line 2'. APPEND value TO list.


*Key: Seçildikten sonra yakalayacağımız anahtar alan.

*Text: Seçim ekranında listbox içinde ki text değer.


CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = name values = list.


Start-Of-Selection.

...

...

End-Of-Selection.

ABAP : Semboller & Ikonlar

REPORT Z_SHOWICON.

* symbols & icons
INCLUDE: , .

* Gösterim
WRITE: / SYM_PHONE AS SYMBOL, 'Telefon',
/ SYM_FAX AS SYMBOL, 'Faks',
/ SYM_CAUTION AS SYMBOL, 'Dikkat',
/ ICON_CHECKED AS ICON, 'checked; okay',
/ ICON_DELETE AS ICON, 'delete',
/ ICON_PRINT AS ICON, 'print'.

ABAP : String islemleri

* Ayıraç olmadan birleştirme
DATA: FIRST_NAME(25), MIDDLE_NAME(2), LAST_NAME(25),
FULL_NAME(54).
FIRST_NAME = 'John'.
MIDDLE_NAME = 'F.'.
LAST_NAME = 'Kennedy'.
CONCATENATE FIRST_NAME MIDDLE_NAME LAST_NAME INTO FULL_NAME.
WRITE / FULL_NAME.

* Ayıraçlı birleştirme
DATA: DIRECTORY_1(2), DIRECTORY_2(10), FILE_NAME(10),
PATH(24).
DIRECTORY_1 = 'a:'.
DIRECTORY_2 = 'usr'.
FILE_NAME = 'programs'.
CONCATENATE DIRECTORY_1 DIRECTORY_2 FILE_NAME
INTO PATH
SEPARATED BY '\'.
WRITE / PATH.

* Split işlemi
DATA: LIST(40),
NAME_1(25), NAME_2(25), NAME_3(25).
LIST = 'Edison,Smith,Young'.
SPLIT LIST AT ',' INTO NAME_1 NAME_2 NAME_3.
WRITE: / NAME_1, NAME_2, NAME_3.

*Stringleri split ederek bir internal tabloya atma
DATA NAMES LIKE NAME_1 OCCURS 10 WITH HEADER LINE.
LIST = 'Edison,Smith,Young,Edwards'.
SPLIT LIST AT ',' INTO TABLE NAMES.
LOOP AT NAMES.
WRITE / NAMES.
ENDLOOP.

*Stringlerde shift işlemleri
NAME_1 = 'Edison'.
NAME_2 = 'Smith'.
NAME_3 = 'Young'.
SHIFT NAME_1.
SHIFT NAME_2 BY 3 PLACES.
SHIFT NAME_3 RIGHT.
WRITE: / NAME_1, NAME_2, NAME_3.

*Shift Up To kullanımı
NAMES = 'Alexander Bill Charles'.
SHIFT NAMES UP TO 'Bill'.
WRITE / NAMES.

*Boşlukları silerek shift işlemi
NAMES = 'Joanne___'.
SHIFT NAMES RIGHT DELETING TRAILING SPACE.
WRITE / NAMES.

* Replacing & translating .
DATA: STRING(80),
EXPRESSION(30).
STRING = 'Variable: &. The variable & is substituted later.'.
REPLACE '&' WITH 'X' INTO STRING.
WRITE / STRING.
TRANSLATE STRING USING '&X'.
WRITE / STRING.
EXPRESSION = 'a ** 2 + b ** 2 = c ** 2'.
TRANSLATE EXPRESSION USING 'axbycz'.
WRITE / EXPRESSION.




REPLACE ',' WITH '' INTO lv_degisken.

REPLACE ALL OCCURRENCES OF ',' IN lv_degisken WITH ''.

*ITAB da aradığımız string var mı ?
DATA TEXT(100) VALUE 'Texas California New Mexico Louisiana Oregon'.
SEARCH TEXT FOR 'California'.
IF SY-SUBRC NE 0. WRITE 'Not found'. ENDIF.
SEARCH TEXT FOR 'cAliforniA'.
IF SY-SUBRC NE 0. WRITE 'Not found'. ENDIF.
SEARCH TEXT FOR 'New M'.
IF SY-SUBRC NE 0. WRITE 'Not found'. ENDIF.

*Fieldların belli parçalarını alma
DATA: S(8) VALUE 'ABCDEFGH',
T(8) VALUE '12345678',
OFF1 TYPE I, OFF2 TYPE I,
LEN1 TYPE I, LEN2 TYPE I.

OFF1 = 2.
LEN1 = 3.
OFF2 = 4.
LEN2 = 3.
MOVE S+OFF1(LEN1) TO T+OFF2(LEN2).
WRITE / T.

ABAP : Progress Bar yapimi

*İşlemin ne kadarının tamamlandığını ve ne kadarının kaldığını gösterir
REPORT  Z_Progress.

TYPES: BEGIN OF t_mara,
matnr LIKE mara-matnr,
END OF t_mara.
DATA: it_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
wa_mara TYPE t_mara.
DATA: mara_lines TYPE i,
gd_percent TYPE i.
 START-OF-SELECTION.

SELECT matnr
INTO TABLE it_mara
FROM mara.

CHECK sy-subrc EQ 0.
mara_lines = sy-dbcnt.
clear: gd_percent.

LOOP AT it_mara INTO wa_mara.
PERFORM progress_bar USING 'Veriler alınıyor...'(001)
sy-tabix
mara_lines.

ENDLOOP.
 
FORM progress_bar USING    p_value
p_tabix
p_nlines.

DATA: w_text(40),
w_percentage TYPE p,
w_percent_char(3).

w_percentage = ( p_tabix / p_nlines ) * 100.
w_percent_char = w_percentage.
SHIFT w_percent_char LEFT DELETING LEADING ' '.
CONCATENATE p_value w_percent_char '% Tamamlandı'(002) INTO w_text.

*bu kontrolü büyük verilerde loop yaptığımızda tekrar
*tekrar görünmesini engellemek için yapıyoruz

if w_percentage gt gd_percent or p_tabix eq 1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = w_percentage
text = w_text.
gd_percent = w_percentage.
endif.
endform. " PROGRESS_BAR


WRITE: /20 'Bitti" OK'.

SAP : SD Tablolari













































KONVConditions for Transaction Data
KONPConditions for Items
LIKPDelivery Header Data
LIPSDelivery: Item data
VBAKSales Document: Header Data
VBAPSales Document: Item Data
VBBESales Requirements: Individual Records
VBEHSchedule line history
VBEPSales Document: Schedule Line Data
VBFASales Document Flow
VBLBSales document: Release order data
VBLKSD Document: Delivery Note Header
VBPASales Document: Partner
VBRKBilling: Header Data
VBRPBilling: Item Data
VBUKSales Document: Header Status and Administrative Data
VBUPSales Document: Item Status
VEKPHandling Unit - Header Table
VEPOPacking: Handling Unit Item (Contents)
VEPVGDelivery Due Index


SAP : FI Tablolari




AGKOCleared Accounts
ANARAsset Types
ANATAsset type text
ANEKDocument Header Asset Posting
ANEPAsset Line Items
ANEVAsset downpymt settlement
ANKTAsset classes- Description
ANLAAsset Master Record Segment
ANLBDepreciation terms
ANLCAsset Value Fields
ANLHMain asset number
AT02TTransaction Activity Category- Description
AT02ATransaction Code for Menu TIMN
AT10Transaction type
AT10TName of Transaction Type
BKDFDocument Header Supplement for Recurring Entry
BKORMAccounting Correspondence Requests
BKPFAccounting Document Header
BLPKDocument log header
BLPPDocument log item
BLPRDocument Log Index and Planned Order (Backflush)
BNKABank master record
BP000Business Partner Master (General Data)
BPBKDoc.Header Controlling Obj.
BPEGLine Item Total Values Controlling Obj.
BPEJLine Item Annual Values Controlling Obj.
BPEPLine Item Period Values Controlling Obj.
BPGETotals Record for Total Value Controlling obj.
BPJATotals Record for Annual Total Controlling Obj.
BSADAccounting- Secondary Index for Customers (Cleared Items)
BSAKAccounting- Secondary Index for Vendors (Cleared Items)
BSASAccounting- Secondary Index for G/L Accounts (Cleared Items)
BSECOne-Time Account Data Document Segment
BSEGAccounting Document Segment
BSIDAccounting- Secondary Index for Customers
BSIKAccounting- Secondary Index for Vendors
BSIMSecondary Index, Documents for Material
BSISAccounting- Secondary Index for G/L Accounts
CEPCProfit Center Master Data Table
CEPCTTexts for Profit Center Master Data
COBRASettlement Rule for Order Settlement
COBRBDistribution Rules Settlement Rule Order Settlement
COKACO Object- Control Data for Cost Elements
COSPCO Object- Cost Totals for External Postings
COSSCO Object- Cost Totals for Internal Postings
CRCOAssignment of Work Center to Cost Center
CSKACost Elements (Data Dependent on Chart of Accounts)
CSKBCost Elements (Data Dependent on Controlling Area)
CSLAActivity master
FEBEPElectronic Bank Statement Line Items
FPLABilling Plan
FPLTBilling Plan- Dates
GLPCTEC-PCA- Totals Table
KNA1General Data in Customer Master
KOMKPricing Communication Header
MAHNVManagement Records for the Dunning Program
REGUTTemSe - Administration Data
SKA1G/L Account Master (Chart of Accounts)
SKATG/L Account Master Record (Chart of Accounts- Description)
SKB1G/L account master (company code)
T003TDocument Type Texts
T007STax Code Names
T087JText
TAPRFTText tab. for investment profile
TKA01Controlling Areas
TKA09Basic Settings for Versions
TKVSCO Versions
TZB0TFlow types text table
TZPATFinancial Assets Management product type texts
VBSEGSDocument Segment for G/L Accounts Document Parking
VTBFHATransaction
VTBFHAPOTransaction Flow
VTBFHAZUTransaction Activity
VTBFINKOTransaction Condition
VTIDERIMaster Data Listed Options and Futures
VTIFHAUnderlying transaction
VTIFHAPOUnderlying transaction flows
VTIFHAZUUnderlying transaction status table
VTIOFOptions Additional Data
VWPANLAAsset master for securities