HELP!! WebDynpro don't pass Tables parameters to BAPI.

hello everyone
I am in trouble.I use a bapi with Tables parameter in my wedDynpro,and bind some data to this Tables model structure.Unfortunately,these data aren't be passed to bapi,and in my  bapi the Tables paremeter——Table is initial state.
Could some to help me ?
My wedDynpro programme follows:
public void execute_Test( )
    //@@begin execute_Test()
     IWDMessageManager manager = wdComponentAPI.getMessageManager();
     Zzshibin_Test5_Input input = new Zzshibin_Test5_Input();
     wdContext.nodeZzshibin_Test5_Input().bind(input);
     Zzbsctmydsub_Score score = new Zzbsctmydsub_Score();
     score.setZzmydkey("1");
     score.setZzrltkey("2");
     score.setZzsubdes("3");
     score.setZzsubwgtrst("4");
     AbstractList list = new Zzbsctmydsub_Score.Zzbsctmydsub_Score_List();
     list.add(score);
     input.setTable(list);
    try
         wdContext.currentZzshibin_Test5_InputElement().modelObject().execute();
    catch(Exception e)
         manager.reportException("error",true);
         return;
I am wating for answer.

Hi Bin,
Please try the follwoing code.
public void execute_Test( )
//@@begin execute_Test()
IWDMessageManager manager = wdComponentAPI.getMessageManager();
Zzshibin_Test5_Input input = new Zzshibin_Test5_Input();
wdContext.nodeZzshibin_Test5_Input().bind(input);
Zzbsctmydsub_Score score = new Zzbsctmydsub_Score();
score.setZzmydkey("1");
score.setZzrltkey("2");
score.setZzsubdes("3");
score.setZzsubwgtrst("4");
<b>input.add<tablename>(score);</b>
try
wdContext.currentZzshibin_Test5_InputElement().modelObject().execute();
catch(Exception e)
manager.reportException("error",true);
return;
With Regards
Balaram Naidu Bankuru

