Sei sulla pagina 1di 107

MWA Express Server

User Guide
Release 1.8

May 2017
Table of Contents

Chapter 1 - Product Summary ............................................................ 2


Chapter 2 - Features and Benefits ....................................................... 3
Chapter 3 - Installation Guide ............................................................. 5
Chapter 4 - Administration Guide....................................................... 9
Chapter 5 - Personalization Setup ..................................................... 10
Chapter 6 - Personalizing Mobile Pages ............................................ 14
6.1 Page Properties 16
6.2 Field Properties 19
6.3Token Variable 26
6.4Developing New Inquiry Page 26
6.5Developing New Transaction Page 28
Chapter 7 - Scripting ......................................................................... 30
Chapter 8 –Value Added Features .................................................... 41
8.1 Ondemand UserLevel Logging 41
8.2E-Signature 41
8.3Voice-plus-Scan 43
8.4 Quick Reconnect 44
8.5 Kill Session 44
8.6 Express Scan 44
Chapter 9 - Personalization Migration .............................................. 45
Chapter 10 -MWA Express Server Personalization Use Cases ......... 47
Chapter 1 - Product Summary
Intellinum MWA Express Server is an Oracle Validated Integration solution for Oracle WMS
and MSCA. It empowers business to maximize their return on investment by allowing them to
enhance Oracle WMS and MSCA mobile transactions so the screens are more personalized per
business requirements. With this product, a business analyst or a super user who has intimate
knowledge of the business process can personalize the mobile transactions to automate data
entries, streamline operations, add validations to enforce business rules, introduce new fields to
capture additional information, create new mobile pages to perform inquiry or custom
transactions, and use value-added features such as voice-plus-scan and e-Signature.

Intellinum MWA Express Server recognizes that every company has different needs, so it
provides all of its features with great flexibility. Personalization can be setup at different levels:
Site, Responsibility, Organization and User. Furthermore, the result works for all types of MWA
clients - desktop and handheld, telnet and GUI. Last but not least, all of these can be done
without modifying Oracle’s code, making the personalization easy-to-do, patch-safe, and
upgrade-safe.

Intellinum MWA Express Server integrates seamlessly with Oracle E-Business Suite. The
product is installed and runs on the same application tier where current Oracle E-Business Suite
MWA server runs and the personalization metadata are stored in Oracle E-Business Suite
database. This eliminates additional hardware investment. The product administration is also
very similar with Oracle E-Business Suite MWA server so there is no learning curve for system
administrator or DBA.

Screenshot of the MWA Express Server architecture

47
Chapter 2 - Features and Benefits
The personalization features of MWA Express Server works for all mobile transactions,
regardless if they are standard or custom developed. Here are some ideas of what the product can
do:

 Add new fields to display or capture additional information

 Hide optional fields to streamline the operations

 Addfield validation to enforce business rules

 Set fields default value to reduce key strokes

 Addfield automation (auto-enter) to skip field, allowing user to auto navigate to


the next field without pressing Enter, Down arrow or Tab

 Automate Generate LPN/Lot or Display LOV page

 Make optional fields be required to enforce specific business rule

 Make editable fields be non-editable to prevent user error

 Change page title or field prompt to make the transactions more user-friendly

 Addbarcode delimiter to any fields, allowing transactions to be done in fewer


scans

 Change LOV field properties to enforce specific business rule

 Add an Input Pre-processor to process data from user. Unlike custom scan
manager, this feature works for data from scanner or keyboard. Use cases include
data validation, parsing single data to multiple fieldsvalues and performing item
cross reference translation.

 Create new custom page to perform inquiry or custom transaction

 Add E-Signature feature to capture signature in any mobile transaction

 Add Voice-plus-scan feature, allowing users to get voice direction from system so
they can perform transactions without looking at the screen. This feature not only
improves user efficiency, but increases user safety on the floor as well.

3
 Quick Reconnect, allowing users to reconnect to their mobile session without
logging in.

 Image field, allowing user to see picture in the transaction page.

Note: E-Signature, Voice-plus-scan, Quick Reconnect, and Image fieldfeatures


are only available when MWA Express Client is used as the MWA client
technology.

To extend the personalization feature to the next level, MWA Express Server provides scripting
capability allowing users who are familiar with Java or PL/SQL programming language to write
additional business logic. Scripting will be discussed further in this guide.

Personalization can be done easily ona regular Telnet client or an MWA Express desktop GUI
client which is included as part of the solution. The desktop GUI clientprovides property palettes
and script editor to facilitate the personalization process. It can also be used as a regular MWA
GUI client for performing transactions on desktop.

Screenshots of the MWA Express Desktop client

4
Chapter 3 - Installation Guide
For R12.1.X and below
This section describes how to install the MWA Express server. The steps are as follows.
o FTP the installer zip file into an Oracle EBS application tier directory, this directory can
be a temporary directory.
o Login to middle tier as application manager user. Run script to setup the Oracle EBS
environment variables.
o Unzip the file from step #1, this should unzip files into mwaexp directory
o Change directory to the mwaexp directory
o Change the mode of extracted script file by using chmod +x *.sh (for unix operating
system)
o Run script ./XXINT_MWA_EXPRESS_SERVER_inst.sh
o Follow the installation instruction and check the log details after installation
a. It will ask for database user apps password
b. It will ask for installation schema to create custom tables – this schema can be
apps or existing pre-created custom schema. Please note that install schema needs
to be pre-created beforehand.
c. It will ask for database host, port and SID
d. It will ask for a directory in the database tier file system for use in
personalization migration. Default value is /usr/tmp.
e. It will ask for installation schema password.

Installer script creates custom database objects (tables, sequences, indexes, views, grants
and synonyms), new Oracle EBS objects (profile option, concurrent programs), deploy a
few Java library files in application tier $AF_JLIB, copy license key to
$INST_TOP/admin/install and create a new script to start/stop the MWA Express Server
process in $INST_TOP/admin/scripts.

5
Screenshots:

6
For R12.2.X
This section describes how to install the MWA Express server. The steps are as follows.
o Ensure that a patch run is not currently taking place.
adop -status

o Connect to Run environment


. ./EBSapps.env run

o Start a patch run cycle


adop phase=prepare

o Connect to Patch environment


. ./EBSapps.env patch

o Once in the patch environment, run the same steps as described for R12.1.x (page 6)

o Edit $INST_TOP/admin/scripts/mwactlwrpr.sh, update all occurrences of mwactl.sh to


mwaexpctl.sh in the file.

o Add Entries to the Custom Synchronization Driver File


vi $APPL_TOP_NE/ad/custom/adop_sync.drv

Add the following to this file after "#Begin Customization"


cp %s_current_base%/EBSapps/comn/java/lib/mwaexp.jar
%s_other_base%/EBSapps/comn/java/lib
cp %s_current_base%/EBSapps/comn/java/lib/aspectjweaver.jar
%s_other_base%/EBSapps/comn/java/lib
cp %s_current_base%/inst/apps/$CONTEXT_NAME/admin/scripts/mwactlwrpr.sh
%s_other_base%/inst/apps/$CONTEXT_NAME/admin/scripts
cp %s_current_base%/inst/apps/$CONTEXT_NAME/admin/scripts/mwaexpctl.sh
%s_other_base%/inst/apps/$CONTEXT_NAME/admin/scripts
cp %s_current_base%/inst/apps/$CONTEXT_NAME/admin/install/mwaexpkey.ini
%s_other_base%/inst/apps/$CONTEXT_NAME/admin/install

7
o Switch back to Run edition
. ./EBSapps.env run

o Run the adop cutover phase. Note that this will require a brief downtime for the users.
adop phase=cutover

o Switch to the new Run edition


. ./EBSapps.env run

o Run Cleanup
adop phase=cleanup

8
Chapter 4 - Administration Guide
This section describes how to start and stop the MWA Express server.
Starting the server
For R12:
 cd $INST_TOP/admin/scripts
 mwaexpctl.sh start [port number]
For 11.5.10:
 cd $MWA_TOP/bin
 mwaexpctl.sh start [port number]

Stopping the server


For R12:
 cd $INST_TOP/admin/scripts
 mwaexpctl.sh –login username/password stop_force [port number]
For 11.5.10:
 cd $MWA_TOP/bin
 mwaexpctl.sh –login username/password stop_force [port number]

If there is an existing cron job which performs daily bounce of standard MWA server, please
make sure it is modified to perform daily bounce of standard MWA Express Server. This can be
done by simply modifying the script to call mwaexpctl.sh instead of mwactl.sh. Another option
is to backup mwactl.sh and copy mwaexpctl.sh to mwactl.sh. However, autoconfig may override
mwactl.sh so for this option, we need to modify the mwactl.sh template in
$MWA_TOP/admin/template or perform the copy of mwaexpctl.sh to mwactl.sh as post
autoconfig step.

The MWA Express Server works seamlessly with Oracle MWA Dispatcher. If dispatcher is in
use, we can keep the dispatcher administration as is.

9
Chapter 5 - Personalization Setup
This section describes how to enable personalization administration for a user and how to
validate the success of the installation.

Personalization User Setup


As part of the product, there is a new profile option “XXINT: Enable MWA Personalization
Admin” which is updatable at user level only. Possible values are “Yes” or “No”. If the value is
“Yes”, the user can invoke the Personalization Page from any application mobile page.
Here is an example of user MFG who is setup to perform personalization.

Once personalization administration is enabled, the personalization page is invoked by pressing


Ctrl-Q at any application mobile page. To verify the success of the installation, we will set up a
simple personalization to change page title of the Miscellaneous Transaction mobile page. At the
end, we will reset the personalization so the page title is reverted back to the standard value.

10
Please use the personalization administrator user that was setup earlier, and connect to the MWA
Express Server port (please confirm the port number with DBA) using Telnet client.

Navigation
For MSCA user: Login > Materials Mgmt > Inventory > Receipts > Misc Receipt
For WMS user: Login >Whse Mgmt >Warehousing >Inventory > Receipts > Misc Receipt

Verification Check List

o Press Ctrl-Q and verify that the Personalization Page shows up

Press Ctrl-Q
to invoke
Personalization
Page

o Press Down Arrow once to go to the Page Title property


o Press Ctrl-K to remove the current field value and set its new value “Test”
o Press F2 to save the personalization and verify that we are back to menu and the status
bar says “Changes has been saved”

o Enter the Miscellaneous Receipt transaction to verify that the page title has changed to
“Test”

11
o Now, we are going to remove the personalization and revert the title back to its original
value.
o Press Ctrl-Q to invoke the Personalization Page
o Press F4 to reset personalization. Confirmation dialog will appear.

o Press Y to confirm the reset and verify that we are back to menu and the status bar says
“Personalization has been set to default. Press any key to continue.” Press Ctrl-B if
necessary to see the full text message.

12
o Go back to the Miscellaneous Receipt transaction once more to verify that the page title
has been reverted back to its original value

13
Chapter 6 - Personalizing Mobile Pages
This section explains how to use the MWA Express Server to personalize mobile pages.

Understanding Personalization
Personalizing a mobile page essentially means changing the page or field property values
according to the business requirement. Personalization can be done at different levels:
 Site
 Responsibility
 Organization
 User

This allows personalization on the same mobile page for different users, organizations, and
responsibilities, providing great flexibility.

Here are some use cases:


