30 Eylül 2013 Pazartesi

Examples of Loops

DO TIMES.
  WRITE sy-index.
    
  DO TIMES.
    WRITE sy-index.
  ENDDO.
   SKIP.
ENDDO.

ÇIKTI:  
 1    1    2
 2    1    2
 3    1    2              

 
 
DO - CONTINUE:
 

DO TIMES.
DO TIMES.
IF sy-index = 3.
    CONTINUE.
  ENDIF.
    WRITE sy-index.
ENDDO.
SKIP.
ENDDO.
 
ÇIKTI:  
1 2 4 
1 2 4
1 2 4
1 2 4
1 2 4
 
DO-CHECK :
 
DO 4 TIMES.
  CHECK sy-index BETWEEN 2 and 3.
  WRITE sy-index.

ENDDO.

ÇIKTI:
 2 3
 
DO- EXIT: 
DO 4 TIMES.
  IF sy-index = 3.
    EXIT.
  ENDIF.
  WRITE sy-index.
ENDDO.
ÇIKTI: 
 1 2

Terminating Loops ( STOP- REJECT- CONTINUE- EXIT)

ABAP döngülerden istendiği zaman çıkılması için kullanılan komutlara da sahiptir.
Bunlar 2 kategoriye ayrılır;
-Birisi sadece döngüler için, CONTINUE, CHECK, EXIT.
-Diğeri döngünün içindeki blok için kullanılanlar. STOP, REJECT.
- Birincisi sadece döngünün çalışmasına son verirken (DO, SHILE, LOOP, SELECT),
- İkincisi bütün işleyen bloğu durdurur ( subroutine, modüle, event block, gibi)

Unconditional Loops ( DO --- ENDDO )


Koşulsuz olarak birden fazla döngü yaratmak istediğinizde DO  komutu kullanabilirsiniz.

DO [  TIMES] [VARYING <;f>  FROM >   NEXT  ].

ENDDO.


Eğer herhangi bir koşul belirtmezseniz, blok içi EXIT veya STOP komutlarını görene kadar tekrar tekrar koşacaktır. SY-INDEX döngü sayısını döndürecektir (en son döngü dahil).

 sayısını TIMES ile kullandığınızda döngüyü belli bir sayı ile kısıtlamış olursunuz. Eğer  değerini 0 veya negatif bir sayı kullanırsanız döngü hiç çalışmaz. Eğer TIMES kullanmazsanız, döngünün içinde EXIT veya STOP olduğundan emin olmanız gerekir. Aksi takdirde sonsuz döngüye girebilirsiniz.

Her bir döngüde değişik değer kullanmak için VARYING ile kullanabilirsiniz. VARYING ve 
<;f1>  ve <;f2>   aralığı vererek değişken değerini birden fazlaya çıkarabilirsiniz.
 
 
 
 
 
 
 
 
 
 


Conditional Loops ( WHILE ----- ENDWHILE)


Geçerli koşul doğru olduğu sürece statement bloğunu tekrar eder:

WHILE  KOSUL  (VARY   FROM   NEXT )

ENDWHILE.

   herhangi bir mantıksal koşul olabilir. Mantıksal koşul doğru olduğu sürece veya EXIT / STOP görünceye kadar döngü devam eder.
SY-INDEX döngü sayısını muhafaza eder.


VARY ile değişik değerlerle koşulun çalışması sağlanabilir.  <f1> ve <f1> ile  değerine alt sınır ve üst sınır getirilebilir.

23 Eylül 2013 Pazartesi

Example for COLLECT statement


DATA: BEGIN OF seats,
        carrid   TYPE sflight-carrid,
        connid   TYPE sflight-connid,
        seatsocc TYPE sflight-seatsocc,
       END OF seats.

DATA seats_tab LIKE HASHED TABLE OF seats
                WITH UNIQUE KEY carrid connid.

