Function Module performance in Crystal Reports - Best practices

Hi all,
We are following a function module based approach for our crystal reporting needs. We tried to follow an infoset approach, but found that most of the critical fields required for reports were retrieved from function modules and bapis.
Our reports contain some project filters/parameter fields based on which the task reports would be created. I was wondering what would be the best approach/best practices to be considered while designing the FM so as not to impact the crystal report performance? 
We created a sample FM in our test system with just the table descriptions ( without the input parameters) which would retrieve all the projects and found that crystal reports crashed while trying to retrieve all the records. I am not sure if this is the right approach since this is our project in using FMs for crystal reports.
Thank you
Vinnie

yes. We did try following the infoset approach against the tables however since our project reports contain long text fields and status texts ( retrieved via FMs), we opted for the FM approach. Do you know how texts can be handles from ABAP to Crystal reports?

Similar Messages

  • Crystal Reports (Best Practice)

    Hi,
    We are currently using Crystal Reports (the built-in one) for SAP 8.8. We are currently maintaining around 400 crystal reports and all of them have been uploaded in SAP under each of the Modules.
    I am trying to sort the reports now, however, the default sorting of the reports is based on which report was first uploaded. Based on best practices, how can I sort the reports in such a way that the users won't have to scroll down through more than 400 reports (of which, these were not sorted alphabetically)?

    Hi,
    As you know, this is designed as is. In other word, there is no option to sort. You have to reload them as the order you need.
    Thanks,
    Gordon

  • Crystal Report Best Practice Question

    Hello All;
    I have got a task regarding parameter passing to Crystal Report via Crystal Report, I would like to find best way to achieve it.
    Imagine that I have got parameterized and non reports-parameterized. I am developing a report manager that will enable users to subscribe to the reports and schedule them with their parameters. I have got a subscription web page with the list of reports. When a user wants to subscribe to a report and schedule it, if there is no parameter in the report, it is fine but if there is any parameter that needs to be passed to the report(which we can find from rpt file), user should be able to enter these parameters values via a panel in the page. and I will save those parameters' values to the database.
    Effectively, I need to create a parameter entry panel to get the parameters and save them to the database with their type, value and so on, then I need to use these parameters programmatically for exporting reports to the different file formats.
    Basically, I must develop parameter entry panel run time in accordance with the parameter types that the corresponding report has.
    Does anyone have any idea what the best way is to achieve it?
    Thanks for your help from now on and please ask for further clarification if needed/
    Kind Regards.

    Hi, mkosucu,
    You can read the parameters out of the report at run time, prompt the user for them, then schedule it with those parameter values.
    To get the parameters, use
    ReportClientDocument.DataDefController.DataDefinition.ParameterFields
    There's a tutorial that can be of some help:
    [BOE XI R2 Developer Library|http://devlibrary.businessobjects.com/BusinessObjectsXIR2SP2/en/devsuite.htm]
    In the left pane select
    .NET developer guide and API reference
    ..Tutorials
    ....Client Desktop Tutorials
    ......Scheduling a report containing specific parameter values
    Regards,
    Bryan

  • Performance Issue Crystal Report and Oracle

    Hello,
    We have one procedure that takes 3 input parameters and returns Cursor from Procedure that is used to design the report. There is no caluculation involved here and cursor is opended dynamically. We are using Oracle Native connection.
    When we click on preview button it takes lots of time ( >10 Mins) to show complete data. While we call the same procedure in application and generate HTML report using Cursor returned it is done in < 15 Seconds. Can some point me where to look into to improve the performance of Crystal Report.
    DB: Oracle 10G
    CR: Version XI

    Hi Vadiraja
    The performance of a report is related to:
    External factors:
    1. The amount of time the database server takes to process the SQL query.
    ( Crystal Reports send the SQL query to the database, the database process it, and returns the data set to Crystal Reports. )
    2. Network traffics.
    3. Local computer processor speed.
    ( When Crystal Reports receives the data set, it generates a temp file to further filter the data when necessary, as well as to group, sort, process formulas, ... )
    4. The number of record returned
    ( If a sql query returns a large number of records, it will take longer to format and display than if was returning a smaller data set.)
    Report design:
    1. Where is the Record Selection evaluated.
    Ensure your Record Selection Formula can be translated in SQL, so the data can be filter down on the server, otherwise the filtering will be done in a temp file on the local machine which will be much slower.
    They have many functions that cannot be translated in SQL because they may not have a standard SQL for it.
    For example, control structure like IF THEN ELSE cannot be translated into SQL. It will always be evaluated in Crystal Reports. But if you use an IF THEN ELSE on a parameter, it will convert the result of the condition to SQL, but as soon as uses database fileds in the conditions it will not be translated in SQL.
    2. How many subreports the report contains and in section section they are located.
    Minimise the number of subreports used, or avoid using subreports if possible because
    subreports are reports within a report, and if you have a subreport in a details section, and the report returns 100 records, the subreport will be evaluated 100 times, so it will query the database 100 times. It is often the biggest factor why a report takes a long time to preview.
    3. How many records will be returned to the report.
    Large number of records will slow down the preview of the reports.
    Ensure you only returns the necessary data on the report, by creating a Record Selection Formula, or basing your report off a Stored Procedure, or a Command Object that only returns the desired data set.
    4. Do you use the special field "Page N of M", or "TotalPageCount"
    When the special field "Page N of M" or "TotalPageCount" is used on a report, it will have to generate each page of the report before it displays the first page, therfore it will take more time to display the first page of the report.
    If you want to improve the speed of a report, remove the special field "Page N of M" or "Total Page Count" or formula that uses the function "TotalPageCount". If those aren't use when you view a report it only format the page requested.
    It won't format the whole report.
    5. Link tables on indexed fields whenever possible.
    6. Remove unused tables, unused formulas, unused running totals from the report.
    7. Suppress unnecessary sections.
    8. For summaries, use conditional formulas instead of running totals when possible.
    9. Whenever possible, limit records through selection, not suppression.
    10. Use SQL expressions to convert fields to be used in record selection instead of using formula functions.
    For example, if you need to concatenate 2 fields together, instead of doing it in a formula, you can create a SQL Expression Field. It will concatenate the fields on the database server, instead of doing in Crystal Reports. SQL Expression Fields are added to the SELECT clause of the SQL Query send to the database.
    11. Using one command as the datasource can be faster if you returns only the desired data set.
    It can be faster if the SQL query written only return the desired data.
    12. Perform grouping on server
    This is only relevant if you only need to return the summary to your report but not the details. It will be faster as less data will be returned to the reports.
    Regards
    Girish Bhosale

  • Remote enabled Function module for a simple report program

    Hi Experts ,
    I have to convert a Simple list report program to a remote enabled function module, so that it can be used from the online applications.
    One option that comes to my mind is to create some import parameters for all the selection screen fields and then the result will be fetched in the export tables in function module. and call that report program using call transaction or submit program.
    I Dont know whether this is a best solution or not, can you please help me with your suggestions?
    Regards,
    Ashish Shah

    Hi,
    You can use the SUBMIT statment in the Function module , then in the report program you need to EXPORT the Result to the list then use the IMPORT option in the function moduel then pass the data to the TABLE parameters so that the data will be avilable in the table parameters
    Regards
    Sudheer

  • OBIEE Answers (Ad-Hoc Reporting) Best Practices

    Hi All
    Just finish writing about OBIEE Answers (Ad-Hoc Reporting) Best Practices. Thought it would be great to share with extended family.
    Please visit : http://wp.me/pfMKU-3t
    OR
    http://sranka.wordpress.com/2010/01/07/obiee-answers-ad-hoc-reporting-best-practices/
    Hope this helps
    Sunil S Ranka
    Blog :: http://sranka.wordpress.com
    "Superior BI is the antidote to Business Failure"

    hi ranka,
    Nice work and nice post.It would be helpful to many guys out here.
    Thanks,
    By,
    Kranthi.

  • EBusiness Reporting Best Practices

    Hi All,
    I a new to the eBusiness suite and manage our Business Intelligence. I have read bits and pieces about the backend and its schemas. Can anyone tell me and/or send me info about reporting best practices out of the eBusiness backend? It appears that using the APPS views would be the best process to pull data that aligns with the application....I found those points even in the metalink docs, but wanted to get some hints/tips from experienced users.
    Any help/info is greatly appreciated.
    Thanks,
    S

    Generally the Business Views provide the best denormalized views for eBusiness Suite, try generating them via I think Business Views responsibility, Generate Business Views. Check the output/logs for the views generated.
    Gareth

  • Crystal Reports Server 2008 - Scheduling Reports Best Practice

    What is the best practice for scheduling a report that will be distributed to approximately 30 recipients? I have uploaded a report that has a single parameter for the physician's name.  I need to distribute this report on a daily basis to each physician using their name as the parameter. Should I right-click on the single report that is uploaded and schedule the report with the corresponding parameter and physician e-mail address, or should I create 30 reports each with the physician's name. Basically, I need a way to see all of the scheduled jobs for a given report? Is this possible in Crystal Reports Server 2008? Thanks.

    The way that I handle all of our scheduled reports is to create the report with parameters to cover all of the necessary variations of the same basic report.  For you, that's be a single report with the doctor's name (or other identifier) as a parameter.  I then create an Object Package (I use BOE, so I'm not positive if CR Server has them, but I'd guess so...) for each variation (doctor in your case), and copy the report into the package.  I then set up the destination and schedule for the package, and set the parameter(s) of the report.  Then, schedule the package to run.
    The advantage of using object packages is that it separates the schedule and distribution from the actual report, so if (or I should say, when :->) the report changes, you don't have to copy the schedule and destination to the new version of the report, saving time and reducing errors.  Just copy the new version into the package, set the parameters, delete the old version, and reschedule the package to run.
    HTH,
    Carl

  • Performances with Crystal Reports (based on BW queries)

    Hi,
    I've created some Crystal reports based on BW queries, and I'm really interested in performances purposes. The BW queries I created are quick (with neither free characteristics nor hierarchies), and when I use them in a Crystal report, I identify a loss of time in the data extraction (BW --> Crystal), in the Crystal management of the layout and then in the publication to BOE.
    To be able to use Crystal on BW queries is very useful, but if the response times are too much important, that's not good...
    Is there any customizing to perform to get better performance ? Are there some analysis already performed with Performance point of view ?
    If you have any best practice or piece of advice to shorten the response time in Crystal reports, I'm really interested in.
    Thanks for your replies,
    Best regards
    Jonathan

    Hi,
    there are many SDN threads or forums dealing with the integration BW and Crystal.
    You should have a look to the forums created by Ingo Hilgefort (SAP expert on the BW-BO integration).
    You can start with that one :
    /people/ingo.hilgefort/blog/2008/09/17/businessobjects-and-sap--installation-and-configuration-part-1-of-4
    Best regards,
    Jonathan

  • How to optimize the performance of crystal report?

    Hi,
    -I have to design a crystal report with best possible optimization. Optimization is main concern since report will run against 1-2 million data set. Though I am using parameter to fetch only the required data, required data can go till 1 million records.
    -Based on the input passed by the user I have to group the data in report. And for each selected parameter the Detail section I am printing is different. For example:-If user selects store then detail section is different and if user select Host then detail section will be different.
    -Report can be grouped by Time Field also. So to full fill this requirement I would have to create a sub report since other parameters are of string type and can be used in one formula to get parameter based grouping in report. However If I try to return Time filed from the same formula I get the errors the "Return type should be of String typeu201D. This forces me to create sub report for Time based grouping. If user selects Time Field to be grouped on, all the information in the main report gets suppressed and only the sub report gets printed.
    If user select store, Host and User in parameter to be grouped on, sub report gets suppressed.
    Now with the above mentioned points I tried to optimize the report in following way.
    -Printing 1 million records in the report does not make sense; hence we wanted to show the summary of all the records in chart section but wanted to print just 5000 records in detailed section. Suppressing detailed section after 5000 records does not help much since suppressing just saves the time in printing and does not limit the number of records to be fetched from the DB.I have a subreport also so it fetches the data 2 times from the DB hence makes the performance of the report worse.
    To solve this problem I used command object and put the charts in the subreport and detail in main report.
    In main report's Command Object I limited the number to records to be fetched from the DB to 5000 using rownum<5000 but in subreport's Command Object I did not set any limit in the query but I am doing all my aggregation in SQL which means do summary operation in DB and get only summarized data from DB.
    -To solve section problem I am using Template object (new feature added in CR 2008).In which I am returning the field based on the "Group By" parameter selected by user.
    -For time Field I have created two sub reports, one for chart and other one for details in the same way described in point one(Printing 1 million recordsu2026u2026).
    After implementing these points my crystal reports performance improved drastically. The report that was taking 24 minute to come back now taking only 2 minutes.
    However I want my report to come back with one minute. It returns if I remove the sub reports for Time Based Grouping but I can not do so.
    My questions here are,
    -Can I stop Subreport from fetching the data from DB if itu2019s suppressed?
    -I believe using Conditional Template Object is a better option rather than having multiple detailed sections to print the data for a selected Group. However any suggestion here to improve the performance will be appreciable.
    -since crystal report does not provide any option to limit the number of records to be fetched from DB, I am forced to use command object with rownum in where condition.
        Please let me know about other option(s) to get this done...If there is any.
    I am using Crystal report 2008.And we have developed our application the use JRC to export crystal report in PDF.
    Regards,
    Amrita
    Edited by: Amrita Singh on May 12, 2009 11:36 AM

    1) I have to design a crystal report with best possible optimization. Optimization is main concern since report will run against 1-2 million data set. Though I am using parameter to fetch only the required data, required data can go till 1 million records.
    2) Based on the input passed by the user I have to group the data in report. And for each selected parameter the Detail section I am printing is different. For example:-If user selects store then detail section is different and if user select Host then detail section will be different.
    3) Report can be grouped by Time Field also. So to full fill this requirement I would have to create a sub report since other parameters are of string type and can be used in one formula to get parameter based grouping in report. However If I try to return Time filed from the same formula I get the errors the "Return type should be of String typeu201D. This forces me to create sub report for Time based grouping. If user selects Time Field to be grouped on, all the information in the main report gets suppressed and only the sub report gets printed.
    If user select store, Host and User in parameter to be grouped on, sub report gets suppressed.
    Now with the above mentioned points I tried to optimize the report in following way.
    1) Printing 1 million records in the report does not make sense; hence we wanted to show the summary of all the records in chart section but wanted to print just 5000 records in detailed section. Suppressing detailed section after 5000 records does not help much since suppressing just saves the time in printing and does not limit the number of records to be fetched from the DB.I have a subreport also so it fetches the data 2 times from the DB hence makes the performance of the report worse.
    To solve this problem I used command object and put the charts in the subreport and detail in main report.
    In main report's Command Object I limited the number to records to be fetched from the DB to 5000 using rownum<5000 but in subreport's Command Object I did not set any limit in the query but I am doing all my aggregation in SQL which means do summary operation in DB and get only summarized data from DB.
    2)To solve section problem I am using Template object (new feature added in CR 2008).In which I am returning the field based on the "Group By" parameter selected by user.
    Edited by: Amrita Singh on May 12, 2009 12:26 PM

  • Error while Connecting report Best Practices v1.31 with SAP

    Hello experts,
    I'm facing an issue while trying to connect some of my reports from Best Practices for BI with SAP.
    It only happens when it's about info sets, the other ones that are with SAP tables go smoothly without a problem.
    The most interesting is I have already one of the reports connected to SAP info sets.
    I have already verified the document of steps of creation of additional database that comes with BP pack. They seem ok.
    Here goes what Crystal Reports throws to me after changing the data source to SAP:
    For report "GL Statement" one of the Financial Analysis one which uses InfoSet: /KYK/IS_FIGL_I3:
    - Failed to retrieve data from the database; - click ok then...
    - Database connector error: It wasn't indicated any variant for exercise (something like this after translating) - click ok then
    - Database connector error: RFC_INVALID_HANDLE
    For report "Cost Analysis: Planned vs. Actual Order Costs" one of the Financial Analysis one which uses InfoSet: ZBPBI131_INFO_ODVR and ZBPBI131_INFO_COAS; and also the Query CO_OM_OP_20_Q1:
    - Failed to retrieve data from the database; - click ok then...
    - Database connector error: check class for selections raised errors - click ok then
    - Database connector error: RFC_INVALID_HANDLE
    Obs.: Those "Z" infosets are already created in SAP environment.
    The one that works fine is one of the Purchasing Analysis reports:
    - Purchasing Group Analysis -> InfoSet: /KYK/IS_MCE1
    I'm kind of lost to solve this, because I'm not sure if it can be in the SAP JCO or some parameter that was done wrongly in SAP and I have already check possible solutions for both.
    Thanks in advance,
    Carlos Henrique Matos da Silva - SAP BusinessObjects BI - Brazil.

    I re-checked step 3.2.3 - Uploading Crystal User Roles (transaction PFCG) - of the manual where it talks about CRYSTAL_ENTITLEMENT and CRYSTAL_DESIGNER roles, I noticed in the Authorizations tab that the status was saying it hadn't been generated and I had a yellow sign, so then that was what I did (I generated) as it says in the manual.
    Both statuses are now saying "Authorization profile is generated" and the sign is now green on the tab.
    I had another issue in the User tab (it was yellow as Authorizations one before generating)....all I needed to do to change to green was comparing user (User Comparison button).
    After all that, I tried once more to refresh the Crystal report and I still have the error messages being thrown.
    There's one more issue in one of the tabs of PFCG transaction, it is on the Menu one where it is with a red sign, but there's nothing talking about it in the manual. I just have a folder called "Role menu" without anything in it.
    Can it be the reason why I'm facing errors when connecting the report to SAP infoSets? (remember one of my reports which is connected to an infoSet works good)
    Thanks in advance,
    Carlos Henrique Matos da Silva - SAP BusinessObjects BI - Brazil.

  • Quiz Reporting - Best Practice?

    I have been experiencing issues with the email quiz result function. No score in the email. I have tried as an attachment and in the body. Note: I've got this function to work at other job sites.
    What is the best workaround for this? Another app such as Questionmark? The company I am working for is not using an LMS. I thought of using Moodle. Would each user need to be a student? That would be too many extra steps.
    I need to be able to track users pass/fail information.
    Ideas on best practice for assessments with no LMS?

    Hi there
    Click here for more
    Cheers... Rick
    Helpful and Handy Links
    Captivate Wish Form/Bug Reporting Form
    Adobe Certified Captivate Training
    SorcerStone Blog
    Captivate eBooks

  • Function module access from crystal 2008

    Hi,
    If the function module has tables as Import parameters, I am not able to see the input fields as well as the output parameters.
    How to access the function module in this scenario. Is there any work around to achieve reporting from crystal?
    Thanks

    Yes I did Ingo.
    Here is what I understood as this limitations mentioned from the user guide (second bullet point). But I need any suggestions/ Help  OR any work around. Let me know If my thinking is wrong.
    Limitations
    For functions to be used in a report, they must meet two conditions:
    u2022 Functions must have defined return types for each of the output
    parameters.
    u2022 Functions must not have whole tables as input parameters.
    Note:
    If a function does not meet the first condition, you can write a "wrapper"
    function with defined return types, and then call the original function from
    within the wrapper function.
    Finally, the ability to call entire programs is not supportedu2014you may call
    individual functions only.
    Thanks

  • Improving the performance of Crystal Reports for Eclipse 2.0

    Hi,
    I am having some performance issues with displaying reports where it can take upto 30 seconds per user for each new session for the report to display. If we run this directly from the client (through Crystal 2008) it takes about 2 seconds.
    The product only has 4 different rpt files but are constantly viewed by the clients (although with diffferent parameters). The users tend to come onto the system browse a couple of reports and log-off. They will do this about 3 - 5 x a day.
    1) Can you cache the reports at an application level (rather than the session) (and is it recommended)
    2) Create a separate web-service just hosting the Crystal Reports
    3) Other mechanisms of calling the report (currently using addDiscreteParameterValue, replaceConnection, Logon [this replaceConnection and Logon is done for the master and every subreport], then using processHttpRequest
    Anyone got any advice , recommendations or pearls of wisdom?
    Probably have max 15 concurrent users which process these 4 reports.
    Kind regards
    Matt.

    CR4E 2.0 currently uses 5 CPLs - 5 concurrent process license, which means it services up to five concurrent report requests.  This isn't per-session, per-report, or per-user, but per-request (open report, next page, export).
    So having 15 simultaneous users may lead to some requests being queued till a license is free.
    For a more scalable solution, the recommendation is to go with a server-client solution like Crystal Reports Server Embedded or BusinessObjects Enterprise.
    But to tune your CR4E app to see how much you'll be able to service, what I recommend is turning on Log4J logging to see where the performance is going.
    Going from 2 sec to 30 sec between CR Designer (binary app) to CRJ (pure Java app) isn't out of performance expectations, but there may be ways to tune it.
    For example, if you're doing replaceConnection or setTableLocation, you may just want to do it once to the rpt file during deployment, so you'd not need to change the connection info every time the report is run.
    Saving to application context isn't something that CRJ is designed for - it's designed to have the ReportSource per-Session.
    Sincerely,
    Ted Ueda

  • How to Measure Function Module Performance?

    Please can you tell me how I can measure the performance and trace the actions of a Function Module in R/3?
    The function module in R/3 is run when a user calls a WebDynpro action from a WebDynpro screen within the SAP Portal.
    I have tried running a trace on a user (ST05) but that only shows table actions (e.g. reads/fetch etc.). Also it does not appear in ST04 or ST03N. I would like to know how long the program actually takes to run.
    Thanks.
    Paul

    Hi,
    if I want to measure the runtime required to run some Abap, I use SE30. However i used it only for normal Dynpro application, not WebDynpro.
    The detail level of the created trace can be configured. The aggregation level should be set to "Full" or "By call" at the beginning. Disabling aggregation leads to huge trace files.
    You can select which statements should be traced. If you disable an option it's runtime is not lost but add to the traced action in the next level. If for example "Open SQL" is disabled, the time used by it is added into the net time of the method, function module of subroutine. Otherwise if "Open SQL" is enabled the net time of a function module does not include SQL time. SQL time is then listed separately.
    Greetings

Maybe you are looking for

  • Using imported archive in UDF using import statement

    Hello Expert, I am trying to use the class of keystore_api.jar which is impoted in imported archive in my UDF using the import statement com.sap.engine.interfaces.keystore.KeystoreManager but I am getting the error package com.sap.engine.interfaces.k

  • Need to turn off IDS normalization engine.

    Hi all. I would like to know how can we turn off cisco ids nomalization engine? Is it complicated one or not? We have some issue when we enable cisco nomalization engine on ids which is inline mode. some of assymetric traffic will be dropped. So, we

  • Vendor Change

    Hi SAP, Is thr any t code for mass vendor master change? Rgds, Karan

  • LiveCycle ES2 installation stops halfway through the process

    Hi there! I've installed LC ES2 before on my machine and normally without any problems. Now I had to uninstall and install it again. So that I could do it from start, using turnkey, I even removed some items from Windows registry. This has worked bef

  • Zen 20GB DAP-HD0015 - Lost

    Have lost my CD's for my 20GB Zen player was wondering where I can download the firmware from? Thanks