Reference ICWC

Hi
I am using the example Page No 88 of CookBook here is little code
data: lr_bdc    type ref to cl_crm_ic_cucobdc_impl,
         lr_btorder type ref to if_bol_bo_property_access.
lr_bdc ?= me->get_custom_controller( 'CuCoBDC' ).       //here it is getting reference
CALL METHOD lr_bdc->get_navigation_data
    IMPORTING
       ev_selected_object = lr_btorder.
//But here lr_btorder is having illegal reference
and the code send by  Swagatika Swain   
VIEW Constant Private Type STRING 'CompHead.htm'
also is not working
Regards
Pulkit agrawal

Hi Pulkit,
When calling the get_navigation_data to get the object from CL_CRM_IC_CUCOBDC_IMPL, the set_navigation_data should have to be called before to put the object in the custom controller (may be done some where in the standard) . If the set_navigation_data is not called then the object will always return an illegal reference as there is no such object.
You can check it by keeping a breakpoint in the set_navigation_data of the custom controller class.
Regards
G.Raja

Similar Messages

  • Re: Creating credit memo with reference to Sales Order in ICWC

    Hello gurus
    I am new to CRM and we hv ECC 6.0 & CRM 6.0 in our environment.
    We have a process where a Credit Memo Request is created with reference to a Sales Order.
    Now till this point we had launched VA01 in the ICWC and were creating the CMR with reference to the Standard Order.
    Henceforth we want to move this to the CRM ICWC.
    In ICWC we create Standard Sales order using Work Center IC_BT_SLO tied to the Navigation profile.
    I am looking for some way of copying this order to a Credit Memo Request in the ICWC.
    I tried adding the Complaints button on the navigation profile ... however it creates a new CMR ... not sure how to enable copying it from the Original Sales order in ICWC
    Any thoughts ?
    Thanks
    Vinit

    closed
    Edited by: vinit parkar on Sep 1, 2011 4:25 PM

  • Creation of new view in ICWC

    Hi All,
    I have created the new view in my custom CRM_IC. Can I know what is the next step to do in order for the new view to show in ICWC - what is the inbound or outbound plug all about?
    Appreciate if someone can list me all the steps. Thanks

    Objective
    Calling a custom Simple View for the follow-up activity. Whenever, we click the link of a follow-up activity from the activity clipboard, the system leads us to “Simple Activity” view, where we can maintain the description and the status.
    Note
    This is just a guideline document to work with customer specific view sets for one case. While following this procedure for other cases, we may need to do further enhancements.
    A.     Primary Steps
    Create Custom Package “Z_CONS_COOK1”
    Create BSP application “Z_CRM_IC1” under package “Z_CONS_COOK1”.
    B.     Creating View Sets & Controllers
    1.     Through workbench transaction, Create New View Set: SimpleActivitySet
    2.     Specify view area name “main”.
    3.     All Controller & Model Classes are generated in the background.
    4.     Redefine method “GET_STATE_DESCRIPTION” of Controller Class “ZL_Z_CRM_IC_SIMPLEACTIVIT_IMPL” & populate with following source code:
    METHOD IF_BSP_WD_HISTORY_STATE_DESCR~GET_STATE_DESCRIPTION.
    *CALL METHOD SUPER->IF_BSP_WD_HISTORY_STATE_DESCR~GET_STATE_DESCRIPTION
    EXPORTING
       IV_CURRENT_DESCRIPTION =
    RECEIVING
       DESCRIPTION            =
        DESCRIPTION = TEXT-001.     " 'Simple Activity'
    ENDMETHOD.
    5.     Corresponding BSP Page is generated with the following code:
    %@page language="abap"%
    <%@ extension name="htmlb" prefix="htmlb"%>
    <%@ extension name="xhtmlb" prefix="xhtmlb"%>
    <%@ extension name="crm_bsp_ic" prefix="crmic"%>
    <%@ extension name="bsp" prefix="bsp"%>
    <crmic:gridLayout cellSpacing="1" columnSize="1" height="100%"
    rowSize="1" width="100%">
    <crmic:gridLayoutCell colSpan="1" columnIndex="1"
    rowIndex="1" rowSpan="1">
                <bsp:call  comp_id="<%=controller->GET_VIEWAREA_CONTENT_ID( 'main' )%>"
    url="<%=controller->GET_VIEWAREA_CONTENT_URL( 'main' )%>"/>
                </crmic:gridLayoutCell>
    </crmic:gridLayout>
    6.     Activate all objects
    C.     Creating Views & Controllers
    1.     Create View using IC Web Client Workbench transaction. Give view name “SimpleActivity”.
    In the wizard enter our view name, and specify all model nodes, model attributes and links to custom controllers.
    Add Model Nodes:
    Model Nodes          BOL Entity     High-level model node    BOL Relation
    GT_BTORDER     BTOrder                         
    GR_BTADMINH     BTAdminH     GT_BTORDER          BTOrderHeader
    GR_BTSTATUS     BTStatusH     GR_BTADMINH          BTHeaderStatusSet
    GR_BTSTATUSH     BTStatus     GR_BTSTATUS          BTStatusHCurrent
    Four nodes are the pointers to the similarly named BOL entities of the focus object. The focus object will be the Activity that the user clicked in the Activity Clipboard. Whenever this happens, an instance method of the controller is called. Method “IP_INBOUNDPLUGID” retrieves the BOL entities from the global memory and places them into these attributes. They can also be seen as buffers since they are used in multiple locations within the controller class.
         Value node: Optional entry, keep it blank.
    Add Model Attributes:
    Model Attribute     Model Node          BOL Attribute
    DESCRIPTION     GR_BTADMINH     DESCRIPTION
    STATUS          GR_BTSTATUSH     STATUS
    Create Links to Custom Controller
    Context node:          GT_BTORDER
    BSP Application:     CRM_IC
    Custom Controller:     CuCoBDC.do
    Context node (Custom Controller):     CURRENTINTERACTIONRECORD
    Select View Type
    Type: Form View
    2.     Restart the IC Web Client Workbench. We will observe, controller class is generated with methods. If we want to enhance these methods we should redefine them in the corresponding *_IMPL class.
    3.     Define the Inbound Plug.
    This is the method that is called by the framework whenever we navigate to our view set. Define method “IP_INBOUNDPLUGID” and populate with following code:
    Following attributes added to the controller class, as it was showing an error message:
    GR_BTORDER      TYPE REF TO     CL_CRM_BOL_ENTITY
    GR_BTADMINH     TYPE REF TO     CL_CRM_BOL_ENTITY
    GR_BTSTATUSH     TYPE REF TO     CL_CRM_BOL_ENTITY
    GR_BTSTATUS     TYPE REF TO     CL_CRM_BOL_ENTITY
    METHOD IP_INBOUNDPLUGID.
    data: lr_bdc     type ref to cl_crm_ic_cucobdc_impl,
          lr_btorder type ref to if_bol_bo_property_access.
    *- Read Parameter
      lr_bdc ?= get_custom_controller( 'CuCoBDC' ).
      CALL METHOD lr_bdc->get_navigation_data
      IMPORTING
        ev_selected_object = lr_btorder.
    *- Read Model
    IF lr_btorder IS BOUND.
        TRY.
           gr_btorder  ?= lr_btorder.
           gr_btadminh  = gr_btorder->get_related_entity(
                          iv_relation_name = 'BTOrderHeader' ).
           gr_btstatush = gr_btadminh->get_related_entity(
                          iv_relation_name = 'BTHeaderStatusSet' ).
           IF gr_btstatush IS NOT BOUND.
              gr_btstatush = gr_btadminh->create_related_entity(
                          iv_relation_name = 'BTHeaderStatusSet' ).
           ENDIF.
           gr_btstatus = gr_btstatush->get_related_entity(
                          iv_relation_name = 'BTStatusHCurrent' ).
           IF gr_btstatush IS NOT BOUND.
              gr_btstatush = gr_btstatush->create_related_entity(
                          iv_relation_name = 'BTStatusHCurrent' ).
           ENDIF.
           CATCH cx_root.
        ENDTRY.
    ENDIF.
    ENDMETHOD.
    4.     Confirm View Layout “SimpleActivity” consistency.
    5.     Two methods are responsible for the data transfer between the model/controller and the view and are created automatically by the wizard.
    SET_MODELLS -- Sends data to the view (PBO)
    DO_HANDLE_DATA -- Retrieves data from the HTTP request fields (PAI)
    We can redefine these methods for further enhancements.
    D.     Adjusting IC Web Client Framework
    After having defined the views, controllers and classes, we need to hook them up to the runtime profile of IC Web Client.
    STEPS:
    1.     To prepare IC Web Client framework for custom-built view-sets, create a new runtime profile BSP application in the customer namespace.
    Create BSP application “Z_CRM_IC_RT_REP” under package “Z_CONS_COOK1”.
    Copy the file CRM_IC.xml from the BSP application CRM_IC_RT_REP to “Z_CRM_IC_RT_REP”.
    2.     Adjust the contents of file “CRM_IC.xml”, as under:
    <%@page language="abap"%><?xml version="1.0"?>
    <WebDynProDefinitions>
        <Application id="CRM_IC">
            <ViewSets>
    <%@include file="../Z_CRM_IC_DT_REP/CRM_IC_All_Viewsets.xml" %>
            </ViewSets>
            <NavigationalLinks>
    <%@include file="../Z_CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
            </NavigationalLinks>
        </Application>
    </WebDynProDefinitions>
    3.     Create BSP application Z_CRM_IC_DT_REP in package Z_CONS_COOK1.
    4.     Copy page fragment CRM_IC_All_Viewsets.xml of BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP and replace the file contents with the following lines:
    Page fragment: CRM_IC_All_Viewsets.xml
    <%@page language="abap"%>
    <%@include file="MainViewSet.xml" %>
    <%@include file="../CRM_IC_DT_REP/BuPaViewSet.xml" %>
    <%@include file="../CRM_IC_DT_REP/CRM_IC_All_Viewsets_wo_BUPA_and_Main.xml" %>
    This definition still works with all standard view sets, but replaces the MainViewSet.xml with our own definition, since it is now loaded from Z_CRM_IC_DT_REP.
    5.     Copy page fragment MainViewSet.xml from BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP.
    6.     Copy page fragment CRM_IC_All_NavLinks.xml of BSP application CRM_IC_DT_REP to Z_CRM_IC_DT_REP and replace the file contents with the following line:
    <%@page language="abap" %>
    <%@ include file="../CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
    This definition makes sure that standard navigational links still work and that we are able to add our own link definitions later.
    7.     Activate all objects.
    8.     Customize the IC Web Client Runtime Framework Profile in such a way that the new Source file is used with the following sample code:
    Navigation: SPRO &#61664; CRM &#61664; Interaction Center Web Client &#61664; Customer-Specific System Modifications &#61664; Define IC Web Client Runtime Framework Profiles.
    Provide new profile name “ZCUST_PROF” & populate it with following set of attributes:
    Profile name:      ZCUST_PROF
    Component Set:      ALL
    Separate Display Model: Off
    Application:      IC_BASE
    Viewset name:     workViewSet
    Runtime Rep.Type: BSP Application
    Application:          Z_CRM_IC_RT_REP
    Page:          CRM_IC.XML
    E.     Creating View Definitions for Design Time Repositories
    1.     Every new view set must be defined in Design Time Repository. For this purpose, create page fragment SimpleActivitySet.xml in BSP application Z_CRM_IC_DT_REP and maintain it as shown in the following sample code:
    Page fragment “SimpleActivitySet.xml”
    <%@page language="abap"%>
    <ViewSet id="Z_CRM_IC1 /SimpleActivitySet">
    <ViewArea id="main" views="Z_CRM_IC1 /SimpleActivity"/>
    </ViewSet>
    2.     Include file “SimpleActivitySet.xml" into page CRM_IC_All_Viewsets.xml of BSP application Z_CRM_IC_DT_REP.
    Page “CRM_IC_All_Viewsets.xml” after modification:
    <%@page language="abap"%>
    <%@include file="MainViewSet.xml" %>
    <%@include file="../CRM_IC_DT_REP/BuPaViewSet.xml" %>
    <%@include file="../CRM_IC_DT_REP/CRM_IC_All_Viewsets_wo_BUPA_and_Main.xml" %>
    <%@ include file="SimpleActivitySet.xml" %>
    3.     Activate all objects.
    F.     Creating Navigational Link Definitions for Design Time Repositories
    To provide a navigational link for the activity clipboard, define this link.
    1.     Create Page fragment “SimpleActivityNavLinks.xml” in BSP Application “Z_CRM_IC_DT_REP” and maintain layout with following code:
    <NavigationalLink name="SimpleActivity">
    <Source viewRef="IRecActivitiesClipboard"
    outboundPlugRef="default"/>
                   <Targets>
    <Target viewRef=" Z_CRM_IC1/SimpleActivity"
    inboundPlugRef="inboundplugid"/>
    </Targets>
    </NavigationalLink>
    2.     Similar to the view definition, also the Navigational Link must be included into the framework.
    Add the following line
    <%@ include file="SimpleActivityNavLinks.xml" %>  to the file
    CRM_IC_ALL_NavLinks.xml in the BSP application “Z_CRM_IC_DT_REP”.
    Page fragment “CRM_IC_All_NavLinks.xml” – source code
    <%@page language="abap" %>
    <%@ include file="../CRM_IC_DT_REP/CRM_IC_All_NavLinks.xml" %>
    <%@ include file="SimpleActivityNavLinks.xml" %>
    3.     Activate all objects.
    G.     Placing View Sets into Controller Hierarchies
    1.     Adjust the file MainViewSet.xml in BSP application Z_CRM_IC_DT_REP.
    Add the reference to our view set and activate the file as shown in the following sample code:
              Page fragment: MainViewSet.xml
    <%@page language="abap"%>
    <ViewSet id="IC_BASE/ICAPPMainViewSet">
         <ViewArea id="navigationArea" views="IC_BASE/navigationViewSet"/>
         <ViewArea id="workArea" views="IC_BASE/workViewSet"/>
         <ViewArea id="contextArea" views="IC_BASE/contextAreaView"/>
         <ViewArea id="breadCrumbsArea" views="IC_BASE/BreadCrumbsView"/>
         <ViewArea id="globalSearchArea" views="HistoryView"/>
         <ViewArea id="helpArea" views="Help"/>
           <ViewArea id="statusArea" views="StatusView"/>
         <ViewArea id="errorArea" views="IC_BASE/ErrorViewSet"/>
    </ViewSet>
    <ViewSet id="IC_BASE/navigationViewSet">
         <ViewArea id="navigationViewSetArea" views="IC_BASE/NavBarView"/>
    </ViewSet>
    <ViewSet id="IC_BASE/workViewSet">
         <ViewArea id="workViewSetArea"
                     views="<%@include file="../CRM_IC_DT_REP/StdWorkareaOccupation.xml" %>
                     Z_CRM_IC1/SimpleActivitySet "/>
    </ViewSet>
    H.     Customize Activity Clipboard
    To make activity clipboard call our new view set, change it’s customizing.
    1.     Create Activity Clipboard profile called “ZCUST_PROF”.
    Navigation: SPRO &#61664; CRM &#61664; IC Web Client &#61664; Basic Functions &#61664; Define Activity Clipboard Profiles.
    Profile name: ZCUST_PROF (copy all entries)
    Keep Technical Profile name: DEFAULT
    2.     Assign this profile to IC Web Client profile.
    3.     Create a new entry for the object BTOrder and wrapped object type BUS2000126 by copying the existing entry BTORDERBUS2000126.
    Activity Clipboard Entry ID: ZBTORDERBUS2000126
    BOL Type: BTOrder
    NavigationLink: SimpleActivity
    4.     Go back to your profile and select Assign Entries to Profile. Replace the original Entry ID BTORDERBUS2000126  with your new entry ZBTORDERBUS2000126.
    5.     Activate your changes and test the IC WebClient (application CRM_IC)

  • Complaint CRMR with Reference to ECC billing document

    CRM 5.0
    working on creating the CRMR complaint document with reference to the ECC billing document and are close to having this work in CRM online (trying to figure out the badi's)
    CRM_COPY_BADI_BILLDO
    CRM_COPY_BADI_R3LORD
    The SAP help says this will work in ICWC & portal.
    In CRM online creating a CRMR will automatically bring a pop matchcode window where you search for the billing document.
    How is this done in ICWC?  The reference document search in ICWC is taking me directly to the Inbox and invoices are not searchable there. Will give points

    sap help shows create with ref not available via icwc

  • Error in CRM ICWC

    hi friends
    In ICWC when i click the link Interaction Record then in the first view area it shows this error
    Error:-
    An exception occurred during the activation of target view IRecReason for the navigation
    An Exception OccurredException Class CX_BSP_INV_PAGE
    Text: BSP Exception: Das Objekt IRecReason.do in der URL /sap(bD1lbiZjPTAwMSZkPW1pbg==)/bc/bsp/sap/crm_ic/IRecViewSet.do ist nicht gültig.
    Program: CL_BSP_PAGE_BASE==============CP
    Include: CL_BSP_PAGE_BASE==============CM01A
    Source Text Row: 117
    An exception occurred in inbound plug IP_INBOUNDPLUG of target view IRecReason
    An Exception OccurredException Class CX_SY_REF_IS_INITIAL
    Text: Dereferencing of the NULL reference.
    Program: CL_BSP_WD_VIEW_MANAGER========CP
    Include: CL_BSP_WD_VIEW_MANAGER========CM00P
    Source Text Row: 48
    Please give me any suggestion to solve this problem i am using CRM4.0
    Regards
    Pulkit Agrawal

    Hi Pulkit,
    Goto se38
    give the program name as CL_BSP_PAGE_BASE==============CM01A
    you will come to know in which method the problem example for this
    the problem in CREATE_PAGE now u can put the brake point and debugg.
    Simlimarly do it for CL_BSP_WD_VIEW_MANAGER========CM00P  ( Looks
    like u have not copied it properlly).
    -Regards
    Sudheer

  • New view in ICWC - exception error during navigation

    Hi Experts,
    I have created new view ZSrvTDate, and I am linking this new view to other views of same View area. In the Navigational Links, I have put in the Inbound and Outbound plug as 'default'.
    When I test in ICWC, it gives me an exception error when I click on the link of new view. Error as follow:
    An exception occurred during the activation of target view ZSrvTDate for the navigation
    An exception has occurredException Class CX_BSP_INV_PAGE
    Text: BSP Exception: Das Objekt ZSrvTDate.do in der URL /sap(bD1lbiZjPTkwMCZkPW1pbiZpPTEmcz1TSUQlM2FBTk9OJTNhcHdzYmRjcm0xX0Q4MF8wMCUzYTVFM182X3Y3cUU5N3owMnd3UmpPemJ0RFRxUDRHWk5BOVljWW9TZUwtQVRU)/bc/bsp/sap/crm_ic/default_delta.do ist nicht gültig.
    Program: CL_BSP_PAGE_BASE==============CP
    Include: CL_BSP_PAGE_BASE==============CM01A
    Source Text Row: 117
    An exception occurred in inbound plug IP_DEFAULT of target view ZSrvTDate
    An exception has occurredException Class CX_SY_REF_IS_INITIAL
    Text: Dereferencing of the NULL reference
    Program: CL_BSP_WD_WINDOW==============CP
    Include: CL_BSP_WD_WINDOW==============CM004
    Source Text Row: 47
    Any idea to the above? Thanks alot

    Hi Yella,
    ZSrvTDate is the name of my new view.
    I've only done the following:
    - Create link to ZSrvTDate from SrvTAction view.
    - DO_HANDLE_EVENT to handle the event upon clicking on the link, with outbound plug 'SrvTActionToZSrvTDate'
    - Copy SrvTNavigationalLinks.xml to my custom DT BSP. Sample coding as follow:
    <NavigationalLink name="SrvTActionToZSrvTDate">
        <Source viewRef="SrvTAction" outboundPlugRef="default"/>
        <Targets>
            <Target viewRef="ZSrvTDate" inboundPlugRef="default"/>
        </Targets>
    </NavigationalLink>
    Have I missed something? Do I need to define any inbound or outbound plug? Thanks

  • ICWC serveices

    Hi,
    We are working with CRM 5.0 and we have implemented the ICWC in it , i would like to know what are the services which are needed to be active for the Transaction launcher to work in ICWC .We are fetching the ECC as well as CRM transactions in the ICWWC.
    Full points for best answer
    Regards
    Raj

    Hello Raj,
    Check help.sap.com->Best pratices->X industry packages->CRM
    There make sure you select your correct CRM version. There take a look at the "Building block library" and search for the Building Block Interaction Center WebClient. All needed information is in there, complete with references to OSS notes and so on.
    Regards,
    Joost

  • Custom action in CRM ICWC Interaction Scripting

    Hi!
    I am trying to add custom action to CRM ICWC Interaction Scripting.
    As descripbed in <a href="http://help.sap.com/saphelp_crm40sr1/helpdata/en/cf/3fd658ca8a11d6872e000086568e5f/content.htm">this topic</a> I have created java class file, packed it into jar file and saved to ICServer/root/WEB-INF/lib dir. But at runtime I am getting exception in the icserver log file - java.lang.ClassNotFoundException.
    Log file also contains list of used jars but my jar file isn't in it.
    p.s. J2EE 6.40

    Hi Victor,
    OK, I'm not so familiar with CRM IC, but from a J2EE point of view you would have to define and deploy a J2EE Engine library, and then reference it from your application. Following links might be handy:
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/9f/2ade3fc6c6ec06e10000000a1550b0/frameset.htm">Working with J2EE Engine Libraries</a>
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/57/4e4f3e065de946e10000000a114084/frameset.htm">J2EE Engine Components</a>
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/28/c9a3a9606f434ea757a3536d220704/frameset.htm">Application References</a>
    Hope it helps!
    -Vladimir

  • Error in VBA reference for Adobe Photoshop CS4 Object Library

    Hello,
    I'm using Windows 7 Pro, MS Office 2010 Pro and Creative Suite CS4 (with all updates).
    I will automate Photoshop via Visual Basic for Applications in MS Access.
    Befor using there the Adobe Photoshop CS4 Object Library I must reference it in VBA.
    But when I will du this, I get the message "Error loading DLL".
    When I will manually reference to the WIASupport.8LI File, I get the error: "Cannot reference this file"
    Can you give a tip, how I can solve this problem?
    Regards

    I have the same problem!  I have photoshop cc2014 (which we own) and the object library shows, but not for cs 5.1 (30 day trial).
    Does registering unlock something?
    Help please!!

  • "cacheHostInfo is null" and Add-SPDistributedCacheServiceInstance : Object reference not set to an instance of an object.

    I am working on a standalone install Sharepoint 2013 (no Active Directory). I found newsfeed feature is not available and checked Distributed Cache service is stopped. When start it “cacheHostInfo is null” is returned.
    I checked the Windows service “AppFabric caching service” is stopped because the default identity “Network Service” not work. Then I change the AppFabric service identity to use “.\administrator” (which is also the sp farm administrator) and the service can
    be started.
    However the “cacheHostInfo is null” when try to start Distributed Cache service in central admin.
    I searched on web and found this blog: http://rakatechblog.wordpress.com/2013/02/04/sharepoint-2013-spdistributedcacheserviceinstance-cachehostinfo-is-null/
    I tried to run the script but it return error:
    Add-SPDistributedCacheServiceInstance : Object reference not set to an
    instance of an object.
    At C:\root\ps\test.ps1:8 char:13
    + $whatever = Add-SPDistributedCacheServiceInstance
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: (Microsoft.Share…ServiceInstance:
    SPCmdletAddDist…ServiceInstance) [Add-SPDistributedCacheServiceInstance]
    , NullReferenceException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletAddDistr
    ibutedCacheServiceInstance
    I am not sure what went wrong. Please give me some idea? Thank you for any comment!

    Can you deploy Active Directory as installing without is not a supported installation scenario - http://support.microsoft.com/kb/2764086.
    Trevor Seward
    Follow or contact me at...
    &nbsp&nbsp
    This post is my own opinion and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

  • Cross Reference Source text options

    Creating a Cross Reference linking to a Paragraph. In the paragraph where the cross-reference source is inserted, may the cross-reference link be applied to existing text in that paragraph so that the cross-reference destination text does not appear? Text anchors can be created to accomplish this, but that is an extra step (I can create a cross reference linking to a paragraph all in one dialog box). Thanks in advance for any suggestions.

    Hi, Seir:
    I agree that it's confusing. Here's how I do it:
    To create a text anchor at the insertion point location:
    * Open the Hyperlinks/Cross-References panel's menu (also called "flyout menu." It's the small icon at the upper-right of the panel, below the double-arrow (>>) icon that collapses the panel.
    * Choose New Hyperlink Destination. THIS SHOULD BE NAMED NEW TEXT ANCHOR!!!
    * Choose Type: Text Anchor
    * Name the anchor as you like Click OK.
    To create a cross-reference to a text anchor:
    * Place the insertion point where you want it.
    * Click the Create new Cross-Reference button on the bottom of the Hyperlinks/Cross-Reference panel.
    * Choose Link To: Text Anchor
    * Choose the target document
    * Choose the text anchor
    * Choose the Cross-Reference format
    * Choose Appearance properties
    * Click OK
    I'm not sure what could cause the straight/curly quotes problem other than perhaps the font doesn't have curly quotes. Have you tried other fonts?
    HTH
    Regards,
    Peter Gold
    KnowHow ProServices

  • Report generation toolkit and signal express user step : problem of closing reference in "Stop" event

    Hi all,
    I'm trying to make a package of Vis to easily make Excel reports with Signal Express. I'm working on LabVIEW 8.2.1.
    I'm using the report generation toolkit, so I build a .llb from my project which contains all the hierarchy of my steps, but also the hierarchy of dynamic VIs called.
    I have made some steps, like "Open Workbook", "Write Data", etc.
    My steps run well, excepts one step : "Close Workbook".
    If my "Close Workbook" step is firing on "Run" Signal Express event, I have no error, so my reference is properly closed.
    But if my "Close Workbook" step is firing on "Stop" Signal Express event, I have an error "1", from "Generate Report Objectrepository.vi".
    I feel that I'm trying to use a reference which has been killed in the "Stop" step...
    I would like to know what exactly do Signal Express on "Stop" event and why my close function does'nt run well.
    Thanks,
    Callahan

    Hi Callahan,
    SignalExpress (SE for short) does the following on the Stop event:
    1. Takes the list of parameters that SE found on your VI's connector pane, and sets the values that the user set from the "Run LabVIEW VI" configuration page, if any.
    2. Then tells the VI that SE is running the Stop event by setting the Enum found on your VI's front panel. This in turn should produce some boolean values telling your VI to execute the Stop case.
    3. The VI is then run, with those values and states.
    4. SE checks to see if any errors where returned.
    5. Since this is the Stop event, SE releases the reference to the VI which it possesses.
    Questions for you would be, is the reference to your Workbook linked to a control on your connector pane, or held in a uninitialized Shift Register. If it's held in a Shift Register, SE would not be aware of it, and would not be able to affect that reference.
    Hope that helps. Feel free to post your LLB if it doesn't.
    Phil

  • Excel Get ActiveX References​.vi and closing references -- grrr

    I'm new to ActiveX stuff, but eager to learn! 
    The "grrr" in my Subject line is a reference to how I feel about LabVIEW's documentation from time to time.  I'm a dinosaur who came from text-based programming, and did a fair amount of C coding, so sometimes with LabVIEW I'm left with this awful feeling in the pit of my stomach like, "Good grief!  How much memory must LabVIEW be hogging up in the background when I use this vi?" or "What happens to those variables (wires) in that subVI when it completes but doesn't close?  What are their statuses when I come back in the next time?" or "What if I put a lot of elements into that array the first time and then started from element zero the second time and just put in a few?  What has happened with the memroy that was allocated when there were a lot of elements?"
    Today I'm stewing about this "Excel Get ActiveX References.vi," and what happens to the "ActiveX references" it generates each time I call the subVI in which "Excel Get ActiveX References.vi" lives.  I think that at least one of the "ActiveX references" it generates when I call it is of the type Excel._Application.  Then there appears to be an Excel._Workbook, and others.  You see, I've used "Excel Easy Report.vi" to put some data into an Excel spreadsheet, and I want to tell Excel to do a "Save" on the open spreadsheet.  I think ActiveX is the (a) right way to do that, so I'm wading into the ActiveX fray...  But this "Excel Get ActiveX References.vi" says in its help file, "Do not close ActiveX references opened with the Excel Get ActiveX References VI. References must remain open until the report is closed. Otherwise the error 3001 will occur."  Well, these Excel workbooks that get created by my VI could well stay open until after my LabVIEW VI terminates!
    So (finally), here are some of my quesitons:
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existance.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    Well, thanks for reading my novel.  I don't know what can be done with LabVIEW documentation to make it more satisfying to folks like me, but perhaps someone can weigh in on all my ActiveX questions here.
    Thank you in advance,
    Steve Brady
    Solved!
    Go to Solution.

    You need to close EVERY ActiveX reference you open.  If you don't you'll end up with some Excel processes running even after LabVIEW exits.  You can see them in Task Manager.
    I, personally, don't like the LabVIEW Report Generation Tool Kit for working with Excel.  I don't think it's flexible enough.  I have a growing library of VIs that I've written that open, manipulate, and close Excel.  Some references I pass from VI to VI and some I close right after I use them.  It all depends on what I'm doing.  If I want to enter read or write data from/to a certain range I'll get the range reference, read or write the data, then close it right away because I have no use for it any more.  On the other hand, when I open Excel or a Workbook I keep the reference until I'm done, which could be later in the program.
    1)  When I go through my subVI once, pointing to one workbook, I'll get one set of references "created" or "opened" or whatever you call it when ActiveX references spring into existence.  Now, when I exit the subVI, is it going to automatically try to "close" those ActiveX references?  I don't suppose so, since subVI's stay in memory until the calling VI closes.
    2)  Now, I come back into my subVI a second time.  New workbook gets created, so I get new references.  Ok, fine.  Uh oh!  What happened to those old references?  I suppose that if I didn't somehow save them off, I've probably lost the ability to get them back (maybe I'm wrong, but I don't need them back), but is LabVIEW going to "close" those old references (from previous times through the subVI) because I can't get to them anymore?  Won't that cause the dreaded error 3001?  If LabVIEW is not going to "close" them, what in tarnation happens to them (the old C programmer in me creeping back out)??  Now it's some oddball, orphaned reference, floating out there, hogging memory, waiting to make something crash intermittently and be a debugging nightmare?
    3)  Now, here's the real scary one.  I think I might dodge the "error 3001" bullet in questions 1) and 2), but now let's say the user closes my LabVIEW application while Excel is still open.  All those workbooks are still open.  Presumably, all those ActiveX references I was not supposed to close are still open.  I really hope that LabVIEW is decent enough to close/erase/delete/blow-away (whatever the right word is) all those ActiveX references which were opened/created by "Excel Get ActiveX References.vi" when my program terminates.  But, oh no!  Won't the error 3001 come along then?  I suppose I can just dump it in the shutdown error handling.
    1)  No, LabVIEW will NOT close those references.  You need to make sure that happens.
    2)  You can save the references in a functional global or use a class but if you're not going to save them close them as soon as you're done with them.
    3)  Your user should not be able to close your LabVIEW application without it going through the shutdown routine you've created for your program.  The ABORT button should never be exposed to the user and you should capture and discard the panel close event so your program ALWAYS shuts down is an orderly fashion.  If you don't you will have fragments of Excel hanging around in your operating system and will have to kill those processes using Task Manager.  That should only be a problem during development, not once deployed.
    I used to program in C and Assembly many moons ago.  You should have seen my first LabVIEW code.  I go back and look at it just so I can see how far I've come in the last 12 years.  I feel your pain.
    Kelly Bersch
    Certified LabVIEW Developer
    Kudos are always welcome

  • Error 7 occurred at open vi reference in New Report.VI

    Hello!
    I use the report generation toolkit on LabView 7.0 to create a report in Excel. The program works fine until I make an executable version. I the get the error:
    Error 7 occurred at open vi reference in New Report.VI
    I use the New Report.VI, Bring Excel to front.VI and Save Report To File.vi
    Can you pleace help me!!!

    Most likely, you did not include the required libraries in your build script. When building an executable in which you use the Report Generation Toolkit, you must include the _Word Dynamic VIs.vi from _wordsub.llb and _Excel Dynamic VIs.vi from _exclsub.llb as dynamic VIs on the Source Files tab.
    Check this article for more info.
    http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/86256a47004e16d186256a84004cb883?OpenDocument
    Daniel L. Press
    PrimeTest Corp.
    www.primetest.com

  • Open VI Reference for a Project Library VI

    Hi,
    my code calls some subVIs by reference by using "Open VI Reference" and "Call by Reference" VIs. Now, "Open VI Reference" expects a path to the VI:
    When the SubVIs sit in the same folder as the calling VI, it is easy to simply supply the name of the SubVI. However, I would like to call a SubVI that is part of a project library sitting somewhere else on the disk. I could give the relative path, but this make the code pretty inflexible and if the relative path changes all the paths would need to be ammended. Ideally, I want to utilize the fact that I am using a project library. The help for Open VI Reference states that
    vi path accepts a string containing the name of the VI that you want to reference or a path to the VI that you want to reference. If you wire a name string, the string must match the full delimited name of a VI in memory on that target. If you wire a path, LabVIEW searches for a VI in memory that you previously loaded from that path on the same target.
     I thought that the underlined path was my ticket and tried something like this:
    but this did not work and I got
    "Error 1004 occurred at Open VI Reference in MainVI.vi:
    Possible reason(s):
    LabVIEW:  The VI is not in memory.
    To load a VI into memory with the Open VI Reference function, a path must be wired for the VI Path input."
    Wiring a path is not desirable as per reasoning above. Is there a way around the issue?
    Thanks in advance!
    Solved!
    Go to Solution.

    tst wrote:
    That should work, but you have to pay attention to something that's stated both in the help and in the error - if you use a string, the only way for LV to know what to access is if that something is already "in memory" (sometimes also referred to as "being loaded"). In the case of standard libraries, that means the VI itself or one of its callers has to be loaded. In the case of classes and XControls, loading the library (as in having it in an open project) should be enough to also load all of its members.
    Hm, thanks, I am not advanced enough to know about classes and XControls, but I will check it out. My VIs are part of a library but obviously don't get loaded because, as you said, all their calls are dynamic.
    tst wrote:
    What I usually do is use a static reference to a VI to get its name, because that ensures that it will be statically linked, included in executables, etc. That might not work for you if you want dynamic loading and then you will need to use some other means.
    Hm, this actually gives me an idea! I could add an enable input to all these dynamically called VIs so that the logic runs only when enable is ON; otherwise the VI is called but does nothing. Then I call the VI first statically with enable=OFF just to load it in memory and then proceed with my dynamic call. A little ad-hoc, but should work and serve my purposes, I think.
    Thanks!!

Maybe you are looking for