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)¶
z-99-init-program,ctr-abil, apertura file, caricamento lingua- Determinazione modalita' called/standalone e impostazione di
a-modalita - 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)
- 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 sut-grid-dete 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-precconserva il codice originale della riga: e' indispensabile in cancellazione per rileggere il record giusto inASNGRKIT - 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 continuein caso di errore di caricamento) - Il programma supporta i filtri predefiniti (
utilimppredf.cpy/asn01c.imppredf), caricati all'avvio conz-imppredf-carica-default