Perşembe , 14 Aralık 2017

SD satış siparişi değiştirme kod örneği

Home Forumlar SAP ABAP Forum ABAP Genel SD satış siparişi değiştirme kod örneği

Bu konu 0 yanıt ve 1 izleyen içeriyor ve en son  Sinan Dilaver tarafından 2 yıl 4 ay önce tarihinde güncellendi.

1 yazı görüntüleniyor (toplam 1)
  • Yazar
    Yazılar
  • #4215

    Sinan Dilaver
    Yönetici

    *———————————————————————-*
    * CRM SİPARİŞLERİNDEKİ MİKTAR DEĞİŞİKLİKLERİ RAPORU
    *———————————————————————-*
    * Bu siparişler üzerinde yapılan miktar değişikliklerini listeler.
    *———————————————————————-*
    REPORT zsd_r_siparis_degisikligi .

    *— DICTIONARY STRUCTURES
    TABLES:
    vbak, “SD siparişi
    vbap, “SD siparişinin kalemleri
    cdhdr, “Değişiklik belgesi
    cdpos. “Değişiklik satırları

    *— VARIABLES
    DATA:
    BEGIN OF itab OCCURS 0,
    vkorg LIKE vbak-vkorg, “Satış organizasyonu
    vtweg LIKE vbak-vtweg, “Dağıtım kanalı
    spart LIKE vbak-spart, “Bölüm
    vkgrp LIKE vbak-vkgrp, “Satış grubu
    vkbur LIKE vbak-vkbur, “Satış bürosu
    auart LIKE vbak-auart, “Belge türü
    vbeln LIKE vbak-vbeln, “Belge numarası
    posnr LIKE vbap-posnr, “Belge kalemi
    icon(4), “Değişiklik tipi
    uname LIKE cdhdr-username, “Değiştiren
    matnr LIKE vbap-matnr, “Malzeme
    maktx LIKE makt-maktx, “Malzeme tanımı
    meng1 LIKE vbap-kwmeng, “İlk miktar
    vrkm1 LIKE vbap-vrkme, “ÖB
    meng2 LIKE vbap-kwmeng, “Son miktar
    vrkm2 LIKE vbap-vrkme, “ÖB
    udate LIKE cdhdr-udate, “Değişiklik tarihi
    erdat LIKE vbak-erdat, “Yaratma tarihi
    vdatu LIKE vbak-vdatu, “İstenen teslimat tarihi
    END OF itab.

    * Değişiklik detayları
    DATA:
    BEGIN OF icdpos OCCURS 0,
    tabname LIKE cdpos-tabname, “Tablo
    fname LIKE cdpos-fname, “Alan adı
    tabkey LIKE cdpos-tabkey, “Tablo anahtarı
    chngind LIKE cdpos-chngind, “Değişiklik türü
    changenr LIKE cdpos-changenr, “Değişiklik numarası
    udate LIKE cdhdr-udate, “Değişiklik tarihi
    uname LIKE cdhdr-username, “Değiştiren kullanıcı
    unit_old LIKE cdpos-unit_old, “Eski değer
    value_old LIKE cdpos-value_old, “Yeni değer
    END OF icdpos.

    * Silinmiş siparişler veya sipariş kalemleri
    DATA:
    BEGIN OF idel OCCURS 0,
    vbeln LIKE vbak-vbeln,
    posnr LIKE vbap-posnr,
    udate LIKE cdhdr-udate,
    uname LIKE cdhdr-username,
    tabkey LIKE cdpos-tabkey,
    END OF idel.

    * Eski miktar ve ölçü birimi
    DATA:
    BEGIN OF old,
    menge LIKE vbap-kwmeng,
    meins LIKE vbap-vrkme,
    END OF old.

    DATA:
    f_nqc TYPE c, “Miktar değişikliği yoksa ‘X’
    r_tabname TYPE RANGE OF cdpos-tabname WITH HEADER LINE,
    r_fname TYPE RANGE OF cdpos-fname WITH HEADER LINE,
    r_chngind TYPE RANGE OF cdpos-chngind WITH HEADER LINE.

    * ALV değişkenleri
    INCLUDE .
    TYPE-POOLS: slis.
    DATA gt_fieldcat TYPE slis_fieldcat_alv OCCURS 1 WITH HEADER LINE.
    DATA lt_events TYPE slis_t_event.
    DATA ls_layout TYPE slis_layout_alv.
    DATA i_grid_title TYPE lvc_title.
    DATA h_variant LIKE disvariant.
    DATA gt_top_of_page TYPE slis_t_listheader.

    CONSTANTS:
    c_f2code LIKE sy-ucomm VALUE ‘DBLCLK’,
    c_user_command TYPE slis_formname VALUE ‘USER_COMMAND’.

    CONSTANTS:
    c_vb LIKE cdhdr-objectclas VALUE ‘VERKBELEG’, “SD belgesi
    c_decimals TYPE i VALUE ‘3’. “Ondalık haneler

    *— SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
    SELECT-OPTIONS:
    s_vkorg FOR vbak-vkorg OBLIGATORY, “Satış organizasyonu
    s_vtweg FOR vbak-vtweg, “Dağıtım kanalı
    s_spart FOR vbak-spart, “Bölüm
    s_vkbur FOR vbak-vkbur, “Satış bürosu
    s_vkgrp FOR vbak-vkgrp, “Satış grubu
    s_auart FOR vbak-auart, “Sipariş türü
    s_erdat FOR vbak-erdat , “Yaratma tarihi
    s_udate FOR cdhdr-udate OBLIGATORY, “Değişiklik tarihi
    s_vdatu FOR vbak-vdatu, “İstenen teslimat tarihi
    s_vbeln FOR vbak-vbeln. “Sipariş numarası
    SELECTION-SCREEN SKIP.
    SELECT-OPTIONS:
    s_prodh FOR vbap-prodh, “Ürün hiyerarşisi
    s_matnr FOR vbap-matnr, “Malzeme
    s_werks FOR vbap-werks, “Üretim yeri
    s_lgort FOR vbap-lgort. “Depo yeri
    SELECTION-SCREEN END OF BLOCK b1.

    *— START OF SELECTION
    START-OF-SELECTION.
    PERFORM fill_ranges.
    PERFORM read_crm_orders.
    PERFORM append_deleted_items.
    PERFORM fill_texts.
    PERFORM write_list.

    *— SUBROUTINES
    *&———————————————————————*
    *& Form fill_ranges
    *&———————————————————————*
    FORM fill_ranges.

    * Değişiklik belgesi seçimi için varsayılan değerleri doldur. Sadece
    * miktar değişiklikleri ve sipariş reddi ile ilgilendiğimiz için bunlar
    * dışındaki değişiklikleri almamız gerekmiyor.

    REFRESH: r_tabname, r_fname, r_chngind.

    * Tablo adı = { VBAP, VBEP }
    * Sadece kalem ve termin değişiklikleri
    r_tabname-sign = ‘I’.
    r_tabname-option = ‘EQ’.
    r_tabname-low = ‘VBAP’.
    APPEND r_tabname.
    r_tabname-low = ‘VBEP’.
    APPEND r_tabname.

    * Alan adı = { KEY, WMENG }
    * Sadece miktar değişikliği veya satır silinmesi
    r_fname-sign = ‘I’.
    r_fname-option = ‘EQ’.
    r_fname-low = ‘KEY’.
    APPEND r_fname.
    r_fname-low = ‘WMENG’.
    APPEND r_fname.

    * Değişiklik türü = {D,U}
    * Sadece güncellemeler ve kayıt silinmesi
    r_chngind-sign = ‘I’.
    r_chngind-option = ‘EQ’.
    r_chngind-low = ‘D’.
    APPEND r_chngind.
    r_chngind-low = ‘U’.
    APPEND r_chngind.

    ENDFORM. ” fill_ranges

    *&———————————————————————*
    *& Form read_crm_orders
    *&———————————————————————*
    FORM read_crm_orders.

    SELECT vbak~vbeln vbak~erdat vbak~auart vbak~vkorg
    vbak~vtweg vbak~spart vbak~vkgrp vbak~vkbur
    vbak~vdatu vbap~posnr vbap~matnr vbap~abgru
    vbap~kwmeng vbap~vrkme
    INTO (vbak-vbeln, vbak-erdat, vbak-auart, vbak-vkorg,
    vbak-vtweg, vbak-spart, vbak-vkgrp, vbak-vkbur,
    vbak-vdatu, vbap-posnr, vbap-matnr, vbap-abgru,
    vbap-kwmeng, vbap-vrkme)
    FROM vbak INNER JOIN vbap ON vbap~vbeln = vbak~vbeln
    WHERE vbak~vbeln IN s_vbeln AND “SD siparişi numarası
    vbak~erdat IN s_erdat AND “Yaratma tarihi
    vbak~auart IN s_auart AND “Belge türü
    vbak~vkorg IN s_vkorg AND “Satış organizasyonu
    vbak~vtweg IN s_vtweg AND “Dağıtım kanalı
    vbak~spart IN s_spart AND “Bölüm (başlık)
    vbak~vkgrp IN s_vkgrp AND “Satış grubu
    vbak~vkbur IN s_vkbur AND “Satış bürosu
    vbak~vdatu IN s_vdatu AND “İstenen teslimat tarihi
    vbap~matnr IN s_matnr AND “Malzeme
    vbap~prodh IN s_prodh AND “Ürün hiyerarşisi
    vbap~werks IN s_werks AND “Üretim yeri
    vbap~lgort IN s_lgort AND “Depo yeri
    EXISTS ( SELECT * “Değişiklik olan kayıtlar
    FROM cdhdr
    WHERE objectclas = c_vb AND
    objectid = vbak~vbeln AND
    udate IN s_udate ). “Değişiklik tarihi

    * Siparişe ait değişiklikleri oku
    PERFORM read_changedocuments.
    * Bizim ilgilendiğimiz bir değişiklik yoksa devam etme
    CHECK NOT icdpos[] IS INITIAL OR NOT vbap-abgru IS INITIAL.
    * Değişikliklerin işlenmesi
    PERFORM interpret_changes.
    * Tabloyu doldur
    PERFORM fill_itab.

    CLEAR icdpos.
    REFRESH icdpos.

    ENDSELECT.

    ENDFORM. ” read_crm_orders

    *&———————————————————————*
    *& Form read_changedocuments
    *&———————————————————————*
    FORM read_changedocuments.

    * Bu siparişe ait değişiklikler henüz okunmamışsa devam et
    CHECK icdpos[] IS INITIAL.

    * Değişiklik nelgelerini oku
    SELECT objectclas
    objectid
    changenr
    username
    udate
    INTO (cdhdr-objectclas,
    cdhdr-objectid,
    cdhdr-changenr,
    cdhdr-username,
    cdhdr-udate)
    FROM cdhdr “Başlık verileri
    WHERE objectclas = c_vb AND
    objectid = vbak-vbeln AND
    udate IN s_udate AND
    planchngnr = space.

    SELECT tabname
    tabkey
    fname
    chngind
    unit_old
    value_old
    INTO (cdpos-tabname,
    cdpos-tabkey,
    cdpos-fname,
    cdpos-chngind,
    cdpos-unit_old,
    cdpos-value_old)
    FROM cdpos “Değişiklik detayları
    WHERE objectclas = cdhdr-objectclas AND
    objectid = cdhdr-objectid AND
    changenr = cdhdr-changenr AND
    tabname IN r_tabname AND
    fname IN r_fname AND
    chngind IN r_chngind.

    * IF cdpos-chngind = ‘D’.
    * CHECK cdpos-tabname = ‘VBAP’.
    * ENDIF.

    icdpos-changenr = cdhdr-changenr.
    icdpos-tabname = cdpos-tabname.
    icdpos-tabkey = cdpos-tabkey.
    icdpos-fname = cdpos-fname.
    icdpos-chngind = cdpos-chngind.
    icdpos-udate = cdhdr-udate.
    icdpos-uname = cdhdr-username.
    icdpos-unit_old = cdpos-unit_old.
    icdpos-value_old = cdpos-value_old.
    APPEND icdpos.

    ENDSELECT.
    ENDSELECT.

    ENDFORM. ” read_changedocuments

    *&———————————————————————*
    *& Form interpret_changes
    *&———————————————————————*
    FORM interpret_changes.

    * Bulunan değişiklikler doğrudan listenmek yerine sadece sipariş kalemi
    * bazında miktar değişimine yol açan değişikliklerin ilk ve son halleri
    * gösterildiği için eldeki değişikliklerin ne olduklarının anlaşılması
    * gerekiyor. Bundan sonra da aynı bağlam içindeki değişikliklerin oluş
    * sırasına göre düzenlenip ilk ve son değişiklikler arasındaki
    * değişimlerin elenmesi gerekiyor.

    * Değişiklik tablosu bir seferde tek siparişe ait bilgi tuttuğu için
    * sıralamadaki anahtar alanlar aşağıdaki gibidir. Bu alanlardan ilk 4
    * tanesi aynı bağlamda çalıştığımızı anlamamıza yararken sonuncusu o
    * değişikliklerin hangi sırayla yapıldığını anlamaya yarar.
    * 1) Tablo adı TABNAME -> Ne değişmiş ?
    * 2) Alan adı FNAME -> Ne değişmiş ?
    * 3) Tablo anahtarı TABKEY -> Hangi kayıt değişmiş ?
    * 4) Değişiklik tip CHNDIND -> Ne tür bir değişiklik olmuş ?
    * 5) Değişiklik no CHANGENR -> Ne zaman (hangi sırayla) değişmiş ?

    PERFORM delete_duplicates.
    PERFORM get_quantity_changes.

    ENDFORM. ” interpret_changes

    *&———————————————————————*
    *& Form delete_duplicates
    *&———————————————————————*
    FORM delete_duplicates.

    * Silinen kalemlerin bilgisini tut
    PERFORM store_deleted_items.

    * Sıralama
    SORT icdpos BY tabname fname tabkey chngind changenr.

    * Aynı konudaki değişikliklerin sadece en eskisini bırak. Bu siparişin o
    * alanına ait ilk değeri bulmak için gerekli.
    DELETE ADJACENT DUPLICATES FROM icdpos
    COMPARING tabname fname tabkey chngind.

    ENDFORM. ” delete_duplicates

    *&———————————————————————*
    *& Form store_deleted_items
    *&———————————————————————*
    FORM store_deleted_items.

    * Silinen kalemler yukarıdaki sipariş/kalem döngüsünden gelmeyeceği için
    * bunların bir yere alınıp sonradan listeye eklenmesi gerekir.

    CLEAR idel.

    LOOP AT icdpos WHERE chngind = ‘D’. “Silinenler
    idel-vbeln = vbak-vbeln. “Sipariş numarası
    idel-posnr = icdpos-tabkey+13(6). “Kalem numarası
    idel-udate = icdpos-udate. “Silme tarihi
    idel-uname = icdpos-uname. “Silen kullanıcı
    idel-tabkey = icdpos-tabkey. “Tablo anahtarı
    COLLECT idel.
    DELETE icdpos. “Tekrar işlenmesin
    ENDLOOP.

    ENDFORM. ” store_deleted_items

    *&———————————————————————*
    *& Form get_quantity_changes
    *&———————————————————————*
    FORM get_quantity_changes.

    * Sipariş kalemindeki ilk miktar değişikliğindeki eski değer alanı o
    * kalemin ilk miktarını göstermektedir. Bu değerin bulunması aşağıda
    * yapılıyor. Miktar değişiklikleri kalemde yapılsa bile değişiklik
    * belgesinde termin satırı bazında tutulduğu için değişen termin
    * satırlarının eski miktarlarının toplamı kalemin eski miktarı olarak
    * kabul ediliyor.

    DATA:
    l_tabkey TYPE RANGE OF cdpos-tabkey WITH HEADER LINE,
    l_qty LIKE vbap-kwmeng.

    CLEAR l_tabkey.
    REFRESH l_tabkey.

    * Sipariş kaleminin tüm terminlerini seç
    l_tabkey-sign = ‘I’.
    l_tabkey-option = ‘CP’.
    CONCATENATE sy-mandt vbak-vbeln vbap-posnr ‘*’ INTO l_tabkey-low.
    APPEND l_tabkey.

    * Değişiklikler bul
    CLEAR old.
    LOOP AT icdpos WHERE tabname = ‘VBEP’ AND
    fname = ‘WMENG’ AND
    tabkey IN l_tabkey AND
    chngind = ‘U’.

    LOOP AT idel WHERE tabkey = icdpos-tabkey.
    EXIT.
    ENDLOOP.
    IF sy-subrc IS INITIAL.
    EXIT.
    ENDIF.
    CLEAR l_qty.
    CHECK icdpos-value_old CO ‘0123456789 ‘.
    l_qty = icdpos-value_old / 10 ** c_decimals.
    ADD l_qty TO old-menge.
    old-meins = icdpos-unit_old.
    ENDLOOP.

    * Miktar değişikliği var mı ?
    IF sy-subrc IS INITIAL. “Var
    CLEAR f_nqc.
    ELSE. “Yok
    f_nqc = ‘X’.
    ENDIF.

    ENDFORM. ” get_quantity_changes
    *&———————————————————————*
    *& Form fill_itab
    *&———————————————————————*
    FORM fill_itab.

    * Çıkış tablosunun doldurulması aşağıda yapılıyor. Red nedenine bağlı
    * miktar sıfırlamaları gibi bazı işlemler de burada kotarılıyor.

    * Gösterilecek değişiklik var mı ?
    CHECK NOT vbap-abgru IS INITIAL OR f_nqc IS INITIAL.

    * SD sipariş başlığı
    itab-vbeln = vbak-vbeln. “Belge numarası
    itab-erdat = vbak-erdat. “Yaratma tarihi
    itab-auart = vbak-auart. “Belge türü
    itab-vkorg = vbak-vkorg. “Satış organizasyonu
    itab-vtweg = vbak-vtweg. “Dağıtım kanalı
    itab-spart = vbak-spart. “Bölüm
    itab-vkgrp = vbak-vkgrp. “Satış grubu
    itab-vkbur = vbak-vkbur. “Satış bürosu
    itab-vdatu = vbak-vdatu. “İstenen teslimat tarihi

    * Değişiklik belgesi başlığı
    itab-udate = cdhdr-udate. “Değişiklik tarihi
    itab-uname = cdhdr-username. “Değiştiren

    * SD sipariş kalemi
    itab-posnr = vbap-posnr. “Belge kalemi
    itab-matnr = vbap-matnr. “Malzeme

    * Red nedeni yoksa sorun yok
    IF vbap-abgru IS INITIAL. “Red nedeni yoksa
    itab-meng2 = vbap-kwmeng. “Son miktar
    itab-vrkm2 = vbap-vrkme. “Son ÖB
    itab-meng1 = old-menge. “İlk miktar
    itab-vrkm1 = old-meins. “İlk ÖB
    IF NOT itab-vrkm1 IS INITIAL.
    itab-icon = icon_compare.
    ELSE.
    itab-icon = icon_system_help.
    ENDIF.
    * Red nedeni varsa yeni miktar 0 olarak kabul ediliyor.
    ELSE. “Red nedeni varsa
    CLEAR itab-meng2. “Son miktar = 0
    itab-vrkm2 = vbap-vrkme. “Son ÖB
    itab-icon = icon_incomplete.
    IF f_nqc = ‘X’. “Miktar hiç değişmemiş
    itab-meng1 = vbap-kwmeng. “Son miktar
    itab-vrkm1 = vbap-vrkme. “Son ÖB
    ELSE. “Miktar değişikliği var
    itab-meng1 = old-menge. “İlk miktar
    itab-vrkm1 = old-meins. “İlk ÖB
    ENDIF.
    ENDIF.

    * Bir seri değişikliğe rağmen miktarlar aynı kalmışsa değişiklik yok
    * varsayılır.
    IF NOT itab-meng1 = itab-meng2 OR NOT itab-vrkm1 = itab-vrkm2.
    APPEND itab.
    ENDIF.
    CLEAR itab.

    ENDFORM. ” fill_itab
    *&———————————————————————*
    *& Form append_deleted_items
    *&———————————————————————*
    FORM append_deleted_items.

    LOOP AT idel.

    READ TABLE itab WITH KEY vbeln = idel-vbeln posnr = idel-posnr.
    CHECK NOT sy-subrc IS INITIAL.

    READ TABLE itab WITH KEY vbeln = idel-vbeln.
    CHECK sy-subrc IS INITIAL.

    CLEAR: itab-matnr, itab-maktx,
    itab-meng1, itab-vrkm1, itab-meng2, itab-vrkm2.
    itab-icon = icon_delete.
    itab-posnr = idel-posnr.
    itab-udate = idel-udate.
    itab-uname = idel-uname.
    APPEND itab.

    ENDLOOP.

    SORT itab BY vkorg vtweg spart vkgrp vkbur auart erdat
    vdatu vbeln posnr udate uname.

    ENDFORM. ” append_deleted_items
    *&———————————————————————*
    *& Form fill_texts
    *&———————————————————————*
    FORM fill_texts.

    LOOP AT itab.
    CHECK NOT itab-matnr IS INITIAL.
    SELECT SINGLE maktx
    INTO itab-maktx
    FROM makt
    WHERE matnr = itab-matnr AND
    spras = sy-langu.
    CHECK sy-subrc IS INITIAL.
    MODIFY itab.
    ENDLOOP.

    ENDFORM. ” fill_texts

    *&———————————————————————*
    *& Form write_list
    *&———————————————————————*
    FORM write_list.

    PERFORM eventtab_build.
    PERFORM commentary_build.
    PERFORM reuse_alv_fieldcatalog_merge.
    PERFORM modify_field_catalog.
    PERFORM reuse_alv_grid_display.

    ENDFORM. ” write_list
    *&———————————————————————*
    *& Form eventtab_build
    *&———————————————————————*
    FORM eventtab_build.

    DATA: ls_event TYPE slis_alv_event.

    CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = lt_events.
    READ TABLE lt_events WITH KEY name = slis_ev_top_of_page
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE ‘TOP_OF_PAGE’ TO ls_event-form.
    APPEND ls_event TO lt_events.
    ENDIF.

    ENDFORM. ” eventtab_build
    *&———————————————————————*
    *& Form commentary_build
    *&———————————————————————*
    FORM commentary_build.

    DATA ls_line TYPE slis_listheader.

    CLEAR ls_line.
    ls_line-typ = ‘H’.
    * LS_LINE-KEY: not used for this type
    ls_line-info = text-100.
    APPEND ls_line TO gt_top_of_page.

    * Kopfinfo: Typ S
    * CLEAR ls_line.
    * ls_line-typ = ‘S’.
    * ls_line-key = text-080.
    * ls_line-info = p_prdha.
    * APPEND ls_line TO gt_top_of_page.
    * ls_line-key = text-090.
    * ls_line-info = p_kschl.
    * APPEND ls_line TO gt_top_of_page.

    ENDFORM. ” commentary_build

    *&———————————————————————*
    *& Form reuse_alv_fieldcatalog_merge
    *&———————————————————————*
    FORM reuse_alv_fieldcatalog_merge.

    CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
    EXPORTING
    i_program_name = ‘ZSD_R_SIPARIS_DEGISIKLIGI’
    i_internal_tabname = ‘ITAB’
    i_inclname = ‘ZSD_R_SIPARIS_DEGISIKLIGI’
    CHANGING
    ct_fieldcat = gt_fieldcat[].

    ENDFORM. ” reuse_alv_fieldcatalog_merge

    *&———————————————————————*
    *& Form modify_field_catalog
    *&———————————————————————*
    FORM modify_field_catalog.

    LOOP AT gt_fieldcat .
    CASE gt_fieldcat-fieldname.
    WHEN ‘MENG1’.
    gt_fieldcat-seltext_l = text-090.
    gt_fieldcat-seltext_m = text-090.
    gt_fieldcat-seltext_s = text-090.
    gt_fieldcat-reptext_ddic = text-090.
    gt_fieldcat-qfieldname = ‘VRKM1’.
    gt_fieldcat-qtabname = ‘ITAB’.
    WHEN ‘MENG2’.
    gt_fieldcat-seltext_l = text-080.
    gt_fieldcat-seltext_m = text-080.
    gt_fieldcat-seltext_s = text-080.
    gt_fieldcat-reptext_ddic = text-080.
    gt_fieldcat-qfieldname = ‘VRKM2’.
    gt_fieldcat-qtabname = ‘ITAB’.
    WHEN ‘UDATE’.
    gt_fieldcat-seltext_l = text-070.
    gt_fieldcat-seltext_m = text-070.
    gt_fieldcat-seltext_s = text-070.
    gt_fieldcat-reptext_ddic = text-070.
    WHEN ‘UNAME’.
    gt_fieldcat-seltext_l = text-060.
    gt_fieldcat-seltext_m = text-060.
    gt_fieldcat-seltext_s = text-060.
    gt_fieldcat-reptext_ddic = text-060.
    WHEN ‘ICON’.
    gt_fieldcat-seltext_l = text-050.
    gt_fieldcat-seltext_m = text-050.
    gt_fieldcat-seltext_s = text-050.
    gt_fieldcat-reptext_ddic = text-050.
    WHEN ‘VRKM1’ OR ‘VRKM2’.
    gt_fieldcat-seltext_l = text-040.
    gt_fieldcat-seltext_m = text-040.
    gt_fieldcat-seltext_s = text-040.
    gt_fieldcat-reptext_ddic = text-040.
    ENDCASE.
    MODIFY gt_fieldcat.
    ENDLOOP.

    ls_layout-colwidth_optimize = ‘X’.
    ls_layout-zebra = ”.
    ls_layout-f2code = c_f2code.

    ENDFORM. ” modify_field_catalog

    *&———————————————————————*
    *& Form reuse_alv_grid_display
    *&———————————————————————*
    FORM reuse_alv_grid_display.

    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
    EXPORTING
    i_callback_program = ‘ZSD_R_SIPARIS_DEGISIKLIGI’
    i_callback_user_command = c_user_command
    is_layout = ls_layout
    it_fieldcat = gt_fieldcat[]
    i_grid_title = i_grid_title
    it_events = lt_events
    is_variant = h_variant
    i_save = ‘A’
    TABLES
    t_outtab = itab.

    ENDFORM. ” reuse_alv_grid_display

    *&———————————————————————*
    *& Form TOP_OF_PAGE
    *&———————————————————————*
    FORM top_of_page.

    CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
    EXPORTING
    it_list_commentary = gt_top_of_page.

    ENDFORM. ” top_of_page

    *———————————————————————*
    * FORM USER_COMMAND *
    * Interactiv functions *
    *———————————————————————*
    * –> r_ucomm – from user called function *
    * –> rs_selfield – structur of the selected list line *
    *———————————————————————*
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.

    * Belge numarası ustune çift tıklanmışsa ilgili belgeye git

    CHECK r_ucomm = c_f2code. “Çift tık
    CHECK rs_selfield-tabindex > 0. “Liste satırında bir yer

    * Satırı oku
    READ TABLE itab INDEX rs_selfield-tabindex TRANSPORTING vbeln.

    CHECK sy-subrc IS INITIAL.

    CASE rs_selfield-fieldname.
    WHEN ‘VBELN’.
    CHECK NOT itab-vbeln IS INITIAL.
    SET PARAMETER ID ‘AUN’ FIELD itab-vbeln.
    CALL TRANSACTION ‘VA03’ AND SKIP FIRST SCREEN.
    ENDCASE.

    ENDFORM.

1 yazı görüntüleniyor (toplam 1)

Bu konuyu yanıtlamak için giriş yapmış olmalısınız.