In alcuni casi dal formato data definito a livello di utente nella SU01:
Quindi se un utente lavora sempre per uno stesso paese dove il formato data è differente da quello Italiano, per esempio negli USA il formato abituale è MM.GG.AAAA oppure in Cina è AAAA.MM.GG, si può impostare a livello utente e la stampa di moduli Smartforms avviene nel formato corretto.
Si presentano però casi di utenti che lavorano normalmente per la divisione Italiana, ma saltuariamente devono lanciare stampe di documenti per altri paesi, per esempio la Cina.
Ho provato a vedere se da Smartforms erano consentiti dei formati data differenti in fase di output, ma ho trovato davvero poche possibilità di gestione del formato.
Per cui in un primo momento ho pensato di duplicare i campi di output della data, inserire delle condizioni a livello di paese e, per la data nel formato Cinese, scrivere qualche riga di codice.
Duplicato il campo data:
Inserito delle condizioni in modo che una si attivi per ordini con paese fornitore diverso da Cina e una per paese uguale Cina:
ho aggiunto una variabile e scritto una parte di codice che richiami una FORM:
Questa la FORM comune che viene chiamata in diversi punti
il codice per facilitare eventuale copia:
*&---------------------------------------------------------------------*
*& Form DATA_YYYYMMDD
*&---------------------------------------------------------------------*
FORM DATA_YYYYMMDD USING i_data i_sep
CHANGING va_data.
concatenate i_data+0(4) i_data+4(2) i_data+6(2)
INTO va_data SEPARATED BY i_sep.
ENDFORM. "DATA_YYYYMMDD
Ecco il risultato di una stampa ordine di acquisto per un fornitore Cinese:
Però, cercando meglio nel web, ho visto che è possibile impostare il formato data da utilizzare abbinato al paese (inizialmente avevo provato ma non funzionava poichè l'impostazione per il paese Cina era il default come l'Italia).
Per modificare il formato utilizzare per paese:
Transazione OY01
selezionare CN e vedere il dettaglio
impostare il nuovo formato e salvare
Nota: è una modifica di customizing per cui sarà necessario includerla in una CR.
Nella parte di inizializzazione è poi sufficiente, in base al paese o alla organizzazione, scegliere il formato data paese da utilizzare:
IF str_lfa1-land1 = 'CN'.
SET COUNTRY 'CN'.
ENDIF.
ed il formato data riportato in stampa risulterà corretto senza dover duplicare le strutture e gestire le varie condizioni: molto più semplice!
Dopo aver modificato, per il paese Cina, il formato data con la OY01, ci siamo però accorti che alcuni documenti prendevano il nuovo formato sebbene nello SMARTFORMS non fosse contenuto il comando SET COUNTRY!
Sto parlando per esempio di fatture da Italia verso clienti Cinesi e l'ufficio contabilità mi ha confermato che le fatture da società Italia devono avere sempre data in formato Italiano.
Investigando un po' ho scoperto che dipende dal programma di lancio dello SMARTFORMS.
Per esempio per le fatture il programma è lo standard RLB_INVOICE, che ad un certo punto esegue:
PERFORM set_print_param USING ls_addr_key
ls_dlv-land
CHANGING ls_control_param
ls_composer_param
ls_recipient
ls_sender
cf_retcode.
dove ls_dlv-land contiene il paese del cliente (CN)
Nella FORM SET_PRINT_PARAM troviamo poi:
CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
EXPORTING
PI_NAST = NAST
PI_COUNTRY = IS_DLV-LAND
PI_ADDR_KEY = IS_ADDR_KEY
PI_SCREEN = XSCREEN
IMPORTING
PE_RETURNCODE = CF_RETCODE
PE_ITCPO = LS_ITCPO
PE_DEVICE = LF_DEVICE
PE_RECIPIENT = CS_RECIPIENT
PE_SENDER = CS_SENDER.
dove IS_DLV-LAND contiene sempre il paese del cliente (CN)
infine nel FM WFMC_PREPARE_SMART_FORM c'è il comando
SET COUNTRY pi_country.
in questo caso quindi non vale l'impostazione a livello di utente, ma prende l'impostazione del paese destinatario del documento.
Per risolvere ho inserito, nella parte INIZIALIZZ. dello SMARTFORMS fatture e solo per l'org.commerciale IT, il comando
SET COUNTRY 'IT'.
Attenzione quindi, se cambiate l'impostazione a livello di paese, all'impatto sui documenti stampati con destinazione quel paese.
Nessun commento:
Posta un commento