5Multi-Field Barcode Scanning

Multi-Field Barcode Scanning

You can now generate/print valid Multi-field barcode scanning using Label Design. This new functionality allows you to specify the barcode construction by editing the expression field of the barcode on Label Design. This gives you the ability to have a function’s text inside the expression field, so that the system can generate a multi-field barcode with the different parts of the GS1 code. You can use either Data Matrix type or UCC_128 to create this barcode, and you should map the Article ID to an existing column, and use the following format when creating a label expression:

[Start C Character] + [FNC1 Character] + Barcode Prefix + [Code A Character] + Merchant ID + [Code C Character] + Article ID (without Merchant ID + [Symbol Check Character] + [Sop Character]

Multi-field Barcode Setup

Multi-field barcodes such as those that are part of the GS1 specification encode multiple fields such as LPN, Item, and expiration date into one barcode. This barcode may be a 1-D format (eg. GS1-128) or 2-D format (DataBar). 2-D formats are capable of storing more characters and therefore more fields within one barcode.

From the Multi Field Barcode tab in Oracle Warehouse Management (WMS) Cloud, you can configure multiple classes of multi-field barcode scanning and define different sets of supported fields within each class.

Multi Field Barcode Tab

Each multi-field barcode class defines all possible fields, and not the contents of any one specific barcode. A class is identified by different prefixes. The barcode scanner must be configured appropriately. Multiple classes can be defined and enabled or disabled. The application has a default multi-field barcode class (MFB1 Sample) that is a subset of the GS1 spec, including fields (AI's or application identifiers in GS1 terminology) that are frequently used in warehouse management. Each field is associated with a standard barcode type.

Working with Multi Field Barcode Classes (Application Identifiers)

The following few sections review steps for working with Multi Field Barcode Classes. To define your data setup, you will be using a delimiter and you will use expressions in Document Label Designer to compose them. Your Multi Field Barcode configuration will define how the data gets broken up from the text that gets scanned in from the barcode.

Note: there are many possible GS1 configurations. This is one example. Please refer to the GS1 Manual for the configuration you need and determine what your mappings should be. Also refer to the Barcode Construction Example in the Support for FNC Characters for GS1 Barcodes topic for more examples and details.

Multiple classes can be defined and enabled or disabled. To edit barcode details such as enabling a class or define a prefix with special character, complete the following steps:

  1. From the Multi Field Barcode screen, select the barcode you would like to edit.
  2. Click Edit. Edit the barcode details and then click Save.

Edit Multi Field Barcode

You can also click Create to add a new Multi Field Barcode and specify details.

To edit Multi Field Barcode Class fields, complete the following steps:

  1. From the Multi Field Barcode tab, select the multi field barcode you would like to edit.
  2. Click Details.
  3. Select the Field you would like to edit. In the following example, the Variable Count field is selected.

    Field

  4. Edit the Multi Field Barcode Class details and click Save

Class Details

The application has a default multi-field barcode class that is a subset of the GS1 spec, including fields (AI's or application identifiers in GS1 terminology) that are frequently used in warehouse management. Each field is associated with a standard barcode type.

Sl No Column Name Description
1 Company Code Company Code to which the barcode is defined
2 Code Code for the multi-field barcode
3 Enabled User can enable or disable the multi-field barcode using this flag. By Default the flag is set to false
4 Prefix with special Character User can select a prefix with special character from this drop-down, including Function 1 or Group Separator.
5 Prefix Text

You can define the prefix for the multi-field barcode. This prefix enables the system to automaticatically identify the scanned data as a multi-field barcode based on the text that has been prefixed in the multi-fied barcode.

You can use any alphabets or a combination of alphabets and special characters supported by GS1 as prefix text.

For example:

]C1 - It is the GS1 Data Bar extended. But there are flavors according to the Laser Gun and design of the Barcode. For example ]C3

]Q1 - It is the GS1 QR Code - But there are flavors according to the Laser Gun and design of the Barcode. For example ]Q3

]d1 It is the GS1 Data Matrix – But for all the different real barcodes we have collected, no one have this code. We have always, in particular for pharmaceutical products the flavor ]d2