1. Personalizing Alias/Miscellaneous Issue/Receipt mobile page to make Reason field
required.
2. Personalizing Subinventory Transfer mobile page to hide LPN field for a specific
organization because all subinventories in that organization are not LPN controlled. This
reduces keystroke for user to navigate out of that field and eliminates chance of user
error.
3. Personalizing the Label Request mobile page to defaulting Printer field for a specific
user.
4. And many more…

When a personalization administrator presses Ctrl-Q on a mobile page, system displays the
personalization page. In that page, the system displays all the fields for the current page and their
properties. If there is an active personalization on the mobile page, system displays the
personalized value. Otherwise, by default system displays the Site level with the current value of
the field properties. The personalization administrator user reviews and sets the level where the

14
personalization should be applicable, page and fields properties according to their business
requirement.

Finally, the personalization administrator can choose to:


 Save the personalization data. The shortcut is function key F2.
 Cancel personalization. The shortcut for this is function key F3.
 Remove personalization for the selected level and reset page to its default state. The
shortcut is function key F4.

At runtime, whenever a user visits a personalized page, personalization level is determined by


querying system to see which level has personalization data. The query starts from the most
specific level which is User all the way up to Site, i.e. User → Organization →Responsibility
→Site. Once found, the personalization data will be loaded and applied.

Personalization Properties
In order to achieve correct result, the personalization administrator needs to understand the
meaning of the page and field properties. In this section, we will describe each property in
details.

There are multiple types of fields in the mobile pages: regular input field, LOV (List-of-Value)
field, button field, and so on. Each type has a set of properties that makes sense only for that
type. For example, a regular input field has properties like Prompt, Rendered, Skip, Read Only,
Required, DFI, and Barcode Delimiter. The same properties applies for LOV field, except LOV
field has additional properties such as the LOV statement, the LOV input parameter values and
types, the LOV columns prompt, and so on.

Important Note:
MWA Express exposes all fields for personalization. This includes hidden fields that
are used internally by Oracle code for transactions. Please take care when personalizing
so those hidden fields used internally by Oracle are not changed.

15
6.1 PAGE PROPERTIES
• Page Title
This property stores the title of the page. This can be used for making the
transaction more user-friendly.
Note: To add current organization to the title, use token ${ORGCODE}
• Prompt Ratio
This property stores the field prompt to value ratio. For example, if the screen
width is 30 and prompt ratio is 1:4, then we will use 6 spaces for field prompt and
24 spaces for field value.
• On Page Entered
This property stores actions performed during page entered event. This can be
used to default field values, hide or display fields, and so on. We can use more
than one action separated by comma. The possible commands and their formats
are:
 SQL select statement for defaulting field values. SQL field alias will be
the destination field name. For example, if there is an FND lookup
“XX_USER_PRINTER” that stores user/printer association, we can use
the following SQL to set default value of field INV.PRINTER and
INV.COPIES in Label Request page.
select meaning “INV.PRINTER”, 2 “INV.COPIES” from fnd_lookup_values_vl a where
lookup_type = “XX_USER_PRINTER” and lookup_code = ${USERID}

Note: use of token ${} will be described later in this document.


 SQL update statement for updating table in database
 goto {field_name}, for setting cursor to a field whose name is
{field_name}
 hide {field_name}, for hiding a field whose name is {field_name}
 show {field_name}, for displaying a hidden field whose name is
{field_name}
 disable {field_name}, for disabling a field whose name is {field_name}
 enable {field_name}, for enabling a field whose name is {field_name}
 reset {field_name}, for resetting value of a field whose name is
{field_name}
 reset all, for resetting value of all fields in the page

16
• On Prompt Page
This property contains a script that can be used to automate response of a dialog
page. This is useful when we automate data entry and would like to automate the
response of dialog page that appears during automation as well. The following
variables are available in the script:
 title, a Java String type variable containing the dialog title
 message, a Java String type variable containing the dialog message
 options, an array of Java String containing the options for user response
The script return value will be used as the response to the dialog page. It is 0-index
based, so returning 0 means emulating user pressing the first option, 1 for the second
option and so on.

• Input Processor
This property contains a script that can be used to pre-process input from client.
The following variables are available in the script:
 $INPUT, a Java String type variable containing the current input value
 dataStreamType, a Java String type variable of “Y” if the data is from
barcode scanning and “N” if otherwise
 dataStreamCharacter, a Java String type variable containing the data
stream indicator value
 $ACTION_CODE, an integer type variable containing the action code
value. For example, if user presses Enter, $ACTION_CODE value is 16.
 $ACTION_STRING, a Java String type variable containing the action
string value. For example, if user presses Ctrl-G, $ACTION_STRING
value is "INV_GENERATE".
The script return value will be used as the new input value to Oracle. This is
useful if we want to perform translation. For example, user may scan a
manufacturer part number which can then be translated to Oracle item number
using database query. Please refer to Scripting chapter for an example of this.
Input Processor can also stop current processing or change the action code and
string. To stop current processing, we can assign variable $STOP_PROCESSING
to Y in the script. To change the action code or string, we can assign new values
to variables $NEW_ACTION_CODE and $NEW_ACTION_STRING.

• Special Key Pressed


This property contains a script that can be used to process special key pressed
event. Common use case is to perform additional business logic when a function
key or a control key is pressed.

17
• Out-of-Order Scan
This property is a flag that determines if out-of-order scanning is enabled for this
page or not. This can be used for changing the seeded out-of-order scanning
behavior of a mobile page. For example, it may be necessary to disable out-of-
order scanning when Custom Scan Manager is already used.
• Custom Page
This property stores the fully-qualified Java class name of a custom page. If this
property has a value, system will instantiate an instance of such Java class and
replaces the current page instance with the custom page instance. Note that the
Java class should be in the system class path. This feature allows an advanced
user who has Java programming knowledge to extend standard functionality of
the page that is not possible using personalization. When the custom page
functionality is used, other personalization properties are not applicable as the
custom page takes full control of the page logic.
• Voice Macro
This property stores page level voice triggers. Multiple voice triggers can be
separated by '#'. Page level voice macro can be triggered on any fields in the page.
It can be used to trigger a button by using Send Esc-x, where x is the button
accelerator or it can be used to add a string value into a session under a session
key.
The format is "voice trigger word(s)="action where action can be a send
command or assignment to populate string value to a session object for later
processing. Multiple actions can be entered by using semicolon. For example, we
can put this page level trigger "CHANGE LOCATOR"=Send Esc-
E;${REASON_CODE}=Change Source Locator. When user says "Change
Locator", system will send Esc-E and execute
session.putObject("REASON_CODE", "Change Source Locator").

• Enable Express Scanning


This is a flag that can be used to enable Express Scanning feature for the page.
Once enabled, we can turn on Enable Express Scanning for any fields on the
page. More details about Express Scan can be found in section 8.6.
• Scan Prefix
This contains prefix character that will be stripped off the barcode scan input.
This property is only applicable when Enable Express Scanning is Yes.
• Scan Suffix
This contains suffix character that will be stripped off the barcode scan input.
This property is only applicable when Enable Express Scanning is Yes.

18
• Scan Separator
This contains separator character that tokenize the barcode value into multiple
values for multiple fields. This property is only applicable when Enable Express
Scanning is Yes.
• Enable Personalization
This is a flag that can be used to turn off/on personalization

• Show Offline Properties


This is a flag that can be used to enable Offline feature for the page. More details
about Offline can be found in section 8.6.

• New Field Bean


This is used to add new field to the page. When user uses this, a set of properties
and buttons appear for user to specify the new field properties.

 Name
This property stores the new field name.The new field name cannot have
space in it and it cannot use an existing field name.
 Field Bean Type
This property stores the type of the new field, it can be Text, LOV or DFF.
 Position
This property stores the position of the new field. The format is Before
Field_Name or After Field_Name, where Field_Name is an existing field
name.
 Generate
This button is used to generate the new field. When user selects this button,
system will generate the new field with the remaining properties that can be
personalized.
 Cancel
This button is to cancel the creation of the new field bean.

6.2 FIELD PROPERTIES


• Prompt
This property stores the prompt of the field. It can be used for making the
transaction more user-friendly.

19
Note: For button, add a “&” in front of a character to set the hot key, e.g.
“Sub&mit” makes the button accessible by pressing Esc-m.
• Rendered
This property determines if the field is visible or not. Possible values are default,
true, false, and dynamic. This can be used to hide unnecessary fields to reduce
keystrokes that are needed to navigate through such fields.This property can be
changed to default or true or false or dynamic duringpersonalization. However,
the following system rules apply for this property to prevent unexpected
application behavior. If the Rendered is set to false, the field can be hidden
provided any of the following condition is true:
The field is not a required field
The field is a read-only field
If necessary, this rule can be bypassed using scripting feature which is described
later in this document.

• Rendered Logic
This property stores a SQL for the field rendered logic and is only applicable if
the Rendered property is dynamic. The SQL will be run during page entered event
and on every field exit event. If the SQL returns a row or more, the field is made
visible, else the field is hidden.
• Auto Enter
This property is a flag that determines if system should automatically perform an
Enter key when a user reaches thefield. Possible values are true, false, and skip.
The value skip is used if system should perform an auto enter and skip the cursor
rendering. This property is only activated when the cursor goes down. In other
words, if user presses Up arrow to a field that has Auto Enter, it will not activate
the Auto Enter so user can change the automated value if needed.
• Voice Macro
This property stores the voice trigger which can be used to execute a select
statement to derive a field value or a script. The format is “voice trigger
word(s)”=action where action can be a select statement, a send command or a
script. For examples:
Voice macro "Generate"=Send Ctrl-G. When user says "Generate", system
will perform a Ctrl-G for the user.
Voice macro "Next"=select ${ITEM} from dual. When user says "Next",
system will take the value from field ITEM and set it to the current field.
• Read Only
This field is a flag that determines if a field is editable or not. This can be used to
freeze a field whose default value is supplied from personalization.This property
can be changed to true or false during personalization. However, the following
system rules apply for this property to prevent unexpected application behavior.
20
First, the field can only be made from Editable to Read Only (not the other way
around). Furthermore, the following conditions should be met:
 The field is not a required field
 The field is required but a valid default value is supplied from
personalization
If necessary, this rule can be bypassed using scripting feature which is described
later in this document.
• Required
This property is a flag that determines if thefield requires a value or not. This can
be used to enforce an optional field to be required.This property can only be
personalized to be true. If a field is originally required, it is notpossible to make it
optional. If necessary, this rule can be bypassed using scripting feature which is
described later in this document.
• Alter Case
This property tells the system to change the user input to be Uppercase,
Lowercase, or Normal (no modification).
• Default Value
This property is used to derive default value of thefield. It is only applicable when
the field does not have a value and when the cursor moves from a previous field
to the field. This can be used to supply default value for certain transactions as
business sees fit to reduce keystrokes. The possible commands and their formats
are:
 SQL select statement. The first column of the first record will be used as
the default value
 ${field_name}, to use value from another field whose name is
{field_name}
 script:{code},this is scripting feature that allows us to write code to derive
