Defining multiple Crystal Report Data Consumer connections?

I am creating a Xcelsius object that uses data from Crystal Reports.
To do that, I define Crystal Report Data Consumer connection. With this I can use Crystal to connect to the data source, create table of data (crosstab) and pass it to the flash object.
But I can only define one such connection. Why can't I define more that one?
I would like to pass two different sets of data and use them in different parts of the dashboard. Trying to get all the data into a single crosstab may not be possible.
Is there another way to do this?
Thanks.
Tim

I have found that I can pass any number of tables of data from CR to XC using flashvars, either XML or CSV.
XML is easy, but you chew up 17 chars (64 bytes) in XML chars per column marker. And with a 64KB string max, you're left with at most 1K data points, and that's with no data!
CSV is old school XC 4.5, converting an array in to a row-order string, not nearly as convenient as a Crystal Report Data Consumers, but it works and you have only a 4 byte overhead per column (the comma.)
Converting cross-tabs to strings, though, can be a bear because cross-tabs are evaluated column-order and you may not know how many columns you are going to have.
So use the Crystal Reports Data Consumer for the intricate cross-tab and CSV flashvars for the other tables.
And then hope it all loads in less than 7 seconds.
Tim

Similar Messages

  • Xcelsius - Crystal Report Data Consumer connection Issues

    Sorry for the long post but i hope with the full explaination, i can get a quick answer & solution.
    Using Crystal Reports 2008 and Xcelsius 2008 Engage, SQL 2008 stored procedure.
    I have tested the Crystal Reports Data Consumer connection within the Xcelsius program, using the following steps :
    1. Create a stored procedure that returns the Continent Name and the Count of Projects within each Continent.
    2. Create a Crystal Report using the stored procedure, 2 columns in the Details section, column names in the Page Header section.
    3. Save and export this as an Excel spreadsheet.
    4. Open the Xcelsius program, new file and import spreadsheet. Column A is the Continent Name, Column B is the Count.
    5. Without altering the spreadsheet, I created a graph using the data imbedded. i.Bar Graph, series and row selections. Ii. Pie chart with row data selection. Iii.Column data as series and row selections.
    6. Created a Crystal Report Data Consumer connection using the data imbedded within then spreadsheet. The column A as the u201CRow Headersu201D & column B as the u201CDatau201D. Took quite a while to get the right combination of selected components so that the preview actually showed the data and the corresponding data labels. The Legend still hasnu2019t shown up.
    7. Save and Export as Flash (swf) file.
    8. Close Xcelsius and open Crystal Reports.
    9. Open the same report used to create the spreadsheet and Insert -> Flash, choosing the newly created swf file.
    10. Link the data displayed On the Crystal Report to the Flash file now embedded, using the Flash Expert. Have tried both with the data listed on the Report, and the data listed as the result of the stored procedure.
    11. Previewed and the Data shown on the Graph does match the data listed within the Details section of the Report.
    12. I then altered the stored procedure to add u201C1u201D to all counts, and refreshed the Crystal Report. (I cannot add new data to the underlying database/tables, due to various other folks & projects using that same database.)
    13. The listed data does change to match the changes within the procedure.
    14. The Data labels on the Graph do change to match the changes within the procedure.
    15. The Actual Displayed Data within the Graph Does Not change to match the changes within the procedure.
    I have attempted this with a pie chart, a bar and column charts with the same affect.
    I have searched the web, printed out 4 different examples on how to make this work and still it is hit or miss. I still can not get the legend to show up, either in the preview or the within the Crystal Reports. When I preview the graph before adding the Crystal Report Data Consumer connections, it does work.
    Please someone tell me, What am I missing here ? 
    Thanks in advance for your help.

    http://www.****************/Tutorials/BI/Xcelsius/Index.htm
    http://www.resultdata.com/Company/News/Newsletter/2008/aug/Articles/Xcelsius/Using%20the%20Xcelsius%20Crystal%20Report%20Data%20Consumer.htm
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/10161e25-c158-2c10-3086-ad502098b36b?QuickLink=index&overridelayout=true
    http://codesforprogrammers.blogspot.com/search/label/How%20to%20suppress%20blank%20row(s)%20in%20detail%20section%20of%20the%20report%3F
    http://www.businessobjects.com/pdf/product/catalog/crystalreports/cr_xc_integration.pdf

  • SAP Crystal Reports data source connection problem using sap business one

    Hi,
    I m facing a problem regarding: SAP Crystal Reports data source connection problem using sap business one
    I am trying to create a Crystal report but when I try to configure a new connection it does not work.
    I select Sap Business One data source and try to complete the information required to connection but it does not list my companies databases, what is the problem?
    Our Current SAP related software details are as follows:
    OS: Windows Server 2008
    SAP B1 Version: SAP B1 9 (902001) Patch 9
    SAP Crystal Report Version: 14.0.4.738 RTM
    Database: MS SQL Server 2008 R2
    I have also added some screenshots of the issues.
    Please have a look and let me know if you have any questions or any further clarifications.
    I m eagerly waiting for a quick and positive reply.

    Hi,
    There is problem with SAP Business One date source.
    I had faced same problem, I used OLEDB Data-source, and it worked fine for me.
    So, try to use OLEDB.
    Regards,
    Amrut Sabnis.

  • Schedule CR by crystal report data consumer

    Hello expert,
            I want to embed a xcelsius dashboard into crystal report by crystal report data consumer, but I don't know if I can schedule this mixed crystal report in infoview and send it out by email periodically? because I 've heard there are some restriction for crystal report data consumer on export and print.
    Many Thanks,

    Moved to xcelsius forum. It may need to be posted in the BOE Admin forum.

  • Using Crystal Report Data Connection in Xcelcius 2008

    The documentation does not explain how data to populate row, column and details is passed to SWF.
    Can some-one please point how CR Data Connection when created in Xcelcius 2008 is used in Crystal Report Design time ? Is it through Flash variables? Basically more details are needed for "when setup properly" clause. How to map Crystal Reports Fields to Xcelcius Definitions.
    Thanks
    Harish Tejwani
    From Doc:
    "With the release of Crystal Reports 2008, it is now possible to embed an Xcelsius-generated SWF file into a Crystal Report and have the SWF consume data from that report. When set up properly, refreshing the data in your Crystal Report will update the embedded SWF.
    To configure your Xcelsius SWF to consume data from its Crystal Rport source data, you must open the Data Manager in Xcelsius and add a new Crystal Report Data Consumer connection. After adding the connection, bind the following ranges to your spreadsheet:  Row Headers, Column Headers, Data"
    "Using Crystal Reports 2008, embed the SWF file into the Crystal Report source data file. When designing your Crystal Report, you will determine what fields/data populate the Row Headers, Comumn Headers, and Data ranges that were designated in your Xcelsius SWF. When set up properly, refereshing your Crystal Report will also refresh the data being sent to and consumed by the embedded SWF. See"

    <div class="content">
    <p>
    Please check the following post to see if there is a solution to the issue you are experiencing:
    </p>
    <p>
    <a href="/node/19014"><span style="color: #0063af">http://diamond.businessobjects.com/node/19014</span></a>
    </p>
    </div>

  • Crystal Reports data connection using Java beans

    Hi
    My name is Bach Ong, i'm currently perform re-configuring Crystal reports 2008 to connect via
    Java bean to Jboss server, this uses look up service on JBoss server. The connection is using Connect
    look up using the properties:
    java.naming.provider.url=jnp://emgsydapp121:10499
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    for file CRConfig.xml i put as follows:
    <JDBCURL></JDBCURL>
    <JDBCClassName></JDBCClassName>
    <JDBCUserName></JDBCUserName>
    <JNDIURL>jnp://emgsydapp121:10499</JNDIURL>
    <JNDIConnectionFactory>org.jnp.interfaces.NamingContextFactor
    y</JNDIConnectionFactory>
    <JNDIInitContext>/</JNDIInitContext>
    <JNDIUserName></JNDIUserName>
    Can you advise us if this step is correct, and is there any
    documentation that can guide us to right direction.
    for Java testing in Eclipse using remote call class it is working suing the following code:
            Properties p = new Properties();
            p.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.jnp.interfaces.NamingContextFactory");
            p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
            p.put(Context.PROVIDER_URL, "jnp://emgsydapp121:10499");
             InitialContext ctx = new InitialContext(p);
      Date asAtDate = CrystalUtils.convertToDate("2014-01-01", CrystalUtils.relativeToToday(0), false);
         String asxCode = "BHP";
         ClosingPricesReportRequest criteria = new ClosingPricesReportRequest(asAtDate, asxCode);
         InitialContext context = new InitialContext(p);
         ClosingPricesReportService ejb = (ClosingPricesReportService) context.lookup(ClosingPricesReportService.REMOTE_JNDI);
         ClosingPricesReport report = ejb.createMTMClosingPriceReport(criteria);
         System.out.println(report.getClosingPrices()[0].getClosingPrice());
         testval = report.getClosingPrices()[0].getClosingPrice().toString();
         System.out.println(testval);
    when i run the tes code the results as follow:
    10:49:45,244 DEBUG [SecurityAssociation ] Using ThreadLocal: false
    10:49:45,338 DEBUG [MicroSocketClientInvoker ] SocketClientInvoker[709446e4, socket://emgsydapp121:10473] constructed
    10:49:45,338 DEBUG [MicroRemoteClientInvoker ] SocketClientInvoker[709446e4, socket://emgsydapp121:10473] connecting
    10:49:45,338 DEBUG [MicroSocketClientInvoker ] Creating semaphore with size 50
    10:49:45,338 DEBUG [MicroRemoteClientInvoker ] SocketClientInvoker[709446e4, socket://emgsydapp121:10473] connected
    10:49:45,369 DEBUG [ClientSocketWrapper ] reset timeout: 0
    10:49:45,650 DEBUG [InvokerRegistry ] removed SocketClientInvoker[709446e4, socket://emgsydapp121:10473] from registry
    10:49:45,650 DEBUG [MicroSocketClientInvoker ] SocketClientInvoker[709446e4, socket://emgsydapp121:10473] disconnecting ...
    10:49:45,650 DEBUG [SocketWrapper ] ClientSocketWrapper[Socket[addr=/10.137.2.40,port=10473,localport=64150].2cba5bdb] closing
    37.99000000000000198951966012828052043914794921875
    37.99000000000000198951966012828052043914794921875
    Can anyone assist me in convert the above settings to get access by Crystal reports.
    My attemp current are below:
    public class CFDClosingPricesRpt extends CrystalReport {    
        //Constructor
        public CFDClosingPricesRpt(){
            super(ClosingPriceBean.INSTANCE);
         * Returns the ResultSet for this report to Crystal.
         * @param asxCode
         * @param asAtDateString
         * @return
    public ResultSet getNewReport(String asxCode, String asAtDateString) {                     
         try {
             Properties p = new Properties();
             p.put(Context.INITIAL_CONTEXT_FACTORY,
             "org.jnp.interfaces.NamingContextFactory");
             p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
             p.put(Context.PROVIDER_URL, "jnp://emgsydapp121:10499");
             //InitialContext ctx = new InitialContext(p);
             clearCachedReportBeans();     
       Date asAtDate = CrystalUtils.convertToDate("2013-01-01", CrystalUtils.relativeToToday(0), false);
          asxCode = "BHP";
          ClosingPricesReportRequest criteria = new ClosingPricesReportRequest(asAtDate, asxCode);
          //ClosingPricesReportService ejb = (ClosingPricesReportService) ctx.lookup(ClosingPricesReportService.REMOTE_JNDI);
          ClosingPricesReportService ejb = (ClosingPricesReportService) ServiceLocator.getInstance().getService(ClosingPricesReportService.REMOTE_JNDI);           
          ClosingPricesReport report = ejb.createClosingPriceReport(criteria);
          // assemble Crystal-friendly DTO
          Collection closingPrices = Arrays.asList(report.getClosingPrices());
          for (Iterator iter = closingPrices.iterator(); iter.hasNext();) {
                    MBLXClosingPrice cp = (MBLXClosingPrice) iter.next();               
                    if (cp==null) continue;               
                    addReportBean(new ClosingPriceBean( report.getSuppliedDate(),
                                cp.getClosingPrice(),
                                cp.getAsxCode()));
      } catch (Throwable x) {     
          saveErrorMessage(x);
      return getAsResultSet();             
    Thanks
    Bach Ong

    Hi Don Thanks for the reply.
    I've was able to connect via Java beans and JNDI. But this one is going the JNDI of JBoss sever, which the JNDI already configure and working for Crystal reports v10.
    Bach

  • Get the parameter fields defined in crystal report

    I am porting my application from crystal 8.5 written in C++ to crystal 2008 in .net.
    Here I am not making use of crystal report viewer neither I am creating .rpt in .net code.
    I have a set of already created .rpt files.
    I have written a function in .net to export the crystal report.
    Its a generic function and will be called for multiple crystal reports.
    I am passing the parameter values to the report by making use of the following function :
         ReportDocument repDoc;
         repDoc.SetParameterValue(APPTYPE, strNextToken[0]);
         repDoc.SetParameterValue(COMPORROLETYPE, strNextToken[1]);
    Similarly I are setting other parameter values.
    The problem here is that, all the reports do not have parameter fields defined that I am trying to set.
    They may be present for one report and absent for another. In this case , if the report does not have a particular parameter
    field, then it gives error on setting parameters and subsequently fails.
    Now I want to find out through code what all parameter fields are defined in the report. Then I will only set those
    parameter fields?
    Please guide how can this be done.
    Thanks
    Sonam

    Not as trivial as you might think. You will have to loop through all the sections of the report looking for the objects you need. I don't have a code specific to parameters, but looping through al the sections would be something like the code below. But... this will only show you parameters in a section. It will not show you parameters used in a formula, record selection formula, group selection formula, text field or a conditional formula. In order to get those parameters, you's have to parse out each of those objects looking for parameters. And this is probably not an exhaustive list of places to look for a parameter in the report.  I get a headache just thinking about this...
    Dim crSections As Sections
    Dim crSection As Section
    Dim crSubreportObject As SubreportObject
    'set the crSections object to the current report's sections
    crSections = crReportDocument.ReportDefinition.Sections
    'loop through all the sections to find all the report objects
    For Each crSection In crSections
    crReportObjects = crSection.ReportObjects
    'loop through all the report objects to find all the subreports
    For Each crReportObject In crReportObjects
    If crReportObject.Kind = ReportObjectKind.SubreportObject Then
    'you will need to typecast the reportobject to a subreport
    'object once you find it (***you'd go to setting the parameter here - or not...)
    crSubreportObject = CType(crReportObject, SubreportObject)
    'open the subreport object
    crSubreportDocument = crSubreportObject.OpenSubreport(crSubreportObject.SubreportName)
    'set the database and tables objects to work with the subreport
    Ludek
    Follow us on Twitter http://twitter.com/SAPCRNetSup

  • One parameter for multiple Crystal reports in Publication

    Does anyone know if it is possible to enter one identical parameter for multiple Crystal reports in publication when scheduling? BOE 3.1 SP3 Windows, Java.
    To elaborate I am creating publication with multiple reports, each report has one parameter and this parameter is identical in every report in publication. So instead of entering this parameter many times I would like to enter once. 
    If yes point me in the right direction to get the how to or post the steps.

    Daniel,
    Thank you so much for your answer. It was very helpful. In the end, it didn't work but it helped me figure out what was happening. I use a different form for the reports and I had it coded in the form which report to use. I created a second form for the second crystal and then I used an if statement to choose the form and it worked like a charm.
    Thanks so much again!

  • Ports Crystal Reports uses when Connecting to a Universe as a Data Source

    I have a couple of Crystal Reports that use universes as a data source.  On my Windows 7 machine I am getting an error message that "Logon Failed", rather opening and running the same report on my Windows XP machine, I get the results from the universe as expected.  I have tried multiple universes that report against different databases (Oracle, SQL Server, Sybase, etc) and I am getting the same vague error message on my Windows 7 machine with Crystal Reports 12.3.0.601. 
    Can someone please tell me what ports are being used within Crystal Reports (other than 6400) when connecting to the CMS and pulling back data from a universe?  The odd thing, is that I can connect to the CMS, see the universes that I have permissions too and even see the objects within the universe, but I cannot view the results.  This is a pretty high priority for us, so I would appreciate any feedback possible.

    Hello,
    "Seems contrary to the concept of isolating users (in this case designers) from connection details. I can only be hopeful that report users will not also have to have connections configured on the local workstations to view these reports ;-)"
    As long as you use/set Saved Data with the reports then they don't need the client installed. If they hit Refresh to update the data then obviously they need to be able to connect to the data source, how else are they going to get it.
    Think about it, you sit down to write a report off of a database you don't have access to? How are you going to create a report....
    If you planning on sending out reports for viewing only then export them to PDF or some other type, then DB connections are not an issue, the PDF's are for viewing only.
    Another concept is DB Security. Using NT Authentication or DB Authentication unless that user hitting the refresh button has access to the DB it won't prompt for log on info or if they don't provide the correct log on info they can't see new data.
    It's all about security, CR does not save the Password in the RPT file, if we did anyone could get it and hack your database.
    Not sure what your post has to do with Ports?
    If you have questions then please post, in this forum we assume post that are answered are closed.
    Don

  • XCelsius and Crystal Report data connectivity

    Hello,
    I have an Excelsius SWF-file and a Crystal Report in which I want to show the SWF. The data of the SWF should depend on a cross table in Crystal Report (event type/month. I tried but have several difficulties:
    1. there are different counts of event types in the different customer databases so I can not assign a fix data area in XCelsius
    2. I have sorted the columns in the cross table in CR according to the number of the month, but the name of the month is showing. When I choose the option "use an existing cross table" the SWF in the design form only shows the numbers and not the names like in the cross table of  CR
    3. in the preview no SWF is shown
    4. how to bind cross table(s) AND single values to CR
    Can anybody help or can suggest an exact documentation of the connection of the both programms with an example?
    Thanks in advance for help.
    Monika Anna

    Hi Ingo,
    Yes, I understand what you 're saying:
    "for distributing report objects with a larger audience you need a BusinessObjects server environment - either BusinessObjects Edge or BusinessObjects Enterprise."
    What I dont understand is WHY we need to have BusinessObject Enterprise to distribute the crystal report so that my user can access the crystal report?
    The reason why I am confused because earlier on, you mentioned we (BW users) can call the URL and access crystal report is saved in the BW Role.
    Since my BW users can access crystal report directly from BW, WHY do we still need BusinessObject Enterprise?
    Please advise, thank you.

  • Share database connection among multiple crystal reports using PULL model

    Hi All,
    Is there any way to share database connection using crystal report PULL method ? I m using crystal report 2011 with visual c# (VS2010). Reports get connected to database server using Oracle Native client drivers.
    Thanks,
    Gaurav

    In crystal report 8.5, we have used "PESetNthTableLogonInfo" (after PELogOnServer got deprecated) which shares the connection among reports. Is there any way to implement the same functionality in crystal reports.
    Thanks,
    Gaurav

  • Change crystal report data source dynamically failed with multi tables report

    hello all
    i have many reports created by someone else on his own machine using same database file i use
    my application use Visual studio 2013 win form with crystal report pack 9
    i use rpt files provided to me
    connect database use OLEDB
    to show form i use below code
    SQLstr = " select what ever  from  table "                      ' defined as Public
    reportName = rpt file path & report name
    showReport()
    public sub showReport()
    reportTable.clear()                                                       ' defined as Public
    DBAdapter = new oleDpdataAdapter(SQLstr,DBconnection)
    DBAdapter.fill(reportTable)
    dim rptDoc as new Crystaldesicin.crystalreports.Engine.ReportDocument
    rptDoc.load(reportName)
    rptDoc.setdatasource(reportTable)
    formRpt.RptViewer.reportsource = rptDoc
    formRpt.showdialog()
    now
    when i use one table report with (select from one table) >>>>> works perfectly
    but when i use report retrieve data from 2 tables and group   data like using
    SQLstr = " select 'table'.'coulumn', 'table2'.'column' ....... etc
    from 'table1'
    INNER JOIN 'table2' ON 'table'.'coulumn' = 'table2'.'column'
    it's not working and formrpt shown but asking for database login
    I noted that in database login window : server name refer to ORIGINAL DATABASE USED BY Report Creator not to my local database
    ================================================
    i tried to set
    rptDoc.datasourceconnection.item(0).setconnection("","databse file path and name", False)
    rptDoc.datasourceconnection.item(0).setlogin("admin","")
    but the same
    using dataset instead of reportTable the same error
    ================================================
    what i missed in this type of reports?
    ( apologize about long take and poor English )

    Hi
    Please have a look at the wiki Troubleshooting Issues with VS .NET Datasets and Crystal Reports.
    - Ludek
    Senior Support Engineer AGS Product Support, Global Support Center Canada
    Follow us on Twitter

  • Universe based Crystal report date prompt appears as DateTime

    I have faced this issue in all XI versions and was hoping there is a solution for this in XI 3.1 and/or Crystal 2008.
    There is a date dimension in a universe which is tied to a datetime datatype on the backend SQL server field.  If a Crystal report (XI,2008) uses this date dimension as a prompt, the prompt created in Crystal report is of type Date Time and therefore when the report is ran, the required syntax for this prompt is with timestamp.  There was a fix for a similar issue in XI R2 Fix Pack 3.3 by creating a useDateInsteadOfDateTime registry key and setting its value to the DSN of the ODBC based universe connection.  I could never get that to work by the way.
    Any ideas on how to change the prompt data type to Date without the timestamp in XI 3.1 and Crystal 2008 reports?
    Thanks.

    Hi Farhan Jaffery 
    Have you tried to change the object defination in universe level and crate a prompt and check. 
    Also try to use Add Command to retrive the database field with only date and create a prompt.
    Thanks,
    Sastry

  • Crystal Reports and Universe Connection (Access DB)

    Hi,
    I am trying to use a universe as a data source for Crystal Reports 2008. The universe is defined on a simple relational Access DB table (.mdb file which resides on the server). After selecting the universe as data source, I can select measures and attributes from it, but after clicking "ok" I am getting the error "Fehler bei Anmeldung." ("Logon failed.").
    Please note that although I am connecting to a relational (not OLAP!) DB, SAP-Note
    " 1363326 - Error: Logon failed on Crystal Report conecting to OLAP Universe."
    describes exactly the error I am facing (except that this note is for OLAP universes).
    The universe works fine if I use it in WebI as data soruce.
    Which universes can Crystal Reports 2008 actually use in general?
    Are there any special restrictions for the data model?
    Thanks for your help!

    Make sure that the Access DB is accessible also from the local workstation the CR Designer is installed on.
    In fact I would recommend to setup your universe connection to you the generic ODBC driver and setup a system DSN for accessing the DB once on your BO server and once on your client. Make sure to use the same DSN name in both cases.
    Regards,
    Stratos

  • Crystal Reports, SAP B1 - connect OINV, OPCH (A/R Invoice, A/P Invoice)

    What I need to do is to connect the two SAP B1 v9.0 tables listed above (A/P Invoice OINV, and A/R Invoice OPCH) in a Crystal report WITHOUT SQL.  How do you connect these tables?  Purpose of report is for sales commissions.  Existing customer report combines SAP B1 data from these tables but is done manually in Excel.  Attempting to create report in Crystal for automation purposes.  Will also include INV1 and PCH1 for detailed line item marketing document information.  Thanks for any assistance.

    Since the picture doesn't show what is actually linked to what, here is a written description of the links I used between tables (with 2 alternates in case I'm wrong):
    OPRJ.PrjCode left join INV1.Project
    INV1.BaseEntry left join RDR1.DocEntry
    INV1.BaseLine left join RDR1.LineNumber
    INV1.DocEntry left join OINV.DocEntry
    INV1.ObjType left join OINV.ObjType
    INV1.ItemCode inner join OITM.ItemCode
    OINV.CardCode inner join OCRD.CardCode
    OINV.SlpCode left join OSLP.SlpCode
    OITM.ItmsGrpCod left join OITB.ItmsGrpCod
    RDR1.DocEntry left join ORDR.DocEntry
    RDR1.DocEntry left join DLN1.BaseEntry
    RDR1.LineNum left join DLN1.LineNum (s/b BaseLine?)
    RDR1.DocEntry left joing POR1.BaseEntry
    RDR1.LineNum left join POR1.LineNum (s/b BaseLine?)
    RDR1.ObjType left join ORDR.ObjType
    POR1.DocEntry left join OPOR.DocEntry
    POR1.ObjType left join OPOR.ObjType
    POR1.DocEntry left join PCH1.BaseEntry
    POR1.LineNum left join PCH1.BaseLine
    PCH1.DocEntry left join OPCH.DocEntry
    PCH1.ObjType left join OPCH.ObjType
    DLN1.DocEntry left join ODLN.DocEntry
    DLN1.ObjType left join ODLN.ObjType

Maybe you are looking for