IMPANA - Import/export di massa anagrafiche cli/for¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | IMPANA |
| Titolo | Importazione/Esportazione anagrafiche clienti/fornitori |
| Modulo | Sistema |
| Posizione menu | Sistema > Utility > Imp/exp di massa > Clienti/fornitori > Anagrafiche cli/for |
Scopo e logica generale¶
IMPANA e' il programma piu' esteso del ramo Clienti/Fornitori del framework IMP* (oltre 9.000 righe). Gestisce l'import ed export massivo delle anagrafiche clienti/fornitori da/verso file delimitati (CSV/TXT) o Excel. Per la complessita' del dato anagrafico, oltre alla testata COGGEANA scrive numerose tabelle satellite (dati aggiuntivi, sconti, destinazioni, condizioni, riferimenti, ecc.).
Il programma opera in due direzioni (campo maschera tm-ope):
- "I" (Importazione): legge un file delimitato, interpreta le colonne in base agli ID campo di intestazione (
ANA-*) e scrive/aggiorna l'anagrafica e i suoi record satellite. - "E" (Esportazione): scorre le anagrafiche filtrate per tipo (C/F) e range codici, produce un file CSV/TSV e lo apre come Excel (
GRIDTOXS).
Il programma e' GUI standalone (procedure division using stringhe): non ha un copybook di linkage dedicato. La modalita' di richiamo automatico e' pilotata dal profilo wo-parametro, che puo' valere EA (estrazione automatica batch), ECL/EFL (export clienti/fornitori) o ICL/IFL (import clienti/fornitori).
Flusso principale¶
apri(main):z-99-init-program,rd-azi,open-files,x99-load-config(RNEWCONF). Prepara il pulsante custom F7 "Trova file", verifica le restrizioni CRM dell'operatore (CRMS12), recupera la divisa conto (COGU10W). Sewo-parametro(1:2) = "EA"forza export completo e salta direttamente ax-esecuzione.a4: inizializza la maschera con i default (operazione "I", tipo anagrafica "C", test "S"); in base aw-sav-wo-parametro(ECL/EFL/ICL/IFL) forza la direzione e, in export, copia il modello.xlsin locale viaCOPIAF.- Accept maschera (
a-tm-*): operazione (I/E), tipo anagrafica (C/F), file (F7 =C$OPENSAVEBOX), flag test, range codici da/a, "solo esistenti", ordinamento, azzera GPS. Conferma con F3. x-esecuzione: prepara i nomi file temporanei; in import copia il file scelto inext-tmp-dir(C$COPY) e, se.xls/.xlsx, lo converte in testo conESTRXLSforzando il delimitatore. Apre il file di logcogrisul.- Caricamento campi:
a2-carica-campiper export completo, altrimentia1-carica-campi(import) che legge la prima riga come intestazione, associa gli ID colonnaANA-*agli indici campo e valida le colonne obbligatorie (ANA-TIPO/ANA-COD oppure ANA-RACCORDO/ANA-NOME). Poi instrada sub-importa(I) oc-esporta(E). b-importa/b-10-loop: legge riga per rigacogseque; per ogni rigab1-carica-delimitatofa il parsing dei campi delimitati (gestendo apici e delimitatore) popolandotab-datiper ID. Controlli incrociati su P.IVA/codice fiscale (COGE05, con warning). Se non in test chiamab3-aggiorna; gestisce l'interruzione con ESC.b3-aggiorna: decide inserimento/modifica suCOGGEANA. La logica puo' essere pilotata dal codice anagrafica (ANA-COD) oppure, se configurato, dal raccordo (ANA-RACCORDO, verificato su COGANAP2). In inserimento cerca un codice libero (a8-cerca-libero). Legge/crea i record satellite (COGAPPOG, COGANAPP, COGANAP2, COGANCAP, COGDESTI, COGSCONT) e riempie i campi mappati; scrive COGCNDCF/COGRIFER/COGTABEL/COGDESCR; sincronizza aziende del gruppo e area manager (CRMS06/CRMS03).c-esporta/c-10-loop: aprecogexprt, scrive due righe di testa (tipo campo N/S e ID colonna), poi scandisceCOGGEANA(per codice o per nomechia1) entro il range e il tipo, filtra per restrizioni CRM (CRMS12), rende correnti i record satellite e scrive una riga per anagrafica.c-90: chiudecogexprte, se non in batch, apre il file esportato come Excel viaGRIDTOXS.a-fine/fine/z-chiudi: chiudecogrisul; se ci sono segnalazioni propone di aprire il log (OPENFILE), chiude i file ed esegueexit program.
File e tabelle acceduti¶
File sequenziali di lavoro (SELECT interni al sorgente): cogseque (input import), cogexprt (output export), cogrisul (log risultati impana.txt); piu' feurtab (cogfiles.cpy).
Tabelle scritte/aggiornate (import):
| Tabella | Uso |
|---|---|
| COGGEANA | Testata anagrafica cli/for (record principale) |
| COGAPPOG, COGANAPP, COGANAP2, COGANCAP | Record satellite dell'anagrafica (dati aggiuntivi, raccordo, SEPA, ecc.) |
| COGDESTI | Destinazioni diverse (per clienti) |
| COGSCONT | Sconti cliente |
| COGCNDCF | Condizioni cli/for (pagamenti, listini) |
| COGRIFER | Riferimenti/contatti |
| COGDESCR | Descrizioni estese |
| COGTABEL | Tabelle di sistema (codici pagamento, zone, stati esteri) |
Tabelle di validazione/lookup (lettura): COGAGZON (zone/aree manager), COGFATTU (dati fatturazione), COGBNCA, COGMAGAZ, COGMAGAG, COGMERCI, COGTESLS, COGPNCON, COGTBCOM, COGGENER.
Chiavi secondarie aggiunte a fine procedure: cogagzon.k02, crmanagr.k03, coggeana.k02, coganap2.k02, cogfattu.k04, cogrifer.k02.
Copybook principali¶
Strutture / record: feurtab.fd, cogfiles.cpy, opensave.def.
Utility / servizio: utilestrxls.cpy (ESTRXLS), utilopenfile.cpy (OPENFILE), utilncnf.cpy (RNEWCONF), utilgesstr.cpy (GESSTR), utilgdad.cpy, utilcrms12/utilcrms06/utilcrms03 (CRMS12/06/03), utilcogsad.cpy (COGSAD), utils05/utils25/utils43/utils44/utils52/utils65, utilu10/utilu20, l-copiaf.cpy/u-copiaf.cpy (COPIAF).
Working standard / costanti: k-personal.cpy, k-tipi-cogtabel.cpy, costanti-clipot.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wcont.cpy, wcont1.cpy.
Screen Designer: impana.select, impana.fd, impana.wrk, impana.decla, impana.prc, impana-01.scr.
Routine finali: stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy.
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| ESTRXLS | Conversione file Excel in testo delimitato per l'import |
| GRIDTOXS | Apertura del file esportato come foglio Excel |
| COPIAF / C$COPY | Copia file server/client (modello export, file import) |
| C$OPENSAVEBOX | Dialog di scelta file (F7) |
| OPENFILE | Apertura del log risultati su richiesta |
| RNEWCONF | Lettura configurazioni |
| COGU10W | Recupero divisa conto (GetDivisaConto) |
| CRMS12 | Restrizioni CRM operatore sui nominativi (PREPARA / CONTROLLA-NOM) |
| CRMS03 / CRMS06 | Gestione dati CRM (info, posizioni, area manager) |
| COGE05 | Validazione codice fiscale / partita IVA |
| AZVALIDA | Validazione campo/azienda |
| GESSTR | Manipolazione stringhe/testo |
| COGS65W | Ricerca avanzata (F9) su codici anagrafica |
| COGSAD | Servizio dinamico di supporto anagrafica |
Note¶
- Non esiste un copybook di linkage
util-impana: i parametri di pilotaggio arrivano dawo-parametro/w-sav-wo-parametro(profilo di chiamata) e sono interpretati inapri/a4. Modalita':EA(batch),ECL/EFL(export cli/for),ICL/IFL(import cli/for). - Gli ID campo sono definiti come costanti
78 k-ana-*/k-aap-*/k-anc-*(circa 130 costanti, in crescita): ad esempioANA-TIPO,ANA-COD,ANA-NOME,ANA-PIVA,ANA-COFI,ANA-IBAN-ABI/CAB/CC,ANA-RACCORDO, campi SEPA e campi recenti (rivalsa bollo, addebito aggiuntivo). Alcuni sono prefissi dinamici per dati CRM (ANA-I-,ANA-P-). Limitek-max-campi = 350. - Il valore
#@#(k-campo-svuotato) forza l'azzeramento esplicito del campo in import. - La modalita' test (
tm-test= "S") esegue parsing e validazioni senza scrivere sulle tabelle. - La logica "raccordo obbligatorio" (configurabile) fa pilotare l'inserimento/aggiornamento dal campo ANA-RACCORDO anziche' dal codice anagrafica.
- Configurazioni RNEWCONF lette (in blocco unico): tra le altre
cogesys/delimitatore-colonne-excel,clienti/conto-anagrafico,fornit/conto-anagrafico,clienti/raccordo-obbligatorio,contabil/collegamento-tesoreria,bint/bie002-inf-area-manager,CLIENTI/lancio-sincronizzatore,ABILITA/GRUPPO-AZIENDE,CLIPOT/TIPO-NOMINATIVO-ANAGR-CLIENTEe...-FORNITORE,odonto/gestione-multi-sede, oltre alle abilitazioni colonne EU (PROGCOG08C).
Documentazione tecnica -- creata 2026-08-06