You are on page 1of 15

Oracle Mobile Supply Chain applications(MSCA) enable users to perform

many common warehouse and shop floor transactions through hand-held


radio frequency devices, personal digital assistants and truck-mounted
radio frequency scanners. Oracle Mobile Supply Chain is part of the Oracle
E-Business Suite, an integrated set of business applications that delivers
complete process automation and complete information.

Mobile Supply Chain Applications (MSCA) enables automated mobile user


operations. This is performed using hand held radio frequency (RF)
devices, PDAs, and lift truck mounted RF scanners. Oracle has leveraged
standard Internet technologies such as Java, XML, TCP/IP and Telnet to
create a device independent technology platform to support these types
of applications. In general, these mobile devices will be connected to the
network using the radio frequency (RF) standard of 802.11b and will
communicate using TCP/IP. The figure below explains the communication
flow using Mobile Devices.

Functional Areas Covered by Mobile Applications

Manufacturing: Moves, Issues, Returns, Scrap, Completions etc

Receiving: Direct, Standard, Inspect, Cross-Dock, Print etc

Inventory: Transactions, Transfers, Counts, Labelling etc

Shipping: Pick confirm, Ship Confirm etc

Advantages of Using Mobile Devices

Improve operational productivity and reduce costs through process


automation

Ensure accurate, up to date inventory information by using barcode


scanning for data entry.

Increase customer satisfaction by improving inventory accuracy,


shipment confirmation and quality tracking

Real Time Validations

Technical Overview of MSCA/MWA Framework


Oracle has built MSCA/MWA framework in order to develop Mobile
Applications. A mobile application, as defined by MSCA, is built using the
following Java Beans:
1. 1) A MenuItemBean is needed to attach the mobile application to
the Oracle Desktop ERP. It contains no page layout information on its
own, but is a necessary conduit to connect the Desktop ERP to
mobile transactions. At the leaf node of the FND menu structure lays
an FND Form Function that points to the MenuItemBean. The
MenuItemBean in itself points to the first page in the application,
which is represented by a Page Bean.
2. 2) A PageBean represents the unit of display (i.e. a single screen
on a mobile client). To define a new page, the developer must
extend the PageBean, and make a new page bean class. Within this
new class, the developer must use the new PageBean's constructor
to instantiate FieldBeans (graphical components), and add them to
the page.
3. 3) The FieldBean is a super class for all data collection/display
graphical components that the developer can use in their pages.
When the mobile server loads a new page, it calls the user defined
PageBean's constructor, which in turn creates all of the graphical
components on that page. Examples of FieldBeans are
TextFieldBean, ButtonFieldBean, LOVFieldBean, MultiListFieldBean,
ListFieldBean, HeadingFieldBean, SeparatorFieldBean.

MSCA/MWA Framework is based on existing Java Event-Listener Model.


An application's runtime logic is specified through the mobile applications
event model, a set of interfaces that provide an infrastructure for handling
events in an organized and modularized fashion. A listener can be added
to any field, page, or application of your mobile transaction. The following
is a list of listeners available:
1. FieldEntered this is called when a particular field is entered. For
example, prior to entering a particular field, there may be a need to
reinitialize some variables.
2. FieldExited this is called when a particular field is exited. The
most common of the listeners, this is used for validation of user
input.
3. PageEntered called when the page is entered, this can be used
to initialize values on the page.

4. PageExited called when the page is exited, this can perform


page level validation logic.
5. AppEntered called when the entire transaction is entered, this
can be used to initialize transaction level variables.
6. AppExited called when the entire application is exit, an example
use can be to close resources.
7. SpecialKeyPressed this is called when the user presses any
special character, such as a Control character. Pressing CTRL-G to
generate LPNs or Lots is one example of when this gets called.
For This We need to Develop 3 Java Classes
8. XXCustomFunction.java: This Class is for Application level
initialization and this class is registered as the Function in AOL. This
extends the base class MenuItemBean

9. XXCustomPage.java: This Class is for Page initialization. It just


creates the layout and adds the beans to the page. It extends
PageBean Class

10.
XXCustomFListener.java: This Class is the event listener
class. It listens to the events on each bean on the page and calls
appropriate method to handle the event.

CustomTestFListener CustomTestFunction. CustomTestPage.jav


.java
java
a

Compile above 3 classes deploy to $JAVA_TOP/Clasess/<your custom


folder>
Create form function and link it to menu

FieldBeans

The type of fields supported are:

Text

LOV

List

Button

Heading1

Heading2

Line Separator

Space Separator

1)InputableFieldBean

InputableFieldBean is the base class for all user developed field beans which has
a value property to be inputable during "runtime".
This class is the super class for Text field, Read only Text field, LOV field.

The Commonly used APIs:

public void
setEditable(boolean)

public void

Set whether the


filed is read only
or not.

Mandatory or

setRequired(boolean Required) not.

