Vai al contenuto

ASN01C - Gestione Gruppi di Kit

Sorgente: cbl/asn01c.cbl (919 righe) | Tipo: Programma interattivo con griglia editabile su file di transito (pattern GRID-DET), doppia modalita' standalone/chiamato

Menu: Assist 2.0 > Archivi > Tabelle > Gestione Kit > Gruppi di Kit


Scopo

Gestisce l'anagrafica dei gruppi di kit (tabella ASNGRKIT): elenca in griglia i gruppi esistenti (codice + descrizione), permettendo di aggiungerli, modificarli, cancellarli logicamente (flag di cancellazione) e, in modalita' chiamato, di selezionarne uno da restituire al programma chiamante.

Ogni riga della griglia corrisponde a un record di ASNGRKIT. Le modifiche vengono raccolte su un file di transito temporaneo (t-grid-det) e riversate sulla tabella solo alla conferma (F3). Ad ogni aggiornamento o cancellazione viene innescata una sincronizzazione verso il sistema KPN tramite SWN087.

Modalita' operative

Il programma distingue due modalita' in base alla presenza di un chiamante (w-dc-called, derivato da asn01c-called = k-program-id and asn01c-caller not = spaces nella copybook di linkage utilasn01c.cpy):

Modo w-dc-called a-modalita Comportamento
Standalone (da menu) "N" "A" (Aggiornamento) Griglia editabile; F3 aggiorna la tabella
Chiamato (called) "S" "S" (Selezione) all'avvio Griglia in sola selezione; invio restituisce codice/descrizione al chiamante. F3 alterna tra selezione e aggiornamento

In modalita' chiamato l'invio su una riga copia tm-r-cod (i) in asn01c-out-cod e tm-r-des (i) in asn01c-out-des, poi esce.

File acceduti

File Copybook Uso
feurtab cogfiles.cpy Tabella di sistema (aperta tramite feurtab.fd)
ASNGRKIT agrk-rec Gruppi di kit: lettura in scansione (st-asngrkit-notmin / rdnxt-asngrkit), scrittura (wr-asngrkit), riscrittura (rwr-asngrkit), lettura per chiave (rd-asngrkit)
t-grid-det (transito) t-gor-r-rec File di transito temporaneo per la griglia. Campi principali: t-gor-r-cod, t-gor-r-des, t-gor-r-cod-prec (codice originale, necessario per il recupero in cancellazione), t-gor-r-prog, t-gor-r-riga-mod

Il record di ASNGRKIT espone i campi agrk-cod, agrk-des, agrk-fl-canc (flag cancellazione logica: "C" = cancellato) e agrk-chia1 (chiave usata come chiave di export verso KPN).

Copybook incluse

  • File/environment: feurtab.fd, asn01c.select, asn01c.fd, cogfiles.cpy
  • Working di programma: asn01c.wrk, asn01c.imppredf-wrk, asn01c.tm (campi maschera generati da Screens)
  • Working standard: wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilu20.cpy
  • Gestione griglia: wgrid.cpy, utilgdad.cpy
  • Filtri predefiniti: utilimppredf.cpy
  • Sincronizzazione KPN: utilagprg.cpy
  • Linkage: wcont.cpy, wcont1.cpy, utilasn01c.cpy (interfaccia chiamato)
  • Screen: asn01c-01.scr
  • Fine procedure: grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, asn01c.prc, asn01c.imppredf

Programmi chiamati

Programma Operazione Scopo
SWN087 ESPORTA-KEY (agprg-ope) Sincronizzazione del gruppo di kit verso KPN (paragrafo x-sincronizza-kpn): passa agrk-chia1 in agprg-key. Invocato dopo ogni aggiornamento (b-aggiorna-record) e cancellazione (c-cancella-record)
GRIDADMN Prepara / (S-F4) Preparazione e personalizzazione della griglia GRID-DET
W$MENU wmenu-popup Attivazione del menu contestuale (right-click) sulla griglia

Flusso principale

Avvio (apri)

  1. z-99-init-program, ctr-abil, apertura file, caricamento lingua
  2. Determinazione modalita' called/standalone e impostazione di a-modalita
  3. Attivazione tasti funzione: in modalita' selezione abilita F3-modifica e invio-seleziona; in modalita' aggiornamento abilita F3-aggiorna. Sempre attivi: S-F4 (griglia), S-F5 (esporta Excel), CTRL-A (aggiungi), CTRL-E (elimina)
  4. Costruzione menu contestuale, preparazione griglia e colonne

