Creating Dynamic Reports at Runtime Using JRC

<p><span class="PSEDITBOX_DISPONLY">I am trying to integrate Crystal Reports into our web application.  Our application currently provides the ability to create custom reports on any field(database column) in the application, including custom fields created by the user.  Each customer&#39;s database will be different.  Is there a way in Crystal Reports to dynamically build a report based on a custom query?  I would need the ability to do this programmatically, through JSP, by adding and removing fields from a Crystal Report.  My plan is to push the results of a query to a report viewer, but I need the ability to add, remove, resize, format or hide fields at runtime.  I would also need the ability to modify the field headers and Group Header fields.  Is this possible?  Any suggestion or code samples would be greatly appreciated. </span></p><p><span class="PSEDITBOX_DISPONLY">I&#39;ve read that RAS gives you some greater functionality creating and modifying reports at runtime.  Does the RAS SDK include the functionality that I&#39;ve described above?</span></p><p><span class="PSEDITBOX_DISPONLY">Thanks,</span></p><p><span class="PSEDITBOX_DISPONLY">Alan </span></p>

Hi bobbassen
You can take a look at the new Preferences API that is shipped along with JDK 1.4. This should help you in saving report structures in one place and help you modify it through a GUI without re-compilation.
see : http://java.sun.com/j2se/1.4/docs/guide/lang/preferences.html
Keep me posted on your progress.
Good Luck!
Eshwar R
Developer Technical Support
Sun microsystems
http://www.sun.com/developers/support