6 Prefix Seperator

If you want to define multiple prefix text, you can define it in the “Prefix Text” column seperated by a special character. Inorder for the system to identify the special character, user can define the special character in this column.

You can use any special characters supported by GS1 as prefix text.

7 Remove Prefix If you to remove the prefix from the mult-ifield barcode, you can enable the flag. By default the flag is set to false

Individual fields within a multi-field barcode are prefixed by a code (Field Identifier) which in GS1 is a two digit (or more) number, followed by the value of the field. The field may be fixed with or variable field. If it is variable, it is ended with a delimiter.

From the Multi Field Barcode tab, click details to view the Multi Field Barcode Class Field.

Field Identifier

The following table provides details for Multi Field Barcode field definitions, including WMS Barcode Types that are supported:

Sl No Column Name Description
1 Field Identifier Individual fields within a multi-field barcode are prefixed by a code. User can define that code as field identifier
2 Field Name Field name
3 Maximum Length Max length of the field, not including field name but including check digit.
4 Check Digit Method

The last digit of all fixed-length, numeric GS1 Identification Keys is a check digit that ensures the integrity of the key.

All GS1 ID Keys need a check digit, except Component/Part Identifier (CPID), Global Individual Asset Identifier (GIAI) and Global Model Number (GMN).

5 Barcode Type

The following are the barcode types supported:

  • IB Container
  • OB Container
  • Pallet
  • Item
  • IB Shipment
  • Location
  • Cart
  • Batch Nbr
  • Asset
  • Asset Seal
  • Serial Number
  • OB Load
  • Inv Attribute A
  • Inv Attribute B
  • Inv Attribute C
  • Inv Attribute D
  • Inv Attribute E
  • PO Nbr
  • IB Trailer
  • OB Trailer
  • Seal Nbr
  • Shipping Container
  • Expiry Date
  • Count
  • Weight
  • Manufacture
6 Numeric Flag

To define whether the field is numeric or not. If the field is number, then user can enable the flag

Default False.

7 Fixed Width

To define whether the field length is fixed or not. If the field length is fixed, then user can enable the flag

Mutually exclusive with delimiter_id/text.

Default False.

8 Delimiter Delimiters are used to specify the boundaries between separate regions in a scanned data string. When you are entering delimiters, note that the Separation Delimiter field is required, but the Start Delimiter and End Delimiter fields are optional.
9 Delimiter Text If the field is variable length, user should define delimiter text so that system can identify the field from the multi-field barcode
10 Strip Check Digit Some fields have a check digit defined. This check box applies only in these cases and it will remove the last digit from that field and only use the remaining for processing. You may want to define a check digit depending on how you are using the values in the fields.
11 Date Format

Many different date formats are supported. The following are some examples of date formats:

MMDDYY as %m%d%Y

example output: 09012015

MM-DD-YY as %m-%d-%Y

example output: 09-01-2015

MM/DD/YY as %m/%d/%Y

example output: 09/01/2015

DD/MM/YY as %d/%m/%Y

example output: 01/09/2015

 

DD MM YY as %A %d %B %Y

example output: Monday 01 September 2015

Refer to the following url for a full listing of option characters for date and time formatting:

http://strftime.org/

All RF screens can now recognize multi-field barcodes based on the prefix.

For example: ]C101IBLPNRGN2951800102RGITM003~^~0310~^~

  • Once a certain class is detected, it extracts all the component fields and they are used within the current RF operation. For example, if a receiving option expects an LPN number, manufacturing date, SKU, and count via entry fields (that may be on multiple screens), and a barcode containing the LPN number, manufacturing date and SKU is scanned, all three values will be extracted and used automatically.
  • The application validates all three fields automatically and moves to the next scan.
  • A new RF parameter mfb-restrict-to-curr-fld has been added to certain RF modules like Cycle Count, which can be configured to restrict multi-field barcodes to just apply to the current field and not to extract all fields:

