Loop JCO.Table row

public Reservation makeReservation() throws CustomException{
          Reservation outgoingRes = new InvReservation();
               JCO.Function function = null;
          JCO.Client client = null;
                    String functionName="ZMM_OSB_RESERVATION";
          try{
               function = con.createFunction(functionName);
               client = JCO.getClient(con.getConnectionPool());
               System.out.println("AFTER CREATEFUNCTION:" + function );
               if (function != null) {
                     JCO.ParameterList list = function.getImportParameterList();
                     list.setValue(this.getMATNR(), "MATNR");
                     list.setValue(this.getMENGE(), "MENGE");
                                         list.setValue(this.getSERNR(), "SERNR");
                     list.setValue(this.getWERKS(), "WERKS");
                     list.setValue(this.getLGORT(), "LGORT");
                     list.setValue(this.getKOSTL(), "KOSTL");
                     list.setValue(this.getGSBER(), "GSBER");
                     System.out.println("after set successful");
                     client.execute(function);     
                     int  count= function.getExportParameterList().getFieldCount();
                    JCO.Field ZSUBRCField=function.getExportParameterList().getField("ZSUBRC");
                    JCO.Field ZEMSGField=function.getExportParameterList().getField("ZEMSG");
                     for(int i=0; i<count; i++) {
                    //for(JCO.FieldIterator e = returnStructure.fields(); e.hasMoreElements(); ) {
                       if(ZSUBRCField.getName().equals("ZSUBRC")){
                              outgoingRes.setZSUBRC(ZSUBRCField.getString()); 
                         }else if(ZEMSGField.getName().equals("ZEMSG")){
                              outgoingRes.setZEMSG(ZEMSGField.getString()); 
                        // System.out.println(RSNUMField.getName() + ":t" + RSNUMField.getString());
                    System.out.println(ZSUBRCField.getName() + ":t" + ZSUBRCField.getString());
                    System.out.println(ZEMSGField.getName() + ":t" + ZEMSGField.getString());
                     JCO.Table returnStructure=function.getTableParameterList().getTable("RETURN");
                     //JCO.Structure returnStructure = function.getExportParameterList().getStructure("RETURN");
       //---------how to loop table table row------
          //loop columns           
                    for(JCO.FieldIterator e = returnStructure.fields(); e.hasMoreElements(); ) {
                         JCO.Field field = e.nextField();
                         if(field.getName().equals("RSNUM")){
                              outgoingRes.setRSNUM(field.getString());
                         }else if(field.getName().equals("MATNR")){
                              outgoingRes.setMATNR(field.getString()); 
                         }else if(field.getName().equals("SERNR")){
                              outgoingRes.setSERNR(field.getString());
                         }else if(field.getName().equals("MENGE")){
                              outgoingRes.setMENGE(java.lang.Double.parseDouble(field.getString())); 
                         }else if(field.getName().equals("ZSUBRC")){
                              outgoingRes.setZSUBRC(field.getString()); 
                         }else if(field.getName().equals("ZEMSG")){
                              outgoingRes.setZEMSG(field.getString()); 
                         System.out.println("CHECK OUTPUT:" +field.getName() + ":t" + field.getString());
                    System.out.println("all ok");
                    //String currentDir = System.getProperty("user.dir");
                    //props.load(this.getClass().getClassLoader().getResourceAsStream("res/path.properties"));
          }catch(Exception ex){
               System.out.println("Caught an exception: n" + ex);
               throw new CustomException(ex);
          }finally{
               if (client != null) {
                    System.out.println("Connection Closed");
                    JCO.releaseClient(client);
                    //throw new CustomException("ex");
          return outgoingRes;
i need to loop to JCO.Table
Message was edited by:
        yzme yzme
Message was edited by:
        yzme yzme

Start by combining all those queries into 1 query and join
the applicable tables. If you don't know how to do that, I have
heard good things about the book, "Teach Yourself SQL in 10
Minutes" by Ben Forta.

Similar Messages

  • Delete internal table rows without using loop statement

    i have an internal table which consists of 100 records.
    i need to keep only first 5 records.
    without using the loop statement i need to delete the rest of the records. how can we achieve this result.
    i.e.  delete itab1 where  "recordno"  > 5.
    regards.
    ZG

    Hi,
    Delete itab [FROM idx1] [TO idx2] {Where (log_exp)]
    To delete several lines at once, you have to specify at least one of the additions FROM, TO, or WHERE. You can only use the additions FROM and TO with standard tables and sorted tables.
    Delete itab [FROM idx1]
    If you specify FROM, all the table rows from the table index idx1 onwards are included.
    Delete itab [TO idx2]
    If you specify TO, all the table rows from the table index idx2 onwards are included.
    PARAMETERS: p_carrid TYPE sflight-carrid,
                p_connid TYPE sflight-connid.
    DATA: BEGIN OF seats,
            fldate    TYPE sflight-fldate,
            seatsocc  TYPE sflight-seatsocc,
            seatsmax  TYPE sflight-seatsmax,
            seatsfree TYPE sflight-seatsocc,
          END OF seats.
    DATA seats_tab LIKE STANDARD TABLE OF seats.
    SELECT fldate seatsocc seatsmax
           FROM sflight
           INTO TABLE seats_tab
           WHERE carrid = p_carrid AND
                 connid = p_connid.
    LOOP AT seats_tab INTO seats.
      seats-seatsfree = seats-seatsmax - seats-seatsocc.
      MODIFY seats_tab INDEX sy-tabix FROM seats.
    ENDLOOP.
    ENDLOOP.
    SORT seats_tab BY seatsfree DESCENDING.
    DELETE seats_tab FROM 5.
    Thanks & Regards,
    ShreeMohan
    Edited by: ShreeMohan Pugalia on Jul 21, 2009 4:28 PM

  • Loop through table's rows

    Hi folks,
    I have a table with multiple rows which each one of them contains one dropdown list.
    In my code I want to loop through this table rows and check each dropdown list's selected-item.
    How can I do this in code(JavaScript).
    Thank you,
    Yair

    Check this thread,
    it has solutions for JavaScript ind FormCalc.
    http://forums.adobe.com/message/3345384#3345384

  • Fill JCO.Table with Model from TableView

    Hi all,
    i need to fill a JCO.Table to save some data in a BAPI. I already have the data in form of a DefaulTableViewModel.
    Is there a simple way to fill the table with this data, or do I have to loop through the model and fill the table row by row?
    Kind regards
    Francisco

    Hi Francisco,
    there is no method which does it for you. I'm not that experienced in this field, but I think it seems hard to create the correct metadata from a HTMLB TableViewModel (for example the data field internal length as well as field types).
    Also have a look here: JCO.table creation...
    As you may have realized, the other way round - having a JCO.Table, creating a TableViewModel - works via HTMLB JCOTableViewModel.
    Hope it helps
    Detlev

  • How to set  JCO.Table as input parameter

    RunTest.java
    Reservation reservation=new InvReservation();
              reservation.setRSNUM("0001");
              reservation.setMATNR("cellphone");
              reservation.setMENGE(1.0);
              reservation.setLGORT("MAINWH");
              reservation.setWERKS("HQ");
              reservation.setSERNR("AP");
              reservation.setVBELN("SD");
              try{
              Collection col=reservation.confirmReservation();
              for(Iterator it=col.iterator();it.hasNext();){
                   InvReservation invRes=(InvReservation)it.next();
                   System.out.println(invRes.getRSNUM()+"  "+invRes.getMBLNR()+"  "+invRes.getMATNR() +" "
                              +invRes.getMENGE()+" " +invRes.getSERNR()+"  " +invRes.getDMBTR() +"  "
                              +invRes.getZSUBRC()+"  "+invRes.getZEMSG());
              }catch(Exception ex){
                   System.out.println("main: " +ex );
    Reservation.java
    public Collection confirmReservation() throws CustomException{
              Reservation outgoingRes = new InvReservation();
              Collection col=new ArrayList();
                   JCO.Function function = null;
                   JCO.Client client = null;
                   String functionName = "ZMM_OSB_CONFIRM_RESERVATION";
                   try{
                        function = con.createFunction(functionName);
                        client = JCO.getClient(con.getConnectionPool());
                                            if (function != null) {
                             Table codes=function.getTableParameterList().getTable("ZOSB");
              int j=codes.getNumRows();  //it did not enter the for loop
                             for(int i=0;i<codes.getNumRows();i++){
                                  Reservation incomingRes1=new InvReservation();
                                  codes.setRow(i);
                                  incomingRes1.setRSNUM(codes.getString("RSNUM"));
                                  incomingRes1.setMATNR(codes.getString("MATNR"));
                                  incomingRes1.setMENGE(codes.getDouble("MENGE"));
                                  incomingRes1.setLGORT(codes.getString("LGORT"));
                                  incomingRes1.setWERKS(codes.getString("WERKS"));
                                  incomingRes1.setSERNR(codes.getString("SERNR"));
                                  incomingRes1.setVBELN(codes.getString("VBELN"));
                                  col.add(incomingRes1);
                                   System.out.println("RSNUM:" +codes.getString("RSNUM") + 't' +
                                        "MATNR:"+ codes.getString("MATNR") + 't' +
                                        "MENGE:" +codes.getDouble("MENGE") + 't' +
                                        "LGORT:" +codes.getString("LGORT") + 't' +
                                        "WERKS:" +codes.getString("WERKS") + 't' +
                                        "SERNR:" +codes.getString("SERNR") + 't' +
                                        "VBELN:" +codes.getString("VBELN"));
                              System.out.println("after set successful");
                              client.execute(function);     
                              int  count= function.getExportParameterList().getFieldCount();
                             JCO.Field ZSUBRCField=function.getExportParameterList().getField("ZSUBRC");
                             JCO.Field ZEMSGField=function.getExportParameterList().getField("ZEMSG");
                              for(int i=0; i<count; i++) {
                                if(ZSUBRCField.getName().equals("ZSUBRC")){
                                       outgoingRes.setZSUBRC(ZSUBRCField.getString()); 
                                  }else if(ZEMSGField.getName().equals("ZEMSG")){
                                       outgoingRes.setZEMSG(ZEMSGField.getString()); 
                             System.out.println(ZSUBRCField.getName() + ":t" + ZSUBRCField.getString());
                             System.out.println(ZEMSGField.getName() + ":t" + ZEMSGField.getString());
                              Table excodes = function.getTableParameterList().getTable("ZOSBMSEG");
                              for(int i=0;i<excodes.getNumRows();i++){
                                   Reservation outgoingRes1 = new InvReservation();
                                   excodes.setRow(i);
                                   outgoingRes1.setRSNUM(excodes.getString("RSNUM"));
                                   outgoingRes1.setMBLNR(excodes.getString("MBLNR"));
                                   outgoingRes1.setMATNR(excodes.getString("MATNR"));                              
                                   outgoingRes1.setMENGE(excodes.getDouble("MENGE"));
                                   outgoingRes1.setSERNR(excodes.getString("SERNR"));
                                   outgoingRes1.setDMBTR(excodes.getDouble("DMBTR"));
                                   outgoingRes1.setZSUBRC(ZSUBRCField.getString());
                                   outgoingRes1.setZEMSG(ZEMSGField.getString());
                                   col.add(outgoingRes1);
                                   System.out.println("RSNUM:" +excodes.getString("RSNUM") + 't' +
                                              "MBLNR:" +excodes.getString("MBLNR") + 't' +
                                        "MATNR:" +excodes.getString("MATNR") + 't' +
                                        "MENGE:" +excodes.getDouble("MENGE")+ 't' +
                                        "SERNR:" +excodes.getString("SERNR") + 't' +
                                        "MENGE:" +excodes.getDouble("DMBTR") + 't' +
                                        "ZSUBRC:" +ZSUBRCField.getString() + 't' +
                                        "ZEMSG:" +ZEMSGField.getString());
                             System.out.println("all ok");
                   }catch(Exception ex){
                        System.out.println("Caught an exception: n" + ex);
                        throw new CustomException(ex);
                   }finally{
                        if (client != null) {
                             System.out.println("Connection Closed");
                             JCO.releaseClient(client);
                   return col;
    everytime , when i debug, i found that it didnot enter the for loop and the j value always equals =0
    int j=codes.getNumRows();
    and always come up with this
    JCO_ERROR_RESOURCE: Trying to access row values in a table which does not have any rows yet
    Result:
    AFTER CREATEFUNCTION:Name:   ZMM_OSB_CONFIRM_RESERVATION
    Input: 
    null
    Output:
    | PARAMETERS 'OUTPUT'
    ZEMSG
    ZSUBRC
    01234567890123456789012345678901234567890123456789
    0   1
    as stated the input is null...i dunno why i cant set the input table parameter
    Message was edited by:
            yzme yzme
    Message was edited by:
            yzme yzme
    Message was edited by:
            yzme yzme

    new code
    public Collection confirmReservation() throws CustomException{
              // TODO Auto-generated method stub
              Reservation outgoingRes = new InvReservation();
              Collection col=new ArrayList();
                   JCO.Function function = null;
                   JCO.Client client = null;
                   String functionName = "ZMM__CONFIRM_RESERVATION";
                   try{
                        function = con.createFunction(functionName);
                        client = JCO.getClient(con.getConnectionPool());
                        System.out.println("AFTER CREATEFUNCTION:" + function );
                        if (function != null) {
                             JCO.ParameterList tabInput = function.getTableParameterList();
                             JCO.Table inputTable = tabInput.getTable("ZOSBIMSEG");
                             inputTable.appendRow();
                             System.out.println("checking table input:" +this.getRSNUM()+"  " +this.getMATNR()+ ""
                                                 +this.getMENGE()+" " +this.getLGORT()+" " +this.getWERKS() +" "
                                                 +this.getSERNR()+" " +this.getVBELN());
                                                      inputTable.setValue(this.getRSNUM(),"RSNUM");
                             inputTable.setValue(this.getMATNR(),"MATNR");
                             inputTable.setValue(this.getMENGE(),"MENGE");
                             inputTable.setValue(this.getLGORT(),"LGORT");
                             inputTable.setValue(this.getWERKS(),"WERKS");
                             inputTable.setValue(this.getSERNR(),"SERNR");
                             inputTable.setValue(this.getVBELN(),"VBELN");
                                                       System.out.println("after set successful");
                              client.execute(function);     
                              int  count= function.getExportParameterList().getFieldCount();
                             JCO.Field ZSUBRCField=function.getExportParameterList().getField("ZSUBRC");
                             JCO.Field ZEMSGField=function.getExportParameterList().getField("ZEMSG");
                              for(int i=0; i<count; i++) {
                                if(ZSUBRCField.getName().equals("ZSUBRC")){
                                       outgoingRes.setZSUBRC(ZSUBRCField.getString()); 
                                  }else if(ZEMSGField.getName().equals("ZEMSG")){
                                       outgoingRes.setZEMSG(ZEMSGField.getString()); 
                             System.out.println(ZSUBRCField.getName() + ":t" + ZSUBRCField.getString());
                             System.out.println(ZEMSGField.getName() + ":t" + ZEMSGField.getString());
                              Table excodes = function.getTableParameterList().getTable("ZOSBMSEG");
                              for(int i=0;i<excodes.getNumRows();i++){
                                   Reservation outgoingRes1 = new InvReservation();
                                   excodes.setRow(i);
                                   //add here
                                   outgoingRes1.setRSNUM(excodes.getString("RSNUM"));
                                   outgoingRes1.setMBLNR(excodes.getString("MBLNR"));
                                   outgoingRes1.setMATNR(excodes.getString("MATNR"));                              
                                   outgoingRes1.setMENGE(excodes.getDouble("MENGE"));
                                   outgoingRes1.setSERNR(excodes.getString("SERNR"));
                                   outgoingRes1.setDMBTR(excodes.getDouble("DMBTR"));
                                   outgoingRes1.setZSUBRC(ZSUBRCField.getString());
                                   outgoingRes1.setZEMSG(ZEMSGField.getString());
                                   //outgoingRes.setMENGE(java.lang.Double.parseDouble(codes.getString()));
                                   col.add(outgoingRes1);
                                   System.out.println("RSNUM:" +excodes.getString("RSNUM") + 't' +
                                              "MBLNR:" +excodes.getString("MBLNR") + 't' +
                                        "MATNR:" +excodes.getString("MATNR") + 't' +
                                        "MENGE:" +excodes.getDouble("MENGE")+ 't' +
                                        "SERNR:" +excodes.getString("SERNR") + 't' +
                                        "MENGE:" +excodes.getDouble("DMBTR") + 't' +
                                        "ZSUBRC:" +ZSUBRCField.getString() + 't' +
                                        "ZEMSG:" +ZEMSGField.getString());
                             System.out.println("all ok");
                   }catch(Exception ex){
                        System.out.println("Caught an exception: n" + ex);
                        throw new CustomException(ex);
                   }finally{
                        if (client != null) {
                             System.out.println("Connection Closed");
                             JCO.releaseClient(client);
                   return col;
    Just to let's you know something here...
    the input parameter is a table structure...so when i execute this.
    Caught an exception:
    java.lang.NullPointerException
    JCO.ParameterList list = function.getImportParameterList();
                              list.setValue(this.getRSNUM(),"RSNUM");
                              list.setValue(this.getMATNR(),"MATNR");
                              list.setValue(this.getMENGE(),"MENGE");
                              list.setValue(this.getLGORT(),"LGORT");
                              list.setValue(this.getWERKS(),"WERKS");
                              list.setValue(this.getSERNR(),"SERNR");
                              list.setValue(this.getVBELN(),"VBELN");
    so i changed to ....
    it get what i want....
    but again the result of the input is still null
         JCO.ParameterList tabInput = function.getTableParameterList();
                             JCO.Table inputTable = tabInput.getTable("ZOSBIMSEG");
                             inputTable.appendRow();
                             System.out.println("checking table input:" +this.getRSNUM()+"  " +this.getMATNR()+ ""
                                                 +this.getMENGE()+" " +this.getLGORT()+" " +this.getWERKS() +" "
                                                 +this.getSERNR()+" " +this.getVBELN());
                                                      inputTable.setValue(this.getRSNUM(),"RSNUM");
                             inputTable.setValue(this.getMATNR(),"MATNR");
                             inputTable.setValue(this.getMENGE(),"MENGE");
                             inputTable.setValue(this.getLGORT(),"LGORT");
                             inputTable.setValue(this.getWERKS(),"WERKS");
                             inputTable.setValue(this.getSERNR(),"SERNR");
                             inputTable.setValue(this.getVBELN(),"VBELN");
    AFTER CREATEFUNCTION:Name:   ZMM_OSB_CONFIRM_RESERVATION
    Input: 
    null
    Output:
    | PARAMETERS 'OUTPUT'
    | ZEMSG                                            | ZSUBRC |
    |01234567890123456789012345678901234567890123456789|   0   1|
    |                                                  |00000000|

  • How do I loop through tables, not columns in a table?

    Sorry if this is a long one. My problem is actually quite simple. I am trying to write either an ad hoc PL/SQL block or a stored procedure to loop 18 times (thru 18 tables) and perform a SQL query on those tables, returning 18 resultsets. I would like the results to show up on the screen (or in a spool file, whatever).
    So far I have tried 3 different approaches, none of which have worked.
    1. I tried to assign the select query to a variable (qry) and use EXECUTE IMMEDIATE qry. This forced me thru a variety of errors to declare variables and assign the result to them--EXECUTE IMMEDIATE qry into nm0, nm1, nm2...
    The problem with that was the resultset returned more than the variable was built for as there might be no rows returned, or it might be a thousand rows of data. So I tried changing the variables to VARRAYS, but it gave me a type mismatch as the underlying columns were NUMBER and VARCHAR2.
    DECLARE
         ctr number;
         TYPE NUMLIST IS VARRAY (1000) OF NUMBER;
         TYPE VARLIST IS VARRAY (1000) OF VARCHAR2(15);
         nm0 NUMLIST NOT NULL DEFAULT 1;
         nm1 VARLIST;
         nm2 NUMLIST NOT NULL DEFAULT 1;
         nm3 VARLIST;
         nm17 NUMLIST NOT NULL DEFAULT 1;
         qry VARCHAR2(2000) := 'klx_uln_p000_cells';
    BEGIN
    FOR ctr IN 1..17 LOOP
         IF ctr &lt; 10 THEN
              qry := 'SELECT
              A.DIM_0_INDEX,
              S0.SYM_NAME,
              A.DIM_1_INDEX,
              S1.SYM_NAME,
              A.DIM_2_INDEX,
              S2.SYM_NAME,
              A.DIM_3_INDEX,
              S3.SYM_NAME,
              A.NUMERIC_VALUE,
              B.NUMERIC_VALUE
              FROM
              KHALIX.klx_uln_p00'||ctr||'_cells A,
              KHALIX.klx_ucn_p00'||ctr||'_cells B,
              KHALIX.KLX_MASTER_SYMBOL S0,
              KHALIX.KLX_MASTER_SYMBOL S1,
              KHALIX.KLX_MASTER_SYMBOL S7
              WHERE
              A.DIM_0_INDEX=B.DIM_0_INDEX AND
              A.DIM_1_INDEX=B.DIM_1_INDEX AND...
              A.DIM_7_INDEX=S7.SYM_INDEX';
         ELSE
              qry := 'SELECT
              A.DIM_0_INDEX...
              A.DIM_7_INDEX=S7.SYM_INDEX';
         END IF;
         BEGIN
         dbms_output.put_line('SELECT FOR KLX_ULN_P00'||ctr||'_CELLS');
         dbms_output.put_line(nm16);
         dbms_output.put_line(nm17);
         EXECUTE IMMEDIATE qry into nm0,nm1,nm2,nm3,nm4,nm5,nm6,nm7,nm8,nm9,nm10,nm11,nm12,nm13,nm14,nm15,nm16,nm17;
    --     dbms_output.put_line(qry);
         dbms_output.put_line(nm16);
         dbms_output.put_line(nm17);
         EXCEPTION
              WHEN NO_DATA_FOUND THEN
                   dbms_output.put_line('No data found for Query '||ctr);
         END;
    END LOOP;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN
              dbms_output.put_line('No data found for Query '||ctr);
    END;
    2. So then I used REF CURSOR to create a stored procedure and return the values. That allowed me to run my query AND tokenize the tablenames with a counter so that it would loop through the different tables! However, I still could not get it to display the results without going to SQL Plus and typing 'print c;'.
    3. So, finally I tried to create a looping wrapper around the ref cursor to have some variable (ctr) increment so my query would get performed on table0_cells through table17_cells. This, too, did not work.
    If I manually go to SQL Plus and type:
    variable ctr number
    begin
    :ctr := 1;
    end;
    exec dupe_find(1,:c);
    it will execute for the first table (klx_uln_p001_cells) and I can then type 'print c' to see what was returned. But when I try putting this within a wrapper PL/SQL block with a Loop to make ctr go from 0 - 17 (to loop through table_names klx_uln_p000_cells to klx_uln_p017_cells), it does not work.
    Help! It should be very simple to loop through tables, shouldn't it? I just want a script that will loop through tables, perform a query on each table and display the results. For some reason, I can only find documentation examples on looping through columns that are all in the same table.
    Dave

    Here's a working example using your first strategy ...
    create table t1 (id number);
    create table t2 (id number);
    insert into t1 values (100);
    insert into t1 values (101);
    insert into t2 values (200);
    insert into t2 values (201);
    declare
    v_table_name user_tables.table_name%type;
    type ttab_id is table of t1.id%type index by binary_integer;
    tab_id ttab_id;
    begin
    for i in 1 .. 2 loop
    v_table_name := 't' || i;
    execute immediate 'select id from ' || v_table_name
    bulk collect into tab_id;
    dbms_output.put_line('query from ' || v_table_name);
    for j in 1 .. tab_id.count loop
    dbms_output.put_line(tab_id(j));
    end loop;
    end loop;
    end;
    There are many other ways to do this (especially if you need to do more than just print out the data).
    Richard

  • Triggering "exit" event of a drop-down list in all instances of a table row

    I have a drop-down list in a table row with multiple instances that performs a calculation on the exit event. This calculation draws information from 2 other dropdown lists contained above in non-repeating rows of the same table.
    The desired behavior is: should the user change their choices above, all instances of the drop-down list below would perform the "Exit" event script  accessing the new values above.
    My script is:
    RowOptionalCoverage.DdlCoverageType.execEvent("exit");     this works, sort of
    It only updates the first instance of RowOptionalCoverage and none of the subsequent instances. The user can "Tab" through the instances and trigger the Exit event for each instance, but this is not a reasonable solution.
    I have tried using the resolveNodes method without success. I understand, using the resolveNodes method may be necessary when referencing multiple instances of an object:
    this.resolveNodes("RowOptionalCoverage[*].DdlCoverageType[*]").execEvent("exit");     doesn't work
    xfa.resolveNodes("RowOptionalCoverage[*].DdlCoverageType[*]").execEvent("exit");      doesn't work
    No doubt, I must be using the resolveNodes incorrectly or missing something? Probably something simple.
    Any advice is greatly appreciated.
    Stephen

    PERFECT!!! Works right out of the box!
    This has opened my eyes to the essential nature of loops. My form is very large and complex and functions correctly, Yet the coding is lacking in sophistication--no loops, functions, fragments or other code efficiencies. I am teaching myself (with the help here) and I have skipped learning and using some techniques when I could things to work using the  limited skill set I have.
    Sometimes, I just don't "get it". After I fail a few times, I skip it and try something else. Functions are a great example. I could utilize a bunch of these if I could only write one that works. It is frustrating. If I got one to work, I know could write a ton of them. But, there is some essential part of functions I am missing that's preventing me from having my first success with them. (I think it has to do with not understanding arguments completely).
    Anyway, I am overjoyed with the solution you provided and I understand it well enough to be able to use again in other situations.
    Thanks again!
    Stephen

  • How to pass the JCO Table and Structure in a collection List to frontEnd

    hi,
    I have a BAPI which is returns me a Table and a structure. As i have used JCO I will receive it in JCO Table and JCO Structure. Now the question is that how I should pass both these of these using a collection to the frontend for displaying the data from it.
    Thanks' & Regards,
    Samir

    Hi Samir,
    As you are trying to pass the Table and the Structure in the form of collection to the JSP page, you can create a javabean with the structure similar to that of the table/Structure.
    Lets assume you have a table called Employee with Emp_Name, Emp_Age, Emp_Sal as three columns, create a java class by name Employee which implements Serializable and attributes as Emp_Name, Emp_Age and Emp_Sal. Generate the setters and getters for the same. In your EJB code, create an instance of this Employee class and set the attributes and save it in a HashMap in the form of key value pair, Value being your Employee class instance and key be your Employee Name. Return the HashMap in your EJB code.
    Use the HashMap in your JSP. Get the Iterator for the HashMap and Loop through the keys to get the values.
    Hope this helps.
    Regards,
    Rekha Malavathu

  • How to read JCO Table parameter

    Hello
    I am calling Java function from ABAP side (JCO outbound call). Right now, in the java program I can get the import parameter data, but not the table parameter data. I am using the famous example5.java and the ABAP code is like below:
    PARAMETERS: requtext LIKE sy-lisel.
    DATA: echotext LIKE sy-lisel,
          resptext LIKE sy-lisel,
          rfctest TYPE TABLE OF rfctest,
          wa_rfctest TYPE rfctest.
    wa_rfctest-rfcdata1 = requtext.
    wa_rfctest-rfcdata2 = 'Hello World'.
    APPEND wa_rfctest TO rfctest.
    CALL FUNCTION 'STFC_CONNECTION'
      DESTINATION 'JCO'
      EXPORTING
        requtext = requtext
      IMPORTING
        echotext = echotext
        resptext = resptext
      TABLES
        rfctest  = rfctest.
    In the java side it is defined as:
    JCO.MetaData fmeta = new JCO.MetaData("STFC_CONNECTION");
            fmeta.addInfo("REQUTEXT", JCO.TYPE_CHAR, 16,   0,     0,       JCO.IMPORT_PARAMETER, null);
            fmeta.addInfo("ECHOTEXT", JCO.TYPE_CHAR, 255,   255,     0,       JCO.EXPORT_PARAMETER, null);
            fmeta.addInfo("RESPTEXT", JCO.TYPE_CHAR, 255,   512,     0,       JCO.EXPORT_PARAMETER, null);
            fmeta.addInfo("RFCTABLE",     JCO.TYPE_TABLE,     144, 0, 0, 0,                    "RFCTEST");
    Also RFCTEST structure is defined ( omitted here)
    In the handleRequest(JCO.Function function), the following code:
    if (function.getName().equals("STFC_CONNECTION")) {
                    output.setValue(input.getString("REQUTEXT"),"ECHOTEXT");
                    JCO.Table tab = tables.getTable("RFCTABLE");
                    System.out.println("RFCTABLE rows = " + tables.getTable("RFCTABLE").getNumRows());
    I always get 0 rows in the table RFCTABLE. I checked the trace file in the Java side, I can see the table data are indeed passed to Java side, the JCO just can't pass the data through the API.
    Any one has idea of it?
    Thank you very much.
    Jayson

    Andre 
    I have read the function Structure of J_1B_NFE_XML_OUT and i don't find the TableParameter or ExportParameter for this FM.
    How do you actually get your return parameter?
    I don't think here the table type is JCO.Table.
    And  i don't know how to use this Function . So i can't test my assumption.
    JCO.Table tab = function.getImportParameterList().getTable( "XML_ITEM_TAB" );
    normally people use the JCO.Table tab=function.getTableParameterList().getTable();
    But XML_ITEM_TAB is not a Table parameter.
    I don't know if table type from importParmeter can convert themself like that.But you still can try it.
    hope that be helpful!

  • How to add blank line below the table/row whenever there is no data

    Hello Everyone,
    I have a table in my report template like below:-
    Children / Dependents: Name / Comments: Grandchildren: Name / Comments:
    Son John Daughter Smith
    Daughter Laura Son Kevin
    Son Bill None NA
    When i run the report I need to achieve the following conditions:-
    Condition 1: Loop through all rows and whenever there is data in any row in the table...I need to Populate and print it.
    Condition 2: When Loop is ended, when you see there is no data in any row in the table... add a dash line at the end of the table.
    Condition 3: Total no of populated rows + blank dash line <= Max no of rows in DB. And when max no of populated rows in report = max no of rows in DB/UI ... don’t print dash line.
    I want to achieve these conditions. Can you please help me.
    Thanks..Rithesh

    Hello Everyone,
    I have a table in my report template like below:-
    Children / Dependents: Name / Comments: Grandchildren: Name / Comments:
    Son John Daughter Smith
    Daughter Laura Son Kevin
    Son Bill None NA
    When i run the report I need to achieve the following conditions:-
    Condition 1: Loop through all rows and whenever there is data in any row in the table...I need to Populate and print it.
    Condition 2: When Loop is ended, when you see there is no data in any row in the table... add a dash line at the end of the table.
    Condition 3: Total no of populated rows + blank dash line <= Max no of rows in DB. And when max no of populated rows in report = max no of rows in DB/UI ... don’t print dash line.
    I want to achieve these conditions. Can you please help me.
    Thanks..Rithesh

  • How to display JCO.Table in jsp, CRM ISA

    Hi,
    I have got a JCO.Table with results from teh CRM system and now want to display this in ISA.
    Is there any templates, or code, that could guide me as to how to transfer the table to jsp.
    thanks,
    sunil

    Hi Sunil,
    The code from bean class is here,
    public void listDetails(String releaseGroup,String releaseCode)                                 
    throws Exception
                    try
                         if (mRepository == null )
                              System.out.println("NuLL");
                         try
    IFunctionTemplate                                         ft=mRepository.getFunctionTemplate("BAPI_REQUISITION_GETITEMSREL");
    myFunction=ft.getFunction();
                   catch (Exception ex)
                   throw new Exception(ex + "Problem retrieving JCO.Function object.");
          if (myFunction == null)
         System.exit(1);
    mConnection.execute(myFunction);
                   JCO.ParameterList input = myFunction.getImportParameterList();
                           input.setValue(releaseGroup,"REL_GROUP");
                           input.setValue(releaseCode,"REL_CODE");
                           input.setValue(releaseFlag,"ITEMS_FOR_RELEASE");
                             System.out.println("Imported");
                         catch (Exception ex)
                              ex.printStackTrace();
                              System.exit(1);
                          mConnection.execute(myFunction);
                JCO.Table codes = null;
               codes =myFunction.getTableParameterList().getTable("REQUISITION_ITEMS");
               size =codes.getNumRows();
               if (size == 0)
                  System.out.println("No value matches the selection cretaria");
               purchaseRequisitionNo = new String[size];
               item   = new String[size];
               requestorName = new String[size];
               description = new String[size];
               creatorName = new String[size];
               purchaseRequisitionDate = new String[size];
               plant = new String[size];
              // getter methods
         public int  getSize() { return size; }
         public String getPurchaseRequisitionNo(int i){return                                                        purchaseRequisitionNo<i>; }
          public String getItem(int i) { return item<i>; }
         public String getDescription(int i) { return description<i>; }
         public String getCreatorName(int i) { return creatorName<i>; }
         public String getPurchaseRequisitionDate(int i)
                                             {return purchaseRequisitionDate<i>; }
         public String  getplant(int i) { return plant<i>; }
    Now in the JSP page get the number of entries in the table and try to get row by row from the bean class using the row number.
    <%
    int count = PR.getSize() ; // This method will return the number of
    rows in the table.
    for ( int i = 0; i < count ; i++ ) {
    %>
    <TR><TD ALIGN = "center"><%= PR.getPurchaseRequisitionNo(i) %> </TD>
    <TD ALIGN = "center"><%= PR.getItem(i) %> </TD>
    <TD ALIGN = "center"><%= PR.getDescription(i) %></TD>
    <TD ALIGN = "center"><%= PR.getCreatorName(i)%> </TD>
    <TD ALIGN = "center"><%= PR.getPurchaseRequisitionDate(i)%> </TD>
    <TD ALIGN = "center"><%= PR.getplant(i)%> </TD>
    <% } %>
    Hope this is a simple way to get your requirement.
    Let me know if this does not help you.
    Thanks
    Kathirvel.

  • Web Service returning JCO.Table with no content

    Hello all,
    I've written a web service returning an object of type JCO.Table
    When I'm testing it in the Web Service Navigator the response contains two parameters: tabLength and row (current row number), but doesn't contain the content of the table.
    I tried testing the Web Service also from Webdynpro but its the same -
    the result contains a ComplexTypeJCOTable and from that object I can only get the tabLength and row.
    Anyone knows why is it happening?
    Thanks for your help, Adi.

    Hi Rajendrakumar Gaikwad,
    Thanks for your suggestion.
    I don't think this will be an efficient solution for me or for the web service clients.
    I'm still looking for an explanation why can't I get the JCO.Table content.
    Is it impossible for some reason or am I doing anything wrong?
    Thanks again, Adi.

  • Adding Specific columns of dynamic internal table row into another column

    Hi Gurus,
    I need to add  few columns of a dynamic internal table row into another column:
    Article description hy01 hy02 total
    101      panza         10     12      22
    102      masht         12     12     24
    dynamic internal table is created and columns hy01 hy02.... can increase
    How to add the the values in hy01 hy 02... into total.
    Regards,
    Dep

    Hi,
    If you really want to have a dynamic table, then you will have to find a way to generate a whole new table, and then copy the data from the old table to the new one. There is no way to modify a type during runtime in ABAP.
    Here an example how to generate a dynamic table based on another internal table, hope this will help you.
    TYPE-POOLS: slis.
    PARAMETERS: p_nb_hy TYPE i DEFAULT 2. "Number of new HY columns to be added
    * Type ZST_T:
    *   matnr  TYPE matnr
    *   maktx  TYPE maktx
    *   hy01   TYPE i
    *   total  TYPE i
    TYPES: ty_t TYPE STANDARD TABLE OF zst_s.
    PERFORM main.
    *&      Form  main
    *       text
    FORM main.
      DATA: lt_fieldcat     TYPE slis_t_fieldcat_alv,
            lt_t            TYPE ty_t,
            lr_new_t        TYPE REF TO data.
      FIELD-SYMBOLS: <lt_new_t> TYPE STANDARD TABLE.
      "Add some lines to LT_T just to have something to display on screen
      DO 10 TIMES.
        APPEND INITIAL LINE TO lt_t.
      ENDDO.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'ZST_S'
        CHANGING
          ct_fieldcat      = lt_fieldcat.
      "Copy LT_T to LR_NEW_T
      PERFORM extend_and_copy_table USING lt_t p_nb_hy CHANGING lr_new_t lt_fieldcat.
      CLEAR lt_t. "Not needed anymore...
      ASSIGN lr_new_t->* TO <lt_new_t>.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          it_fieldcat = lt_fieldcat
        TABLES
          t_outtab    = <lt_new_t>.
    ENDFORM.                    "main
    *&      Form  extend_and_copy_table
    FORM extend_and_copy_table USING ut_t           TYPE STANDARD TABLE
                                     uv_nb_hy       TYPE i
                               CHANGING cr_t        TYPE REF TO data
                                        ct_fieldcat TYPE slis_t_fieldcat_alv
                               RAISING cx_sy_struct_creation cx_sy_table_creation.
      DATA: lo_tabledescr      TYPE REF TO cl_abap_tabledescr,
            lo_structdescr     TYPE REF TO cl_abap_structdescr,
            lo_new_structdescr TYPE REF TO cl_abap_structdescr,
            lo_new_tabledescr  TYPE REF TO cl_abap_tabledescr,
            lt_components      TYPE cl_abap_structdescr=>component_table,
            ls_component       TYPE cl_abap_structdescr=>component,
            lv_field_cnt       TYPE numc2,
            ls_fieldcat        TYPE slis_fieldcat_alv,
            lr_fieldcat        TYPE REF TO slis_fieldcat_alv.
      FIELD-SYMBOLS: <ls_old_s> TYPE ANY,
                     <lt_new_t> TYPE STANDARD TABLE,
                     <ls_new_s> TYPE ANY.
      "Get the list of all components from UT_T line structure
      lo_tabledescr  ?= cl_abap_tabledescr=>describe_by_data( ut_t ).
      lo_structdescr ?= lo_tabledescr->get_table_line_type( ).
      lt_components  = lo_structdescr->get_components( ).
      "The new columns will be from type of column HY01
      ls_component-type = lo_structdescr->get_component_type( 'HY01' ).
      "The new columns will have the same fieldcat info as column HY01
      READ TABLE ct_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'HY01'.
      "HY<lv_field_cnt> = new field name
      lv_field_cnt = uv_nb_hy + 1.
      "For each new column...
      DO uv_nb_hy TIMES.
        "Generate the new column field name
        CONCATENATE  'HY' lv_field_cnt INTO ls_component-name.
        ls_fieldcat-fieldname = ls_component-name.
        "Add the new field to the components of the new structure
        INSERT ls_component INTO lt_components INDEX 4.
        "Add the new field's fieldcat info to the fieldcat
        INSERT ls_fieldcat  INTO ct_fieldcat   INDEX 4.
        lv_field_cnt = lv_field_cnt - 1.
      ENDDO.
      "Adjust the COL_POS from fieldcat
      LOOP AT ct_fieldcat REFERENCE INTO lr_fieldcat.
        lr_fieldcat->col_pos = sy-tabix.
      ENDLOOP.
      "Create the new table
      lo_new_structdescr = cl_abap_structdescr=>create( p_components = lt_components ).
      lo_new_tabledescr  = cl_abap_tabledescr=>create( p_line_type = lo_new_structdescr ).
      CREATE DATA cr_t TYPE HANDLE lo_new_tabledescr.
      ASSIGN cr_t->* TO <lt_new_t>.
      "Copy all data from old to new table
      LOOP AT ut_t ASSIGNING <ls_old_s>.
        APPEND INITIAL LINE TO <lt_new_t> ASSIGNING <ls_new_s>.
        MOVE-CORRESPONDING <ls_old_s> TO <ls_new_s>.
      ENDLOOP.
    ENDFORM.                    "main

  • How to join two internal table rows in alternative manner into one internal table?

    How to join two internal table rows in alternative manner into one internal table?
    two internal tables are suppose itab1 &  itab2 & its data
    Header 1
    Header 2
    Header 3
    a
    b
    c
    d
    e
    f
    g
    h
    i
    Header 1
    Header 2
    Header 3
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INTO itab3 data
    Header 1
    Header 2
    Header 3
    a
    b
    c
    1
    2
    3
    d
    e
    f
    4
    5
    6
    g
    h
    i
    7
    8
    9

    Hi Soubhik,
    I have added two additional columns for each internal table.
    Table_Count - It represents the Internal Table Number(ITAB1 -> 1, ITAB2 -> 2)
    Row_Count  - It represents the Row Count Number, increase the row count value 1 by one..
    ITAB1:
    Header 1
    Header 2
    Header 3
    Table_Count
    Row_Count
    a
    b
    c
    1
    1
    d
    e
    f
    1
    2
    g
    h
    i
    1
    3
    ITAB2:
    Header 1
    Header 2
    Header 3
    Table_Count
    Row_Count
    1
    2
    3
    2
    1
    4
    5
    6
    2
    2
    7
    8
    9
    2
    3
    Create the Final Internal table as same as the ITAB1/ITAB2 structure.
    "Data Declarations
    DATA: IT_FINAL LIKE TABLE OF ITAB1.          "Final Internal Table
    FIELD-SYMBOLS: <FS_TAB1> TYPE TY_TAB1,     "TAB1
                                   <FS_TAB2> TYPE TY_TAB2.     "TAB2
    "Assign the values for the additional two column for ITAB1
    LOOP AT ITAB1 ASSIGNING <FS_TAB1>.
         <FS_TAB1>-TABLE_COUNT = 1.             "Table value same for all row
         <FS_TAB1>-ROW_COUNT = SY-TABIX. "Index value
    ENDLOOP.
    "Assign the values for the additional two column for ITAB2
    LOOP AT ITAB2 ASSIGNING <FS_TAB2>.    
         <FS_TAB2>-TABLE_COUNT = 2.                  "Table value same for all row
         <FS_TAB2>-ROW_COUNT = SY-TABIX.      "Index value
    ENDLOOP.
    "Copy the First Internal Table 'ITAB1' to Final Table
    IT_FINAL[] = ITAB1[].
    "Copy the Second Internal Table 'ITAB2' to Final Table
    APPEND IT
    LOOP AT ITAB2 INTO WA_TAB2.
    APPEND WA_TAB2 TO IT_FINAL.
    ENDLOOP.
    "Sort the Internal Table based on TABLE_COUNT & ROW_COUNT
    SORT IT_FINAL BY  ROW_COUNT TABLE_COUNT.
    After sorting, check the output for IT_FINAL Table, you can find the required output as shown above.
    Regards
    Rajkumar Narasimman

  • Select Table row.

    Hi.
    I need some help!
    I'm implementing a web dynpro application with a simple table.
    That table has a row popin to show some more complete information about the table row.
    I have also a button on that popin and I want to, when that button is pressed, show that row information on a popup window.
    How can I get the information of that row?
    Regards

    Hi,
    Try this, it will give no of selected records.
    DATA lo_nd_et_postab_1 TYPE REF TO if_wd_context_node.
      DATA lo_el_et_postab_1 TYPE REF TO if_wd_context_element.
      DATA ls_et_postab_1    TYPE wd_this->Element_et_postab_1.
      DATA lt_et_postab_1    TYPE wd_this->Elements_et_postab_1.
      DATA: wa_temp TYPE REF TO if_wd_context_element,
            lt_temp TYPE wdr_context_element_set.
    * navigate from <CONTEXT> to <ET_POSTAB_1> via lead selection
      lo_nd_et_postab_1 = wd_context->path_get_node( path = `ZSHP_EXTENDED_DUE_LI.CHANGING_3.ET_POSTAB_1` ).
      CALL METHOD lo_nd_et_postab_1->get_selected_elements
        RECEIVING
          set = lt_temp.
      LOOP AT lt_temp INTO wa_temp.
        CALL METHOD wa_temp->get_static_attributes
          IMPORTING
            static_attributes = ls_et_postab_1.
        * append ls_et_postab_1 to lt_et_postab_1.  // if you watn use this statement
        CLEAR ls_et_postab_1.
      ENDLOOP.
    Cheers,
    Kris.

Maybe you are looking for

  • Final Cut Studio 2 installation

    Upon installing Final Cut Studio 2 upgrade my harddrive crashed. I thought I had more room than I actually did. I just got a new hard drive and I want to install final cut studio 2 again. Do I have to reinstall all of my final cut studio 1 discs and

  • How To Set Custom Metadata Programmatically?

    I could have sworn there was a way, but I sure can't figure it out right now - anybody know if or how? PS - I thought at first catalog:setPropertyForPlugin would do it, but it seems to just set some invisible property, not the viewable, filterable, c

  • System prefernces im stuck with the same screensaver for eternity!!

    I have had my macbook now for about 3 months and everyhting has been PERFECT!! but just recently i have been haveing truoble changing my screensaver. Evreytime i go to change my setting(for the screensaver) my system perfences quits, then i try to re

  • Enterprise Manager Login

    I just installed Enterprise 8i but can not log into the Enterprise Manager using the default administrator user name and password sysman/oem_temp. I get the message "VTK-1000: Unable to connect to the management server manager." Any help would be app

  • SAP MM and SD Integration steps

    Hi Friends, This is Ramakrishna,can any one give proper information about MM&SD integration, steps and process interview point of view. And also MM&PP Integration(MRP) Regards Ramakrishna Doha,Qatar