Raise event data_changed doesnu00B4t pass parameter

I'm using a editable alv (inheritance).
CLASS lcl_my_alv DEFINITION INHERITING FROM cl_gui_alv_grid.
  PUBLIC SECTION.
    METHODS: activate_data_chg.
ENDCLASS.                    "lcl_my_alv DEFINITION
CLASS lcl_my_alv IMPLEMENTATION.
  METHOD activate_data_chg.
    DATA: pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
    RAISE EVENT data_changed
      EXPORTING er_data_changed = pr_data_changed.
  ENDMETHOD.                  
ENDCLASS.                    "lcl_my_alv IMPLEMENTATION
The event is raised by
  CALL METHOD alv_loc_onh->activate_data_chg
The method handling the event is activated.
The problem is that the parameter er_data_changed remains empty.
Suggestions how to solve this ?

Hi ,
        you have to call checked_changed_data using the class cl_alv_gui_grid object
Please reward if useful.

Similar Messages

  • Portlet event link to pass parameter between portlets

    Ok list, I followed the documentation Adding Parameters and Events to Portlets
    PDK Release 2 (9.0.2 and later) and tried to make a portlet that pass parameter to another portlet using event link. I created the supposed parameter in the page and made the correct association to the receiving parameter portlet. The case is: The parameter is not caught in the receiving parameter page.
    This is my event link jsp code:
    <%
    String sImgPath = PropertiesReader.getProperty(PropertiesReader.KEY_IMAGES_PATH);
    PortletRenderRequest portletRequest = (PortletRenderRequest)request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
    // The portlet definition in provider.xml includes the following:
    // - Event "submit" with event parameters "funcionalidade"
    String eventSubmit = EventUtils.eventName("submit");
    String eventParamFuncionalidade = EventUtils.eventParameter("funcionalidade");
    // Build up the list of parameters for the "submit" event
    NameValuePair[] eventSubmitParams = new NameValuePair[2];
    // Give the 'funcionalidade' event parameter the constant value 'chat'
    eventSubmitParams[0] = new NameValuePair(eventParamFuncionalidade, "chat");
    // The event name must be passed as a parameter on the URL
    eventSubmitParams[1] = new NameValuePair(eventSubmit, "");
    %>
    <TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
    <TR><TD><a href="<%=PortletRendererUtil.constructLink(portletRequest,   portletRequest.getRenderContext().getEventURL(), eventSubmitParams, true, true)%>"><IMG SRC="<%= sImgPath + "menuButChat.gif" %>" BORDER="0"></a></TD><TR>
    </TRABLE>
    And this is my receiving parameter jsp code:
    <%
    String sFuncionalidade = "";
    PortletRenderRequest portletRequest = (PortletRenderRequest)request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
    // Get the portlet definition - needed to get the public portlet parameters
    PortletDefinition portlet = portletRequest.getPortletDefinition();
    // Get the public portlet parameters
    ParameterDefinition[] parameters = portlet.getInputParameters();
    // Display all values for each of the public portlet parameters
    for (int currParameter = 0; currParameter < parameters.length; currParameter++)
    String name = parameters[currParameter].getName();
    out.println(" <p>name = " + name + "</p> ");
    // Get the parameter values
    String[] values = portletRequest.getParameterValues(name);
    // Display the parameter's values.
    if ( values == null )
    // Null array indicates no values for this parameter.
    out.println(" <p>values i null</p> ");
    else
    out.println(" values nco i null ");
    // Loop through each of the values and display non-null values on a separate line.
    for ( int j = 0; (values != null) && (j < values.length); j++ )
    sFuncionalidade = values[j];
    out.println(" <p>" + sFuncionalidade + "</p> ");
    %>
    And this is my portlet definition in provider.xml:
    <portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
    <id>3</id>
    <name>MenuColaboracao</name>
    <title>Menu de Colaboragco</title>
    <shortTitle>Menu de Colaboragco</shortTitle>
    <description>Portlet de menu para funcionalidade de Comuicagco e Colaboragco.</description>
    <timeout>10000</timeout>
    <timeoutMessage>Portlet timed out</timeoutMessage>
    <showEdit>false</showEdit>
    <showEditDefault>false</showEditDefault>
    <showPreview>false</showPreview>
    <showDetails>false</showDetails>
    <hasHelp>false</hasHelp>
    <hasAbout>false</hasAbout>
    <acceptContentType>text/html</acceptContentType>
    <renderer class="oracle.portal.provider.v2.render.RenderManager">
    <renderContainer>false</renderContainer>
    <contentType>text/html</contentType>
    <showPage>/menuColaboracao.jsp</showPage>
    <pageParameterName>next_page</pageParameterName>
    </renderer>
         <event class="oracle.portal.provider.v2.DefaultEventDefinition">
         <name>submit</name>
    <description>Use this event to submit the form data to a page</description>
    <parameter class="oracle.portal.provider.v2.DefaultParameterDefinition">
    <name>funcionalidade</name>
    <displayName>funcionalidade</displayName>
    <description>Parbmetro que indica a funcionalidade a ser apresentada.</description>
    </parameter>
    </event>
    </portlet>
    <portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
    <id>4</id>
    <name>HomeController</name>
    <title>Home Controller</title>
    <shortTitle>Home Controller</shortTitle>
    <description>Portlet que controla a exibigco do jsp correspondente a opgco de menu selecionada.</description>
    <timeout>10000</timeout>
    <timeoutMessage>Portlet timed out</timeoutMessage>
    <showEdit>false</showEdit>
    <showEditDefault>false</showEditDefault>
    <showPreview>false</showPreview>
    <showDetails>false</showDetails>
    <hasHelp>false</hasHelp>
    <hasAbout>false</hasAbout>
    <acceptContentType>text/html</acceptContentType>
    <renderer class="oracle.portal.provider.v2.render.RenderManager">
    <renderContainer>false</renderContainer>
    <contentType>text/html</contentType>
    <showPage>/homeController.jsp</showPage>
    <pageParameterName>next_page</pageParameterName>
    </renderer>
         <inputParameter class="oracle.portal.provider.v2.DefaultParameterDefinition">
         <name>funcionalidade</name>
    <displayName>funcionalidade</displayName>
    <description>Parbmetro que indica a funcionalidade a ser apresentada.</description>
    </inputParameter>
    </portlet>
    Where do I miss ???
    Any help will be appreciated.
    Regards,
    Leandro.

    Leandro,
    Few things which you might want to cross check to see if we are
    on the right track :
    1. Page containing Parameter receiving portlet contains a
    paga parameter mapped on to its public parameter.
    As per your example, parameter receiving page should have a page
    parameter with name - "funcionalidade" - and portlet's corresponding
    parmeter should be mapped to this page parameter. This can be
    done through "Parameters" tab in the Page Properties screen.
    2. Page containing Parameter passing portlet contains proper event
    mapping.
    As per your example, we have an event called "submit". We should
    be able to see "submit" event under "MenuColaboracao" portlet.
    When this event is raised, select which page should receive the event
    data. As soon as a page is selected, this page's public parameters
    are displayed below. Beside that we must be able to see a choice box
    which displays four choices one of which would be "Event Output".
    Map this output to the event parameter.
    Hope it helps.
    -AMJAD.

  • OO ALV validation check without event DATA_CHANGED and results via popup

    Hi Gurus,
    I'm working on SAP ECC 6.0 and I'm facing a problem during the ALV validation check. My requirement is to show an ALV with one editable field. In addition I have to pre-initialize this field in order to give a reference value to the user, but this is not always correct, or better, this field represent the maximum amount available, but, because of other validation checks, this field is not always correct (and it's ok, it's not a problem), and if it is greater than another amount I have to display an error.
    I was thinking about catching the event DATA_CHANGED and do the checks inside of it. It works but not completely, because if the user do not change anything the event is not raised and I cannot do my checks.
    My solution is to do the checks without catching the DATA_CHANGED event and display the errors in a separate popup window.
    The checks are ok, but I have problems during the displaying of the results: I would like to use the class CL_ALV_CHANGED_DATA_PROTOCOL in order to display the errors, I tried creating the Object:
      Data: go_Error Type Ref To CL_ALV_CHANGED_DATA_PROTOCOL.
      Create Object go_Error
        Exporting
    *      i_container =
          i_calling_alv = go_0200_Alv
    giving it a reference to the ALV (the go_0200_Alv is my CL_GUI_ALV_GRID object).
    Then I did many Call Methods to the Add_Protocol_Entry to add the message in the protocol and then display them calling the Display_Protocol Method of my "go_Error".
    The Popup is shown and the "links" to the ALV are correct (if I double click a message it selects the corresponding row of the ALV, but (and it's my problem) I cannot see the Description of the Column with the error: the popup window is an ALV grid itself with 3 columns ("Message Type", "Name of the Column" and "Message Text") where I can see correctly the Message Type and the Message Text but not the name of the column.
    Debugging the code I found that If I catch the event, the parameter er_Data_Changed (the class CL_ALV_CHANGED_DATA_PROTOCOL) is filled with some other informations like Modified Rows and other attributes like FieldCatalog, Row-ID, so I thought the problem was related to that, and that's why I replicated the whole case in my processing, filling every table I would see if I use the "standard way" for validation. Bu it didn't correct the error. I still don't see the name of the Column.
    This is my code, it's only the part interested, If you need other informations, please ask me and I will copy them.
    form CHECK_ALV_0200_0110 Changing pc_Error Type Char01.
      Data: lt_MatchK1 Type tp_Matches1_Key_t,
            l_Message  Type Char100,
            l_MessX    Type String,
            l_QtaRes   Type ZDM_AMT_ASSIGNED,
            l_QtaAcc   Type ZDM_AMT_ACCRUED,
            l_QtaStep  Type ZDM_AMT_ASSIGNED.
      Field-Symbols: <fs_Table>    Type Standard Table,
                     <fs_Master>   Type Standard Table,
                     <fs_Mod_Cell> Type LVC_S_MODI,
                     <fs_Line>     Type Any,
                     <fs_Field>    Type Any,
                     <fs_Any>      Type Any.
      Data lt_Matches_Alv_Mod Type tp_Matches1_Alv_t.
      Data ls_Modi Type LVC_S_MODI.
      Data: l_Row_ID Type I,
            l_Tabix  Type I.
      Field-Symbols: <fs_Match_ALV> Type tp_Matches1_Alv_s.
      Free go_Error.
      CREATE OBJECT go_Error
        EXPORTING
    *      i_container =
          i_calling_alv = go_0200_Alv
    * Validation Checks
      Clear pc_Error.
      Clear ls_Modi.
      Loop At gt_Matches1_Alv Assigning <fs_Match_ALV>.
        l_Tabix = Sy-Tabix.
        Check <fs_Match_ALV>-Status Eq con_Status_Temp.
    *   Set the Modified Row for the CL_ALV_CHANGED_DATA_PROTOCOL object
          Append <fs_Match_ALV> To lt_Matches_Alv_Mod.
          Add 1 To ls_Modi-Row_Id.
          ls_Modi-FieldName = 'AMT_DEDUCTED'.
          Write <fs_Match_ALV>-Amt_Deducted To ls_Modi-Value Currency <fs_Match_ALV>-Waers.
          Condense ls_Modi-Value No-Gaps.
          ls_Modi-Tabix = l_Tabix.
          Append ls_Modi To: go_Error->mt_Mod_Cells,
                             go_Error->mt_Good_Cells.
          l_Row_ID = ls_Modi-Row_Id.
        Clear l_Message.
        If <fs_Match_ALV>-Amt_Deducted Eq 0.
          pc_Error = con_X.
          CALL METHOD go_Error->Add_Protocol_Entry
            EXPORTING
              i_msgid     = 'ZDMV'
              i_msgty     = 'E'
              i_msgno     = '005'
    *          i_msgv1     =
    *          i_msgv2     =
    *          i_msgv3     =
    *          i_msgv4     =
              i_fieldname = 'AMT_DEDUCTED'
              i_row_id    = l_Row_ID
    *          i_tabix     =
          Continue.
        EndIf.
        Case g_Dynnr.
          When '0110'.
            Perform Get_ResQtaDispute1 Using lt_MatchK1
                                             <fs_Match_ALV>
                                       Changing l_QtaRes.
            Perform Get_ResQtaAccrued1 Using <fs_Match_ALV>
                                       Changing l_QtaAcc.
    *      When '0111'.
    *        Perform Get_ResQtaDispute2 Using lt_MatchK2
    *                                         <fs_Match_ALV>
    *                                   Changing l_QtaRes.
    *        Perform Get_ResQtaAccrued2 Using <fs_Match_ALV>
    *                                   Changing l_QtaAcc.
        EndCase.
        Add <fs_Match_ALV>-Amt_Deducted To l_QtaStep.
        If l_QtaStep > l_QtaRes.
    *     Store the Error
          pc_Error = con_X.
          Write l_QtaRes To l_Message Currency <fs_Match_ALV>-Waers.
          Condense l_Message No-Gaps.
          CALL METHOD go_Error->Add_Protocol_Entry
            EXPORTING
              i_msgid     = 'ZDMV'
              i_msgty     = 'E'
              i_msgno     = '002'
              i_msgv1     = l_Message
    *          i_msgv2     =
    *          i_msgv3     =
    *          i_msgv4     =
              i_fieldname = 'AMT_DEDUCTED'
              i_row_id    = l_Row_ID
    *          i_tabix     =
        EndIf.
        If l_QtaStep > l_QtaAcc.
    *     Store the Error
          pc_Error = con_X.
          Write l_QtaAcc To l_Message Currency <fs_Match_ALV>-Waers.
          Condense l_Message No-Gaps.
          CALL METHOD go_Error->Add_Protocol_Entry
            EXPORTING
              i_msgid     = 'ZDMV'
              i_msgty     = 'E'
              i_msgno     = '002'
              i_msgv1     = l_Message
    *          i_msgv2     =
    *          i_msgv3     =
    *          i_msgv4     =
              i_fieldname = 'AMT_DEDUCTED'
              i_row_id    = l_Row_ID
    *          i_tabix     =
        EndIf.
      EndLoop.
      If pc_Error Eq con_X.
    *   If there was at least one error, Display the Popup
        go_Error->mt_FieldCatalog[]   = gt_0200_FCat[].
        go_Error->ms_Layout-Zebra     = con_X.
        Get Reference Of lt_Matches_Alv_Mod[] Into go_Error->Mp_Mod_Rows.
        CALL METHOD go_error->display_protocol
    *      EXPORTING
    *        i_container        =
    *        i_display_toolbar  =
    *        i_optimize_columns =
      EndIf.
    EndForm.
    Do you know if there is a particular issue about that? Or, maybe, I'm doing something wrong...
    Please help me
    Regards,
    Claudio
    Edited by: Claudio Distrutti on Oct 31, 2008 12:38 PM

    Hello Claudio
    Nobody prevents you from calling your event handler method go_grid->HANDLE_DATA_CHANGED directly!
    What do I mean with that?
    I assume you are calling method go_grid->CHECK_CHANGED_DATA at the beginning of the PAI module to catch any changes from the editable ALV grid. Within the event handler method you do your validation and send the error popup if necessary.
    Now when the user closes the error popup and pushes e.g. the SAVE button then I can happen that method HANDLE_DATA_CHANGED does not trigger event DATA_CHANGED because nothing was indeed changed on the ALV grid. Yet the invalid value is still there.
    However within the FORM routine for saving the data you can just call your event handler method directly:
    FORM save_data.
    CALL METHOD go_grid->handle_data_changed
        EXPORTING
    *      er_data_changed =
          e_ucomm = 'SAVE'.
    ENDFORM.
    Now within your event handler method you always know when the method was called because if method CHECK_CHANGED_DATA triggers event DATA_CHANGED the IMPORTING parameter ER_DATA_CHANGED is bound whereas it is empty when the method is called from your SAVE routine.
    METHOD handle_data_changed.
      DATA: lo_log   TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
        IF ( er_data_changed IS BOUND ).
          lo_log = er_data_changed.
        ELSE.
          CREATE OBJECT lo_log.
        ENDIF.
    " Do the validations and send error log if necessary
      lo_log->DISPLAY_PROTOCOL( ).
    ENDMETHOD.
    Regards
      Uwe

  • Problem in raising the event DATA_CHANGED in OOP ALV

    Hi experts,
    I am currently having trouble in raising the event 'data_changed' in my OOP ALV . The event is triggered everytime I make changes to my editable cells but when it comes to clicking on the save button, it only calls 'data_changed_finished' and bypasses 'data_changed'.
    I need to call 'data_changed' before the data is saved to do some verification.
    My code is shown below.
    CALL METHOD gr_alvgrid->register_edit_event
         EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    *--functions
        CALL METHOD gr_alvgrid->set_table_for_first_display
        EXPORTING
        is_variant           = s_variant
        i_save               = 'A'
        i_default            = gc_true
        is_layout            = gs_layout
        it_toolbar_excluding = gt_exclude
        CHANGING
        it_outtab            = gt_list
        it_fieldcatalog      = gt_fieldcat
        EXCEPTIONS
        invalid_parameter_combination = 1
        program_error = 2
        too_many_lines = 3
        OTHERS = 4 .
        IF sy-subrc <> 0.
    "raise message
        ENDIF.
    CREATE OBJECT gr_event.
    SET HANDLER gr_event->handle_data_changed FOR gr_alvgrid.
    SET HANDLER gr_event->handle_data_changed_finished FOR gr_alvgrid.
    CALL METHOD gr_alvgrid->set_toolbar_interactive.
    CALL METHOD gr_alvgrid->set_ready_for_input
                  EXPORTING i_ready_for_input = 1.
    In my PAI
    CASE ok_code.
        WHEN 'SAVE'.
    *--->this calls the event 'data_changed_finished' and bypasses  'data_changed'.*                                                     
    *Check if there's data changed.
          CALL METHOD gr_alvgrid->check_changed_data
            IMPORTING
              e_valid = l_valid.
      ENDCASE.
    I checked the sap sample program BCALV_EDIT_04 and I don't see any difference except for register_edit_event but I don't think that I can leave this out in my code . Is there any points i'm missing here?
    Thanks,
    Patrick

    Hi, Spin
    do like below,
    DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid,
          cc_alv TYPE REF TO cl_gui_custom_container.
    IF cc_alv IS INITIAL. " USE This Condition
      CREATE OBJECT cc_alv
        EXPORTING
          container_name = 'CC_ALV'.
      CREATE OBJECT gr_alvgrid
        EXPORTING
          i_parent = cc_alv.
      CALL METHOD gr_alvgrid->set_table_for_first_display
        EXPORTING
          is_variant                    = s_variant
          i_save                        = 'A'
          i_default                     = gc_true
          is_layout                     = gs_layout
          it_toolbar_excluding          = gt_exclude
        CHANGING
          it_outtab                     = gt_list
          it_fieldcatalog               = gt_fieldcat
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc = 0.
        "raise message
      ENDIF.
    ENDIF.
    Please reply if any Issue,
    Thanks and Regard,
    Faisal

  • ALV Grid editable - How to raise the data_changed event from outside object

    Hi,
    i'd like to like to raise the data_changed event from outside the ALV-Grid object in order to display errors to the user.
    For example a new row was inserted within the program. The user has only to complete the missing informations. Before saving the transactions the program has to execute some semantic checks. The errors of this check process should be shown to the user by creating an instance of the cl_alv_changed_data_portocol object.
    Thanks.
    Regards

    You don't need to raise the data_changed event to perform the edits or to issue messages using cl_alv_changed_data_protocol.
    The following assumes you have an ALV grid object g_alv based on the CL_GUI_ALV_GRID class.
    You can mark the inserted records upon insertion as selected using the set_selected_rows method, and then retrieve these rows later using get_selected_rows and perform necessary edits.
    Save the row number of each inserted row into a table of the appropriate type (see the method definition for this):
    DATA: t_index_rows    TYPE  lvc_t_row.
    DATA: s_row_no        TYPE  lvc_s_roid.
    DATA: t_row_no        TYPE  lvc_t_roid.
    Load entries into t_row_no after each insert.  Capture the row number and save in the table t_row_no.
    e.g.
    PERFORM insert_row USING s_row_no-row_id.
    APPEND s_row_no TO t_row_no.
    FORM insert_row would have whatever code you are using to insert the row.  Save the row id into s_row_no-row_id (which is an INT4).
    When done with all inserts do the following
      IF t_row_no[] IS NOT INITIAL.
        CALL METHOD g_alv->set_selected_rows
          EXPORTING
            it_index_rows            = t_index_rows
            it_row_no                = t_row_no
            is_keep_other_selections = 'X'.
      ENDIF.
    Then, if SAVE is pressed without the data_changed event having been raised (such as if the user just pressed SAVE without changing anything), use method get_selected_rows to retrieve the rows that were inserted and perform the necessary edits.
      DATA: l_t_rows    TYPE lvc_t_row.              " ALV control: Table rows
      CALL METHOD g_alv->get_selected_rows
        IMPORTING
          et_index_rows = l_t_rows.
    Loop through l_t_rows and use the row as an index into the grid, perform the necessary edits, just as you would if the data_changed event had been raised.
    If any edits fail, then send messages to the user, abort the save, and re-display the grid.
    Remember to refresh the t_row_no and t_index_rows tables if you load a new data set.
    You can also use a similar technique with the data_changed event to mark each changed row as selected by saving the row ids, and then you only have to update the changed rows on SAVE, which can minimize database I/O.
    Good luck.
    Brian

  • Pass parameter from request

    Hi,
    I have 2 pages, in page2 CO2, it passes parameter 'cancel'
    processFormRequest{
    else if("Cancel".equals(pageContext.getParameter("event")))
    pageContext.putParameter("cancel", "Y");
    pageContext.forwardImmediately("OA.jsp?page=/company/oracle/apps/xxg2c/goaling/webui/Xxg2cGoalSheetSearchePG",
    null,(byte)0,null,null,true,null);
    in page1, CO1, I get the parameter 'cancel'.
    processRequest{
    cancel = pageContext.getParameter("cancel");
    Now, if I want pass 'cancel' to processFormRequest of CO1, how should I do it?
    thanks
    Lei

    Lei,
    To get the value in co1, there are two alternatives:
    1)Pass value in hashmap:
    HashMap hmap= new HashMap();
    hmap.put("cancel","Y");
    pageContext.forwardImmediately("OA.jsp?page=/company/oracle/apps/xxg2c/goaling/webui/Xxg2cGoalSheetSearchePG",
    null,(byte)0,null,hmap,true,null);
    in page1, CO1 processRequest, you can get it by
    cancel = pageContext.getParameter("cancel");
    2)Pass param in url itself:
    pageContext.forwardImmediately("OA.jsp?page=/company/oracle/apps/xxg2c/goaling/webui/Xxg2cGoalSheetSearchePG&cancel=Y",
    null,(byte)0,null,null,true,null);
    in page1, CO1 processRequest, you can get it by
    cancel = pageContext.getParameter("cancel");
    --Mukul                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Using Go URL to Pass parameter between dashboard

    Hi All,
    I am trying to pass parameter using GO URL functionality from one dashboard analysis field to another dashboard.
    The navigation is working properly but the parameter is not getting passed, I am not sure why.
    The Called dashboard has a analysis which has IS PROMPTED filter attached to it for the passing filter. I tried various ways to make this work
    Option 1
    In the calling analysis, I am using a Narrative View and inside I have used the below code.
    <a href="saw.dll?Go&Path=/shared/MI/_portal/Client-MI&Page=Supplier%20Detail%20Tab&Action=Navigate&P0=1&P1=eq&P2=Dim%20Supplier.Supplier%20Name%20Current&P3=1+%22STR%20LTD%22"> @2[br/]
    This one navigate but filtering is not happening
    Option 2 (My first preference will be this option)
    Also I tried to provide custom Data Format under the column Properties
    [html]"<font class="nav" onclick=\"JavaScript:GoNav(event, '/shared/MI/_portal/Client-MI/Supplier Detail Tab','Dim Supplier','Supplier Name Current','"@"');\">"@"</font>
    This ends up giving error
    Type mismatch of catalog object /shared/MI/_portal/Client-MI/Supplier Detail Tab -- expected , got .
      Error Details
    Error Codes: UVWDR6UA 
    Also, both the tabs (Called and Calling are under the same Dashboard)
    Can anyone please let me know, were I am making mistake. I tried refereeing Oracle documentation but still no result.
    Thanks

    Looks like you've got it almost right - just an extra unneeded "
    <a href="two.jsp"?ant=<%= ant %>"><%=antName%></a>
    which should render on the page as something like
    My Ant Task
    When you click the link, it should pass that parameter, and you can get it via request.getParameter().

  • Event data_changed of cl_gui_alv_grid

    I made a program using oo to show and edit alv grid.
    Here is the question...if the length of editable cell is less than about 40 ch,It is OK
    If editable cell is a little longer,the handler method didn't reflect at all, it seems that the event data_changed is not raised at all
    Is anyone know how to solve this problem?
    (I have registered event_enter, In fact, if it is not long ,It works fine

    OK,
    i made some tests and found out that only the last "F4 help" selected field, and it´s value, is inserted in the MT_GOOD_CELLS / MT_MOD_CELLS.
    example of my ALV insertion:
    field1: "hello"
    field2: "world"
    field3: (F4-help and selected "X")
    field4: "test"
    Saving: And now the MT_GOOD/MOD_CELLSis filled with FIELD3 and Value = 'X' ! but the rest is missing !
    Any ideas what is wrong or what i am missunderstanding her ?

  • C# COM server events "lost" when raising events while Excel is in edit mode

    I posted this question on StackOverflow (http://stackoverflow.com/questions/23798443/c-sharp-com-server-events-lost-when-raising-events-while-excel-is-in-edit-mode) but did not receive a good answer, so I'm trying my luck here.
    I have an in-proc COM server written in C# (using .NET Framework 3.5) that raises COM events based on this example: http://msdn.microsoft.com/en-us/library/dd8bf0x3(v=vs.90).aspx
    Excel VBA is the most common client of my COM server.  I’ve found that when I raise COM events while Excel is in edit mode (e.g. a cell is being edited) the event is “lost”.  Meaning, the VBA event handler is never called (even after the Excel
    edit mode is finished) and the call to the C# event delegate passes through and fails silently with no exceptions being thrown.  Do you know how I can detect this situation on my COM server?  Or better still, make the event delegate call block until
    Excel is out of edit mode?
    I have tried:
    Inspecting the properties of the event delegate – could not find any property to indicate that the event failed to be raised on the client.
    Calling the event delegate directly from a worker thread and from the main thread – event not raised on the client, no exceptions thrown on the server.
    Pushing the event delegate onto a worker thread’s Dispatcher and invoking it synchronously – event not raised on the client, no exceptions thrown on the server.
    Pushing the event delegate onto the main thread’s Dispatcher and invoking it synchronously and asynchronously – event not raised on the client, no exceptions thrown on the server.
    Checking the status code of the Dispatcher.BeginInvoke call (using DispatcherOperation.Status) – the status is always ends with “Completed”, and is never in “Aborted” state.
    Creating an out-of-proc C# COM server exe and tested raising the events from there – same result, event handler never called, no exceptions.
    Since I get no indication that the event was not raised on the client, I cannot handle this situation in my code.
    I have tested this with Excel 2010 and Excel 2013.
    Here is a simple test case.  The C# COM server:
    namespace ComServerTest
    public delegate void EventOneDelegate();
    // Interface
    [Guid("2B2C1A74-248D-48B0-ACB0-3EE94223BDD3"), Description("ManagerClass interface")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface IManagerClass
    [DispId(1), Description("Describes MethodAAA")]
    String MethodAAA(String strValue);
    [DispId(2), Description("Start thread work")]
    String StartThreadWork(String strIn);
    [DispId(3), Description("Stop thread work")]
    String StopThreadWork(String strIn);
    [Guid("596AEB63-33C1-4CFD-8C9F-5BEF17D4C7AC"), Description("Manager events interface")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [ComVisible(true)]
    public interface ManagerEvents
    [DispId(1), Description("Event one")]
    void EventOne();
    [Guid("4D0A42CB-A950-4422-A8F0-3A714EBA3EC7"), Description("ManagerClass implementation")]
    [ComVisible(true), ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(ManagerEvents))]
    public class ManagerClass : IManagerClass
    private event EventOneDelegate EventOne;
    private System.Threading.Thread m_workerThread;
    private bool m_doWork;
    private System.Windows.Threading.Dispatcher MainThreadDispatcher = null;
    public ManagerClass()
    // Assumes this is created on the main thread
    MainThreadDispatcher = System.Windows.Threading.Dispatcher.CurrentDispatcher;
    m_doWork = false;
    m_workerThread = new System.Threading.Thread(DoThreadWork);
    // Simple thread that raises an event every few seconds
    private void DoThreadWork()
    DateTime dtStart = DateTime.Now;
    TimeSpan fiveSecs = new TimeSpan(0, 0, 5);
    while (m_doWork)
    if ((DateTime.Now - dtStart) > fiveSecs)
    System.Diagnostics.Debug.Print("Raising event...");
    try
    if (EventOne != null)
    // Tried calling the event delegate directly
    EventOne();
    // Tried synchronously invoking the event delegate from the main thread's dispatcher
    MainThreadDispatcher.Invoke(EventOne, new object[] { });
    // Tried asynchronously invoking the event delegate from the main thread's dispatcher
    System.Windows.Threading.DispatcherOperation dispOp = MainThreadDispatcher.BeginInvoke(EventOne, new object[] { });
    // Tried synchronously invoking the event delegate from the worker thread's dispatcher.
    // Asynchronously invoking the event delegate from the worker thread's dispatcher did not work regardless of whether Excel is in edit mode or not.
    System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(EventOne, new object[] { });
    catch (System.Exception ex)
    // No exceptions were thrown when attempting to raise the event when Excel is in edit mode
    System.Diagnostics.Debug.Print(ex.ToString());
    dtStart = DateTime.Now;
    // Method should be called from the main thread
    [ComVisible(true), Description("Implements MethodAAA")]
    public String MethodAAA(String strValue)
    if (EventOne != null)
    try
    // Tried calling the event delegate directly
    EventOne();
    // Tried asynchronously invoking the event delegate from the main thread's dispatcher
    System.Windows.Threading.DispatcherOperation dispOp = System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(EventOne, new object[] { });
    // Tried synchronously invoking the event delegate from the main thread's dispatcher
    System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(EventOne, new object[] { });
    catch (System.Exception ex)
    // No exceptions were thrown when attempting to raise the event when Excel is in edit mode
    System.Diagnostics.Debug.Print(ex.ToString());
    return "";
    return "";
    [ComVisible(true), Description("Start thread work")]
    public String StartThreadWork(String strIn)
    m_doWork = true;
    m_workerThread.Start();
    return "";
    [ComVisible(true), Description("Stop thread work")]
    public String StopThreadWork(String strIn)
    m_doWork = false;
    m_workerThread.Join();
    return "";
    I register it using regasm:
    %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\regasm /codebase ComServerTest.dll /tlb:ComServerTest.tlb
    Excel VBA client code:
    Public WithEvents managerObj As ComServerTest.ManagerClass
    Public g_nCounter As Long
    Sub TestEventsFromWorkerThread()
    Set managerObj = New ComServerTest.ManagerClass
    Dim dtStart As Date
    dtStart = DateTime.Now
    g_nCounter = 0
    Debug.Print "Start"
    ' Starts the worker thread which will raise the EventOne event every few seconds
    managerObj.StartThreadWork ""
    Do While True
    DoEvents
    ' Loop for 20 secs
    If ((DateTime.Now - dtStart) * 24 * 60 * 60) > 20 Then
    ' Stops the worker thread
    managerObj.StopThreadWork ""
    Exit Do
    End If
    Loop
    Debug.Print "Done"
    End Sub
    Sub TestEventFromMainThread()
    Set managerObj = New ComServerTest.ManagerClass
    Debug.Print "Start"
    ' This call will raise the EventOne event
    managerObj.MethodAAA ""
    Debug.Print "Done"
    End Sub
    ' EventOne handler
    Private Sub managerObj_EventOne()
    Debug.Print "EventOne " & g_nCounter
    g_nCounter = g_nCounter + 1
    End Sub
    This problem also occurs for a C++ MFC Automation server that raises COM events.  If I raise the COM event from the main thread when Excel is in edit mode, the event handler is never called.  No errors or exceptions are thrown on the server,
    similar to my C# COM server.  However, if I use the Global Interface Table to marshal the event sink interface from the main thread
    back to the main thread, then invoking the event - it will block while Excel is in edit mode.  (I also used COleMessageFilter to disable the busy dialog and not responding dialogs, otherwise I'd receive the exception:
    RPC_E_CANTCALLOUT_INEXTERNALCALL It is illegal to call out while inside message filter.)
    Knowing that, I tried to do the same on my C# COM server.  I could instantiate the Global Interface Table (using the definition from pinvoke.net) and the message filter (using the IOleMessageFilter definition from MSDN).  However, the event still
    gets "lost" and does not block while Excel is in edit mode.
    Here's my additional C# code to try to make use of the Global Interface Table:
    namespace ComServerTest
    // Global Interface Table definition from pinvoke.net
    ComImport,
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
    Guid("00000146-0000-0000-C000-000000000046")
    interface IGlobalInterfaceTable
    uint RegisterInterfaceInGlobal(
    [MarshalAs(UnmanagedType.IUnknown)] object pUnk,
    [In] ref Guid riid);
    void RevokeInterfaceFromGlobal(uint dwCookie);
    [return: MarshalAs(UnmanagedType.IUnknown)]
    object GetInterfaceFromGlobal(uint dwCookie, [In] ref Guid riid);
    ComImport,
    Guid("00000323-0000-0000-C000-000000000046") // CLSID_StdGlobalInterfaceTable
    class StdGlobalInterfaceTable /* : IGlobalInterfaceTable */
    public class ManagerClass : IManagerClass
    //...skipped code already mentioned in earlier sample above...
    //...also skipped the message filter code for brevity...
    private Guid IID_IDispatch = new Guid("00020400-0000-0000-C000-000000000046");
    private IGlobalInterfaceTable m_GIT = null;
    public ManagerClass()
    //...skipped code already mentioned in earlier sample above...
    m_GIT = (IGlobalInterfaceTable)new StdGlobalInterfaceTable();
    public void FireEventOne()
    // Using the GIT to marshal the (event?) interface from the main thread back to the main thread (like the MFC Automation server).
    // Should we be marshalling the ManagerEvents interface pointer instead? How do we get at it?
    uint uCookie = m_GIT.RegisterInterfaceInGlobal(this, ref IID_IDispatch);
    ManagerClass mgr = (ManagerClass)m_GIT.GetInterfaceFromGlobal(uCookie, ref IID_IDispatch);
    mgr.EventOne(); // when Excel is in edit mode, event handler is never called and does not block, event is "lost"
    m_GIT.RevokeInterfaceFromGlobal(uCookie);
    I’d like my C# COM server to behave in a similar way to the MFC Automation server.  Is this possible?  I think I should be registering the ManagerEvents interface pointer in the GIT but I don't know how to get at it? I tried using Marshal.GetComInterfaceForObject(this,
    typeof(ManagerEvents)) but that just throws an exception: System.InvalidCastException: Specified cast is not valid.
    Thanks.

    Hi Jason-F,
    I’ve found that when I raise COM events while Excel is in edit mode (e.g. a cell is being edited) the event is “lost”.  Meaning,
    the VBA event handler is never called (even after the Excel edit mode is finished) and the call to the C# event delegate passes through and fails silently with no exceptions being thrown.
    Do you mean you didn't raise EventOne event? EventOne handler like following?
    ' EventOne handler
    Private Sub managerObj_EventOne()
    Debug.Print "EventOne " & g_nCounter
    g_nCounter = g_nCounter + 1
    End Sub
    After test your code, here is my screenshot
    And here is my execute log in C# ComServerTest.
    ManagerClass1/1/2015 5:48:11 PM
    DoThreadWork()1/1/2015 5:48:12 PM
    ManagerClass_EventOne()1/1/2015 5:48:17 PM
    ManagerClass_EventOne()1/1/2015 5:48:22 PM
    ManagerClass_EventOne()1/1/2015 5:48:27 PM
    ManagerClass_EventOne()1/1/2015 5:48:32 PM
    ManagerClass_EventOne()1/1/2015 5:48:37 PM
    ManagerClass_EventOne()1/1/2015 5:48:42 PM
    ManagerClass1/1/2015 5:49:56 PM
    DoThreadWork()1/1/2015 5:49:56 PM
    ManagerClass_EventOne()1/1/2015 5:50:01 PM
    ManagerClass1/1/2015 5:50:04 PM
    If i misunderstand you, please feel free to let me know.
    Best regards,
    kristin
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Pls. help me   -   passed parameter

    I have a procedure "PROC_XXX" that it has one cursor inside. "CUR_XXX"
    I would like to pass parameter that have statement from my trigger etc. "When-button-pressed" to my cursor "CUR_XXX" in procedure "PROC_XXX".
    < v_stmt := 'and v_empno = ...........' >.
    How can i pass ' v_stmt ' to "PROC_XXX " in my DB.
    Thank you very much
    v_stmt is depend on events
    < v_stmt := 'and v_empno between ...........' >.
    < v_stmt := 'or v_empno =< ...........' >.

    Do you already made the procedure? Looks like you could use dynamic sql in the procedure. check out the oracle pl/sql documentation.

  • MSS Passing Parameter

    Hi all,
    I'm using MSS ERP2005,EP7.0, I have attached ABAP Web Dynpro Applications to Related Activities iView. But once i click the iview it display the manager details insist of employee details.I don't know the event name which its raises when u click the employee in the Employee Search iView. Once i know the event i can pass from my ABAP Dynpro Application.
    Any help will be appreciated.
    Thanks,
    MS

    Hi Mohiuddin,
    Please check SAP Note 731592:
    https://websmp207.sap-ag.de/~form/sapnet?_FRAME=CONTAINER&_OBJECT=012006153200000182212004
    In case it's not relevant, I would try using 'View Source' on the iView and look for string "raiseEvent".
    Hope it helps,
    Yoav.

  • Not able to pass parameter from one fragment to another fragment in another taskFlow

    Hi,
    I'm trying to pass parameter from one fragment to another fragment and want to print the parameter value in second fragment.
    i have inputtext in first frag---
    first fragment belongs to one taskflow1 and this taskflow1 i had darg and drop to one mainPage.
    Under taskflow1 itself i drag and drop one taskflow call activity and on top of that i drag and drop another bounded taskflow as taskflow2
    under taskflow2 i have one fragment as fragment2and in that i have one outputtext field, now here i want to print the value from fragment1--inputtextfield value
    to achive this i had tried many ways but somewhere doing mistake please explain step by step.
    Thanks
    Mahesh

    In addition you need to tell us your jdev version!
    Can you elaborate on your use case a be more?
    On which event this should happen?
    In general contextual events should allow you to implement this, however, as I don't understand the use case, I find it hard to help.
    Timo

  • How to pass parameter to DestinationURI of a link?

    Hi All,
    I have a requirement to generate report by clicking of a link and the report should open in a separate window.
    I am facing problem with passing parameter to destinationURI of link.
    Using MessageChoice event I am getting parameter value in PFR of controller.
    I need to get this parameter in PR of same controller and pass it to destnationUri of link.
    Please let me know how to achieve this and suggest me if there is some other approach to meet the requirement.
    The code is given below.
    public class TestTPCO extends PerfMtCO {
    public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
    super.processRequest(pageContext, webBean);
    String planId = "25463";
    if (planId != null) {
    OALinkBean oalinkbean =
    (OALinkBean)webBean.findChildRecursive("SWC_Report_Link");
    oalinkbean.setTargetFrame("_blank");
    oalinkbean.setDestination("OA.jsp?OAFunc=SWC_HR_OBJ_REPORT&plan_id=" +
    planId );
    * Procedure to handle form submissions for form elements in
    * a region.
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void processFormRequest(OAPageContext pageContext,
    OAWebBean webBean) {
    super.processFormRequest(pageContext, webBean);
    if ("planNameChange".equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM))) {
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    TMContext tmcontext =
    TMContext.getInstance(am.getOADBTransaction());
    String planId = pageContext.getParameter("SWC_Plan_Name");
    Thanks & Regards,
    Sunita

    Hi Prince,
    I am not doing form submit.
    Handling poplist event in PFR and getting some value and that value I need to pass to link to generate a report.
    I am using the following code in CO,
    public class TestTPCO extends PerfMtCO {
    public void processRequest(OAPageContext pageContext, OAWebBean webBean) {
    super.processRequest(pageContext, webBean);
    String planId = "25463";
    if (planId != null) {
    OALinkBean oalinkbean =
    (OALinkBean)webBean.findChildRecursive("SWC_Report_Link");
    oalinkbean.setTargetFrame("_blank");
    oalinkbean.setDestination("OA.jsp?OAFunc=SWC_HR_OBJ_REPORT&plan_id=" +
    planId );
    * Procedure to handle form submissions for form elements in
    * a region.
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void processFormRequest(OAPageContext pageContext,
    OAWebBean webBean) {
    super.processFormRequest(pageContext, webBean);
    if ("planNameChange".equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM))) {
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    TMContext tmcontext =
    TMContext.getInstance(am.getOADBTransaction());
    String planId = pageContext.getParameter("SWC_Plan_Name");
    Thanks & Regards,
    Sunita

  • Set ALV cell, use of event DATA_CHANGED

    Hi experts,
    I want to set some ALV input fields using abap.
    That's easy, I can modify the table as I need and call the refresh of the ALV table ( refresh_table_display).
    But how can I "fill" the fields that the event DATA_CHANGED is called?
    When I fill manually in ALV, this event is raised...I need the event also when filling with ABAP...
    Thanks in advance
    Michael

    Hello Michael,
    This link shows you the right way to do:
    Get Changed Value In ALV Grid Dynamically - ABAP Development - SCN Wiki
    Inside HANDLE_DATA_CHANGED method, you can change the value of a cell in this way:
    CALL METHOD PR_DATA_CHANGED->MODIFY_CELL
        EXPORTING
          I_ROW_ID    = IT_TABLE-ROW_ID
          I_FIELDNAME = 'FIELD'
          I_VALUE     = IT_FLIGHT-FIELD.
    I hope you help.

  • ALV-Event data_changed after searchhelp with userdefined searchhelpexit

    Hi there ...
    I'm using an OO alv grid with an elementary searchhelp at defined fields.
    the search help uses an searchhelpexit, that simply filters data, to show the right stuff
    everything works fine!
    dependent on the returned value of the searchhelp, I need to trigger a recalculation of values.
    the alv-event "data_changed" looks interesting for that issue ... especially the flag "e_onf4_after" ...
    BUT: I don't know, when the flag is set :$
    the event is raised (with marked flags "e_onf4" and "e_onf4_before") before the Searchhelplist is displayed .... but I need to react AFTER the searchhelp is closed and the selected value is returned ...
    all I want to do is:
    trigger the recalculation after the user selected a value at the searchhelp
    can anybody help me in that case?!
    thanks a lot  & enjoy your weekend
    Markus

    Hi,
    You can call elementary search help like any popup screen
    with function F4IF_FIELD_VALUE_REQUEST.
    - Call f4 help manually in the event DATA_CHANGED
    - Process your recalculation
    - set values on cells..
    I hope it helps.

Maybe you are looking for

  • Fact table design advice

    Good Morning All,  I'm working on developing a cube that measure's budget and actual cost for a customer that I'm working with. We have serveral dimensions that comes into play: Organization - this dimension defines the various internal departments a

  • How to unblock clearing items for payment block

    The process i did is the next: - Create a vendor invoice (miro) $1000. with block reason R - Create a credit memo (miro) $800. - Clear the credit memo vs invoice F-44 (the credit memo is a partial amount of the invoice). In FBL3N transaction i see al

  • How to construct the name of an instance in actionscript

    Sorry for being such a dim bulb newbie, but I know there has to be a way to do this, but I can't seem to get it right. I have a bunch of text items I have put in a movie clip, each having a name like myText1_txt, myText2_txt etc. I want to create a f

  • Item Number not getting copied from Delivery to Invoice

    Dear Experts I am having a problem where Item Number in Delivery is 10 and in Invoice it is 11. The item number is  not getting copied from Delivery to Invoice. I have checked the copy control option and copy item number is checked. Please advise

  • API need for miscellaneous transaction for an inventory

    Which API is normally used for a miscellaneous transaction for an inventory? Regards , Tdhoke,