Support for FNC Characters for GS1 Barcodes

Label designer allows you to have certain special characters in font-based Gs1 Linear and Datamatrix barcodes. You can select a value for font type in label designer while editing a barcode.

GS1 font-based barcode functionality allows you to:

  1. Choose the type of barcode field you need (Code 128, A B or C).
  2. Decide on the fields that make up the barcode.
  3. Bring together the fields in an expression that places the FNC characters as required.

Functions

The following functions can be used for this:

gs1_li_code - Accepts a keyword and generates a ZPL instruction that results in this special character on the label. This should be used for GS1 linear barcodes. Supported keywords are: FNC1, FNC2, FNC3, FNC4, STARTA, STARTB, STARTC, CODEA, CODEB and CODEC. Note - Every keyword is NOT applicable to every subset (A, B and C), so the users must know what kind of combinations they are using.

Sample expression to generate an FNC1 character: gs1_li_code('FNC1')

gs1_dm_code - This is the GS1 - Datamatrix equivalent of gs1_li_code. Supported keywords are 'FNC1', 'FNC2', 'FNC3'.

Sample use: gs1_dm_code('FNC1')

chr - This is a basic function. Given an integer value, it returns the corresponding ASCII code. You should ensure that sensible data is passed in based on the column mapping used.

Sample use: chr(29)

gs - Helper function which returns the group separator character (ASCII code 29). This is merely for convenience but it can also be generated using chr (as in the example above).