This is used to
alter the case of
the values
entered by the
public void
setAlter(java.lang.String)

user. For eg
setAlter("U")
makes the user
input to Upper
Case after the
user types in the
value.

public java.lang.String
getValue()

Get the value


entered by the
user

public void
setValue(java.lang.String)

Set the value in


the field

public void

Set data stream

setBarcodeDelimiter(char)

delimiter

public int getBarcodeDelimiter()

Get data stream


delimiter

public void

Set The DFI -

setDFIs(java.lang.String[] )

Data Field
Indicator

public java.lang.String[]
getDFIs()

Get the DFI

public void

Set the DFI

setDFIRequired(boolean)

required flag

As indicated in the class diagram, Inputable beans have Text Field Bean and LOV field Bean as most

commonly used subclasses.


We will now get into the details of each of them.

LOVFieldBean
LOV is commonly used component in Oracle Applications. It provides the user with list of
values and user has to choose one of them.
The common requirements which are required for constructing a LOV are:
1.

Source for List of values (mostly an SQL query or an PLSQL procedure which returns the query result
as REF CURSOR)

2.

The various values associated with each selection(eg,Emp Id, Emp Name, Department, Description)

3.

The values displayed in the UI and values used in background(eg Usually Emp Name is displayed in
the screen, not the Emp Id. But we get the Emp Id of selected Emp Name and use it for further processing)

4.

Data types of each parameters passed to SQL Query or PLSQL procedure and their values(if we use
bind parameters or IN parameters)

5.

An array to get the values associated with the selected value by the user.

6.

Criteria for validation check to be performed, if the user manually enters the value in the LOV field rather
than selecting one by clicking "torch lite" icon, we can either validate it via an API or accept is just like that.

The various API used to achieve the above is as follows:

get SQL query or


public java.lang.String getlovStatement()

PL/SQL procedure with


a reference cursor
output parameter.

set SQL query or


public void

PL/SQL procedure with

setlovStatement(java.lang.String)

a reference cursor
output parameter.

public java.lang.String[]

get unique names of

getSubfieldNames()

subfields of each value

public void

set key names of

setSubfieldNames(java.lang.String[])

subfields.

public java.lang.String[]

get prompts of

getSubfieldPrompts()

subfields.

public void

set prompts of

setSubfieldPrompts(java.lang.String[])

subfields.

public boolean[] getSubfieldDisplays()

public void setSubfieldDisplays(boolean[])

get display properties


of subfields.

set display properties of

subfields.(This controls
which values are
displyed in UI. For eg,
Empid is usullay not
displayed in UI though
it is a part of the
LOV)

public java.lang.String[]

get parameter data type

getInputParameterTypes()

list.

publicvoid

set parameter data type

setInputParameterTypes(java.lang.String[]) list.

public java.lang.String[]

get input parameter

getInputParameters()

list.

public void
setInputParameters(java.lang.String[])
public void
setSelectedValues(java.util.Vector)

set input parameter list.

sets the return vector

obtain a vector of
public java.util.Vector getSelectedValues() String values for the
chosen LOV
when we setValue we
public void setValue(java.lang.String)

also have to clear the


subfield values for
this bean.

public void setValidateFromLOV(boolean)

set the
validateFromLOV

property. (Default is
true)

For code snippet of how to create an LOV, one can refer my previous article "Hello World in
Mobile Applications"
TextFieldBean
Text Field is a common means of data input to mobile applications either via scanning a value
or by manually typing in to it.This can also be used to display some values by making this
field as read only so that user cant edit or enter any value into this field.
The Commonly used API used specific to Text filed is

indicate the

public void
setIsPassword(boolean IsPassword)

field to store a
password.

Most other common APIs are available in the super class "InputableFieldBean"
2)HeadingFieldBean
HeadingFieldBean is the base class for all user developed heading field beans.
This class is the bean class for two types of headings: HEADING1 and HEADING2.
Default heading type is HEADING1. Heading Field is mainly used to set Titles for each regions of a Mobile page.
The Commonly used APIs:

set the type of headings.


public void
setHeadingType(short)

value of this property is


either
FieldBean.HEADING1 or
FieldBean.HEADING2.

public short
getAlignment()

return the heading alignment

set the heading alignment


public void
setAlignment(short)

value of this property is


either
HeadingFieldBean.LEFT or
HeadingFieldBean.CENTER

3)ListFieldBean
ListfieldBean is bean which holds a fixed list of values. In OAF, it is called as poplist. Please see the image
below for a List Bean.
The Commonly used APIs:

public java.lang.String
getValue()
public void
setValue(java.lang.String Value)

get field value.

set field value.

get list of options


public java.lang.String

with each option

getListSource()

separated by
comma.

set list of options


public void

with each option

setListSource(java.lang.String)

separated by
comma.

public void

set list of options

setListSource(java.util.Vector)

via a vector

You might also like