Pass in another variable thru onFolioData()

This is my first time dealing with Adobe DPS and I am trying to pass another variable into the onFolioData function.
Right now my code looks like so:
var init_dps_api = function(productIDs, saleNumbers) {
    var onFolioData = function (data) {
        var len = data.length;
        // The library returns an array of folio descriptor objects.  Put them into a hash indexed by something more convenient (ie productId)
        for (var i = 0; i < len; i++) {
            folioDataHash[data[i].productId,data[i].saleNumber] = data[i];
        var folio;
        for (var j=0; j<productIDs.length; j++){
                folio = folioDataHash[productIDs[j],saleNumbers[j]];
                if (folio) {
                    //adobe.dps.store.getPreviewImage(productIDs[j], true, 768, 1024, onPreviewImage2(productIDs[j]));
                    adobe.dps.store.getPreviewImage(productIDs[j], true, 768, 1024, onPreviewImage(productIDs[j],saleNumbers[j]));
                else {
                    //console("The productId you have defined for purchase/download does not exist within your Fulfillment account");
    var onPreviewImage = function(productID,saleNumber) {     
        var s2= "";
        var folio2 = folioDataHash[productID,saleNumber];
In the above code you can see that I want to pass in the saleNumber, but it is breaking the page. Is there a way to do this? Can someone from the Adobe team please assist?
Reason for this is that from our jsp pages, we need to pass salenumbers for our Site Catalyst tracking, so I am grabbing the salenumber from the jsp page and passing it via the javascript api to trigger an Omniture function.
Thank you for your time and patience.
B
Message was edited by: BC_Sothebys

In the main jsp file, it is calling multiple publication ids from the cms. So let's say that on the page, there are 5 buckets. In each bucket, there are 5 publication ids. Each of the publication ids are being pushed into a publicationIDs array.
<script>
  publicationIDs.push('<%=publicationId%>');
</script>
This array then gets called in the api
var init_dps_api = function(productIDs) {
    var folioDataHash = {};
    var onFolioData = function (data) {
        var len = data.length;
        for (var i = 0; i < len; i++) {
            folioDataHash[data[i].productId] = data[i];
        var folio;
        for (var j=0; j<productIDs.length; j++){
                folio = folioDataHash[productIDs[j]];
                if (folio) {
                    adobe.dps.store.getPreviewImage(productIDs[j], true, 768, 1024, onPreviewImage(productIDs[j]));
                else {
                    console("The productId you have defined for purchase/download does not exist within your Fulfillment account");
    var onPreviewImage = function(productID) {     
        var s2= "";
        var node2 = "";
        var folio2 = folioDataHash[productID];
        if (!folio2) return;  // un-known folio...nothing to show.
        if(globalTab == 'featured') {
            node2 = document.getElementById(productID + "_publicationId_Holder_fc");
            if(isLoggedIn) {
                s2 += "<div class='buyButton' id='" + productID + "'>";
                if (folio2.state=='200') {
                    s2 +="Download";
                } else {
                    s2 += "View";
                s2 += "</div>";
                if (node2) {
                    node2.innerHTML = s2;
                    node2.onclick=function(){
                        buy(productID);
            } else {
                s2 += "<div class='buyButtonGreyed' id='" + productID + "'>";
                s2 += "Register to Download";
                s2 += "</div>";
                if (node2) {
                    node2.innerHTML = s2;
                    node2.onclick=function(){
                        showMsgBox1();
        if(globalTab == 'view-all') {
            node2 = document.getElementById(productID + "_publicationId_Holder_va");
            if(isLoggedIn) {
                s2 += "<div class='buyButton' id='" + productID + "'>";
                if (folio2.state=='200') {
                    s2 +="Download";
                } else {
                    s2 += "View";
                s2 += "</div>";
                if (node2) {
                    node2.innerHTML = s2;
                    node2.onclick=function(){
                        buy(productID);
            } else {
                s2 += "<div class='buyButtonGreyed' id='" + productID + "'>";
                s2 += "Register to Download";
                s2 += "</div>";
                if (node2) {
                    node2.innerHTML = s2;
                    node2.onclick=function(){
                        showMsgBox();
    var onLibraryUpdate = function () {
        adobe.dps.store.getFolioData(onFolioData);
        // Unregister for library updates
        unregisterUpdateLibraryHandler(); //commented out by Y.J.
    var registerUpdateLibraryHandler = function ()
      if (window.adobedpscontextloaded)
        // call into the updateLibrary API
        adobe.dps.store.registerLibraryUpdateCompleteHandler(onLibraryUpdate);
        adobe.dps.store.updateLibrary(); //this needs to be here, otherwise, no button shows up
      else {
          //console("Failed to find Javascript API");
    var unregisterUpdateLibraryHandler = function ()
      if (window.adobedpscontextloaded)
        // call into the updateLibrary API
        adobe.dps.store.unregisterLibraryUpdateCompleteHandler(onLibraryUpdate);
    registerUpdateLibraryHandler();
    var buy = function(productID) {
        var folio = folioDataHash[productID];
        if (folio==null) return;
        if (folio.state=='100') {
            adobe.dps.store.buyFolio(productID);
        }else {
            adobe.dps.store.viewFolio(productID);
    //showMsgBox brings up message box and black cover when user is not logged in
    function showMsgBox() {
        var overlay = $('#black-cover');
        var wrapper = $('#warning-mmsg');
        overlay.css({'display':'block'});
        wrapper.css({'display':'block'});
    //showMsgBox brings up message box and black cover when user is not logged in
    function showMsgBox1() {
        var overlay = $('#black-covers');
        var wrapper = $('#warning-msgs');
        overlay.css({'display':'block'});
        wrapper.css({'display':'block'});
     var consoleElement = document.getElementById("console");
     var console = function(s) {
         if (consoleElement) consoleElement.innerHTML += s + "<br/>";
} //END: init_dps_api function
This whole script works and in the storefront, all of the  5 buttons appear with the correct publication id in there buckets.
But now I want to be able to pass another variable, in this case saleNumbers, where I would do a second push:
<script>
     publicationIDs.push('<%=publicationId%>');
     saleNumbers.push('<//%=saleNumber%>'); // second push
</script>
and pass that into the init_dps_api function like so:
var init_dps_api = function(productIDs, saleNumbers) {
What I've done only printed the sale number for the first bucket, but I need it to print 5 different sale numbers for their respective buckets.
Thanks for your time and patience.

Similar Messages

  • Passing an APEX variable to another web page outside of APEX

    I need to pass an item variable from an APEX page to another web site outside of APEX. Does anyone know what syntax I would need to use? It needs to keep the session in tact.
    Thanks.
    Kelly

    Ah, as I read more closely ...   You say
    FIND_USER_IN_DB is defined as an application item.
    Application items get treated differently from Page Items.  They aren't on any page so there's nothing to directly tie them to a particular page operation. [You may have tried an obvious approach that doesn't work.]  Please check where you
    sets FIND_USER_IN_DB to the value in &P8_USERNAME.
    Does it say "Page Item" / "Item" there?   Check the selector?  Can you select an Application Item.  If memory serves, my (sad) experience is that you can list an Application Item here but it doesn't "work" and there's no warning that it's a problem -- except it doesn't work!  Application Items can't be given values this way.  Hey, it is what it is.  That's the way it doesn't work!
    So I believe you must "Submit" FIND_USER_IN_DB and then you can reference it on Page 11.  There must be several ways to do this.  I'll seaarch / ponder for a plain vanilla one.
    Howard
    (more)
    Well, maybe I have to take it back.   There is this documentation that suggests you can pass Application Items. http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/bldapp_item_app.htm#BCEHFDDJ   See Note in Paragraph 8.
    "Note: If you must set this item's value in session state using Ajax, then an Unrestricted protection level must be used for the item (for example in Dynamic Actions, Set Value, Page Items to Submit or Cascading LOVs, Page Items to Submit)."
    I'll try to run a test.  Still, the best solution for me still seems to assign the value of P8_USERNAME to FIND_USER_IN_DB and then submit the page which will plce the value in session.
    (more)  I was able to pass an Application Item if I set Session State Protection to Unrestricted.  Probably not a good idea!

  • Trying to pass and object variable to a method

    I have yet another question. I'm trying to display my output in succession using a next button. The button works and I get what I want using test results, however what I really want to do is pass it a variable instead of using a set number.
    I want to be able to pass the object variables myProduct, myOfficeSupplies, and maxNumber to method actionPerformed so they can be in-turn passed to the displayResults method which is called in the actionPerformed method. Since there is no direct call to actionPerformed because it is called within one of the built in methods, I can't tell it to receive and pass those variables. Is there a way to do it without having to pass them through the built-in methods?
    import javax.swing.JToolBar;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JScrollPane;
    import javax.swing.JPanel;
    import java.net.URL;
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    public class Panel extends JPanel implements ActionListener
         protected JTextArea myTextArea;
         protected String newline = "\n";
         static final private String FIRST = "first";
         static final private String PREVIOUS = "previous";
         static final private String NEXT = "next";
         public Panel( Product myProduct, OfficeSupplies myOfficeSupplies, int maxNumber )
                 super(new BorderLayout());
              int counter = 0;
                 //Create the toolbar.
                 JToolBar myToolBar = new JToolBar( "Still draggable" );
                 addButtons( myToolBar );
                 //Create the text area used for output.
                 myTextArea = new JTextArea( 450, 190 );
                 myTextArea.setEditable( false );
                 JScrollPane scrollPane = new JScrollPane( myTextArea );
                 //Lay out the main panel.
                 setPreferredSize(new Dimension( 450, 190 ));
                 add( myToolBar, BorderLayout.PAGE_START );
                 add( scrollPane, BorderLayout.CENTER );
              myTextArea.setText( packageData( myProduct, myOfficeSupplies, counter ) );
              setCounter( counter );
         } // End Constructor
         protected void addButtons( JToolBar myToolBar )
                 JButton myButton = null;
                 //first button
                 myButton = makeNavigationButton( FIRST, "Display first record", "First" );
                 myToolBar.add(myButton);
                 //second button
                 myButton = makeNavigationButton( PREVIOUS, "Display previous record", "Previous" );
                 myToolBar.add(myButton);
                 //third button
                 myButton = makeNavigationButton( NEXT, "Display next record", "Next" );
                 myToolBar.add(myButton);
         } //End method addButtons
         protected JButton makeNavigationButton( String actionCommand, String toolTipText, String altText )
                 //Create and initialize the button.
                 JButton myButton = new JButton();
                     myButton.setActionCommand( actionCommand );
                 myButton.setToolTipText( toolTipText );
                 myButton.addActionListener( this );
                   myButton.setText( altText );
                 return myButton;
         } // End makeNavigationButton method
             public void actionPerformed( ActionEvent e )
                 String cmd = e.getActionCommand();
                 // Handle each button.
              if (FIRST.equals(cmd))
              { // first button clicked
                          int counter = 0;
                   setCounter( counter );
                 else if (PREVIOUS.equals(cmd))
              { // second button clicked
                   counter = getCounter();
                      if ( counter == 0 )
                        counter = 5;  // 5 would be replaced with variable maxNumber
                        setCounter( counter );
                   else
                        counter = getCounter() - 1;
                        setCounter( counter );
              else if (NEXT.equals(cmd))
              { // third button clicked
                   counter = getCounter();
                   if ( counter == 5 )  // 5 would be replaced with variable maxNumber
                        counter = 0;
                        setCounter( counter );
                      else
                        counter = getCounter() + 1;
                        setCounter( counter );
                 displayResult( counter );
         } // End method actionPerformed
         private int counter;
         public void setCounter( int number ) // Declare setCounter method
              counter = number; // stores the counter
         } // End setCounter method
         public int getCounter()  // Declares getCounter method
              return counter;
         } // End method getCounter
         protected void displayResult( int counter )
              //Test statement
    //                 myTextArea.setText( String.format( "%d", counter ) );
              // How can I carry the myProduct and myOfficeSupplies variables into this method?
              myTextArea.setText( packageData( product, officeSupplies, counter ) );
                 myTextArea.setCaretPosition(myTextArea.getDocument().getLength());
             } // End method displayResult
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event dispatch thread.
         public void createAndShowGUI( Product myProduct, OfficeSupplies myOfficeSupplies, int maxNumber )
                 //Create and set up the window.
                 JFrame frame = new JFrame("Products");
                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 //Add content to the window.
                 frame.add(new Panel( myProduct, myOfficeSupplies, maxNumber ));
                 //Display the window.
                 frame.pack();
                 frame.setVisible( true );
             } // End method createAndShowGUI
         public void displayData( Product myProduct, OfficeSupplies myOfficeSupplies, int maxNumber )
              JTextArea myTextArea = new JTextArea(); // textarea to display output
              JFrame JFrame = new JFrame( "Products" );
              // For loop to display data array in a single Window
              for ( int counter = 0; counter < maxNumber; counter++ )  // Loop for displaying each product
                   myTextArea.append( packageData( myProduct, myOfficeSupplies, counter ) + "\n\n" );
                   JFrame.add( myTextArea ); // add textarea to JFrame
              } // End For Loop
              JScrollPane scrollPane = new JScrollPane( myTextArea ); //Creates the JScrollPane
              JFrame.setPreferredSize(new Dimension(350, 170)); // Sets the pane size
              JFrame.add(scrollPane, BorderLayout.CENTER); // adds scrollpane to JFrame
              JFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); // Sets program to exit on close
              JFrame.setSize( 350, 170 ); // set frame size
              JFrame.setVisible( true ); // display frame
         } // End method displayData
         public String packageData( Product myProduct, OfficeSupplies myOfficeSupplies, int counter ) // Method for formatting output
              return String.format( "%s: %d\n%s: %s\n%s: %s\n%s: %s\n%s: $%.2f\n%s: $%.2f\n%s: $%.2f\n%s: $%.2f",
              "Product Number", myOfficeSupplies.getProductNumber( counter ),
              "Product Name", myOfficeSupplies.getProductName( counter ),
              "Product Brand",myProduct.getProductBrand( counter ),
              "Number of Units in stock", myOfficeSupplies.getNumberUnits( counter ),
              "Price per Unit", myOfficeSupplies.getUnitPrice( counter ),
              "Total Value of Item in Stock is", myOfficeSupplies.getProductValue( counter ),
              "Restock charge for this product is", myProduct.restockingFee( myOfficeSupplies.getProductValue( counter ) ),
              "Total Value of Inventory plus restocking fee", myOfficeSupplies.getProductValue( counter )+
                   myProduct.restockingFee( myOfficeSupplies.getProductValue( counter ) ) );
         } // end method packageData
    } //End Class Panel

    multarnc wrote:
    My instructor has not been very forthcoming with assistance to her students leaving us to figure it out on our own.Aren't they all the same! Makes one wonder why they are called instructors. <sarcasm/>
    Of course it's highly likely that enough information was imparted for any sincere, reasonably intelligent student to actually figure it out, and learn the subject in the process.
    And if everything were spoonfed, how would one grade the performance of the students? Have them recite from memory
    public class HelloWorld left-brace
    indent public static void main left-parenthesis String left-bracket right-bracket args right-parenthesis left-brace
    And everywhere that Mary went
    The lamb was sure to go
    db

  • Using a variable inside another variable

    I'm trying to use one two variable in a package with one variable feeding its value to another variable as follows:
    Variable 1 = Count
    Variable 2 = File_Name
    Variable 1 counts up from 1;I would like to use this value as an input to Variable 2 as follows:
    SELECT LOAD_FILENAME FROM DIMSTATS_FILENAME WHERE (SELECT ROW_NUMBER() OVER (Order by FILE_ID) AS RN FROM DIMSTATS_FILENAME) = #DIMSTATS_TEST.count.
    How ever I am getting the following Error :
    +ODI-1228: Task File_Name (Variable) fails on the target  connection DDBSTAGE.
    Caused By: java.sql.SQLException: [FMWGEN][SQLServer JDBC Driver][SQLServer]The multi-part identifier "#DIMSTATS_TEST.count" could not be bound.+
    I have also noticed that the value of Variable 1 is not being passed to the Select statement above through SQLServer Profiler. If I hard-code the value of #DIMSTATS_TEST.count (Variable1) the query is successful.
    How can I get the value of Variable 1 to be passed to Variable 2?
    Could someone please help
    Thanks

    You did not mentioned how you are using those variable .
    You need to have these variable inside a package .
    It will be like
    Variable 1 (Refresh) -------OK-------->Variable 2(Refresh) ------------OK-----> Some other operation .
    Thanks,
    Sutirtha

  • How to pass a shell variable to rman scripts

    I want to backup datafile to different directory
    depending on the current time,and I can do this to
    pass a shell variable to rman scripts,and this
    variable will used as part of format ,like this:
    backup incremental level=0
    tag rman_inc0_bck
    filesperset 5
    format '$(DIR)/rman_fulldb_%u_%s_%p_%d'
    (database include current controlfile)
    and $(DIR) is shell variable ,but rman will not
    recognize this ,how to achieve this?

    You could send your script to rman thru a pipe | or <<
    echo "backup incremental level=0
    tag rman_inc0_bck
    filesperset 5
    format '$(DIR)/rman_fulldb_%u_%s_%p_%d'
    (database include current controlfile);" | rman target /You could also create a "temp script" and then use it from rman with cmdfile
    sed "s,XXXDIR,$(DIR)," yourtemplate > /tmp/rmanscript.$$
    rman target / cmdfile /tmp/rmanscript.$$
    rm /tmp/rmanscript.$$

  • How to pass Applet form variables without showing it on top ?

    I am running one applet with some form variables. After submit I want to pass those to .asp file to store into database.
    If I use URL method then all are getting displayed on URL location of browser which I do not want. I want to pass many form variables to another .asp file, so it may not be good also.
    What is the best way of doing it ? Need urgent help about it.

    Well If you create a POST request instead as a GET request the variables will not show up in the URL.
    On tips how to do that you can either check out this thread:
    http://forums.java.sun.com/thread.jsp?forum=31&thread=56388
    or one of these:
    http://search.java.sun.com/Search/java?qt=applet+GET+POST+variables&col=javafrm&rf=0
    Sjur

  • Want to pass Applet form variables without showing it on URL Location

    I am running one applet with some form variables. After submit I want to pass those to .asp file to store into database.
    If I use URL method then all are getting displayed on URL location of browser which I do not want. I want to pass many form variables to another .asp file, so it may not be good also.
    What is the best way of doing it ? Need urgent help about it.

    I tried following code using URL Connection Object, Code is running fine in IE and Appletviewer, but not running in Netscape.
    Following is the code:
    There is an applet with form. After Submit button, The form variables will be send to ASP script where I am storing it into database. In Netscape the server connection is made (blank record is getting created) but data is not passed.
    public void actionPerformed(ActionEvent event) {
    try{
    ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);
    PrintWriter out = new PrintWriter(byteStream, true);
    String postData = "firstName=manisha";
    out.print(postData);
    out.flush();
    URL dataURL = new URL("http://manisha/appletexamples/confirm-px.asp");
    URLConnection connection = dataURL.openConnection();
    connection.setUseCaches(false);
    connection.setDoOutput(true);
    String lengthString = String.valueOf(byteStream.size());
    connection.setRequestProperty ("Content-Length", lengthString);
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    byteStream.writeTo(connection.getOutputStream());
    BufferedReader in =
    new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line;
    while((line = in.readLine()) != null) {
    System.out.println("line: " + line);
         } //while
         in.close();
    } //try
    catch(Exception e){}//catch
    }//action performed
    My ASP Code
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open("DATABASE=phptestdb;DSN=phptestdsn")
    %>
    <HTML>
    <HEAD>
    <TITLE> A Sample Program </TITLE>
    </HEAD>
    <BODY>
    <%DIM fname
    fname = ""
    fname = Request("firstName")
    response.write ("fname : " & fname)
    qrystr1 = "insert into applettesttable (fname) values ('" & fname & "')"
    conn.Execute qrystr1
    conn.Close
    Set conn = Nothing
    %>
    </BODY>
    </HTML>

  • Passing ICM peripheral variables from Agent to IVR

    Hello,
    I need to know if this is possible since i can't manage to make it work.
    The call-flow is :
    VG->CVP->ICM->Agent
    While the call is in the ICM script , i saved the ICM peripheral variable 4 as the language the customer chooses at the beginning of the call.
    I pass this variable to the Agent (we are using CAD 8.5) and i can see it in the Agent Layout.
    What i need now is to give the Agent the ability to send the call back to any IVR menu (already managed to make that works using single step transfer)
    with the ability to pass the peripheral variable 4 to script so that i can use it as the locale instaed of letting the customer chooses the language again.
    Is this possible ?
    Amer

    David ,
    Here is the assigment from the script for the local to ICM peripheral variable 4
    Then when the call arrived to the agent , i can see the ICM peripheral variable 4 as the value of the language (correctly)
    when i use a task (single step transfer) to another script , at the begining i assign the call.user.microapp.locale to PV4 and then i try to play wav file (failure)
    see below

  • How do I enable Data Management if Passing an extra variable to PHP script?

    Im trying to use dynamic SQL tables on my PHP server so I need to pass the table name to the PHP script.  I don't understand why the Data Management system that sets up CRUD won't allow this extra parameter.  It says it can only have one input: item. I can get all records, but when I try to create, update, or delete I get an error.
    Or is there another way I can pass the tablename variable to the php file before I call any functions?
    Thanks!

    I use it but does not work for me.
    It does not integrates.
    You can tag on url value pairs onto your php function call such as:
    http://www.yourpath.php?tablename=tablenamesears
    You can then extract tablename, by using get in your php script:
    $tn = $_GET['tablename'];
    This $tn can be used anywhere in your php script as a dynamic value for table targeting.
    You can pass as many value pairs as you wish, every preceding pair must be in the form:
    http://www.yourpath.php?tablename=tablename&action=update&author=admin
    Hope it helps

  • Scripting - Passing and Enterprise variable from script to script

    Hello all,
    We are using UCCX 7.0_SR5
    I am looking to be able to pass a captured variable from one script to another.
    We use a message in queue where a caller waiting in queue can choose to leave a message and then that message is queued back into the sytem for the next available agent. When that agent recieves the message in queue they basically call back out to the customer leaving the message.
    We capture a variable in the first script when they decide to leave a message. The variable holds the call back number that they enter into the system. There is a second script that presents these message in queue calls to the agents. We would like to pass that variable that holds the number enterend by the customer to the second script so that that number appears on CAD in the enterprise data fields. The reason behind this is so the agent has a number to call back in the event they don't reach anyone when the system calls back out and the message left by the customer does not contain a call back number.
    How can I pass that variable from one script to another so it can be presented in CAD for the agents?
    Thanks for any help and let me know if you need any further information.

    You would use a "Get Call Contact Info" step to set your callerID variable, where the "Calling Number" attribute is set to your callerID variable.

  • How to get value od one variable baesd on another variable

    Hi Gurus,
         Is this thing possible?My problem is  i have one variable on "0calmonth2" based on this variable i want to populated the values in another object (0calquarter).i.e.
    If i select " Jan or Feb or Mar" it should populate 1  in 0calquarter similarly, for other month

    Hello Deepak
    Try a function module like this:
    FUNCTION Z_YOUR_FM.
    ""Interfase local
    *"  IMPORTING
    *"     VALUE(I_AREA) TYPE  UPC_Y_AREA
    *"     VALUE(I_VARIABLE) TYPE  UPC_Y_VARIABLE
    *"     VALUE(I_CHANM) TYPE  UPC_Y_CHANM OPTIONAL
    *"     VALUE(ITO_CHANM) TYPE  UPC_YTO_CHA
    *"  EXPORTING
    *"     REFERENCE(ETO_CHARSEL) TYPE  UPC_YTO_CHARSEL
    *"  EXCEPTIONS
    *"      FAILED
    clear export table
      CLEAR eto_charsel.
      data: i TYPE i value 1,
            ls_charsel TYPE upc_ys_charsel,
            l_periv type periv value 'K1',
            l_calmonth2 type UMC_Y_ICHAVAL,
            l_buffer_call TYPE boole-boole VALUE ' ',
            l_subrc LIKE sy-subrc,
            ls_return LIKE bapiret2,
            l_type LIKE upc_var-vartype,
            lto_varsel_all TYPE upc_yto_charsel,
            lto_varsel TYPE upc_yto_charsel,
            lto_chanm TYPE upc_yto_cha,
            wa_varsel like line of lto_varsel,
            l_quarter(1),
            l_quarterc(5).
    Read value of CALMONTH2 variable
      CALL FUNCTION 'Z_VARIABLE_GET_DETAIL'
        EXPORTING
          i_area         = <YOUR PLANNING AREA>
          i_variable     = <YOUR CALMONTH2 VARIABLE>
          i_buffer       = l_buffer_call
        IMPORTING
          e_subrc        = l_subrc
          es_return      = ls_return
          e_type         = l_type
          eto_varsel_all = lto_varsel_all
          eto_varsel     = lto_varsel
          eto_chanm      = lto_chanm.
      IF l_subrc eq 0.
        loop at lto_varsel into wa_varsel.
          move wa_varsel-low to l_calmonth2.
        endloop.
      ENDIF.
    calculate quarter
      CASE l_calmonth2.
        WHEN '01' OR '02' OR '03'.
          l_quarter = '1'.
        WHEN '04' OR '05' OR '06'.
          l_quarter = '2'.
        WHEN '07' OR '08' OR '09'.
          l_quarter = '3'.
        WHEN '10' OR '11' OR '12'.
          l_quarter = '4'.
      ENDCASE.
    passing QUARTER to variable value
      CLEAR ls_charsel.
      ls_charsel-CHANM = I_CHANM.
      ls_charsel-SEQNO = i.
      ls_charsel-sign  = 'I'.
      ls_charsel-opt   = 'EQ'.
      ls_charsel-low   = l_quarter.
      INSERT ls_charsel INTO TABLE eto_charsel.
      add 1 to i.
    ENDFUNCTION.
    Hope this helps...
    regards,
    Ibrahim.

  • Passing the sh variable value to input of  to Pl/SQL Procedure

    Hi All,
    My doubt is how can I pass the sh variable (.i.e file name stored in sh variable called($F)) as a input of below mention procedure (YODEL_XL_INS_SDG_COMMER_PROD)
    for F in *.dat; do
    echo $F
    #sqlldr apps/apps control=$CONTROL data=$F
    # Below Part is used for Add the file name into table
    cat $CONTROL| sed "s/:FILE/$F/g" > $F.ctl
    sqlldr apps/apps control=$F.ctl log=$F.log bad=$F.bad discard=$DISCARD data=$F
    sqlplus -s apps/apps << EOF
    spool Yodel_xl_om_inven_items_pkg.txt
    set serveroutput on;
    DECLARE
    X_Error_Code VARCHAR2(1000);
    X_Error_Message VARCHAR2(1000);
    X_Status VARCHAR2(1000);
    BEGIN
         YODEL_XL_INS_SDG_COMMER_PROD($F,'SDG',X_Status,X_Error_Code,X_Error_Message);
    END;
    SHOW ERRORS;
    spool off;
    exit
    EOFDG_COMMER_PROD($F,'SDG',X_Status,X_Error_Code,X_Error_Message);
    If i'm passing directly then getting below error.
    YODEL_XL_INS_SDG_COMMER_PROD(SDG_Testing_produsts3.dat,'SDG',X_Status,X_Error_Code,X_Error_Message);
    ERROR at line 8:
    ORA-06550: line 8, column 66:
    PLS-00201: identifier 'SDG_Testing_produsts3.dat' must be declared
    ORA-06550: line 8, column 2:
    PL/SQL: Statement ignored
    No errors.
    Could you please help me to resolve this.
    Edited by: user9077611 on 30-Aug-2012 10:11

    user9077611 wrote:
    Hi All,
    My doubt is how can I pass the sh variable (.i.e file name stored in sh variable called($F)) as a input of below mention procedure (YODEL_XL_INS_SDG_COMMER_PROD)
    for F in *.dat; do
    echo $F
    #sqlldr apps/apps control=$CONTROL data=$F
    # Below Part is used for Add the file name into table
    cat $CONTROL| sed "s/:FILE/$F/g" > $F.ctl
    sqlldr apps/apps control=$F.ctl log=$F.log bad=$F.bad discard=$DISCARD data=$F
    sqlplus -s apps/apps << EOF
    spool Yodel_xl_om_inven_items_pkg.txt
    set serveroutput on;
    DECLARE
    X_Error_Code VARCHAR2(1000);
    X_Error_Message VARCHAR2(1000);
    X_Status VARCHAR2(1000);
    BEGIN
         YODEL_XL_INS_SDG_COMMER_PROD($F,'SDG',X_Status,X_Error_Code,X_Error_Message);
    END;
    SHOW ERRORS;
    spool off;
    exit
    EOFDG_COMMER_PROD($F,'SDG',X_Status,X_Error_Code,X_Error_Message);
    If i'm passing directly then getting below error.
    YODEL_XL_INS_SDG_COMMER_PROD(SDG_Testing_produsts3.dat,'SDG',X_Status,X_Error_Code,X_Error_Message);
    ERROR at line 8:
    ORA-06550: line 8, column 66:
    PLS-00201: identifier 'SDG_Testing_produsts3.dat' must be declared
    ORA-06550: line 8, column 2:
    PL/SQL: Statement ignored
    No errors.
    Could you please help me to resolve this.
    Edited by: user9077611 on 30-Aug-2012 10:11You know that strings should be enclosed in single quote marks.
    Right?

  • How to use one variable as a default value for another variable?

    Hi Experts,
    Is it possible to use one variable as a default value for another variable?
    For example:
    Variable 1 = current calendar year month
    Variable 2 = mandatory input ready variable for calendar year month
    I want to use variable 1 as default value for variable 2, but also have the ability to change the month if required.
    Thanks!
    Kathryn

    u can use replacement path variable
    in that case u can replace the values of 1 variable with the another variable...
    but  u cannot do this setting
    u cannot make variable 2 as mandatory
    u cannot enter value for variable 2
    because by default it will take the value of variable 1
    u have to make follow settings
    variable 2
    name , technical name
    processing by = replacement path
    infoobject = ocalmonth
    next tab
    replaced by another variable
    variable name
    offset start , offset lenght
    save and hit okey

  • Replacement Path Variable with Another Variable

    Hi,
    I am currently trying to create a report that would need me to have the same values for different characteristics (e.g. clearing date, posting date, net due date). I have seen that there is a way in the replacement path variable that would replace its value with another variable that is ready for input. I also looked into SAP help but I can't seem to figure out on how to do it specifically. Does anyone know a step-by-step process on how to do this? How does this work?
    Thank you in advance!

    take an e.g.
    u have characteristic say ch1
    u want to restrict it with replacement path variable
    first of all create a variable var1
    click what it is based upon for e.g. 0calday, 0material etc.
    make it user entry variable
    select single or multiple entry
    make it mandatory
    save it and hit okey
    click on ch1
    right click and say restrict
    in new window create a new variable
    give its name and technical name
    processing path is replacement path
    go to next tab of replacement path
    select several ooptions
    replace variable with another variable
    select a variable called var1
    change the offset length and offset start with different parameters.
    hit okey
    this way u have restricted ch1 with replacement path variable var1
    now when u run report u have to enter value of var1
    which will then further feeded to ch1
    this way u can create replacement path variables at lots of instances and then u can always feed the value from var1 at different time
    make sure as this ur requirement is date
    try to use 0calday as reference infoobject all the times....

  • How to use the value of a variable to set another variable

    Hello Experts,
    Is it possible to access the value of variable set by the user and set the default value of another variable using the user entered value for the first variable? Example:
    Date variable
    Week variable
    Month variable
    User enters one of those and the other two are automatically prefilled with the correct values?
    Thanks
    Rado

    Hi Rado,
    Gothrough following code
    Which reads year from user input and converts it to factory calendar week , following which you should able to convert user inputs to required parameters.
    DATA:  v_year1 TYPE i,
            v_int   TYPE i,
            v_week1 TYPE kweek,
            v_qurt  TYPE i,
            v_perd  TYPE /bi0/oifiscper,
            v_iweek TYPE i,
            v_periv TYPE periv VALUE 'Z4'.
    DATA : v_vweeks  TYPE /bi0/oicalweek,
            v_vperd   TYPE /bi0/oifiscper,
            v_vperiv  TYPE /bi0/oifiscvarnt VALUE 'Z4'.
    DATA : vit_weeks LIKE /bi0/scalweek OCCURS 0 WITH HEADER LINE.
    DATA : v_perd1   TYPE umc_y_fiscper,
            v_weeks   TYPE umc_ys_dimvals,
            v_pweeks  TYPE i.
    CASE i_vnam.
       WHEN 'WPIYWEEK'.                "Variable name of char. in Bex
    *Check for Step 2 (After user gives inputs on selection screen)
         CHECK i_step = c_after.                                "Step:2
         CLEAR :  v_year1,
                  v_week1,
                  v_iweek.
    *Read the value of variable which used has entered on sel. screen
         READ TABLE i_t_var_range INTO wa_var_range
                                     WITH KEY vnam = 'WPIFYEAR'.
         v_year1 = wa_var_range-low.
         CALL FUNCTION 'TIME_GET_LAST_WEEK'
           EXPORTING
             if_year     = v_year1
           IMPORTING
             ef_week     = v_week1
           EXCEPTIONS
             fatal_error = 1
             OTHERS      = 2.
         IF sy-subrc <> 0.
    *           MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         ENDIF.
    *Get the no. of week from YYYYWW format
         v_iweek = v_week1+4(2).
         l_s_range-low  = v_iweek.
         l_s_range-sign = c_include.
         l_s_range-opt  = c_equal.
         APPEND l_s_range TO e_t_range.  "This is the output structure in which u have to add the result
    Endcase.
    Hope that helps.
    Regards
    Mr Kapadia
    Assigning points is the way to say thanks in SDN.

Maybe you are looking for