Similar Messages

  • Determine version used to create a report at runtime?

    Is there a way to determine what version of Crystal was used to create a report during runtime?  I've looked at the objects and cannot find a property that might be used.  There is a File Forrmat Schema property in the Report Definition item in the Performance Information Menu option in the designer that might be useful, but can't find a way to get in in the object model.  Any ideas would be appreciated.

    Directly off of the ReportClientDocument class there is a MajorVersion and MinorVersion property that contains this information.

  • Is it possible to create dynamic reports using iReports in netbeans ?

    Hi
    I want to know that is it possible to create dynamic reports using netbeans? Dynamic reports means based on user selection(for eg. say by selecting values from combo boxes) some query will be genatated and fetch the query result from data base and displayed results in iReports only my problem is i am working on Netbeans IDE and i have installed iReports as plugins in netbeans IDE. and i am not able to find any tutorial that show me how to work with iReports under netbeans IDE. and how to create dynamic reports in iReports. If u know any such tutorial then can you send me link plz...!
    Thanks

    What do you mean by "in Start Menu"? Do you mean Live tile? See https://msdn.microsoft.com/en-us/library/windows/apps/hh465403.aspx
    https://msdn.microsoft.com/en-us/library/windows/apps/dn468032.aspx
    Best Regards,
    Please remember to mark the replies as answers if they help

  • Error while trying to export a report into PDF using JRC (Linux env)

    Hi all,
    I have my web app installed on a Linux environment. When trying to export a CR report into PDF using JRC
    PrintOutputController controller = reportClientDoc.getPrintOutputController();
              ByteArrayInputStream byteArrayInputStream = (ByteArrayInputStream) controller.export(ReportExportFormat.PDF);
    I got this error message:
    19/02/2009     10:21:37     b     INFO     PdfExporter: PdfDocumentModeller.modelPage (page 1)
    19/02/2009     10:21:37     b     INFO     PdfExporter: Modelling page
    19/02/2009     10:21:37     b     INFO     PdfExporter: Creating document manager, text modeller and image modeller.
    19/02/2009     10:21:37     b     ERROR     PdfExporter: Exception caught in PDFFormatter.formatPage (from PdfDocumentModeller.modelPage); aborting export
    java.lang.IllegalArgumentException: Data type is not supported.
         at java.awt.image.Raster.createInterleavedRaster(Raster.java:212)
         at java.awt.image.Raster.createInterleavedRaster(Raster.java:178)
         at java.awt.image.ComponentColorModel.createCompatibleWritableRaster(ComponentColorModel.java:2826)
         at java.awt.image.BufferedImage.<init>(BufferedImage.java:439)
         at com.crystaldecisions.reports.exporters.format.page.pdf.pdflib.u.<init>(Unknown Source)
         at com.crystaldecisions.reports.exporters.format.page.pdf.b.k.a(Unknown Source)
         at com.crystaldecisions.reports.exporters.format.page.pdf.b.k.a(Unknown Source)
         at com.crystaldecisions.reports.exporters.format.page.pdf.b.d(Unknown Source)
         at com.crystaldecisions.reports.exporters.format.page.pdf.b.a(Unknown Source)
         at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
         at com.crystaldecisions.reports.formatter.a.c.if(Unknown Source)
         at com.crystaldecisions.reports.formatter.a.c.a(Unknown Source)
         at com.businessobjects.reports.sdk.b.b.int(Unknown Source)
         at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.x.a(Unknown Source)
         at com.crystaldecisions.proxy.remoteagent.q.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.dd.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(Unknown Source)
         at com.crystaldecisions.reports.sdk.PrintOutputController.export(Unknown Source)
    On my Windows environment the JRC export into PDF work perfectly. I know that there are some known issues regarding the usage of JRC on Linux environments. Could this be one of those?
    Any solution (or workaround) would be highly appreciated!
    Thank you!
    PS Maybe this is relevant: I use a MySQL database!
    Edited by: Sandila Catalin on Feb 19, 2009 10:01 AM

    What kind of image do you have in the report?
    Do you have -Djava.awt.headless=true specified for the Java JVM option?
    Sincerely,
    Ted Ueda

  • How to create dynamic room in runtime execution?

    Hello All,
    Can you please suggest me how can I create dynamic room in runtime execution? I do not want to create fixed room from the room consol. I want to create a new room & also delete it after work complete in runtime execution.
    thanks,
    krish

    Hi Krish,
    If you are using your own server to do ExternalAuthentication, then you can
    user server to server API's to do that. Please refer to Server2Server apps
    in the SDK's sample apps folder.
    Else you might have to use AccountManager with room
    owner credentials. But the Server2Server aprroach is highly recommended.
                    private var acctMgr:AccountManager = new AccountManager();
                    acctMgr.accountURL = m_accountURL;
                    acctMgr.authenticator = authenticator;
                    acctMgr.addEventListener(AccountManagerEvent.LOGIN_SUCCESS, authenticateSuccess);
                    //acctMgr.addEventListener(AccountManagerEvent.LOGIN_FAILURE, authenticateFailure);
                    //acctMgr.addEventListener(AccountManagerEvent.ACCESS_ERROR, onAuthenticationAccessError);
                    public function authenticateSuccess(event:AccountManagerEvent):void {
                       acctMgr.addEventListener(AccountManagerEvent.ROOM_DELETE, onRoomDelete);
                       acctMgr.deleteRoom(name, template);
                    public function onRoomDelete(event:AccountManagerEvent):void {
    Thanks
    Arun

  • Creating Dynamic Report - facing error REP-498

    Hi guys,
    Facing problem Creating Dynamic Reports.
    Error : REP-498: Number of columns selected by the query is incompatible with report definition.
    Could you please show me where do i have to changed my query to get rid of this error message?
    Thanking you in advance.
    --dynamic query
    select a.yr_no
    &columname_1
    from authorized_utilization_s a,
    tblservicecategory b, tblnetworkplanrptgroup c,tblreportgroup e
    &wherecl_1
    &groupby_1
    union
    select a.yr_no
    &columname_2
    from authorized_utilization_s a,
    tblservicecategory b, tblnetworkplanrptgroup c,tblreportgroup e
    &wherecl_2
    &groupby_2
    &orderby
    ------after parameter form function
    FUNCTION afterpform
    RETURN BOOLEAN
    IS
    BEGIN
    IF :report_type = 'C' -- C represent Carrier Report
    THEN
    :columname_1 := ',a.qtr_no,b.rptservicecatid, sum(a.sum_svcschedulerate)/1000 planamount ';
    :wherecl_1 := ' where e.reportgroupid = c.reportgroupid '
    ||' and e.reportgroupid NOT IN (180,188,191,203,206,227,228, '
    ||' 229,230,231,232,233,234,235,236,237,238,365,366,550,644,645)'
    ||' and e.reportgroupclassid = '|| :p_reportgroupid
    ||' and a.planid = c.planid '
    ||' and a.yr_no = '||:p_year
    ||' and a.qtr_no <= '|| :p_quarter
    ||' and rtrim(a.servicecatid) = rtrim(b.servicecatid) ' ;
    :groupby_1 := ' group by a.yr_no,a.qtr_no,b.rptservicecatid ';
    :columname_2 := ', a.qtr_no,b.rptservicecatid, sum(a.sum_svcschedulerate)/1000 planamount';
    :wherecl_2 := ' where e.reportgroupid = c.reportgroupid '
    ||' and e.reportgroupid NOT IN (180,188,191,203,206,227,228, '
    ||' 229,230,231,232,233,234,235,236,237,238,365,366,550,644,645)'
    ||' and e.reportgroupclassid = '|| :p_reportgroupid
    ||' and a.planid = c.planid '
    ||' and a.yr_no = '||:p_year||' - 1 '
    ||' and a.qtr_no >= '||:p_quarter
    ||' and rtrim(a.servicecatid) = rtrim(b.servicecatid) ';
    :groupby_2 :=' group by a.yr_no,a.qtr_no,b.rptservicecatid ';
    :orderby :=' order by yr_no, qtr_no, rptservicecatid ' ;
    ELSIF :report_type = 'Q'
    THEN -- Q represent Quarter Report
    -- second condition will be here for 'Q'
    ELSIF :report_type = 'A'
    THEN -- A represent Annual Report
    --third condition will be here  for 'A'
    ELSE
    :tablename := '';
    :wherecl := '';
    END IF;
    RETURN (TRUE);
    END;
    ----final query for report type 'C' should looks like this and WHICH IS WORKING FINE FROM SQL*PLUS.
    select a.yr_no
    ,a.qtr_no,b.rptservicecatid, sum(a.sum_svcschedulerate)/1000 planamount
    from authorized_utilization_s a,
    tblservicecategory b, tblnetworkplanrptgroup c,tblreportgroup e
    where e.reportgroupid = c.reportgroupid
    and e.reportgroupid NOT IN (180,188,191,203,206,227,228,
    229,230,231,232,233,234,235,236,237,238,365,366,550,644,645)
    and e.reportgroupclassid = :p_reportgroupid
    and a.planid = c.planid
    and a.yr_no = :p_year
    and a.qtr_no <= :p_quarter
    and rtrim(a.servicecatid) = rtrim(b.servicecatid)
    group by a.yr_no,a.qtr_no,b.rptservicecatid
    union
    select a.yr_no
    , a.qtr_no,b.rptservicecatid, sum(a.sum_svcschedulerate)/1000 planamount
    from authorized_utilization_s a,
    tblservicecategory b, tblnetworkplanrptgroup c,tblreportgroup e
    where e.reportgroupid = c.reportgroupid
    and e.reportgroupid NOT IN (180,188,191,203,206,227,228,
    229,230,231,232,233,234,235,236,237,238,365,366,550,644,645)
    and e.reportgroupclassid = :p_reportgroupid
    and a.planid = c.planid
    and a.yr_no = :p_year - 1
    and a.qtr_no >= :p_quarter
    and rtrim(a.servicecatid) = rtrim(b.servicecatid)
    group by a.yr_no,a.qtr_no,b.rptservicecatid
    order by yr_no, qtr_no, rptservicecatid ;

    The problem is with initial values of your lexical parameters. They should be so that even before obtaining their desired values in the trigger, they would create syntactically correct SQL returning as many columns and of appropriate types, as you expect the final SQL to produce. You can not manipulate the number and types of columns using lexical parameters, just the real mapping to the table columns. The number, the type, and the order of selected columns should be defined by initial values of lexical parameters.

  • How to use both Static and dynamic Reports in WAD using a single template.

    Hi,
    I have 2 reports - Report1 & Report2. Report1 is a static report with 3 column in it. In WAD user does not want to see the third series in the chart so I have made series3 invisible in the chart.
    I am calling the Report2 via 'SET_DATA_PROVIDER_PARAMETERS' in the button option.
    Now the issue is that, Report2 is a dynamic report which is using a calyear vaiable range. As Report2 is using the template of Report1, Series3 of Report2 also gets hidden.
    Any solution for this?
    Thanks
    Nisha

    Hi Nisha,
    After setting the Report 2 DP thru SET_DATA_PROVIDER_PARAMETERS, you can use one more command SET_ITEM_PARAMETERS on the Chart webitem & edit the Series to make it visible. If there is a way to reset the DP back to Report 1, then you must once again use SET_ITEM_PARAMETERS to hide the Series.
    Or you can use another Chart webitem for Report 2 DP & make the Chart webitem for Report 1 hidden & the Chart webitem for Report 2 visible using SET_ITEM_PARAMETERS after setting Report 2 DP using SET_DATA_PROVIDER_PARAMETERS.
    --Priya

  • How to create a report with data using the Crystal Reports for Java SDK

    Hi,
    How do I create a report with data that can be displayed via the Crystal Report for Java SDK and the Viewers API?
    I am writing my own report designer, and would like to use the Crystal Runtime Engine to display my report in DHTML, PDF, and Excel formats.  I can create my own report through the following code snippet:
    ReportClientDocument boReportClientDocument = new ReportClientDocument();
    boReportClientDocument.newDocument();
    However, I cannot find a way to add data elements to the report without specifying an RPT file.  Is this possible?  I seems like it is since the Eclipse Plug In allows you to specify your database parameters when creating an RPT file.
    is there a way to do this through these packages?
    com.crystaldecisions.sdk.occa.report.data
    com.crystaldecisions.sdk.occa.report.definition
    Am I forced to create a RPT file for the different table and column structures I have? 
    Thank you in advance for any insights.
    Ted Jenney

    Hi Rameez,
    After working through the example code some more, and doing some more research, I remain unable to populate a report with my own data and view the report in a browser.  I realize this is a long post, but there are multiple errors I am receiving, and these are the seemingly essential ones that I am hitting.
    Modeling the Sample code from Create_Report_From_Scratch.zip to add a database table, using the following code:
    <%@ page import="com.crystaldecisions.sdk.occa.report.application.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.data.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.document.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.definition.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
    <%@ page import = "com.crystaldecisions.report.web.viewer.*"%>
    <%
    try { 
                ReportClientDocument rcd = new ReportClientDocument();
                rcd.newDocument();
    // Setup the DB connection
                String database_dll = "Sqlsrv32.dll";
                String db = "qa_start_2012";
                String dsn = "SQL Server";
                String userName = "sa";
                String pwd = "sa";
                // Create the DB connection
                ConnectionInfo oConnectionInfo = new ConnectionInfo();
                PropertyBag oPropertyBag1 = oConnectionInfo.getAttributes();
                // Set new table logon properties
                PropertyBag oPropertyBag2 = new PropertyBag();
                oPropertyBag2.put("DSN", dsn);
                oPropertyBag2.put("Data Source", db);
                // Set the connection info objects members
                // 1. Pass the Logon Properties to the main PropertyBag
                // 2. Set the Server Description to the new **System DSN**
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_LOGONPROPERTIES, oPropertyBag2);
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_SERVERDESCRIPTION, dsn);
                oPropertyBag1.put("Database DLL", database_dll);
                oConnectionInfo.setAttributes(oPropertyBag1);
                oConnectionInfo.setUserName(userName);
                oConnectionInfo.setPassword(pwd);
                // The Kind of connectionInfos is CRQE (Crystal Reports Query Engine).
                oConnectionInfo.setKind(ConnectionInfoKind.CRQE);
    // Add a Database table
              String tableName = "Building";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
        catch(ReportSDKException RsdkEx) {
                out.println(RsdkEx);  
        catch (Exception ex) {
              out.println(ex);  
    %>
    Throws the exception
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: java.lang.NullPointerException---- Error code:-2147467259 Error code name:failed
    There was other sample code on SDN which suggested the following - adding the table after calling table.setDataFields() as in:
              String tableName = "Building";
                String fieldname = "Building_Name";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setAlias(tableName);
                oTable.setQualifiedName(tableName);
                oTable.setDescription(tableName) ;
                Fields fields = new Fields();
                DBField field = new DBField();
                field.setDescription(fieldname);
                field.setHeadingText(fieldname);
                field.setName(fieldname);
                field.setType(FieldValueType.stringField);
                field.setLength(40);
                fields.add(field);
                oTable.setDataFields(fields);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
    This code succeeds, but it is not clear how to add that database field to a section.  If I attempt to call the following:
    FieldObject oFieldObject = new FieldObject();
                oFieldObject.setDataSourceName(field.getFormulaForm());
                oFieldObject.setFieldValueType(field.getType());
                // Now add it to the section
                oFieldObject.setLeft(3120);
                oFieldObject.setTop(120);
                oFieldObject.setWidth(1911);
                oFieldObject.setHeight(226);
                rcd.getReportDefController().getReportObjectController().add(oFieldObject, rcd.getReportDefController().getReportDefinition().getDetailArea().getSections().getSection(0), -1);
    Then I get an error (which is not unexpected)
    com.crystaldecisions.sdk.occa.report.lib.ReportDefControllerException: The field was not found.---- Error code:-2147213283 Error code name:invalidFieldObject
    How do I add one of the table.SetDataFields()  to my report to be displayed?
    Are there any other pointers or suggestions you may have?
    Thank you

  • Create dynamic table at runtime and bind it with ViewObject

    Hi everyone.
    I have the following task.
    I need to create a multiple ViewObjects at runtime (using different constructed sql queries) and then bind ViewObjects with created (also in runtime) tables.
    Tables are to be created on PanelTabbed component. Each tab contains one table.
    So the problem - is there a way to perform this task?
    A portion of code:
    ApplicationModule am = ADFUtils.getApplicationModule("AppModule");
    ViewObjectImpl vo = null;
    if (am.findViewObject("SQLVo") != null)
    am.findViewObject("SQLVo").remove();
    System.out.println("object removed!");
    vo = am.createViewObjectFromQueryStmt("vo", "select ...");
    RichTable newTable = new RichTable();
    newTable.setVar("row");
    newTable.setVarStatus("rowStat");
    RichShowDetailItem newDetItem = new RichShowDetailItem();
    newDetItem.setText("New Detail");
    newTable.setInlineStyle("width:100%;height:180px");
    newTable.setRowSelection("single");
    DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    String iterBindingName = vo.getName() + "Iterator";
    JUIteratorBinding iterBinding =
    (JUIteratorBinding)dcBindings.findIteratorBinding(iterBindingName);
    if (iterBinding != null) {
    dcBindings.removeIteratorBinding(iterBindingName);
    BindingContext bcc = (BindingContext)JSFUtils.resolveExpression("#{data}");
    iterBinding =
    new JUIteratorBinding(bcc.findDataControl("AppModuleDataControl"), vo);
    String ctrlBindingName = vo.getName() + "Binding";
    FacesCtrlHierBinding clonedHierBinding =
    (FacesCtrlHierBinding)dcBindings.findCtrlBinding(ctrlBindingName);
    if (clonedHierBinding != null) {
    dcBindings.removeControlBinding(ctrlBindingName);
    =======================================
    Please, look here!
    What's the best practices to create a new FacesCtrlHierBinding?
    What a parameter _nodeBindings (type JUCtrlHierTypeBinding[]) should be?
    =======================================
    clonedHierBinding =
    new FacesCtrlHierBinding(null,
    iterBinding,
    new String[]{
    "BUILDING_ID"
    // "BUILD_NAME",
    // "FUNCTIONALITY_NAME",
    // "CITY_NAME",
    // "STREET_NAME",
    // "FLOORS"
    _nodeBindings
    dcBindings.addControlBinding(ctrlBindingName, clonedHierBinding);
    newTable.setValue(clonedHierBinding.getCollectionModel());
    for (int g=0; g < vo.getAttributeCount(); g++){
    RichColumn col = new RichColumn();
    col.setId("c" + Integer.toString(g));
    col.setHeaderText(vo.getAttributeDef(g).getProperty(AttributeHints.ATTRIBUTE_LABEL).toString());
    ValueExpression valExp =
    facesContext.getApplication().getExpressionFactory().createValueExpression(facesContext.getELContext(),
    "#{row." + vo.getAttributeDef(g).getName() + "}",String.class);
    RichOutputText text = new RichOutputText();
    text.setId(vo.getAttributeDef(g).getName() + "txt");
    text.setValueExpression("value", valExp);
    col.getChildren().add(text);
    newTable.getChildren().add(col);
    newDetItem.getChildren().add(newTable);
    myBean.panelTabbed.getChildren().add(newDetItem);
    ...

    Shay, good day!
    You answer is good, but - it use only one dynamic view (and one table, iterator and FacesModel).
    I have task like topic started have - i need to create some unknows numbers of ViewObject (created by demad) and i must have a FacesModel for each created ViewObject.
    How can we do it?

  • Create dynamic report or query for piece count

    Hi abaper's
    This is a very straight forward requirement. so please give me code
    First you have to get the corresponding plant from table T320 for the given warehouse numbers in the selection screen. 
    1.     Get the sum of order qty of sales orders from the sales order tables      for the given warehouse(Plant), distribution channel and the give date      range.
    2.     Get the confirmed transfer orders qty from the TO master table where      TO confirmation date is in the given date range and WH number.
    3.     Get the total PGIed qty from the delivery master table where PGI'ed      date in the given date range, shipping point is in the corresponding      plant of the WH and for the given distribution channel.
    As you are going to use the major tables please try to write the select commands effectively to avoid further performance issues.

    How to improve the performance fo this code.....this very urgent.
    & Issue Number          : 22199                                    &
    & Programmer            : Anjaneyulu.Pabba                         &
    & Transport Number      : D01K962471                               &
    & Date of Creation      : 19/03/2008                               &
    & Description           : Dynamic report or query for piece count  &
    & Requested By          : Parvati.Polisetty                        &
    REPORT  ZR_SD_PIECE_COUNT_ALV no standard page heading
                                  line-size 255
                                  line-count 65.
                          TABLES DECLARATION
    *TABLES: T320,   "Assignment IM Storage Location to WM Warehouse Number
          VBAK,   "Sales Document: Header Data
          VBAP,   "Sales Document: Item Data
          TVKOV,  "Org. Unit: Distribution Channels per Sales Organization
          LTAK,   "WM transfer order header
          LTAP,   "Transfer order item
          LIKP,   "SD Document: Delivery Header Data
          LIPS.   "SD document: Delivery: Item data
                          TYPE-POOLS DECLARATION
    TYPE-POOLS: SLIS .
         Internal Table Declaration
    DATA : BEGIN OF TY_T320,
            WERKS TYPE WERKS_D,
            LGNUM TYPE LGNUM,
           END OF TY_T320.
    DATA : BEGIN OF TY_VBAK,
            VBELN  TYPE VBELN_VA,
            VTWEG  TYPE VTWEG,
            WERKS  TYPE WERKS_D,
            KWMENG TYPE KWMENG,
            VSTEL  TYPE VSTEL,
           END OF TY_VBAK.
    DATA : BEGIN OF TY_LTAK,
            LGNUM TYPE LGNUM,
            TANUM TYPE TANUM,
            VISTA TYPE LTAP_VISTA,
           END OF TY_LTAK.
    DATA : BEGIN OF TY_LIKP,
            VBELN TYPE VBELN_VL,
            WERKS TYPE WERKS_D,
            LFIMG TYPE LFIMG,
           END OF TY_LIKP.
    DATA : BEGIN OF TY_ITAB ,
    LGNUM  TYPE LGNUM,    "Warehouse Number / Warehouse Complex
    WERKS  TYPE WERKS_D,  "Plant
    VBELN  TYPE VBELN_VA, "Sales Document
    VTWEG  TYPE VTWEG,   "Distribution Channel
    KWMENG TYPE KWMENG,  "Cumulative order quantity in sales units
    TANUM  TYPE TANUM ,     "Transfer Order Number
    VISTA  TYPE LTAP_VISTA, "Source actual quantity in alternative
                                                 unit of measure
    LFIMG  TYPE LFIMG,  "Actual quantity delivered (in sales units)
    END OF TY_ITAB .
    DATA: T_T320 LIKE STANDARD TABLE OF TY_T320 INITIAL SIZE 0 WITH HEADER
                                                                   LINE,
          T_VBAK LIKE STANDARD TABLE OF TY_VBAK INITIAL SIZE 0 .
    DATA: T_LTAK LIKE STANDARD TABLE OF TY_LTAK INITIAL SIZE 0 WITH HEADER
                                                                    LINE.
    DATA :T_LIKP LIKE STANDARD TABLE OF TY_LIKP INITIAL SIZE 0 WITH HEADER
                                                                    LINE.
    DATA:T_ITAB LIKE STANDARD TABLE OF TY_ITAB INITIAL SIZE 0 WITH HEADER
                                                                   LINE .
    *&      Fieldcatalog Declaration
    DATA : T_FCAT TYPE SLIS_T_FIELDCAT_ALV,
           W_FCAT TYPE SLIS_FIELDCAT_ALV.
    DATA : W_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ********Global Data Declaration***
    DATA :G_REPID        LIKE SY-REPID,
         G_EXIT(1)      TYPE C,
         GX_VARIANT     LIKE DISVARIANT,
         X_SAVE,                          "for Parameter I_SAVE
         GS_VARIANT TYPE DISVARIANT.      "for parameter IS_VARIANT
    data: g_lgnum type t320-lgnum,
          g_vtweg type vbak-vtweg,
          g_erdat type vbak-erdat.
    *&      Selection-Screen
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS : S_LGNUM FOR  g_lgnum, "Warehouse Number
                    S_VTWEG FOR g_vtweg, "Distribution Channel
                    S_ERDAT FOR g_erdat ."Date on which the record was
    **********"created
    SELECTION-SCREEN END OF BLOCK B1 .
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
    PARAMETER: P_VARI LIKE DISVARIANT-VARIANT.  "Layout
    SELECTION-SCREEN END OF BLOCK B2.
    *&       INITIALIZATION EVENT
    INITIALIZATION.
      CLEAR GS_VARIANT.
    'gs_variant' must at least contain the report-id to allow
    saving a variant.
      G_REPID = SY-REPID.
    § 2.At least field REPORT of this structure has to be filled!
      GS_VARIANT-REPORT = G_REPID.
    § 3.Determine saving options.
      X_SAVE = 'A'.   "The user may save all types of variants
    *******Validating selection-screen values**********************
    getting F4 value for display variant field
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    ****validation of F4 value of display variant
    AT SELECTION-SCREEN.
      PERFORM PAI_OF_SELECTION_SCREEN.
    *&      Start-Of-Selection
    START-OF-SELECTION.
    *****Subroutine to  select Plant from T320
      PERFORM FIND_PLANT .
    *****Subroutine to select Order Quantity from VBAP
      PERFORM ORDER_QUANTITY .
    *****Subroutine to select Transfer Order Quantity from LTAK and LTAP
      PERFORM TRANSFER_ORDER_QUANTITY.
    *****Subroutine to select TDelivery Quantity from  LIKP and LIPS
      PERFORM DELIVERY_QUANTITY.
    *&      End-Of-Selection
    END-OF-SELECTION.
    *****Subroutine for Fieldcatalog
      PERFORM FIELDCATALOG .
    *****Subroutine for Final Output
      PERFORM DISPLAY_OUTPUT .
    *&     Subroutine Implementaion
    *&      Form  FIND_PLANT
          text
    -->  p1        text
    <--  p2        text
    FORM FIND_PLANT .
      SELECT  WERKS
              LGNUM
              FROM T320
              INTO  TABLE T_T320
              WHERE LGNUM IN S_LGNUM.
    ENDFORM.                    " FIND_PLANT
    *&      Form  order_quantity
          text
    -->  p1        text
    <--  p2        text
    FORM ORDER_QUANTITY .
      SELECT VK~VBELN
             VK~VTWEG
             VP~WERKS
             VP~KWMENG
             VP~VSTEL
             INTO TABLE T_VBAK FROM VBAK AS VK
             INNER JOIN  VBAP AS VP
             ON VKVBELN = VPVBELN
             FOR ALL ENTRIES IN T_T320
             WHERE VK~VTWEG IN S_VTWEG
             AND   VK~ERDAT IN S_ERDAT
             AND   VP~WERKS = T_T320-WERKS.
    ENDFORM.                    " order_quantity
    *&      Form  Transfer_order_quantity
          text
    -->  p1        text
    <--  p2        text
    FORM TRANSFER_ORDER_QUANTITY .
      SELECT LK~LGNUM
             LK~TANUM
             LP~VISTA
             INTO TABLE T_LTAK FROM LTAK AS LK
             INNER JOIN LTAP AS LP
             ON LKLGNUM = LPLGNUM
             WHERE LK~KQUIT = 'X'
             AND   LK~BDATU IN S_ERDAT
             AND   LK~LGNUM IN S_LGNUM.
    ENDFORM.                    " Transfer_order_quantity
    *&      Form  Delivery_QUANTITY
          text
    -->  p1        text
    <--  p2        text
    FORM DELIVERY_QUANTITY .
      SELECT  VBELN WERKS LFIMG FROM LIPS
              INTO TABLE T_LIKP
              FOR ALL ENTRIES IN T_T320
              WHERE WERKS = T_T320-WERKS
              AND ERDAT IN S_ERDAT
              AND VTWEG IN S_VTWEG.
    ENDFORM.                    " Delivery_QUANTITY
    *&      Form  fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCATALOG .
      W_FCAT-COL_POS       = '1' .
      W_FCAT-FIELDNAME     = 'LGNUM' .
      W_FCAT-REF_TABNAME   = 'T320'.
      W_FCAT-REF_FIELDNAME = 'LGNUM' .
      APPEND W_FCAT TO T_FCAT.
      CLEAR W_FCAT.
      W_FCAT-COL_POS       = '2' .
      W_FCAT-FIELDNAME     = 'VTWEG' .
      W_FCAT-REF_TABNAME   = 'VBAK'.
      W_FCAT-REF_FIELDNAME = 'VTWEG' .
      APPEND W_FCAT TO T_FCAT.
      CLEAR W_FCAT.
      W_FCAT-COL_POS       = '3' .
      W_FCAT-FIELDNAME     = 'KWMENG' .
      W_FCAT-REF_TABNAME   = 'VBAP'.
      W_FCAT-REF_FIELDNAME = 'KWMENG' .
    *w_fcat-seltext_m     = '# of Orders'.
      APPEND W_FCAT TO T_FCAT.
      CLEAR W_FCAT.
      W_FCAT-COL_POS       = '4' .
      W_FCAT-FIELDNAME     = 'VISTA' .
      W_FCAT-REF_TABNAME   = 'LTAP'.
      W_FCAT-REF_FIELDNAME = 'VISTA' .
    *w_fcat-seltext_m     = '# of Pcs Picked'.
      APPEND W_FCAT TO T_FCAT.
      CLEAR W_FCAT.
      W_FCAT-COL_POS       = '5' .
      W_FCAT-FIELDNAME     = 'LFIMG' .
      W_FCAT-REF_TABNAME   = 'LIPS'.
      W_FCAT-REF_FIELDNAME = 'LFIMG' .
    *w_fcat-seltext_m     = '# of Pcs Shipped'.
      APPEND W_FCAT TO T_FCAT.
      CLEAR W_FCAT.
    W_FCAT-COL_POS       = '6' .
    W_FCAT-FIELDNAME     = 'TANUM' .
    W_FCAT-REF_TABNAME   = 'LTAK'.
    W_FCAT-REF_FIELDNAME = 'TANUM' .
    **w_fcat-seltext_m     = '# of Pcs Shipped'.
    APPEND W_FCAT TO T_FCAT.
    CLEAR W_FCAT.
    W_FCAT-COL_POS       = '7' .
    W_FCAT-FIELDNAME     = 'WERKS' .
    W_FCAT-REF_TABNAME   = 'T320'.
    W_FCAT-REF_FIELDNAME = 'WERKS' .
    **w_fcat-seltext_m     = '# of Pcs Shipped'.
    APPEND W_FCAT TO T_FCAT.
    CLEAR W_FCAT.
    ENDFORM.                    " fieldcatalog
    *&      Form  display_output
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_OUTPUT .
      LOOP AT T_T320 INTO TY_T320.
        TY_ITAB-WERKS = TY_T320-WERKS.
        TY_ITAB-LGNUM = TY_T320-LGNUM.
        READ TABLE T_VBAK INTO TY_VBAK WITH KEY WERKS = TY_T320-WERKS.
        IF SY-SUBRC = 0.
        TY_ITAB-VBELN  = TY_VBAK-VBELN.
        TY_ITAB-VTWEG  = TY_VBAK-VTWEG.
        TY_ITAB-KWMENG = TY_VBAK-KWMENG + ty_itab-kwmeng.
        ENDIF.
        READ TABLE T_LTAK INTO TY_LTAK WITH KEY LGNUM = TY_T320-LGNUM.
        IF SY-SUBRC = 0.
        TY_ITAB-TANUM = TY_LTAK-TANUM.
        TY_ITAB-VISTA = TY_LTAK-VISTA + ty_itab-vista.
        ENDIF.
        READ TABLE T_LIKP INTO TY_LIKP WITH KEY WERKS = TY_T320-WERKS.
        IF SY-SUBRC = 0.
        TY_ITAB-LFIMG = TY_LIKP-LFIMG + ty_itab-lfimg.
        ENDIF.
        APPEND TY_ITAB TO T_ITAB.
      ENDLOOP.
    Function Module for Displaying Final Output ********
      W_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-CPROG
          IS_LAYOUT          = W_LAYOUT
          IT_FIELDCAT        = T_FCAT[]
        TABLES
          T_OUTTAB           = T_ITAB.
    ENDFORM.                    " display_output
    *&      Form  f4_for_variant
          text
    -->  p1        text
    <--  p2        text
    FORM F4_FOR_VARIANT .
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          IS_VARIANT = GS_VARIANT
          I_SAVE     = X_SAVE
        IMPORTING
          E_EXIT     = G_EXIT
          ES_VARIANT = GX_VARIANT
        EXCEPTIONS
          NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF G_EXIT = SPACE.
          P_VARI = GX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.
    ENDFORM.                    " f4_for_variant
    *&      Form  pai_of_selection_screen
          text
    -->  p1        text
    <--  p2        text
    FORM PAI_OF_SELECTION_SCREEN .
      IF NOT P_VARI IS INITIAL.
        MOVE GS_VARIANT TO GX_VARIANT.
        MOVE P_VARI TO GX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
          EXPORTING
            I_SAVE     = X_SAVE
          CHANGING
            CS_VARIANT = GX_VARIANT.
        GS_VARIANT = GX_VARIANT.
      ELSE.
        PERFORM VARIANT_INIT.
      ENDIF.
    ENDFORM.                    " pai_of_selection_screen
    *&      Form  variant_init
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT_INIT .
      CLEAR GS_VARIANT.
      GS_VARIANT-REPORT = G_REPID.
    ENDFORM.                    " variant_init

  • Creating dynamic report on a join

    I'd like to create a dynamic report on something like this
    select a.name, b.gender
    from employees a, gender b
    where a.gender_id=b.gender_id;
    to get this
    NAME GENDER
    bob male
    fred male
    sally female
    instead of this which is not that useful to the end user...is it possible?
    SQL> select name, gender_id from employees;
    NAME GENDER_ID
    bob 1
    fred 1
    sally 2

    Hello:
    >
    I'd like to create a dynamic report on something like this
    select a.name, b.gender
    from employees a, gender b
    where a.gender_id=b.gender_id;
    >
    Why not simply use this query for the report ? What needs to be 'dynamic' here ?
    Varad

  • Create Dynamic Structure at Runtime via ALV-Methods!

    Hi Experts,
    i try to create at the ABAP Runtime a new Structure.
    FOR EXAMPLE: I have a internal Table "database" and i dont know their Structure or Typ.
    MY Question: How can i get the structuretype for this internal Table "database" ??
                                    I thought that it is possible with ALV-Methods, but i dont find the right way.
    First Step:       I must get the structure of this internal Table.
    Second Step: I must create a workarea/ line of this internal Table, that i can work row for row with the table.
    Have someone an code example for me, because iám very confused about this Problem.
    With kind regards.
    Ersin Tosun

    Hello,
    For this specific requirement, SAP has provided RTTI class.
    Below is a code snippet for your ready reference. In this example we're trying to get the structure of the dynamic table <ITAB> whose structure is not defined till run-time.
    TYPE-POOLS: abap.
    PARAMETERS: p_table TYPE tabname.
    DATA: dref TYPE REF TO data.
    FIELD-SYMBOLS <itab> TYPE STANDARD TABLE.
    CREATE DATA dref TYPE STANDARD TABLE OF (p_table).
    ASSIGN dref->* TO <itab>.
    DATA: go_tab_descr TYPE REF TO cl_abap_tabledescr,
          go_struc_descr TYPE REF TO cl_abap_structdescr,
          wa_comp TYPE abap_compdescr.
    go_tab_descr ?= cl_abap_tabledescr=>describe_by_data( <itab> ).
    CHECK sy-subrc = 0.
    go_struc_descr ?= go_tab_descr->get_table_line_type( ).
    LOOP AT go_struc_descr->components INTO wa_comp.
      WRITE: / wa_comp-name.
    ENDLOOP.
    I must create a workarea/ line of this internal Table, that i can work row for row with the table.
    Sorry i missed the Step 2:
    FIELD-SYMBOLS: <itab> TYPE STANDARD TABLE,
                   <wa> TYPE ANY,
                   <val> TYPE ANY.
    LOOP AT <itab> ASSIGNING <wa>.
      LOOP AT go_struc_descr->components INTO wa_comp.
    *   To access the components of the structure dynamically
        ASSIGN COMPONENT wa_comp-name OF STRUCTURE <wa> TO <val>.
      ENDLOOP.
    ENDLOOP.
    BR,
    Suhas
    Edited by: Suhas Saha on Nov 18, 2010 7:26 PM

  • Creating Dynamic Reports

    I'm working on designing a reporting module that will create requested reports in PDF format that can be viewed or printed. We have a tool to generate the PDF called ITEXT. The goal is to make the formatting very flexible to avoid recompiling Java code when they want to modify a header or change a column name and to keep the formatting information in 1 place where several Web Servers can access them without restarting the servers (using Corba).
    We have 10 different reports to create but they can choose various paremeter when viewing each report (date range, by family member, etc...).
    I have reviewed several third party freeware tools such as JasperReports and DataVision. Just wondering if there are any tools out there that can help (that are free).

    Hi bobbassen
    You can take a look at the new Preferences API that is shipped along with JDK 1.4. This should help you in saving report structures in one place and help you modify it through a GUI without re-compilation.
    see : http://java.sun.com/j2se/1.4/docs/guide/lang/preferences.html
    Keep me posted on your progress.
    Good Luck!
    Eshwar R
    Developer Technical Support
    Sun microsystems
    http://www.sun.com/developers/support

  • How to Create Dynamic button at runtime and save it by using c#?

    Hi All,
    Can someone please provide me code to create button dynamically at runtime and save it permanently?
    Your quick help is appreciable.
    regards,
    Sourabh

    You cant add controls to the visual tree a runtime which persist beyond the lifetime of the application.  You will have to persist an indicator to your program which tells it to add the control.  Adding a control is as simple as initializing
    it and adding it to a parent already on the tree.  Controls can be created programmatically or using the XamlReader.Load static method.  You can find XamReader.Load in Windows.UI.Xaml.Markup in windows 8.1, Windows 8.1/Windows Phone unified
    projects.  For old windows phone ad just Silverlight I believe it is in System.Windows.Markup.
    Hope this helps.

  • Dynamic Reports. Runtime parameter passing to Report Query.

    Hi everyone,
    I have developed a report using apex shared components (report query and report layout) along with BI Publisher for report printing in pdf format. the Report template is built using Template Builder for Word. I have configured my Apex4.1 env with BI Publisher 11.
    This report is working fine for hardecode ID ( like REQUEST_ID=10 ).
    to make report dynamic i have made following additions in the report
    I have added
    where clause in report query as WHERE REQUEST_ID = :REQUEST_ID (:REQUEST_ID is the text field in my page).
    Added a text field names :REQUEST_ID to get user input at run time.
    Create a button and add Repot Query URL in its properties.
    When i run the report with some valid value in :REQUEST_ID text field  i did not get expected result infect there is no record getting displayed in the PDF file.
    i think this is not the write way to do this but interestingly im not getting any error.
    please can someone guide me that how can i get this functionality in apex this way or the other ?
    Best Regards.

    Hi,
    the online help will help you on how to build a parameter list at all. For your desired functionality, all you need to do is to have the user pressing a button after he selected the parameters he want to assign values to and then create the parameter list in a PSLQL program unit in Forms.
    Frank

Maybe you are looking for

  • I check artists or albums to sync to my iphone and it says it syncs but then does not show up on my phone's music library. HELP

    So, I'm trying to sync all my Jason Mraz to my iPhone. On iTunes, after I plug in my iPhone to my MacBookPro, on the iPhone tab I check the artist "Jason Mraz." I then sync my phone. I goes through the process then when I check the music library on m

  • Adobe Premiere Pro Import Problem

    Let me get one idea out of the way. NO. IT'S NOT THE DAMN CODEC, AND IT'S NOT A PROBLEM WITH EMPTY WRAPPERS. Every time I try to import a fully functioning video (any format), Premiere Pro continues to import it as an audio file. Only when I import t

  • Import from camcorder stops after few seconds. Never used to! Ideas?

    Hi you wonderful experts and enthusiast out there. Been using iMovie HD 5 successfully for a couple of years, but all of a sudden I can't import from my camcorder. I have a long, unbroken, recorded sequence on the camcorder, but when I go to import i

  • ITunes 7.3.1 and QT 7.2 vs. ProTools

    Hello, I have updated to new versions of iTunes (from 7.3 to 7.3.1) and QuickTime (from 7.1.6 to 7.2). After I updated these programs, my ProTools LE (7.3.1cs3) cannot start (either by clicking the application, or indeed any previously saved sessions

  • Lion Dictates Opening Multiple Documents

    This is really nuts and makes me wonder about OS Lion.  I installed it on two Macs several days ago.  Now, when I double click on one Excel document, it opens several different Excel documents that I have been working on, even though they are not sub