Calling WD ABAP from WD Java
Hi,
I am trying to access a Web Dynpro for ABAP application(which in turn opens a Adobe form) from a click of button in Web Dynpro for Java application.
I also need to pass dynamic parameters (which will change values at runtime).
If I go for calling WD ABAP from URL I can pass the parameters by appending them in the URL, but how to call a URL on a click of WD Java application.
Can somebody please suggest me ways.
Thank you.
Pragya.
Hi Pragya,
Did you get a solution for this. I need to do almost the same. I need to call the ABAP Webdynpro URL on Tab Click from Java Webdynpro and display the page within the Tab content Area.
Is this possible?
How did you handle your problem. Please advise!!
Thanks for your time!
Regards,
Madhavi
Similar Messages
-
Calling a servlet from a Java Stored Procedure
Hey,
I'm trying to call a servlet from a Java Stored Procedure and I get an error.
When I try to call the JSP-class from a main-method, everything works perfectly.
Java Stored Procedure:
public static void callServlet() {
try {
String servletURL = "http://127.0.0.1:7001/servletname";
URL url = new URL(servletURL);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Pragma", "no-cache");
conn.connect();
ObjectInputStream ois = new ObjectInputStream(conn.getInputStream());
Integer client = (Integer)ois.readObject();
ois.close();
System.out.println(client);
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
Servlet:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Integer id = new Integer(10);
OutputStream os = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(id);
oos.flush();
oos.close();
response.setStatus(0);
Grant:
call dbms_java.grant_permission( 'JAVA_USER', 'SYS:java.net.SocketPermission','localhost', 'resolve');
call dbms_java.grant_permission( 'JAVA_USER','SYS:java.net.SocketPermission', '127.0.0.1:7001', 'connect,resolve');
Package:
CREATE OR REPLACE PACKAGE pck_jsp AS
PROCEDURE callServlet();
END pck_jsp;
CREATE OR REPLACE PACKAGE BODY pck_jsp AS
PROCEDURE callServlet()
AS LANGUAGE JAVA
NAME 'JSP.callServlet()';
END pck_jsp;
Architecture:
AS: BEA WebLogic 8.1.2
DB: Oracle 9i DB 2.0.4
Exception:
java.io.StreamCorruptedException: InputStream does not contain a serialized object
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java)
The Servlet and the class work together perfectly, only when I make the call from
within the database things go wrong.
Can anybody help me.
Thank in advance,
Bart Laeremans
... Desperately seeking knowledge ...Look at HttpCallout.java in the following code sample
http://www.oracle.com/technology/sample_code/tech/java/jsp/samples/jwcache/Readme.html
Kuassi -
How to call IAC Iview from WebDynpro java code
Hi Team,
I am tring to call IAC Iview from WebDynpro Java code. we are passing value but blank page displayed and there is no error show on error log.
Below is Java Code which i am calling.
public void wdDoInit()
try {
String strURL = "portal_content/TestSRM/iView/TestSRM"; //WDProtocolAdapter.getProtocolAdapter().getRequestParameter("application");
String random = WDProtocolAdapter.getProtocolAdapter().getRequestObject().getParameter("random_code");
//wdContext.currentContextElement().setRandomNumber(random);
//below we are call URL
WDPortalNavigation.navigateAbsolute("ROLES://portal_content/TestSRM/iView/TestSRM?VAL="+random,WDPortalNavigationMode.SHOW_INPLACE,(String)null, (String)null,
WDPortalNavigationHistoryMode.NO_DUPLICATIONS,(String)null,(String)null, " ");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
I am passing value from URL.
http://<host Name>:<port>/webdynpro/resources/local/staruser/StarUser?random_code=111111111
when we call above URL we getting blank screen.
Regards
Pankaj KambleHi Vinod,
read this document (from pages 7 ).
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/b5380089-0c01-0010-22ae-bd9fa40ddc62">https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/b5380089-0c01-0010-22ae-bd9fa40ddc62</a>
In addition lok at these links: (Navigation Between Web Dynpro Applications in the Portal)
<a href="http://help.sap.com/saphelp_erp2005/helpdata/en/ae/36d93f130f9115e10000000a155106/frameset.htm">http://help.sap.com/saphelp_erp2005/helpdata/en/ae/36d93f130f9115e10000000a155106/frameset.htm</a>
<a href="http://help.sap.com/saphelp_erp2004/helpdata/en/b5/424f9c88970f48ba918ad68af9a656/frameset.htm">http://help.sap.com/saphelp_erp2004/helpdata/en/b5/424f9c88970f48ba918ad68af9a656/frameset.htm</a>
It may be helpful for you.
Best regards,
Gianluca Barile -
SQL Exception: Invalid column index while calling stored proc from CO.java
Hello all,
I am getting a "SQL Exception: Invalid column index" error while calling stored proc from CO.java
# I am trying to call this proc from controller instead of AM
# PL/SQL Proc has 4 IN params and 1 Out param.
Code I am using is pasted below
==============================================
OAApplicationModule am = (OAApplicationModule)oapagecontext.getApplicationModule(oawebbean);
OADBTransaction txn = (OADBTransaction)am.getOADBTransaction();
OracleCallableStatement cs = null;
cs = (OracleCallableStatement)txn.createCallableStatement("begin MY_PACKAGE.SEND_EMAIL_ON_PASSWORD_CHANGE(:1, :2, :3, :4, :5); end;", 1);
try
cs.registerOutParameter(5, Types.VARCHAR, 0, 2000);
cs.setString(1, "[email protected]");
cs.setString(2, s10);
//Debug
System.out.println(s10);
cs.setString (3, "p_subject " );
cs.setString (4, "clob_html_message - WPTEST" );
outParamValue = cs.getString(1);
cs.executeQuery();
txn.commit();
catch(SQLException ex)
throw new OAException("SQL Exception: "+ex.getMessage());
=========================================
Can you help please.
Thanks,
VinodYou may refer below URL
http://oracleanil.blogspot.com/2009/04/itemqueryvoxml.html
Thanks
AJ -
Calling a URL from a Java Stored Procedure
Hi,
I'm trying to call a URL from a Java Stored Procedure in Oracle 8.1.7(Windows 2000). The ultimate goal is to call this stored procedure from a database trigger. The status of the object remains invalid in the database even after compilation and publishing without any errors. The code follows. Any suggestions/alternatives to accomplish this would be appreciated.
Java Stored Procedure:
CREATE OR REPLACE JAVA SOURCE NAMED "UPDATEATTR" AS
import java.net.*;
import java.util.*;
import java.io.*;
public class UpdateAttr {
public static String testmain() {
ObjectInputStream is;
URL url;
String uri =
"http://www.yahoo.com";
try {
//calling the URL
url = new URL(uri);
URLConnection yahooConnection = yahoo.openConnection();
} catch (Exception e) {
e.printStackTrace(System.err);
return "TEST_SUCCESSFUL";
Code to Publish it:
CREATE OR REPLACE FUNCTION setNewAttributes return VARCHAR2
AS LANGUAGE JAVA NAME
'UpdateAttr.testmain() return String';
Thanks in advance.
RisSmall mistake in the previous post. The object still has a status of "INVALID" though. The Java stored procedure should actually read:
Java Stored Procedure:
CREATE OR REPLACE JAVA SOURCE NAMED "UPDATEATTR" AS
import java.net.*;
import java.util.*;
import java.io.*;
public class UpdateAttr {
public static String testmain() {
ObjectInputStream is;
URL url;
String uri =
"http://www.yahoo.com";
try {
//calling the URL
URL yahoo = new URL(uri);
URLConnection yahooConnection = yahoo.openConnection();
} catch (Exception e) {
e.printStackTrace(System.err);
return "TEST_SUCCESSFUL";
Code to Publish it:
CREATE OR REPLACE FUNCTION setNewAttributes return
VARCHAR2
AS LANGUAGE JAVA NAME
'UpdateAttr.testmain() return String';
/ -
Possibility of calling standard actions from a java program
Hi ,
I am working for a project where customer wants to have option of saving orders as draft only and later convert to order if need be. However since we do not want many drafts to reside on server there is a need to delete these at a specified time. For draft orders I am using order templates since they stay in the database without getting converted to orders. Now I do not know how to go about the deletion part.
i need to write a program that would run on the server and which would fetch the templates (drafts) that have been created till a particular time and call the delete action of the template. Now the question is how do i call these actions from a java program where this java program will have to run on the server end (ie will be a backend process).
Please suggest.
Thanks
Roopalihello roopali,
you can create a separate thread that will run your
code that will check for stale drafts and delete them.
it is just like a session management program but here
we will be looking over the drafts and not the session
objects.
now if you want the invocation of the action from another
program, a socket program would suffice but opening ports
will cause you network connections thru firewall.
if you can make use of HTTP servlet as your service
provider e.g., you can then just pass some action params
to invoke it.
regards
jo -
Problem with special charecter while calling a BAPI from Webdynpro JAVA.
Hi Experts,
I am calling a BAPI from Webdynpro JAVA. I am passing a special charecter u2018 as input to BAPI. But I am getting a # as input in R/3.. Can any one explain why it is getting changed?
Any inputs regarding this issue are appreciated.
Thanks,
Kasinath.Hi,
I had same problem before..For this I have created function module in backend for removing #. It was for converting Stream to ITF text.
CONVERT_STREAM_TO_ITF_TEXT.
Try this.
Thanks,
Prajakta -
Calling OCX Methods from a Java Program
Hi All,
Is it possible to call OCX methods from a Java program? If yes, can you please refer me to any documents or sample code to achieve this.
All inputs are highly appreciated.
Thanks
TarekJNI
http://java.sun.com/docs/books/tutorial/native1.1/index.html -
How to call pdf forms developed in ABAP from WD Java application?
Hi
I have a web dynpro ABAP application that that is responsible for generating PDF forms for all other applications (WD ABAP and WD Java).
How can I call the pdf forms generated by the WD ABAP application from WD Java application in a separate window?
These forms are to be called on click of a "Print" button. Also, these forms are non interactive.
Kindly let me know if you need any other information.
Regards
Vineet Vikram
Edited by: vineet vikram on Jun 24, 2009 7:28 AMin addtion to Nikhil's response. you can write following code on action of print button:
IWDWindow window = wdComponentAPI.
getWindowManager().createExternalWindow(
"<ABAP Application URL>",
"<Title for window>",
false);
window.open();
to Close the application, you can use the window close or u can fire an event to close current window.
Abhinav -
Help calling JNI function from a java thread
I am using the following code to call a JNI fuction from a java thread:
public class CMSMessageHandler extends MessageHandler{
static{
System.loadLibrary("jastb");
public native int cmsReadIt(ByteBuffer buff);
private ByteBuffer dirbuf = null;
/** Creates a new instance of CMSMessageHandler */
public CMSMessageHandler() {
// allocate to max size datagram
dirbuf = ByteBuffer.allocateDirect(65536);
public void readMessages(){
/*Thread worker = new Thread(){
public void run(){*/
int count;
while (true){
try{
count = cmsReadIt(dirbuf);
} catch (Exception e){
e.printStackTrace();
worker.start();*/
public static void main(String[] args) {
CMSMessageHandler handler = new CMSMessageHandler();
handler.readMessages();
When I run this main method with the thread commented out, it works great. When I run the main method with the thread, it works great for a while, and then funny things start happening with the native library I am using. My native library uses shared memory, signals, and semaphores. It feels a bit like my java program is stomping on the resources that my native library is using, when a run the java program with a thread.
Is there something I don't know about calling native code from a thread? Should I be doing something explicitly to protect my native library's shared memory, signals, or semaphores?
Thanks,
Lisa.Does the library do any initialization when loaded? Does it make a dangerous assumption that the thead calling cmdReadIt will always be the same thread that initially loaded it? Try loading the library in the worker thread instead of in the main thread via the static initializer.Yes. There is a call to another native method cmsOpenIt that does CMS initialization. I put cmsOpenIt as well as the System.loadLibrary("jastb") in the worker thread and I'm still experiencing the same problems.
Incidently, the mere presence of another Thread in this program does not seem to cause problems. It's only when I run calls to cmsReadIt in a thread that I get into trouble.
For example, this works fine:
public class CMSMessageHandler extends MessageHandler{
public native int cmsReadIt(ByteBuffer buff);
public ByteBuffer dirbuf = null;
static {
System.loadLibrary("jastb");
public CMSMessageHandler() {
// allocate to max size datagram
dirbuf = ByteBuffer.allocateDirect(65536);
public void readMessages(){
try{
int count = 0;
while (true){
count = cmsReadIt(dirbuf);
} catch (Exception e){
public static void main(String[] args) {
CMSMessageHandler handler = new CMSMessageHandler();
Thread worker = new Thread(){
public void run(){
while (true){
try{
Thread.currentThread().sleep(1000);
System.out.println("sleep thread.");
} catch (Exception e){
e.printStackTrace();
worker.start();
handler.readMessages();
}Are there JVM flags that I should experiment with that might help mitigate/diagnose this problem? -
Calling another application from a java program
Hi, Java ppl.
I wanted to know how can I call another program say a help application or an exe from a java program. anyone with any advice or a piece of code would help.
Thanks
PradeepI had the same situation and I tried the code that you sugested and it works. I was wondering, what am I expecting in the while loop that appears after the int inp; statement? Is some data going to be displayed on the screen? How essential is to have that while loop after the calling the exec() method?
Sorry for the amount of questions, I never tried this before.
Best regards,
Luis E. -
[Best practice] How to call a service from custom Java code
Hi all,
I'm wondering what the best method is to call a standard service from custom Java code?
In a specific situation iDoc script is extended with custom functions with a custom component. There's Java code mapping to these functions that is executing these functions. The iDoc script functions are called from a workflow entry script.
In the Java code that runs when the custom iDoc functions are called, I want to call a standard Content Server service. I don't think that the m_service variable is available, so filling the binder and using m_service.executeService() probably isn't possible.
Also, if it were possible (that is, if I want to call a standard service from my own custom service Java code), what would then be the best method to do so?
Regards, StijnHi Sapan,
Let me explain a bit further.
I'm an UCM consultant trying to solve a problem that occured at a client when they installed the CS10gR35CoreUpdateBundle.
Content items are entered into a Workflow when they are checked in. Part of one of the entry scripts of the a workflow step is that related content to the content item in the workflow is (re)submitted for conversion.
To achive this, a custom component provides an iDoc script extension. This iDoc function (resubmitForConversion) is implemented in Java (the class extends ScriptExtensionsAdaptor).
In this Java method, first the related content items are fetched. Then the service RESUBMIT_FOR_CONVERSION should be called for all dID's in of the related content.
Thus, at a certain point in the custom Java code, a native Content Server service must be called. Of course the class of this Java code does not extend the Service class, so the m_service object isn't available.
The thing is: before installed the 10gR35CoreUpdateBundle everything worked OK. This code was used to execute the service:
Workspace workspace = CommonUtils.getSystemWorkspace();
String cmd = binder.getLocal("IdcService");
if (cmd == null) throw new DataException("!csIdcServiceMissing");
ServiceData serviceData = ServiceManager.getFullService(cmd);
if (serviceData == null) throw new DataException(LocaleUtils.encodeMessage("!csNoServiceDefined", null, cmd));
Service service = ServiceManager.createService(serviceData.m_classID, workspace, null, binder, serviceData);
UserData fullUserData = CommonUtils.getFullUserData(userName, service);
service.setUserData(fullUserData);
binder.m_environment.put("REMOTE_USER", userName);
ServiceException error = null;
try {
service.setSendFlags(true, true);
service.initDelegatedObjects();
service.globalSecurityCheck();
service.preActions();
service.doActions();
service.postActions();
service.updateSubjectInformation(true);
service.updateTopicInformation(binder);
} catch (ServiceException e) {
error = e;
} finally {
service.cleanUp(true);
if (!CommonUtils.isWorkspaceConnectionInTransaction(workspace)) {
workspace.releaseConnection();
}the first problem was that the CS began to complain that a transaction was started within another transaction. So I suspect that the 10gR35 update wrapped a transaction around a workflow script entry.
With some decompiling I figured out how a service is called from iDoc with the <$executeService()$> command. So I replaced the code above with:
String cmd = binder.getLocal("IdcService");
ServiceData serviceData = ServiceManager.getFullService(cmd);
if (serviceData == null) throw new DataException(LocaleUtils.encodeMessage("!csNoServiceDefined", null, cmd));
Workspace workspace = CommonUtils.getSystemWorkspace();
Service service = ServiceManager.createService(serviceData.m_classID, workspace, null, binder, serviceData);
UserData fullUserData = CommonUtils.getFullUserData(userName, service);
service.setUserData(fullUserData);
binder.m_environment.put("REMOTE_USER", userName);
service.initDelegatedObjects();
service.executeSafeServiceInNewContext(cmd, true);This solved the transaction problem but introduces another problem: !csUnableToResubmitItem,(null)!csIllegalScriptAccess,RESUBMIT_FOR_CONVERSION
The Service Reference Guide says that the access level for RESUBMIT_FOR_CONVERION is 33 (Read, Scriptable). However, in shared/config/resources/std_services.htm the access level is specified as 2 (write).
Thus, my question still is:
What is the best method to call a standard Content Server service from any Java code (so without extending the Service class, or having the m_service object available)? -
How to call Webdynpro ABAP from Widget
Hello guys,
I want to add an icon to my widget with a link to a webdynpro ABAP application.
However, the link is dependent on the system the user is accessing.
So, I'd like to know if it's possible and what's the best method to do it.
1. is it possible to call a Transcation or a RFC that calls a WebDynpro from the Widget?
or
2. is it possible to retrieve the Widget's default system parameters and assemble the Webdynpro URL dynamically?
Any more ideas?
Thank you and best regards,
Henrique.up.
Henrique. -
Calling a servlet from a java program
I could not find a forum for servlet hence am posting
here
I have a servlet that accepts prameters and
gives some out put .
I want to be able to call this servlet ( invoke )
from a Java Program .
How do i do that ..
Any sample code /pointer would be appreciated.
Deepahi
you can try this code.
URL url = new URL("http://localhost:8888/yourServlet?param1=value1");
URLConnection con = url.openConnection();
StringBuffer sBuf = new StringBuffer();
BufferedReader bReader = new BufferedReader(
new InputStreamReader(
con.getInputStream()));
String line = null;
while((line = bReader.readLine()) != null) {
sBuf.append(line);
System.out.println(sBuf);
hope this helps
Shrini -
Calling jsp page from a java program
Hello,
Is it possible to call a JSP page from a java program? If so, please let me know how it is possible.
I have a JSP page that inserts 10 records in a database based on the attribute given to the page. When the java program is executed all the 10 records need to be inserted.
The JSP page is already running fine in Tomcat.
Thanks and Regards,
Prasanna.MVC has applied the standard of seperate your view , model and controller. I believe nobody will insert data from jsp page,better practice should be inserted from your database layer, normally is like DAO layer. so you should pass your data from jsp to your backend.
hopefully it's help u
Maybe you are looking for
-
Mail App v4.2 crashes when selecting messages to be read
I'm a bit lost as to how to diagnose this. I do not know how to log errors in the app for starters. The program starts fine, but when I select a message for viewing, it pauses for a few seconds and crashes. Has anyone else had this problem? I've re-i
-
Can't find the proper drivers for my sound card
Hello. I have a Satellite R25-S3503 whose hard drive recently crashed. I bought a new hard drive, installed it, and am trying to find all of the drivers necessary to get it back up and running. The sound drivers listed on the support site do not appe
-
Please help!! Problem synching pictures from Laptop to iPhone4????
Hey guys, I am new to this so I would really appreciate anyones help very much! I just bought a brand new iPhone4 and last year a brand new Toshiba laptop. I dont know a great deal about how Itunes works but I know the basics. I downloaded all my app
-
I am trying to get iOS 5 on my ipad but there is no update tab on it so I was told to do it on itunes and I need to download the latest version but it won't.
-
Writing/reading password protected zip/gzip files
Hello All, is there anyway in java that i can write/read password protected zip/gzip files?? thanks in advance.