WM Sayım - Farklı Adresteki Paletin Sayılması
İstek: Sayım belgesi adres bazlı oluşturulmaktadır. Adreste olmayan bir palet sayılamamaktadır. O sebeple adreste olmayan bir palet sayılmak isterse sistemsel izin verilmesi sağlanması.
Sayım deaktif etme fonksiyonu: L_DEAKTIVIEREN_INVENTUR
Sayım aktif etme fonksiyonu: L_AKTIVIEREN_VERAENDERN
Palet transfer fonksiyonu: L_TO_CREATE_MOVE_SU
Geliştirme: Okutulan palet başka bir adresteyse şunları yapmamız lazım.
1) Eğer palet stokta varsa;
a. Başka bir sayım belgesi içerisindeyse (Sayılmış ya da sayılmamış önemli değil);
i. Adreslere ait sayım belgeleri bulunup deaktif edilecek.
ii. Palet adresler arasında transfer edilecek.
iii. Sayım belgeleri tekrar yeni stoklar eklenip(sayılmış olarak) ve çıkarılarak aktif edilecek.
b. Başka bir sayım belgesi içerisinde değil, fakat stoklarda var.
i. Sayım belgesi deaktif edilecek.
ii. Palet adresler arasında transfer edilecek.
iii. Sayım belgesine yeni stoklar eklenip tekrar aktif edilecek.
2) Eğer palet stokta yoksa;
a. Başka bir sayım belgesi içerisinde değil ve stoklarda yoksa bişey yapılmayacak. İşleme aynı devam edecek.
3) Palet stokta yok ama başka bir adreste sayılmışsa;
a. El terminalinde hata ver.
Örnek senaryo;
Adres: SAYIM1 – Palet ID: 11-12 – Sayım Belge No: Belge2
SAYIM2 – 13-14 – Belge3
SAYIM3 – 15 - Belgesiz
-16 - Belgesiz
-17 – Belgesiz fakat Belge3’te sayılmış.
Örnek-Süreç İlişkisi;
13’ü sayınca 1a
15’i sayınca 1b
16’i sayınca 2a
17’I sayınca 3a
Sayım deaktif etme fonksiyonu: L_DEAKTIVIEREN_INVENTUR
Sayım aktif etme fonksiyonu: L_AKTIVIEREN_VERAENDERN
Palet transfer fonksiyonu: L_TO_CREATE_MOVE_SU
-----
SELECT SINGLE ivnum lgnum lgpla "#EC CI_NOORDER
INTO (gv_ivnum , gv_lgnum ,lv_lgpla)
FROM linv
WHERE lenum EQ lv_lenum AND
istat EQ `Z` AND
menge > 0 .
IF sy-subrc EQ 0 .
gv_hata = `X`.
MESSAGE i062(zwm) INTO gv_message WITH gv_ivnum lv_lgpla.
PERFORM message_parse USING gv_message.
ELSE.
READ TABLE gt_inv INTO gs_inv WITH KEY lgpla = gs_screen-adres.
gv_ivnum = gs_inv-ivnum.
gv_lgnum = gs_inv-lgnum.
PERFORM deactivate_inventory USING gv_ivnum
gv_lgnum.
PERFORM active_inventory USING gv_ivnum
gv_lgnum.
ENDIF.
CALL FUNCTION `L_DEAKTIVIEREN_INVENTUR` IN UPDATE TASK
EXPORTING
xlink = ls_link
TABLES
inp = lt_linp
inv = gt_linv.
CALL FUNCTION `L_TO_CREATE_MOVE_SU` "#EC CI_USAGE_OK[2438110]
EXPORTING
i_lenum = lv_lenum
i_bwlvs = `999`
i_nltyp = gs_inv-lgtyp
i_nlpla = gs_screen-adres
i_squit = `X`
i_commit_work = `X`
i_bname = sy-uname
EXPORTING
xlink = ls_link
TABLES
inp = lt_linp
inv = gt_linv.
-----
3a maddesi kontrolü aşağıdaki gibi yapılıp, kayıt dönerse hata verilmeli.
“Palet sayımı yapılmış bir sayım belgesinde mevcut mu?
LINK tablosu IVAKT = X olanlar kayıtlar alırsın
SELECT SINGLE ivnum lgnum lgpla "#EC CI_NOORDER
INTO (gv_ivnum , gv_lgnum ,lv_lgpla)
FROM linv
WHERE lenum EQ lv_lenum AND
istat EQ `Z` AND
menge > 0 .
Kayıt Varsa Hata Mesajı: & paleti & adresinde sayılmıştır.