Caricamento griglia (z-grid-det-crea-transito)

Scorre ASNGRKIT con il pattern standard indicizzato: per ogni record non cancellato (agrk-fl-canc = spaces) inserisce una riga nel transito valorizzando t-gor-r-cod, t-gor-r-cod-prec (per il recupero in cancellazione) e t-gor-r-des. Se un filtro attivo non produce righe (m-asn01c-7), il filtro viene annullato e la creazione ripetuta.

Loop griglia (a-grid)

Gestisce accept sulla griglia e le exception: - Invio (modo selezione): restituisce codice/descrizione al chiamante ed esce - F3: in standalone conferma tutti i controlli (x-controlla-grid-det-tutto) e aggiorna (b-aggiorna); in modalita' called alterna selezione/aggiornamento, con possibilita' di confermare l'aggiornamento in uscita (fl-esc-agg) - CTRL-A: aggiunge una riga vuota (bloccato se filtro attivo, m-asn01c-5) - CTRL-E: azzera la riga corrente per marcarla come da cancellare (bloccato se filtro attivo, m-asn01c-6) - S-F4: personalizzazione griglia via GRIDADMN - S-F5: esportazione griglia in Excel - Menu pop-up (funzioni k-pmg-primo..k-pmg-ultimo, 151-199)

Aggiornamento (b-aggiorna)

Scorre il transito t-grid-det: - Riga con progressivo valorizzato ma codice vuoto → cancellazione logica (c-cancella-record): rilegge ASNGRKIT per t-gor-r-cod-prec, imposta agrk-fl-canc = "C", riscrive e sincronizza KPN - Riga con t-gor-r-riga-mod = "S"aggiornamento (b-aggiorna-record): legge/crea il record (wr-asngrkit se inesistente), aggiorna agrk-des, azzera il flag di cancellazione, riscrive e sincronizza KPN

Validazioni di riga (griglia)

  • z-grid-det-cod-be-ep: il codice (tm-r-cod) e' editabile solo su riga nuova; se il codice originale (tm-r-cod-prec) e' gia' valorizzato, la cella e' bloccata (chiave non modificabile su record esistente)
  • x-controlla-tm-r-des: se il codice e' valorizzato, la descrizione e' obbligatoria (m-asn01c-8)
  • In modalita' selezione (z-event-grid-det-ep) l'ingresso in cella (msg-begin-entry) e' respinto (event-action-fail-terminate): griglia read-only

Messaggi principali

ID Contesto
m-asn01c-1 Titolo maschera
m-asn01c-2 Non abilitato all'inserimento
m-asn01c-3 Non abilitato all'aggiornamento
m-asn01c-4 Conferma aggiornamento in uscita (modalita' called)
m-asn01c-5 Impossibile inserire righe con filtro attivo
m-asn01c-6 Impossibile eliminare righe con filtro attivo
m-asn01c-7 Il filtro non ha prodotto risultati (viene annullato)
m-asn01c-8 Descrizione gruppo kit obbligatoria

Note implementative

  • La griglia adotta il pattern GRID-DET su file di transito (wgrid.cpy + utilgdad.cpy): le modifiche sono raccolte su t-grid-det e riversate solo alla conferma; questo evita la perdita delle modifiche quando si applica un filtro
  • La cancellazione e' logica (agrk-fl-canc = "C"), non fisica: i record cancellati non vengono ricaricati in griglia ma restano nella tabella
  • Il campo t-gor-r-cod-prec conserva il codice originale della riga: e' indispensabile in cancellazione per rileggere il record giusto in ASNGRKIT
  • La chiave del gruppo kit e' immutabile: una volta creato un record, la cella codice viene bloccata
  • Ogni scrittura/cancellazione propaga la modifica al sistema KPN via SWN087, cancellato dopo ogni chiamata (on overflow continue in caso di errore di caricamento)
  • Il programma supporta i filtri predefiniti (utilimppredf.cpy / asn01c.imppredf), caricati all'avvio con z-imppredf-carica-default