How Can I create a SAP form that contains activeX report viewer?

I'm trying to create a SAP form that contains a ActiveX control to view a Crystal Report. Can anyone Help?
Thanks,
Ezequiel.

Thanks Ludek, I use this a sub to create a report document and report viewer in sap bussines one form.
Running this code shows the sap business one form with the report viewer but then closes SAP Business One Application.
which may be the problem?.
Private Sub CreateFormWithActiveX()
    Dim CP As SAPbouiCOM.FormCreationParams
    Dim fTree As SAPbouiCOM.Form
    Dim AcXTree As SAPbouiCOM.ActiveX
    Dim oItem As SAPbouiCOM.Item
    Dim CRapp As CRAXDDRT.Application
    Dim CRRep As CRAXDDRT.Report
    'Dim CRepDoc as
    ' Set the form creation parameters
    CP = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams)
    CP.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Sizable
    CP.FormType = "ACXTree"
    CP.UniqueID = "ACTree1"
    fTree = SBO_Application.Forms.AddEx(CP)
    fTree.Left = 10
    fTree.Top = 10
    fTree.Width = 800
    fTree.Height = 600
    fTree.Title = "Crystal Report Viewer - Argentis"
    fTree.AutoManaged = True
    ' Add the TreeView Control to the form
    oItem = fTree.Items.Add("Tree", SAPbouiCOM.BoFormItemTypes.it_ACTIVE_X)
    oItem.Left = 1
    oItem.Top = 1
    oItem.Width = 800
    oItem.Height = 600
    ' Create the new activeX control
    AcXTree = oItem.Specific
    CRapp = New CRAXDDRT.Application
    CRRep = CRapp.OpenReport("C:\Projects\Crystal Report ActiveX Viewer\Crystal\Indumetaria\Reportes\ARInvoiceMatrix_portrait.rpt", 1)
    'CRRep.RecordSelectionFormula = "{OINV.DocEntry} = {?doc_num}"
    For i As Integer = 1 To CRRep.Database.Tables.Count
      Dim ConnectionInfo As CRAXDDRT.ConnectionProperties
      ConnectionInfo = CRRep.Database.Tables(i).ConnectionProperties
      ConnectionInfo.Delete("Integrated Security")
      ConnectionInfo.Delete("Provider")
      ConnectionInfo.Delete("Data Source")
      ConnectionInfo.Delete("Initial Catalog")
      ConnectionInfo.Delete("User ID")
      ConnectionInfo.Delete("Password")
      ConnectionInfo.Add("Provider", "SQLOLEDB")
      ConnectionInfo.Add("Data Source", "Ezequiel")
      ConnectionInfo.Add("Initial Catalog", "SITKA")
      ConnectionInfo.Add("Integrated Security", 0)
      ConnectionInfo.Add("User ID", "sa")
      ConnectionInfo.Add("Password", "sa2005")
    Next
    AcXTree.ClassID = "CrystalReports102.ActiveXReportViewer.1"
    'oTreeView = AcXTree.Object
    oViewer = AcXTree.Object
    oViewer.EnableToolbar = True
    oViewer.EnableStopButton = True
    oViewer.EnableSelectExpertButton = True
    oViewer.EnableSearchControl = True
    oViewer.EnableRefreshButton = True
    oViewer.EnableProgressControl = True
    oViewer.EnablePrintButton = True
    oViewer.EnablePopupMenu = True
    oViewer.EnableGroupTree = False
    oViewer.DisplayGroupTree = True
    oViewer.ReportSource = CRRep
    oViewer.ViewReport()
    fTree.Freeze(True)
    ' Make the form visible
    fTree.Visible = True
  End Sub
Regards.