default value. The return value of script is used as the default value. Java
code construct like conditional logic, math operation, can be used. For
example, we can write a script that derives default value only if a certain
condition is true.
• Length
This property tells the system the maximum number of characters input the field
can accept. This can be used to limit field value to a maximum of certain length
based on business requirement.
• DFI
This property stores the DFI (Data Field Identifier) of the field. Standard Oracle
provides a centralized setup for DFI, and this property can be used to setup
different DFI for the same field by transaction.
• Barcode Delimiter
21
This property stores a single character value which is the field delimiter. When
the MWA server sees the delimiter character in the input, it translates it into an
Enter key, truncating the remaining barcode value as input for subsequent field.
Standard Oracle only provides barcode delimiter for Item/Revision, PO
Number/Line Number, and Subinventory/Locator. In contrast, this property can
be applied for all fields.If a single barcode contains values for multiple fields, this
barcode delimiter can be setup to allow transaction to be performed in a few
scans.
• Validate
This property stores a script or SQL for field validation. This can be used to
validate user input or limit LOV to certain values. For example, we can use this to
limit subinventory values for a specific user or validate transaction quantity.
If it is a script, then the script return value is treated as an error message. So if it
returns null, the input is valid, otherwise the input is not valid. Script can use
variable $INPUT to find what is the current input value.
If it is a SQL query, the input is considered valid if it returns a row, otherwise the
input is not valid.

• Subsequent Value
This property stores the SQL for defaulting other values based on the field current
value. SQL field alias will be the destination field name. For example, if there is
an FND lookup “XX_ITEM_SUBLOC” which stores item/subinventory/locator
association, we can run the following SQL to derive the default values of
subinventory and locator when a user enters an item during miscellaneous receipt.
select meaning "Subinventory", description "Locator" from fnd_lookup_values_vl where lookup_type =
"XX_ITEM_SUBLOC" and lookup_code = ${ITEM}

Note: use of token ${} will be described later in this document.


• On Focus
This property stores actions to be performed when a user enters a field.The
possible commands and their formats are:
 send {key}, where key can be Esc-key or Ctrl-key
 say=”voice text”, this is used to make device say specific text. It can be
used to provide user with work instruction or error message
 script:{code}, this is scripting feature that allows us to write code to
perform when cursor reaches the field. Java code construct like
conditional logic, querying database, loop, math operation, and many
more, can be used. Scripting will be described later in this document.
• Before Exit
This property stores action to be performed when a user exits a field. This is
called prior to standard fieldExited() listener(s) are called. The possible
commands and their formats are:

22
 DML SQL (update/insert/delete) statement
 goto {field_name}, for setting cursor to a field whose name is
{field_name}
 hide {field_name}, for hiding a field whose name is {field_name}
 show {field_name}, for displaying a hidden field whose name is
{field_name}
 disable {field_name}, for disabling a field whose name is {field_name}
 enable {field_name}, for enabling a field whose name is {field_name}
 reset {field_name}, for resetting value of a field whose name is
{field_name}
 reset all, for resetting value of all fields in the page
 script:{code}, this is scripting feature that allows us to write code to
perform when cursor exits the field. Java code construct like conditional
logic, querying database, loop, math operation, and many more, can be
used. Scripting will be described later in this document.
• On Exit
This property stores action to be performed when a user exits a field. This is
called after standard fieldExited() listener(s) are called. The possible commands
and their formats are:
 DML SQL (update/insert/delete) statement
 goto {field_name}, for setting cursor to a field whose name is
{field_name}
 hide {field_name}, for hiding a field whose name is {field_name}
 show {field_name}, for displaying a hidden field whose name is
{field_name}
 disable {field_name}, for disabling a field whose name is {field_name}
 enable {field_name}, for enabling a field whose name is {field_name}
 reset {field_name}, for resetting value of a field whose name is
{field_name}
 reset all, for resetting value of all fields in the page
 say=”voice text”, this is used to make device say specific text. It can be
used to provide user with work instruction or error message
 script:{code}, this is scripting feature that allows us to write code to
perform when cursor exits the field. Java code construct like conditional
logic, querying database, loop, math operation, and many more, can be
used. Scripting will be described later in this document.
• Message Map

23
This property stores the system message mapping, which can be used to
customize the text message in the status bar. The format is old messsage->new
message. Furthermore, the message needs to be acknowledge by a user before
they can proceed.
• LOV Statement
This property stores either the SQL query or PL/SQL procedure that returns a
reference cursor. This can be used to change or add additional logic to the LOV
statement.
• Input Parameters
This property stores a comma-delimited value of the LOV input parameters. At
runtime, MWA server will use the value as lookup to session or as is depending
on the parameter types.

• Parameter Types
This property stores a comma-delimited value of the LOV input parameters types.
Possible values are ”S” for String from session lookup, “N” for Number from
session lookup, “D” for Date from session lookup, “AS” for actual String value,
“AN” for actual Number value, “AD” for actual Date value, “C” for reference
cursor, and “SP” for String from session lookup with ‘%’ added at the end.
• Column Display
This property stores a comma-delimited value of flags to determine if the column
is displayed or not.Possible values are true or false.
• Column Prompt
This property stores a comma-delimited value of the LOV column prompt.
• On Empty LOV
This property stores script that will be called when user invokes LOV and LOV
returns no result. This is useful to change standard LOV "No result found"
message or reset user interface.
• Disable Blind LOV Query
This property is a flag that determine disabling the LOV pages when no value is
inputted. If the flag is set to true, LOV pages won’t be shown when there is no
value inputted. This can be used to avoid a long waiting time when building a
LOV Pages.
• Order Sequence
This property stores Order sequence for action button.
• DFF Application
This property is used for DFF field. It stores the Application name of the DFF.
• DFF Name/Title
This property is used for DFF field. It stores the DFF name.
24
• DFF Context
This property is used for DFF field. It stores the DFF context.
• On Submit
This property is applicable for button. It stores PL/SQL procedure mapping to
allow redirecting standard PL/SQL call to a custom PL/SQL call.The format is
existing API->new API. For example: INV_LPN_TRX_PUB.PROCESS_LPN_TRX-
>CUSTOM_TRX_PUB.CUSTOM_PROCESS_TRX. Multiple mappings can be done by
separating then with a ~.
The custom PL/SQL API should have the same signature as the standard API. In
the custom PL/SQL API, developer can access information from the mobile page
by querying custom table xxint_transaction_data. This is a global temporary table
that gets populated by the MWA Express Server before it calls the custom
PL/SQL. The table has two columns: name and value. The name will be the field
name and value will be the field value.
• Accelerator Key
This property is applicable for button. It is used to enable accelerator key for a
button.
• Next Page Name
This property is applicable for button. It is used to set the next page name after
button is activated.The next page name should be a fully qualified Java class of
the destination page, e.g. oracle.apps.inv.labels.server.LabelPage. To go back to
menu, we can use the following value of next page name:
|END_OF_TRANSACTION|
• Order Sequence Number
This property is applicable for button. It can be used to reorder the sequence of
buttons on the page. The value is an integer value which will be sorted against
other buttons’ Order Sequence Number to determine the button sequences.
• Enable Express Scanning
This is a flag that can be used to enable Express Scanning feature for the field.
Once enabled, the field will be populated when parsing the barcode.
• Cross Ref
This property store SQL or script to retrieve a cross reference value from the
parsed barcode. This can be used to query the value from database or doing
preprocessing for the parsed value.
• Barcode Length
This property store the length of the parsed barcode for the field.All Express Scan
enabled field have to fill this property if the Scan Separator is not populated. This
property will determine the length of the barcode that will be populated to the
field.

25
6.3TOKEN VARIABLE
For property that uses SQL query, we can use a token variable to refer to a field value in
a page. For example, if a page has a field named INV.ITEM, then we can use
${INV.ITEM} variable in the SQL to refer to the current value of the field INV.ITEM.
During runtime, MWA Express Server will find all token variables and replace them with
actual values.
Other special token variables are as follows.
 ${INPUT}, this holds the current field input
 ${TRANSACTION_TEMP_ID}, this holds the current transaction temp id in WMS
Pick Load Page

6.4DEVELOPING NEW INQUIRY PAGE


MWA Express Server provides an API and configurable inquiry page which can be used
to develop new inquiry page quickly. A typical inquiry page has one or more search
fields and two buttons: Find and Cancel. Find button is used to execute a search query
and display result page. Cancel is for going back to menu.

Here are the steps to create a new inquiry page:

 Create a new FND function


Navigation: Application Developer responsibility > Application > Function
Give it a meaningful function and user function name.
Type:Mobile Application
Parameter: USE_ORG=Y
HTML Call:xxint.oracle.apps.mwa.pages.SimpleSearchApp
 Assign the new FND function to your mobile menu
 Login in mobile and access the new function

A simple page with two buttons displays. As of now, this is a simple page which needs to be
personalized further.

26
 Next, we can use personalization feature to add one or more search fields,change the
page title, and so on. Here is a screenshot example where we add a Sales Order
search field

 Finally, we will setup On Exit of the Find button with a script to execute the inquiry
