Complex parameter use

Hi,
I'm a newbie to PL/SQL development as well as odp.net.
I need to bind data from stored procedures via parameteres, that has some really complex structure. E.g.:
procedure GetDeliveryNoteList(
PIN in GetDeliveryNoteList_IN,
POUT in out TAB_GetDeliveryNoteList_OUT
type WPSADM.GETDELIVERYNOTELIST_IN as object(
CUSTOMER_ID varchar2(255),
DOC_COUNT number,
DOC_NUM varchar2(255),
DATE_1 date,
DATE_2 date,
ORDER_ID number
type WPSADM.TAB_GETDELIVERYNOTELIST_OUT as table of TypeGetDeliveryNoteList_OUT;
type WPSADM.TYPEGETDELIVERYNOTELIST_OUT as object(
DOC_KEY number,
DOC_NUM varchar2(255),
DOC_DATE date,
DOC_SALE_PRICE number,
COMPLAINT_INFO varchar2(255),
ARCH_KEY number,
ARCH_DESC varchar2(255),
ARCH_NAME varchar2(255),
ARCH_MIME varchar2(255),
KOD_LEK varchar2(6),
NAZEV_LEK varchar2(30),
CISLO_OBJ varchar2(255)
The question is, how do I create such a parameters. I can get data, using simple params like varchar2:
OracleParameter parm = new OracleParameter();
parm.OracleDbType = OracleDbType.Varchar2;
parm.Value = TextBox1.Text;
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);
OracleParameter parm_out = new OracleParameter();
parm_out.OracleDbType = OracleDbType.Varchar2;
parm_out.Size = 1000;
parm_out.Direction = ParameterDirection.Output;
cmd.Parameters.Add(parm_out);
cmd.CommandText = "INFO.INVOICES.JK_echo_par";
cmd.CommandType = CommandType.StoredProcedure;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
label1.Text = parm_out.Value.ToString();
But the Oracle Type is much more complex.
Any suggestions?
TIA, JiKra

Hi,
See if this thread helps:
Re: Invalid Parameter Binding - Jagged Array to User Defined Structure Type
Greg

Similar Messages

  • Portal WebService and Complex Parameter (Array) Response

    Hello Colleagues,
    i use the function „Create WebService from Portal Service“ in the NWDS.
    It Works fine for methods that take or give flat Parameters like this:
    public String getValue(String value) {
    return value;
    But I need to use Complex structures. My first try was this method :
    public String[] getArray(String value) {
    String[] valueArray = new String[5];
    for (int i = 0; i < valueArray.length; i++) {
          valueArray<i> = value;
    return valueArray;
    This works too, but i only have unnamed parameters. Also there is no semantic in my parameters and i can not identify them (only by order). So i need to take a method like this:
    public File[] getFiles(String value) {
    File[] files = new File[5];
    for (int i = 0; i < files.length; i++) {
        files<i>.setFilename("filename " + i);
        files<i>.setCreated(new Date(System.currentTimeMillis()));
        files<i>.setDescription("description " + i);
        files<i>.setLastModified(new Date(System.currentTimeMillis()));
        files<i>.setContent(new byte[20]);
    return files;
    I put the class "File" in the same package as the Service class. I also make a Interface to the File class.
    When i deploy this to my Portal i get an "error_NoClassDefFoundError" in the soap response. What is the right way to make an webservice from a Portalservice with an complex parameter response?
    Every hint is welcome.
    Best regards,
    Patrick
    http://www.mindsquare.de

    <prt0:stackTrace>java.lang.NoClassDefFoundError: [Lde/hoefer/test/File;&#xd;
         at java.lang.Class.getDeclaredMethods0(Native Method)&#xd;
         at java.lang.Class.privateGetDeclaredMethods(Class.java:1655)&#xd;
         at java.lang.Class.getMethod0(Class.java:1901)&#xd;
         at java.lang.Class.getMethod(Class.java:984)&#xd;
         at com.sapportals.portal.prt.service.soap.processor.MethodsAuthorizedProcessor.isMethodAuthorized(MethodsAuthorizedProcessor.java:161)&#xd;
         at com.sapportals.portal.prt.service.soap.processor.InvokerProcessor.generateCallOnPortalService(InvokerProcessor.java:194)&#xd;
         at com.sapportals.portal.prt.service.soap.processor.InvokerProcessor.invokePortalSOAPProcessor(InvokerProcessor.java:146)&#xd;
         at com.sapportals.portal.prt.service.soap.SOAPServiceManager.invokeProcessor(SOAPServiceManager.java:228)&#xd;
         at com.sapportals.portal.prt.service.soap.SOAPServiceManager.invokeMethodOnServices(SOAPServiceManager.java:209)&#xd;
         at com.sapportals.portal.prt.service.soap.SOAPServiceManager.consumeSOAPMessage(SOAPServiceManager.java:133)&#xd;
         at com.sapportals.portal.prt.service.soap.SOAPConnection.processSOAPPost(SOAPConnection.java:271)&#xd;
         at com.sapportals.portal.prt.service.soap.SOAPConnection.handleRequest(SOAPConnection.java:185)&#xd;
         at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)&#xd;
         at java.security.AccessController.doPrivileged(Native Method)&#xd;
         at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)&#xd;
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
         at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)&#xd;
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)&#xd;
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)&#xd;
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)&#xd;
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)&#xd;
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)&#xd;
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)&#xd;
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)&#xd;
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)&#xd;
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)&#xd;
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)&#xd;
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)&#xd;
         at java.security.AccessController.doPrivileged(Native Method)&#xd;
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)&#xd;
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)&#xd;</prt0:stackTrace>
            </prt0:error_NoClassDefFoundError>

  • Need to print complex parameter values

    How can I print the values from a complex parameter that can include multiple values or a range onto a report?
    Thanks!

    Hi
    Try using a formula :
    Join(?Parameter,",").
    This will show all the multiple parameters selected with in an array.

  • Complexity of using N-step BADI in SRM 7using Process controlled Workflow.

    Hi,
    Just as a big thought,
    I have a Shopping Cart requirement, Here i am asked to develop a Custom workflow for SRM 7.0.
    And the client is looking for us to use Process Control Workflows i.e(BRF integrated one).
    I need to understand the complexity of using a N-step BADI.
    How would be the complexity level if I use a N step BADI( ie Multiple approval levels on Line Item Based).
    Kindly tell me the complexity of Using it and if any one has come across some requirement like this, then explain me that how did you face the situation.
    Expecting an Earliest Response.
    Thanks,
    Shanky

    Hi,
      Is your project SRM 7.0 implementation project then you have to go for Process Controlled Workflow and if your project is upgrade then you can still go with Application Controlled Workflow but down line this has to switch to Process Controlled Workflow.
    Best Regards,
    Saravanan

  • Reg: Need help to call a Stored Procedure - Out Parameter using DBAdapter

    HI
    I have created a procedure with Out Parameter, using DBAdapater i have invoked it. I have assigned the out parameter also. But while running i am getting this error.
    My Procedure is shown below. It executes successfully when its run in database.
    create or replace
    PROCEDURE SP_QUERY(s_string in varchar2, retCodeString out varchar2)
    AS
    l_sql_stmt varchar2(1000);
    BEGIN
    l_sql_stmt := s_string;
    EXECute immediate l_sql_stmt;
    commit;
    if SQLCODE = 0 then
    retCodeString := 'OK';
    end if;
    END;
    java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException:
    Client received SOAP Fault from server : Exception occured when binding was invoked.
    Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'ExecuteScript' failed due to:
    Stored procedure invocation error. Error while trying to prepare and execute the SOADEMO.SP_QUERY API.
    An error occurred while preparing and executing the SOADEMO.SP_QUERY API.
    Cause: java.sql.SQLException: ORA-06550: line 1, column 15:
    PLS-00904: insufficient privilege to access object SOADEMO.SP_QUERY ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored Check to ensure that the API is defined in the database and that the parameters match the signature of the API.
    This exception is considered not retriable, likely due to a modelling mistake.
    To classify it as retriable instead add property nonRetriableErrorCodes with value "-6550" to your deployment descriptor (i.e. weblogic-ra.xml).
    To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff.
    All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.
    at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestModel.java:808) at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:384)
    Please help me in this issue.

    Hi
    Right now i geeting the below error
    java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Client received SOAP Fault from server : oracle.fabric.common.FabricException:
    oracle.fabric.common.FabricInvocationException: java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist :
    java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
    at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestModel.java:808) at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:384)
    at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:301) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.
    invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(Unknown Source)
    at com.sun.el.MethodExpressionImpl.invoke(Unknown Source) at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.
    invoke(MethodExpressionMethodBinding.java:53) at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding(UIXComponentBase.java:1256)
    at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:183) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.
    run(ContextSwitchingComponent.java:92) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)
    at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96) at oracle.adf.view.rich.component.fragment.
    UIXInclude.broadcast(UIXInclude.java:102) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)
    at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361) at oracle.adf.view.rich.component.
    fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96) at oracle.adf.view.rich.component.fragment.UIXInclude.
    broadcast(UIXInclude.java:96) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475) at javax.faces.component.UIViewRoot.
    processApplication(UIViewRoot.java:756) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication(LifecycleImpl.java:889) at
    oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:379) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.
    execute(LifecycleImpl.java:194) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at weblogic.servlet.internal.
    StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.
    invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.sysman.emSDK.license.LicenseFilter.doFilter(LicenseFilter.java:101) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446) at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177) at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.help.web.rich.OHWFilter.doFilter(Unknown Source) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.emas.fwk.MASConnectionFilter.doFilter(MASConnectionFilter.java:41) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.eml.app.AuditServletFilter.doFilter(AuditServletFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.eml.app.EMRepLoginFilter.doFilter(EMRepLoginFilter.java:203) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.core.model.targetauth.EMLangPrefFilter.doFilter(EMLangPrefFilter.java:158) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.core.app.perf.PerfFilter.doFilter(PerfFilter.java:141) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.sysman.eml.app.ContextInitFilter.doFilter(ContextInitFilter.java:542) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442) at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) Caused by: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Client received SOAP Fault from server : oracle.fabric.common.FabricException: oracle.fabric.common.FabricInvocationException: java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist : java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist at oracle.sysman.emSDK.webservices.wsdlapi.dispatch.DispatchUtil.invoke(DispatchUtil.java:362) at oracle.sysman.emSDK.webservices.wsdlparser.OperationInfoImpl.invokeWithDispatch(OperationInfoImpl.java:1004) at oracle.sysman.emas.model.wsmgt.PortName.invokeOperation(PortName.java:750) at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestModel.java:802) ... 79 more Caused by: oracle.j2ee.ws.client.jaxws.JRFSOAPFaultException: Client received SOAP Fault from server : oracle.fabric.common.FabricException: oracle.fabric.common.FabricInvocationException: java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist : java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist at oracle.j2ee.ws.client.jaxws.DispatchImpl.throwJAXWSSoapFaultException(DispatchImpl.java:1040) at oracle.j2ee.ws.client.jaxws.DispatchImpl.invoke(DispatchImpl.java:826) at oracle.j2ee.ws.client.jaxws.OracleDispatchImpl.synchronousInvocationWithRetry(OracleDispatchImpl.java:235) at oracle.j2ee.ws.client.jaxws.OracleDispatchImpl.invoke(OracleDispatchImpl.java:106) at oracle.sysman.emSDK.webservices.wsdlapi.dispatch.DispatchUtil.invoke(DispatchUtil.java:358) ... 82 more

  • Result parameter using ABAP OO

    Hi
    I'm working in a workflow project, based on ABAP OO instead of BOR.
    I have created an ABAP OO method "Handling required", with a returning parameter, based on a data element/domain with two values "Handling Required" and "Handling Not Required".
    Now it would like to "convert" these values to a result parameter, using the "add returned element" in the task container. This gives me the element WIRESULT, but somehow it won’t give me the two outcomes that I need.
    Any suggestions / help on this?
    Regards
    Morten Nielsen

    Hi Mike
    Thanks for your very quick reply (This is exactly why the SDN is the greatest invention since snote and the wheel ).
    Normally I'll prefer to keep my workflows as slim as possible, i order to simplify the workflow support/administration task, that is I prefer resultparameters to additional condition steps. But I guess we all have our own preferred approach.
    But if ABAP OO doesn't support result parameters for workflow, a container element and a condition step will do the trick
    Anyway Thanks for your input
    Regards
    Morten Nielsen

  • Limiting the parameter used in constructing a class

    I would like to create a Class, where the name parameter used when constructing the Class can only be 1 of 5 different names. I was thinking about saving these "usable" names as final Strings in some interface that all my classes implement. I was wondering if there was an easy way of doing this, since I know there are Java Classes that have this feature...or do they just use brute force, testing the inputted String against what is legitimate with a for loop or something?

    I would like to add one more thing, and perhaps somebody knows the answer.
    In the Java Swing classes, the setDefaultCloseOperation(int) method of a JFrame asks for an (int) parameter. If you enter 10, the program will compile, but when you execute it it will throw an exception. So obviously if I wanted to mimic this way of writing a program I would make ChessPiece(String) and not ChessPiece(AllowableName), so that the program compiles. But then what do I do to make it throw an exception for not being an AllowableName and just any old String. My curiosity is killing me. It just seems that for my program I have to write
    class ChessPiece(AllowableName)
    {}for me to use the
    ChessPiece Rook = new ChessPiece(AllowableName.Rook);format.
    but if I did that
    ChessPiece Rook = new ChessPiece("Rook");wouldn't even compile, and if it was truly like the Swing API, it should.

  • Complex Query using DPL ?

    how can i do a complex Query using DPL ?
    i.e.
    select * from employee where age>25 and managerId=3 and salary>=6000 and salary <= 10000 order by id desc
    thx in advace!!
    zhangbin

    Hi zhangbin,
    This message may be useful.
    Re: How can I make queries to DB?
    --mark                                                                                                                                                                                                                                                               

  • How to link a search help to a parameter using which syntax

    hi
    how to link a search help to a parameter using which syntax

    Hi
    by useing this <b>F4IF_INT_TABLE_VALUE_REQUEST</b> you can creat a search help for a parameter on the screen
    under <b>AT SELCTION-SCREEN ON FIELD</b>
    write a selct query and store that values in the internal table and call that internal table in that FM
    <b>example</b>
    TYPES : BEGIN OF ST_OBJID_SH,
             OTYPE TYPE HRP1000-OTYPE,
             OBJID TYPE HRP1000-OBJID,
            END OF ST_OBJID_SH.
    DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.
    DATA : WA_OBJID_SH TYPE ST_OBJID_SH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.
    *  IF S_OBJID IS NOT INITIAL.
        SELECT OTYPE OBJID FROM HRP1000
                     INTO TABLE IT_OBJID_SH
                     WHERE OTYPE = 'D'.
    IF SY-SUBRC EQ 0.
    * SEARCH HELP FOR QUALIFICATION.
        CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
          EXPORTING
    *              DDIC_STRUCTURE         = ' '
            RETFIELD               =  'OBJID'
    *              PVALKEY                = ' '
           DYNPPROG               = SY-REPID
           DYNPNR                 = SY-DYNNR
           DYNPROFIELD            = 'S_OBJID'
    *              STEPL                  = 0
    *              WINDOW_TITLE           =
    *              VALUE                  = ' '
           VALUE_ORG              = 'S'
    *              MULTIPLE_CHOICE        = ' '
    *              DISPLAY                = ' '
    *              CALLBACK_PROGRAM       = ' '
    *              CALLBACK_FORM          = ' '
    *              MARK_TAB               =
    *            IMPORTING
    *              USER_RESET             =
          TABLES
            VALUE_TAB              =  IT_OBJID_SH
    *              FIELD_TAB              =
    *              RETURN_TAB             = RETURN_TAB
    *              DYNPFLD_MAPPING        =
    *            EXCEPTIONS
    *              PARAMETER_ERROR        = 1
    *              NO_VALUES_FOUND        = 2
    *              OTHERS                 = 3
        IF SY-SUBRC <> 0.
    *           MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    <b>Reward if usefull</b>

  • One time parameter use pattern

    I'm wondering if the following pattern breaks any convensions or smells of poor design.
    I have a complex directed-graph-like object, let's call it MyGraph.
    I plan to build them by putting together smaller less complex MyGraph objects which get integrated into the whole.
    The problem is that when they are integrated, their nodes are, of course, possibly linked (hence modified) to nodes in the graph they are constructing.
    To sum up so far:
    MyGraph subGraph1 = new MyGraph(...);
    MyGraph subGraph2 = new MyGraph(...);
    //WARNING! subGraph1 and subGraph 2 get modified in here!
    MyGraph aGraph = new MyGraph(subGraph1, subGraph2);
    //ADDITIONAL WARNING! Don't touch subGraph1 or subGraph2
    //because doing so will change aGraph.
    //ADDITIONAL ADDITIONAL WARNING! Don't use subGraph1 or subGraph2
    //as parameters to grate a new MyGraph, because then things get REALLY ugly.So I have at least 2 possible solutions.
    1. A complicated, expensive deep copy of a directed (possibly with cycles) MyGraph every time it's used in a constructor. Even though it's very likely never to be used again.
    2. In the constructor check/modify a private "used" field in the parameters (ok because I have access to it) so I can't ever inadvertently re-use a MyGraph.
    The second option introduces the idea of the "one-time use as parameter" pattern. Where, once used as a parameter, an object becomes invalid for any other use.
    In some ways this pattern feels okay, and in others it "rubs me the wrong way".
    A final consideration: this code is very generic, and is likely to be used by other developers, and I want to confuse/surprise them as little as possible.
    So, finally, is option 2 ok? bad? so-so?
    Would you cringe if you saw it?

    To satisfy the curious.
    Specifically, what I've done is implement "Regular Expressions" over a sequence of arbitrary objects as opposed to characters.
    A bit of background:
    http://forum.java.sun.com/thread.jsp?forum=4&thread=414189
    I call them JOREs (Java Object Regular Expressions)
    I was hoping to avoid the need to deep-copy a directed cyclical graph, because:
    a. it's a bit of a pain and cpu hog
    b. I really want to avoid StackOverflowErrors so all of my "recursive" functions are implemented with iteration and a Stack. That makes the copy even more of a pain and cpu hog.
    It works now.
    I have made JOREs immutable and have implemented a deep-copy function.
    The directed graph is my FA, and I had to "invent" a sensible way of putting together complex JOREs out of simple rules and sub-JOREs. This is what it looks like to put one together:
           Rule anyStringOfLength7 = new Rule("any String of length 7"){
                public boolean accepts(Object o)
                    return (o instanceof String && ((String)o).length()==7);
            Rule aNull = new Rule("a null"){
                public boolean accepts(Object o)
                    return (o==null);
            Jore nullOrStringOfLength7 = Jore.createNew().or(
                    Jore.createNew().then(aNull),
                    Jore.createNew().then(anyStringOfLength7)
            //note that the instance methods return a new Jore, and always
            //deep-copy parameters before using them now
            Jore myJore  = Jore.createNew().then(aNull).then(nullOrStringOfLength7).finish();

  • Unable To Pass Input Page Parameter Using PageDef File.

    Dear All,
    I am currently exploring task flows as I dont have that much knowledge in it.
    Here's my use case
    1. I setup a taskflow which has a Method Call and a View Activity in it.
    2. The method call is a default activity which just calls a web service.
    3. After execution, I just wanted to display the result of the method.
    I used input page parameters to pass data between the method call and the view activity.
         (I passed the data by accessing the pagedef file directly. I know I can do it using pageflowscope..but this is
         my self exercise so that I could understand ADF fully );)
    <?xml version="1.0" encoding="windows-1252" ?>
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
      <task-flow-definition id="ManageEmployeeTaskflow">
        <view id="viewEmployee">
          <page>/viewEmployee.jsff</page>
          <input-page-parameter>
            <from-value>#{data.com_test_ManageEmpFlow_methodPageDef.empInfoIterator.currentRow.dataProvider.name}</from-value>
            <to-value>#{data.com_test_viewEmployeePageDef.name.inputValue}</to-value>
          </input-page-parameter>
        </view>
        <method-call id="EmployeeSetup">
          <method>#{bindings.EmployeeSetup.execute}</method>
          <outcome id="__12">
            <fixed-outcome>viewEmployee</fixed-outcome>
          </outcome>
        </method-call>
        <use-page-fragments/>
      </task-flow-definition>
    </adfc-config>Problem is, when I display the data. Nothing is being displayed.
    <af:inputText value="#{bindings.name.inputValue}"
                      label="#{'Name'}"/>          I debug the taskflow and the <from-value> really has a value, but I am not sure why it cant be passed to next pagedef.
    Any idea please?
    Edited by: Marky on May 15, 2011 11:25 PM

    Hi,
    I've been thinking... Is this way of passing parameters not possible?
          <input-page-parameter>
            <from-value>#{data.com_test_ManageEmpFlow_methodPageDef.empInfoIterator.currentRow.dataProvider.name}</from-value>
            <to-value>#{data.com_test_viewEmployeePageDef.name.inputValue}</to-value>
          </input-page-parameter>Thanks.

  • How to get the list of values for a dynamic parameter using Web Services SDK?

    <p>I am struggling to get the list of values for a dynamic parameter of a report.</p><p>I am using Java Web Services SDK ... I tried to use PromptInfo.getLOV().getValues() method but it does not work.</p><p>First of all ... is this possible (to get the list of values for a dynamic param) using Web Services?</p><p>Second of all, if this is possible, how should I do it ... it seems it works fine when running the report from CMC. It asks for DB logon info and after that it provides a list of values.</p><p>Thx </p>

    <p>Your assumption is correct. We are trying to get the LOVs from the Crystal Report. I was not aware that this is not supported by Web Services SDK.</p><p>We used Web Services SDK to integrated the Crystal Reports in our web application. We implemented some basic actions for reports: schedule, view instances, run ad-hoc reports.</p><p>We encountered this problem when trying to run/schedule reports with dynamic parameters (a list of values from DB). We were unable to get the LOVs.</p><p>Please let me know if you can think of an alternative to look at.</p><p>Thanks a lot,</p><p>Catalin </p>

  • Complex navigation & use of intermediate reports,NOT for the feint-hearted!

    Hi all,
    I'm trying to setup qutie complex navigation...
    I have a report that provides metrics based on the organizational structure, which in the dashboard is presented to the penultimate level, and permits a drill down to the lowest level (centre). At the rpd level, the metrics (sales metrics) are defined at the centre level to which the organization structure dimension is linked. We have a metric defined which flags whether the centre at which the sale is made is the same as the centre to which the employee is assigned/usually works at (this has all been loaded by the ETL). We then have a count distinct metric (Num of Employees) on the sales reps ids for those records in the fact table that have this previous flag marked. All of this works as expected.
    The dashboard displays this last metric described (Num of Employees) against the organizational structure. Again, OK. But we need to navigate after clicking on this metric, to another report, which displays all sales assigned to those employees (regardless of centre at which they were made), i.e. if the metric shows "6", then after clicking on this value, the "final" report to which we navigate must show all sales for those 6 employees. Naturally the table in the dashboard where the user clicks does not display the employee data, as it displays results at the centre level, so some kind of "intermediate" report which obtains those 6 employee IDs is necessary (this is how it would be done fore example in SQL). We have done this creating a report with employee IDs, a calculated field which compares the two centre values (as in the flag defined in the RPD), and finally contains the 4 organizational structure fields which need to obtain the values from the first report on the dashboard (ive assigned filters to these, which point to the correponding columns in the dashboard report). So, in theory this report would list the employee IDs we are counting in the "Num of Employee" metric. The "final" report then only needs to filter the values in the Employee Id column based on the employee IDs listed in the "intermediate" report.
    The error im getting is: "State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 17001] Oracle Error code: 7455, message: ORA-07455 ..." the oracle error message given is that the query exceeds the time limit allowed by the database as the query is estimated in hundreds of hours. The main reason I think this may be ocurring is because the intermediate report is accepting as filter ALL values in the columns ive indicated, where as what is actually need is that it take only the value of the organizational structure columns that correspond to the metric the user has clicked on. I.e. the filter instead of reading only the specific organizational values, is reading all the values in the table, and hence the query is not permitted.
    Has anyone achieved anything similar???
    Edited by: zjac on Sep 20, 2008 12:42 PM

    by using Direct database request your bypassing all the wanderful metadata you built in the BMM layer, as such much functionality is not available.
    If you really need to use such complex SQL, I would suggest creating an inline view in the phyiscal layer and at least model this through your BMM either as a flat data source (ie include the dimension columns and model the same inline view into your BMM star)
    If you do that, the BI Server will know what other logical columns this data source can relate you and you should find the navigation works as expected.
    If you dont fancy that good practice, have a look at creating GOURL formulas as the column fx's, format as HTML to present the data as a hyperlink and manually pass all the parameters to the 2nd report.
    I'd do the first option, its more inline with intended use.
    What cant you do using the 'normal modelling / answers techniqes with union (see combined request in answers) and complex sql (evaluate function in RPD)??

  • Calling a stored procedure with VARRAY as out parameter using JDBC

    Hi,
    I want to use the data type VARRAY as an out parameter in an Oracle stored procedure. I want to call the stored procedure from
    my java program using JDBC.
    I'm using Oracle 8.1.5 for Windows NT.
    Please help me.
    Thanks
    Sumanta
    null

    Originally posted by JDBC Development Team:
    It's very similar to other datatype except that it uses OracleTypes.ARRAY typecode and the value is mapped to a oracle.sql.ARRAY instance. The code looks as follows --
    cstmt.registerOutParameter (idx, OracleTypes.ARRAY, "VARRAY_TYPE_NAME_HERE");
    cstmt.execute ();
    ARRAY array = (ARRAY) cstmt.getObject (idx);
    Thanks for your reply.
    I have to use:-
    OracleCallableStatement cs1 = (OracleCallableStatement )conn.prepareCall
    ( "{call proj_array(?)}" ) ;
    for retrieving a collection as an OUT parameter.
    This gives me the errors:-
    C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Blob getBlob(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
    import java.sql.*;
    ^
    C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Array getArray(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
    import java.sql.*;
    ^
    C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Clob getClob(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
    import java.sql.*;
    ^
    C:\jdbc\VarraySQL.java:0: The method oracle.jdbc2.Ref getRef(int) declared in class oracle.jdbc.driver.OracleCallableStatement cannot override the method of the same signature declared in interface java.sql.CallableStatement. They must have the same return type.
    import java.sql.*;
    ^
    How do I get rid of these errors?
    null

  • How do I send "unlimited" text in a parameter using "POST" in Ajax

    I'm trying to send large amounts of text data to the server using POST rather than GET, using Ajax
    However, I am only able to send a max of 9.76 kb
    I start with a jsp page, which calls a javascript method that utilises Ajax, which sends the text in a parameter in a XMLHttpRequest object
    to a servlet. The text is derived from options values in a multi select combo box.
    Here's my code:
    Code snippet from .jsp page:
            <table>
            <form name="form1" id="form1" method="POST">
               <tr>
                  <td>
                 <select name="sel" id="sel" multiple="multiple" size="0"></select>
              </td>
              <td>
                 <input type="button" id="sendOpts" name="sendOpts" value="Send Options" onClick="jsObj.sendOpts()">
              </td>
              </tr>
           </form>
           </table>Code snippet from jsObj.js file:
    //=================================================
    // jsObj object
    //=================================================
    jsObj = new jsObj();
    function jsObj() {
         this.sendOpts = function() {
              if(!confirm('Send Option Values?'))
                   return;
              if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
                   xmlhttp=new XMLHttpRequest();
              } else { // code for IE6, IE5
                   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              xmlhttp.onreadystatechange=function() {
                   if(xmlhttp.readyState==4) { // 4 = The request is complete
                        if (xmlhttp.status==200 || window.location.href.indexOf("http")==-1) {
                             alert(xmlhttp.responseText); // When I copy and paste all the text from this alert to text editor and save the file, the largest the file can be is 9.76 kb.
              var url = 'testSize'; // Servlet that simply retrieves the sent String in a parameter and sends it back to this method
              var sel = document.getElementById('sel');
              var str = sel.name + '=';
              var delim = ':';
              for(var i = 0; i < sel.length; i++) {
                   str += encodeURIComponent(sel.options.value + delim); // 'encodeURIComponent' encodes any special characters within the parameter values
              xmlhttp.open("POST",url,true);
              xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // This is needed for any POST request made via Ajax
              xmlhttp.send(str); // send the parameter and it's value to the servlet
    }Code snippet from 'testSize' servlet:package test;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.*;
    public class TestSize extends HttpServlet {
         public synchronized void doGet(HttpServletRequest request,
              HttpServletResponse response) throws ServletException,IOException {
              PrintWriter out = null;
              try {
                   response.setContentType("text/html");
              out = response.getWriter();
                   String str = request.getParameter("sel");
                   str = str.substring(0, str.length()-1); // cut off last delimiter
                   out.println(str);
                   } catch (Exception e) {
         public synchronized void doPost(HttpServletRequest request,
              HttpServletResponse response) throws ServletException, IOException {
              doGet(request, response);
    }Any help greatly appreciated.
    Edited by: Irish_Fred on Feb 25, 2010 5:14 AM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Yes, I tried that.
    I set the "ACTION" of the form to the servlet and then used the form.submit() method to POST the text to the servlet.
    i.e.: I selected many options in the select combo, concatenated them to one string, set the 'value' property of a form text field to
    this string, did a 'form.submit()' to the servlet and I was able to send a much larger amount of text.
    ( The .txt file I saved from the resulting text equaled about 30 kb in size, so obviously I can send much more
    data this way. )
    However, I want to use Ajax, so I don't have to reload the page. I 'borrowed' the Ajax part of the code from a website:
    http://www.javascriptkit.com/dhtmltutors/ajaxgetpost2.shtml
    and I presumed that because the author used "POST" as opposed to "GET", I would be able to send larger
    chunks of data. Obviously not, or there's another reason for the limit of data I can send using my present code,
    which I'm not seeing. I'm fairly new to jsp, Ajax & Servlets, so this is no surprise.
    If anyone can point out to me where I'm going wrong, I'd greatly appreciate it. Cheers.

Maybe you are looking for

  • Creating Web Service from Java Class-How to eliminate nillable="true"

    Does anyone know how to eliminate the attribute, nillable="true", from the element tags which describe the parameters in the WSDL created when creating a web service from a Java Class? It does this only for the string types. Is there something I need

  • Troubles installing drivers for my X-FI Xtrememusic c

    The Setup program for the soundcard states the following error when I try to install the drivers. Heading: Error Error message: Setup is unable to detect a supported product on your system. Please ensure that the product is properly installed before

  • Iteration problem. Please GUIDE.

    i am facing a tricky problem I have a predefined RowsetIterator tag which iterates over a datasource So if a datasource has 20 rows,the iterator will go over each row. displayPositions.jsp <pd:RowsetIterator   datasource="ViewObject" >     <mytag:Det

  • IN PP01 WHEN BP Object type is selected, no infotypes come to screen

    Hi friends, We are planning to implement cProjects and make it integrated with HR module. However, at the very first place, when I try to create a Business Partner and check whether it is reflected in cProjects, I could not create a business partner

  • Failure to extend rollback segment 6

    Hello All, We have 4 Node RAC 9.2.0.8 on IBM AIX. I am getting following messages in the Alert.log file. Failure to extend rollback segment 6 FULL status of rollback segment 6 set. Failure to extend rollback segment 6 Failure to extend rollback segme