ABAP / DEMO

Abap kullanıcı işlemleri için örnek bir senaryo üzerinden demo program yaparak daha önceki yazılarımda bulunan bilgilerden karma bir sonuç elde etmeye çalıştım.

Senaryo şudur ki; malzeme listesinin ve bilgilerinin yer aldığı MARA – MARD – MAKT tablolarını kullanarak ekranda listeleyeceğimiz malzeme listesinden seçilen bir malzemeye ait olan detaylı bilgileri ayrı bir ekranda alv grid üzerinden gösterme işlemini sağlıyor olacağız.

Kullanıcıdan alacağımız 2 adet parametreye göre yukarıda belirttiğim tablolarda yer alan bilgileri eşleştirerek öncelikle dönen malzemeleri ekrana liste şeklinde yazdıracağız. Daha sonra bu listeden istediğimiz bir malzemeye tıklayarak o malzemeye ait bazı detay bilgilerini alv grid üzerinde ekrana yansıtacağız.

Programlamaya başlarken ilk olarak yapmamız gereken ihtiyacımız olan internal tablolar ve gerekli değişken tiplerinin belirlenmesi.

TYPES : BEGIN OF STR_MARA,
          MATNR LIKE MARA-MATNR,
          ERSDA LIKE MARA-ERSDA,
          ERNAM LIKE MARA-ERNAM,
          LAEDA LIKE MARA-LAEDA,
          MTART LIKE MARA-MTART,
          MATKL LIKE MARA-MATKL,
          MEINS LIKE MARA-MEINS,
        END OF STR_MARA.
DATA : WA_MARA TYPE STR_MARA,
       IT_MARA TYPE TABLE OF STR_MARA.

TYPES : BEGIN OF IT_TY_FINAL,
          MATNR LIKE MARA-MATNR,
          ERSDA LIKE MARA-ERSDA,
          ERNAM LIKE MARA-ERNAM,
          LAEDA LIKE MARA-LAEDA,
          MTART LIKE MARA-MTART,
          MATKL LIKE MARA-MATKL,
          MEINS LIKE MARA-MEINS,
          LGORT LIKE MARD-LGORT,
          WERKS LIKE MARD-WERKS,
        END OF IT_TY_FINAL.

DATA : IT_FINAL TYPE TABLE OF IT_TY_FINAL.
DATA: WA_FINAL  TYPE IT_TY_FINAL.


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.

PARAMETERS : PLANT TYPE MARD-WERKS,
             STOR  LIKE MARD-LGORT.
INITIALIZATION.

START-OF-SELECTION.
  PERFORM APPEND_IT_FINAL.
  IF IT_FINAL IS NOT INITIAL.
    PERFORM BUILD_FIELD_CATALOG.
    PERFORM BUILD_LAYOUT.
    PERFORM DISPLAY_ALV_REPORT.
  ENDIF.

Tanımlamaları yaptıktan sonra select ile sorgularımızı yapıp belirlenen kriterlere göre tablolardan verileri çekerek internal tablolara doldurabiliriz.

MARA-MAKT-MARD tabloları arasında MATNR key alanı ile yapacağımız select join işlemi ile IT_MARA tablosunu dolduruyoruz. IT_MARA tablosundaki eşlenik alanları daha sonrasında ekrana yansıtacağımız IT_FINAL tablosuna eşitleyerek alv raporumuzu ekrana yansıtıyoruz. PERFORM append_it_final işlemi içerisinde listeden seçtiğimiz malzemenin matnr değerine sahip olan malzemenin it_mara tablosundaki detay verilerini it_final tablosuna yazdırıyoruz.

FORM DISPLAY_ALV_REPORT .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      IS_LAYOUT                = GD_LAYOUT
      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
      IT_FIELDCAT              = FIELDCATALOG[]
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
      I_SAVE                   = 'X'
    TABLES
      T_OUTTAB                 = IT_FINAL
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.
  IF SY-SUBRC <> 0.
  ENDIF.
ENDFORM.

FORM BUILD_LAYOUT.
  GD_LAYOUT-ZEBRA             = 'X'.
  GD_LAYOUT-NO_INPUT          = 'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GD_LAYOUT-TOTALS_TEXT       = 'Totals'(201).
ENDFORM.                    " BUILD_LAYOUT

FORM BUILD_FIELD_CATALOG .

  FIELDCATALOG-FIELDNAME   = 'MATNR'.
  FIELDCATALOG-SELTEXT_M   = 'Malzeme No'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.
  FIELDCATALOG-FIELDNAME = 'ERSDA'.
  FIELDCATALOG-SELTEXT_M   = 'Yaratma Tarihi'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

  FIELDCATALOG-FIELDNAME = 'ERNAM'.
  FIELDCATALOG-SELTEXT_M   = 'Yaratan Kişi'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

  FIELDCATALOG-FIELDNAME = 'LAEDA'.
  FIELDCATALOG-SELTEXT_M   = 'Son Değişiklik'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.


  FIELDCATALOG-FIELDNAME = 'MTART'.
  FIELDCATALOG-SELTEXT_M   = 'Malzeme Türü'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

  FIELDCATALOG-FIELDNAME = 'MATKL'.
  FIELDCATALOG-SELTEXT_M   = 'Mal Grubu'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

  FIELDCATALOG-FIELDNAME = 'LGORT'.
  FIELDCATALOG-SELTEXT_M   = 'Depo Yeri'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

  FIELDCATALOG-FIELDNAME = 'WERKS'.
  FIELDCATALOG-SELTEXT_M   = 'Üretim Yeri'.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR FIELDCATALOG.

ENDFORM.                    " BUILD_FIELD_CATALOG
*&---------------------------------------------------------------------*
FORM APPEND_IT_FINAL .


  SELECT MARA~MATNR
  INTO CORRESPONDING FIELDS OF TABLE IT_MARA
  FROM MARA INNER JOIN MAKT ON ( MARA~MATNR = MAKT~MATNR )
            INNER JOIN MARD ON ( MAKT~MATNR = MARD~MATNR )
  WHERE MARD~LGORT = STOR AND MARD~WERKS = PLANT  .


  LOOP AT IT_MARA INTO WA_MARA.
    WA_FINAL-MATNR = WA_MARA-MATNR.
    WA_FINAL-ERSDA = WA_MARA-ERSDA.
    WA_FINAL-ERNAM = WA_MARA-ERNAM.
    WA_FINAL-LAEDA = WA_MARA-LAEDA.
    WA_FINAL-MTART = WA_MARA-MTART.
    WA_FINAL-MATKL = WA_MARA-MATKL.
    WA_FINAL-LGORT = STOR.
    WA_FINAL-WERKS = PLANT.
    APPEND  WA_FINAL TO  IT_FINAL.
  ENDLOOP.
ENDFORM.                    " APPEND_IT_FINAL
*&---------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
  SET PF-STATUS 'STANDARTD'.
ENDMODULE.

MODULE USER_COMMAND_9001 INPUT.
  IF SY-UCOMM = 'BACK'.
    LEAVE PROGRAM.
  ELSEIF SY-UCOMM = 'OUT'.

    LEAVE PROGRAM.
  ENDIF.
ENDMODULE.

Sonuç olarak işlemleri tamamladığımızda ekran görüntüleri aşağıdaki şekilde olacaktır.

1

2.PNG

3.PNG

4.PNG


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s