SELECT carrid connid seatsocc
       FROM sflight
       INTO seats.
  COLLECT seats INTO seats_tab.
ENDSELECT.

LOOP AT seats_tab INTO SEATS.
  WRITE: / 'CARRID:', SEATS-carrid, 'CONNID: ', SEATS-Connid , 'SEATSOCC: ', SEATS-seatsocc.
ENDLOOP.

21 Eylül 2013 Cumartesi

SQL Run Screen

SQL komutlarını çalıştırmak için DBACOCKPIT transaction ı kullanabilirsiniz.
Sonra  Performance -> additional Functions -> SQL Command Editor seçilirse aşağıdaki gibi SQL komutlarını yazabileceğiniz ekran ortaya çıkar, burdan sonrası Run (F8) e bakar :)

19 Eylül 2013 Perşembe

Collect Statement in SAP ABAP

COLLECT komutu internal tablosuna veri ile doldururken kullanılır. Ancak uniq olanların dışındakiler toplanarak yazılır.

COLLECT  working_area_table INTO internal_area_table.
Çalışma ortamından internal tablosuna eğer belirtilen anahtara ait bir kayıt yoksa
veri  tablonun sonuna boş bir alan eklenerek yazılır. Eğer aynı anahtar alanına ait bir kayıt varsa, internal tablosundaki bu kayıttaki veri çalışma alanındaki veri ile toplanarak yazılır.

COLLECT sadece uniq değerli internal tablolar yaratacaksanız kullanılmalıdır. Ancak bu durumda COLLECT ten performans sağlarsınız.

COLLECT komutu standart tablolar için uygun değildir. Sadece sıralanmış ve hashed tablolar ile problemsiz çalışır, çünkü standart tabloların aksine, ancak bu tür tablolarda değişmeyen ayrı bir anahtar ile işlem yapılabilir.  Hashed tablolar için, bütün istenen alanlar otomatik olarak doldurulur.

Eğer ısrarla standart tabloda COLLECT kullanılacaksa, sadece MODIFY komutu ile birlikte kullanılabilir. Ancak COLLECT komutunu TRANSPORTING ile kullanılacaksa, primary key alanının değişmediğinden emin olmanız gerekir. Aksi halde COLLECT komutu doğru sonuç vermez.

Bir standart tablonun COLLECT kullanımı için uygun olup olmadığını gösteren modül ABL_TABLE_HASH_STATE dir. 


18 Eylül 2013 Çarşamba

List of Transaction Code of SAP

Bütün Transaction Codlerını listelemek için
/SE93 transaction kodunu kullanabilirsiniz.


Sonra gelen ekranda istediğinizi baş kısmını yazıp "*" (yıldız) koyup  F4 e basarak  (SE*) listenin görüntülenmesini sağlayabilirsiniz.



3 Eylül 2013 Salı

LSM, BAPI, IDOC, Transferring data from non-SAP systems to SAP systems

LSM aracı, bir R/3 temelli destekleyici modüldür.  Bir kereliğine veya periyordik olarak SAP olmayan ssistemlerden SAP sistemine veri transfer etmenize yardımcı olur. Bu aktarma işlemi, batch giriş, veya direkt olarak  BAPIs (Business Application Programming Interfaces), IDOCs (Intermediate Documents) kullanarak olur.



Transfer şu adımlardan geçer:
 1.   Veri alınır. (Özel bir elektronik tabloya veya ardışıl bir tabloya)
2.     Veri çevrilir (kaynak formattan hedef formatına)
3.     Veri R/3'e  alınır (SAP uygulamasının veritabanına)
LSM Toolunu kullanmadan önce transfer edilecek verinin uygun hale getirilmesi gerekir. Aşağıdaki adımlara özellikle dikkat edilmelidir.
 ·         SAP uyarlamasının bittiğinden emin olunmalıdır. 
