IMPMER - Import/export di massa merci¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | IMPMER |
| Titolo | Importazione/Esportazione anagrafiche merci |
| Modulo | Sistema |
| Posizione menu | Sistema > Utility > Imp/exp di massa > Magazzino > Merci |
Scopo e logica generale¶
IMPMER e' il programma piu' esteso del framework IMP* (oltre 12.000 righe) e gestisce l'import ed export massivo delle anagrafiche merci/articoli da/verso file CSV o Excel, in modalita' interattiva o batch. Il flusso di business e i tracciati campi sono descritti in dettaglio nella pagina Importazione/Esportazione anagrafiche merci; le criticita' note sono raccolte in impmer-criticita.md.
Il programma opera in due direzioni (campo maschera / parametro impmer-operazione):
- "I" (Importazione): legge un file delimitato (o Excel convertito), interpreta le colonne in base agli ID campo di intestazione e scrive/aggiorna la merce principale
COGMERCIe decine di tabelle collegate. - "E" (Esportazione): scorre le merci filtrate per classe/data, produce un file CSV (o TSV per Excel) e lo apre come foglio Excel (
GRIDTOXS) oppure lo copia sulla path di output richiesta in batch.
Puo' essere richiamato da altri programmi in modalita' batch passando impmer-called = "IMPMER-CALLED" e i parametri via util-impmer; in tal caso lavora senza interfaccia utente.
Flusso principale¶
I riferimenti di riga interni evolvono col sorgente; i paragrafi chiave sono i seguenti.
apri(main):z-99-init-program, apertura debug (gesdebug) se configurato,rd-azi,open-files; se azienda a consorzi apre anche CAPTABEL/CAPMEACC/CAPMEADR (dati doganali/ADR). Carica la configurazione (x99-load-config-> RNEWCONF), imposta i tasti funzione (F1/F3/F8/F9), recupera la divisa conto (COGU10W) e carica la lingua.- Modalita' batch: se
impmer-called = "IMPMER-CALLED"copia i parametri linkage nell'area di lavoro (w-dc-*) e prosegue senza UI. - Scelta operazione e parametri (
a-tm-file,a-tm-test,a-richiesta-conferma): l'utente sceglie il file (F7 =C$OPENSAVEBOX), il flag "elaborazione di prova" (tm-test) e conferma (F3). x-esecuzione: compone il nome del file di log (impmer.txtinext-tmp-dir); in import copia il file scelto (C$COPY, con prefisso@[DISPLAY]:per thin client) e, se e'.xls/.xlsx, lo converte in testo conESTRXLSforzando il delimitatore. Apre il file risultaticogrisul.- Caricamento campi (
a1-carica-campiper import/export normale,a2-carica-campiper export "tutti i dati"): legge la prima riga del file, spezza gli ID colonna sul delimitatore (gestendo gli apici) e mappa ciascuno su un indice campo (tc-inf/tc-id-*). Valida i campi obbligatori (gruppo/sottogruppo/codice o CMA, classe, descrizione) in base a operazione e "solo esistenti". b-importa/b-10-loop: legge riga per rigacogseque; ogni 10 righe aggiorna la UI e chiamaC$SLEEP(anti-timeout). Per i record delimitati chiamab1-carica-delimitato.b1-carica-delimitato: scandisce le colonne isolando ogni valore sul delimitatore, gestisce il marcatore di azzeramento#@#(td-azzera) e il prefisso'!', valida per tipo campo (EVALUATE sutc-inf) e popolatd-dato/td-dato-num/td-dato-data.b3-aggiorna: se non in test, scrive/aggiornaCOGMERCIe tutte le tabelle collegate (COGMERAP/COGMERA2/COGMERA3/COGMERA4, listini, note, raggruppamenti, ubicazioni logiche, dati Modula, ecc.).c-esporta/c-10-loop: creamerci.csv, scrive la riga dei tipi campo (N/S) e la riga degli ID campo (delimitatore;per CSV, TAB per Excel), poi naviga le merci conCOGU16W(Set-Estremi/Leggi), filtra per classe/data, legge i record correlati e formatta ogni campo (c1-formatta-campo) scrivendo sucogexprt.c-90: chiudecogexprt; se interattivo converte in Excel conGRIDTOXS, se batch copia l'estratto sulla pathimpmer-output(client o server secondoimpmer-output-loc) viaCOPIAF.a-fine/fine/z-chiudi: chiudecogrisul; in batch valorizzaimpmer-esito/impmer-o-msg; in interattivo, se ci sono errori, propone di aprire il log (OPENFILE). Cancella le subroutine dinamiche, chiude i file ed esegueexit program.
File e tabelle acceduti¶
File sequenziali di lavoro (SELECT interni, dichiarati manualmente nel sorgente):
| File | Record | Modalita' | Uso |
|---|---|---|---|
| cogseque | seq-rec x(8000) |
Input | Righe da importare (file gia' copiato/convertito) |
| cogexprt | exp-rec (occurs 0-8000) |
Output | File CSV/TSV generato in export |
| cogrisul | ris-rec (occurs 0-256) |
Output | Log risultati impmer.txt |
FEURTAB (cogfiles.cpy) |
- | I-O | Tabella generalizzata |
Tabelle scritte/aggiornate (import): COGMERCI, COGMERAP, COGMERA2, COGMERA3, COGMERA4, COGMERLF, COGMERNT (note), COGMERLK, COGRACMC, COGRACMT, COGANRAG, COGLGMER (ubicazioni logiche), COGDESAG (descrizioni aggiuntive), COGMDLCS (confezione/scomparto/area Modula), COGLISNW (listini), COGSTAMP, COGTABUM.
Tabelle solo lette (validazione/lookup): COGTABEL, COGRAGGR, COGMAGAZ, COGTESLS, COGMERFO, COGSLMAG, COGMOMAG, COGRIGOR, COGDBASE, COGCNDCF. Se azienda a consorzi: CAPTABEL, CAPMEACC, CAPMEADR.
Chiavi secondarie aggiunte a fine procedure (.k0x): cogmerci.k03, cogracmc.k02, cogracmt.k02, coganrag.k02, cogrigor.k03, cogmomag.k04, cogdbase.k02, asnmodel.k02, cogmerlk.k02, asnprest.k02, lodinfal.k03.
Copybook principali¶
Strutture / record: feurtab.fd, cogfiles.cpy, opensave.def.
Linkage: utilimpmer.cpy (util-impmer) - parametri di richiamo batch.
Utility / servizio: utilestrxls.cpy (ESTRXLS), utilopenfile.cpy (OPENFILE), utilncnf.cpy (RNEWCONF), utilgesstr.cpy (GESSTR), utilgesdebug.cpy (gesdebug), utilcogs0c.cpy, utilcogl61.cpy (COGL61), utils01f.cpy (COGS01F), utils05/utils35/utils37/utils37b/utils52/utils55/utils68, utilu10/utilu16/utilu20, utilcrms06/utilcrms09, l-copiaf.cpy/u-copiaf.cpy (COPIAF).
Working standard / costanti: k-personal.cpy, k-tipi-cogtabel.cpy, costanti-clipot.cpy, k-u10.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wcont.cpy, wcont1.cpy.
Screen Designer: impmer.select, impmer.fd, impmer.wrk, impmer.decla, impmer.prc, impmer-01.scr.
Routine finali: stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, poi impmer.prc, gesdebug.cpy.
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| ESTRXLS | Conversione file Excel in testo delimitato per l'import |
| GRIDTOXS | Apertura del file esportato come foglio Excel (interattivo) |
| COPIAF / C$COPY | Copia file client/server; in batch copia l'estratto sulla path di output |
| C$OPENSAVEBOX | Dialog di scelta file (F7) |
| C$SLEEP | Pausa nel loop ogni 10 record (anti-timeout thin client) |
| OPENFILE | Apertura del log risultati su richiesta |
| RNEWCONF | Lettura configurazioni |
| COGU10W / COGU10 | Utility divisa/conto |
| COGU16W | Navigazione sequenziale merci in export |
| COGS01F | Gestione fornitori |
| COGS52W | Subroutine listini/CMA |
| COGS05 | Ubicazioni logiche |
| COGS35 / COGS36 / COGS37 / COGS37B | Subroutine anagrafica merci / DAM |
| COGS55 | Subroutine di supporto |
| COGL61 | Gestione listini fornitore |
| CRMS06 / CRMS09 | Informazioni CRM merce |
| GESSTR | Sanificazione/gestione stringhe |
| AZVALIDA | Validazione campo |
Note¶
- Parametri linkage (
util-impmer):impmer-called,impmer-operazione(I/E),impmer-classe,impmer-solo-esistenti,impmer-ordinamento,impmer-tutti-i-dati,impmer-solo-cma-vuoti,impmer-data-ins-da,impmer-data-ins-a,impmer-modello,impmer-output,impmer-output-loc(C=client/S=server),impmer-batch-mode,impmer-esito,impmer-o-msg. - Gli ID campo sono definiti come costanti
78 k-mer-*/k-ma2-*/k-ma3-*/k-ma4-*/k-ric-*/k-mlf-*(circa 168 costanti, in crescita per aggiunte progressive datate). Limite hardk-max-campi = 500,k-len-record = 8000. Alcuni ID sono prefissi per informazioni multiple (es.GIA-QTA-,LISV-, info ModulaMER-MDL-C-/S-/A-). - 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. - Configurazioni RNEWCONF lette (in blocco unico): tra le altre
COGESYS/DELIMITATORE-COLONNE-EXCEL,PROGCOGV06/EUTA-C073-SIZ-DES,CLIPOT/RAGGR-MERCE-PER-SINCRO,CLIPOT/INFO-MERCE-CMI,ricambi/gruppo-merce-ricambi,assist/um-prestazioni-a-tempo,ABILITA/GRUPPO-AZIENDE,merci/ordinamento-default,merci/v06-pagina-listini-fornitore,SISTMERAVA/EUTA-C039-PROG-AUT,LISTVEND/CLASSE-RAGGR-SCONTI,odonto/info-allegati-merci.
Documentazione tecnica -- creata 2026-08-06