Mwa Express Server User Guide 1.9
Mwa Express Server User Guide 1.9
User Guide
Release 1.9
OCTOBER 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.
✓ 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.
✓ 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.
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.
Screenshots:
For R12.2.X
This section describes how to install the MWA Express server. The steps are as follows.
o Connect to Run environment
. ./EBSapps.env run
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.
Chapter 5 - Personalization Setup
This section describes how to enable personalization administration for a user and how to
validate the success of the installation.
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”
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.
o Go back to the Miscellaneous Receipt transaction once more to verify that the page title
has been reverted back to its original value
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
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.
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}
• 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.
▪ 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.
• 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.
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
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}
• 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.
• 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.
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.
• 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#}");
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.
• 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.
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.
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) {
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;
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
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;
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');
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"));
}
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.
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
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:
• 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.
8.7 CHANGE LOG LEVEL WITHOUT SERVER RESTART
The functionality "Change MWA Log Level Without Server Restart" allows customer to
change the MWA log level to a different level without restarting the MWA service. This
can be useful when we need to troubleshoot issue where a restart is normally required for
change of mwa.LogLevel in mwa.cfg. The change made by this functionality is effective
immediately and is only affecting the current MWA runtime for the port that the MWA
Administrator connects to. When MWA server is restarted, it will use the log level in
mwa.cfg again.
To use this functionality, connect to the MWA port that we want to change the log level.
User needs to login to MWA server with MWA Administrator responsibility and access
menu "Change Log Level".
Description of fields:
Log Type - select the type of log which can be system, INV, XXINT, SCAN, or All.
Current Log - this shows the current log level at that time.
New Log Level - select the new log level which can be Debug, Error, Performance,
Trace, or Warning.
Set - press this button to change the log level.
Cancel - exit to menu.
8.8 PERSONALIZATION AUDIT
Personalization Audit is a feature to allow developer to audit the personalization code. The
features include the capabilities to Roll back a personalization to a previous audited version, comparing
the current personalization with the audited version, and see the history of changes of the audited
personalization.
Personalization Audit is made up from 4 different Concurrent Requests that build up the
functionality of the feature.
MWA Express Audit Personalization is a concurrent request used to audit the current active
personalization. MWA Express Audit Personalization is available under the Application Developer
responsibility.
Note: MWA Express Rollback Personalization will remove and replace the current active
personalization with the selected audited personalization version.
8.8.3 MWA Express Personalization History
MWA Express Audit Personalization is a concurrent request used to see the history of a personalization
from the audited personalization. MWA Express Personalization History is available under the
Application Developer responsibility.
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.
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
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
- Press F2 to save the personalization values, then cancel the receipt transaction. Now go back to PO Receive Menu.
Result Comparison
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}
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
-
- 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
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
Oracle Standard MWA Express Server
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
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:
Oracle Standard MWA Express Server
Configuration Steps:
5. Specify Other Fields Value based on Scanned Item in Miscellaneous Transactions Mobile Page
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)
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
)
Configuration Steps:
Personalization Values
Result:
𝟏 𝟏
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟔
𝟏+𝟒 𝟓
𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐
Maximum Value Length: 𝑷𝒓𝒐𝒎𝒑𝒕 𝒓𝒂𝒕𝒊𝒐+𝑽𝒂𝒍𝒖𝒆 𝒓𝒂𝒕𝒊𝒐 𝒙𝑻𝒐𝒕𝒂𝒍𝑪𝒉𝒂𝒓𝒂𝒄𝒕𝒆𝒓𝒔𝒊𝒏𝒕𝒉𝒆𝒎𝒐𝒃𝒊𝒍𝒆𝒔𝒄𝒓𝒆𝒆𝒏
𝟒 𝟒
= 𝒙 𝟑𝟎 = 𝒙𝟑𝟎 = 𝟐𝟒
𝟏+𝟒 𝟓
Result:
6 Characters
Configuration Steps:
Configuration Steps:
Total : 0 Step
Total : 5 Steps
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
No. Oracle Field Name Features Used Before After
Personalization
1 Level
Level
Null Responsibility
Personalization
2 Value
Level
Null Whse Mgmt (Responsibility Name)
Default Value NULL W1
3 OrgField
Auto Enter FALSE TRUE
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>
3
4.2
4.1
4.3
5. Save (Hit F2)
Personalization Steps:
Context Category
Segment
Context
Category DFF
4
7
8
10
11 12
13
15. Replace standard PL/SQL with the custom PL/SQL on “<Save/Next>” and “<Done> action buttons
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
17
18
19. Complete the Misc. Receipt transactions. You can choose <Save/Next> or <Done> button to complete the transactions.
19
20. Verify the inventory material transactions in Oracle applications. Click on DFF to see the detail informations.
20
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:
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
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
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.
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.
1
2. Picker 2 scan the transaction number 23610519. System will display <Load> button.
2
2
3. Picker 1 scan the transaction number 23610520, because this task is the last task then system will display <Load and Drop>
button.
3
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:
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
2
3
4
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.
11
12
13
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.
23. Go to mwa log directory and system will generate the mwa log per user.