Dynamic Comparison of Table Fields With ABAP

Dynamic Comparison of Table Fields With ABAP

ABAP ile tablo alanlarının dinamik olarak karşılaştırılmasını örnek üzerinden bahsediyor olacağım. Diyelim daha önceden oluşturulmuş müşterinin ana verisinde değişiklik yapıldığında bunu takip edip kontrol etmek istiyorsunuz. Alanların karşılaştırılmasını elimizdeki dahili bakım tablosundan veya DD03L tablosundan alanları çekerek kontrol edebiliriz.

Dynamic Comparison of Table Fields With ABAP
Dynamic Comparison of Table Fields With ABAP

  1. Karşılaştırmak istediğimiz alan adlarını internal table içerisine alıyoruz.

    DATA: LT_FIELD TYPE TABLE OF DD03L-FIELDNAME.

  2. Elimizdeki alan adları ile döngüye giriyoruz.

  3. Önceki değeri alan yapısı ile field symbole atıyoruz.

  4. Yeni değeri de alan yapısı ile field symbole atıyoruz.

  5. Daha sonra koşullu karşılaştırmasını yapıyoruz.

DATA: LV_CHANGE TYPE XFELD.
FIELD-SYMBOLS: <I_FIELD> TYPE ANY, <L_FIELD> TYPE ANY.

SELECT FIELDNAME FROM DD03L
  INTO TABLE @DATA(LT_FIELD)
    WHERE TABNAME EQ 'KNA1'.

"I_KNA1 yeni değerlerin olduğu yapı.
SELECT SINGLE * FROM KNA1 INTO @DATA(LS_KNA1) WHERE KUNNR EQ @I_KNA1-KUNNR.
"LS_KNA1'e ise önceki değerleri atıyoruz.

LOOP AT LT_FIELD ASSIGNING FIELD-SYMBOL(<FS_FIELD>).
  ASSIGN COMPONENT <FS_FIELD>-FIELDNAME OF STRUCTURE I_KNA1 TO <I_FIELD>.
  CHECK SY-SUBRC EQ 0.
  ASSIGN COMPONENT <FS_FIELD>-FIELDNAME OF STRUCTURE LS_KNA1 TO <L_FIELD>.
  CHECK SY-SUBRC EQ 0.
"<I_FIELD> ve <L_FIELD> alanlarını karşılaştırıyoruz. Değerler farklı ise değişkene X atıyoruz.
"Yapmak istediğiniz adımları koşulun altında sıralayabilirsiniz.
  IF <I_FIELD> NE <L_FIELD>.
    LV_CHANGE = 'X'.
    EXIT.
  ENDIF.
ENDLOOP.

Diğer ABAP yazılarını incelemek için tıklayınız.

Emrullah Demirhan

Emrullah Demirhan

SAP ERP yazılımı ve ABAP programlama dili uzmanıyım. Ayrıca Python programlama dili ve veri bilimi ile de ilgilenmekteyim. Yeni teknolojiler öğrenmeyi, öğrendiklerimi uygulayarak sonuçlarını paylaşmayı ve öğretmeyi seviyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Son Yazılar

Popüler Yazılar

Tavsiye Edilen Yazılar

Sitemizde en iyi deneyimi yaşamanızı sağlamak için çerezler kullanmaktadır.