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)

Similar Messages

  • RFC Lookup Table Parameters Reusability

    Dear All
    My Requirement is to Map fields in IDoc from the File data ,there are some fields in idoc for which i need to fetch data from SAP.
    For this i am using RFC Look up. i am retrieving values from table parameters for RFC.
    and this Table parameters are being used muliple times in Mapping.
    Right now i have to execute the same RFC for set of input data atleast 5 r 6 times.
    This is effective Performance of the Interface
    Is there any concept of Reusuability in RFC Lookup while Mapping in PI.?
    Can we use Java Initialization section in mapping for executing the RFC once and using the output data in table parameters while mapping various target fields.
    Hoping for a Positive Reply
    Regards
    Bhasker

    Hi,
    1) If it is PI 7.1 there are mapping enhancements, such as
       a) Variables for storing intermediate mapping value,
       b) for RFC lookup etc.
    you can find the 7.1 pdfs from SDN
    2) you can have a two stage mapping, putting them sequentially in Interface mapping object.
      First step : Source to Target (orignal target structure)
    here you can do all the mapping and also One time RFC lookup, but leaving the other fields where you need the lookup values again
      Second step : Target to Target
    here already mapped target becomes your input & you know the fields which have the value & the fields that you need to map again and all other fields are one to one mapping.
    Regards
    Vishnu

  • 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

  • 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

  • RFC Lookup - BAPI-TABLE Parameters problem

    Hello All,
    I had a scenario where i need to export parameters and am supposed to get import parameters from BAPI between source and target structures.
    like -
    source --> BAPI execution = result --> target
    We had succeeded in getting those but the only problem is with TABLE parameters in that BAPI.
    How can we achieve it.
    Faster reply would be appreciated.
    Thanks & regards
    Reddy

    Hi VJ,
    Its not a simple source-target mapping .
    For Ex :
    Source-Bapi-Idoc
    Source will send some parameters to BAPI and bapi will execute it and respond with values in table parameter of the bapi and result would be assigned to idoc-field.
    For this i am using RFC Look up with sample code as :
    String rfcxml ="<ns0:Z_BAPI xmlns:ns0=\"urn:sap-com:document:sap:rfc:functions\">" +
    "     <A>" + A + "</A>" +       --- Export parameters
    "     <B>" + B + "</B>" +       --- Export parameters
    //"                       <TABLE><FIELD1>" + FIELD2 + "</FIELD1></TABLE>" +
    //"                       <TABLE><FIELD2>" + FIELD2 + "</FIELD2></TABLE>" +
    //"                       <TABLE><FIELD3>" + KDMAT+ "</FIELD3></TABLE>" +
    //          "<FIELD1>" + FIELD1 + "</FIELD1>" +
    "</ns0:Z_BAPI> "  ;
    Passing A & B as export parameters and getting TABLE-FIELD1&2&3 as response.
    I hope some problem in the syntax.
    Regards,
    HP

  • Error in Java Program when passing table to RFC function . JCO is used

    Hai All,
    I developed a JAVA application to update data into SAP using JCO via RFC. When i pass table to the function module i am getting the below error
    com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: Conversion from type T to D not supported.
    Please let me know how to solve this.
    Below is my code
    IRepository m_Repository;
    IFunctionTemplate ftemplate;
    JCO.Table PwdReq;
    JCO.Function function;
    m_Repository = JCO.createRepository("MYRepository", client);
                ftemplate = m_Repository.getFunctionTemplate("Z_GESEFM_UPD_PWD_RESET_REQUEST");
    // Create a function from the template
    function = new JCO.Function(ftemplate);
    // Feeding in input parameters
    PwdReq = function.getTableParameterList().getTable("RESULT2");
    String userid = "PATCHTEST14 ", reqDate = "",reqNo = "01",reqStatus = "03", boxID = "09",ind2 = "X",
                        lcode = "abcd",rem = "One record testing";
    PwdReq.appendRow();
                    PwdReq.setValue(userid, "USERID");
                    PwdReq.setValue(reqNo,"REQ_NO");
                    PwdReq.setValue(reqStatus,"REQ_STATUS");
                    PwdReq.setValue(boxID,"BOX_ID");
                    PwdReq.setValue(ind2,"IND2");
                    PwdReq.setValue(lcode,"LCODE");
                    PwdReq.setValue(rem,"OTHER_REMARKS");
                // execute the function with the input parameters
                client.execute(function);
    Thanks & Regards,
    H.K.Hayath Basha.

    hi,
    I am not very good in Java.
    but try this code to giving input parameter.
    function.getImportParameterList().setValue(userid, "USERID");
    if you are not using Try and Catch blok then use Try and Catch blok,
    Regards
    Manoj

  • RFC Tables Parameters

    Hello all
    I am having performance issues relating to an RFC call between CRM and ECC. I have been asked to get an RFC call between the two working as quickly as possible.
    The code is as optimised as possible, I have replaced onerous FM calls with bespoke code and optimised select statements.
    But for some reason I have a niggling thought in the back of my mind that no tables should be passed to the RFC FM in the IMPORTING parameters section and should be passed as TABLES parameters only.
    Does anyone know if this is true or not. I have found OSS note 888777 which says that this is true in relation to ABAP-JAVA comms but it doesn't say whether this is the case in ABAP-ABAP.
    Any advice/comments most welcome.

    Just the once.
    The signature of the FM is:
    *"  IMPORTING
    *"     VALUE(I_FIELD1) TYPE  ANYFIELD OPTIONAL
    *"     VALUE(IT_TAB1) TYPE  ANYTABLE
    *"     VALUE(I_FIELD2) TYPE  ANYFIELD OPTIONAL
    *"     VALUE(I_FIELD3) TYPE  ANYFIELD OPTIONAL
    *"     VALUE(IT_TAB2) TYPE  ANYTABLE OPTIONAL
    *"  EXPORTING
    *"     VALUE(EV_RETURN) TYPE  BAPIRET2
    *"  TABLES
    *"      IT_TAB3 STRUCTURE  ANYTABLE
    I'm just wondering whether removing the IT_TAB1 and IT_TAB2 parameters from the IMPORTING section and placing them in the TABLES section would have any performance improvements.

  • 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).

  • RFC Passing Parameters

    Wondered if you could help me, I am from Basis ........
    We are trying to automate some of our transport functions in CTS+ and I have highlighted several RFC that could help ......
    CTS_API_CREATE_CHANGE_REQUEST,
    TRINT_*
    Is it possible to pass the parameters requered by the RFC in a script from a non SAP system ???? and how would I know the exact command line to enter ??
    Thanks

    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)

  • Passing values to RFC/BAPI Table

    Hi,
    I am having a very strange problem. While passing the values to RFC/BAPI table using add method the values are not passed to backend SAP. Below is the code which I am using just to pass some data in RFC/BAPI table.
    The same code was working few days back. Is there any configuration in JCO or any other problems other than the code?
    Your l help is greatly appreciated.
      public void executeZtest_Function_Input( )
    //    //@@begin executeZtest_Function_Input()
    //     //$$begin Service Controller(943377124)
           IWDMessageManager manager = wdComponentAPI.getMessageManager();
           try{
      Ztest_Function_Input input = new Ztest_Function_Input();
           for (int i=0; i<5;i++){
                Zhr_Ear_Cclist cc =new Zhr_Ear_Cclist();
                cc.setFi_User("[email protected]");
                input.addIcc_List(cc);
           wdContext.nodeZtest_Function_Input().bind(input);
           wdContext.currentZtest_Function_InputElement().modelObject().execute();
                wdContext.nodeOutput().invalidate();
           } catch(WDDynamicRFCExecuteException ce) {
                manager.reportException(ce.getMessage(), false);
         //$$end
        //@@end

    Hi Raksh,
              I also got the same problem. Please check the following ways then you will solve problem.
    1. First check the appropriate BAPI in SAP GUI Software. You have to determine where is the problem?. Is it in Dynpro or BAPI itself?.
    2. Suppose the BAPI structure change you will wont't run. If BAPI strusture change you have to reimport BAPI.
    3. Please check the JCo connectio using test Button. Then redeploy your project.
    4. Rebuild your project then redeploy.
    Check the above ways you may get answer.
    Kind Regards,
    S.Saravanan

  • Passing table values to RFC

    how can i pass tables to RFC as input?
    Thanks.

    Thanks for the replies.
    I have actually written the below code, but not getting the output.
    Model1 mod=new Model1();
      zbapi_Input ip=new Zbapi_Input(mod);
                ztable tab1;
                tab1=new Ztable(mod);
                tab1.setcode("2100");
              input.addZtable(tab1);
                wdContext.nodezbapi_Input ().bind(ip);
                try {
                   wdContext.currentzbapi_Input Element().modelObject().execute();
              } catch (ARFC2ModelExecuteException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();

  • 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 

  • Using tables parameters for RFC

    Hi All
    I am trying to use tables parameter for a Remote Function Call.
    It says it is obsolete and not working, we are using ECC6.0 version of SAP.
    Any help??

    Instead, you should use a table type in a IMPORTING or EXPORTING parameter.  Create the table type in SE11 and then reference this table type in your parameter in the IMPORTING/EXPORTING tab.  The use of TABLES parameters section is obselete.
    Regards,
    Rich HEilman

  • 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!

  • 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

Maybe you are looking for