Tables in the subroutine

Hi All,
Can I declare tables in the subroutine?
Since I am accessing table fields in the subroutine I need to declare them in  subroutine.
Is it a bad practice or what?
Regards,
Shaily

Hi,
check the belowcode...
do like this
PERFORM send_file_as_email_attachment
                     TABLES  t_mess_bod
                             t_mess_att
                     USING   p_email
                             'Example .xls documnet attachment'
                             'PDF'
                             v_attachment_name
                             v_attachment_desc
                             p_sender
                             v_sender_type
                    CHANGING v_error
                             v_reciever.
Reward if helpful.
Regards,
Nagaraj

Similar Messages

  • Table for the subroutines

    Hi All,
    Is there any table is there to find all the subroutines, bcoz there is a exit i know and i want to see the code in that exit.
    regards
    sai

    How to find FM user exit by FM name:
    1. In table MODSAP,
    enter the FM name in the field MEMBER.
    (U will get the enhancement name in the field NAME)
    2. Then enter this enhancement name
    in the table MODACT
    in the field MEMBER.
    (U will get the CMOD project name in the field NAME)
    How to find BADI
    Follow the below steps to find out what all BADI's are called when you press any button in any transaction.
    1) Goto se24 (Display class cl_exithandler)
    2) Double click on the method GET_INSTANCE.
    3) Put a break point at Line no.25 (CASE sy-subrc).
    Now
    4) Execute SAP standard transaction
    5) Press the required button for which you need to write an exit logic, the execution will stop at the break point.
    6) Check the values of variable 'exit_name', it will give you the BADI name called at that time.
    7) This way you will find all the BADIs called on click of any button in any transaction.

  • Passing internal table with the subroutines

    hi experts,
                   cud u plz tell me how to pass two internal tables in a perform ,form statement plz make me understand with the help of simple logic....actually i have to subtract the data of current month to the data of previous month depending upon the number of months on selection screen...........thnx in advance....sud i apply some other logic for this........

    Hi
    DATA: BEGIN OF line,
            num1 TYPE i,
            num2 TYPE i,
          END OF line.
    DATA itab LIKE STANDARD TABLE OF line.
    PERFORM fill CHANGING itab.
    PERFORM out  USING    itab.
    FORM fill CHANGING f_itab LIKE itab.
      DATA f_line LIKE LINE OF f_itab.
      DO 3 TIMES.
        f_line-num1 = sy-index.
        f_line-num2 = sy-index ** 2.
        APPEND f_line TO f_itab.
      ENDDO.
    ENDFORM.
    FORM out USING value(f_itab) LIKE itab.
      DATA f_line LIKE LINE OF f_itab.
      LOOP AT f_itab INTO f_line.
        WRITE: / f_line-num1, f_line-num2.
      ENDLOOP.
    ENDFORM.
    Regards,
    S.Suresh.
    Rewards if Useful.

  • How to transport an inner table to a subroutine with change return content?

    now ,i want to perform a subroutine with a inner table,and i will delete some records from the inner table in the subroutine,but i don't want the change in the subroutine break into my main program.in other words,the content of the inner table which was transported to the subroutine keep no change in the main program after perform the subroutine.is there any way to realize it without announce a new inner table?
    Edited by: p y on Jul 4, 2008 5:33 AM

    SELECT A~EBELN
             B~EBELP
             A~LIFNR
             A~ZTERM
             A~WAERS
             A~KDATB
             A~KDATE
             A~INCO1
             A~INCO2
             B~TXZ01
             B~MATNR
             B~WERKS
             B~LGORT
             B~LOEKZ
             B~KTMNG
             B~NETPR
             B~PEINH
            INTO TABLE T_BODATA
            FROM EKKO AS A
            INNER JOIN EKPO AS B
            ON AEBELN = BEBELN
            FOR ALL ENTRIES IN T_BONUM
            WHERE A~EBELN = T_BONUM-EBELN
              AND A~BUKRS IN R_BUKRS
              AND A~BSTYP = 'K'.
    t_bodata is inner table A,then i will extract vendor info from lfa1 use A-lifnr, and plant address use A-werks ,payment info use A-zterm.every time i have to move the
    corresponding field to a new inner table,delete repeat,and then do select use this inner table.i am boring in announce inner table.but in perform , form we can transfer variant by using and doesn't change it's value,
    is there any method like this by using table?

  • How to pass internal tables dynamically in the subroutine

    Hi Folks,
    I need to take 3 input files from presentation server. instead of writing the gui_upload for 3 times i want to have it in a subroutine. but i need to specify the tables structure in the subroutine which is not possible to specify in the form ...endform since 3 itabs are fully different.
    is there a way i can handle this dynamically...!
    Please send the code if u have the same kind of stuff.
    Thanks for ur valuable time.

    Hi Hasmath,
    Try this
    data: begin of itab1 occurs 0,
            field1(2),
          end of itab1.
    data: begin of itab2 occurs 0,
            field1(10),
          end of itab2.
    data: filename type string.
    start-of-selection.
    perform file_upload tables itab1.
    perform file_upload tables itab2.
    *&      Form  file_upload
          text
         -->P_ITAB1  text
    form file_upload  tables   p_itab1." type any
    call function 'GUI_UPLOAD'
      exporting
        filename                      = filename
       FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      tables
        data_tab                      = p_itab1
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    endform.                    " file_upload
    REgards,
    Ravi Kanth Talagana

  • How to create an dynamic internal table with the structure of a ddic table

    Hi all,
    I want to fill ddic-tables (which I already created) in my abap dictionary with data out of CSV-files (which are located on the CRM-Server).  The ddic tables have different amount of fields.
    I started with creating a table which contains the name of the tables and the path to the matching CSV-file.
    At the beginning I'm filling an internal table with part of this data (the name of the ddic-tables) - after that I am looping at this internal table.
    LOOP AT lt_struc ASSIGNING <lfs_struc>.
         LOOP AT lv_itab1 INTO lv_wa1 WHERE ztab_name = <lfs_struc>.
         lv_feld = lv_wa1-zdat_name.
        ENDLOOP.
        CONCATENATE 'C:\-tmp\Exportierte Tabellen\' lv_feld INTO lv_pfad.
        Do.
        OPEN DATASET lv_pfad FOR INPUT IN TEXT MODE ENCODING NON-UNICODE IGNORING CONVERSION ERRORS.
        READ DATASET lv_pfad INTO lv_rec.
        IF sy-subrc NE 0.
          EXIT.
        ENDIF.
        enddo.
        REPLACE ALL OCCURRENCES OF '"' IN lv_rec WITH ''.
        SPLIT lv_rec AT ';' INTO TABLE lt_str_values.
        INSERT into (<lfs_struc>) values lr_str_value.
        CLOSE DATASET lv_pfad.
    endloop.
    This is not the whole code, but it's working until
    SPLIT lv_rec AT ';' INTO TABLE lt_str_values.
    I want to split all the data of lv_rec into an internal table which has the structure of the current ddic-table, but I didn't find out how to do give the internal table the structure of the ddic-table. In the code I used an internal tyble type string but I should be the structure of the matching tabel.
    If I try to create an internal table by using a fiel symbol, I am told, that the data types are not matching.
    Has anyone an idea?

    Hi Mayari,
    though you were successfull with
    METHOD cl_alv_table_create=>create_dynamic_table
    I must warn you not to use it. The reason is that the number of tables created is limited, the method uses GENERATE SUBROUTINE statement and this triggers an unwanted database commit.
    If you know the DDIC structure, it is (starting with ECC6.0) much easier:
    field-symbols:
      <table> type standard table.
    data:
      lr_data type ref to data.
    Create data lr_data type table of (<DDIC structure>).
    assign lr_data->* to <table>.
    The split code can be simplified gaining speed loosing complexity not loosing functionality.
    field-symbols:<fs_s> type any.
    field-symbols:<fs_t> type any.
    SPLIT lv_rec AT ';' INTO table it_string.
    loop at it_string assigning <fs_s>.
      assign component sy-tabix of wa_string to <fs_t>.
    if sy-subrc = 0.
      <fs_t> = <fs_s>.
    endif.
    at last.
      append <fs_itwa3> to <ft_itab3>.
    endat.
    endloop.
    Though it may work as Keshav.T suggested, there is no need to do that way.     
    Regards,
    Clemens

  • Problem with accesing table field in subroutine

    Hello All,
    I am calling a subroutine multiple times and everytine passing 2 different tables (with different structures) int he subroutine.
    PERFORM fill_itabs TABLES t_adnat_bus_in
                                               gt_adnat_bus_in_dummy
                                   USING  p_filename..
    PERFORM fill_itabs TABLES t_adcust_ban_in
                                               gt_adcust_ban_in_dummy
                                  USING  p_filename.
    The following is the subroutine definition.
    FORM fill_itabs  TABLES   p_t_table
                              p_t_table_dummy
                     USING    p_filename     .
          p_t_table_dummy[] = p_t_table[].
          SORT p_t_table_dummy BY cust_id.
    ENDFORM.
    I am getting a syntax error which states -
    <u><b>"The specified type has no structure and therefore no component called "cust_id"."</b></u>
    The problem is the structure of the table passed to subroutine is different in the
    different times when it is called and so in subroutine defintion I cannot mention an explicit structure for the table.
    Could anyone please suggest how to avoid this?
    Regards,
    Indrajit.

    Hi Indrajit,
    you can add one more formal parameter to the subroutine, which will act as a flag.
    while calling the subroutine, you can set the flag if cust_id field is there in the structure of the table, else dont set the flag.
    And in the the subroutine, put check on the flag status before writing
    p_t_table_dummy[] = p_t_table[].
    SORT p_t_table_dummy BY cust_id.
    Ex:
    FORM fill_itabs TABLES p_t_table
                                         p_t_table_dummy
                            USING p_filename
                                       p_flag.
    if p_flag eq 'X'.
    p_t_table_dummy[] = p_t_table[].
    SORT p_t_table_dummy BY cust_id.
    endif.
    ENDFORM.

  • How to specify the type of table in the form parameters

    How to specify the type of table in the form parameters. for example, how to specify the type of table "vacancies".
    FORM getcertainday
                       USING
                       vacancies TYPE STANDARD TABLE
                       efirstday LIKE hrp9200-zfirst_day
                       lfristday LIKE hrp9200-zfirst_day.

    Hi
    Are you asking about subroutine program to declare a variable for perform statement etc
    if it so check this coding
    DATA: NUM1 TYPE I,
    NUM2 TYPE I,
    SUM TYPE I.
    NUM1 = 2. NUM2 = 4.
    PERFORM ADDIT USING NUM1 NUM2 CHANGING SUM.
    NUM1 = 7. NUM2 = 11.
    PERFORM ADDIT USING NUM1 NUM2 CHANGING SUM.
    FORM ADDIT
           USING ADD_NUM1
                 ADD_NUM2
           CHANGING ADD_SUM.
      ADD_SUM = ADD_NUM1 + ADD_NUM2.
      PERFORM OUT USING ADD_NUM1 ADD_NUM2 ADD_SUM.
    ENDFORM.
    FORM OUT
           USING OUT_NUM1
                 OUT_NUM2
                 OUT_SUM.
      WRITE: / 'Sum of', OUT_NUM1, 'and', OUT_NUM2, 'is', OUT_SUM.
    ENDFORM.
    If your issue is some other can u explain me clearly
    Regards
    Pavan

  • Passing the dynamic internal tables to the calling program

    Hello,
    From my user exit USEREXIT_MOVE_FIELD_TO_VBAP in program MV45AFZZ I am calling a routine to build dynamically an internal table. I get A DUMP in the perform statement. Please see below.
    *FORM USEREXIT_MOVE_FIELD_TO_VBAP.*
    *Global declarations
    RANGES: KSCHL      FOR A605-KSCHL,
                   KUNNR     FOR A605-KUNNR,
                   MATNR     FOR A605-MATNR.
    field-symbols: <dyn_table> type standard table,
                         <dyn_wa>,
                         <dyn_field>.
    *Internal tables and work areas
    data: dy_table type ref to data,
            dy_line  type ref to data,
            xfc type lvc_s_fcat,
            ifc type lvc_t_fcat.
      KSCHL-sign   = 'I'.
      KSCHL-option = 'EQ'.
      KSCHL-low    = 'ZB00'.
      APPEND KSCHL.
      if not vbap-matnr is initial.
        MATNR-sign   = 'I'.
        MATNR-option = 'EQ'.
        MATNR-low    = vbap-matnr.
        APPEND MATNR.
      endif.
      if not vbak-kunnr is initial.
        KUNNR-sign   = 'I'.
        KUNNR-option = 'EQ'.
        KUNNR-low    = vbak-kunnr.
        APPEND KUNNR.
      endif.
    perform get_data(ZSD_CARRIER_SELECTION)
                               TABLES KAPPL
                                             KSCHL
                                             KUNNR
                                             MATNR
                              CHANGING <dyn_table>.
    *ENDFORM.*
    *Then in program ZSD_CARRIER_SELECTION*
    *Global declarations
    RANGES: KSCHL      FOR A605-KSCHL,
                   KUNNR     FOR A605-KUNNR,
                   MATNR     FOR A605-MATNR.
    field-symbols: <dyn_table> type standard table,
                         <dyn_wa>,
                         <dyn_field>.
    *Internal tables and work areas
    data: dy_table type ref to data,
            dy_line  type ref to data,
            xfc type lvc_s_fcat,
            ifc type lvc_t_fcat.
    *FORM get_data  CHANGING dyn_table.*
      select single * into w_t685
      from t685 where KSCHL eq P_KSCHL
                  and KOZGF ne space.
      select * into table i_T682I
      from T682I where KVEWE = w_t685-KVEWE
                   and KAPPL = w_t685-KAPPL
                   and KOZGF = w_t685-KOZGF.
      loop at  i_T682I into W_T682I.
        CONCATENATE 'A' W_T682I-KOTABNR INTO w_dd02l-TABNAME.
        itables-TABNAME = w_dd02l-TABNAME.
        collect itables.
      endloop.
      loop at itables.
        perform get_structure tables ifc
                              using  itables-TABNAME.
      endloop.
      loop at ifc into xfc where key = 'X'.
        clear i_fields.
        i_fields-FIELDNAME = xfc-fieldname.
        i_fields-sign      = 'I'.
        i_fields-option    = 'EQ'.
        if xfc-fieldname = 'KSCHL'.
          i_fields-low = 'ZB00'.
        endif.
        append i_fields.
      endloop.
      call method cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ifc
        IMPORTING
          ep_table        = dy_table.
      assign dy_table->* to <dyn_table>.
      create data dy_line like line of <dyn_table>.
      assign dy_line->* to <dyn_wa>.
    *ENDFORM.*
    *FORM get_structure tables ifc type LVC_T_FCAT*
                       *using TABNAME.*
      data : idetails type abap_compdescr_tab,
             xdetails type abap_compdescr.
      data : ref_table_des type ref to cl_abap_structdescr.
    * Get the structure of the table.
      ref_table_des ?=
          cl_abap_typedescr=>describe_by_name( TABNAME ).
      idetails[] = ref_table_des->components[].
      select * into table i_dd03l
      from dd03l where tabname = tabname.
      sort i_dd03l by fieldname.
      loop at idetails into xdetails.
        clear xfc.
        xfc-fieldname = xdetails-name .
        xfc-datatype  = xdetails-type_kind.
        xfc-inttype   = xdetails-type_kind.
        xfc-intlen    = xdetails-length.
        xfc-decimals  = xdetails-decimals.
        read table i_dd03l with key fieldname = xfc-fieldname
                                    KEYFLAG   = 'X'.
        if sy-subrc = 0.
          xfc-key   = 'X'.
        endif.
        collect xfc into ifc.
      endloop.
    *ENFORM.                    "get_structure*
    Thanks in advance.
    Please use code tags in the future when pasting code.
    Edited by: Rob Burbank on Mar 2, 2009 4:29 PM

    Hi,
    In the calling program whereyou are calling the subroutine...
    perform get_data(ZSD_CARRIER_SELECTION)
                               TABLES KAPPL
                                             KSCHL
                                             KUNNR
                                             MATNR
                              CHANGING <dyn_table>.
    you have made use of field symbol <dyn_table> which you have not assigned.... due to which you are getting a dump....
    so before the call you have to assign this field symbol and then use it in the call...
    just assing to some dummy type and then you pass it using changing...
    later on in the called program you can unassign the field-symbol as soon as you enter in the subroutine.
    data itab type standard table of scarr.
    assign itab to <dyn_table>.
    perform get_data(ZSD_CARRIER_SELECTION)
                               TABLES KAPPL
                                             KSCHL
                                             KUNNR
                                             MATNR
                              CHANGING <dyn_table>.
    even if this does not solve your problem try debugging and check at which line it is going for a dump... so that it gives a clear idea where exactly is the fault
    Regards,
    Siddarth

  • How to pass ranges to the subroutine

    hi all,
    my requirement is i need a write a program where i am having fields like kunnr, matnr, maktx, customer name etc.
    the user gives any of above values in diff input boxes (parameter).
    for every text entry that gets, i need to populate the value of the (maktx, customer name, etc) in ranges. for different kinds of  entries i want to write the subroutine since i am carrying out the same functionality for all the inputs that i get.
    is it possible to do?

    My 2 cents, if you don't want to use macros: define a FORM routine, as follows:
    FORM fill_range  USING    i_parameter TYPE any
                     CHANGING et_range    TYPE table.
      CONSTANTS:
        lc_sign   TYPE bapisign VALUE 'I',
        lc_option TYPE bapioption VALUE 'EQ'.
      FIELD-SYMBOLS:
        <sign>     TYPE bapisign,
        <option>   TYPE bapioption,
        <low>      TYPE ANY,
        <ls_range> TYPE ANY.
      DATA:
        lr_range TYPE REF TO data.
    You may want to catch exceptions starting from here
      CREATE DATA lr_range LIKE LINE OF et_range.
      ASSIGN lr_range->* TO <ls_range>.
      ASSIGN COMPONENT 'SIGN'   OF STRUCTURE <ls_range> TO <sign>.
      ASSIGN COMPONENT 'OPTION' OF STRUCTURE <ls_range> TO <option>.
      ASSIGN COMPONENT 'LOW'    OF STRUCTURE <ls_range> TO <low>.
      <sign>   = lc_sign.
      <option> = lc_option.
      <low>    = i_parameter.
    ENDCATCH.
      APPEND <ls_range> TO et_range.
    ENDFORM.                    " fill_range
    Assuming that your parameter is called p_matnr, and the range you want to fill is lr_matnr, you would call this routine as follows:
    PERFORM fill_range
      USING
        p_matnr
      CHANGING
        lr_matnr[].
    This may seem tremendously complicated, but it's clean, fast, "debuggable", and it works.
    Greetz
    Rainer

  • I am trying to have access tables of the Sql Server through the Oracle

    I am trying to have access tables of the Sql Server through the Oracle and this being occurred the error:
    ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Generic Connectivity using ODBC][H006] The init parameter <HS_FDS_CONNECT_INFO> is not set.
    Please set it in init <orasid>.ora file.
    ORA-02063: preceding 2 lines from HSMSQL
    I created the ODBC with name HSMSQL.
    I made all the configurations in the archives
    tnsnames.ora:
    HSMSQL=
    (DESCRIPTION=
    (ADDRESS= (PROTOCOL = tcp)(HOST = wsus)(PORT = 1521))
    (CONNECT_DATA =
    (SID = HSMSQL)
    (HS = OK)
    listener.ora:
    (SID_DESC = (SID_NAME=HSMSQL)
    (ORACLE_HOME= C:\oracle\ora92)
    (PROGRAM =hsodbc)
    initHS_SID.ora:
    HS_FDS_CONNECT_INFO = HSMSQL
    HS_FDS_TRACE_LEVEL = OFF
    -- Create database link
    create database link HSMSQL.US.ORACLE.COM
    connect to TESTE identified by TESTE2
    using 'HSMSQL';
    But when I execute query the error occurs:
    Select * from TabTeste@HSMSQL
    ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Generic Connectivity using ODBC][H006] The init parameter <HS_FDS_CONNECT_INFO> is not set.
    Please set it in init <orasid>.ora file.
    ORA-02063: preceding 2 lines from HSMSQL
    Please they help me, thanks, Paulo.

    Hi,
    It seems that your configuration is Ok. By the way, the workaround for this error is:
    ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
    [Transparent gateway for ODBC][H001] The environment variable <HS_FDS_CONNECT_INFO> is not set.
    * Set HS_FDS_CONNECT_INFO in the hs{sid}init.ora file to the data source name.
    Example: HS_FDS_CONNECT_INFO = <ODBC DataSource Name>
    * Make sure the hs{sid}init.ora file exists in the ORACLE_HOME/hs/admin directory and has the same name as the SID in the LISTENER.ORA.
    Example: If SID=hsodbc in the listener.ora file, then the hs{sid}init.ora file would be named ORACLE_HOME/hs/admin/inithsodbc.ora
    For more information see if this [url http://forums.oracle.com/forums/thread.jspa?forumID=61&threadID=576975]thread can help you.
    Cheers

  • "Failed to open the connection" problem related to multiple tables in the report?

    Post Author: Gadow
    CA Forum: Data Connectivity and SQL
    System specifics:
    Web environment using ASP.Net 2.0 (from Visual Studio 2005 Professional)
    Crystal Reports 2008, v. 12.0.0.549, Full
    We have set up the following method for displaying reports via our website:
    User is sent to a report-specific page. The user is given some filtering options specific to the report that will be viewed. When the user has specified the data filters, the user clicks a button.
    The page wraps up the report parameters -- selection query, formula values, report location, the name to be displayed, etc. -- into a class which gets put into the Session object.
    The page redirects to DisplayReport.aspx. ALL reports redirect to this page.
    DisplayReport.aspx retrieves the report parameters from Session. A ReportDocument object is created and loaded, then set with the data from the parameters class.
    A ConnectionInfo object is created and set with the relevant log on credentials. All of the reports draw from the same database, so the connection information is hard-coded as the same for all reports. The page then iterates through all of the tables in the Database.Tables collection of the ReportDocument and calls ApplyLogOnInfo to each table using the ConnectionInfo object.
    The page is rendered and the user gets the filtered report.
    We currently have seven reports. Five reports work fine and display the correctly filtered data with no error messages. Two reports generate a Failed to open the connection error and do not display. I have verified that the queries being sent to DisplayReport.aspx are valid, and as I said the connection information itself is hard-coded in the one page that displays the reports and this is identical to all reports.
    The five reports that do work all have a single data table, either an actual database table or a single view. The two reports that do not work all have multiple tables. As far as I can tell, this is the only difference between the sets; all seven reports are based on the same DSN and I have verified the database on all of the reports. All of the reports were written using Crystal Reports 8, and all of the reports display fine in a Windows app I wrote some years ago using Crystal Reports 8. Again, the only difference between those reports that do work and those that do not is the number of tables used in the report: one table or view in the reports that display, more than one table (tables only, none use views) in the reports that do not display.
    As for the code I am using, below are the relevant methods. The function MakeConnectionInfo simply parses out the components of a standard SQL connection string into a ConnectionInfo object. DisplayedReport is the ID of the CrystalReportViewer on the page.Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim o As Object = Session("ReportParams")
            Dim ReportURL As String = ""
            'Verify that there is a ReportParameters object
            If o Is Nothing OrElse o.GetType IsNot GetType(ReportParameters) Then 'Redirect to the error page
                Response.Redirect("/errors/MissingReport.aspx")
            End If
            ReportParams = CType(o, ReportParameters)
            'Verify that the report exists
            ReportURL = "/Reports/ReportFiles/" + ReportParams.ReportName
            ReportPath = Server.MapPath(ReportURL)
            If Not File.Exists(ReportPath) Then
                Response.Redirect("/errors/MissingReport.aspx?Report=" + ReportParams.ReportTitle)
            End If
            InitializeReport()       
        End Sub
        Protected Sub InitializeReport()
            Dim RD As New ReportDocument
            Dim CI As ConnectionInfo = MakeConnectionInfo(DB_Bonus)
            Dim RPF As CrystalDecisions.Shared.ParameterField = Nothing
            RD.Load(ReportPath)
            If ReportParams.SelectString <> "" Then
                Dim Adapt As New SqlDataAdapter(ReportParams.SelectString, DB_Bonus)
                Dim DS As New Data.DataSet
                Adapt.Fill(DS)
                RD.SetDataSource(DS.Tables(0))
            End If
            For Each kvp As KeyValuePair(Of String, String) In ReportParams.Formulas
                Dim FFD As FormulaFieldDefinition = Nothing
                Try
                    FFD = RD.DataDefinition.FormulaFields(kvp.Key)
                Catch ex As Exception
                    'Do nothing
                End Try
                If FFD IsNot Nothing Then
                    Select Case FFD.ValueType
                        Case FieldValueType.DateField, FieldValueType.DateTimeField
                            If IsDate(kvp.Value) Then
                                FFD.Text = String.Format("Date()", Convert.ToDateTime(kvp.Value).ToString("yyyy, MM, dd"))
                            Else
                                FFD.Text = "Date(1960, 01, 01)"
                            End If
                        Case FieldValueType.StringField
                            FFD.Text = String.Format("""""", kvp.Value)
                        Case Else
                            'For now, treat these as if they were strings. If things blow up here,
                            'we will need to add the appropriate formatting for the field type.
                            FFD.Text = String.Format("""""", kvp.Value)
                    End Select
                End If
            Next
            For Each T As CrystalDecisions.CrystalReports.Engine.Table In RD.Database.Tables
                Dim TLI As TableLogOnInfo = T.LogOnInfo
                TLI.ConnectionInfo = CI
                T.ApplyLogOnInfo(TLI)
            Next
            DisplayedReport.ReportSource = RD
        End Sub
    Does this approach not work with reports containing multiple tables, or is there something I'm missing? Any meaningful suggestions would be much appreciated.

    Dear Dixit,
    Please refer to the Crystal report landing page to get the details
    information about the support for crystal report issues.
    Please use the following thread to post your questions related to
    crystal report.
    SAP Business One and Crystal Reports
    Regards,
    Rakesh Pati
    SAP Business One Forum Team.

  • Table and the filed of the codition type in PO

    hi,
    can somebody tell me in a purchase oder what is the table and the field which i can get the "condition" 
    Gayani

    hi Gayani,
    try table EKKN
    ec

  • Best practice when FACT and DIMENSION table are the same

    Hi,
    In my physical model I have some tables that are both fact and dimension table, i.e. in the BMM they are of course separated into Fact and Dim source (2 different units) and it works fine. But I can see that there will be trouble when having more fact tables and I e.g. have a Period dimension pointing to all the different fact tables (different sources).
    Seems like the best solution to this is to have an alias of the fact/transaction table and have 2 "copies" of the transaction table (one for fact and one for dimension table) in the physical layer. Only bad thing is that there will then allways be 2 lookups in the same table when fetching data from the dimension and the fact table.
    This is not built on a datawarehouse - so the architecture is thereby more complex. Hope this was understandable (trying to make a short story of it).
    Any best practice on this? Or other suggestions.

    Id recommend creation of a view in the database. if its an oracle DB, materialised views would be a huge performance benefit. you just need to make sure that the MVs are updated when the source is updated.
    -Domnic

  • Not able to see data in the qualifier table of the main tbl , Data Manager

    Hi,
    I have an issue of not able to see the data of two qualified table after populating them.
    It is in mdm-5.5 ps4.
    When populating data first time ,it shows up in those two table slots in the right side of the Data Manager.
    However subsequently it does not show up in those slots , only by right click on the table and selecting "View/edit", the window pops up where those data shows up.
    However unlike other qualified tables the data does not showup automatically for these two tables.
    Appreciate any suggestion or feedback on this.
    regards,
    -reo

    You may have checked the Filter Check Box next to the Qualified Lookup cell in Data Manager, when the current table is the Main Table.
    You use the Filter Checkbox to limit the qualified table records by the current search selections.
    Secondly, you have see if there are any Qualified Links to the main table record you are viewing.
    If not, create the Qualified links in Data manager, for the main table record and the Qualified Table Record.
    Once this is done, you will see the Display fields of the Qualified table for which the links exists for the given main table record.
    Message was edited by:
            Adhappan Thiagarajan

Maybe you are looking for

  • Change encoding of input message sent by J2EE Adapter

    Hi all, I get a input message with a wrong encoding (Sender SMTP Adapter). Within XML prolog, there's a declaration of UTF-8. Having a look at the message, it's ISO-8859-1 encoded. That mean's I've to do one of the following options: a) change encodi

  • Directory Walker for Filesystem in J2ME

    Anyone could help with a Walker to list all contents of a particular directory and subdirectory? What's Wrong with the following code snippet? Consider fc is a FileConnection Object already open to the root... public void parseRecursive(String dirNam

  • Precision problem in Interactive reports

    Hi, I have a IR in which one of the fields is having the datatype number(10,2), value stored in it is 0.8 when i execute query it gives proper result , but when the same query put as a source for IR it displays .8 i want it to display as 0.8 can anyo

  • Photoshop Elements 2.0 won't work on newer Mac OSX

    I use a MacBookPro and when I finally upgraded my OSX system to 10.6.8, my Photoshop Elements 2.0 no longer functions.  There is no error message.  The program closes and this message appears... "An unexpected and unrecoverable problem has occurred b

  • Contacts don't accurately sync with Address Book

    The contacts information on my iPod Touch don't totally match with the information in my Address Book on my iMac with Snow Leopard. I just totally Restored my iPod and reloaded everything from my iMac. Most of the contacts came over but not all. I'm