Similar Messages

  • RFC passing table parameters

    I am having difficulty passing tables as parameters using an RFC function defined in SE37 and an RPG ILE program running on a separate iSeries.
    I have successfully passed import/export parameters, however tables are proving to be difficult.
    The function builder will test with no errors, but does not pass or return tables.
    A trace performed with the server side of the RFC shows the message "discarding unrequested T:" along with the table names.
    Any help would be appreciated.

    I am using a multiple occurring data structure to define the tables.
    DRFC_TABLES       DS                  ALIGN OCCURS(3)
    D  TNAME                          *   INZ(*NULL)
    D  TNLEN                        10U 0 INZ(0)
    D  TTYPE                        10U 0 INZ(0)
    D  TLENG                        10U 0 INZ(0)
    D  TITHANDLE                      *   INZ(*NULL)
    D  TITMODE                        *   INZ(*NULL)
    D  TNEWITAB                     10I 0 INZ(0)
    I then fill occurrences 1 & 2 with the defining parameters, and occurrence 3 with *NULL in TNAME.
    Then I do the following to get data, with a similar routine to send data.
    C     1             occur     RFC_TABLES
    C                   EVAL      TBPTR = %ADDR(TNAME)C                   EVAL      Rcge = RfcGetData(hRfc : POINT : TBPTR)

  • How BAPI Tables parameters are passed by reference

    Hi Gurus,
                     I have a genuine doubt regarding BAPI parameters. I would like to point out the genreal rules of bapi like,
    1. BAPI parameters should be passed by value. (Because they are rfc fm's. So both systems will be in different servers. This is the normal scenario.)
    2. But the tables parameters in BAPI can't be passed by value. Instead they are passed by reference.
    3. I know they use some kind of delta mechanism to transfer tables parameters to remote servers.
    So gurus I would like to know what exactly happens when a tables parameter is passed. And also I didn't understand the delta mechanism. Kindly guide me.
    Thanks in advance,
    Jerry Jerome

    You'll see in [SAP Library - RFC - Parameter Handling in Remote Calls|http://help.sap.com/saphelp_nw04s/helpdata/en/22/042551488911d189490000e829fbbd/frameset.htm] that tables are not passed by reference when you use RFC. It also explains the delta.
    When you make a remote function call, the system handles parameter transfer differently than it does with local calls.
    TABLES parameters
    The actual table is transferred, but not the table header. If a table parameter is not specified, an empty table is used in the called function.
    The RFC uses a delta managing mechanism to minimize network load during parameter and result passing. Internal ABAP tables can be used as parameters for function module calls. When a function module is called locally, a parameter tables is transferred u201Cby reference". This means that you do not have to create a new local copy. RFC does not support transfer u201Cby referenceu201D. Therefore, the entire table must be transferred back and forth between the RFC client and the RFC server. When the RFC server receives the table entries, it creates a local copy of the internal table. Then only delta information is returned to the RFC client. This information is not returned to the RFC client every time a table operation occurs, however; instead, all collected delta information is passed on at once when the function returns to the client.
    The first time a table is passed, it is given an object-ID and registered as a "virtual global table" in the calling system. This registration is kept alive as long as call-backs are possible between calling and called systems. Thus, if multiple call-backs occur, the change-log can be passed back and forth to update the local copy, but the table itself need only be copied once (the first time).

  • Passing Tables from one method to another method.

    Hi All,
    I'm creating a Web-Dynpro program in which I wouild like to passing an internal table from one method to another method within the same View. 
    Is this possible?  And if so, how can I set it up.
    Thank you.
    Paul

    Hi Paul ,
    I hope u wud be clear with passing table from one method to another now .U may also wish to see this WIKI
    Link: [Passing table parameters|https://wiki.sdn.sap.com/wiki/display/WDABAP/Passingtableparameterfromoneviewtoanotherview+locally]
    I hope it wud help u .
    regards,
    amit

  • How to pass runtime parameters to MySQL Query from xMII server

    Please can anybody help in How to pass runtime parameters to Orcle Query from xMII server

    The answer is the same as for your other thread.  The mechanism is the same regardless of the end database.  The SQL  syntax will be different for each database vendor depending upon which functions you are invoking.  The main areas of difference between SQL Server, Oracle, DB2, etc. deal with dates (times also) and strings, but there are others as well.
    Regards,
    Mike

  • WebDynpro -  How to pass a single field value to BAPI table?

    Hello,
    I have just come from WebDynpro ABAP training and being a novice hit my first issue right away.
    I need to use BAPI - BAPI_CONTRACT_CREATEFROMDATA to create SD contract (I have used this BAPI to create a service call inside Webdynpro). I have two required fields: contract start and end dates. These fields passed in a table called CONTRACT_DATA_IN.
    When I use the fields from the structures or individual fields, all I need to do is just put them on the view, and when I hit my submit button they will be passed to the BAPI. They are a part of COMPONENTCONTROLLER context (I have also mapped them in View context), but tables are obviously different.
    Is there any way to pass data to tables as seamlessly without any code as for structures? Or do I need to write code to get the values from the input fields and then populate the table manually?
    Thanks,
    Alex

    Hi,
    Single customer contract creation use the struture-
    If you want to pass only one record then using the input fields for those 2 fields we can pass them to BAPI and then create the Customer Contract. This will work for only one record of customer contract.
    then we can directly read these input fields and pass to BAPI.
    Creating many customer contracts -
    For example, If you want to provide the group of records at a time and then you want to create the cusotmer contracts for so many records then you fill these fields and pass them to table then pass this table to the tables parameters of that BAPI.
    Here we need not create the Table UI element separate input fields would serve the purpose.
    Now we can create the batch of contracts for N customers.
    these input fields of a customer will be passed to table, then next set of input fields etc.
    For this create the Table UI element and fill all the records and then pass it to the Tables of the BAPI.
    Regards
    Lekha

  • PASSING TABLES AS PARAMETERS IN FOR ALL INSERT

    Hi All,
    I want to pass table as a parameter to perform update in dynamic sql....
    sample code:
    declare
    cur_tab1 is select * from tabl1;
    TYPE tables_bulk is TABLE OF table2.source_table%TYPE;
    v_tables_bulk tables_bulk;
    ls_exe varchar2(2000);
    begin
    for i in cur_tab1 loop
    select source_table bulk collect into v_tables_bulk from table2 where table_id =i.col1
    forall i in 1..v_tables_bulk.count
    ls_exe :='update '|| v_tables_bulk(i) || set bulk_col1|| =i.col2'
    end;
    code description :
    here source_table is a column in table 2..source table column contains many tables..I have to fecth that table and update it with conditions using cursor.Also for select condition , we will get more than one value (more tables)..so i used bulk collect instead of normal variable.......i get local collection error..please help me out..

    user2639048 wrote:
    I did that but still it showed invalid sql....What is version of your database ?
    Some syntax works on newer versions, and is disallowed on older.
    Here is an example that works on Oracle 11g2
    -- create base table
    CREATE TABLE TAB AS
    SELECT TAB_ID,
           EMP_ID,
           'NAME ' || TAB_ID NAME,
           ROUND( DBMS_RANDOM.VALUE( 1, 1000 ), 2 ) SALARY
    FROM (
      SELECT ROUND( DBMS_RANDOM.VALUE(1,20)) TAB_ID,
             LEVEL EMP_ID
      FROM DUAL
      CONNECT BY LEVEL <= 100
    -- create child tables
    DECLARE
      X PLS_INTEGER;
    BEGIN
      SELECT MAX( TAB_ID ) INTO X
      FROM TAB;
      FOR I IN 1 .. X LOOP
         EXECUTE IMMEDIATE
            'CREATE TABLE TAB' || I ||
           q'{ AS SELECT * FROM TAB
               WHERE 1 = 0 }';
      END LOOP;
    END;
    CREATE OR REPLACE
    PACKAGE UPDATE_TAB IS
       TYPE TAB_TAB_TYP IS TABLE OF TAB%ROWTYPE;
       PROCEDURE UPDATE_TAB( I_TAB IN TAB_TAB_TYP );
       PROCEDURE TEST_UPDATE_TAB;
    END UPDATE_TAB;
    CREATE OR REPLACE
    PACKAGE BODY UPDATE_TAB AS
      PROCEDURE UPDATE_TAB( I_TAB IN TAB_TAB_TYP ) AS
      BEGIN
        FOR I IN I_TAB.FIRST .. I_TAB.LAST
        LOOP
            EXECUTE IMMEDIATE
                ' UPDATE TAB' || I_TAB(I).TAB_ID ||
                Q'{ SET TAB_ID = :TABID, NAME = :NAM, SALARY = :SAL
                    WHERE EMP_ID = :EMPID }'
            USING I_TAB(I).TAB_ID, I_TAB(I).NAME,
                    I_TAB(I).SALARY, I_TAB(I).EMP_ID;
            IF SQL%ROWCOUNT <= 0 THEN
                EXECUTE IMMEDIATE
                  ' INSERT INTO TAB' || I_TAB(I).TAB_ID ||
                  ' ( TAB_ID, EMP_ID, NAME, SALARY ) ' ||
                  ' VALUES( :TABID,  :EMPID, :NAME , :SAL )'
                USING I_TAB(I).TAB_ID, I_TAB(I).EMP_ID,
                      I_TAB(I).NAME, I_TAB(I).SALARY;
            END IF;
        END LOOP;
      END UPDATE_TAB;
       PROCEDURE TEST_UPDATE_TAB IS
         L_TAB TAB_TAB_TYP;
       BEGIN
          SELECT * BULK COLLECT INTO L_TAB
          FROM TAB;
          UPDATE_TAB( L_TAB );
       END;
    END UPDATE_TAB;
    --- TEST
    BEGIN
      UPDATE_TAB.TEST_UPDATE_TAB;
    END;
    SELECT * FROM TAB16;
    TAB_ID                 EMP_ID                 NAME                                          SALARY                
    16                     2                      NAME 16                                       455.86                
    16                     6                      NAME 16                                       253.18                
    16                     14                     NAME 16                                       478.92                
    16                     32                     NAME 16                                       381.27                
    16                     56                     NAME 16                                       737.77                
    16                     58                     NAME 16                                       382.65                
    16                     70                     NAME 16                                       203.03                
    16                     100                    NAME 16                                       435.73                
    8 rows selected
    SELECT * FROM TAB2;
    TAB_ID                 EMP_ID                 NAME                                          SALARY                
    2                      1                      NAME 2                                        737.91                
    2                      18                     NAME 2                                        35.61                 
    2                      22                     NAME 2                                        57.76                 
    2                      33                     NAME 2                                        851.72                
    2                      73                     NAME 2                                        109.74
    5 rows selected
    UPDATE TAB SET SALARY = 100
    WHERE TAB_ID = 2;
    5 rows updated
    BEGIN
      UPDATE_TAB.TEST_UPDATE_TAB;
    END;
    SELECT * FROM TAB2;
    TAB_ID                 EMP_ID                 NAME                                          SALARY                
    2                      1                      NAME 2                                        100                   
    2                      18                     NAME 2                                        100                   
    2                      22                     NAME 2                                        100                   
    2                      33                     NAME 2                                        100                   
    2                      73                     NAME 2                                        100    
    5 rows selected 

  • Help passing table name as parameter to a procedure

    Hello,
    i'm trying to write a procedure that takes a table name as input and uses a cursor to select a column,count(1) from the passed table to the cursor. The procedure i've come up with is as follows,
    CREATE OR REPLACE
    PROCEDURE excur(
        p_tbl user_tables.table_name%type )
    AS
      type rc is ref cursor;
      c rc;
      res BOOLEAN;
    BEGIN
      open c for 'SELECT columnA,COUNT(1) FROM'|| p_tbl||';';
      close c;
    END excur;When i try to execute it, an error pops up informing that a table cannot be used in this context. As in i cannot pass a table name as an argument to a procedure. Kindly guide as to how to solve this situation.

    vishm8 wrote:
    Hello,
    i'm trying to write a procedure that takes a table name as input and uses a cursor to select a column,count(1) from the passed table to the cursor. The procedure i've come up with is as follows,
    CREATE OR REPLACE
    PROCEDURE excur(
    p_tbl user_tables.table_name%type )
    AS
    type rc is ref cursor;
    c rc;
    res BOOLEAN;
    BEGIN
    open c for 'SELECT columnA,COUNT(1) FROM'|| p_tbl||';';
    close c;
    END excur;When i try to execute it, an error pops up informing that a table cannot be used in this context. As in i cannot pass a table name as an argument to a procedure. Kindly guide as to how to solve this situation.Generally speaking, Dynamic code is a bad idea for a staggering number of reasons.
    That aside, what do you want to return? You're selecting a column and applying an aggregate function (count) but you're not grouping, that doesn't usually work out too well.
    TUBBY_TUBBZ?select owner, count(*) from all_objects;
    select owner, count(*) from all_objects
    ERROR at line 1:
    ORA-00937: not a single-group group functionWhy do you perceive the need to be able to take in ANY table name, can't you design an application where table names are known at compile time and not run time?

  • How pass url parameters on init webdynpro app.?

    Hi all,
    i want to pass a parameter to my wd app. when its start. How can i do it? where do i have to do it?
    Thanx in advance
    CP

    You can define parameter using two methods:
    1. Via properties of the iview you have created, system will pass these parameters automatically to the iview.
    2. Via Code, you can use Portal Navigation and pass parameters at runtime. Check following sample code:
              WDPortalNavigation.navigateAbsolute(
                        "ROLES://portal_content/myIview/LoadEmployees",
                                    WDPortalNavigationMode.SHOW_INPLACE,
                                    (String) null,
                                    (String) null,
                                    WDPortalNavigationHistoryMode.NO_DUPLICATIONS,
                                    (String) null,
                                    (String) null,
                                    "action=E");
    The last parameter is for passing parameters, in the example parameter name: action and its value: E.
    Regards,
    Jawed Ali

  • Help needed for report on tables vbak and vbap

    Hello,
    I needed help in one of my work issues, this is my first project and Iam still learning. kindly help.
    I was asked to take erdat,vbeln,posnr from selection screen and compare it with the data already in tables vbap,vbak. If the data
    already exists and exception needs to be raised saying that the 'data exists',but if the data is not present in the tables the
    tables have to be updated. This has to be done using function module only.
    Then I have to write a REPORT calling the above function module and finally displaying the number of records updated and the
    list of them.
    I have started writing a function module:
    FUNCTION z_tableupdate.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(DATE) LIKE  VBAK-ERDAT DEFAULT SY-DATUM
    *"     VALUE(SALESORDERNO) LIKE  VBAK-VBELN
    *"     VALUE(ITEMNO) LIKE  VBAP-POSNR
    *"  EXPORTING
    *"     VALUE(EX_VBAP) LIKE  VBAP STRUCTURE  VBAP
    *"     VALUE(SYS) LIKE  SY-SYSID
    *"     VALUE(EX_VBAK) LIKE  VBAK STRUCTURE  VBAK
    *"  EXCEPTIONS
    *"      DATA_UPDATED
    *"      DATA_EXISTS
      SELECT * FROM vbak INTO vbak_wa WHERE erdat = date
                                        AND vbeln = salesorderno.
      ENDSELECT.
      SELECT * FROM vbap INTO vbap_wa WHERE posnr = itemno.
      ENDSELECT.
      IF sy-subrc EQ 0.
        ex_vbap = vbap_wa.
        ex_vbak = vbak_wa.
      ELSE.
        RAISE data_exists.
      ENDIF.
      sys = sy-sysid.
    ENDFUNCTION.
    How is the above code for function module, will this work??
    Now can I write a report to call the above function module and update the record?? if so, how to update ??? please help...Lots of thanks in advance.

    Hi
    Welcome to SDN forum
    Whay can't you write a simple report in SE38.
    why you are using Fun module
    Nothing wrong in it.
    But first become perfetc in reports in SE38 and then do using the fun modules
    write a simple select statement like
    SELECT AVBELN AERDAT BPOSNR BMATNR
    INTO TABLE ITAB
    FROM VBAK AS A JOIN VBAP ON
    AVBELN = BVBELN
    WHERE A~VBELN  IN  S_VBELN AND
                 A~ERDAT  IN  S_ERDAT AND
                 B~POSNR IN S_POSNR.
    IF SY-SUBRC <> O.
      WRITE: / 'No data found'.
    ENDIF.
    First write this in SE38 by defining a proper selection screen and internal tables
    then do as fun module
    see the doc for fun module
    Function Modules;
    Check this matter.
    Function Modules are Global ABAP programs created by SAP for reusable purpose.they have IMPORT,EXPORT and TABLE parameters, and EXCEPTIONS to through when error occurs.
    You can create them from TCode SE37.
    Go through the following doc:
    Function modules are cross-program, reusable procedures that are organized into function groups, and whose functions are implemented between the statements FUNCTION and ENDFUNCTION. Function modules and their interfaces are created in the Function Builder.
    Function Module Interfaces
    The parameter interface of a function module is defined in the Function Builder. It includes the definition of interface parameters and the specification of exceptions that can be triggered by a function module. The Function Builder automatically generates comment lines below the FUNCTION statement in the source code of the function module, which represent the interface of the function module with the following syntax:
    Syntax
    ... [IMPORTING parameters]
    [EXPORTING parameters]
    [CHANGING parameters]
    [TABLES table_parameters]
    [{RAISING|EXCEPTIONS} exc1 exc2 ...]
    The syntax and semantics of IMPORTING, EXPORTING, CHANGING, RAISING, and EXCEPTIONS mainly correspond to the definition of method interfaces with [CLASS-]METHODS. The additional option of defining table parameters using TABLES is obsolete.
    Interface parameters
    The interface parameters are defined on the relevant tab pages in the Function Builder.
    IMPORTING parameters are input parameters. When the function module is called, a suitable actual parameter must be specified for every non-optional input parameter. The content of the actual parameter is passed to the input parameter when the call is made. The content of an input parameter for which 'pass by reference' is defined cannot be changed in the function module.
    EXPORTING parameters are output parameters. When the function module is called, a suitable actual parameter can be specified for every output parameter. The content of an output parameter that is defined for 'pass by value' is transferred to the actual parameter if the function module is completed without errors. An output parameter that is defined for pass by reference is not initialized when the function module is called.
    CHANGING parameters are input and output parameters. When the function module is called, a suitable actual parameter must be specified for every non-optional input or output parameter. When the function module is called, the content of the actual parameter is passed to the input/output parameter, and when the function module is completed, the content of the input/output parameter is passed to the actual parameter.
    TABLES parameters are table parameters. Table parameters are obsolete CHANGING parameters that are typed as standard tables with a header line. If an internal table without a header line or a table body is passed as an actual parameter to a formal parameter of this type, an empty local header line is generated in the function module. If an internal table with a header line is used as an actual parameter, both the table body and the header line are passed to the function module. Pass by value is not possible in formal parameters defined using TABLES. Formal parameters defined with TABLES can be replaced by formal parameters defined with CHANGING. A local work area can be created for the internal table in the function module by using the addition LIKE LINE OF itab of the DATA statement.
    Exceptions
    The exception of a function module are defined on the Exceptions tab page in the Function Builder. Here you can select exception classes to define whether class-based exceptions are declared or non-class-based exception are defined. Class-based exceptions are represented in the above syntax by RAISING, and non-class-based exceptions are represented by EXCEPTIONS.
    The addition RAISING is used to declare class-based exceptions that can be propagated from the function module to the caller. Exceptions in the categories CX_STATIC_CHECK and CX_DYNAMIC_CHECK must be explicitly declared, otherwise a propagation can lead to an interface violation. A violation of the interface leads to the treatable exception CX_SY_NO_HANDLER. Exceptions of the category CX_NO_CHECK are implicitly always declared. The declaration of exceptions of the category CX_STATIC_CHECK is statically checked in the syntax check. For exceptions of the category CX_DYNAMIC_CHECK, the check is not performed until runtime. In a function module in which class-based exceptions are declared with the RAISING addition, the statement CATCH SYSTEM-EXCEPTIONS cannot be used. Instead, the relevant treatable exceptions should be handled in a TRY control structure.
    The addition EXCEPTIONS is used to define a list of non-class-based exceptions that can be triggered in the function module using the statements RAISE or MESSAGE RAISING. Exceptions defined in this way - as with formal parameters - are bound to the function module and cannot be propagated. If an exception of this type is triggered in a function module, and no return value has been assigned to it with the homonymous addition EXCEPTIONS of the CALL FUNCTION statement when the call was made, this leads to a runtime error.
    Note
    For new developments after release 6.10, SAP recommends that you work with class-based exceptions that are independent of the function module.
    RFC is a technology which is used to access a functions (Modules) from
    the remote systems.
    If a function module is set as remote enabled which can be access from
    the remote system via RFC.Eg: U can access the Remote enabled function modules in ur VB,Webdynpro,Java,Visual composer program.
    A function module can be set as remote enabled by SE37->Go to ur FM->click the option Button "remote enabled".
    But Normal function modules can not accessd from the remote system.
    Good Example for RFC enabled function module is : BAPI(Business Application Programming Interface)
    Note: All BAPIs are Remote enabled but not all remote enabled function modules are BAPI.
    CALLING A FUNCTION MODULE:
    1)In U ABAP Editor --> Click "Patter" ---> Selection Option Button "Call Function"
    --> Write the Corresponding FM name --> Hit Enter
    2)The appropriate import ,export Parameters will be displayed in ur editor
    3)Pass the Values Here.
    Also check these links.
    http://www.geocities.com/victorav15/sapr3/abapfun.html
    Check this link:
    http://help.sap.com/saphelp_erp2004/helpdata/en/9f/db988735c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/ef/d94b78ebf811d295b100a0c94260a5/frameset.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/43/41341147041806e10000000a1553f6/frameset.htm
    Check this link:
    http://help.sap.com/saphelp_erp2004/helpdata/en/9f/db988735c111d1829f0000e829fbfe/content.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/ef/d94b78ebf811d295b100a0c94260a5/frameset.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/43/41341147041806e10000000a1553f6/frameset.htm
    See the following links:
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/9f/db970e35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/26/64f623fa8911d386e70000e82011b8/content.htm
    Regards
    Anji

  • Issues passing drillthrough parameters from a multi-level tablix in SSRS 2008 R2

    Hello,
    I am really struggling with trying creating a drillthrough report that starts with a matrix (tablix)  and passing those  parameters. I am using SSRS 2008 R2.
    Here's my scenario:
    I have a matrix that has mulitple levels where you can drill down. Here an example with all the levels open:  
    Active
    Term
    Leave
    Total
    128
    88
    121
    United States
    110
    80
    85
    New York
    65
    30
    57
    Manhattan
    10
    6
    9
    Buffalo
    20
    23
    4
    Albany
    35
    1
    44
    Texas
    45
    50
    28
    Dallas
    40
    30
    22
    Houston
    5
    20
    6
    France
    18
    8
    36
    Centre
    18
    8
    36
    Blois
    7
    2
    8
    Druex
    6
    1
    15
    Tours
    5
    5
    13
    I want to drillthrough to another report - Detail Report. As I understand it, I would click the 65 for New York and I would see the detail for the 65 Active people. If I click the 2 under Blois, I would see the 2 terminated people in Blois. My understanding
    for this to work, the Detail Report would need a a parameter for each of the level possibilities in the matrix that I could click: Country, State, City as well as the Status (Active, Term, Leave).
    While I understand about passing parameters, what I don't understand is how to pass the parameters if they are blank. Let's say I clicked 65 for New York, I would need to pass State = New York  Status = Active. But the remaining parameters (Country
    and City  would be null). I know Country doesn't need to be Null in this case.
    My Detail Report has the parameters defaulted to Null, but whether I put the parameters in a Filter for the dataset or in the query itself, I cannot get it to ignore the Nulls.
    As a crazy work-around (I think) I can put in the Where of the query  something along the lines of: this:
            and (a.Country in (@paramCountryCode) or NULL  in (@paramCountryCode) )
    and I would need to do that for each parameter. Usually I have to use 'ALL' instead of NULL, I'm note sure why.
    Additionally, in the Report Action of the Main Report, I need to pass those parameters for each level and their Status. I am also not clear whether or not I need to put in all the parameters on each of the levels (Country, State, City) of the matrix. And if
    I do, do I need to make the expressions an IIF statement stating whether or not they are In Scope?
    All the examples I was able to find, only showed one or maybe two parameters being passed. Doing the way I am trying, seems convoluted, error-prone and tedious. I really hope that I am wrong.
    Is there a better way to approach drilltrough reports from a matrix when there are multiple levels?
    Thank you for the help.
    ~J

    Hi Jenna_Fire,
    According to your description, you have a matrix contains total for each group on each level. Now your requirement is, when you click on any number (data field or total), it will go to the detail report which returns all the detail information of the people
    within the group scope. For example, if you click on the total of Active users in United States, it will return the detail information of Active users in New York and Texas. Right?
    In this scenario, we should set the parameter (@Country, @State, @City) allow multiple values in both main and detail report. And in Default Value (@Country, @State, @City), query out all distinct values. In the textbox which contains
    those total values, when set use these parameters to run the report, we only need to pass the parameters of parent groups. For example, if we click on the total of Active users in New York, we only need to pass Country, State, Status to detail report, and
    in the detail report, the City parameter will use all distinct values (Default Values) because we don't pass the City parameter. We have tested this case with sample data in our local environment. Here are steps and screenshots for your reference:
    1. Create parameter Country, State, City and Status in both main report and detail report. Set both Available Value and Default Value get values from query (Create a dataset for each parameter, use "select distinct [column] from [table]" as query). Set allow
    multiple values for parameter Country, State and City in both reports.
    2. In corresponding textbox, pass appropriate parameters in go to report Action.
    4. Filter data in detail report (in where clause or using filters).
    5. Save and preview. It looks like below:
    Reference:
    Using Parameters to Connect to Other Reports
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

  • Passing table data to pl sql procedure oaf

    Hi All,
    I have a requirement where i have to pass table data to plsql procedure.
    In the first page i select the REQUISITION and click on RETURN button and it will take me to the next page.
    and in the Next page i will click on APPLY button.
    When i click on APPLY, it will call the procedure and will give input to the procedure whatever has been selected when i have selected requisition.
    Please help. Please tell me the approach how to get this task done. A sample code will work.
    Hope the requirement is clear.
    Thanks in Advance.

    Hi Chinmay,
    Refer below code for Your Requirement.
    //Code For Quering Data
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    Connection conn = pageContext.getApplicationModule(webBean).getOADBTransaction().getJdbcConnection();
    String Query = "SELECT organization_id FROM hr_operating_units WHERE organization_id = fnd_global.org_id";
    PreparedStatement stmt = conn.prepareStatement(Query);
    resultset=stmt.executeQuery();
    while (resultset.next())
    orgId = (String)resultset.getString("ORGANIZATION_ID").toString();
    conn.commit();
    catch(Exception e)
    e.printStackTrace();
    //Code for Pass Resulted column to Procedure Input for delete Particular Record
    Execute parameterized PL SQL procedure from OAF page
    Let us try to call PL/SQL package from OAF page. We will try to remove selected line from Database.
    Package Spec
    CREATE OR REPLACE PACKAGE APPS.genpack_pkg
    AS
    PROCEDURE roll_delete_proc (orgId IN VARCHAR2);
    END genpack_pkg;
    Package Body
    CREATE OR REPLACE PACKAGE BODY APPS.genpack_pkg
    AS
    PROCEDURE roll_delete_proc (orgId IN VARCHAR2)
    AS
    BEGIN
    DELETE FROM pklist_roll_details_temp
    WHERE roll_line_id = orgId;
    COMMIT;
    END roll_delete_proc;
    END genpack_pkg;
    //in Controller PFR
    import java.sql.CallableStatement;
    if (pageContext.getParameter("ActionsButton") != null)
    String val = pageContext.getParameter("ActionsChoice");
    if ("DELLN".equals(val))
    CallableStatement cstmt = null;
    for (OAViewRowImpl row = (OAViewRowImpl)tempvo.first(); row != null; row = (OAViewRowImpl)tempvo.next()) {
    if ((row.getAttribute("Selectflag") == null) ||
    (!row.getAttribute("Selectflag").toString().equals("Y"))) continue;
    try {
    int rollid = Integer.parseInt((String)row.getAttribute("orgId"));
    Connection conn = am.getOADBTransaction().getJdbcConnection();
    if (rollid == 1)
    temphm.put(row.getAttribute("orgId").toString(), row.getAttribute("PoNumber").orgId());
    tempvo.removeCurrentRow();
    else
    try
    StringBuilder sb = new StringBuilder();
    sb.append(rollid);
    String strI = sb.toString();
    System.out.println("Inside else in delete");
    cstmt = conn.prepareCall("{call GENPACK_PKG.tpc_roll_delete_proc(?)}");
    cstmt.setString(1, strI);
    System.out.println("Oracle Callable Statment Execution Init for Delete");
    cstmt.execute();
    catch (SQLException e) {
    throw new OAException(e.toString(), (byte)0);
    }tempvo.removeCurrentRow();
    catch (OAException e) {
    throw new OAException("No row selected", (byte)3);
    Thanks,
    Dilip

  • Pass tables values

    Hi...
    I am trying to call  an external function in R/3 via WebDynpro.  The function uses a table with associated type W3Query. I execute the function in R/3 by adding name/value pairs to the table.
    In WebDynpro, I am setting the same values in table.
    When I execute the function, an exception is thrown by the program that indicates that the parameters aren't present.
    However, the parameter data is being displayed from the context on my output screen.  Any suggestions on how to pass the parameters would be appreciated.....
    In the init method, I am binding the input and output:
    Www_Get_Report_Input wgri = new Www_Get_Report_Input();
        Www_Get_Report_Output wgro = new Www_Get_Report_Output();
        wdContext.nodeWWW_GET_REPORT().bind(wgri);
        wdContext.nodeOutput().bind(wgro);
    In the implementation for testing, I am binding the Query String table:
    Vector v = new Vector();
    W3Query w3q1 = new W3Query(wdContext.currentWWW_GET_REPORTElement().modelObject().modelInstanceId());
    w3q1.setName("_REPORT");
    w3q1.setValue("ZM1BOMX2");
    v.add(w3q1);
    wdContext.nodeQuery_String().bind(v);
    W3Query wqnew = new W3Query(wdContext.currentWWW_GET_REPORTElement().modelObject().modelInstanceId());
    try {
    wdContext.currentWWW_GET_REPORTElement().modelObject().execute();

    hello Stephen
    instead of creating a Vector object you create the objects of ur internal table that you want to pass ( here i think its "W3Query" )
    ie W3Query obj = new W3Query();
       obj.setName("_REPORT");
       obj.setValue("ZM1BOMX2");
       wgri.addW3Query(obj); // wgri is ur  "Www_Get_Report_Input" object.
    repeate this in a loop for "n" no. of records. hope this will help u. no need of creating " Www_Get_Report_Output" object.
    regards,
    Piyush

  • New in NW04s: FL069 TABLES parameters are obsolete (in function modules)

    Can somebody explain what is the fundamental reason for this behaviour in NW04s?
    In Netweaver 2004s system (like ERP2005 ) you get a warning message in SE37:
    FL069 TABLES parameters are obsolete! when defining quite ordinary tables parameter using LIKE and reference to a structure in ddic.
    I now speak normal function modules, not RFC enabled.
    This example of tables parameter definition will cause the warning message:
    return LIKE BAPIRET2
    I of course looked the additional help provided by this message FL069. I understood it as following:
    you should stop using TABLES parameter and more often use CHANGING parameter by referring a TABLE TYPE defined in dictionary.
    if using CHANGING parameter and still want to pass the header line of your internal table you should use a separate parameter (EXPORT or CHANGING parameter)
    Developers have too much used TABLES parameters for passing internal tables for reading (by value) rather than to be modified (by reference). As a consequence, fm could have change the header line without caller to know it.
    in my opinion the message help is missleadingly telling that header line is no longer passed to function module if TABLES parameter is used. I made a small test program and fm (with TABLES paramerer), and everything worked as before.
    The warning message can be ignored by pressing Enter a few times and your fm with TABLES parameter works as it had in older versions of Netweaver.
    SAP is still using a lot of TABLES parameters in their own function modules. For example SD_SALES_HEADER_MAINTAIN.
    So what is the point of this warning message while everything still works as it used to be and SAP uses this same "OBSOLETE" feature itself? Is there anything more fundamental behind this message? Like TABLES paremeters will no longer work in future versions of ABAP (or header line passing will be ignored in future versions) and therefore developers should switch to CHANGING/EXPORT parameters with TABLE TYPES as soon as possible??
    Please understand that I don't need any assistance how to avoid this message, just interested to share your opinions what is the purpose of this warning message.
    That is why I did not marked this thread as a question.
    Br: Kimmo

    Hello,
    This is the view under Tables tab in my function builder:
    I_T_SELECT     TYPE     SRSC_S_IF_SIMPLE-T_SELECT
    I_T_FIELDS     TYPE     SRSC_S_IF_SIMPLE-T_FIELDS
    E_T_DATA     LIKE     SFLIGHT (which I change to YBWxxxx)
    The moment I change to YBWxxxxx it gives me that error '"TABLES parameters are obsolete! "'
    and unfortunately hitting enter several times is not helping  either
    Thanks!

  • What is the better way to pass input parameters between components?

    Hi all,
    I had a dispute with a colleague about passing data between different WDP Development Components. The situation is like this:
    Colleague has a SearchWDP (parent) und I have a BrowseWDP (child). After searching for some objects and clicking a hit in the SearchWDP, the corresponding details should be shown in BrowseWDP, via passing a bunch of parameters such as selected item's id, etc.
    Now which of the following is the better practice:
    - Defining a node in BrowseWDP (child) with isInputParameter set to TRUE, creating a similar node from the same type (simply via ModelBinding, both WDPs are using the same model) in SearchWDP, and defining a mapping between them so that SearchWDP fills the input nodes. From BrowserWDPs perspective, I'd call this Pull method.
    or...
    - Defining a node in BrowseWDP (child) with isInputParameter set to FALSE, creating a setter method in BrowseWDP Interface Controller for the collection (to be passed as parameters) and calling a wdContext.nodeBlaBla().bind(pInputParameterFromModelType). From BrowserWDPs perspective, I'd call this Push method.
    The colleague's argumentation in favor of Push has not convinced me at all and I'd like to ask your opinions. Is there a best practice or recommendation for this scenario? TIA
    ps: Any answer will be rewarded.

    Hi Cuneyt,
    Refer the links below, they are very informative!
    http://help.sap.com/saphelp_nw04s/helpdata/en/22/15a441cd47a209e10000000a155106/content.htm
    http://help.sap.com/saphelp_nw04s/helpdata/en/67/cc744176cb127de10000000a155106/content.htm
    These links are a part of the WebDynpro ABAP documentation, but the concepts are same for WDA and WDJ.
    Considering your scenario, I would recommend the first alternative you have mentioned (if you refer the second link its called External Context Mapping), where component controller context node of component A (SearchWDP) is the source for Interface controller context (same name) of component B (BrowseWDP).
    Thanks.
    Chitrali

Maybe you are looking for