Similar Messages

  • How can I create a master PDX that pulls from multiple other PDXs?

    I process aviation maintenance manuals, with the individual manuals having their own PDX. How can I create a master PDX that pulls from the individual PDXs?
    I have access to myriad versions of Windows and Acrobat so there's that...

    I’ve got 100s of manuals each with their own PDX. I’ve been asked to create a master PDX that in effect combines all of the individual PDXs into a single (cross-manufacturer, cross-fleet, cross-manual-type) searchable PDX that can be easily updated.

  • How can i create list box and  dropdown in my report?

    dear experts
    how can i create list box and  dropdown in my report?
    thanks  in advance

    Pl. see the code given below.
    REPORT Z_LISTBOX.
    Data declaration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TYPE-POOLS: VRM.
    DATA: NAME  TYPE VRM_ID,
          LIST  TYPE VRM_VALUES,
          VALUE LIKE LINE OF LIST.
    Selection screen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    PARAMETERS: PS_PARM(10) AS LISTBOX VISIBLE LENGTH 10.
    AT SELECTION SCREEN OUTPUT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    AT SELECTION-SCREEN OUTPUT.
      NAME = 'PS_PARM'.
      VALUE-KEY = '1'.
      VALUE-TEXT = 'Line 1'.
      APPEND VALUE TO LIST.
      VALUE-KEY = '2'.
      VALUE-TEXT = 'Line 2'.
      APPEND VALUE TO LIST.
      CALL FUNCTION 'VRM_SET_VALUES'
           EXPORTING
                ID     = NAME
                VALUES = LIST.
    START-OF-SELECTION.
    Regards,
    Joy.

  • How can you create a contact sheet that you can email?

    I see that you can print a contact sheet but how can you make a contact sheet that you can email where receiver can open the thumbnails and view?

    Hi,
    You can either use Bridge and the Output workspace, or grab optional plug-ins for CS5 and run Ps on OSX in the 32 bit mode. (Or grab the excellent 3rd party script, Contact Sheet X, and run that in Ps. http://ps-scripts.sourceforge.net/ContactSheetX/csx.html).
    Here's a post with links to further info:
    http://blogs.adobe.com/jkost/2011/09/the-contact-sheet-feature.html
    regards,
    steve

  • How can I create an aging summary that shows unreconciled transactions only.

    Please help experts!!

    Duplicate Thread...
    How can I create this aging summery in System Currency. Currently it shows Local Currency.
    SELECT distinct T0.[DocNum], T0.[DocDate], T0.[CardCode]"Customer Code",  T0.[CardName], t0.doctotal"Total Payment", T0.[PayNoDoc]"payment on account", isnull(t0.openbal, '0')"Not reconciled", t0.nodocsum"Total before partial reconcile", t0.nodocsum-t0.openbal as 'Reconcile Amount'
    DocTotalSy TotalpaymentSC,OpenBalSc as NotReconciledSC ,NoDocSumSy as "Total before partial reconcile SC"
    FROM [dbo].[ORCT]  T0 left JOIN RCT2 T1 ON T0.Docnum = T1.DocNum WHERE T0.[PayNoDoc] = 'y'  and isnull(t0.openbal,'0') <> '0' and t0.doctype = 'c'
    Regards,
    Kennedy

  • How do I create a smart album that contains all pictures with no keywords?

    Hi,
    I have many pictures which currently don't have any keywords at all. Now I want to tag these pictures with keywords. How can I create a smart album for those pictures without any keywords? So that I can then work just on these pictures...
    Note that I don't want to find pictures that don't have a specific keyword. I want to find all those pictures which have none keyword at all.
    Thanks,
    Rainer

    Well, there's a way but it's not great...
    Start with a smart album at whatever level you want to keyword everything under. Set to search where "rating is greater than or equal to unrated".
    Select all images, and apply a keyword like "NeedsKeyword". Yes, even the one with keywords already.
    Now change the smart folder - use the "+" menu on the upper right corner of the query box to add an "IPTC" search. In that row use the dropdown by IPTC to find "keywords", then set the one next to it to "is", then type "NeedsKeyword" (or whatever you used) into the text box. Now go up to the top of the query box and change the "Match" dropdown to be "all" instead of "Any".
    What we've done here is find all images where the only keyword is "NeedsKeyword", all the ones you've done with keywords already will not appear.
    Now, copy these images into an Album (not smart album) for tagging - this is because as soon as you tag an image it will vanish and you may wish to apply more than one tags).
    After you are done tagging, you want to remove the tag - this is trickier than you might think, as you need to remove it from images tagged before in addition to the images in the Album you just made.
    First, change your smart folder to once again find all images by unchecking the IPTC keyword search. Now you'll see all images - but you're not done yet! You cannot batch undo a keyword in a smart folder, even though you can batch add. Select all of the images and drag into the Album you were using to keyword. Inside an Album the keyword metadata inspector shows only common keywords, NeedsKeyword should be one of them - remove it and it will be gone, and all your images tagged. Now you can remove the Album and the Smart Album you created.
    Harder than it needs to be, I'd say - I've submitted feedback you need some way to search for untagged images. Heck, it may already be in 1.1! Or Joe might know of an easier way that has eluded me.
    Good luck!

  • Can I create an email form that includes a field for uploading and image?

    I'd like to create an email form in Muse that allows people to submit the usual text but also allows them to browse for and upload an image that would be emailed (attached or inline) to me along with the text.
    Does anyone know if there's a way to do that directly in Muse?
    Thanks.

    Which form?
    Many of the forms are created with LiveCycle ES so it might be possible to edit the form with Acrobat X Professional. If you have the data in an SQL database, you could possibly create a data connection and import the data into the form and save a copy of the completed form. You can also use the Acrobat JavaScript 'importTextData' to import a row of data from a tab delimited data file.
    You might want to talk to other Real Estate professionals to see how they are going do this. If you have a property management program, that program might have an update to perform this task.

  • How Can I Create A Contact Form In Dreamweaver Using ASP

    I tried to create a contact form using php, but that failed epically. The server doesn't support php, and there isn't anything I can do about that. My only option now is to create it using ASP but I can't find a good tutorial on how to do so. Please help me!

    Ask your host if they have a form-to-email script you can use.  Many commercial hosts have scripts on their servers which you can activate through your C- or Admin-panel.
    Failing that, there are some commercial products you can use.
    Forms to Go ~
    http://www.bebosoft.com/products/formstogo/overview
    Nancy O.
    Alt-Web Design & Publishing
    Web | Graphics | Print | Media  Specialists 
    http://alt-web.com/
    http://twitter.com/altweb

  • How do I create a contact form that will work with Godaddy???

    hello,
    Godaddy hosts my website and i can not get any type of contact form to work! When I publish to my .mac account it works fine, using the HTML snippet, however when I publish the exact same file to the Godaddy server it doesn't even show up. Anyone have any idea how I can resolve this? should i change hosting companies?? godaddy says that it is not there issue...

    One reason why it would not show is if not all your files have been uploaded. How are you uploading?
    If you are using Cyberduck or Transmit, you can actually check that the relevant files have been uploaded to the server. If uploading that page with the form on it, then ensure that you upload both the html page, plus the files folder that goes with it.
    Are you using Windows or Linux hosting? Linux hosting is preferable for iWeb.
    If you use GoDaddy they have facilities for you to use FormMail, so you can upload this directly to your hosting space and then create your own form using html code in an html snippet and then upload. You have more options if you do it this way and you have more control. If you use a third party such as Wufoo, everything is stored on their servers and if their servers go down for any reason you have not workable form.

  • How can I create a submit button that only saves?

    Our end users will save the completed form and later upload it to anotherg place.  I created a save button that works fine, but without a Submit button there is nothing to trigger the reminder to go back and answer required questions.  I don't want to lose that part.  Thanks in advance for any help you can offfer!

    Would something like this work for you?
    var OKToSave = true;
    if (tfSomething.isNull) {
              tfSomething.border.edge.color.value = "255,0,0";
              OKToSave = false;
    else tfSomething.border.edge.color.value = "255,255,255";
    if (!OKToSave) app.alert("Please fill in all required fields");
    else app.execMenuItem("SaveAs");

  • How can I create a jar file that will run automatically on double click

    all the jars I created run only from the command-line.
    how can I make it run by double-click on it?

    First you will need to associate .jar files with the javaw.exe program in order to just be able to double click on the jar and run it from within a windows explorer application. Next you will need to set the main class attribute of the manifest file. My understanding is that the value of this attribute is used by the launcher to know which class to load. In other words, which is your main application class. To specify this attribute open your manifest file in a text editor. You will find this file located within the jar at META-INF/MANIFEST.MF. Then, add the line,
    "Main-Class:<relative path to the main class>" However, remember not to add the .class extension to the end of the class name.
    In Windows 2000 you can associate jar files with javaw by finding a jar file in Windows Explorer and right clicking it. This will give you a context menu which should have an Open With... option (if you are not using Windows 2000 and don't see the 'open with' menu item, try holding down the shift button while right click on the file). Select the Open With... option, then, when the dialog appears highlight javaw and select the "Always use this program to open these files" checkbox. When you hit the OK button you should have all your jar files associated with the javaw process.
    Once you've done this, you should be able to double click on your jar file and run your application.
    Regards,
    Daniel Walsh

  • How do i create an adobe form that has auto numbering?

    Our purchasing department requires a Purchase Requisition that contains it's own unique number so the requisition can be associated with the Purchase Order.  Can this type of form be created using Adobe Acrobat?

    I need to create the form below and have the requisition number field auto populate and never generate a duplicate.

  • How can I create a fillabe form

    I want to make a form fillable, in an E-Version. How do I do that?

    Hi BenOlson60,
    Kindly refer to these links: http://help.adobe.com/en_US/acrobat/X/pro/using/WSB3F26303-0F1D-494a-BC55-7BF7F6684B4D.htm l
    Create fillable PDF forms | Acrobat
    Regards,
    Florence

  • How can I create a custom formula that checks if a PC file exists? (CR10)

    Post Author: lgayosso
    CA Forum: Formula
    Hello,
    I need to create a formula that validates whether a PC file exists or not to display a message ('File Found' or 'File not found'). I created a custom formula that displays the appropriate message based on a report field composed of the FilePath + FileNameWithExtension that works correctly if the field includes a value or not (Basic Syntax below):
    If {ctDocumentImages.ImgPath} <> ""  Then    Formula = "File Found"Else    Formula = "File not found"End If
    Now I want to validate that the {ctDocumentImages.ImgPath} value corresponds to an existing file; that is, I need to check that the file specified at {ctDocumentImages.ImgPath} location truly exists to determine that the file is actually 'found'. How can I accomplish this?
    Any help is greatly appreciated,
    Lucio

    Post Author: lgayosso
    CA Forum: Formula
    [email protected]:
    ( my file connection name was CrystalReports_Reports.File Name)  I have generated a report, that shows all my rpt file names, size, last updated.... etc )
    Go to database expert, create new connection, select file system data, your starting directory will be
    genplex\E\JEMS51_Server\Imaging\Int\2007\.....  you can then report on the file names found in that directory / subdirectory, etc...  When creating the link you can select all files, or just *.rpt  for example
    Ok, so you define more than one connection on your report to be able to access the File System Object, right? The problem is that my reports are generic and meant for distribution for customers where no generic base folder will exist. The value of the starting directoy is then unknown, FilePath+Name then can be any value.
    Lucio

  • How can I create a new layer that is a gradient?

    Hi, i'm very new to photoshop scripting and am having some trouble.
    I'm looking for a way to take an image i have and set it to have a gradient opacity as it approaches the middle, my thought on how to do that was to just create a layer that is a gradient from top left to bottom right and then attach that as a vector mask.
    Any ideas on how I could create this gradient layer in script, or a better method of doing this opacity gradient?
    Thanks in advance,
    Levianth

    You could try this:
    // 2012, use it at your own risk;
    #target photoshop
    if (app.documents.length > 0) {
    var myDocument = app.activeDocument;
    var theLayer = myDocument.activeLayer;
    if (theLayer.isBackgroundLayer == true) {theLayer.isBackgroundLayer = false};
    // create gradient layer;
    // =======================================================
    var idMk = charIDToTypeID( "Mk  " );
        var desc15 = new ActionDescriptor();
        var idnull = charIDToTypeID( "null" );
            var ref3 = new ActionReference();
            var idcontentLayer = stringIDToTypeID( "contentLayer" );
            ref3.putClass( idcontentLayer );
        desc15.putReference( idnull, ref3 );
        var idUsng = charIDToTypeID( "Usng" );
            var desc16 = new ActionDescriptor();
            var idType = charIDToTypeID( "Type" );
                var desc17 = new ActionDescriptor();
                var idType = charIDToTypeID( "Type" );
                var idGrdT = charIDToTypeID( "GrdT" );
                var idLnr = charIDToTypeID( "Lnr " );
                desc17.putEnumerated( idType, idGrdT, idLnr );
                var idGrad = charIDToTypeID( "Grad" );
                    var desc18 = new ActionDescriptor();
                    var idNm = charIDToTypeID( "Nm  " );
                    desc18.putString( idNm, "Custom" );
                    var idGrdF = charIDToTypeID( "GrdF" );
                    var idGrdF = charIDToTypeID( "GrdF" );
                    var idCstS = charIDToTypeID( "CstS" );
                    desc18.putEnumerated( idGrdF, idGrdF, idCstS );
                    var idIntr = charIDToTypeID( "Intr" );
                    desc18.putDouble( idIntr, 4096.000000 );
                    var idClrs = charIDToTypeID( "Clrs" );
                        var list3 = new ActionList();
                            var desc19 = new ActionDescriptor();
                            var idClr = charIDToTypeID( "Clr " );
                                var desc20 = new ActionDescriptor();
                                var idRd = charIDToTypeID( "Rd  " );
                                desc20.putDouble( idRd, 0.000000 );
                                var idGrn = charIDToTypeID( "Grn " );
                                desc20.putDouble( idGrn, 0.000000 );
                                var idBl = charIDToTypeID( "Bl  " );
                                desc20.putDouble( idBl, 0.000000 );
                            var idRGBC = charIDToTypeID( "RGBC" );
                            desc19.putObject( idClr, idRGBC, desc20 );
                            var idType = charIDToTypeID( "Type" );
                            var idClry = charIDToTypeID( "Clry" );
                            var idUsrS = charIDToTypeID( "UsrS" );
                            desc19.putEnumerated( idType, idClry, idUsrS );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc19.putInteger( idLctn, 0 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc19.putInteger( idMdpn, 50 );
                        var idClrt = charIDToTypeID( "Clrt" );
                        list3.putObject( idClrt, desc19 );
                            var desc21 = new ActionDescriptor();
                            var idClr = charIDToTypeID( "Clr " );
                                var desc22 = new ActionDescriptor();
                                var idRd = charIDToTypeID( "Rd  " );
                                desc22.putDouble( idRd, 0.000000 );
                                var idGrn = charIDToTypeID( "Grn " );
                                desc22.putDouble( idGrn, 0.000000 );
                                var idBl = charIDToTypeID( "Bl  " );
                                desc22.putDouble( idBl, 0.000000 );
                            var idRGBC = charIDToTypeID( "RGBC" );
                            desc21.putObject( idClr, idRGBC, desc22 );
                            var idType = charIDToTypeID( "Type" );
                            var idClry = charIDToTypeID( "Clry" );
                            var idUsrS = charIDToTypeID( "UsrS" );
                            desc21.putEnumerated( idType, idClry, idUsrS );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc21.putInteger( idLctn, 4096 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc21.putInteger( idMdpn, 50 );
                        var idClrt = charIDToTypeID( "Clrt" );
                        list3.putObject( idClrt, desc21 );
                    desc18.putList( idClrs, list3 );
                    var idTrns = charIDToTypeID( "Trns" );
                        var list4 = new ActionList();
                            var desc23 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc23.putUnitDouble( idOpct, idPrc, 0.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc23.putInteger( idLctn, 0 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc23.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc23 );
                            var desc24 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc24.putUnitDouble( idOpct, idPrc, 100.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc24.putInteger( idLctn, 2048 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc24.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc24 );
                            var desc25 = new ActionDescriptor();
                            var idOpct = charIDToTypeID( "Opct" );
                            var idPrc = charIDToTypeID( "#Prc" );
                            desc25.putUnitDouble( idOpct, idPrc, 0.000000 );
                            var idLctn = charIDToTypeID( "Lctn" );
                            desc25.putInteger( idLctn, 4096 );
                            var idMdpn = charIDToTypeID( "Mdpn" );
                            desc25.putInteger( idMdpn, 50 );
                        var idTrnS = charIDToTypeID( "TrnS" );
                        list4.putObject( idTrnS, desc25 );
                    desc18.putList( idTrns, list4 );
                var idGrdn = charIDToTypeID( "Grdn" );
                desc17.putObject( idGrad, idGrdn, desc18 );
            var idgradientLayer = stringIDToTypeID( "gradientLayer" );
            desc16.putObject( idType, idgradientLayer, desc17 );
        var idcontentLayer = stringIDToTypeID( "contentLayer" );
        desc15.putObject( idUsng, idcontentLayer, desc16 );
    executeAction( idMk, desc15, DialogModes.NO );
    // move layer below;
    var theGradient = myDocument.activeLayer;
    theGradient.move(theLayer, ElementPlacement.PLACEAFTER);
    // clipping mask;
    theLayer.grouped = true

Maybe you are looking for