Call to RFC via proxy...
I have a scenario where a Proxy is calling an RFC. My question is will the control return back to XI after the call or does it return after the complete processing of the RFC? Could someone please clarify?
hi siru,
if ur scenario is synch then xi wud call the rfc , the rfc will be executed and only after the execution is complete , xi will receive the result and send to the other system. thus the scenario "waits" for the rfc to execute. further processing in sender application is blocked.
while in asynch the scenario is complete as soon as xi calls the rfc. the applications here are loosely coupled.
if u r using BPM, many simultaneous branches can wrk and send/receive messages acc to the process design.
[reward if helpful]
regards,
latika.
Similar Messages
-
Where should i call the rfc function module? in xi or in r/3
where should i call the rfc function module?
for the synch scenario: file < -- > xi <---> rfc
i know the type of rfc is tcp/ip; but i'm not sure with the followings,
and with some trials i can not even see any message via rwb even all the setting
can be activated without errors.
where should i create the rfc destination? in r/3 or xi
where should i call the rfc via abap program? in r/3 or xi
i guess the calling program should belong to the different server with the rfc itself....
so confused....
Thanks for your reply!!
Junif i create the destination in xi point to r/3, then i call the rfc use the destination in r/3 right ?
The call doesnt use the destination in R3. XI has the RFC destination which is just used to connect to the R3 system
but where i need to create the fm via se37? in xi or r/3 ?
In R3
Regards,
Prateek -
PI ( old version called XI ) connectivity with ABAP via Proxy
Hi
Could any body please share with me the sample code for
connectivity of PI ( old version called XI ) and ABAP via Proxy for Outbound interface.
points will be rewarded for sure
Thanks & Regards
MeetaThe prerequisites to configure ABAP Proxy include: (landscape dependent)
The business systems should be based on SAP Web AS 6.20 and SAP Web AS 6.20 kernel patch level above 1253
You have installed the XI Add-On in each of these business systems as described in the Installation Guide SAP Exchange Infrastructure 3.0
The business systems and your central Integration Server are maintained in the System Landscape Directory (SLD).
Configuration required on the Business System:
1. Create a HTTP connection in the business system using transaction SM59
Technical Setting:
· Connection Type: H
· Target Host: System name
· Service Number: HTTP Port name
· Path Prefix: /sap/XI/engine/?type=entry
Logon Security
On the Logon/Security tab page, enter the following logon data:
· User: XIAPPLUSER (for example); this user should represent the sending business system (see also the SAP XI Security Guide under Service Users for Message Exchange).
· Password: the password you have specified for this user
· Client: SAP XI Integration server
· Language: Language required
2. Configuration Business system as local Integration Engine.
1. Go to Transaction SXMB_ADM
2. Choose Edit --> Change Global Configuration Data.
3. Select Role of Business System: Application system
4. Corresponding Integration server: dest:// XI_XIR_CONNECTION created in step 1. Dest://XI_XIR_CONNECTION.
5. Under Specific Configuration Data you can specify additional configuration data
Select the relevant category under Specific Configuration Data.
Choose Change Specific Configuration Data.
For ABAP Proxies, Add the following configuration:
1.Category RUNTIME
2.Parameters: IS_URL
3.Current Value: dest://XI_XIR_CONNECTION -
Calling an RFC from an EJB over an Enterprise Connector
Hi all,
I would like to call an RFC enabled Function Modul (FuBa) from a BW-System over an EJB in a Web AS environment bei passing SAP Logon Ticket.
To achive this goal, i've generated proxy classes (Enterprise Connector) via NWDS .
If i call enterprise connector localy from an example class (See attachment), it works.
BUT
if I use the same Code within an EJB, bei correct deployment , it doesn't work. I become an exception, during to establish a connection
What is wrong here ?
What do i have to do in an a EJB-Environment to use an Enterprise Connector ?
Best Regards
A. Büyükyilmaz
ATTACHMENT
Created on 13.02.2007
To change the template for this generated file go to
Window>Preferences>Java>Code Generation>Code and Comments
package de.xxx.test.ep.main;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import com.sap.aii.proxy.framework.core.ApplicationFaultException;
import com.sap.aii.proxy.framework.core.SystemFaultException;
import com.sap.mw.jco.JCO;
import de.xxx.yyy.zzz.connectivity.fuba.Anlage_PortType;
import de.xxx.yyy.zzz.connectivity.fuba.Zge_Gerel_Data_For_Kne_Kn_Input;
import de.xxx.yyy.zzz.connectivity.fuba.Zge_Gerel_Data_For_Kne_Kn_Output;
@author pg4011
To change the template for this generated type comment go to
Window>Preferences>Java>Code Generation>Code and Comments
public class GetAnlage {
private JCO.Client mConnection = null;
public boolean connectToSAP(
String client,
String user,
String passwd,
String lang,
String appServer,
String sysNo) {
try {
mConnection =
JCO.createClient(client, user, passwd, lang, appServer, sysNo);
mConnection.connect();
} catch (Exception e) {
e.printStackTrace();
return false;
return true;
public static void main(String[] args) {
GetAnlage anlage = new GetAnlage();
if (anlage.connectToSAP ("50", "abc", "pwd", "DE", "system", "00")) {
System.out.println("Anlage wird erstellt");
anlage.getData();
System.out.println("");
System.exit(0);
private void getData() {
// ImportParameter
Zge_Gerel_Data_For_Kne_Kn_Input input = new Zge_Gerel_Data_For_Kne_Kn_Input();
// Hole proxy Instance mit JCO.Client instance
Anlage_PortType proxy = new Anlage_PortType();
proxy.messageSpecifier.setJcoClient(mConnection);
Zge_Gerel_Data_For_Kne_Kn_Output output = new Zge_Gerel_Data_For_Kne_Kn_Output();
input.setI_Bp_Nr("7901514764");
input.setI_View("03");
input.setI_Spras("DE");
Date stichtag = new Date(2006, 9, 22);
input.setI_Stichtag(stichtag);
//Rufe RFC auf
try {
output = proxy.zge_Gerel_Data_For_Kne_Kn(input);
String s = "";
System.out.println(s);
} catch (SystemFaultException e) {
e.printStackTrace();
} catch (ApplicationFaultException e) {
e.printStackTrace();Hi Rajesh,
it's realy funny. Although, i inserted som trace outputs behind of catch-statement, i do not see any information about exception in application log.
but i see, that the method becomes correct inputparameters and i see it try to make a connection. After that, it end without a trace.
Best Regards
Ahmet -
Unable to call the RFC from the WD java Program
Hi All,
I have a table and three buttons Create, Edit, Save in the layout.
If no record available in the R3 the the end user will click on create and then he will click on save so that the insert RFC will be called accordingly and the record will be inserted.My table is limited to 5 records only. If i enter all the 5 records and Click on submit the record is inserting in the backend , but if i enter less than 5 records im unable to call the RFC what might be the issue.
My insert RFC takes one Table node and 4 import parameters i'm passing all of the all the mentioned import parameters.
Code:-
View Controller code
// This file has been generated partially by the Web Dynpro Code Generator.
// MODIFY CODE ONLY IN SECTIONS ENCLOSED BY @@begin AND @@end.
// ALL OTHER CHANGES WILL BE LOST IF THE FILE IS REGENERATED.
package com.gmr.ess;
// IMPORTANT NOTE:
// ALL IMPORT STATEMENTS MUST BE PLACED IN THE FOLLOWING SECTION ENCLOSED
// BY @@begin imports AND @@end. FURTHERMORE, THIS SECTION MUST ALWAYS CONTAIN
// AT LEAST ONE IMPORT STATEMENT (E.G. THAT FOR IPrivateAPPView).
// OTHERWISE, USING THE ECLIPSE FUNCTION "Organize Imports" FOLLOWED BY
// A WEB DYNPRO CODE GENERATION (E.G. PROJECT BUILD) WILL RESULT IN THE LOSS
// OF IMPORT STATEMENTS.
//@@begin imports
import java.math.BigDecimal;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import com.gmr.ess.wdp.IPrivateAPPView;
import com.gmr.pck.Zst_Hr_Nominee;
import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;
import com.sap.tc.webdynpro.services.sal.um.api.IWDClientUser;
import com.sap.tc.webdynpro.services.sal.um.api.WDClientUser;
//@@end
//@@begin documentation
//@@end
public class APPView
Logging location.
private static final com.sap.tc.logging.Location logger =
com.sap.tc.logging.Location.getLocation(APPView.class);
static
//@@begin id
String id = "$Id$";
//@@end
com.sap.tc.logging.Location.getLocation("ID.com.sap.tc.webdynpro").infoT(id);
Private access to the generated Web Dynpro counterpart
for this controller class. </p>
Use <code>wdThis</code> to gain typed access to the context,
to trigger navigation via outbound plugs, to get and enable/disable
actions, fire declared events, and access used controllers and/or
component usages.
@see com.gmr.ess.wdp.IPrivateAPPView for more details
private final IPrivateAPPView wdThis;
Root node of this controller's context. </p>
Provides typed access not only to the elements of the root node
but also to all nodes in the context (methods node<i>XYZ</i>())
and their currently selected element (methods current<i>XYZ</i>Element()).
It also facilitates the creation of new elements for all nodes
(methods create<i>XYZ</i>Element()). </p>
@see com.gmr.ess.wdp.IPrivateAPPView.IContextNode for more details.
private final IPrivateAPPView.IContextNode wdContext;
A shortcut for <code>wdThis.wdGetAPI()</code>. </p>
Represents the generic API of the generic Web Dynpro counterpart
for this controller. </p>
private final com.sap.tc.webdynpro.progmodel.api.IWDViewController wdControllerAPI;
A shortcut for <code>wdThis.wdGetAPI().getComponent()</code>. </p>
Represents the generic API of the Web Dynpro component this controller
belongs to. Can be used to access the message manager, the window manager,
to add/remove event handlers and so on. </p>
private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdComponentAPI;
public APPView(IPrivateAPPView wdThis)
this.wdThis = wdThis;
this.wdContext = wdThis.wdGetContext();
this.wdControllerAPI = wdThis.wdGetAPI();
this.wdComponentAPI = wdThis.wdGetAPI().getComponent();
//@@begin javadoc:wdDoInit()
/** Hook method called to initialize controller. */
//@@end
public void wdDoInit()
//@@begin wdDoInit()
try{
IWDMessageManager manager1 = wdComponentAPI.getMessageManager();
IWDClientUser user = WDClientUser.getLoggedInClientUser();
String logUser= user.getSAPUser().getUniqueName();
wdContext.currentContextElement().setUserid(logUser);
wdThis.wdGetAPPController().executeBapi_Employee_Getdata_Input();//Returns the user id for the employee
Collection nomineeList = new ArrayList();
wdThis.wdGetAPPController(). executeZ_Hrfm_Nominee_Disp_Input( );
int nomineeTableSize = wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().size();
for(int i=0;i< nomineeTableSize;i++){
IPrivateAPPView.IDisplay_table_nodeElement ele = wdContext.nodeDisplay_table_node().createDisplay_table_nodeElement();
ele.setAddr(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getAddr());
ele.setDob(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getDob());
ele.setGuard(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getGuard());
ele.setName(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getName());
ele.setPerc(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getPerc());
ele.setRelat(wdContext.nodeZ_Hrfm_Nominee_Disp_Input().nodeOutput_Nominee().nodeNominee().getNomineeElementAt(i).getRelat());
nomineeList.add(ele);
wdContext.nodeDisplay_table_node().bind(nomineeList);
wdContext.currentContextElement().setEdit_val_attr(true);
if(nomineeTableSize<=0){
wdContext.currentContextElement().setCreateButtonEnable(true);
wdContext.currentContextElement().setEditButtonEnable(false);
else{
wdContext.currentContextElement().setCreateButtonEnable(false);
wdContext.currentContextElement().setEditButtonEnable(true);
catch(Exception e){
wdComponentAPI.getMessageManager().reportException("",true);
//@@end
//@@begin javadoc:wdDoExit()
/** Hook method called to clean up controller. */
//@@end
public void wdDoExit()
//@@begin wdDoExit()
//@@end
//@@begin javadoc:wdDoModifyView
Hook method called to modify a view just before rendering.
This method conceptually belongs to the view itself, not to the
controller (cf. MVC pattern).
It is made static to discourage a way of programming that
routinely stores references to UI elements in instance fields
for access by the view controller's event handlers, and so on.
The Web Dynpro programming model recommends that UI elements can
only be accessed by code executed within the call to this hook method.
@param wdThis Generated private interface of the view's controller, as
provided by Web Dynpro. Provides access to the view controller's
outgoing controller usages, etc.
@param wdContext Generated interface of the view's context, as provided
by Web Dynpro. Provides access to the view's data.
@param view The view's generic API, as provided by Web Dynpro.
Provides access to UI elements.
@param firstTime Indicates whether the hook is called for the first time
during the lifetime of the view.
//@@end
public static void wdDoModifyView(IPrivateAPPView wdThis, IPrivateAPPView.IContextNode wdContext, com.sap.tc.webdynpro.progmodel.api.IWDView view, boolean firstTime)
//@@begin wdDoModifyView
//@@end
//@@begin javadoc:onActionGetData(ServerEvent)
/** Declared validating event handler. */
//@@end
public void onActionGetData(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
//@@begin onActionGetData(ServerEvent)
//$$begin ActionButton(-535519310)
//wdThis.wdGetAPPController().executeZ_Hrfm_Nominee_Disp_Input();
//$$end
//@@end
//@@begin javadoc:onActionEdit(ServerEvent)
/** Declared validating event handler. */
//@@end
public void onActionEdit(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
//@@begin onActionEdit(ServerEvent)
//$$begin ActionButton(-535519310)
displayTablesize=wdContext.nodeDisplay_table_node().size();
if(displayTablesize<5){
for(int i=0;i<size-displayTablesize;i++){
IPrivateAPPView.IDisplay_table_nodeElement ele = wdContext.nodeDisplay_table_node().createDisplay_table_nodeElement();
wdContext. nodeDisplay_table_node().addElement(ele);
operation="MOD";
wdContext.currentContextElement().setTableReadOnly(true);
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setOperation(operation);
//$$end
//@@end
//@@begin javadoc:onActionCreate(ServerEvent)
/** Declared validating event handler. */
//@@end
public void onActionCreate(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
//@@begin onActionCreate(ServerEvent)
int month=0,year=0,day=0;
String month1,day1,year1;
try{
displayTablesize=wdContext.nodeDisplay_table_node().size();
wdContext.currentContextElement().setEdit_val_attr(false);
if(wdContext.nodeDisplay_table_node().isEmpty()){
if(displayTablesize<5){
Calendar cal=Calendar.getInstance();
month=cal.get(Calendar.MONTH)+1;
if(month==1||month==2||month==3||month==4||month==5||month==6||month==7||month==8||month==9){
month1="0"+month;
else{
month1=""+month;
day = cal.get(Calendar.DAY_OF_MONTH);
if(day==1||day==2||day==3||day==4||day==5||day==6||day==7||day==8||day==9){
day1= "0"+day;
else{
day1=""+day;
year = cal.get(Calendar.YEAR);
year1=""+year;
String strFormat=day1"."month1"."year1;
wdContext.currentOutput_NomineeElement().setBegda(strFormat);
wdContext.currentOutput_NomineeElement().setEndda("31.12.9999");
for(int i=0;i<size-displayTablesize;i++){
IPrivateAPPView.IDisplay_table_nodeElement ele = wdContext.nodeDisplay_table_node().createDisplay_table_nodeElement();
wdContext. nodeDisplay_table_node().addElement(ele);
operation="INS";
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setOperation(operation);
wdContext.currentContextElement().setTableReadOnly(true);
catch(NullPointerException npe){
wdComponentAPI.getMessageManager().reportException("No Data Available",true);
//@@end
//@@begin javadoc:onActionSaveData(ServerEvent)
/** Declared validating event handler. */
//@@end
public void onActionSaveData(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
//@@begin onActionSaveData(ServerEvent)
float percentage=0;
float dupePercentage=0;
boolean isTest = false;
Collection DispTList = new ArrayList();
IWDMessageManager manager1 = wdComponentAPI.getMessageManager();
try{
displayTablesize = wdContext.nodeDisplay_table_node().size();
//for(int i=1;i<=displayTablesize;i++){
for(int i=0;i<displayTablesize;i++){
BigDecimal share = wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getPerc();
String name = wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getName();
percentage = share.floatValue();
dupePercentage = dupePercentage + percentage;
if(name!=null && share!=null){
Zst_Hr_Nominee nominee = new Zst_Hr_Nominee();
nominee.setAddr(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getAddr());
manager1.reportSuccess(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getAddr());
nominee.setDob(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getDob());
manager1.reportSuccess(""+wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getDob());
nominee.setGuard(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getGuard());
manager1.reportSuccess(""+wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getGuard());
nominee.setName(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getName());
manager1.reportSuccess(""+wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getName());
nominee.setPerc(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getPerc());
manager1.reportSuccess(""+wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getPerc());
nominee.setRelat(wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getRelat());
manager1.reportSuccess(""+wdContext.nodeDisplay_table_node().getDisplay_table_nodeElementAt(i).getRelat());
DispTList.add(nominee);
wdContext.nodeZ_Hrfm_Nominee_Ins_Mod_Input().nodeNominee_ins().bind(DispTList);
if((dupePercentage)!=100)
wdComponentAPI.getMessageManager().reportException(
"The sum of the share Percentages is not 100. Modify the percentages accordingly",true);
wdContext.nodeZ_Hrfm_Nominee_Ins_Mod_Input().nodeNominee_ins().bind(DispTList);
IWDMessageManager manager = wdComponentAPI.getMessageManager();
String beginDate = wdContext.currentOutput_NomineeElement().getBegda();
manager.reportSuccess(wdContext.currentOutput_NomineeElement().getBegda());
String endDate=wdContext.currentOutput_NomineeElement().getEndda();
manager.reportSuccess(wdContext.currentOutput_NomineeElement().getEndda());
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setBegda(beginDate);
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setEndda(endDate);
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setOperation(operation);
wdComponentAPI.getMessageManager().reportSuccess(operation);
wdThis.wdGetAPPController().executeBapi_Employee_Getdata_Input();
wdThis.wdGetAPPController().executeZ_Hrfm_Nominee_Ins_Mod_Input();
//wdContext.currentContextElement().setTableReadOnly(false);
catch(Exception e){
e.getMessage();
//@@end
The following code section can be used for any Java code that is
not to be visible to other controllers/views or that contains constructs
currently not supported directly by Web Dynpro (such as inner classes or
member variables etc.). </p>
Note: The content of this section is in no way managed/controlled
by the Web Dynpro Designtime or the Web Dynpro Runtime.
//@@begin others
int nomineeTableSize = 0;
int displayTablesize = 0;
String operation= null;
int size=5;
// float dupePercentage=0;
//String mod_op="MOD";
//@@end
content of obsolete user coding area(s) -
//@@begin obsolete:javadoc:onActionSave(ServerEvent)
// /** Declared validating even
Component controller code
// This file has been generated partially by the Web Dynpro Code Generator.
// MODIFY CODE ONLY IN SECTIONS ENCLOSED BY @@begin AND @@end.
// ALL OTHER CHANGES WILL BE LOST IF THE FILE IS REGENERATED.
package com.gmr.ess;
// IMPORTANT NOTE:
// ALL IMPORT STATEMENTS MUST BE PLACED IN THE FOLLOWING SECTION ENCLOSED
// BY @@begin imports AND @@end. FURTHERMORE, THIS SECTION MUST ALWAYS CONTAIN
// AT LEAST ONE IMPORT STATEMENT (E.G. THAT FOR IPrivateAPP).
// OTHERWISE, USING THE ECLIPSE FUNCTION "Organize Imports" FOLLOWED BY
// A WEB DYNPRO CODE GENERATION (E.G. PROJECT BUILD) WILL RESULT IN THE LOSS
// OF IMPORT STATEMENTS.
//@@begin imports
import java.util.Iterator;
import com.gmr.ess.wdp.IPrivateAPP;
import com.gmr.pck.Bapi_Employee_Getdata_Input;
import com.gmr.pck.Bapip0002B;
import com.gmr.pck.Z_Hrfm_Nominee_Disp_Input;
import com.gmr.pck.Z_Hrfm_Nominee_Ins_Mod_Input;
import com.gmr.pck.Zst_Hr_Nominee;
import com.sap.lcr.api.util.SetProfileConnect;
import com.sap.tc.webdynpro.modelimpl.dynamicrfc.WDDynamicRFCExecuteException;
import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;
//@@end
//@@begin documentation
//@@end
public class APP
Logging location.
private static final com.sap.tc.logging.Location logger =
com.sap.tc.logging.Location.getLocation(APP.class);
static
//@@begin id
String id = "$Id$";
//@@end
com.sap.tc.logging.Location.getLocation("ID.com.sap.tc.webdynpro").infoT(id);
Private access to the generated Web Dynpro counterpart
for this controller class. </p>
Use <code>wdThis</code> to gain typed access to the context,
to trigger navigation via outbound plugs, to get and enable/disable
actions, fire declared events, and access used controllers and/or
component usages.
@see com.gmr.ess.wdp.IPrivateAPP for more details
private final IPrivateAPP wdThis;
Root node of this controller's context. </p>
Provides typed access not only to the elements of the root node
but also to all nodes in the context (methods node<i>XYZ</i>())
and their currently selected element (methods current<i>XYZ</i>Element()).
It also facilitates the creation of new elements for all nodes
(methods create<i>XYZ</i>Element()). </p>
@see com.gmr.ess.wdp.IPrivateAPP.IContextNode for more details.
private final IPrivateAPP.IContextNode wdContext;
A shortcut for <code>wdThis.wdGetAPI()</code>. </p>
Represents the generic API of the generic Web Dynpro counterpart
for this controller. </p>
private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdControllerAPI;
A shortcut for <code>wdThis.wdGetAPI().getComponent()</code>. </p>
Represents the generic API of the Web Dynpro component this controller
belongs to. Can be used to access the message manager, the window manager,
to add/remove event handlers and so on. </p>
private final com.sap.tc.webdynpro.progmodel.api.IWDComponent wdComponentAPI;
public APP(IPrivateAPP wdThis)
this.wdThis = wdThis;
this.wdContext = wdThis.wdGetContext();
this.wdControllerAPI = wdThis.wdGetAPI();
this.wdComponentAPI = wdThis.wdGetAPI().getComponent();
//@@begin javadoc:wdDoInit()
/** Hook method called to initialize controller. */
//@@end
public void wdDoInit()
//@@begin wdDoInit()
//$$begin Service Controller(1490375209)
// wdContext.nodeZ_Hrfm_Nominee_Ins_Mod_Input().bind(new Z_Hrfm_Nominee_Ins_Mod_Input());
Z_Hrfm_Nominee_Ins_Mod_Input input = new Z_Hrfm_Nominee_Ins_Mod_Input();
input.addNominee(new Zst_Hr_Nominee());
wdContext.nodeZ_Hrfm_Nominee_Ins_Mod_Input().bind(input);
//$$end
//$$begin Service Controller(-932523997)
wdContext.nodeZ_Hrfm_Nominee_Disp_Input().bind(new Z_Hrfm_Nominee_Disp_Input());
//$$end
//$$begin Service Controller(-368783613)
wdContext.nodeBapi_Employee_Getdata_Input().bind(new Bapi_Employee_Getdata_Input());
//$$end
//@@end
//@@begin javadoc:wdDoExit()
/** Hook method called to clean up controller. */
//@@end
public void wdDoExit()
//@@begin wdDoExit()
//@@end
//@@begin javadoc:wdDoPostProcessing()
Hook called to handle data retrieval errors before rendering.
After doModifyView(), the Web Dynpro Framework gets all context data needed
for rendering by validating the contexts (which in turn calls the supply
functions and supplying relation roles). In this hook, the application
should handle the errors which occurred during validation of the contexts.
Using preorder depth-first traversal, this hook is called for all component
controllers starting with the current root component.
Permitted operations:
- Flushing model queue
- Creating messages
- Reading context and model data
Forbidden operations:
- Invalidating model data
- Manipulating the context
- Firing outbound plugs
- Creating components
@param isCurrentRoot true if this is the root of the current request
//@@end
public void wdDoPostProcessing(boolean isCurrentRoot)
//@@begin wdDoPostProcessing()
//@@end
//@@begin javadoc:wdDoBeforeNavigation()
Hook before the navigation phase starts.
This hook allows you to flush the model queue and handle any
errors that occur. Firing outbound plugs is allowed in this hook.
Using preorder depth-first traversal, this hook is called for all component
controllers starting with the current root component.
@param isCurrentRoot true if this is the root of the current request
//@@end
public void wdDoBeforeNavigation(boolean isCurrentRoot)
//@@begin wdDoBeforeNavigation()
//@@end
//@@begin javadoc:wdDoApplicationStateChange()
Hook that informs the application about a state change.
<p>
This hook is called e.g. to tell the application that will be
<ul>
<li>left via a suspend plug and therefore should go into a suspend/sleep
mode with minimal need of resources. errors that occur. Firing
outbound plugs is allowed in this hook.
<li>left due to a timeout and could write it's state to a data base if the
user comes back later on
</ul>
The concrete reason is available via IWDApplicationStateChangeInfo
<p>
<b>Important</b>: This hook is called for the top level component only!
@param stateChangeInfo contains the information about the nature of the state change
@param stateChangeReturn allows the application to ask for a different state change.
The framework is allowed to ignore it considering i.e. the current resources situation.
//@@end
public void wdDoApplicationStateChange(com.sap.tc.webdynpro.progmodel.api.IWDApplicationStateChangeInfo stateChangeInfo, com.sap.tc.webdynpro.progmodel.api.IWDApplicationStateChangeReturn stateChangeReturn)
//@@begin wdDoApplicationStateChange()
//@@end
//@@begin javadoc:executeBapi_Employee_Getdata_Input()
/** Declared method. */
//@@end
public void executeBapi_Employee_Getdata_Input( )
//@@begin executeBapi_Employee_Getdata_Input()
//$$begin Service Controller(1705750894)
IWDMessageManager manager = wdComponentAPI.getMessageManager();
Iterator itrGetData = null;
Bapip0002B out = null;
try
wdContext.currentBapi_Employee_Getdata_InputElement().modelObject().execute();
wdContext.nodeOutput().invalidate();
itrGetData = wdContext.currentOutputElement().modelObject().getPersonal_Data().iterator();
while (itrGetData.hasNext()) {
out = (Bapip0002B) itrGetData.next();
empNo = out.getPerno();
wdContext.currentZ_Hrfm_Nominee_Disp_InputElement().setPernr(empNo);
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().setPernr(empNo);
// manager.reportSuccess(empNo);
//wdThis.executeZ_Hrfm_Nominee_Disp_Input();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
//$$end
//@@end
//@@begin javadoc:executeZ_Hrfm_Nominee_Disp_Input()
/** Declared method. */
//@@end
public void executeZ_Hrfm_Nominee_Disp_Input( )
//@@begin executeZ_Hrfm_Nominee_Disp_Input()
//$$begin Service Controller(-366407911)
IWDMessageManager manager = wdComponentAPI.getMessageManager();
try
wdContext.currentZ_Hrfm_Nominee_Disp_InputElement().modelObject().execute();
wdContext.nodeOutput_Nominee().invalidate();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
//$$end
//@@end
//@@begin javadoc:executeZ_Hrfm_Nominee_Ins_Mod_Input()
/** Declared method. */
//@@end
public void executeZ_Hrfm_Nominee_Ins_Mod_Input( )
//@@begin executeZ_Hrfm_Nominee_Ins_Mod_Input()
//$$begin Service Controller(1524028406)
IWDMessageManager manager = wdComponentAPI.getMessageManager();
try
wdContext.currentZ_Hrfm_Nominee_Ins_Mod_InputElement().modelObject().execute();
wdContext.nodeOutput_nominee_ins_mod().invalidate();
catch(WDDynamicRFCExecuteException e)
manager.reportException(e.getMessage(), false);
//$$end
//@@end
The following code section can be used for any Java code that is
not to be visible to other controllers/views or that contains constructs
currently not supported directly by Web Dynpro (such as inner classes or
member variables etc.). </p>
Note: The content of this section is in no way managed/controlled
by the Web Dynpro Designtime or the Web Dynpro Runtime.
//@@begin others
String empNo = null;
//@@end
Suman
Edited by: sumankumar kurimilla on Dec 23, 2008 9:26 AMHi,
I have checked from RFC side that is working fine only java app its not working can you tell any thing needs to be changed from my application end.
Please check in Savedata action.
Regards,
Suman
Edited by: sumankumar kurimilla on Dec 23, 2008 11:01 AM -
Calling Synchronous RFC Function Module in Background
Hi all,
Currently we are working on some requirement where in we have to retrieve data from one system(CRM) and update the same into another system(ECC). We have developed a RFC Function in CRM system and it is being called from ECC system as in synchronous mode via a batch program.
Now since all sychronous call to a RFC function will be dialog there is a constraint on the runtime which is being set by maximum run time for each dialog work process. So my question is there an option to call an RFC function synchronously in background (background task) so there is no runtime performance.
The standard TRFC, QRFC calls in background runs asynchronously and so I am trying to check with the SDN world as whether has anyone tried SRFC(Synchronous) call in background?
Thanks in advance,
JagathSo my question is there an option to call an RFC function synchronously in background (background task) so there is no runtime performance.
One solution would be to increase the value of the "time out" parameter defined the CRM system. This i feel is not a fool-proof solution as the run-times cannot be predicted. Check this thread: Re: RFC timeout profile parameter
For me a better solution would be to implement tRFC call instead of a synchronous call. Any reasons why you don't want to implement a tRFC ?
BR,
Suhas
Edited by: Suhas Saha on Jun 26, 2010 8:52 AM -
Call external RFC in a workflow
Hi!
I'm going through the tutorials at
http://help.sap.com/saphelp_46c/helpdata/en/fb/1359c4457311d189440000e829fbbd/frameset.htm.
I had a question - as one of the steps in the workflow, is it possible to call an RFC on an external system (a destination defined via SM 59), get the response back, and use that response in the next step in the workflow, which again calls another RFC on an external system?
Thanks,
MustansirYes, you can achieve that by using the corresponding methods of the activity defined.
Regards, IA -
Which is better for bulk message scenario in sap xi RFC or Proxy
which is better for bulk message scenario in ( RFC or Proxy ) ?
Edited by: prabhatxi on Aug 6, 2010 4:44 PMProxy will alwaays be better option in this case, as it is adapter less framework, and communication happens directly with XI central integration engine. So it is always fast communication and gives good performance.
But still you should consider other factors, you may consider using RFC as well, as sometime we go for RFC/IDOC as this are the standard interfaces already available rather than creating structure...
May be you can share more info on what type/volume data are you planning to send via XI?
Hope this cleart your doubt..
Divyesh -
Hi Experts,
I have a scenario where purchase order and goods receipt info is coming from an external application to XI.
Too update ECC with the same..do i use a bapi/rfc or proxy?
I mean call bapi in the proxy or import bapi directly?..what is the best procedure?
Is it possible to use purchase order IDOC?...
Do we have any BAPI for creating internal order?Hi Teja,
Find below some of the threads related to that.
[When and Where and how to use Proxies]
[When to use RFC ,Idoc and proxies]
[Re: Proxies Vs. Adapters: When to use Proxy?]
[Use of Proxies(both java and abap)]
Regards,
Venu V
Edited by: Venu V on Jul 27, 2009 2:24 PM -
Hi Everybody,
Could yo pls guide me on how to implement asynchronous RFC. When i run my RFC using Report :
CALL FUNCTION 'Z_HR_NO_ALTINN_TX' DESTINATION 'Q3A2X7A'starting new task 'test'
exporting
PASSWORD = 's'.
I get the error saying :
<b>What happened?</b>
When executing the asynchronous RFC, the RFC destination "Q3A2X7A" had
neither an internal (connection type 'I') nor an R/3 communication
type (connection type '3'.
Error in ABAP application program.
The current ABAP program "Z_ALTINN_TEST" had to be terminated because one of
the
statements could not be executed.
This is probably due to an error in the ABAP program.
<b>Error analysis</b>
A typical cause of error is the
execution of external programs (RFC destinations of the type
TCP/IP) via asynchronous Remote Function Call (RFCs with the
addition 'STARTING NEW TASK taskname').
RFC destination... "Q3A2X7A"
I would like to know if async RFC call is possible to XI.
Regards,
RajHi,
you need to call the RFC from ERP, R3
with
call function XXXXX
<b>in background</b>
and Commit work.
Regards,
michal -
How to call the RFC's from the third party applications or Non SAP applicat
Hi,
For calling RFC's from the wedynpro , SAP has provided the modeling concept.
In the same way, if i want to access or call the RFC 's from the third applications or Non SAP applications what is the procedure and what is the methodoligy.
As per my knowledge, we need to expose those RFC's as webservices . Then we must be able to acces in hetrogeous environment from any third party applications..
Please revert back soon, It is very urgent.
Regards
VijayAyyappa Raj,
Thanks for the reply.
Please let me the detailed information for implementing.
AS you said . I need expose the RFC's as webservice. This point is clear to me.
2) Use tthe JCo to connect and create client proxy.
Can u please elabrate the above point?
If u have any steps created in the document or url to refer. Please forward it to me.
Please forwar the document to this id "vijay00" in yahoo.
AS the sdn is not allowing to give the maill id i have given only the id details in yahoo.
I am new to this procedure.
Regards
Vijay -
How to call the RFC from XI system
Dear Friends,
My requirement is RFC to RFC scenario i.e SAP to XI to Third party system.
I have the BAPI_EUQI_CREATE rfc, this RFC is available in ECCsystem, that RFC I imported in XI system, so third party system how to call this RFC.
please give me the suggestion it is very helpful.
Regards,
Shalini ShahHi Shalini,
You have create a RFC in the 3rd party system and import that RFC in XI System using 3rd party adapter.Do the necessary mapping and configure the sender RFC Adapter and at receiver side configure 3rd paty Adapter.
The 3rd party adapters must be installed via Deploy Tool or JSPM. But u should have a sda file with the adpater content.
see here for more details on JSPM
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5006901f-925c-2910-5f98-9ae26cc07eca
For more info:
If you still want to do it,
1. Import the RFCs of sender and of receiver.
2. Do the necessary mapping.
3. Configure sender and receiver RFC adapters.
Before that check if you have RFC destination for the RFC adapter. If not You should establish it. To establish an RFC destination for the RFC adapter.
1. Call the transaction Display and Maintain RFC Destinations (SM59).
2. Select an existing RFC destination of type ABAP Connections (for example, ABAP_Old) by double-clicking it.
3. Choose Destination ® Copy and copy the RFC destination using a new name (for example, ABAP_New).
4. Save the new RFC destination (ABAP_New) and delete the old RFC destination (ABAP_Old).
5. Create a new RFC destination (for example, RFC_Adapter) of type T (TCP/IP connection) as the RFC destination for the RFC adapter.
6. Select the registration type Registered Server Program and in the Program ID field enter the corresponding program ID from the configuration of the sender RFC adapter.
7. In the Gateway host and Gateway service fields, enter the gateway host and gateway service from the configuration of the sender RFC adapter.
8. If the sender system is a Unicode system, define the RFC destination as Unicode.
9. Using the name of the old ABAP connection (ABAP_Old), create a new RFC destination of type L (logical destination with reference entry).
10. In the Reference Entry field enter the RFC destination (RFC_Adapter) for the RFC adapter.
For more details take a look at this link. http://help.sap.com/saphelp_nw70/helpdata/en/25/76cd3bae738826e10000000a11402f/content.htm
Dont forget to Reward points if this helps
Regards
Pragathi.
Edited by: Pragathi on May 24, 2008 7:21 AM -
Hello ,
We are working on JDBC to RFC scenario in SAP XI,
We have to do
huge functionality like calling Two standard Transaction working on two BDC programs and Creating the Log errors and additional performs in side the RFc.
IS it advisable to do like that..
Or better to use Server proxy.
If we use server proxy what are the advantages and issues in this scenario.difference between RFC and Proxy :
*proxy is always better than RFc in many cases *
Proxy Supports Synchronus and asynchronus Communicatio .
proxy it is used to procees the Mapping and rooting on Integration Enginee bypass th Adapter Enginee so it will improve the performance.
dont need to create Sender Communiv=cation Channel and Agreement in ID .
proxy support more than 5 MB.
proxy is used to control Application, Sysytem Error.
supports Ackonwledgements
supports Attachments
but if u want to use Client Proxy then need to write REport.
Rfc :
RFc Supports Synchronus and asynchronus Communication.
Dont need to write any Repotr.
need to create Communication channels in ID.
RFC Adapter :
http://help.sap.com/saphelp_nw04/helpdata/en/33/c6e63b60c25767e10000000a11402f/frameset.htm
step by step:
http://www.****************/Tutorials/XI/RFC2JDBC/Index.htm
proxy:
http://help.sap.com/saphelp_nw04/helpdata/en/86/58cd3b11571962e10000000a11402f/frameset.htm
what is Server proxy and client proxy
Client Proxy - https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1387
Server Proxy - https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1457
Step-by-Step Guide on Proxy Runtime Configuration and Proxy to JDBC Scenario Using Canonical Objects and PIS in PI 7.1
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0ac1a33-debf-2c10-45bf-fb19f6e15649?QuickLink=index&overridelayout=true
http://www.****************/Tutorials/XI/ABAPClientProxy/page1.htm
refer below thread for more info:
http://scn.sap.com/thread/2144939 -
RFC - Java Proxy (Synchronous) invoking method
Hi,
I have problems to call my inbound java proxy.
My scenario consist of send RFC -> Java Proxy (Synchronous)
Proxy this registered
http://hcp095.intra.csc.es:50100/ProxyServer/register?ns=http://csc.es/xi/rca&interface=Z_RCA_SCS&bean=ZRCASCS_PortTypeBean&method=zRCASCS
ejb-jar.xml:
<ejb-jar>
<description>EJB JAR description</description>
<display-name>EJB JAR</display-name>
<enterprise-beans>
<session>
<ejb-name>ZRCASCS_PortTypeBean</ejb-name>
<home>com.sap.aii.proxy.xiruntime.core.AbstractProxyInboundHome4</home>
<remote>com.sap.aii.proxy.xiruntime.core.AbstractProxyInboundRemote4</remote>
<local-home>com.sap.aii.proxy.xiruntime.core.AbstractProxyInboundLocalHome4</local-home>
<local>com.sap.aii.proxy.xiruntime.core.AbstractProxyInboundLocal4</local>
<ejb-class>es.csc.xi.rca.ZRCASCS_PortTypeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
Class Impl:
package es.csc.xi.rca;
public class ZRCASCS_PortTypeImpl extends AbstractProxy implements ZRCASCS_PortType {
public ZRCASCSResponse_Type zRCASCS(ZRCASCS_Type parameters) throws ZRCASCSException_Message_Exception, SystemFaultException, ApplicationFaultException{
//throw new RuntimeException();
Rca_ws a = new Rca_ws();
return a.zRCASCS(parameters);
Error: XI_Monitor
<SAP:Category>XIAdapterFramework</SAP:Category>
<SAP:Code area="MESSAGE">GENERAL</SAP:Code>
<SAP:P1 />
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Error invoking method zRCASCS of proxy bean $Proxy305: cannot assign instance of com.sap.guid.GUID to field com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl.guid of type com.sap.guid.IGUID in instance of com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl: com.sap.aii.proxy.xiruntime.core.XmlInboundException: Error invoking method zRCASCS of proxy bean $Proxy305: cannot assign instance of com.sap.guid.GUID to field com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl.guid of type com.sap.guid.IGUID in instance of com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl</SAP:AdditionalText>
<SAP:ApplicationFaultMessage namespace="" />
Error: defaultTrace
#hcp095.intra.csc_XID_19271950#ANGUZMAN#ec20b7f019f611de98340011259e6830#
SAPEngine_Application_Thread[impl:3]_36##0#0#Error##Plain##
#com.sap.aii.proxy.xiruntime.core.XmlProxyException: Error invoking method zRCASCS of proxy bean $Proxy366:
cannot assign instance of com.sap.guid.GUID to field com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl.guid
of type com.sap.guid.IGUID in instance of com.sap.aii.proxy.xiruntime.core.MessageSpecifierImpl
at com.sap.aii.proxy.xiruntime.core.XmlProxyJ2EE.call(XmlProxyJ2EE.java:192)
at com.sap.aii.proxy.xiruntime.core.XmlProxy$ProxyBeanCaller.call(XmlProxy.java:225)
at com.sap.aii.proxy.xiruntime.core.XmlProxy.processRequest(XmlProxy.java:194)
at com.sap.aii.proxy.xiruntime.core.XmlInbound.processRequestMessage(XmlInbound.java:126)
at com.sap.aii.proxy.xiruntime.core.XmlInbound.processMessage(XmlInbound.java:83)
at com.sap.aii.proxy.xiruntime.sbeans.JPRBean.onMessage(JPRBean.java:158)
at com.sap.aii.proxy.xiruntime.sbeans.JPRLocalLocalObjectImpl0_0.onMessage(JPRLocalLocalObjectImpl0_0.java:175)
at com.sap.aii.af.ra.ms.impl.ServicesImpl.deliver(ServicesImpl.java:276)
at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1049)
at com.sap.aii.af.ra.ms.impl.core.queue.RequestConsumer.onMessage(RequestConsumer.java:119)
at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:850)
at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(AccessController.java:180)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)
If somebody can help me.
Thank you very muchSolved!!!
to assign library references to the project application-j2eeengine.xml
com.sap.aii.proxy.xiruntime
com.sap.aii.messaging.runtime
com.sap.xi.util.misc
com.sap.guid -
Why We Call Adpative RFC MODEL?
Hi ,
Why We Call Adaptive RFC MODEL?
What is RFM?Hi Subbarao,
The Adaptive Remote Function Call (Adaptive RFC) is a technology that enables the Web Dynpro application developer to use the business functions encapsulated in Business APIs (BAPIs) even after a structure modification, without having to provide the new data using a second back end or a new structure with subsequent regeneration of the proxies.
This new RFC model shows adaptive behavior. This means that the RFC proxies do not use the original design time structure definition at runtime. Instead, this Web Dynpro model automatically adapts the data of the structure passed in the Java proxy generation to the current data that is, a structure definition in the back-end system that may have been modified
For more info go through this link..
[Adaptive RFC|http://help.sap.com/saphelp_nw70/helpdata/en/6a/11f1f29526944e8580c5e59333d96d/frameset.htm]
Importing RFC's
__http://help.sap.com/saphelp_nw70/helpdata/en/6a/11f1f29526944e8580c5e59333d96d/frameset.htm__
RFM - stands for Remote-enabled Function Modules, amd you can learn more about it from
http://help.sap.com/saphelpnw70/helpdata/en/22/0427c0488911d189490000e829fbbd/frameset.htm_
Difference between BAPI and RFM --
BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects.
You create business objects and those are then registered in your BOR (Business Object Repository)
which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA.
In this case u only specify the business object and its method from external system
in BAPI there is no direct system call. while RFC are direct system call.
Hope this helps,
Reward Points if helpful,
Regards,
Shailesh Nagar
Maybe you are looking for
-
My ipod shuffle 1st generation cannot connect to itunes.
It should be working fine as I can charge it normally and the lights are reacting. However, there is no way I can input songs as it does not react on itunes. Please let me know how.Thanks.
-
Transaction is not Rolling Back in Stateless Session Bean
Hi, I am using UserTransaction in Stateless Session bean . Transaction is not rolling back. The following code is writen in stateless session bean. In UserTransaction i am calling Two methods of anoth
-
Implement BI 7.0 Technical Content for BI admin Cockpit
Hi Experts I should begin to activate, fill, and use the BI Technical Content system. My goal is to set up and use the BI Administrative Cockpit. I start by filling the necessary objects and running the queries. I am new to this area.Could any one pr
-
I can't print company name to labels using address book. I've tried and tried. I've tried for hours! It prints contact name and address but not company name. Very frustrated! Anyone have a fix. Thanks very much for your help! Matt
-
Remove prefix when creating menu for user in pfcg
Can I change the way pfcg creates a use menu? It now starts with the rolename and then the logical SAP menu path. When I have different roles with the same path the "collapse menu" option does not work as the two start with a diffent role name. Can I