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 > 
.
      
IF sy-subrc EQ .
        gv_hata 
`X`.
        
MESSAGE i062(zwmINTO 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


    CALL FUNCTION `L_AKTIVIEREN_VERAENDERN` IN UPDATE TASK
      
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 > 
.

Kayıt Varsa Hata Mesajı: & paleti & adresinde sayılmıştır.