on 05-18-2009 5:48 PM
Hi,
I am migrating an application from Mobile 2.5 to Mobile 7.1.
In the old application code was implemented in the user exit for dynamic filters.
I have been reading the documentation of migration which says we must do a custom service.
Does anyone know what are the steps to do this?
Best regards.
Maria Elena
OK
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Custom services in DOE can influence the current message flow(using read and write services) , but does not exactly help in making this data to flow down to a certain device (make this data subscribe to a device).
In DOE, data flows down to a device based on distribution rules only.
There are ways to design a distribution rule , it could be criteria field based rule(the value of a specific dataobject field(s) are evaluated against static values or dynamic values)
it could be a bulk rule , where data flows down irrrespective of the content of the dataobject.
If I understand right, you need to send data based on a user name only to device having the same user?
This data table is present in backend ?
is this user that you mentioned in the query ((Select * from table where user = user device), present as part of dataobject that is modeled in DOE?
As you explained initial load will bring all the data from BE to DOE and using rules , this data is filtered and send to devices that are eligible to receive this data
Regards,
Liji
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Maria Elena,
In NW mobile 7.1 , data to be downloaded to device is already calculated and its kind of pushed till the device outbound queue(via extract).
During sync, only pull that happens is from the device outbound queue for all standard data objects unlike in MI where it is even pulled from backend.
Call to getDetail during sync depends on the task of message that is send to DOE from client inturn to backend during that sync cycle.
Depending on the message task 'I','D' or 'U' (insert,delete,update) ,corresponding Create,Delete,Modify bapi wrappers are called.
During Modify and Create operation , GetDetail is called to get the latest data from backend.
For delete there is no call to backend for GetDetail.
Create,Modify,Delete bapi wrappers are invoked per header key.
Ideally during sync there is no getList call for standard data objects.
But for Two-way dataobjects,I think this is not the case.
Regards,
Liji
Hi,
Rule means normal rule and normal rules are defined with some criteria fields(rule fields) that are mapped against constant value / device attributes /subgen value etc..
In short , if there is a normal rule defined on a data object , the instances of dataobject flows down to devices only when the dataobject fields participating in that rule matches the distribution pattern defined in the rule.
For eg, depending on the equipment type of a service order , this data needs to be distributed to a device(device user having expertise in servicing that equipment). Here equipment field in service order DO becomes the rule field.
Bulk rule doesnt expect any rule fields or criteria fields to be defined.
Only the device mapping / device binding could be defined to decide which devices can subscribe to this rule or get data because of this rule.
Device binding ALL will send all instances of this data object to all devices.
If the distribution pattern does not depend on the data object field values, then bulk rule could be used.
For eg, sending the master data to all devices .
Regards,
Liji
Hi,
Another thing that happens is that I am making a migration of the MI 2.5 application to the DOE a smart sync and there is a query that I failed.
Obteniendo la siguiente exception:
java.lang.IllegalArgumentException: Trying to compare wrong type to attribute com.sap.tc.mobile.cfs.compat.FieldDescriptorImpl@c0682
at com.sap.tc.mobile.cfs.compat.QueryParameterImpl.checkValue()
at com.sap.tc.mobile.cfs.compat.QueryParameterImpl.adviseCondition()
at com.sap.tc.mobile.cfs.compat.QueryParameterConditionImpl.<init>()
at com.sap.tc.mobile.cfs.compat.QueryFactoryImpl.createCondition()
at com.sap.tc.mobile.cfs.compat.SmartSyncJQueryFactoryImpl.createCondition()
at com.iberdrola.generacion.movilidad.rondas.gestores.GestorLectura.obtenerListaLecturas()
at com.iberdrola.generacion.movilidad.rondas.gestores.GestorParte.obtenerListaPartes()
at com.iberdrola.generacion.movilidad.rondas.controladoras.DetalleParte.onLoad()
at com.sap.mbs.core.control.AbstractViewController.process()
at com.sap.mbs.core.control.DefaultStateMachine.process()
at com.sap.mbs.core.control.DefaultStateMachine.process()
at com.sap.mbs.core.web.FrontServlet.doHandleEvent()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGetThreadSafe()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.doGet()
at com.sap.ip.me.api.runtime.jsp.AbstractMEHttpServlet.service()
at javax.servlet.http.HttpServlet.service()
at org.apache.tomcat.core.ServletWrapper.doService()
at org.apache.tomcat.core.Handler.service()
at org.apache.tomcat.core.ServletWrapper.service()
at org.apache.tomcat.core.ContextManager.internalService()
at org.apache.tomcat.core.ContextManager.service()
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection()
at org.apache.tomcat.service.TcpWorkerThread.runIt()
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run()
at java.lang.Thread.run()
The code of the query is:
stringParam = jQueryFactory.createParameter(parte);
try{
condicion = jQueryFactory.createCondition(idParteAttr, RelationalOperatorType.EQUALS, stringParam);}catch(Throwable e)
{
e.printStackTrace();
e.toString();
e.getCause();
};
sortOrder=jQueryFactory.createSortOrder(secuenciaAttr,true);
query = jQueryFactory.createQuery(atributos, condicion,sortOrder);
resultado = dataFacade.executeQuery(query);
Any idea?
Best regards.
Hi,
Go through the following link
http://help.sap.com/saphelp_nwmobile71/helpdata/en/6d/bf104d163849d1af313c492655e0f7/content.htm
You can go to workbench. i.e sdoe_wb. Select your SCV. Expand your data object tree. Expand flow definition tree. Choose the flow in which you want to add you custom service. Press create or add button in right panel. Give FM or class method. Save it and generate your data object.
Look at the sample custom service SDOE_SAMPLE_CUSTOMSERVICE (Class) shipped by SAP .
Regards,
Dhana
Edited by: Dhanasekhar Karuppanan on May 19, 2009 4:58 AM
Edited by: Dhanasekhar Karuppanan on May 19, 2009 7:12 AM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
What is the service that runs on the data load from the back-end SDOE?
I want is that only the initial download to the mobile device specific data. This selection will depend on the data I have in a table. In the DOE are all records, but at the time of initial load on a device I have to make a selection according to the user device and a data table.
(Select * from table where user = user device).
In this way the DOE all data would be loaded on each device and be charged only the data selected by user.
Best regards.
Maria Elena
User | Count |
---|---|
86 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.