Mwa Express Server User Guide 1.8
Mwa Express Server User Guide 1.8
Mwa Express Server User Guide 1.8
User Guide
Release 1.8
May 2017
Table of Contents
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.
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:
Change page title or field prompt to make the transactions more user-friendly
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.
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.
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.
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 Once in the patch environment, run the same steps as described for R12.1.x (page 6)
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 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]
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.
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
Press Ctrl-Q
to invoke
Personalization
Page
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.
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.
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}
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.
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").
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
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.
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}
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
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.
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.
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.
31
F[1-4] Send Function Keys. sendKey(“F1”);
Supported function is
F1, F2, F3 and F4
32
public void abortSystemHandler();
This stops the system handler so cursor will not move to next 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();
}
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 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;
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;
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.
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');
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"));
}
40
Chapter 8 –Value Added Features
This chapter describes the Value Added Features which provides additional functionalities to the
server.
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();
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
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.
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.
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.
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
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
50
Oracle Standard MWA Express Server
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
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
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
Comparison Using Oracle Standard and MWA Express Server in Paper Based Pick
55
Oracle Standard MWA Express Server
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.
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:
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
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:
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:
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)
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:
Personalization Values
65
5 INV.QTY Auto Enter FALSE TRUE
Result:
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
𝟏 𝟏
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟔
𝟏+𝟒 𝟓
67
𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐
Maximum Value Length: 𝑷𝒓𝒐𝒎𝒑𝒕 𝒓𝒂𝒕𝒊𝒐+𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐 𝒙𝑻𝒐𝒕𝒂𝒍𝑪𝒉𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒔𝒊𝒏𝒕𝒉𝒆𝒎𝒐𝒃𝒊𝒍𝒆𝒔𝒄𝒓𝒆𝒆𝒏
𝟒 𝟒
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟐𝟒
𝟏+𝟒 𝟓
Result:
6 Characters
Configuration Steps:
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
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:
71
4 EZP.DEVICE Auto Enter FALSE TRUE
5 EZP.TASKSIGNON_SUBMIT Auto Enter FALSE TRUE
OR
Personalization Values Version 2
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:
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
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
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)
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:
79
Global Data
ElementSegment
Global Data
Element DFF
Context Category
Segment
Context
Category 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
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
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:
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.
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:
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:
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:
99
Personalization Values
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
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
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