lunedì 9 aprile 2018

Kanban SAP - Attribuzione kanban in EM.

Con il modulo KANBAN di SAP è possibile gestire la richiesta dei materiali ad un fornitore esterno,  tramite ordini chiusi o anche con Piani di Consegna.

Noi abbiamo "spinto" la personalizzazione, con qualche ABAP Z, in modo che sia automatico l'invio via mail del cartellino PDF al fornitore e sia facilitato il processo di ricevimento merce.

Questo il flusso:
  • al consumo del materiale si legge il cartellino e il kanban passa a stato "vuoto".
  • ad un certo orario, tutti i giorni, viene eseguito un job che:
  1. controlla tutti i cartellini, di materiale di acquisto, con stato vuoto.
  2. li passa a stato "In lavorazione"
  3. produce una stampa, abbiamo scelto il comune formato A6, di tutti i cartellini di un fornitore e li invia via mail (una unica mail, con un unico allegato PDF che contiene tutti i contenitori da riapprovvigionare).
  • il fornitore riceve la mail, stampa i cartellini su una normale stampante laser B/N, produce e applica il cartellino alle unità di imballo.
  • Al ricevimento merce a magazzino si legge il cartellino e viene eseguita l'Entrata merce, contestualmente il Kanban passa a stato "Pieno".
Esempio di stampa cartellino:
Per gestire l'Entrata Merce correttamente abbiamo avuto qualche difficoltà e, alla fine, è stato necessario ricorrere anche ad un enhancement.

Infatti l'amministrazione richiede che, nella entrata merce, ci sia il riferimento alla DDT del fornitore; inoltre si preferisce avere una Entrata Merce unica per tutta la fornitura e non una singola per ogni Kanban.

Se si tenta di registrare una Entrata Merce (tramite la transazione MIGO) su un Piano di consegna, legato ad un ciclo Kanban, il sistema apre una videata dove l'operatore deve scegliere quale Kanban deve essere riempito:


Noi invece abbiamo realizzato una transazione, che tra l'altro può essere comodamente utilizzata con un terminare RF (abbiamo in uso i, oramai datati, Motorola MC9090), dove vengono letti in sequenza diversi Kanban e poi, quando l'operatore termina la transazione, viene eseguita una unica registrazione di Entrata Merce.

Per fare in modo di registrare una sola Entrata Merce viene chiamata la bapi "BAPI_GOODSMVT_CREATE". In questo modo però l'assegnazione dei Kanban da riempire avviene in automatico e si assegnano, mi sembra di aver capito, in modo sequenziale rispetto all'ultimo cambio stato. Chiaramente questo può non corrispondere con i cartellini che ha riempito il fornitore.

Per riempire in modo corretto i contenitori è stata usata questa tecnica:
  • prima di effettuare la chiamata alla BAPI_GOODSMVT_CREATE: ci si costruisce una tabella con i cartellini che devono diventare pieni (quelli letti dall'operatore).
  • si esegue un EXPORT <tabella> TO MEMORY ID <id>
  • si è precedentemente modificato, tramite un enhancement, il programma LMPKBF3E per leggere l'area di memoria ed elaborare l'assegnazione Kanban.
  • si cancella l'assegnazione in memoria FREE MEMORY ID <id>.
Questo il codice dentro l'enhancement:

*----------------------------------------------------------------------*
* Enhancement per gestione assegnazione Kanban in EM da fornitore
* Data: 09/03/2018 Modifica:
* Quando eseguita da transazione ZPRF14: importa tabella kanban da area
* di memoria e forza assegnazione qtà ai kanban.
*----------------------------------------------------------------------*

  INCLUDE ZITS_1200_TOP.

  IF sy-tcode = 'ZPRF14'.

* Importare la tabella dei Kanban da elaborare
    IMPORT exp_pkkey  FROM MEMORY ID mem_id_zprf14.
    IF sy-subrc = 0.            "Lettura memoria OK

* loop tabella kanban       
      loop at exp_pkkey into wa_pkkey.
* per ogni kanban da elaborare aggiorno la quantità in tabella pkpsi
        LOOP AT pkpsi WHERE PKKEY = wa_pkkey-PKKEY.
          pkpsi-aktmg = wa_pkkey-BEHMG.
          MODIFY pkpsi.
        ENDLOOP.

      ENDLOOP.

      EXIT.

    ENDIF.

  ENDIF.

questa la struttura dati utilizzata:

*&---------------------------------------------------------------------*
*&  Include           ZITS_1200_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_pkkey  .
TYPES: pkkey TYPE pkkey,
       PKNUM TYPE PKNUM,
       ebeln TYPE ebeln,
       ebelp TYPE ebelp,
       behmg TYPE behmg.
TYPES em.
TYPES END OF ty_pkkey.
TYPES ty_t_pkkey TYPE TABLE OF ty_pkkey.
DATA mem_id_zprf14(10) VALUE 'WEGBWEG'.
DATA exp_pkkey TYPE ty_t_pkkey.
DATA wa_pkkey TYPE ty_pkkey.

Nessun commento:

Posta un commento