Commonly known issues/recommendations

  1. Sometimes all that is required is to use Subset A, B or C.
  2. Missing quotes or double quotes, extra quotes, using `instead of. Because of the flexibility and power of expressions we have had to adopt different syntax to support different things.

Example:

In the following Expressions example, pay close attention to the way single quotes and double quotes are used. The 00 is an example of an Application Identifier located at a strategic place (if it is to be used).

gs1_li_code('FNC1') + "00" + "\~container.container_nbr"

Application Identifier

Barcode Construction Example

Note: there are many possible GS1 configurations. This is one example. Please refer to the GS1 Manual for the configuration you need and determine what your mappings should be:

[Start C Character] + [FNC1 Character] + Barcode Prefix + [Code A Character] + Merchant ID + [Code C Character] + Article ID(without Merchant ID + [Symbol Check Character] + [Sop Character]

Article ID: XYZ028373401001860208

This comes back to us as full string but can be broken down by the following components:

  • Merchant ID: XYZ
  • Consignment ID: 0283734
  • Article count: 01
  • Product Code: 00186
  • Service Code: 02
  • Paid Postage Indicator: 0
  • Check Digit: 8

Barcode Prefix = The items listed below in between the Function 1 Symbol & Code A character. This is a fixed value that will always be the same for this example. In this example the value is "0523349852737927562".

Barcode Prefix = [Application Identifier][Indicator][Company Prefix][Item Reference][Check Digit][Application Identifer]

Merchant ID = This is a fixed 3 digit value, in this example it is XYZ.

Article ID (without Merchant ID) = The Article ID defined above needs to have the first three characters and the merchant ID stripped because there needs to be a Code C Character in between the Merchant ID and the other components of the Article ID.

Article ID = [Consignment ID][Article count][Product Code][Service Code][Paid Postage Indicator][Check Digit]

You would then build the barcode like the following example:

[Start C Character] + [FNC1 Character] + 0199312650999998911 + [Code A Character] + XYZ + [Code C Character] + Bytes 4-27 of the LPN Tracking number + [Symbol Check Character] + [Stop Character].

gs1_li_code (GS1 Linear barcode) – This takes in a keyword and returns a special ZPL instruction that results in this character on the label. This should be used for GS1 linear barcodes. Supported keywords are: FNC1, FNC2, FNC3, FNC4, STARTA, STARTB, STARTC, CODEA, CODEB and CODEC.

Note: every keyword is NOT applicable to every subset (A, B and C).

Sample use: gs1_li_code('FNC1')

gs1_dm_code(GS1 Datamatrix barcode) - This is the Datamatrix equivalent of gs1_li_code. Supported keywords are 'FNC1', 'FNC2', 'FNC3'.

Sample use: gs1_dm_code('FNC1')

chr - This is a basic function. Given an integer value, it returns the corresponding ascii code. You should ensure junk values are not passed in gs. This is a helper function which returns the group separator character (ASCII code 29).

Australian Post Example

The expressions are:

DataMatrix

"" if
        "\~carrier_lpn.tracking_nbr"=="" else gs1_dm_code('FNC1') + "0523349852737927562XYZ" +
        gs1_dm_code('FNC1') + "\~carrier_lpn.tracking_nbr"[3:27]

This expression and the dimension configurations together generate the ZPL instructions:

^FO640,100

^BXN,7,200,,,,_,1

^FD_10523349852737927562XYZ
        _1028373401001860208^FS

Linear Barcode (For barcode type 128)

"" if
        "\~carrier_lpn.tracking_nbr"=="" else gs1_li_code('STARTC') + gs1_li_code('FNC1') + "0523349852737927562" + gs1_li_code('CODEA') + "XYZ"
        + gs1_li_code('CODEC') + "\~carrier_lpn.tracking_nbr"[3:27]

This expression and the dimension configurations together produce the ZPL code:

^FO51,550

^BY3^BCN,175,N,N

^FD>;>80523349852737927562 >7XYZ>5028373401001860208^FS

Caution:

For Datamatrix the character _ (underscore) has a special meaning. This character specifies a ZPL instruction for the FNC1. If the data to be barcoded has _ already, then we may need to make some minor changes.

[Start C Character] + [FNC1 Character] + Barcode Prefix + [Code A Character] + Merchant ID + [Code C Character] + Article ID(without Merchant ID + [Symbol Check Character] + [Sop Character]

Image Based Barcode Support

Document Label Designer includes support for image-based barcodes and QR codes which can be used on labels and documents. This is helpful for GS1 labels and documents.

The following functions have been added to Document Label Designer:

  • Python expressions for GS1 now work with image-based barcodes.
  • Compatibility for Linear Barcode Code 128 and Data Matrix.
  • AI Code Function support for ZInt, Zebra, and ID Automation.
  • QR Code Support.
  • Support for Linear And Data Matrix code.
  • New GS1 Code function support that does not require you to have to choose a particular function for a
  • particular output such as Zebra, ZInt, or ID Automation.
  • Adjusted font scaling for pdf documents that are using the ID Automation font.

Document Label Designer includes an examples template called gs1_doc_sample for GS1 barcodes available from the standard template list. If you select this standard template, Label Designer creates a template with a whole set of example barcode expressions for GS1 and also examples for doing sample data expressions.

Note: The underlining technology for image based barcodes does not support the gs1_code functions START A, B, C and FNC 1,2,3. If you want these particular codes, you need to use a font-based barcode. gs1_code, gs1_li_code, and gs1_dm_code functions are not compatible with image-based barcodes. Only gs1_ai functions are compatible with and work with image based barcodes.

The following are examples of expressions you can use for Linear and 2D barcodes:

Use this expression for Linear Barcode Code 128 Text Barcode:

gs1_code("FNC1") + gs1_ai("01") + "98898765432106" + gs1_ai("3202") + "012345" +
        gs1_ai ("15") + "991231"

Use this expression for 2D Barcode Data Matrix Text Barcode:

gs1_code("FNC1") + gs1_ai("01") + "98898765432106" + gs1_ai("3202") + "012345" +
        gs1_ai ("15") + "991231"