Per ulteriori informazioni sui filtri in generale, vedere la sezione I filtri.
Usare questo filtro quando un trigger riceve i dati codificati XML. Il filtro consente di estrarre singoli campi, campi in aree secondarie ripetibili e addirittura coppie name-value
. La struttura XML definisce elementi e sottoelementi, attributi e relativi valori e valori di testo (valori di elementi).
Anche se è possibile definire la struttura da soli la struttura del file XML, NiceLabelconsiglia di importare la struttura dal file XML di esempio esistente. Fare clic sul pulsante Importa struttura dati sul nastro. Dopo aver importato la struttura XML, nella sezione Anteprima dati viene visualizzato il contenuto XML. Sono inoltre evidenziati gli elementi e gli attributi definiti come campi di output.
Per gli esempi di dati XML, vedere la sezione Dati XML.
Definizione della struttura
Per usare gli elementi XML, configurarli come:
-
Valore variabile: specifica che si desidera usare l'elemento selezionato come campo e che il suo valore sarà mappato sulle rispettive variabili nell'azione Usa filtro dati. Per ulteriori informazioni, vedere la sezione Definizione dei campi XML.
-
Elemento opzionale: specifica che l’elemento non è obbligatorio. Esso corrisponde all’attributo dello schema XML (file XSD)
minOccurs=0
. Se l'elemento non appare nel documento XML, la variabile mappata su tale campo avrà un valore vuoto.
-
-
Blocco di dati: specifica che l’elemento selezionato si presenta più volte e fornisce i dati per una singola etichetta. Il blocco di dati può essere definito come area ripetibile, come area di assegnazione o entrambe.
-
Area ripetibile: specifica che si desidera estrarre i valori da tutti i blocchi di dati ripetibili, non solo dal primo. È possibile definire i campi dall'interno di ciascun blocco di dati. Mappare i campi definiti sulle rispettive variabili nell'azione Usa filtro dati. Per ulteriori informazioni, vedere la sezione Definizione di elementi ripetibili.
-
Area di assegnazione: specifica che il blocco di dati contiene coppie
name-value
. I nomi di campo e i relativi valori vengono letti simultaneamente. La mappatura sulle variabili viene eseguita automaticamente. Usare questa funzionalità per adattare il filtro ai dati di input modificabili, eliminando il tempo di manutenzione. Per ulteriori informazioni, vedere la sezione Definizione dell'area di assegnazione XML.
-
La sezione Anteprima dati semplifica la configurazione. Il risultato di una regola di filtro definita è evidenziato nell'area di anteprima.
Per modificare i dati XML visualizzati in anteprima, fare clic su Apri e cercare un nuovo file XML di esempio.
Se si definiscono i campi XML si rendono automaticamente disponibili gli elementi selezionati. La definizione dei filtri rende disponibili tali campi per la mappatura sulle variabili nelle azioni. Ciò consente di estrarre i valori degli elementi o degli attributi.
Per definire come campo un valore dell'elemento, procedere come segue:
-
Selezionare l'elemento o l'attributo nell'elenco della struttura.
-
Per Uso, selezionare Valore variabile.
-
L’elemento è visualizzato sull’elenco di strutture con lettere in grassetto, a indicare che esso è in uso.
-
L'elemento o il nome dell'attributo viene usato come nome del campo di output.
-
La sezione Anteprima dati evidenzia il valore dell'elemento selezionato.
Opzioni di formattazione
Questa sezione definisce le funzioni di manipolazione delle stringe che si applicano alle variabili o ai campi selezionati. È possibile selezionare una o più funzioni. Queste funzioni si applicano nello stesso ordine selezionato nell’interfaccia utente: dall'alto verso il basso.
-
Elimina spazi all'inizio: Elimina tutti i caratteri spazio (codice decimale ASCII 32) dall'inizio di una stringa.
-
Elimina spazi alla fine: Elimina tutti i caratteri spazio (valore decimale ASCII 32) dalla fine di una stringa.
-
Elimina carattere di apertura e chiusura: Elimina la prima occorrenza dell'apertura selezionata e i caratteri di chiusura presenti in una stringa.
Esempio 10. Esempio
Se si usa "{" for opening character and "}" per il carattere di chiusura, la stringa di input
{{selection}}
viene convertita in{selection}
.
-
Cerca e sostituisci: Esegue la funzione di ricerca e sostituzione standard in base ai valori specificati per cerca e Sostituisci con. È anche possibile usare le espressioni regolari.
Nota
Esistono diverse implementazioni delle espressioni regolari in uso. usa la sintassi .NET Framework per le espressioni regolari. Per ulteriori informazioni, consultare la knowledge base articolo.
-
Sostituisce caratteri non stampabili con spazi: Sostituisce tutti i caratteri di controllo presenti nella stringa con il carattere spazio (codice decimale ASCII 32). I caratteri non stampabili sono caratteri con valori ASCII decimali compresi tra 0–31 e 127–159.
-
Elimina caratteri non stampabili: Elimina tutti i caratteri di controllo presenti nella stringa. I caratteri non stampabili sono caratteri con valori ASCII decimali compresi tra 0–31 e 127–159.
-
Decodifica caratteri speciali: i caratteri speciali (o codici di controllo) sono caratteri che non sono disponibili sulla tastiera, come Ritorno a capo o Avanzamento riga. usa una notazione per codificare caratteri in forma leggibile, come <CR> per Ritorno a capo e <LF> per Avanzamento riga. Per ulteriori informazioni, vedere la sezione Immissione dei caratteri speciali (codici di controllo).
Questa opzione converte i caratteri speciali dalla sintassi in caratteri binari veri e propri.
Esempio 11. Esempio
Quando si riceve la sequenza di dati "<CR><LF>", li usa come stringa normale da 8 caratteri. Attivare questa opzione per interpretare e usare i dati ricevuti come due caratteri binari
CR
(Ritorno a capo – codice ASCII 13) eLF
(Avanzamento riga – codice ASCII 10).
-
Cerca ed elimina tutto prima: Trova la stringa specificata ed elimina tutti i caratteri dall'inizio dei dati fino alla stringa. La stringa trovata può anche essere eliminata.
-
Cerca ed elimina tutto dopo: Trova la stringa specificata ed elimina tutti i caratteri dalla stringa fino alla fine dei dati. La stringa trovata può anche essere eliminata.
-
Cambia maiuscole/minuscole: Cambia tutti i caratteri nelle stringhe in maiuscolo o minuscolo.
Anteprima dati
Questa sezione fornisce un’anteprima della definizione del campo. Se l'elemento definito è selezionato, l'anteprima ne evidenzia la posizione nei dati di anteprima.
-
Nome file anteprima: specifica il file che contiene i dati di esempio che saranno analizzati dal filtro. Il file di anteprima viene copiato dalla definizione filtro. Se si modifica il nome del file di anteprima, il nuovo nome di file viene salvato.
-
Apri: seleziona un altro file sul quale eseguire le regole del filtro.
-
Aggiorna: Riesegue le regole del filtro in base al contenuto del nome del file di anteprima. Automation aggiorna la sezione Anteprima dati con il risultato.
Se un elemento XML si presenta più volte nei dati XML, si tratta di un elemento ripetibile. Di solito, un elemento ripetibile contiene dati per una singola etichetta. Per indicare che si desidera usare i dati di tutti gli elementi ripetibili e non soltanto del primo, definire l'elemento come Blocco di dati e attivare l'opzione Elemento ripetibile. Se il filtro contiene la definizione degli elementi definiti come blocco di dati/elemento ripetibile, l'azione Usa filtro dati visualizza gli elementi ripetibili con segnaposto nidificati. Tutte le azioni nidificate al di sotto del segnaposto vengono eseguite solo per i blocchi di dati a questo livello.
Esempio
L'elemento <item>
è definito come Blocco di dati ed Elemento ripetibile. Ciò indica al filtro di estrarre tutte le occorrenze dell'elemento <item>
, non soltanto il primo. In questo caso, <item> andrebbe definito come sottolivello nell'azione Usa filtro dati. È necessario nidificare le azioni Apri etichetta e Stampa etichetta nel segnaposto del sottolivello, in modo tale che esse siano sottoposte a un ciclo il numero di volte corrispondente alle occorrenze presenti nell'elemento <item>
. Come mostrato nell’esempio seguente, per tre volte.
<?xml ver sion="1.0" encoding="utf-8"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" ver sion="1.0"> <asx:values> <NICELABEL_JOB> <T IMEST AMP>20130221100527.788134</T IMEST AMP> <USER>PGRI</USER> <IT _LABEL_DAT A> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS ONE</MAKT X> <MAT NR>28345</MAT NR> <MEINS>KG</MEINS> <WDAT U>19.01.2012</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234560</EXIDV> </item> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS T WO</MAKT X> <MAT NR>28346</MAT NR> <MEINS>KG</MEINS> <WDAT U>11.01.2011</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234577</EXIDV> </item> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS T HREE</MAKT X> <MAT NR>27844</MAT NR> <MEINS>KG</MEINS> <WDAT U>07.03.2009</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234584</EXIDV> </item> </IT _LABEL_DAT A> </NICELABEL_JOB> </asx:values> </asx:abap>
Avvertimento
Il filtro dati XML con blocco dati nidificato duplica i valori dell'area di assegnazione precedente se una variabile è definita nel primo blocco ma non nel secondo. Ad esempio, vengono stampate due etichette. Nella prima area di assegnazione è stata definita una variabile<manufacturer_serial>
. Nella seconda area di assegnazione questa variabile non è presente.
<?xml ver sion="1.0" encoding="utf-8"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" ver sion="1.0"> <jobs> <element> <data> <item> <manufacturer_serial>706583012001</manufacturer_serial> <package_code>AA792CY</package_code> </item> </data> <label_filename>serial_number_label.nlbl</label_filename> <print_quantity>1</print_quantity> <printer_name>Warehouse_printer_09</printer_name> </element> <element> <data> <item> <package_code>BE273XS</package_code> </item> </data> <label_filename>serial_number_label.nlbl</label_filename> <print_quantity>1</print_quantity> <printer_name>Warehouse_09</printer_name> </element> </jobs> </asx:abap>
Il risultato atteso sarebbe la seconda etichetta senza dati <manufacturer_serial>
. Ma nella stampa effettiva, la seconda etichetta conterrebbe il valore <manufacturer_serial>
della prima etichetta, che è 706583012001.
Ci sono quattro possibili soluzioni:
-
Evitare i blocchi di dati nidificati.
-
Definire i valori delle variabili come valori vuoti, se le variabili non vengono utilizzate nei blocchi di dati nidificati.
<item> <manufacturer_serial></manufacturer_serial> <package_code>AA792CY</package_code> </item>
-
Utilizzare le condizioni sulle azioni per impostare le variabili.
-
Utilizzare le manipolazioni di stringhe quando vengono rilevate variabili mancanti.
Il filtro XML identifica automaticamente i campi e i relativi valori nei dati ricevuti. Ciò rende superflua la mappatura manuale variabile sul campo.
La funzionalità Struttura dinamica è utile se il trigger riceve i dati con la struttura mutevole. In questi casi, la struttura dei dati principali rimane invariata (ad esempio, i campi sono delimitati da una virgola), o mantiene la stessa struttura, ma cambia l’ordine e/o il numero dei campi. Potrebbero esserci nuovi campi o alcuni dei vecchi campi potrebbero non essere più disponibili. Poiché la Struttura dinamica è attivata, il filtro automatico identifica la struttura del file ricevuto. Allo stesso tempo, il filtro legge i nomi e i valori di campo (coppie name:value
) dai dati. Questo elimina la necessità di mappare manualmente i campi sulle variabili.
L’azione Usa filtro dati non offre possibilità di mappatura, in quanto esegue dinamicamente la mappatura. Non è nemmeno necessario definire le variabili di etichetta nella configurazione del trigger. L'azione assegna i valori di campo sulle variabili di etichetta con lo stesso nome, senza dover importare le variabili dall'etichetta. Tuttavia, questa regola si applica solo all'azione Stampa etichetta. Se si desidera usare i valori di campo in qualsiasi altra azione, è necessario definire le variabili nel trigger, mantenendo al tempo stesso la mappatura automatica variabile - sul - campo.
Nota
Se il campo disponibile nei dati di input non ha una variabile di etichetta corrispondente, non viene generato nessun errore. ignora silenziosamente le variabili mancanti.
Configurazione dell'area di assegnazione XML
Quando si configura il blocco dati come area di assegnazione, nella definizione di questo elemento vengono visualizzati due segnaposto. È necessario definire il modo in cui il nome di campo e il valore vengono definiti, quindi il filtro può estrarre la coppia name-value
.
-
Nome variabile: specifica l'elemento che contiene il nome di campo. Il nome può essere definito per nome di elemento, valore di attributo selezionato o valore di elemento. Per attivare la mappatura automatica, la variabile di etichetta deve avere lo stesso nome.
-
Valore variabile: specifica l'elemento che contiene il valore di campo. Il nome può essere definito dal nome di elemento, valore di attributo selezionato o valore di elemento.
Avvertimento
L'elemento XML contenente le coppie name:value
non può essere impostato come elemento principale: questo elemento deve essere impostato almeno come elemento di secondo livello. Come mostrato nell'esempio XML seguente, l'elemento <label>
è l'elemento di secondo livello e può contenere le coppie name:value
.
Opzioni di formattazione
Questa sezione definisce le funzioni di manipolazione delle stringe che si applicano alle variabili o ai campi selezionati. È possibile selezionare una o più funzioni. Queste funzioni si applicano nello stesso ordine selezionato nell’interfaccia utente: dall'alto verso il basso.
-
Elimina spazi all'inizio: Elimina tutti i caratteri spazio (codice decimale ASCII 32) dall'inizio di una stringa.
-
Elimina spazi alla fine: Elimina tutti i caratteri spazio (valore decimale ASCII 32) dalla fine di una stringa.
-
Elimina carattere di apertura e chiusura: Elimina la prima occorrenza dell'apertura selezionata e i caratteri di chiusura presenti in una stringa.
Esempio 12. Esempio
Se si usa "{" for opening character and "}" per il carattere di chiusura, la stringa di input
{{selection}}
viene convertita in{selection}
.
-
Cerca e sostituisci: Esegue la funzione di ricerca e sostituzione standard in base ai valori specificati per cerca e Sostituisci con. È anche possibile usare le espressioni regolari.
Nota
Esistono diverse implementazioni delle espressioni regolari in uso. usa la sintassi .NET Framework per le espressioni regolari. Per ulteriori informazioni, consultare la knowledge base articolo.
-
Sostituisce caratteri non stampabili con spazi: Sostituisce tutti i caratteri di controllo presenti nella stringa con il carattere spazio (codice decimale ASCII 32). I caratteri non stampabili sono caratteri con valori ASCII decimali compresi tra 0–31 e 127–159.
-
Elimina caratteri non stampabili: Elimina tutti i caratteri di controllo presenti nella stringa. I caratteri non stampabili sono caratteri con valori ASCII decimali compresi tra 0–31 e 127–159.
-
Decodifica caratteri speciali: i caratteri speciali (o codici di controllo) sono caratteri che non sono disponibili sulla tastiera, come Ritorno a capo o Avanzamento riga. usa una notazione per codificare caratteri in forma leggibile, come <CR> per Ritorno a capo e <LF> per Avanzamento riga. Per ulteriori informazioni, vedere la sezione Immissione dei caratteri speciali (codici di controllo).
Questa opzione converte i caratteri speciali dalla sintassi in caratteri binari veri e propri.
Esempio 13. Esempio
Quando si riceve la sequenza di dati "<CR><LF>", li usa come stringa normale da 8 caratteri. Attivare questa opzione per interpretare e usare i dati ricevuti come due caratteri binari
CR
(Ritorno a capo – codice ASCII 13) eLF
(Avanzamento riga – codice ASCII 10).
-
Cerca ed elimina tutto prima: Trova la stringa specificata ed elimina tutti i caratteri dall'inizio dei dati fino alla stringa. La stringa trovata può anche essere eliminata.
-
Cerca ed elimina tutto dopo: Trova la stringa specificata ed elimina tutti i caratteri dalla stringa fino alla fine dei dati. La stringa trovata può anche essere eliminata.
-
Cambia maiuscole/minuscole: Cambia tutti i caratteri nelle stringhe in maiuscolo o minuscolo.
Esempio
L'elemento <label>
è definito come blocco di dati e area di assegnazione. Il nome della variabile è definito dal valore del nome dell'attributo, il valore della variabile è definito dal testo dell'elemento.
<?xml version="1.0" standalone="no"?> <labels _FORMAT="case.nlbl" _PRINTERNAME="Production01" _QUANTITY="1"> <label> <variable name="CASEID">0000000123</variable> <variable name="CARTONTYPE"/> <variable name="ORDERKEY">0000000534</variable> <variable name="BUYERPO"/> <variable name="ROUTE"> </variable> <variable name="CONTAINERDETAILID">0000004212</variable> <variable name="SERIALREFERENCE">0</variable> <variable name="FILTERVALUE">0</variable> <variable name="INDICATORDIGIT">0</variable> <variable name="DATE">11/19/2012 10:59:03</variable> </label> </labels>