venerdì 17 marzo 2017

Smartforms con caratteri cinesi: viene modificato l'aspetto delle scritte occidentali.

Da qualche giorno mi sto "dilettando" a tradurre degli Smartforms in lingua cinese: un vero divertimento!

Pensavo che la traduzione fosse una operazione molto "meccanica", come ho già fatto per la lingua Turca tramite la SE63, ma con i caratteri cinesi mi sono trovato a dover risolvere un problema nuovo:

Quando in uno Smartforms sono usati caratteri cinesi, vengono modificati aspetto e dimensioni anche alle scritte che restano con caratteri occidentali.

Premesse:
  1. Nel sistema SAP è già stata installata la lingua ZH = Cinese semplificato.
  2. La scelta è quella di non duplicare il modulo per poter lavorare in libertà con la versione cinese, ma quella invece di avere un unico modulo che, in base alla lingua di stampa, si adatta alle varie lingue: molto meglio e davvero più pratico, soprattutto per la gestione delle modifiche che, altrimenti, si devono replicare su tutte le copie!
Vi mostro meglio con delle immagini il problema descritto, questa è la stampa in lingua Italiana di un ordine di acquisto


da notare che in alto a dex l'ordine è scritto in grassetto, come il nome fornitore, le righe sono contigue i caratteri ben definiti e stampati

questa invece è la stampa se si sceglie la lingua cinese


il numero ordine e il nome del fornitore non sono più in grassetto, addirittura il numero posizione della riga va a capo e, in generale, tutti i caratteri risultano di aspetto differente.

Nella definizione dello stile il carattere usato è HELVE.

Mi sono quindi messo a cercare una soluzione, ho trovato diversi post su argomenti simili "Smartforms: Different Font in English and Chinese language output", ma nessuna soluzione definitiva:
  • c'è chi suggeriva di usare font specifici per la lingua cinese tipo CNSONG, che ho provato ma il problema restava lo stesso (ho provato anche CNSONGP)
  • c'è chi suggeriva di copiare il modulo in una nuova versione specifica per il cinese, cosa che non volevo fare.
  • chi addirittura suggeriva lanciare il modulo chiamando in modo dinamico lo stile da usare, nello stile poi dichiarare come default differenti tipi di carattere, uno per le stampe occidentali e uno per il cinese. Questo però non risolve il problema poichè si trovano, nella stessa pagina, le scritte nelle 2 lingue.
  • Una nota Sap suggeriva di utilizzare il driver SWIN; ho provato (anche con SWINCF e SWINCFC) ma il problema era lo stesso.
  • c'è chi diceva che la soluzione non è possibile poichè:
scenaio 1: usando font HELVE:

- scritte occidentali OK
- scritte cinesi NO

scenario 2: usando font CNSONG

- scritte occidentali NO
- scritte cinesi SI

per cui proponeva addirittura di duplicare tutti i nodi nello smartforms per poi lavorare in modo puntuale in base alla lingua.

Alla fine, dopo molti tentativi quando pensavo quasi di arrendermi, è arrivata la soluzione: semplicemente utilizzare il carattere HELV_I7 !


non chiedetemi come mai per il carattere "ISO-7: Greek Helvetica" le cose funzionano a dovere, ma è davvero così.

questo è un esempio di come viene la stampa


Il numero ordine e il nome fornitore restano in grassetto e il numero posizione non viene portato nella riga sotto.

Nota: adesso le due righe non sono contigue poichè abbiamo previsto, se la stampa dell'ordine avviene in una lingua diversa da Italiano e Inglese, di riportare sempre una riga aggiuntiva con la descrizione del materiale in lingua inglese.

Aggiungo immagini di dettaglio un po' ingrandite in modo da poter vedere meglio il problema.

Ordine in lingua IT usando caratteri HELVE

Ordine in lingua CN sempre usando caratteri HELVE (senza nessuna modifica al modulo smartforms)

Ordine in lingua CN usando caratteri HELV_I7


Nessun commento:

Posta un commento