Value and context and queue diff

Hi people
          In UDF editor cache, what is the use and diff between value and context queue radio buttons
Thanks
Shekar

Refer
http://help.sap.com/saphelp_nw04/helpdata/en/22/e127f28b572243b4324879c6bf05a0/content.htm
Value - returns string..
Context/Queue  - returns array of values

Similar Messages

  • Diff btw queue,context and xpath

    plzzz provide me the links for diff btw queue,context and xpath....i have searched the sdn but didnt find find any information...!!!
    and also please provide me u r usefull ideas
    thnx SDNers

    Hi ,
    Have a look at these links for queue and context  -
    1. /people/riyaz.sayyad/blog/2006/04/23/introduction-to-context-handling-in-message-mapping
    2. http://wiki.sdn.sap.com/wiki/display/XI/Detailedlookintothesuppressed+nodes
    3. /people/venkat.donela/blog/2005/06/09/introduction-to-queues-in-message-mapping
    XPath is used to navigate through elements and attributes in an XML document. It can be used in content based Receiver determination. For details refer to these links -
    1. http://www.w3schools.com/xpath/default.asp
    2. http://en.wikipedia.org/wiki/XPath
    3. /people/prasadbabu.nemalikanti3/blog/2006/09/20/receiver-determination-based-on-the-payload-of-input-dataextended-xpathcontext-object
    Regards,
    Sunil Chandra

  • An issue about queues and context

    Hi all
    I have a value form one queue with some context and I want to add the same context to another queue
    I have this starting point in the first queuecwith context after each number
    30
    30
    10
    10
    20
    20
    10
    10
    10
    10
    90
    90
    10
    10
    And in the other queue
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    100
    600
    100
    100
    100
    100
    100
    100
    The color indicate the context change.
    I want to give the same context of the first queue to the second queue because I am mapping one to one field into the target node.
    The second queue is longer than the first one but that is ok as long as I can get the first value to right context of the first queue
    Thanks

    HI again
    Do I have to use the format by key insted of changing the context.
    I have tried but I am  getting this error
    formatByExample: Queues do not have the same number of values] in class com.sap.aii.mappingtool.flib7.NodeFunctions method
    It is quit a copmlex mapping , I do not think I can use format by key.
    any idea how to change the context
    Thanks

  • Contexts and queues problem

    Hello Sdn
    I am stuck with an issue.
    I have a queue udf ,it takes in value and while placing in target ,it is placing the values in target segment.
    eg :
    Current output:
    PO1
      MSG
       10
      MSG
      20
    MSG
      30
    MSG
      40
    Required output
    PO1
    MSG
       10
    MSG
      20
    PO1
    MSG
      30
    MSG
      40
    The mapping is : Source-> QUEUE UDF-> Target
    IS this a context issue or something needs to be changed in the udf.
    Thanks

    HI
    Change the context of PO1 and MSG to PO1 parent node. and try again.
    Right click on each node and use display queue this will show you after changing the context what's changing. Check like this
    Thanks
    Gaurav

  • Remove context and split by value.

    Hi Friends,
                            the SAP Library  seems to bge a bit tough for me. Any url where I can find easy definition to Remove context and split by value , with exampl!!
    Thanks in advance!!
    Arnab .

    Hi,
    Remove Context Simply remove the Context. SplitByValue inserts  Context.
    Case 1: Remove Context is not Used.
    Source Message:
    <Test_Out_Remove>
    <header name=u201CA">
    <item>A.one</item>
    <item>A.two</item>
    <item>A.three</item>
    </header>
    <header name="B">
    <item>B.one</item>
    <item>B.two</item>
    </header>
    </Test_Out_Remove>
    TargetMessage:
    <Test_In_Remove>
    <item>A.one</item>
    <item>A.two</item>
    <item>A.three</item>
    </Test_In_Remove>
    Case 2: Using Remove Context.
    Source Message:     
    <Test_Out_Remove>
    <header name=u201CA">
    <item>A.one</item>    
    <item>A.two</item>    
    <item>A.three</item>
    </header>
    <header name="B">
    <item>B.one</item>
    <item>B.two</item>
    </header>
    </Test_Out_Remove>
    TargetMessage:
    <Test_In_Remove>
    <item>A.one</item>
    <item>A.two</item>
    <item>A.three</item>
    <item>B.one</item>
    <item>B.two</item>
    </Test_In_Remove>
    Case 3: Without SplitByValue
    Source Message :
    <Test_Out_Split>
    <header>
    <item>one</item>
    <item>two</item>
    <item>three</item>
    <item>four</item>
    </header>
    </Test_Out_Split>
    Target Message :
    <Test_In_Split>
    <new_context>
    <item>one</item>
    <item>two</item>
    <item>three</item>
    <item>four</item>
    </new_context>
    <new_context />
    <new_context />
    <new_context />
    </Test_In_Split>
    Case4: Using SplitBYValue
    Source Message :
    <Test_Out_Split>
    <header>
    <item>one</item>
    <item>two</item>
    <item>three</item>
    <item>four</item>
    </header>
    </Test_Out_Split>
    Target Message :
    <Test_In_Split>
    <new_context>
    <item>one</item>
    </new_context>
    <new_context>
    <item>two</item>
    </new_context>
    <new_context>
    <item>three</item>
    </new_context>
    <new_context>
    <item>four</item>
    </new_context>
    </Test_In_Split>
    Reward points if needful.
    Thanks,
    RamuV

  • Use context to pass value between JPF and Java Control

    hi,
    Can we use context to pass value between JPF and Java Control? It works if i m using InitialContext in the same machine but i dun think it will works if i put Web server and application server in different machine. Anyone have an idea how to do it?
    I also want to get the method name in the onAcquire callback method. Anyone knows how to do this?
    thks
    ?:|

    Hi.
    Yoy can the next options for make this:
    1. Pass your values in http request.
    example: http://localhost/index.jsp?var1=value1&var2=value2&var3....
    2. You can use a no visible frame (of height or width 0) and keep your variables and values there using Javascript, but of this form, single you will be able to check the values in the part client, not in the server. Of this form, the values of vars are not visible from the user in the navigation bar.
    Greeting.

  • What is Context and queue?

    Q.1What is context and queue in graphical mapping?
    Q.2What is the difference between context and queue in graphical mapping and how these concepts are useful in mapping?

    Hi,
    Context Change
    Message mapping works internally by using queues
    If no further elements are imported at a particular hierarchy level, a Context Change is inserted in the queue
    Use node functions to handle changes in the message hierarchy.
    Context changes have impact on:
    User-Defined Functions
    Breaking and inserting of hierarchy levels Manipulation of queues ant contexts
    Explicit context selection on source elements and nodes
    Using node functions
    removeContexts: deletes all context changes of a queue
    SplitByValue: insert additional context changes in a queue
    Check this link for all details.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/be05e290-0201-0010-e997-b6e55f9548dd
    A tool to display queues:
    -Upload or create source xmldocument in test mode
    - Right-click on box representing element or function
    - Select “Show queue”
    Also check out this link
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/be05e290-0201-0010-e997-b6e55f9548dd
    Hope this will help you.
    Regards
    Aashish Sinha
    PS : reward points if helpful

  • Difference between Context and Queue in UDF

    hi,
    i am trying to write udf but i have doubt when do i select Contect and when do i select Queue as my udf ? How do we decide which one i select ?
    Thanks & Regards
    Naveen

    when u go 4 advanced udf functionalites u need this. for simple udf not req to play with queue nor context. the input when using a context or queue will be an array of strings but in simple udf's it is just a single string that u will be accessing. u can also check here:
    http://help.sap.com/saphelp_nw2004s/helpdata/en/40/7b8e40496f6f1de10000000a1550b0/content.htm

  • Rebate: Differ "Scale Base Value" between "Statistics" and "Billing Doc"

    Dear SD Expert,
                After I go with Transaction Code :"VOB3" (run report RV15B002), I found that "Scale Base Value" have different value between "Statistics" and "Billing Doc". And the correct value is "Billing Doc". However, the value which shows in my rebate condition now is "Statistic". Thus, my question is
                How can I configure my rebate condition based on "Billing Doc" Value instead of "Statistic"? (I don't want to "Correct backlogs" anytime in changing scales based value.)  Anyone please feel free in suggestion.
    Thanks,
    Prach

    HI,
    This may be useful to you.
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/5612d8545a11d1a7020000e829fd11/content.htm
    Vrajesh

  • Pb of Mapping and Context

    Hy everybody
    I'm lost in one of my mapping.
    Inbound :
    <a>
      <b></b>
      ... n times
      <b></b>
    </a>
    I want it in outbound :
    <a>
      <c>
        <b></b>
      </c>
      ... n times
      <c>
        <b></b>
      </c>
    </a>
    I don't manage to reach it.
    Thanks in advance

    Hi,
    Are you able to get atleast one element under
    <C>
       <b></b>
    </C>
    If so ,make use of Remove context and SplitByValue functions here to achieve this.
    Check this -
    /people/sravya.talanki2/blog/2005/12/08/message-mapping-simplified-150-part-ii
    Also you can see the runtime values thru Display Queue in the message Mapping(Repository)
    Hope this helps,
    Regards,
    Moorthy

  • Generic UDF to handle empty contexts and contexts with missing fields

    Hi,
    I have been trying to get my head around a UDF for this for a while, but cannot find the solution. I''l start by showing input structure, and expected target structure (subset of an invoice IDoc with 4 line items):
    SOURCE:
    E1EDK01 (0..1)
    E1EDP01
    ---POSEX = 1
    ---E1EDP05
    KOTXT (qualifier) = Z1
    BETRG (amount) = 200,00
    ---E1EDP05
    KOTXT = Z2
    BETRG = 300,00
    ---E1EDP19...
    E1EDP01
    ---POSEX = 2
    ---E1EDP05
    KOTXT = Z1
    ---E1EDP05
    KOTXT = Z2
    BETRG = 400,00
    ---E1EDP19...
    E1EDP01
    ---POSEX = 3
    ---E1EDP05
    KOTXT = Z2
    BETRG = 500,00
    ---E1EDP19...
    E1EDP01
    ---POSEX = 4
    ---E1EDP19...
    TARGET:
    Line
    ---PosId = 1
    ---Price = 200.00
    Line
    ---PosId = 2
    ---Price = N/A
    Line
    ---PosId = 3
    ---Price = N/A
    Line
    ---PosId = 4
    ---Price = N/A
    I want the price from E1EDP05/BETRG where KOTXT = Z1to be set for each line. As you can see the source structure can be split in 4 cases:
    1. for some line items there exist multiple E1EDP05-segments with one of them qualifier Z1 and one corresponding amount field. This is the "perfect" structure and easy to handle.
    2. some line items contains E1EDP05 with qualifier Z1 with no BETRG. Problem-case
    3. some line items contains no E1EDP05-segments with qualifier Z1, but contains other E1EDP05-segments. Can be solved.
    4. some line items contains no E1EDP05-segments at all. Can be solved.
    I need to (I believe) set the context of the KOTXT and BETRG to E1EDP01 since I want one value per line item, irrespective of how many E1EDP05-segments exist per line item. In cases where no value can be found for relevant qualifier (Z1) or no E1EDP05-segments exist for a line item I want a default value to be set (N/A).
    My problem is that all these different cases might occur in the same file, and they mess up the values in each context, leading to wrong BETRG to be picked in some cases (where case 2 exist) since mapWithDefault cannot be used (context contains value for other qualifier).
    Do you know how to handle all these cases?
    Any pseudo-code for an UDF?
    Many thanks for your help!
    Br,
    Kenneth

    Hi Shweta!
    Thanks a lot, your idea didn't completely solve my problem, but pointed me in the right direction and gave me some valuable ideas:)
    For anyone wondering how it is done, I solved it by using your suggested two inputs, along with a third input (constant) which functions as default value for contexts where value-field is missing for a specific qualifier, or in case no segments with desired qualifier exists for a context.
    My mapping now looks like the following (where KOTXT is qualifier and KRATE is value field) for the 3 inputs:
    KOTXT(Context = E1EDP01) \
                                equalsS -->
    Constant(qualifier value) /
    KOTXT(Context = E1EDP05) \
                                equalsS  \
    Constant(qualifier value) /            ifWithoutElse --> removeContexts -->
               KRATE (Context = E1EDP05) /
    Constant(default value) -->
    Then these 3 inputs goes into the following UDF (queue function):
    int j=0;
    boolean contextDone = false;
    for(int i=0;i<a.length;i++)
         if(a<i>.equals("true"))
              if(b[j].equals(ResultList.SUPPRESS))
                   result.addValue(c[0]);
              else
                   result.addValue(b[j]);
              contextDone = true;
              j=j+1;
         if(a<i>.equals(ResultList.CC))
              if (contextDone)
                   contextDone = false;
                   result.addValue(ResultList.CC);
              else
                   result.addValue(c[0]);
                   result.addValue(ResultList.CC);
    This results in a target node created for each context, where context relates to each line item in this case, where each value is either a default value or the value corresponding to the qualifier. This works in all cases where:
    1. there are no segments containing relevant qualifier
    2. there are segments with relevant qualifier, but missing value field
    3. there are segments with relevant qualifier and value field
    Thanks a lot again, Shweta, for guiding me!
    Br,
    Kenneth

  • SecureSocketListener: Could not setup context and create a secure socket on 142.182.112.123:5555 : java.security.cert.CertificateParsingException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11. java.security.cert.Certifica

    HI Team,
    while starting the node manager in wls 8.1 and java1.4
    we are facing this issue plz help on this immediately.
    + CLASSPATH=/srvrs/bdv/patches/CR210310_81sp4.jar:/usr/java14/lib/tools.jar:/srvrs/bdv/bea/weblogic81/server/lib/weblogic_sp.jar:/srvrs/bdv/bea/weblogic81/server/lib/weblogic.jar::/srvrs/bdv/bea
    + export CLASSPATH
    + export PATH
    + set -x
    + [ 5555 !=  ]
    + [ 142.182.112.123 !=  ]
    + /usr/java14/bin/java -Xms32m -Xmx32m -Dweblogic.security.SSL.enforceConstraints=off -Djava.security.policy=/srvrs/bdv/bea/weblogic81/server/lib/weblogic.policy -Dweblogic.nodemanager.javaHome=/usr/java14 -DListenAddress=142.182.112.123 -DListenPort=5555 weblogic.NodeManager
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <NodeManager: for information on command line options,  try "java weblogic.NodeManager -h">
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Starting NodeManager >
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Setting listenAddress to 142.182.112.123..>
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Setting listenPort to 5,555..>
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Setting java home to '/usr/java14'>
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Effective values of properties :
            ListenAddress=142.182.112.123
            ListenPort=5555
            ListenerType=secureSocket
            SavedLogsDirectory=NodeManagerLogs
            NativeVersionEnabled=true
            TrustedHosts=nodemanager.hosts
            StartTemplate=../../server/lib/unix/nodemanager.sh
            ReverseDnsEnabled=false
            ScavangerDelaySeconds=180
            PIDFileReadRetryCount=0
            WeblogicHome=null
            bea.home=null
            JavaHome=/usr/java14
            PropertiesVersion=8.1
    >
    <Sep 15, 2013 7:35:26 AM EDT> <Info> <NodeManager> <Saving logs in'NodeManagerLogs'>
    <Sep 15, 2013 7:35:31 AM EDT> <Info> <[email protected]:5555> <Reading private key and certificate chain from the keystore /srvrs/bdv/bea/weblogic81/server/lib/DemoIdentity.jks. KeyStore type = jks, Using keystore passphrase = true, Alias = DemoIdentity>
    <Sep 15, 2013 7:35:31 AM EDT> <Info> <[email protected]:5555> <Reading trusted CAs from the keystore /srvrs/bdv/bea/weblogic81/server/lib/DemoTrust.jks. KeyStore type = jks, Using keystore passphrase = true>
    <Sep 15, 2013 7:35:31 AM EDT> <Info> <[email protected]:5555> <Reading trusted CAs from the keystore /usr/java14/jre/lib/security/cacerts. KeyStore type = jks, Using keystore passphrase = false>
    SecureSocketListener: Could not setup context and create a secure socket on 142.182.112.123:5555 : java.security.cert.CertificateParsingException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.
    java.security.cert.CertificateParsingException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11
            at com.certicom.security.cert.internal.x509.X509V3CertImpl.<init>(Unknown Source)
            at com.certicom.tls.interfaceimpl.CertificateSupport.addTrustedCertificate(Unknown Source)
            at com.certicom.net.ssl.SSLContext.addTrustedCertificate(Unknown Source)
            at com.bea.sslplus.CerticomSSLContext.addTrustedCA(Unknown Source)
            at weblogic.security.utils.SSLContextWrapper.addTrustedCA(SSLContextWrapper.java:52)
            at weblogic.nodemanager.internal.SecureSocketListener.run(SecureSocketListener.java:57)
            at weblogic.nodemanager.internal.GenericListener.startListener(GenericListener.java:16)
            at weblogic.nodemanager.NodeManager.startSecureSocketListener(NodeManager.java:461)
            at weblogic.nodemanager.NodeManager.init(NodeManager.java:305)
            at weblogic.nodemanager.NodeManager.run(NodeManager.java:511)
            at weblogic.NodeManager.main(NodeManager.java:31)
    Thanks,
    Eswar

    Hi,
    Did you find a solution to this? We are running into the same issue since upgrading to Weblogic 9.2.3 for WebCT Vista 8.0.4.
    Thanks,
    Ron

  • User-Defined Function and Context Manipulation

    Hi Mapping Gurus, I need your help.
    I have a user-defined function and one of my input parameter (c) is in a loop (EDI segment).  So one, if I execute my function I get:
    Exception:[java.lang.ArrayIndexOutOfBoundsException: 0]
    If I change the context or use the remove context node function it’s working but it’s always taking the first row in consideration since I'm using c[0] .  Here is the logic:
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[0]"'";
    So since c is an array [], I have tried different logic to get to the right row.
    1- I tried using another parameter (e) to pass a counter or an index to my function.  So each time it's looping, it's passing a new value to the function but I’m still getting the first row and I’m not to sure why?
    int G = Integer.parseInt(e[0]);  // e[] = My counter field
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
    2- I tried using a parameter stored in the container:
    String Num;
    Num = (String)getParameter(“counter”);
    if (Num == null)  G = 0;
    else
    G = Integer.parseInt(Num);
    G = G + 1;
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
    Num = "" + G;
    setParameter(e[0], Num);
    and I’m still getting the first one, look like it’s using a different container each time it’s looping so the Value is always the same?
    4- I created a new user-defined function with the container logic, then it’s working but I’m back to the same problem in my main function, it’s only looking at e[0] for my counter all the time.
    5- I tried using the Seeburger Java Variables and guess what in the main fonction, as new UDF,... and guess what, same result!
    So anybody out there that was able to get UDF's working into a multiple context scenario?
    Am I missing something?
    I will reward points and beer for any help!

    This is one of the text with passing a counter to the function to try to go to the right row in the array since I'm doing a remove context and I'm getting all the d_234's:
    public void ReadTable(String[] a,String[] b,String[] c,String[] d,String[] e,ResultList result,Container container){
    int G = Integer.parseInt(e[0]); // My counter
    String var;
    String DBTABLE = a[0];
    String lookUpField = d[0];
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
    Now this one was with the internal container logic:
    int G;
    String DBTABLE = a[0];
    String lookUpField = d[0];
    String Num;
    Num = (String)getParameter(e[0]);
    if (Num == null)  G = 0;
    else
    G = Integer.parseInt(Num);
    G = G + 1;
    Num = "" + G;
    setParameter(e[0], Num);
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
    And now with the Seeburger Variables:
    int G;
    try {
    VariableBean be=VariableFactory.getVariableInstance("");
    G = Integer.parseInt(String.valueOf(be.getStringVariable("yves")));
    } catch (Exception f) {
    throw new RuntimeException(f);
    String DBTABLE = a[0];
    String lookUpField = d[0];
    String WHERE_CLAUSE = "A"" = ""'"b[0]"'"" and B = ""'"c[G]"'";
    try {
    G = G + 1;
    Num = "" + G;
    VariableBean be=VariableFactory.getVariableInstance("");
    be.setStringVariable("yves",Num);
    catch (Exception f) {
    throw new RuntimeException(f);
    All 3 logics were returning always the first row or a counter of 1 if the logic is in the main ReadTable function.

  • Converting a delete statement using VPD policies and context

    Hello,
    I'm trying to convert a delete statement in a update statement using VPD policies and context.
    +/* Supose the user 'user1' already exists. This is an application user */+
    conn user1/pwd
    create table user1.test_a (
    id                number(4),
    description       varchar2(100),
    deleted           number(1)
    +);+
    alter table user1.test_a add constraint test_a_pk primary key (id);
    insert into user1.test_a (1, 'abc', 0);
    insert into user1.test_a (2, 'def', 0);
    commit;
    I'd like to convert each physical deletion into a logical deletion: statements like "delete from user1.test_a where id = 1" must be converted into "update user1.test_a set deleted = 1 where id = 1".
    I've found the following way: I will create a policy to avoid physical deletion. Additionally, the policy function should update the deletion flag too.
    conn user1/pwd
    +/* Create context package */+
    create or replace package user1.pkg_security_context is
    procedure p_set_ctx(
    i_test_a_id      in   user1.test_a.id   %type
    +);+
    end;
    +/+
    create or replace package body user1.pkg_security_context is
    procedure p_set_ctx (
    i_test_a_id      in   user1.test_a.id   %type
    +) is+
    begin
    dbms_session.set_context( 'user1_ctx', 'test_a_id', i_test_a_id );
    end;
    end;
    +/+
    show errors
    +/* Create trigger to set the context before deletion */+
    create or replace trigger user1.test_a_bef_trg
    before delete on user1.test_a
    for each row
    declare
    pragma autonomous_transaction;
    begin
    -- only commits the preceding update, not the delete that fired the trigger.
    commit;
    user1.pkg_security_context.p_set_ctx( :old.id );
    end;
    +/+
    show errors
    create context user1_ctx using user1.pkg_security_context;
    +/* Policy function */+
    create or replace function user1.f_policy_chk_dels (
    object_schema in   varchar2,
    object_name   in   varchar2
    +) return varchar2+
    is
    out_string                 varchar2(400)   default '1=2 ';
    +/*+
    * out_string is the return value.
    *  - 'WHERE 1=2' means 'nothing to access'
    begin
    if ( loc_logged_usr_authorized > 0 ) then
    +/*+
    * Set the flag deleted to 1
    update user1.test_a set deleted = 1 where id = sys_context( 'user1_ctx', 'test_a_id' );
    out_string := out_string || 'or 1=1 ';
    end if;
    return out_string;
    end;
    +/+
    show errors
    +/*+
    * Create policy
    begin
    dbms_rls.add_policy(
    object_schema   => 'user1'                   ,
    object_name     => 'test_a'                  ,
    policy_name     => 'policy_chk_dels'         ,
    function_schema => 'user1'                   , -- function schema
    policy_function => 'f_policy_chk_dels'       , -- policy function
    statement_types => 'DELETE'
    +);+
    end;
    +/+
    When I try to delete a record of the table test_a:
    conn user1/pwd
    SQL> delete from ilogdia.oplsimulaciones sim       where sim.id = 9999;
    +0 rows deleted+
    No rows has been deleted, but the update stmt does not work. That means, the "deleted" flag has not been updated.
    Any ideas?
    Thank you in advance.
    Marco A. Serrano
    Edited by: albrotar on Oct 15, 2012 8:42 AM
    Edited by: albrotar on Oct 15, 2012 8:42 AM
    Edited by: albrotar on Oct 15, 2012 8:43 AM

    The policy function is applied once per statement execution. The policy function executes first and the UPDATE statement, presumably, updates no rows because the context is not yet populated. The row-level populates the context (I'm assuming that your session can even see context values populated by an autonomous transaction-- I would guess it could but I'd have to test that) after the UPDATE statement is already complete. The COMMIT in the row-level trigger is also pointless-- it only applies to changes made by the current autonomous transaction, of which there are none-- it cannot apply to changes made in other autonomous transactions. Declaring the row-level trigger to use autonomous transactions doesn't seem to accomplish anything other than to open the question of whether the values set in the context by the autonomous transaction are visible in the caller's transaction.
    Even if this, somehow, did work, using autonomous transactions would be a very bad idea since Oracle is free to roll-back a partially executed statement (and the work done by its triggers) and re-execute it. Oracle does that with some regularity to maintain write consistency.
    Justin

  • Need help with XML response to refresh document with context and prompts

    I've been working with the Restful api for a few weeks now and have been able to figure out most of what I need to automate testing of our reports. However, one task that I have not been able to figure out is how to refresh a document that contains both a context and two prompts for dates.
    Here is what I have tried, and what the API responds with.
    1) I queried the API for this document's parameters using the following call after logging in -
    headers = {:accept=>'application/xml', :content_type=>'application/xml', :x_sap_logontoken=>@token}
    url = "http://our.url.net:6405/biprws/raylight/v1/documents/12345/parameters"
    RestClient.get(url, headers)
    The response from the API is:
    <parameters>
        <parameter dpId="DP0" type="context" optional="false">
            <id>0</id>
            <technicalName>cQuery 1</technicalName>
            <name>Select a context</name>
            <answer type="Text" constrained="true">
                <info cardinality="Single">
                    <lov partial="false">
                        <values>
                            <value id="CTX_1">LOAN</value>
                            <value id="CTX_9">LOAN_APPLICATION</value>
                        </values>
                    </lov>
                    <values>
                        <value id="CTX_1">LOAN</value>
                        <value id="CTX_9">LOAN_APPLICATION</value>
                    </values>
                    <previous>
                        <value id="CTX_9">LOAN_APPLICATION</value>
                    </previous>
                </info>
                <values>
                    <value id="CTX_9">LOAN_APPLICATION</value>
                </values>
            </answer>
        </parameter>
    </parameters>
    2) This tells me I need to supply a context, so I then replace my RestClient.get call with a RestClient.put call with the following payload:
    <parameters>
         <parameter>
                <id>0</id>
                <answer>
                      <values>
                            <value id=\"CTX_9\"/>
                      </values>
                </answer>
          </parameter>
    </parameters>
    3) This satisfies the context portion of the refresh. The API replies with the following response, telling me I need to answer two prompts -
    <parameters>
         <parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
              <id>1</id>
              <technicalName>psEnter value(s) for Start Date of Application Received Date</technicalName>
              <name>Enter value(s) for Start Date of Application Received Date</name>
               <answer type=\"DateTime\" constrained=\"false\">\
                    <info cardinality=\"Single\"/>
               </answer>
         </parameter>
         <parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
                <id>2</id>
                <technicalName>psEnter value for End Date of Application Received Date</technicalName>
                <name>Enter value for End Date of Application Received Date</name>\
                <answer type=\"DateTime\" constrained=\"false\">
                    <info cardinality=\"Single\"/>
                </answer>
          </parameter>
    </parameters>
    4) Here is where I am having problems. I have tried all kinds of permutations of the below payload/response body. All I ever get from the API is a 400 - BadResponse error.
    <parameters>
         <parameter>
              <id>0</id>
              <answer>
                   <values>
                        <value id=\"CTX_9\"/>
                   </values>
              </answer>
         </parameter>
    </parameters>
    <parameters>
         <parameter type=\"prompt\">
              <id > 1 </ id>
              <answer type=\"DateTime\">
                   <values>
                        <value>2012-06-11T09:50:54.000-04:00</value>
                   </values>
               </answer>
         </parameter>
         <parameter type=\"prompt\">
               <id > 2 </ id>
               <answer type=\"DateTime\">
                    <values>
                         <value>2014-07-11T09:50:54.967-04:00</value>
                    </values>
               </answer>
         </parameter>
    </parameters>
    I am not very good with XML and the terminology around it, and I haven't received much training around using the Restful API other than the SDK documentation. I have a feeling there is something very basic that Im missing here. What is the correct XML needed in the response body to properly refresh the document?

    If you are more confortable with JSON, Raylight supports it as well.
    Best regards,
    Anthony

Maybe you are looking for