query based on search field(s) and display a result page.
Here is an example:
script: session.showResultPage("select * from xxnov_delivery_lines_v where
order_number = ${SO#}");

27
The API showResultPage() will take a parameter of a SQL string, where the SQL
can be parameterized with tokens that refer to search fields. The result of the query
will be used to construct a result page. Each column in the result set will be a read
only field and each record will be a scrollable page with <Previous> and <Next>
button for record navigation. We can use personalization to change the prompt of the
result fields to make them more user friendly.

6.5DEVELOPING NEW TRANSACTION PAGE


MWA Express Server provides an API and a configurable transaction page which can be
used to develop new transaction page quickly. A typical transaction page has one or more
fields and two buttons: Process and Cancel. Process button is used to process the data on
the page. Cancel is for going back to menu.

Here are the steps to create a new transactional page:

 Create a new FND function


Navigation: Application Developer responsibility > Application > Function
Give it a meaningful function and user function name.
Type: Mobile Application
Parameter: USE_ORG=Y
HTML Call: xxint.oracle.apps.mwa.pages.SimpleApp
 Assign the new FND function to your mobile menu

28
 Login in mobile and access the new function
 A simple page with one field and two buttons displays. As of now, this is a simple page
which needs to be personalized further.

 Next, we can use personalization feature to add additional fields, change the fields’
and page properties, and so on.For example, here is a screenshot of a page that we
have personalized to record containers that we are loading to a trailer.

To perform the transaction, we can add script to On Exit of the process button to
perform the transaction, e.g. insert to table, call PL/SQL API, etc.

29
Chapter 7 - Scripting
Scripting is a powerful feature that provides even greater control in customizing application. It
allows us to extend functionality of the application by embedding Java code or PL/SQL code in
various triggers of the application. The advantage of this approach (compared to traditional Java
customization) is we don’t have to create Java class that needs to be deployed and compiled in
the middle tier. Script code can be added or updated in the personalization page and it will be
immediately active without server bounce.
Script can be added to Input Processor, Validate, On Focus, On Exit, and Default Value property.
The script format is “script:{code}”, where {code} is valid Java code, or "plsql: {code}", where
code is valid PL/SQL block. Like in Java or PL/SQL, multiple statements are allowed and are
separated with a semicolon. Since it is regular Java code, we can use all the Java programming
constructs such as conditional logic, loop, method call, math expressions, and more. For
example, we can add a script for “On Exit” property to query database and warn or disallow user
to proceedbased on the result. Another example is to perform some logic based on user input and
change the UI such as hiding/showing field, making field required, setting field value, etc.

Java Scripting
In order for the script to do anything meaningful, it needs to have access to the current state of
the application. Here are special variables that any script has access:
1. session, this is the current user session object. From the session, script has access to a
hash table that contains information used in the application. This contains the
organization id, user id, and other special information that standard Oracle code put into
the session for its application code. Furthermore, MWA Express Server provides
additional methods as follows:
 public void setStatusMessage(String message);
This can be used to display message on the status bar.

 public void putObject(String key, Object value);


This is used to put object into the session hash table, which can be retrieved at later
point

 public Object getObject(String key);


This is used to get object from the session hash table, using a key

 public Object removeObject(String key);


This is used to remove object from the session hash table, using a key

30
 public void setSessionScope(String key);
This is used to persist object values in the session so it stays in the session after user
exits transaction. We call this method with the key of the object value we want to
persist. This is useful to transfer information from one transaction to another.

 public void removeSessionScope(String key);


This is used to remove key of the object value that we persisted earlier so it can be
removed after user exits transaction.

 public void setNextFieldName(String fieldName);


This can be used to set the cursor to specific field. The parameter is the field name,
which can be retrieved from personalization page or About page (accessed by
pressing Ctrl-X on the transaction page).

 public void sendNegativeSound();


This can be used to send negative sound to the user to catch their attention during
error.

 public void sendPositiveSound();


This can be used to send positive sound to the user to confirm successful processing.

 public Connection getConnection();


This can be used to get a JDBC connection for calling custom PL/SQL or running
query.

 public void sendKey(String keyValues);


This can be used to automate keystrokes as if user types them in. For example, we
can put the following script on a button OnExit property, to automate navigating to a
different transaction after a successful completion of a transaction.
script:
if(session.getStatusMessage().contains("Success")){
session.sendKey("F2,F2,3,1,1,4");
}

Here is the list of key strokessupported

Format Description Example

31
F[1-4] Send Function Keys. sendKey(“F1”);
Supported function is
F1, F2, F3 and F4

Ctrl-[A-Z] Send Ctrl Keys sendKey(“ctrl-a”);

Esc-[A-Z] Send Accelerator Key sendKey(“esc-a”);

Enter Send Enter Key sendKey(“enter”);

Up Send Up Arrow Key sendKey(“up”);

Down Send Down Arrow Key sendKey(“down”);

[0-9] Send Numeric sendKey(“1”);


Character

<menu Send Menu Number sendKey(“<Alias


prompt> using Menu Prompt Receipt”>);
Name.

 public void clearKeys();


This clears any key automation that are in the queue.

 public boolean queryDbExist(String sql, Object[] inputs);


This checks if a SQL query with input returns a row or not. If so, it will return true,
otherwise false.

 public int queryDbForCount(String sql, Object[] inputs);


This returns a number of record count for a given SQL and its input.

 public ArrayList queryDb(String sql, Object[] inputs);


This runs a SQL query and its input, and returns rows in a Java ArrayList. Each
element in the list is a Java HashMap that corresponds to a single row. The HashMap
is a (key,value) pair where the key is the column name and value is the column
value.

 public int updateDb(String sql, Object[] inputs, boolean commit);


This updates a SQL statement with inputs. If the commit parameter is true, a commit
is performed.

32
 public void abortSystemHandler();
This stops the system handler so cursor will not move to next field.

 public void resetAllFields();


This will reset all field values to blank.

 public void uploadAttachment(String attachmentFieldName);


This is used in Attachment feature. We can call this in On Exit property to upload the
attachment field value to server.

 public void zoomIn(String pageName);


This will let user zoom to another MSCA page, keeping the existing page in the page
stack for zoom out later. Here is an example of a script in Special Key Pressed event
to zoom into an Onhand Inquiry page when user presses a special key.
script:
if("USER_FUNCTION_3".equals(event.getAction())) {
session.zoomIn("oracle.apps.inv.invinq.server.ItemOnhandQueryPage");
}

 public void zoomOut();


This will let user zoom out to the previous MSCA page where user has used the
zoom in. Here is an example of a script in Special Key Pressed event to zoom back
out.
script:
if("USER_FUNCTION_3".equals(event.getAction())) {
session.zoomOut();
}

 public void exitZoom();


This is similar to zoomOut(), but it exits multiple nested zoomed pages so user will
be back to the page before the first zoomIn().

 public int showPromptPage(String title, String message, String[] options);


This is used to create a prompt dialog to get user decision. This is useful when we
need to tell user of a specific situation and need user input to proceed. The output is
user selection which is 0-based. Here is an example of a script in On Exit event of a
field.

33
script:
int decision = session.showPromptPage("Warning", "Locator has different SKU. Proceed?", new String[] {"Yes",
"No"});
if (decision == 0) {
// user selects Yes, continue with putaway
}
else {
// user selects No, stops user from moving
session.abortSystemHandler();
}

 public int showPromptPageNoEnter(String title, String message, String[] options);


This is similar to showPromptPage(), but user cannot press enter to close it. User has
to press the proper key for the button to acknowledge and close the dialog.
Note: This is only available in Express Server 1.8.8.

 public void showResultPage(String sql);


This is used to create an inquiry result page. Result page is similar to Item Inquiry
page where each page represents a record and there is a pagination buttons for
previous record and next record. The input is a SQL query statement. This method
will run the query and each column in the SQL will be separate text field in the result
page and each row will be rendered as separate page with pagination buttons.
For example, we can use Add New Field functionality to create an outbound inquiry
screen. Each search criteria will be added to the page using “add new field” and a
button Find can be added as well. Then, we can set OnExit property of the Find
button as follows.
script: session.showResultPage("select * from xx_delivery_lines_v where order_number = ${SO#}");

 public void resetExpressScan();


This is used to reset all extracted barcode from Express Scan engine.

Here are some more examples of scripting:


Example 1: Database validation
Let’s say a warehouse wants to make sure that all items in a locator are of the same item
number. In standard Subinventory Transfer form, there is no validation to prevent user
from mixing different items in the same locator. With scripting, we can add the following
script in On Exit of the destination locator field in Subinventory Transfer. The script
essentially checks if the destination locator already has a different item than the one we
are transferring and if so, stops the user from proceeding and shows a error message.
script:

34
if (session.queryDbExist(“select 1 from mtl_onhand_quantities_detail where organization_id = :1 and
inventory_item_id != :2 and subinventory_code = :3 and locator_id = :4”, new Object[] {session.getObject(“ORGID”),
INV.ITEM.getItemID(), INV.TOSUB.getValue(), INV.TOLOC.getLocatorID() })) {
session.setStatusMessage(“This location already has different item.”);
session.abortSystemHandler();
}

Example 2: Adding Box Count functionality during Consolidate LPN


Let’s say a warehouse has a conveyer system that diverts all boxes of the same delivery
to a staging lane. An operator uses Consolidate LPN at the staging lane to build pallets.
As the operator builds pallets, he needs to know the progress of the delivery, how many
boxes remaining, so he knows when he can close the pallet. The following script can be
added in On Exit of the More button in Consolidate page.
script:
if ("Txn Success.".equals(session.getStatusMessage())) {
session.updateDb("update wms_license_plate_numbers set attribute1 = 'Y' where cartonization_id = (select lpn_id from
wms_license_plate_numbers where license_plate_number = :1)", new Object [] {session.getObject("CHILD_LPN") } ,
true);
java.util.ArrayList rows = (java.util.ArrayList) session.queryDb("select wda.delivery_id DELIVERY_ID from
wsh_delivery_assignments wda, wsh_delivery_details wdd where wdd.container_name = :1 and wdd.delivery_detail_id
= wda.delivery_detail_id", new Object[] {session.getObject("CHILD_LPN")});
java.util.HashMap row = (java.util.HashMap) rows.get(0);
String deliveryId = (String) row.get("DELIVERY_ID");
rows = session.queryDb("select (select count(1) from xx_delivery_lpn_v where delivery_id = :1 and scanned_flag =
'Y') || ' of ' || (select count(1) from xx_delivery_lpn_v where delivery_id = :2) BOX_COUNT from dual", new Object[]
{deliveryId, deliveryId});
row = (java.util.HashMap) rows.get(0);
String boxCount = (String) row.get("BOX_COUNT");
session.setStatusMessage(boxCount);
}

Example 3: Adding Input Processor for translating Legacy Item Number to Oracle
Item Number
Let’s say a warehouse would like to be able to scan or type in a legacy item number
instead of Oracle item number. Let’s assume the translation has been setup in Oracle Item
Cross Reference. The following script can be added in Input Processor property in the
page to perform the translation.
script:
if ("INV.ITEM".equals(page.getCurrentFieldBean().getName())) {
if ("Y".equals(dataStreamType)) {
java.util.ArrayList rows = (java.util.ArrayList) session.queryDb("select msi.SEGMENT1 from mtl_cross_references
xref, mtl_system_items_b msi where msi.inventory_item_id = xref.inventory_item_id and msi.organization_id =
xref.organization_id and msi.organization_id = :1 and xref.cross_reference_type = 'Legacy Part' and cross_reference =
:2", new Object[] {session.getObject("ORGID"), $INPUT.substring(1)});
if (rows.size() > 0) {

35
java.util.HashMap row = (java.util.HashMap) rows.get(0);
return dataStreamCharacter + (String) row.get("SEGMENT1");
}
} else {
java.util.ArrayList rows = (java.util.ArrayList) session.queryDb("select msi.SEGMENT1 from mtl_cross_references
xref, mtl_system_items_b msi where msi.inventory_item_id = xref.inventory_item_id and msi.organization_id =
xref.organization_id and msi.organization_id = :1 and xref.cross_reference_type = 'Legacy Part' and cross_reference =
:2", new Object[] {session.getObject("ORGID"), $INPUT});
if (rows.size() > 0) {
java.util.HashMap row = (java.util.HashMap) rows.get(0);
return (String) row.get("SEGMENT1");
}
}
}
return $INPUT;

Example 4: Calling a custom PL/SQL when user presses Enter on a button


Let’s say a warehouse would like to do some additional processing (printing label, or
performing subinventory transfer, etc) after user presses Enter on a button. The following
script can be added in On Exit property of the button to call a custom PL/SQL.
script:
java.sql.CallableStatement cs=null;
try {
cs=session.getConnection().prepareCall("{call custom_package.print_label(?)}");
cs.setString(1, INV.TO_LPN.getValue());
cs.execute();
} catch(Exception exception1) {}
finally {
try {
if(cs!= null)cs.close();
} catch(Exception _ex) {}
}

Alternatively, we can also call the PL/SQL API directly using plsql script as follows.
plsql:
begin
custom_package.print_label(${INV.TO_LPN});
end;

Example 5: User input validation

36
Let’s say we would like to validate the Putaway LPN always starts with “LPN”. The
following script can be added in Validate property of the LPN LOV in the Putaway page.
The script on Validate property returns error message. So if it is null, it is valid,
otherwise, it is not valid.
script:
if ($INPUT.startsWith("LPN")) return null;
else return "Invalid LPN.";

2. page, this is the current page object. From here, we have access to properties of the page
like prompt, name, fields and more. For example, we can add the following for On Focus
property of a field to find out the Java class name of the current page.
script:
session.setStatusMessage(“This page class name is “ + page.getName());

3. event, this is the user event object. From here, we have access to the event action
(MWA_SUBMIT, MWA_NEXTFIELD, MWA_PREVIOUSFIELD) and the event
source (what field triggers the event). For example, we can add the following for On Exit
property of a field to check if user presses Enter on the field.
script:
if(event.getAction().equals(“MWA_SUBMIT”)) {
session.setStatusMessage(“You have pressed Enter on field ” + event.getSource().getName());
}

4. field name of all fields in the page, these are convenience variables that allow access to
fields in the page. For example, we can add the following for On Exit property of
Quantity field in Miscellaneous Receipt such that if the transaction quantity is more than
10, then reason should be required.
script:
if(Integer.parseInt(INV.QTY.getValue()) >10) {
Reason.setRequired(true);
} else {
Reason.setRequired(false);
}

In some cases, there might be helpful to know what methods are available in the standard Oracle
classes. For example, we can call getItemID() on Item field to get the item ID from the Item
LOV field. Here is link to Javadoc. http://www.intellinum.com/files/Javadoc.zip

37
PL/SQL Scripting
Besides Java scripting, we can also run PL/SQL code directly from script. PL/SQL script
format is plsql: {code}.During runtime, the PL/SQL code will be translated into JDBC
Callable Statement. We can pass values into the PL/SQL code or retrieve values from it
by using session as the bridge.

To pass value from MWA Express to PL/SQL, use ${KEY} where key is a literal value
of a session key. At runtime, we will get the value from session using the key and set it in
the PL/SQL.
To get output from PL/SQL into MWA Express, use @{KEY} where key is a session
key. At runtime, we will take the value from PL/SQL and set it to the session using the
key.
To pass value from MWA Express to PL/SQL and get output from PL/SQL back into
MWA Express, use #{KEY} where key is a session key. At runtime, we will get the
value from session using the key and set it in the PL/SQL and at the end of the PL/SQL
execution, take the value from PL/SQL and set it back to the session using the key.

Here are some examples.


Example 1: Calling a custom PL/SQL when user presses Enter on a button
Let’s say we want to call a PL/SQL API to perform additoinal business logic. The API
has an input parameter and output parameter. The following script can be added in On
Exit property of the button to call a custom PL/SQL.
plsql:
begin
custom_package.print_label(${INV.TO_LPN}, @{RETURN_STATUS});
end;

Example 2: Querying value from database and set it into session for later use
plsql:
declare
l_employee_id number;
begin
select employee_id
into l_employee_id
from fnd_user
where user_id = ${USERID};
@{EMPLOYEE_ID} := l_employee_id;
end;

38
Starting in version 1.8.5, developers can mix PL/SQL and Java scripts. This allows
developers to write business logic in PL/SQL and use Java for any user interface
interaction.
Example 3: Validating and submitting concurrent request from a button
plsql:
declare
l_unpicked_line_count number;
l_request_id number;
l_boolean boolean;
begin
-- check if all lines are completed
select count(1)
into l_unpicked_line_count
from wsh_delivery_assignments wda, wsh_delivery_details wdd
where wdd.delivery_detail_id = wda.delivery_detail_id
and wdd.source_code = 'OE'
and wda.delivery_id = ${DELIVERY}
and wdd.released_status in ('B', 'S');

if (l_unpicked_line_count > 0) then


-- there is unpicked line
@{VALIDATE_FLAG} := 'E';
@{ERROR_MESSAGE} := 'Delivery is incomplete.';
return;
end if;

-- all good, submit concurrent request


l_boolean := fnd_request.add_layout( template_appl_name => 'WSH'
, template_code => 'XX_CUSTOM_PACK_SLIP'
, template_language => 'en'
, template_territory => 'US'
, output_format => 'PDF'
);

l_request_id := FND_REQUEST.SUBMIT_REQUEST(application => 'WSH'


, program => 'XX_CUSTOM_PACK_SLIP'
, sub_request => FALSE
, argument1 => ${ORGID}
, argument2=> ${DELIVERY}
);

39
commit;
-- pass value back to Java for display
@{REQUEST_ID} := l_request_id;
end;

script:
// check validate result
String validateFlag = session.removeObject("VALIDATE_FLAG");

if ("E".equals(validateFlag)) {
// validation failed
session.setStatusMessage(session.removeObject("ERROR_MESSAGE"));
}
else {
// validation passed, show request id
session.setStatusMessage("Submitted Req ID " + session.getObject("REQUEST_ID"));
}

// make cursor stays on print pack slip button


session.setNextFieldName("processButton");

40
Chapter 8 –Value Added Features
This chapter describes the Value Added Features which provides additional functionalities to the
server.

8.1 ON DEMAND USER LEVEL LOGGING


In a typical production environment, it is necessary to keep the MWA log level at error
level to avoid excessive logging. However, when there is an issue, trace level logging is
necessary for troubleshooting, yet it will take a server restart to activate any change in
mwa.cfg. Furthermore, it is more desirable to have user level logging so we can follow
the logging for one specific user.

In MWA Express Server, we can enable user level logging without server restart by
setting user level profile option “MWA: Debug Trace” to Yes.

After this, user needs to logout and log back in to start the user level logging. At that
time, user level logging will be generated in the application tier. The log directory will
still be the same as specified in mwa.logdir property. The format of user level log file
name is [port].[type]_[username].log. For example, if the username is MFG and he is in
port 10200, we will have 10200.system_MFG.log for system related user level log file,
10200.INV_MFG.log for INV related user level log file, and 10200.XXINT_MFG.log
for Express Server related user level log file.

8.2 E-SIGNATURE
E-Signature allows users to capture signature on a device, upload it to Oracle E-Business
Suite and associate it with an Oracle E-Business Suite entity like Delivery, Receipt, Sales
Order, Transaction, and so on.

The following section describes steps to enable E-Signature on any mobile page. Please
note that this feature requires MWA Express Client from Intellinum.

Use MWA Express Server to create a new field of type Attach and specify the position
(Before/After another field) accordingly. Note the new field name as we will use it later.

41
Next, we need to set properties of the new Signature field:

 Entity Name
This is the Entity ID in Document Entities form (Navigation: Application Developer
> Attachments > Document Entities)

 Primary Key
This should be the field name on the page that contains the primary key value. For
example, if we are attaching signature to a delivery, this Primary Key should be the
field name that contains the delivery ID. If there are multiple keys needed, use
Primary Key 1, 2, 3, 4, 5.

 On Exit

42
This will be a script that calls the upload attachment routine and performs commit.
The upload can be done by calling session.uploadAttachment(fieldName);
The commit can be done by calling session.getConnection().commit();

Here are some screenshots of the E-Signature in action.

For example of setting up E-Signature in PO Receipt, please contact Intellinum Support.

8.3VOICE-PLUS-SCAN
Voice-plus-scan is a feature that can be used to provide voice direction to user, allowing
them to perform their task without looking at the mobile screen as often as before. With
this feature, system can be setup to tell the user which field they are in and what they
have to do. This allows user to focus on their job, increasing user efficiency and safety on
the floor. Please note that this feature requires MWA Express Client from Intellinum.

Voice direction can be added to any transaction screens by using one of the following:

43
 say command, this can be used in Page Entered, On Focus, Before Exit and On Exit
The format is say=”text”, where text is what we want to say to user.
For example, we can add say=”scan purchase order” in On Focus of the PO
field
 say() Java API in session object
For example, we can add script: session.say(“scan purchase order”);
in On Focus of the PO field

8.4 QUICK RECONNECT


Quick Reconnect is a feature that allows users who got disconnected due to network
interruption to connect back to their session quickly. Please note that this feature requires
MWA Express Client from Intellinum.

Without this feature, a disconnected user needs to reconnect to the server, logs in, and
chooses “Yes” to reconnect to his/her previous session. With this feature, the MWA
Express Client can detect a network interruption, automatically reconnects to the server
and pass an authentication token to the MWA Express Server. The token will be used to
authenticate the client, identify the previous session, and reconnect to it.

8.5 KILL SESSION


Kill Session is a feature that allows administrator to find and kill stuck user session.
Previously, an administrator needs to find which port the stuck user is in and then issue a
KILL command. With this feature, administrator goes to Kill Session function in MWA
Administrator responsibility, which lists all the active user session. From there, the
administrator can kill the user session.

8.6 EXPRESS SCAN


Express scan is a feature that can be used to simplified barcode parsing and allowing the
parsed value to be populated into desired field. With this feature, system can be setup to
parse the scanned barcode and assign the parsed barcodes into the express scan enabled
field depending on DFI or Position. Barcode only need to be scanned once to be
populated into multiple fields.

For more examples of Express Scan, please contact Intellinum Support for a white paper
of the feature.

44
Chapter 9 - Personalization Migration
This section describes how to migrate personalization from one instance to another. There are
two concurrent programs for personalization migration. By default, both of them are added to
Application Developer responsibility.
MWA Express Download Personalization
This program is for extracting the personalization metadata. This program should be run in the
source instance. The parameters allow us to specify which personalization to be extracted and the
output filename.

The parameters are as follows.


1. Personalization Level, this is to specify which personalization level to be extracted.
Possible values are:
a. All, choose this if we want to extract all personalization
b. Site, choose this if we want to extract site level personalization only
c. Responsibility, choose this if we want to extract responsibility level
personalization only
d. Organization, choose this if we want to extract organization level personalization
only
e. User, choose this if we want to extract user level personalization only
2. Personalization Value, this is to specify the level value. The list of values will depend on
the selected personalization level.
3. Personalization Function, this allows us to extract a specific function personalization.

45
4. Filename, this is the output filename. The file will be generated in the database tier under
directory specified during product install.
Once the program completed successfully, there are two ways to get the personalization
metadata. One way is to get the output file from the database tier under directory specified
during product install. If you are not sure which directory it is, please check with DBA.
Alternatively, we can just open the concurrent request output and save it to a text file.
Now that we have the output file, we need to FTP it to the database tier of the target instance.
The file should be located in the directory path which we can get from the following SQL:
select directory_path
from all_directories
where directory_name = 'XXINT_MIGRATION_DIR';

Important: Use Text or ASCII mode when transferring the text file by FTP. Or use
dos2unix command after FTP to remove the special characters in Windows/DOS. If you
have multiple database nodes, please upload the file to all database nodes.

MWA Express Upload Personalization


This program is for importing the personalization metadata from an input file. This program
should be run in the target instance after we have FTPe the output file from Download program.

The parameters are as follows.


1. Filename, this is the input filename. This file should be located in the database tier under
directory specified during product install.
2. Override, this is a flag that determines if the program should override existing
personalization if it finds any.

46
Chapter 10 -MWA Express Server Personalization Use Cases
1. Improve the Inbound Speed in Oracle PO Receipt Mobile Page
Navigation: Inbound => Receive => PO
Expected Result:
- Default the field Value
- Auto Enter Field
- Auto Generate the LPN
Features Used:
- Default Value Field
- Auto Enter
- On Focus

Configuration Steps:
- Press Ctrl + Q to open Mobile Personalization Page
- Set below values in the personalization page then hit F2 to save after set personalization values
Personalization Values
No. Oracle Field Name Features Used Before After
1 Page Title Page Title Receipt (W1) W1 PO Receipt
2 INV.DOC_NUMBER Prompt PO Num PO
Prompt Line Num PO Line
3 INV.PO_LINE_NUMBER
Auto Enter FALSE TRUE
4 INV.ITEM Prompt Item Material
Prompt LPN PALLET ID
5 INV.LPN
On Focus NULL Send Ctrl-G (send auto generate

47
Auto Enter FALSE LPN)
TRUE
Prompt Location Area
6 INV.LOCATIONS
Auto Enter FALSE TRUE
Prompt To Sub Staging Subinv
7 INV.SUB Default Value NULL RCV
Auto Enter FALSE TRUE
Prompt To Loc Staging Locator
8 INV.LOC Default Value NULL RC1.1.2
Auto Enter FALSE TRUE
Prompt UOM Measure
9 INV.UOM
Auto Enter FALSE

- Save (Press F2)


- We need to go to receipt header mobile page to personalize next page.
- Go back to PO Receipt again. Enter PO Number: 4675 and fill another information like below screenshot then press <Done>

48
- Press Ctrl + Q in the Receipt Information Mobile Page, then enter below values:
No. Oracle Field Name Features Used Before After
1 RCV.RECEIPT_NUM Prompt Rcpt Num Receipt Number
2 INV.CARRIER Rendered True False
3 RCV.PACK_SLIP Required False True
4 RCV.AIR_BILL Rendered True False

- Press F2 to save the personalization values, then cancel the receipt transaction. Now go back to PO Receive Menu.

49
Result Comparison

Oracle Standard MWA Express Server


Mobile Screen Step Mobile Screen Step

1. Scan PO Number 1. Scan PO Number


2. Skip/Enter the Line 2. Scan the Item
Number 3. Enter the Qty Field
3. Scan the Item
4. Generate the LPN
5. Skip/Enter the LPN Field
6. Skip/Enter the Location
7. Scan the To Sub Field
8. Scan the To Loc Field
9. SKip/Enter the UOM
10. Enter the Qty Field

Total : 10 Steps Total: 3 Steps

50
Oracle Standard MWA Express Server

1. Can not hide the fields 1. Can hide unnecessary


2. Can not make the fields fields
required 2. Can make the fields
3. User must skip the field required
one by one. 3. Can use auto enter
feature to skip the
fields.

51
2. Improve Outbound Picking Process Speed using Paper Based Pick Featurefor Lot Enabled Items
Responsibility: Whse Mgmt
Navigation: Tasks =>Manual Tasks =>Paper Based Pick
Expected Result:
- Reduce picker keystrokes
Features Used:
- Default Value
- Auto Enter on Field
- Auto Generate LPN
\

Configuration Steps:
- Login to MSCA/WMS Mobile
Responsibility: Whse Mgmt
- Navigation: Tasks => Manual Tasks => Paper Based Pick (W1 Inventory Organization)
- Enter Pick ID : 23612020
- Press Ctrl + Q to open Mobile Personalization Page in Load Mobile Page. Hit F2 to save after set personalization values

Personalization Values in Load Mobile Page


No. Oracle Field Name Features Used Before After

Personalization
1 Level Null Site
Level
Auto Enter FALSE TRUE
2 MAIN.FROM_SUB_CONFIRM
Default Value Null ${MAIN.FROM_SUB}
Auto Enter FALSE TRUE
3 MAIN.FROM_LOC_CONFIRM
Default Value Null ${MAIN.FROM_LOC}

52
4 MAIN.LPN Auto Enter FALSE TRUE
5 MAIN.UOM Auto Enter FALSE TRUE
Auto Enter FALSE TRUE
6 MAIN.XFER_LPN
On Focus Null Send Ctrl-G
7 MAIN.LOAD Rendered TRUE FALSE

- Press F2 to save
- We will continue to personalize Drop Mobile Page, go to paper based pick menu again, then enter pick id again: 23612020. Enter
values like below screenshot

- Enter values in the item details like below screenshot

53
- Hit <Done>, then <Load and Drop> to go to Drop Mobile Page. Notes the Xfer LPN, because we will unload the Xfer LPN to start
over paper based pick. Xfer LPN will be different because the program will invoke generate new lpn.

-
- Press Ctrl + Q to open Mobile Personalization Page in Drop Mobile Page then hit F2 to save after set personalization values
Personalization Values in Drop Mobile Page

54
No. Oracle Field Name Features Used Before After

Personalization
1 Level Null Site
Level
Auto Enter FALSE TRUE
2 PKD.CONFIRM_ZONE
Default Value Null ${PKD.ZONE}
Auto Enter FALSE TRUE
3 PKD.CONFIRM_LOC
Default Value Null ${PKD.LOC}
4 PKD.DROP_LPN Auto Enter FALSE TRUE

- Press F2 to save personalization values in Drop Mobile Page


- Now Manual Unload the Loaded LPN so we can start over the paper based pick with the same id
- Go to Manual Unload Menu

- After Unload the LPN, perform paper based pick again.

Comparison Using Oracle Standard and MWA Express Server in Paper Based Pick

55
Oracle Standard MWA Express Server

1. Scan Paper Pick ID


1. Scan Paper Pick ID System will default and
auto enter confirm
subinventory, locator,
auto enter LPN field. So,
2. Scan Subinv Confirmation the users just need to scan
3. Hit Enter to go to Locator the item code.
Confirmation
4. Scan Locator Confirmation
5. Hit Enter to go to LPN 2. Scan/Enter the Item Code
Field Confirmation
6. Hit Enter to Skip LPN 3. Hit Enter to go to Item
Field Details Mobile Page
7. Scan/Enter the Item Code
Confirmation
8. Hit Enter to go to UOM
Confirmation
9. Hit Enter to skip UOM
Confirmation andgo to
Item Details Mobile Page

4. Scan the Lot Number

56
5. Hit Enter to go to quantity
10. Scan the Lot Number
confirmation
11. Hit Enter to go to quantity
6. Enter the picked quantity
confirmation
7. Hit Enter and it will
12. Enter the picked quantity
automatically Auto Enter
13. Hit Enter to go to Done
Done Button and go to
Button
Pick Load Mobile Page.
14. Hit to Done the Item
Automate Generate the
Details transactions and go
LPN, auto enter Xfer LPN
to Pick Load Mobile Page
Field, Hide the <Load>
15. Hit Ctrl + G to generate the
Button, thenset the pointer
Xfer LPN
to Hit <Load and Drop>
16. Hit Down Key to choose
Buton
<Load and Drop>
17. Hit Enter to confirm the
In the Drop Mobile Page,
<Load and Drop> Action
system will automatically
and go to Drop Mobile default to subinv and to
locator confirmation.
Page.
18. Scan/Enter To 8. Hit Done to finish paper
Subinventory (staging based pick.
subinventory) confirmation
19. Hit Enter to go to To
Locator confirmation
20. Scan/Enter To locator
(staging locator)

57
confirmation
21. Hit Enter to go to Drop
LPN field
22. Hit Enter to skip Drop LPN
field
23. Hit Done to finish paper
based pick.

Total : 23 Steps Total : 8 Steps

3. Restrict the Subinventory LOV and Set the Reason to Required in Oracle Subinventory Transfer Mobile Page
Navigation: Warehousing => Inventory => Transfers => Sub Transfer
Expected Result:
- Restrict to Subinventory LOV
- Hide “Save/Next” action button
- Required Reason Field
Features Used:
- Validate
- Rendered
- Required

58
Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => Inventory => Transfers => Sub Transfer (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page then hit F2 to save after set personalization values
- Set below values in the personalization page
- Personalization Values in Subinventory Mobile Page
Personalization Values
No. Oracle Field Name Features Used Before After

SELECT SECONDARY_INVENTORY_NAME
FROM MTL_SECONDARY_INVENTORIES
1 INV.LPNTO_SUB VALIDATE NULL
WHERE SECONDARY_INVENTORY_NAME
IN ('FGI','EACH')
2 INV.REASON REQUIRED FALSE TRUE
3 INV.SAVE/NEXT RENDERED TRUE FALSE

Result:

59
Oracle Standard MWA Express Server

Reason is Required now


Hide Save/Next button

60
4. Improve the Speed of Label Printing Processvia Handheld in Label Request Mobile Page
Navigation: Warehousing => Labels => Label Request
Expected Result:
- Default Label Type, Label Format, Printer and Copies Value to reduce keystrokes
- Auto Enter improve speed of Label Printing
- Hide “More” Button
Features Used:
- Default Value
- Auto Enter Field
- Required Field
- Hide Field

Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => Labels => Label Request (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page then hit F2 to save after set personalization values
- Set below values in the personalization page
Personalization Values
No. Oracle Field Name Features Used Before After
Default Value NULL Shipping Contents
1 INV.LABEL_TYPE
Auto Enter FALSE TRUE
Default Value NULL SHIPCONT.ZPL
2 INV.FORMAT
Auto Enter FALSE TRUE

61
3 INV.LPN Auto Enter FALSE TRUE
Default Value NULL INTZEBRA01
4 INV.PRINTER
Auto Enter FALSE TRUE
Default Value 3
5 INV.COPIES
Auto Enter FALSE TRUE
6 INV.MORE Rendered TRUE FALSE
Result:

Oracle Standard MWA Express Server

MWA Express Server


default the value based
on stored
User must enter personalization values.
the field one by
one

MWA Express Server set the User Scan the


default printer value, Hide delivery number
More Button, and Automate
auto enter to <Done>

5. Specify Other Fields Value based on Scanned Item in Miscellaneous Transactions Mobile Page

62
Navigation: Warehousing => Inventory => Receipts => Misc Receipt
Expected Result:
If the users perform Miscellaneous Transactions for specific items (Item:1001), then the system will default other fields in that page with
specific values, including the quantity. To achieve this, we will put some logic query to check the item then default the subinventory and
locator based on item slotting setup.
Features Used:
- Subsequent Values feature to Streamline operations
Action Steps:
a. Check Item Slotting Setup
Example: Item Slotting Setup for Item1001 (Subinv: EACH, Locator:E3.2.1)

b. Idenfify all tables that have relationship with Item slotting:


 MTL_ITEM_SUB_INVENTORIES => Item slotting subinventory table

63
 MTL_SECONDARY_LOCATORS => Item slotting locator table
 MTL_ITEM_LOCATIONS => Stock locator table
 MTL_SYSTEM_ITEMS_B => Master item table

c. Create the query to get item slotting subinventory and locator of item ‘1001’
SELECT MISI.SECONDARY_INVENTORY "Subinventory",
MIL.SEGMENT1 || '.' || MIL.SEGMENT2 || '.' || MIL.SEGMENT3 "Locator",
‘10’ “INV.QTY”
FROM MTL_ITEM_SUB_INVENTORIES MISI,
MTL_SECONDARY_LOCATORS MSL,
MTL_ITEM_LOCATIONS MIL
WHERE MISI.ORGANIZATION_ID = ${ORGID}
AND MISI.INVENTORY_ITEM_ID = MSL.INVENTORY_ITEM_ID
AND MIL.ORGANIZATION_ID = MISI.ORGANIZATION_ID
AND MSL.SECONDARY_LOCATOR = MIL.INVENTORY_LOCATION_ID(+)
AND MSL.ORGANIZATION_ID = MIL.ORGANIZATION_ID
AND ROWNUM = 1
AND MISI.INVENTORY_ITEM_ID = (
SELECT MSIB.INVENTORY_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B MSIB
WHERE MSIB.SEGMENT1 = ${Item}
AND MSIB.ORGANIZATION_ID = MISI.ORGANIZATION_ID
)

64
Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => Inventory => Receipts => Misc Receipt (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page then hit F2 to save after set personalization values
- Set below values in the personalization page

Personalization Values

No. Oracle Field Name Features Used Before After


SELECT MISI.SECONDARY_INVENTORY "Subinventory",
MIL.SEGMENT1 || '.' || MIL.SEGMENT2 || '.'|| MIL.SEGMENT3 "Locator",
‘10’ “INV.QTY”
FROM MTL_ITEM_SUB_INVENTORIES MISI,
MTL_SECONDARY_LOCATORS MSL,
MTL_ITEM_LOCATIONS MIL
WHERE MISI.ORGANIZATION_ID = ${ORGID}
AND MISI.INVENTORY_ITEM_ID = MSL.INVENTORY_ITEM_ID
Subsequent AND MIL.ORGANIZATION_ID = MISI.ORGANIZATION_ID
1 Item Null AND MSL.SECONDARY_LOCATOR = MIL.INVENTORY_LOCATION_ID(+)
Value AND MSL.ORGANIZATION_ID = MIL.ORGANIZATION_ID
ANDROWNUM=1
AND MISI.INVENTORY_ITEM_ID=
(
SELECT MSIB.INVENTORY_ITEM_ID
FROM MTL_SYSTEM_ITEMS_B MSIB
WHERE MSIB.SEGMENT1 = ${Item}
AND MSIB.ORGANIZATION_ID=MISI.ORGANIZATION_ID
)

2 Subinventory Auto Enter FALSE TRUE

3 Locator Auto Enter FALSE TRUE

4 UOM Auto Enter FALSE TRUE

65
5 INV.QTY Auto Enter FALSE TRUE

Result:

MWA Express Server

66
6. Make the visible field length wider in Move Order Allocation Page Mobile Page without changing the mwaconfig file.
Responsibility: Material Mgmt
Navigation: Inventory => Move Orders
Expected Result:
- Make the visible field length wider in mobile screen
Features Used:
- Ratio Feature
- Prompt Feature
- Prompt Ratio Logic Calculation

Total Characters Including Space: 30 (From Page Title until MO Allocation$)

Total Characters in the mobile screen:30


Format Prompt ratio =>Prompt ratio : Value ratio (number:number)
Prompt Ratio: 1:4
𝑷𝒓𝒐𝒎𝒑𝒕 𝒓𝒂𝒕𝒊𝒐
Maximum Prompt length =𝑷𝒓𝒐𝒎𝒑𝒕 𝒓𝒂𝒕𝒊𝒐 +𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐 𝒙𝑻𝒐𝒕𝒂𝒍𝑪𝒉𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒔𝒊𝒏𝒕𝒉𝒆𝒎𝒐𝒃𝒊𝒍𝒆𝒔𝒄𝒓𝒆𝒆𝒏

𝟏 𝟏
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟔
𝟏+𝟒 𝟓

67
𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐
Maximum Value Length: 𝑷𝒓𝒐𝒎𝒑𝒕 𝒓𝒂𝒕𝒊𝒐+𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐 𝒙𝑻𝒐𝒕𝒂𝒍𝑪𝒉𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒔𝒊𝒏𝒕𝒉𝒆𝒎𝒐𝒃𝒊𝒍𝒆𝒔𝒄𝒓𝒆𝒆𝒏
𝟒 𝟒
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟐𝟒
𝟏+𝟒 𝟓
Result:

6 Characters

Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Material Mgmt
Navigation: Inventory => Move Orders (M1 Inventory Organization)
- Enter MO Number, then hit <Query>

68
- Press Allocate
- Press Ctrl + Q to open Mobile Personalization Page.
- Set below values in the personalization page
Personalization Values
No. Oracle Field Name Features Used Before After
1 Level Value NULL Site
2 Page Properties Prompt Ratio NULL 1:4
3 MoNum Prompt MO Num MO#
4 LineNum Prompt Line Num Ln#
5 ItemCfm Prompt Confirm Cfm
6 FromSub Prompt From Sub FrmSub
7 FromSubCfm Prompt Confirm Cfm
8 FromLoc Prompt From Loc FrmLoc
9 FromLocCfm Prompt Confirm Cfm
10 AvailQty Prompt Avail Qty AvlQty
11 Qty Prompt Req Qty ReqQty

69
12 QtyCfm Prompt Confirm Cfm

- Hit F2 to save after set personalization values


Result

Oracle Standard MWA Express Server

70
7. Auto Skip Equipment/Sub Sign-Ons in Any Mobile Pages
Example: Auto Skip the Equipment/Sub Sign-Ons in Outbound Task
Responsibility: Whse Mgmt
Navigation: Tasks => Directed Tasks => Outbound => Discrete Picking
Expected Result:
- Auto Skip the the Equipment/Sub Sign-Ons in the Site Level
Features Used:
- Auto Enter on Fields
- Auto Enter on Action Button

Configuration Steps:

- Login to MSCA/WMS Mobile


Example: Auto Skip the Equipment/Sub Sign-Ons in Outbound Task
Responsibility: Whse Mgmt
Navigation: Tasks => Directed Tasks => Outbound => Discrete Picking (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page then hit F2 to save after set personalization values
- Set below values in the personalization page

Personalization Values Version 1

No. Oracle Field Name Features Used Before After


Personalization
1 Level Null Site
Level
2 EZP.EQP Auto Enter FALSE TRUE
3 EZP.ZONE Auto Enter FALSE TRUE

71
4 EZP.DEVICE Auto Enter FALSE TRUE
5 EZP.TASKSIGNON_SUBMIT Auto Enter FALSE TRUE
OR
Personalization Values Version 2

No. Oracle Field Name Features Used Before After


Personalization
1 Level Null Site
Level
2 EZP.EQP Rendered TRUE FALSE
3 EZP.ZONE Rendered TRUE FALSE
4 EZP.DEVICE Rendered TRUE FALSE
5 EZP.TASKSIGNON_SUBMIT Auto Enter FALSE TRUE

Oracle Standard MWA Express Server

Automatically go to the next mobile


page screen

User must enter 5


times to go to next
mobile page.

Total : 0 Step
Total : 5 Steps

72
8. Auto Select then Skip the Organization in Any Mobile Pages
Example: Auto Select the Organization Code in Outbound Task
Responsibility: Whse Mgmt
Navigation: Tasks => Directed Tasks => Outbound => Discrete Picking
Expected Result:
- Auto Select/Skip the Organization based on User Responsibility
Features Used:
- Default Value
- Auto Enter on Field

Configuration Steps:

- Login to MSCA/WMS Mobile


Example: Auto Select the Organization Code in Outbound Task
Responsibility: Whse Mgmt
Navigation: Tasks => Directed Tasks => Outbound => Discrete Picking
- Press Ctrl + Q when navigate to below page

Personalization Values

73
No. Oracle Field Name Features Used Before After
Personalization
1 Level Null Responsibility
Level
Personalization
2 Value Null Whse Mgmt (Responsibility Name)
Level
Default Value NULL W1
3 OrgField
Auto Enter FALSE TRUE

Oracle Standard MWA Express Server

Automatically go to the next mobile


page screen

User must Scan/Enter


the Organization
Code, then Press
Enter to Confirm the
Organization Code Total : 0
Total : 3 Steps

74
9. Add New Custom Field in Any Mobile Pages
Example: Pick Load Page(Wave Picking)
Responsibility: Whse Mgmt
Navigation: Tasks => Directed Tasks => Outbound =>Wave Picking
Expected Result:
- Add Delivery Number Information
Features Used:
- New Field Bean
- Default Value using Custom SQL Query

Personalization Steps:
1. Go to Tasks => Directed Tasks => Outbound => Wave Picking and press Ctrl + Q to go to MWA Personalization Mobile Page
2. In “Page Properties” column, Hit on <New Field Bean>
3. Set the Field Name (DO#) and the new field position (Before) MAIN.FROM_SUBINV), then hit <Generate>

75
3

4. Set Personalization Values

No. Oracle Field Name Features Used Before After


1 Personalization
Level Null Site
Level
2 DO Rendered Default True
select wda.delivery_id "DO#" from
mtl_material_transactions_temp mmtt,wsh_delivery_details
wdd,wsh_delivery_assignments wda where
On Page
3 Page Properties Null mmtt.move_order_line_id = wdd.move_order_line_id AND
Entered
wdd.delivery_detail_id = wda.delivery_detail_id AND
mmtt.transaction_temp_id = ${TRANSACTION_TEMP_ID}
and rownum=1

76
Notes:
- On Page Entered feature work like subsequent values
feature, you need to specify the field alias in the
query. We can used this feature to specify any field
values when the page is rendered by oracle
Example:
select wda.delivery_id "DO#" => DO# as the alias for
the column name

4.2

4.1

4.3

77
5. Save (Hit F2)

6. View the results

78
10. Add New DFF (Descriptive Flexfield Field) in Any Mobile Page
Problem summary: Oracle standard only providesDFF on some mobile pages, but most warehouses need to use DFF in other mobile pages
or add new fields to achieve the business requirement. With MWA Express Server, we can add any DFF to any mobile pages.
Example: Add DFF in the Miscellaneous receipt transactions
Responsibility: Whse Mgmt
Navigation: Warehousing =>Inventory =>Receipts =>Misc Receipt
Expected Result:
- Add DFF in the Misc. Receipt mobile page transactions
- Store the DFF value into Oracle DFF
Features Used:
- Add new field bean
- On Submit feature. We will put custom PL/SQL to store the DFF value into oracle EBS Table
(MTL_MATERIAL_TRANSACTIONS Table). You can use any custom PL/SQL in this field based on your business requirements.

Personalization Steps:

1. Setup the DFF in the Oracle Application.


Example: we will use transaction history DFF in Inventory application as the DFF. We will combine global data element DFF with
“Receipt” the context field values in transaction history DFF.

79
Global Data
ElementSegment
Global Data
Element DFF

Context Category
Segment

Context
Category DFF

2. Compile and Freeze the DFF.

80
3. Go to Warehousing => Inventory => Receipts => Misc Receipt and press Ctrl + Q to go to MWA Personalization Mobile Page
4. In “Page Properties” column, Hit on <New Field Bean>
5. Set the New Field Name = ‘DFF_MISC_RCPT’
6. Set Field Bean Type = ‘DFF’
7. Example: we want to put this DFF after transaction account, then set the Position value = ‘After Transaction_Account’. The The
position value can be After or before, space then name of the fields (case sensitive).
8. Hit on “<Generate>”

4
7
8

9. Set the prompt to ‘DFF’ or any values based on business requirements.

81
10. Choose the Rendered value to ‘True’
11. Choose the Application value to ‘INV’
12. Choose the DFF Name/Title value to ‘Transaction history’. This value same with the DFF in the Oracle Application.
13. Choose the default value of DFF context value to ‘Receipt’
14. Press F2 to save if you want to finish the personalization.

10
11 12

13

15. Replace standard PL/SQL with the custom PL/SQL on “<Save/Next>” and “<Done> action buttons

82
Sample Code: INV_LPN_TRX_PUB.PROCESS_LPN_TRX->XXINT_PROCESS_TXN_PKG.PROCESS_LPN_TRX
We will replace oracle standard PL/SQL (INV_LPN_TRX_PUB.PROCESS_LPN_TRX) with custom PL/SQL
(XXINT_PROCESS_TXN_PKG.PROCESS_LPN_TRX)

15

16. Go to ‘Misc Receipt’ menu

83
17. Enter the Transaction Account
18. The system will show the DFF.

17

18

84
19. Complete the Misc. Receipt transactions. You can choose <Save/Next> or <Done> button to complete the transactions.

19

85
20. Verify the inventory material transactions in Oracle applications. Click on DFF to see the detail informations.

20

86
11. Reduce Keystroke in Outbound/Warehousing LPN Split Transactions
Problem summary: The users want to perform LPN Split Transactions, but they want to clear “To LPN” field after split transactions
completed. If they’re using <Split> button, the system will go back to previous menu and they need to re-enter split menu again. If they’re
using <Save/Next> button, they don’t need to re-enter the split menu, but theystill need to clear “To LPN” field. This is because in standard
Oracle WMS Mobile page, it always defaults the “To LPN” field with previous “To LPN” number.
Responsibility: Whse Mgmt
Navigation: Outbound => Packing => Split
Or Navigation: Warehousing =>LPN Transactions =>Split (we will use this mobile page and do 2 sample transactions)
Expected Result:
- Clear “To LPN” Field
Features Used:
- Default Value “To LPN” Field
- Auto Clear and Auto Generate on “To LPN” field
- Auto Enter on “To LPN” , “UOM” Field

Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => LPN Transactions => Split (W1 Inventory organization, we will use this mobile page and do 2 sample
transactions
- Press Ctrl + Q to open Mobile Personalization Page
- Set below values in the personalization page (responsibility personalization site level)

87
Personalization Values
No. Oracle Field Name Features Used Before After
Personalization
1 Level Null Responsibility
Level
Personalization
2 Value Null Whse Mgmt (Responsibility Name)
Level
Auto Enter FALSE TRUE
3 INV.TO_LPN
On Focus Null Sent Ctrl-G
4 INV.UOM Auto Enter FALSE TRUE

88
Oracle Standard MWA Express Server

1. Scan the Source LPN Split 1. Scan the Source LPN Split
2. Hit Ctrl+G to generate the 2. Scan the Item
new LPN 3. Enter split quantity
3. Hit Enter to go to Item Field 4. Hit Enter to go to Lot Field
4. Scan the Item 5. Scan the lot number
5. Hit Enter to skip UOM 6. Enter the lot quantity
Field 7. Hit Enter to go to
6. Enter split quantity “Save/Next” button
7. Hit Enter to go to Lot Field 8. Hit Enter to confirm split
8. Scan the lot number transaction and go to next
9. Enter the lot quantity split transaction
10. Hit Enter to go to
“Save/Next” button The system will the clear,
11. Hit Enter to confirm split auto generate the LPN, and
transaction and go to next split auto enter the “To LPN”
transaction Field

89
12. Clear the “To LPN” Field,
because the system still
defaulted it with previous “To 9. Scan the item
LPN” value 10. Enter split quantity
13. Hit Ctrl+G to generate the 11. Hit Enter to go to Lot
new LPN Field
14. Hit Enter to go to Item 12. Scan the lot number
Field 13. Enter the lot quantity
15. Scan the Item 14. Hit Enter to go to
16. Hit Enter to skip UOM “Save/Next” button
Field 15. Hit Enter to confirm split
17.Enter split quantity transaction and go to next
18 Hit Enter to go to Lot split transaction
Field
19. Scan the lot number
20. Enter the lot quantity
21. Hit Enter to go to
“Save/Next” button
22. Hit Enter to confirm split
transaction and go to next split
transaction

Total : 15 Steps
Total : 22 Steps

90
12. Custom Rendered Logic in Action Button on Paper Based Pick
Business Requirement: The pickers want to render <Load and Drop> button for the last task in the delivery, but hide it when they still have
open tasks for the delivery . With this personalization, the picker can know when they should drop the items immediately to staging out and
this is very good for the warehouse which uses multiple pickers in 1 sales/delivery order. The warehouse used paper based pick for the
outbound process and 1 sales order can have multiple allocations/tasks, and these tasks will be picked by multiple pickers.
This feature can be setup in standard Oracle Pick Load Page, but you cannot set it per user or responsibility or organization or specific
mobile page
Example:
 Sales Order number = 777801 have 3 tasks, this tasks will be picked by 2 pickers, which each picker will get pick slip with
3 tasks in the pick slip. In the pick slip, the picker will scan the transaction number barcode as the source of pick id.

Responsibility: Whse Mgmt

91
Navigation: Tasks =>Manual Tasks =>Paper based pick
Expected Result:
- <Load and Drop> Button only display in the last task
- <Load> button only display when the sales order number still have remaining taks.
Features Used:
- Rendered and Rendered Logic
Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Tasks => Manual Tasks => Paper based pick (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page
- Enter pick id: 23612008 then enter to go to paper based pick load mobile page
- <Load and Drop> Button only display in the last task

- Press Ctrl + Q to go mobile personalization page

92
- Set below values in the personalization page
- Press F2 to save personalization values

Personalization Values
No. Oracle Field Name Features Used Before After
Rendered Dynamic
Default
Rendered select 1 from mtl_material_transactions_temp mmtt1, wsh_delivery_details
Null
Logic wdd1, wsh_delivery_assignments wda1 where mmtt1.transaction_temp_id =
${TRANSACTION_TEMP_ID} and mmtt1.move_order_line_id =
wdd1.move_order_line_id and wdd1.delivery_detail_id =
wda1.delivery_detail_id and exists (select 1 from
1 MAIN.LOAD
mtl_material_transactions_temp mmtt2, wsh_delivery_details wdd2,
wsh_delivery_assignments wda2 where wda1.delivery_id =
wda2.delivery_id and wda2.delivery_detail_id = wdd2.delivery_detail_id and
wdd2.move_order_line_id = mmtt2.move_order_line_id and
mmtt2.transaction_temp_id != mmtt1.transaction_temp_id and
mmtt2.transfer_lpn_id is null)
Rendered dynamic
Default
Rendered select 1 from mtl_material_transactions_temp mmtt1, wsh_delivery_details
Null
Logic wdd1, wsh_delivery_assignments wda1 where mmtt1.transaction_temp_id =
${TRANSACTION_TEMP_ID} and mmtt1.move_order_line_id =
wdd1.move_order_line_id and wdd1.delivery_detail_id =
wda1.delivery_detail_id and not exists (select 1 from
2 MAIN.DROP
mtl_material_transactions_temp mmtt2, wsh_delivery_details wdd2,
wsh_delivery_assignments wda2 where wda1.delivery_id = wda2.delivery_id
and wda2.delivery_detail_id = wdd2.delivery_detail_id and
wdd2.move_order_line_id = mmtt2.move_order_line_id and
mmtt2.transaction_temp_id!= mmtt1.transaction_temp_idand
mmtt2.transfer_lpn_id is null)

Results
1. Picker 1 scan the transaction number23610518. System will display <Load> button.

93
1

2. Picker 2 scan the transaction number 23610519. System will display <Load> button.

94
2

95
3. Picker 1 scan the transaction number 23610520, because this task is the last task then system will display <Load and Drop>
button.

96
13. Change the Error Message on Any field in Any Mobile Pages
Example: Change the error message and pop up to the user screen, so the users can see the error messages.This is very helpful for small
handheld device screen because the standard error message always shows in the bottom of the screen, sometimes the users can’t see the error
message. We wil personalize error message in the LPN Unpack Trasactions.
Responsibility: Whse Mgmt
Navigation: Warehousing =>LPN Transactions =>Unpack
Expected Result:
- Change the current error message “No result is found” to “Scan LPN is invalid”
Features Used:
- Message Map
Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => LPN Transactions => Unpack (W1 Inventory Organization)
- Press Ctrl + Q to open Mobile Personalization Page
- Set below values in the personalization page
Personalization Values

No. Oracle Field Name Features Used Before After

1 INV.FROM_LPN Message Map Null No result is found-> Scan LPN is invalid

- Press F2 to save the personalization


- Go to Unpack Menu
- Enter unregistered LPN in the ‘From LPN’ field. Example : ~KK then Enter. The system will show the custom error message.

97
Oracle Standard MWA Express Server

98
14. Swap Action Button
Expected Result:
- Swap the action button
Features Used:
- Action Button Order Sequence
Configuration Steps:

- Login to MSCA/WMS Mobile


Responsibility: Whse Mgmt
Navigation: Warehousing => LPN Transaction => Pack
- Press Ctrl + Q to open Mobile Personalization Page

- Set below values in the personalization page

99
Personalization Values

No. Oracle Field Name Features Used Before After

1 INV.MORE Order Sequence NULL 2

2 INV.ACTION Order Sequence NULL 1

3 INV.CANCEL Order Sequence NULL 3

- Press F2 to save the personalization


- Go to Pack Menu

Oracle Standard MWA Express Server

100
15. Enable user level logging without server bounce
In standard Oracle MWA server, enabling trace mode for log file needs a server bounce. At times, this is not desirable or possible in
production environment as it affects the ongoing operation. MWA Express Server provides the ability to enable user level logging without
down-time. It can be enabled by setting profile option for a user. Once enabled, trace log file will be generated for the user only. User level
logging is preferable as it is more readable and will speed up any troubleshooting process.

Expected Result:
- Logging in the user level
- No need to bounce the server
Features Used:
- MWA Expres Server Trace Enging
Configuration Steps:
1. Login to Oracle Application to set the MWA Debug profile system values
Responsibility: System Administrator
Navigation: Profile => System
2. Enter the user name that we want to debug. Example: HTJIOE
3. Enter the profile name: MWA%Debug%
4. Click on Find Button

101
2

3
4

5. Set the user MWA: Debug Trace values with Yes

6. Save, then close the form


7. Open the Profile system values form again to set inventory debug log
8. Enter the same user name that we want to debug. Example: HTJIOE
9. Enter the profile name: INV%Debug%
10. Click on Find

102
8

9 10

11. Enter the INV: Debug Trace values with No, because MWA Express Server will generate the inv debug file when you set the MWA:
Debug Trace value to Yes
12. Enter the INV: Debug file (Including the complete path). Example: we want to generate the INV Log file to this
directory/usr/tmp/htjioe_inv2.log.
13. Enter the value of INV:Debug Level. Example: 11
14. Save then close the form.

103
11

12
13

15. Go to MSCA/WMS Mobile Form. Telnet to 192.168.1.225 port 10204


16. Login to MSCA/WMS Mobile. Enter the username and password.

104
17. Perform any transactions. Example: we will generate mwa and inventory debug file to pack the lpn
Responsibility: Whse Mgmt
Navigation: Warehousing => Inventory => LPN Transactions => Pack (Inventory Organization: W1)
18. In the To LPN Field: Press Ctrl+G to generate the LPN

19. Enter Subinv, Locator, item and quantity and Lot to Pack to Generated LPN
20. Hit on <Pack> button to confirm packing.
21. Logout from Application

22. Go to DB Tier and navigate to usr/tmp for INV Debug Log file.

105
23. Go to mwa log directory and system will generate the mwa log per user.

106

Potrebbero piacerti anche