·         Sizin sisteminizdeki verilerin ve gelecekteki verilerin hangileri olacağı hususları dikkatlice belirlenmelidir. 
·         Karar verilmelidir. Transfer edilecek verinin miktarının mantıklı olup olmadığına önceden karar verilmelidir. Belki daha küçük bir verinin SAP sistemine elle yapılması daha mantıklı olabilir. Çünkü çok büyük verinin batch  veya IDOC ile transfer edilmesi uzun süren çalışma zamanına neden olabilir. Ve bu zaman dilimi kullanılan donanıma bağlı olarak uzayabilir.
·         Kendi sistemimizden SAP sistemine  veri aktarımını sağlayacak transactionlar tanımlanmalıdır. 
·         RÖnce siwstemden test datayı elle SAP sistemine transaction ları koşturarak transfer ediniz, böylece hangi alanların dolduğunu görebilirsiniz. Belki bazı veri alanlarına fazladan ihtiyacınız olacaktır. Bu durumlara karşılık sabit değerli optional alanlar yaratmanız uygun olacaktır.
·         Alanların haritasının önceden çıkarılması ve kaynak alanlarla hedef alanların eşleştirilmelidir.
·         SAP olmayan sistemdeki verinin transferi için form tanımlanmalıdır. ( "move" veya uygun bir kuralla).
·         Eğer uygulanabilir ise, aktarma kuralları tanımlanır.  (LSMW-internal name: "translation").
Ayrıca aşağıdaki sorular transfer olmadan önce cevaplanmalıdır ancak hepsi herbir müşteriye göre farklı cevaplar içerir;
·         SAP olmayan sistemden veriler hangi yöntemle aktarılmalıdır.
·         Hangi çeşit eski veri mevcuttur? Hangi LSMW fonksiyonlarının uygulanacağı önceden tanımlanmaldır. 

ASIL İŞİN NASIL YAPILDIĞINI YARIN ANLATIRIM ARTIK
http://neslishh.blogspot.com/2013/12/idoc-nedir.html

Tabloların ilişkilerini görmek istiyorsanız

Eğer Tabloların ilişkilerini görmek istiyorsanız:

Önce se11 ile tablo görüntülenir, sonra Ctrl-Shift-F11 tıklanır.
Böylece grafic view çalışarak üzerindeki tablonun ilişkilerini grafiksel olarak görüntüler.
Burada, VBAK tablosu seçildi, tabi bu tablo bir sürü daha tabloyla ilişkili olduğu için önce görüntülemek istediğimiz diğer tabloları seçmemizi isteyen aşağıdaki ekran gelir.

Ben ilk 6 tabloyu seçtim. Böylece sadece bu 6 tablo ile VBAK tablosu arasındaki ilişkiler ve anahtar adları aşağıdaki gibi grafiksel olarak görüntülenir.



Ayrıca; se11 altından dosyayı çağırdığınızda gelen ekrandaki tablardan Help/Check tabı tablonun hangi tablolarla hangi anahtarlar aracılığı ile ilişkili olduğunu gösterir.


1 Eylül 2013 Pazar

Page Görüntüleme (NO-TOPOFPAGE)


NO-TOPOFPAGE
Daha önceki yazıda değimiz şey TOP-OF-PAGE her listenin başında görünürdü. Ama NEW-PAGE yaratılıtken  NO-TOPOFPAGE kullanılmış, bu da demekki yeni yaratılacak sayfalarda istemiyoruz, bir kereliğine ilk yaratılan sayfada gelecek, gelecek sayfalarda yenilenmeyecek.


ÖRNEK:

START-OF-SELECTION.
  ULINE.
  NEW-PAGE NO-TOPOFPAGE LINE-COUNT 5.
  DO 2TIMES.
    WRITE / SY-INDEX.
  ENDDO.

TOP-OF-PAGE.
  WRITE 'Sadece bir kere görünecek top of page'.

Top of Page & End of Page Example

