Report based on particular workflow

Hi all.
We made a custom workflow for t code fv60. It has got various levels of approvals and conditions. Now the requirement is to develop a report based on this workflow - similar to swi1. but our purpose of the report is to show various parked and published FI documents and the various users in whose inboxes these document mails are kept in varios approvaql stages. E. G. If today a document is parked by user abc and is approved at first level by user def and now that document is in user ghi's inbox  as a workitem , waiting his approval, the report should show all the users and the statuses of document at each stage.
Is it possible?.
if so please give some sample code or example on how to build the report.
Thanks
Ribhu

Hi,
Yes, it is possible but it will be specific to your workflow only and as Kjetil says making a very general report like this for any workflow will be tough !!
However i can suggest the following so that you can start continuing on this
1. First find out the Workflow Template number used and also list all the major user decision steps Task Numbers ( say approval1 - Task1, approval2 - Task2, approval3 - Task 3) used. Lets call it as {Task List}
2. Given the from date and to date and type of document ( KR/KG etc..) get all the FI Documents parked/created on these dates.
3. For each FI Invoice No call SAP_WAPI_WORKITEMS_TO_OBJECT  with proper object type ( should be either FIPP or BKPF) , object key ( company code + doc no + fiscal year), fill in the Task Filter with your Task List}
   a. The Table parameter WORKLIST will contain information about the workitems related to your user decision items, loop through them and if completed find the actual agent else find the list of recipients using SAP_WAPI_WORKITEM_RECIPIENTS, you can show this as inprocess.
4. Infact once you get the WORKLIST you can do whatever you want.
If you have more than one possible workflows associated with same Invoice , then you have to filter your WORKLIST again based on correct workflow template number using WI_CHCKWI field.
Good Luck !!
Regards
Krishna Mohan