Sayfa sayfa bir liste getirmek istiyorsanız, ve listelerin başına ve sonuna header koymak istiyorsanız;
Önce herbir listenin kaplayacağı alan için bir yer ayırmanız gerekir. Buradaki örnekte 5 satır ayrılmış, buna Initialization, Page header ve Page foother da dahil.


*------------------------------------------------
REPORT  ZTRAIN_NES1 NO STANDARD PAGE HEADING LINE-COUNT 5(1).

TABLES: VBAK,
        VBAP.

DATA: BEGIN OF IT_VBAK OCCURS 10,
      VBELN LIKE VBAK-VBELN,
    END OF IT_VBAK.


INITIALIZATION.
  WRITE :/ 'THIS IS INITIALIZATION'.

TOP-OF-PAGE.
  WRITE:/ 'THIS IS TOP OF PAGE'.

  END-OF-PAGE .
  WRITE:/ 'THS IS THE END OF PAGE'.

START-OF-SELECTION.
   SELECT
      VBELN
      FROM VBAK  INTO TABLE IT_VBAK
      IF SY-SUBRC <> .
      WRITE: 'NO DATA FOUND'.
      ELSE .
        LOOP AT IT_VBAK.
          WRITE :/ IT_VBAK-VBELN.
        ENDLOOP.
      ENDIF.
 END-OF-SELECTION.

Basit ABAP Program

*  ZWIZCORE_TRN tablo olarak tanımlandı.
* Alanları : ZSTUDENT_ID,
  *               ZSTUDENT_NAME
    *             ZCOURSE_ID,
      *          ZCOURSE_NAME

REPORT  ZREPORT_NES.
TABLES: ZWIZCORE_TRN.

DATA: ZSTUDENT_ID TYPE INT1 . *

SELECT-OPTIONS VR_ST_ID FOR ZSTUDENT_ID .

PARAMETERS:   ST_ID TYPE ZWIZCORE_TRN-ZSTUDENT_ID,
                              ST_NAME TYPE ZWIZCORE_TRN-ZSTUDENT_NAME.

DATA: WA_SCARR_1 TYPE ZWIZCORE_TRN,
              IT_SCARR_1 TYPE STANDARD TABLE OF ZWIZCORE_TRN  WITH HEADER LINE.

WRITE 'STARTING SELECTION :'.
CLEAR IT_SCARR_1.
  SELECT  * FROM ZWIZCORE_TRN INTO  TABLE IT_SCARR_1.

*  COLLECT WA_SCARR_1 INTO IT_SCARR_1.
LOOP AT IT_SCARR_1 .
WRITE:/ IT_SCARR_1-ZSTUDENT_ID, IT_SCARR_1-ZSTUDENT_NAME , IT_SCARR_1-ZCOURSE_ID.
ENDLOOP.

* ENDSELECT.

SAP Modülleri


SAP sistemi almanların geliştirmiş olduğu geniş kapsamlı bir muhasebe programıdır, başka bir değişle  ERP yazılımıdır. Kurumsal firmalara hitap eden A.Ş ve Holding bünyelerine sahip büyük şirketlerin senkronize kullanabileceği bir Modüller bütünüdür.

Başlıca SAP Modülleri :

1- SAP FI Module  FI  -  Financial Accounting

2- SAP CO Module  CO  - Controlling

3-  SAP PS Module   PS  - Project Systems

4- SAP HR Module – HR  - Human Resources

5- SAP PM Module   PM - Plant Maintenance

6- SAP MM Module– MM - Materials Management

7 - SAP QM Module   QM - Quality Management

8 – SAP PP Module  PP - Production Planning

9-  SAP SD Module  SD - Sales and Distribution

10. SAP BW Module – BW - Business (Data) Warehouse

11. SAP  EC Module – EC - Enterprise Controlling

12. SAP TR Module – TR -  Treasury

13.  SAP    IM Module IM - Investment Management

14. SAP   QM Module – QM - Quality Management

16. SAP – IS  - IS  Industries specific solution