Similar Messages

  • How to find total report based on a particular subject area in OBIEE?

    Hi Everyone,
    I am new to OBIEE. I want to find out all the reports based on a particular subject area as there are many subject areas and lot of reports in OBIEE.
    Please help me out in this issue.
    Thanks
    Regards
    Sohail Dayer

    Sohail,
    Check out the catalogue manager reports :
    http://oraclebizint.wordpress.com/2007/11/19/oracle-bi-ee-catalog-reports/
    If you want this kind of thing automated, I personally am very fond of the ODI -> OBIEE Data lineage solution as provided in Oracle By Example tutorials :
    http://www.oracle.com/technology/obe/fusion_middleware/odi/OBI-ODI_Lineage/OBI-ODI_Lineage.htm

  • Sales Analysis Report based on Supplier-wise

    Hi Experts,
    My client requirement is ,We are into trading so , we want a Sales analysis report based on Supplier-wise. like,
    Selection critieria is
    1)Supllier name
    2)From and To date.
    Heading are
    Item name     Sales UoM    Jan(quantity)   Feb(quanitity)   mar(quantity)   April(quanitiy).........
    here, i need only the sum of the quantity for the items for that particular month based on the date giving in selection criteria.
    Regards,
    Dwarak
    Edited by: Dwarak@SMS on Aug 23, 2010 4:29 PM

    Hi experts,
    For my clients requirement,
    I could able to alter my previous query(find below).
    My object is
    1)To get sales report based on Manufacturer.
    2)To get the TOTAL SALES QUANTITY OF THE MONTHS in the report. I go that in the below query, and only thing is that is have to minus the total Credit note for items to get the ACTUAL TOTAL SALES OF THE MONTHS. so , can anyone help me to alter the query to get me the ACTUAL TOTAL SALES OF THE MONTHS.
    the query is
    SELECT T0.ITEMCODE,T0.ItemName,T0.OnHand,
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 1 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0) AS 'JAN ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 2 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'FEB ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 3 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'MAR ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 4 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'APR ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 5 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'MAY ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 6 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'JUN ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 7 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'JUL ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 8 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'AUG ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 9 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'SEP ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 10 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'OCT ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 11 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'NOV ',
    (SELECT SUM(T1.QUANTITY) FROM INV1 T1 with
    (NOLOCK) WHERE MONTH(T1.DOCDATE) = 12 AND T1.ITEMCODE = T0.ITEMCODE AND YEAR(T1.DOCDATE) = YEAR(GETDATE())-0)  AS 'DEC '
    FROM dbo.OITM T0
    LEFT JOIN dbo.INV1 T1 ON T1.ItemCode = T0.ItemCode WHERE T0.SellItem = 'Y' and T0.[FirmCode] =[%0]
    GROUP BY T0.ItemCode,T0.Itemname,T0.OnHand,YEAR(T1.DOCDATE) HAVING YEAR(T1.DOCDATE) =
    YEAR(GETDATE())-0
    ORDER BY T0. ITEMCODE

  • Authorization of alv report based on plants

    I have created a new alv report for sale order statement.The problem is which can be seen in all plants
    irespective of the user.Suppose our company has 5 palnt
    Plant 1100 to 1500
    The problem is suppose a user he has only rights in a prticular plant but he can see all the palnt sale order details
    How can we authorize this particular alv report based on the plants

    Hello,
    My assumption: You have Company Code(T001-BUKRS) in the selection-screen.
    Plz check the code snippet below:
    DATA:
    IT_PLANT TYPE STANDARD TABLE OF WERKS,
    WA_PLANT LIKE LINE OF IT_PLANT.
    DATA:
    IT_R_WERKS TYPE RANGE_T_WERKS_D,
    R_WERKS TYPE RANGE_S_WERKS_D.
    SELECT BWKEY INTO TABLE IT_PLANT
    FROM T001K
    WHERE BUKRS = '1000'. "--> Here you have to use your sel. scr. parameter
    IF SY-SUBRC = 0.
      SORT IT_PLANT BY WERKS.
    ENDIF.
    LOOP AT IT_PLANT INTO WA_PLANT.
    * Check the authority for the plant
      AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
               ID 'ACTVT' FIELD '03'
               ID 'WERKS' FIELD WA_PLANT-WERKS.
      IF SY-SUBRC = 0.
        R_WERKS-SIGN = 'I'.
        R_WERKS-OPTION = 'EQ'.
        R_WERKS-LOW = WA_PLANT-WERKS.
        APPEND R_WERKS TO IT_R_WERKS.
        CLEAR R_WERKS.
      ENDIF.
    ENDLOOP.
    IF IT_R_WERKS IS NOT INITIAL.
      "Select data using the Plants for which user is authorised
    ELSE.
      "User has no authority to display any Plant data
    ENDIF.
    Hope this is of some help to you.
    BR,
    Suhas
    Edited by: Suhas Saha on Mar 18, 2009 10:18 AM

  • R12: How to filter AP and PO Accrual Reconciliation Report based on GL Date

    Hi,
    Anybody know how to filter AP and PO Accrual Reconciliation Report based on GL Date from and GL Date to in R12?
    Since we just upgraded from 11.5.10 to 12.1.3 and found we cannot filter those report for specific date. It shown all data included the old data from 8 years ago also.
    We need to run the report only for specific date only. Please share with me if anyone know about this.
    Thanks.

    In 12 you can rebuild and run the report for a particular period, but not a single day if that's what's required

  • How to suppress the report based on outer dimension in nested report

    Hi Experts,
    We have a report with nesting of two dimensions in rows. They are Program dimension and Account Dimension.
    We need to supress the report based on the program dimension members. i.e whenever there are no values against all the accounts for a particular program that particular program should get supressed.
    In the screenshot attached I am looking to supress the rows 37,38 and 39 as the data against this program is empty.
    However I dont want to supress the rows 31 and 33 as there is a capital data against this program in row number 32. So we have to supress the rows based on absence of data at program level.
    We are using SP14 on BPC 10.
    I remember that such functionality could be acheived in BPC 7.5 by flagging the required dimension to have suppress in Expansion Range. So I guess, similar functionality would be there in BPC 10 as well.
    I have evaluated the option of VBA macro to hide the required rows, but was wondering if we can achieve the same using EPM functionality as we used to do in BPC7.5.
    Thanks in advance for your suggestions!!
    Regards,
    Shiva

    Hi Shiva,
    First you have to check the option Keep Blocks:
    This option will show the whole block even if only one line contain some not zero/empty cells in the row.
    Second, when you select option Filter on All Columns/Rows you have to select OR as operator between columns:
    In this case the test for >0 (or for <0) will be applied to each column and the result will be OR'ed with other columns. True will be even if one column contains not zero and not empty cell.
    You logic to check individual column require to hardcode the members - not good!
    Vadim
    P.S. If you select AND for Filter on All Columns/Rows - then only lines with all cells with non zero / non empty will be shown as in your example!

  • How to schedule the webi report based on data changes in the report data

    Hello,
    I want  to schedule a webi report based on data change in a column in the report.
    The scenario is something like below:
    1. If a data of a particular column changes from 2 to 3 than I would like to schedule this report and sent it to users mail box.
    I know how to apply alerts or schedule a report or data tracking for capturing changes in the report but I dont know how to schedule the report only for data changes.
    Anybody done this before.
    Thanks
    Gaurav

    Hi,
    May be these links can help you:
    http://devnet.magicsoftware.com/en/library?book=en/iBOLT/&page=SAP_R_3_Master_Data_Distribution_Defining_Change_Pointers.htm
    SEM-BCS: Load from data stream schedule
    Attribute Change Run

  • How to secure access of Report based on a condition

    Hello Experts,
    My project requirement is to secure BW Reports based on a condition. For e.g a user should be authorized to access the Report if:
    1. He is the WBS Manager of the selected WBS Element
    OR
    2. If he is authorized to access the Profit center Hierarchy Node which is the parent of the selected WBS Element.
    I think this may be achieved by using a Customer exit in the Analysis authorization but i don't know how.
    Do you have any idea, whether it is possible to achieve in BI7 Security Model? Any help will be highly appreciated.
    Thanks
    Rajat

    Hi Tomer,
    There will be a selection variable for WBS in all BW reports. If the user selects a particular WBS Element then he can only see the result of the report if he fulfill EITHER of the following conditions:
    1. If he is the WBS Manager of the selected WBS Element
    OR
    2. If he is authorized to access the Profit center Hierarchy Node which is the parent of the selected WBS Element.
    WBS managers will keep on changing so it is not possible to maintain the users in one role.
    Secondly, according to the second condition, even if the user is not WBS Manager but he is authorized to access Profit center Hierarchy Node, which is the parent of the selected WBS Element, he should view the report.
    Please let me know if don't understand the question.
    Thanks
    Rajat

  • Single Crystal Report based on Five different SAP BEx Quries.

    Hi,
    I need to create 5 different Charts (in a single report)  based on five different SAP BW BEx Queries. These are charts with 3- axes i.e. X,Y,Z.
    The example requirement is to create Line charts (Vertical Mixed Line Charts) and deatils are as follows: The chart should show CPU Utilization % for different servers (eg. Servers1,2,3,4,5) for each day in a particular month.
    Axes details:
    X- Axis - Date eg: 01 /09/2010 to 30/09/2010
    Y-Axis - CPU Utilisation Percent
    Z-Axis - Servers from 1 to 5
    The above detailed chart comes from a BEx Query . In this way there are four more BEx queries which should give four other charts.
    My queries are:
    1. Is this possible to create a single report using five different BEx queries and Create 5 different charts(one chart from each BEx Query) in a single tab as in the current manual report.(All the five Line charts should be downloadable to a single sheet in Excel)
    2. One more, should I use Crystal Reports only? The charts are of high format natute so Web Intelligence will not produce the same.  Is any other tool that helps for this requirement.
    3. I can create five different Universes based on BEx Queries. Is this possible to create a single report from five different Universes.
    Please advise.
    Nanda Kishore.
    Edited by: Nanda Kishore B on Oct 21, 2010 8:05 AM

    To start with you cannot use SAP BW universes in Crystal Reports., YOu have to use the BW MDX driver.
    For performance reasons I would suggest to add 4 subreports into your main reports containing each on of the 4 remaining charts.
    Regards,
    Stratos

  • VAT REPORT BASED ON CURRENT LOGGED IN USER

    Hi Guys,
    I am Working for a client and it they are having 9 branches and for each branch there will be  divided by different Series and different Tax Codes and  they want a  TAX Report based on the User Logged in.Each User Will be Assigned a branch and in the tax code an UDF(Location) has been created and for each tax code location has been entered there.
    So when User 1 of Branch 1 is running the report then the report should show only the record of that particular Branch 1 and
         When User 2 of Branch 2 is running the Report then it should show only branch 2 records .
    I Tired using an FMS to record the Current User Logged in but i am unable to include this in the below query.
    SELECT T0.U_NAME FROM OUSR T0 WHERE INTERNAL_K = $[USER]
    In the Below query , the Report needs to be filtered automatically based on the Current user Logged in(User who is running the report).
    There will be different Branches and Each Branch has One O Two Licenses and whenever the User1 Of Branch 1  runs the report then the report should display only the record related to that particular branch within the given date range.
    So ,to differentiate the Tax codes for each Branches we have created an UDF(Location) in tax codes and enter the branch name in the UDF and also each branch will have 3 different document series and each series.
    Instead of Giving the Location as a Parameter to choose we need to filter the report by the User logged in .
    SELECT distinct  M.DocNum AS 'AR Inv. #', M.DocDate as 'Date',
    l.targettype AS 'TARGET TYPE',
    t4.series,T4.SeriesName,
    case when T4.SeriesName='LOC/HOF' then 'HEAD OFFICE'
           when T4.SeriesName='LOC/CHN' then 'CHENNAI'
            when t4.seriesName ='INS/CHN' THEN 'CHENNAI'
            WHEN T4.SERIESNAME ='STF/CHN' THEN 'CHENNAI'
            WHEN T4.SERIESNAME ='INS/HOF' THEN 'HEAD OFFICE'
           end Location,L.TAXCODE,T6.RATE,
    case when t.statype ='1' then  'VAT'
           WHEN T.STATYPE ='4' THEN 'CST'
           END TAXTYPE,T.STATYPE,
    M.CARDCODE,M.CardName as 'Customer Name',M.NumAtCard as 'Bill No. & Dt.',M.DiscSum,M.RoundDif,
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry) as 'Base Amt.(Rs.)',M.VATSUM,
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry and statype =1  ) as 'VAT  SALES',
    (SELECT SUM(TaxSum) FROM INV4 t where t.docentry=m.docentry and statype=1  ) as '  VAT COLLECTED ',
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry and statype =4  ) as 'CST  SALES',
    (SELECT SUM(TaxSum) FROM INV4 where statype=4 and  DocEntry=M.DocEntry   ) as ' CST COLLECTED ',
    (Select Sum(LineTotal) FROM INV3 Q Where Q.DocEntry=M.DocEntry) as 'FREIGHT',
    M.DocTotal as 'Total (Rs.)'
    FROM OINV M LEFT OUTER JOIN INV1 L on L.DocEntry=M.DocEntry
    LEFT OUTER JOIN INV4 T on T.DocEntry=L.DocEntry
    LEFT OUTER JOIN INV5 J ON M.DocEntry = J.AbsEntry
    LEFT OUTER JOIN INV3 Q ON M.DocEntry = Q.DocEntry
    INNER JOIN NNM1 T4 ON M.SERIES=T4.SERIES
    LEFT JOIN OSTC T6 ON T6.CODE= L.TAXCODE
    LEFT JOIN OUBR T7 ON  T7.NAME = T6.U_LOC
    LEFT JOIN OUSR T8 ON T8.BRANCH = T7.CODE
    WHERE (M.DocDate >= '[%0]' AND M.DocDate <= '[%1]')
    AND  TARGETTYPE !='14' and taxrate !='0'  A
    ND T6.RATE != '0'
    and t6.u_loc ='[%2]'
    GROUP BY
    M.DocNum,M.DocDate,M.CARDCODE,M.CardName,M.NumAtCard,M.DocEntry,
    M.DiscSum,M.WTSum,
    M.DocTotal,M.Series,T4.SeriesName,
    T4.REMARK,M.RoundDif,M.VATSUM,T.STATYPE,T.TAXRATE,Q.LINETOTAL,t4.series,
    l.targettype,t.docentry,L.TAXCODE,T6.RATE
    Pls Gimme Some Ideas guys for designing this report .
    Thanks And Regards,
    P.V

    Hai Gordon,
    Thanks for the suggestion but i am sorry to say that after adding the said  Condition  to the below query it is showing the Below error.
    QUERY :
    SELECT distinct  M.DocNum AS 'AR Inv. #', M.DocDate as 'Date',
    l.targettype AS 'TARGET TYPE',
    t4.series,T4.SeriesName,
    case when T4.SeriesName='LOC/HOF' then 'HEAD OFFICE'
           when T4.SeriesName='LOC/CHN' then 'CHENNAI'
            when t4.seriesName ='INS/CHN' THEN 'CHENNAI'
            WHEN T4.SERIESNAME ='STF/CHN' THEN 'CHENNAI'
            WHEN T4.SERIESNAME ='INS/HOF' THEN 'HEAD OFFICE'
           end Location,L.TAXCODE,T6.RATE,
    case when t.statype ='1' then  'VAT'
           WHEN T.STATYPE ='4' THEN 'CST'
           END TAXTYPE,T.STATYPE,
    M.CARDCODE,M.CardName as 'Customer Name',M.NumAtCard as 'Bill No. & Dt.',M.DiscSum,M.RoundDif,
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry) as 'Base Amt.(Rs.)',M.VATSUM,
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry and statype =1  ) as 'VAT  SALES',
    (SELECT SUM(TaxSum) FROM INV4 t where t.docentry=m.docentry and statype=1  ) as '  VAT COLLECTED ',
    (Select Sum(LineTotal) FROM INV1 L Where L.DocEntry=M.DocEntry and statype =4  ) as 'CST  SALES',
    (SELECT SUM(TaxSum) FROM INV4 where statype=4 and  DocEntry=M.DocEntry   ) as ' CST COLLECTED ',
    (Select Sum(LineTotal) FROM INV3 Q Where Q.DocEntry=M.DocEntry) as 'FREIGHT',
    M.DocTotal as 'Total (Rs.)'
    FROM OINV M LEFT OUTER JOIN INV1 L on L.DocEntry=M.DocEntry
    LEFT OUTER JOIN INV4 T on T.DocEntry=L.DocEntry
    LEFT OUTER JOIN INV5 J ON M.DocEntry = J.AbsEntry
    LEFT OUTER JOIN INV3 Q ON M.DocEntry = Q.DocEntry
    INNER JOIN NNM1 T4 ON M.SERIES=T4.SERIES
    LEFT JOIN OSTC T6 ON T6.CODE= L.TAXCODE
    LEFT JOIN OUBR T7 ON  T7.NAME = T6.U_LOC
    LEFT JOIN OUSR T8 ON T8.BRANCH = T7.CODE
    WHERE (M.DocDate >= '[%0]' AND M.DocDate <= '[%1]')
    AND  TARGETTYPE !='14' and taxrate !='0'  AND T6.RATE != '0'
    AND $[USER] in (SELECT USERID FROM OUSR WHERE BRANCH = T7.CODE)
    GROUP BY
    M.DocNum,M.DocDate,M.CARDCODE,M.CardName,M.NumAtCard,M.DocEntry,
    M.DiscSum,M.WTSum,
    M.DocTotal,M.Series,T4.SeriesName,
    T4.REMARK,M.RoundDif,M.VATSUM,T.STATYPE,T.TAXRATE,Q.LINETOTAL,t4.series,
    l.targettype,t.docentry,L.TAXCODE,T6.RATE
    ERROR
    1). [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near 'USER'.
    2). [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near the keyword 'GROUP'.
    3). [Microsoft][SQL Server Native Client 10.0][SQL Server]Statement 'User-Defined Values' (CSHS) (s) could not be prepared.
    Regards,
    P.V

  • Need Report based on "CUSTOM DATA field @ Shop Order Maintenance"

    Need the REPORT based on CUSTOM DATA field.
    Requirement - I am having the CUSTOM data at Shop Order Maintenance that is called as XXX, I need some report in SAP ME which can display the SFC related to particular Shop order based on XXX Number.

    Hi!
    As far as I remember there is no such base report. So, you may try to create it using SDK or request it as custom enhancement from SAP.
    If you want to create it using SDK, you can find the required data for report in CUSTOM_FIELDS table.
    Regards,
    Alex.

  • WOrkflow related table and zfunction modules used in a particular workflow

    hi gurus,
                  we need to develop a tool to findout the custom WF, custom BOR and workflow related Zfunction modules used in a particular workflows in the client system.
    Eg-
          I have a custom workflow i need to find the list of all zfunction modules , z includes used in that Workflow.
    please suggest us  the table names which stores ZFunction module or z includes used in particular workflow
    Regards,
    Hari

    The only way to do this is to read through the source code of all the objects accessed within workflow and look for the relevant ABAP statements that access Z tables or function modules.
    [This wiki|https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/utilitytosearchABAPsourcecodeandTextelementsfora+string] should get you started on that part.
    As far as the objects are concerned, this is another story altogether. Something as simple as using an SAP standard object attribute in work item text could actually be a delegated subtypes with a redefined virtual attribute.
    So you need to scan everything: all tasks in a workflow and methods, as well as all container elements of each step. You will also need to navigate the object hierarchy to deal with delegation and subtypes. Then you need to consider propagation, what about Zfunction modules called by Zfunction modules in workflow? What if the method submits a report - you would need to scan that report and everything else that it calls and so on.
    This could be a fiendish challenge but sounds like a fun project. Good luck!

  • How to create a report based on a DataSet programatically

    I'm working on a CR 2008 Add-in.
    Usage of this add-in is: Let the user choose from a list of predefined datasets, and create a totally empty report with this dataset attached to is. So the user can create a report based on this dataset.
    I have a dataset in memory, and want to create a new report in cr2008.
    The new report is a blank report (with no connection information).
    If I set the ReportDocument.SetDataSource(Dataset dataSet) property, I get the error:
    The report has no tables.
    So I must programmatically define the table definition in my blank report.
    I found the following article: https://boc.sdn.sap.com/node/869, and came up with something like this:
    internal class NewReportWorker : Worker
          public NewReportWorker(string reportFileName)
             : base(reportFileName)
    public override void Process()
             DatabaseController databaseController = ClientDoc.DatabaseController;
             Table table = new Table();
             string tabelName = "Table140";
             table.Name = tabelName;
             table.Alias = tabelName;
             table.QualifiedName = tabelName;
             table.Description = tabelName;
             var fields = new Fields();
             var dbField = new DBField();
             var fieldName = "ID";
             dbField.Description = fieldName;
             dbField.HeadingText = fieldName;
             dbField.Name = fieldName;
             dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
             fields.Add(dbField);
             dbField = new DBField();
             fieldName = "IDLEGITIMATIEBEWIJS";
             dbField.Description = fieldName;
             dbField.HeadingText = fieldName;
             dbField.Name = fieldName;
             dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
             fields.Add(dbField);
             // More code for more tables to add.
             table.DataFields = fields;
             //CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo info =
             //   new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
             //info.Attributes.Add("Databse DLL", "xxx.dll");
             //table.ConnectionInfo = info;
             // Here an error occurs.
             databaseController.AddTable(table, null);
             ReportDoc.SetDataSource( [MyFilledDataSet] );
             //object path = @"d:\logfiles\";
             //ClientDoc.SaveAs("test.rpt", ref path, 0);
    The object ClientDoc referes to a ISCDReportClientDocument in a base class:
       internal abstract class Worker
          private ReportDocument _ReportDoc;
          private ISCDReportClientDocument _ClientDoc;
          private string _ReportFileName;
          public Worker(string reportFileName)
             _ReportFileName = reportFileName;
             _ReportDoc = new ReportDocument();
             // Load the report from file path passed by the designer.
             _ReportDoc.Load(reportFileName);
             // Create a RAS Document through In-Proc RAS through the RPTDoc.
             _ClientDoc = _ReportDoc.ReportClientDocument;
          public string ReportFileName
             get
                return _ReportFileName;
          public ReportDocument ReportDoc
             get
                return _ReportDoc;
          public ISCDReportClientDocument ClientDoc
             get
                return _ClientDoc;
    But I get an "Unspecified error" on the line databaseController.AddTable(table, null);
    What am i doing wrong? Or is there another way to create a new report based on a DataSet in C# code?

    Hi,
    Have a look at the snippet code below written for version 9 that you might accommodate to CR 2008, it demonstrates how to create a report based on a DataSet programmatically.
    //=========================================================================
    +           * the following two string values can be modified to reflect your system+
    +          ************************************************************************************************/+
    +          string mdb_path = "C:
    program files
    crystal decisions
    crystal reports 9
    samples
    en
    databases
    xtreme.mdb";    // path to xtreme.mdb file+
    +          string xsd_path = "C:
    Crystal
    rasnet
    ras9_csharp_win_datasetreport
    customer.xsd";  // path to customer schema file+
    +          // Dataset+
    +          OleDbConnection m_connection;                         // ado.net connection+
    +          OleDbDataAdapter m_adapter;                              // ado.net adapter+
    +          System.Data.DataSet m_dataset;                         // ado.net dataset+
    +          // CR variables+
    +          ReportClientDocument m_crReportDocument;          // report client document+
    +          Field m_crFieldCustomer;+
    +          Field m_crFieldCountry;+
    +          void CreateData()+
    +          {+
    +               // Create OLEDB connection+
    +               m_connection = new OleDbConnection();+
    +               m_connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdb_path;+
    +               // Create Data Adapter+
    +               m_adapter = new OleDbDataAdapter("select * from Customer where Country='Canada'", m_connection);+
    +               // create dataset and fill+
    +               m_dataset = new System.Data.DataSet();+
    +               m_adapter.Fill(m_dataset, "Customer");+
    +               // create a schema file+
    +               m_dataset.WriteXmlSchema(xsd_path);+
    +          }+
    +          // Adds a DataSource using dataset. Since this does not require intermediate schema file, this method+
    +          // will work in a distributed environment where you have IIS box on server A and RAS Server on server B.+
    +          void AddDataSourceUsingDataSet(+
    +               ReportClientDocument rcDoc,          // report client document+
    +               System.Data.DataSet data)          // dataset+
    +          {+
    +               // add a datasource+
    +               DataSetConverter.AddDataSource(rcDoc, data);+
    +          }+
    +          // Adds a DataSource using a physical schema file. This method require you to have schema file in RAS Server+
    +          // box (NOT ON SDK BOX). In distributed environment where you have IIS on server A and RAS on server B,+
    +          // and you execute CreateData above, schema file is created in IIS box, and this method will fail, because+
    +          // RAS server cannot see that schema file on its local machine. In such environment, you must use method+
    +          // above.+
    +          void AddDataSourceUsingSchemaFile(+
    +               ReportClientDocument rcDoc,          // report client document+
    +               string schema_file_name,          // xml schema file location+
    +               string table_name,                    // table to be added+
    +               System.Data.DataSet data)          // dataset+
    +          {+
    +               PropertyBag crLogonInfo;               // logon info+
    +               PropertyBag crAttributes;               // logon attributes+
    +               ConnectionInfo crConnectionInfo;     // connection info+
    +               CrystalDecisions.ReportAppServer.DataDefModel.Table crTable;+
    +               // database table+
    +               // create logon property+
    +               crLogonInfo = new PropertyBag();+
    +               crLogonInfo["XML File Path"] = schema_file_name;+
    +               // create logon attributes+
    +               crAttributes = new PropertyBag();+
    +               crAttributes["Database DLL"] = "crdb_adoplus.dll";+
    +               crAttributes["QE_DatabaseType"] = "ADO.NET (XML)";+
    +               crAttributes["QE_ServerDescription"] = "NewDataSet";+
    +               crAttributes["QE_SQLDB"] = true;+
    +               crAttributes["QE_LogonProperties"] = crLogonInfo;+
    +               // create connection info+
    +               crConnectionInfo = new ConnectionInfo();+
    +               crConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;+
    +               crConnectionInfo.Attributes = crAttributes;+
    +               // create a table+
    +               crTable = new CrystalDecisions.ReportAppServer.DataDefModel.Table();+
    +               crTable.ConnectionInfo = crConnectionInfo;+
    +               crTable.Name = table_name;+
    +               crTable.Alias = table_name;+
    +               // add a table+
    +               rcDoc.DatabaseController.AddTable(crTable, null);+
    +               // pass dataset+
    +               rcDoc.DatabaseController.SetDataSource(DataSetConverter.Convert(data), table_name, table_name);+
    +          }+
    +          void CreateReport()+
    +          {+
    +               int iField;+
    +               // create ado.net dataset+
    +               CreateData();+
    +               // create report client document+
    +               m_crReportDocument = new ReportClientDocument();+
    +               m_crReportDocument.ReportAppServer = "127.0.0.1";+
    +               // new report document+
    +               m_crReportDocument.New();+
    +               // add a datasource using a schema file+
    +               // note that if you have distributed environment, you should use AddDataSourceUsingDataSet method instead.+
    +               // for more information, refer to comments on these methods.+
    +               AddDataSourceUsingSchemaFile(m_crReportDocument, xsd_path, "Customer", m_dataset);+
    +                              +
    +               // get Customer Name and Country fields+
    +               iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Customer Name", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
    +               m_crFieldCustomer = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
    +               iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Country", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
    +               m_crFieldCountry = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
    +               // add Customer Name and Country fields+
    +               m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCustomer);+
    +               m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCountry);+
    +               // view report+
    +               crystalReportViewer1.ReportSource = m_crReportDocument;+
    +          }+
    +          public Form1()+
    +          {+
    +               //+
    +               // Required for Windows Form Designer support+
    +               //+
    +               InitializeComponent();+
    +               // Create Report+
    +               CreateReport();+
    +               //+
    +               // TODO: Add any constructor code after InitializeComponent call+
    +               //+
    +          }+//=========================================================================

  • Generating a report based on two analytics(for ex:PO and PR)

    I have a question regarding generating reports on two analytics.
    In our scenarios,
    We need to generate a report based on Purchase order and Purchase request.Is it possible in OBIA?
    if yes,please provide the solution.
    Thanks in advance

    Hi ,
    Thanks for your valuable time.
    We are in designing phase of the project. we need to know ,Is there any inbuilt dashboards or reports built using both PO and PR repositories?
    I would like to explain with ex:
    Let's say we need a report or dashboard containing few fields from PO and few fields from PR.Let's assume both PO and PR data available at same granularity.
    Do we have any such inbuilt reports or dashboard?
    If not,could we customize the report generation using both PO and PS tables?
    Please provide the solution.
    Thanks in advance.
    Edited by: user3561029 on Aug 31, 2008 9:03 PM

  • R12: How to filter Open Item Revaluation Report based on GL Date

    Hi,
    Anybody know how to filter Open Item Revaluation Report based on GL Date from and GL Date to in R12?
    Since we just upgraded from 11.5.10 to 12.1.3 and found we cannot filter those report for specific date. It shown all data included the old data from 8 years ago also.
    We need to run the report only for specific date only. Please share with me if anyone know about this.
    Thanks.

    Pl do not post duplicates - R12: How to filter Open Item Revaluation Report based on GL Date

Maybe you are looking for