SELECTIVE DISPLAY OF CUSTOM BUTTONS

I have 3 tables that I have created forms for. The first is a
master account file with PK and the other two deal with sub-
project or course information using FK. I have created the
buttons to call the second forms, when needed and only if the a
indicator field in the account record says there should be
associated sub-projects or courses.
I have found the code used to hide the standard buttons based on
the '_FORM_STATE', but how and/or where do I place similar code
to handle my custom buttons?

Albert:
Have you tried:
"_idx" := get_index('MY_CUSTOM_BUTTON');
p_form.items("_idx").visible := 'N';
- Mark

Similar Messages

  • Conditional display of "Custom" Buttons in Portal Forms

    Could someone tell me if the following is possible, and briefly explain the steps to a beginner in Portal (but reasonably familiar with PL/SQL):
    Problem - How to display "Custom Buttons" conditionally
    Example -
    a) Assume you have a certain record ("patient_address"). The hospital requires that every patient address be authorized before submitting records to health insurance. However, authorized records should not be authorized again.
    b) Also assume that the "patient_address" table has a column "authorized" (which can contain Y or N)
    * The requirement is to show an "Authorize" button whenever the record being viewed has the "authorized" column as "N" only
    * If possible, this can be further improved by obtaining whether the person viewing the information has permission to authorize, but this can be taken as a next step
    Approaches -
    1. If possible, achieve this in Portal Forms
    2. (worst case) - show the button, but show a message if it is pressed and the action does not apply
    Somehow, it seems as though Portal Forms is not suitable (or does not have the documentation readily accessible) of how to do specific, custom, real world forms design as in this example - could someone please elaborate
    Also, would this be better done by using one of the following in combination with Portal:
    - HTT (will this be supported, given that it is an Oracle internal technology)
    - PHP (is this even compatible with Portal?)
    null

    Hi,
    Conditional display/hide of custom buttons is not yet supported in Portal.
    However, if you are willing to modify the generated form package this could be done.
    Each form has a procedure called row_function which conditionally hides Insert/Update buttons depending on the mode. By default all elements of a form are visible, then row_function modifies the "visibility" property to hide that element.
    for example, this is a fragment of row_function code which hides the Insert button in update mode:
    "_form_state" := p_session.get_value_as_varchar2(
    p_block_name => "_block",
    p_attribute_name => '_FORM_STATE');
    if "_form_state" = 'UPDATE_AND_DELETE' then
    "_idx" := get_index('INSERT_TOP');
    p_form.items("_idx").visible := 'N';
    end if;
    You can add any additional code to check form's session storage/custom package variable/function whatever is more suitable in your case.
    Then you just set visible to 'N'.
    "_idx" := get_index('MY_CUSTOM_BUTTON');
    p_form.items("_idx").visible := 'N';
    Of course the biggest drawback of this is every time you edit your form you will loose your change and must edit the package manually. To minimize the effect you can create a custom package/procedure with type signature matching that of row_function and place your code there, so you will need to add only one line of code to the row_function.
    Hope this will help to resolve the problem, I don't know the status/plans for HTT/PHP support in Portal.
    Thanks,
    Dmitry

  • Custom button in IE

    We have a custom button created in plugin and it works fine in reader and acrobat. Now we want to make it available when the pdf opened in IE. The problem is when the pdf opened in IE the Extended tab is not displayed(the custom button is under this tab). Please if someone here can help me on this issue. Thanks a lot in advance.

    Thanks for the reply. So, the custom button created in adobe plugin can't be used in browser? Is there any other way around?

  • Custom button in alv and disabling all buttons in application tool bar

    Experts,
    Could you please  help me for the below requirements.
    1). How to disable all the buttons (like sorting, print, find, set filter...etc.) in tool bar using oops?
    2). Where can I add my custom download button in alv report using oops?
    Thanks in advance...
    Sridhar..

    Step1:
    Create on local class
    Class <LCL_EVENT_RECEIVER> Definition
    Define the below public methods.
    Method Name     HANDLE_TOOLBAR
    Event Name     TOOLBAR
    Event Class     CL_GUI_ALV_GRID
    Importing     E_OBJECT, E_INTERACTIVE
    Method Name     HANDLE_USER_COMMAND
    Event Name     USER_COMMAND
    Event Class     CL_GUI_ALV_GRID
    Importing     E_UCOMM
    Class <LCL_EVENT_RECEIVER> Implementation 
    .     Method HANDLE_TOOLBAR
         Declare the structure <LS_TOOLBAR> of structure type STB_BUTTON
         Append the button information as given below into table E_OBJECT->MT_TOOLBAR to         display the custom button on ALV grid.
                               LS_TOOLBAR-FUNCTION = u2018DOWNu2019
                         LS_TOOLBAR-QUICKINFO = u2018downloadu2019
                         LS_TOOLBAR-TEXT = u2018downloadu2019
         Method HANDLE_USER_COMMAND
    In this method if E_UCOMM = u2018DOWNu2019 write your logic.
    Step2:
    1.     To excluding the ALV grid buttons, fill the <LT_EXC> with function code CL_GUI_ALV_GRID=>MC_FC_EXCL_ALL
    2.     To generate the ALV Grid, call the method SET_TABLE_FOR_FIRST_DISPLAY
    Class     CL_GUI_ALV_GRID
    Method Name     SET_TABLE_FOR_FIRST_DISPLAY
    Exporting     
    I_STRUCTURE_NAME      ZDS_CM_EXT_SEL
    LS_LAYOUT                    <LS_LAYOUT>
    IT_TOOLBAR_EXCLUDING     <LT_EXC>
    Changing     
    IT_OUTTAB                    <GT_EXT_SEL>
    Create the Instance for class <LCL_EVENT_RECEIVER>
    Class     <LCL_EVENT_RECEIVER>
    Instance Name     <LO_EVENT_FNAME>
    Now set handler  <HANDLE_USER_COMMAND> and <HANDLE_TOOLBAR_FNAME> events using instance <LO_EVENT_FNAME>
    Call method 'SET_TOOLBAR_INTERACTIVE' to raise event TOOLBAR
    Class     CL_GUI_ALV_GRID
    Instance Name     <GO_GRID>
    Method Name     SET_TOOLBAR_INTERACTIVE

  • How to Calculate sum for the selected rows in ALV gird using custom button

    Hi I am trying to implement an ALV Grid display where the user can select few rows in the output and if he click on some custom button he should get the sum for only those rows.
    Can anyone give me some idea regarding this.
    Thanks in advance

    While building the fieldcatalog for amount field use gt_fieldcat-do_sum = 'X'. And use the below for doc type sorting and subtotal.
    *  ALV data declarations
      data: it_sortcat   type slis_sortinfo_alv occurs 1,
            wa_sort like line of it_sortcat.
    perform build_sortcat.
    *&      Form  build_sortcat
    *       Build Sort catalog
    FORM build_sortcat .
      wa_sort-spos      = 1.
      wa_sort-fieldname = 'EBELN'.
      wa_sort-SUBTOT    = 'X'. "subtotals any totals column by this field
    *  gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
      wa_sort-spos      = 2.
      wa_sort-fieldname = 'EBELP'.
    *  gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
    ENDFORM.                    " build_sortcat
    call function 'REUSE_ALV_LIST_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                it_sort                 = it_sortcat
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
    Regards,
    Chandru

  • Custom button at selection screen toolbar

    Hi All,
    I have a requirement to add button at selection screen toolbar. Once this button was hit another program should be called.
    Do you have any idea on how to do this. Appreciate your help.
    Thanks in advance.

    Hi,
    To add custom Button to your selection screen see the below example-
    TABLES: SSCRFIELDS.
    TYPE-POOLS ICON.
    PARAMETERS: p_bukrs TYPE bukrs.
    INITIALIZATION:
      V_FUNCTXT-ICON_ID = ICON_XXX.                          " Add Icon to button if you want.
      V_FUNCTXT-QUICKINFO = 'xxxx'.                            " Text to be displayed when you hover mouse over the button
      V_FUNCTXT-ICON_TEXT = 'yyyy'.                           " Text to be dsipalyed on button.
      SSCRFIELDS-FUNCTXT_01 = V_FUNCTXT.
    AT SELECTION-SCREEN.
      CASE SSCRFIELDS-UCOMM.
        WHEN 'FC01'.                                                           " Handle the click on button. By default this function code will be
    to your
          "Your logic
      ENDCASE.

  • How do you make a custom button that is Invisible When not selected

    Im just recently switching over to using a mac for authoring. I really like all the features in DVD Studio more than what i was using on a PC for the past 6 years. Which was ulead DVD Workshop 2.
    The only problem im having (For Now) is that i cant make my custom buttons invisible. I made this little black shape thing in photoshop and i want to use it in DVDSP for selecting different tracks.
    I thought all i had to do was just save the black shape with a transparent background in photoshop as a .psd and import it. But that didnt work.
    When i change episodes it just stays black the whole time. I want something that will be invisible when it is not selected.
    please help
    I can send someone my little shape if they can make it a usable button that i can make invisible in dvdsp. I really need to see the layers done with a shape as a button to see how they were able to make it invisible.
    i tried a few tutorials but instead of being invisible all i got was a shape that was stuck white the whole time. this is even when i put the opacity to 0 on normal.
    I want to make this into a button
    http://img694.imageshack.us/i/custonbutton.png/

    Ok, what you want to do is also in the same tutorial. See the section on "Advanced Highlights" (again, avoid the sections on layered menus), You can create an overlay that does have two colors. The bad news is that there will be absolutely no anti-aliasing at all. This means your graphic will be extremely pixelated. This is just the way the DVD specs are set up, so there is no way around it.
    Given that I would highly recommend redesigning your overlay. Take a look at variety of DVDs from Hollywood. See what they are doing in their menus. You can do anything they are doing, but you will notice that the overlay is very simple because of the limited anti-aliasing of DVDs. In all the years that I've been watching DVDs I've only see one DVD use two colors in the overlay, and that was the Jim Carey "The Grinch who Stole Christmas."

  • Customized Button code not working on selection screen.

    Hello Experts,
    I have a button on the selection screen next to Execute button on the Application Tool Bar.
    I have written some validations on the button.It was defined on the PF-Status and its funtion text i have given as 'Show'.
    But the problem is that the code is not working.When I execute the button,the screen just remains their.
    The sy-comm always returns the value of 'UCOM' for whatever even takes place on the screen.The execution of the program does not stops their in debugger.
    Can anyone help me with some sample code and also provide the value of sy-ucomm which i should use for the customized button.
    Good points will be rewarded.

    Here is the short program which will show how to do it. You are simply checking for the USER-COMMAND value CHK and changing it to ONLI which is the F8 button, then the START-OF-SELECTION will be fired and you can output the list.
    REPORT zyou_0001.
    TABLES:  sscrfields.
    SELECTION-SCREEN PUSHBUTTON 2(10)  pbut1 USER-COMMAND chk.
    AT SELECTION-SCREEN OUTPUT.
      pbut1 = 'Test This'.
    AT SELECTION-SCREEN.
      IF sscrfields-ucomm = 'CHK'.
        sscrfields-ucomm = 'ONLI'.
      ENDIF.
    START-OF-SELECTION.
      DO 10 TIMES.
        WRITE:/ sy-index.
      ENDDO.
    Regards,.
    Mohammed

  • How to control custom button display or hide in toolbar

    I had been added four buttons in Acrobat Tool bar.
    Now I find a function AVToolButtonSetComputeEnabledProc in SDK that this function only control the button enable or disenable.
    Now I want to control the custom button display or hide, how can I to do?
    Does this SDK have a API to achieve my  need?

    As of Acrobat X, we no longer support dynamic hiding/showing – only enable/disable.

  • Custom buttons in ALV grid display

    I want to add custom buttons on application toolbar while displaying an ALV report using grid display.
    how can it be done?

    Hi
    In order to add user command functioality to the ALV grid you need to perform the following steps:
                        1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include 'USER_COMMAND' FORM
                    2. Create 'USER_COMMAND' FORM
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                I_callback_user_command = 'USER_COMMAND'   "see FORM
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    In order modify PF_STATUS of ALV grid report you need to perform the following steps:
         1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include:
                        i_callback_pf_status_set = 'SET_PF_STATUS' statement.
         2. Create 'SET_PF_STATUS' FORM
         3. Create pf_status (i.e. 'ZNEWSTATUS').
              - It is recommend that you copy standard status'STANDARD' from function group SALV
                and modify it accordingly. ALV standard function codes always start with '&'.
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                i_callback_pf_status_set = 'SET_PF_STATUS'   "see FORM
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
          FORM SET_PF_STATUS                                         *
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZNEWSTATUS'.
                      "Copy of 'STANDARD' pf_status from fgroup SALV
    ENDFORM.

  • How to create a custom Button in a SNP planning book

    Hi Experts,
    I created my own Planning Book and Dataview in SNP with 3 Key Figures: KF1, KF2, KF3. Now I want to create one my own button with Macro so that when I press that button, the Macro will run to calculate: KF3 = KF1 + KF2.
    I know that I can drag this Macro to one of default events like: Default, Level Change, Start. But actually, I want to create my own button so that I can handle the event as I want.
    My question are:
    1. How to create a custom button on the toolbar of SNP Planning book and writing macro for the button?
    2. Please give me any document, material teaching about writing macro and relating to my above scenario.
    Thanks very much!
    Duyennx
    Edited by: xuanduyen on Sep 6, 2011 9:20 AM

    Hi,
    Access the transaction "/n/sapapo/advm". In the list select your planning book/ data view and click 'Start Macro Builder' button.
    In the Macro builder screen, drag and drop your macro from Macro depot to the work area.
    Right click on your macro name and select 'properties'. In the pop up, next to the Assigned Push button field, there is a button 'Choose'. Click that. It will display all the available icons. In standard system, it displays more than 1000 icon. Choose any one icon which is suitable for your macro function. Close the pop up and save the macro. This will assign a push button to your macro.
    In the Planning book tool bar, you can see the selected icon in the header tool bar. Just by clicking that icon, you can execute the macro interactively.
    And I don't know whether we can include/design our own icon. But there are already 1000+ standard icons to choose.
    Regards,
    Manimaran M.

  • How to handle value change events of select list in custom component?

    My HelloUIComp code...How to handle events for "Select"...if i choose option1 from select then one text box is to be displayed in custom component and if i choose another option then some other text box is to be displayed in custom components...
    public class HelloUIComp extends UIComponentBase {
        public static final String account="custom.account";
        public static final String RENDERER_TYPE = null;
        HtmlCommandButton button = createButton();
        //HtmlSelectOneMenu select=createSelect();
        public void processDecodes(FacesContext context) {
             Calling the lifecycle method "processDecodes" on the
             internal button is absolutely critical to create action events
             button.processDecodes(context);
             super.processDecodes(context);
        private HtmlCommandButton createButton() {
             FacesContext context = FacesContext.getCurrentInstance();
             HtmlCommandButton newButton = new HtmlCommandButton();
             newButton.setId("Add");
             newButton.setValue("Add");
             newButton.setType("submit");
             //newButton.setOnclick("return func_1(this,event);");
             MethodBinding binding = context.getApplication().createMethodBinding("#{pc_MyProjectView.go}", null);
             newButton.setAction(binding);
                  newButton.setParent(this);
             return newButton;
      /*  private HtmlSelectOneMenu createSelect()
             HtmlSelectOneMenu selectCategory=createSelect();
             return selectCategory;
         public void encodeBegin(FacesContext context) throws IOException {
              String style = (String)getAttributes().get("style");
              String startdate = (String)getAttributes().get("startdate");
              String enddate = (String)getAttributes().get("enddate");
              //String add=(String)getAttributes().get("add");
              ResponseWriter writer = context.getResponseWriter();
             writer.startElement("table", this);
            writer.writeAttribute("border","2","2");
            writer.startElement("tbody", this);
            writer.startElement("tr", this);
            writer.startElement("td", this);
            writer.writeText("Account Category", null);
            writer.endElement("td");
              writer.startElement("td", this);
              writer.writeText("Reg-No", null);
              writer.endElement("td");
              writer.startElement("td", this);
            writer.writeText("Account-No", null);
              writer.endElement("td");
              writer.startElement("td", this);
            writer.writeText("", null);
              writer.endElement("td");
              writer.startElement("td", this);
            writer.writeText("Start-Date", null);
              writer.endElement("td");
              writer.startElement("td", this);
            writer.writeText("End-Date", null);
              writer.endElement("td");
              writer.endElement("tr");
              writer.startElement("tr",this);          
              writer.startElement("td", this);
              writer.startElement("select", this);
            if (style!=null)
                   writer.writeAttribute("style", style, null);
            writer.writeAttribute("name","category","category");
            writer.startElement("option", this);
              writer.writeText("Select", null);
              writer.endElement("option");
              //to access data
              Account accountObj;
              AccountData accountDataobj;
              List listOfAccounts;
              int noOfAccounts;
              accountDataobj=new AccountData();
              listOfAccounts=accountDataobj.getAccounts();
              noOfAccounts=listOfAccounts.size();
              for(int i=0;i<noOfAccounts;i++)
              writer.startElement("option", this);     
              accountObj=(Account) listOfAccounts.get(i);
              writer.writeText(accountObj.getCategory(), null);
              writer.endElement("option");
              //System.out.println(accountObj.getRegNo());
              //System.out.println(accountObj.getAccountNo());
              writer.endElement("select");
              writer.endElement("td");
            writer.startElement("td", this);
              writer.startElement("select", this);
              if (style!=null)
                   writer.writeAttribute("style", style, null);
              writer.writeAttribute("name","regno","regno");
              writer.startElement("option", this);
              writer.writeText("Select", null);
              writer.endElement("option");
              for(int i=0;i<noOfAccounts;i++)
              accountObj=(Account) listOfAccounts.get(i);     
              writer.startElement("option", this);
              writer.writeText(""+accountObj.getRegNo(), null);
              writer.endElement("option");
              writer.endElement("select");
              writer.endElement("td");
              writer.startElement("td", this);
              writer.startElement("select", this);
              if (style!=null)
                   writer.writeAttribute("style", style, null);
              writer.writeAttribute("name","accno","accno");
              writer.startElement("option", this);
              writer.writeText("Select", null);
              writer.endElement("option");
              for(int i=0;i<noOfAccounts;i++)
              accountObj=(Account) listOfAccounts.get(i);
              writer.startElement("option", this);
              writer.writeText(accountObj.getAccountNo(), null);
              writer.endElement("option");
              //writer.startElement("option", this);
              //writer.writeText("00200155", null);
              //writer.endElement("option");
              writer.endElement("select");
              writer.endElement("td");
              writer.startElement("td", this);
              button.encodeBegin(context);
             button.encodeChildren(context);
             button.encodeEnd(context);
            writer.endElement("td");
              writer.startElement("td", this);
              writer.startElement("input", this);
              if (style!=null)
                   writer.writeAttribute("style", style, null);
              writer.writeAttribute("type","text","text");
              writer.writeAttribute("name","startdate","startdate");
              writer.writeAttribute("value",startdate,startdate);
              writer.writeAttribute("readonly", "","");
              //writer.endElement("input");
              writer.endElement("td");
              writer.startElement("td", this);
              writer.startElement("input", this);
              if (style!=null)
                   writer.writeAttribute("style", style, null);
              writer.writeAttribute("type","text","text");
              writer.writeAttribute("name","enddate","enddate");
              writer.writeAttribute("value",enddate,enddate);
              writer.writeAttribute("readonly", "","");
              writer.endElement("td");
              writer.endElement("tr");
              writer.endElement("tbody");
              writer.endElement("table");
         public String getFamily() {
              return "HelloFamily";
         }

    NewEclipseCoder wrote:
    How to handle events for "Select"...if i choose option1 from select then one text box is to be displayed in custom component and if i choose another option then some other text box is to be displayed in custom components...Two ways:
    1) submit the form to the server and render the desired textbox depending on the option.
    or
    2) render all textboxes and use Javascript/DOM to display/hide them depending on the option.

  • Using WE to display a custom box

    I have a report that I want the user to be able to sort or filter by clicking on a col header. When the user clicks on a col header, I want a small box to appear just below the col header with radio buttons to choose Asc or Desc and a drop-down list to choose a value to filter the col on.  I worked out the javascript for this in a text editor and it works (and I thought it was pretty cool). I've converted the javascript to Crystal Reports syntax and created some Webelements functions:
    This first one sets up the styles and js functions -
    // WEsortfilter
    // Add options to sort A/D and to filter on columne clicked
    // Pass in string of values from main rpt and sort ASC
    // When col header is clicked - display form with radio buttons and drop
    //      down list of values.
    //When sort is selected or member of list execute sort/filter.
    Function ()         
    '<STYLE type="text/css">'
    + '.Test{border-style:solid;border-width:1px;border-color:navy;'
    + 'position:absolute; z-index:66; background-color:lightblue;width:6cm;'
    + 'height:.83cm;padding-left:10px;padding-top:5px;font-family:Verdana;font-size:9pt;}'
    + '.sortlink{font-size:10;font-family:Verdana;color:blue;}'
    + '</STYLE>'
    //End of styles
    //Javascript  to call sort/filter box
    + '<SCRIPT LANGUAGE="JavaScript">'
    + 'function displaySortFilter(myid){'
    + 'var topObj=document.getElementById(myid).offsetTop;'
    + 'var leftObj=document.getElementById(myid).offsetLeft;'
    + 'var cdObj=document.getElementById("Test").style;'
    + 'cdObj.display="";'
    + 'cdObj.left=leftObj;'
    + 'cdObj.top=topObj+26;'
    + '}</SCRIPT>'   //End of function
    + '<form name="sortfilter">'
    + '<div ID="Test" NAME="Test" class="Test"'
    + 'STYLE="display:none">'
    + '<div id="divradio" STYLE="position:absolute">
    + '<input type=radio name=radio ID=radio value="asc">'
    + '<Span>ASC</Span>'
    + '<input type=radio name=radio ID=radio value="desc">'
    + '<Span>DESC</Span>'
    + '<SELECT NAME="filteroptions" ID="filteroptions" >'
    + '<OPTION VALUE="0" selected>Choose One<BR>'
    + '<OPTION Value="00">First<BR>'
    + '</SELECT>'+ '</div></div></form>'
    The second function creates a link for the user to click:
    //WEcallSortFilter
    Function ()
    '<A Style="text-decoration:underline" ID="sbu" class="sortlink" href="" onClick="'
    + 'displaySortFilter(this.id);return false">SBU</A>'
    The third one adds the style and js functionality to the report:
    //Display sortfilter custom function
    WhilePrintingRecords;
    WEsortfilter
    The last one adds the link to the report for the user
    //Call sortfilter custom function
    WhilePrintingRecords;
    WEcallSortFilter
    When I run this in the report through Infoview, the box pops up, however,
    1)     it doesn't show up right under the link clicked, but in the location where it was placed in Crystal Reports design view. It shows up like a static object instead of at the location clicked.
    2)     When the box displays, it is transparent. The other text on the rpt shows right through the box. I've tried changing the z-index to no avail. And no, making the box a solid color doesn't make it opaque. The other text showing through makes it difficult to click on any of the radio buttons.
    All this is beyond the WE examples, but I''ve to kick it up  a level (or three) to get this project done.
    Thanks

    hey, ran some tests on your scenario. to answer your questions...
    1) all of the functions are designed so that you don't have to make copies of them...all controls should be aok with being on a report more than once, as long as the element names are different...the ones that create on-click functionality (such as the collapsible section) require a different name for each control or you'll run into problems...the last iteration of the control on the report will be the only one that (sort of) works.
    that being said, i created 2 formulae and ran your code without any issues with a duplicate of the function.
    the only things that should cause something like this is
    (a) a control name starting with a number or containing certain non alpha-numeric characters...they follow the same rules as javascript...unfortunately this little tip was not in the user guide even though it was on the list (my fault, sorry) or
    (b) two control names that are the same or
    (c) a duplicate of the same formula on the report.
    2) another little tip that seemed to not make it into the user guide is to follow the same ordering principles on a report that you would with normal layering when designing a crystal report...i.e. right-click on objects in the designer and choose Format, then use the Move object action to bring the objects to the front.
    note that if there is a select menu below these controls you will not be able to have the collapsible section (or any other control) cover that select menu up...this is a known issue in internet explorer and there is no workaround for that one.
    hope that this helps,
    jw

  • Add customer button on header level for BUS2201(PO) - SRM 7.0

    Hi,
    I want to define a customer button (with action) within PO on header level.
    Web Dynpro           FPM_OIF_COMPONENT
    Configuration          /SAPSRM/WDCC_FPM_OIF_PO_PURCH
    Task:
    Add a customer button besides standard Export button.
    I assume-afterwards I have to enhance the method onactionbutton_pressed to create my event when customer button is pressed, right?
    Could anyone please guide me how to solve this issue?
    Thanks and best reagrds
    Andreas

    Hi,
    Here are the steps to add the button, I wrote it in other thread. In my case for PO is not displayed, try to follow the steps and if you are able to show the button tell me how please.
    Add custom button in PO
    And yes ,you need to create an enhancement point in the view CNR_VIEW of the component FPM_OIF_COMPONENT, you need to create a post-exit in the method BUTTON_PRESSED, here you have a sample code:
    DATA: lv_id TYPE string,
            lv_event_id TYPE fpm_event_id.
      DATA: lo_nd_oif_application TYPE REF TO if_wd_context_node,
            lo_nd_variant TYPE REF TO if_wd_context_node,
            lo_nd_toolbar TYPE REF TO if_wd_context_node,
            lo_nd_button TYPE REF TO if_wd_context_node,
            lo_el_button TYPE REF TO if_wd_context_element,
            lo_nd_other_functions TYPE REF TO if_wd_context_node.
      DATA: lv_substring TYPE string,
            lv_substring_i TYPE i,
            lv_node_name TYPE string,
            lv_position TYPE string,
            lv_length TYPE i,
            lv_seq TYPE i.
      DATA:lt_keys TYPE STANDARD TABLE OF string,
           lv_key LIKE LINE OF lt_keys.
      TYPES:BEGIN OF y_parameters,
        name TYPE string,
        value TYPE string,
      END OF y_parameters.
      DATA: lt_parameters TYPE STANDARD TABLE OF y_parameters,
            ls_parameter LIKE LINE OF lt_parameters.
      DATA: lv_boid      TYPE bbp_guid,
            lv_botype    TYPE string,
            lv_objkey TYPE  swo_typeid,
            lv_objtype  TYPE  swo_objtyp,
            lv_object_id TYPE crmt_object_id_db,
            lv_process_type TYPE crmt_process_type_db,
            lv_object_type TYPE crmt_subobject_category_db,
            lv_rfc TYPE zgrs_co_logsys-rfc,
      DATA: lo_fpm TYPE REF TO if_fpm.
      lo_fpm = cl_fpm_factory=>get_instance( ).
      lo_fpm->raise_event_by_id( lv_event_id ).
      lt_keys = lo_fpm->mo_app_parameter->get_keys( ).
      LOOP AT lt_keys INTO lv_key.
        ls_parameter-name = lv_key.
        lo_fpm->mo_app_parameter->get_value(
          EXPORTING  iv_key = lv_key
          IMPORTING  ev_value = ls_parameter-value  ).
        INSERT ls_parameter INTO TABLE lt_parameters.
      ENDLOOP.
      lv_id = wdevent->get_string( 'ID' ).
      lo_nd_oif_application = wd_context->get_child_node( name = wd_this->wdctx_oif_application ).
      lo_nd_variant = lo_nd_oif_application->get_child_node( name = wd_this->wdctx_variant ).
      lo_nd_toolbar = lo_nd_variant->get_child_node( name = wd_this->wdctx_toolbar ).
      lo_nd_other_functions = lo_nd_toolbar->get_child_node( name = wd_this->wdctx_other_functions ).
      lv_substring = lv_id.
      lv_length = STRLEN( lv_id ).
      lv_seq = lv_length - 3.
      IF lv_id+lv_seq = '_CP'.
        lv_substring = lv_substring(lv_seq).
        lv_id = lv_substring.
      ENDIF.
      WHILE lv_substring CS '_'.
        lv_position = sy-fdpos + 1.
        lv_substring = lv_substring+lv_position.
      ENDWHILE.
      IF lv_substring CO '1234567890'.
        lv_substring_i = lv_substring.
      ENDIF.
    * Item level action;
      IF lv_id CS '_item'.
    * Or header level action;
      ELSE.
        IF lv_id CA '0123456789'.
          lv_position = sy-fdpos - 1.
          lv_node_name = lv_id(lv_position).
          IF lv_id CS 'OTHER_FUNCTIONS'.
            lo_nd_button = lo_nd_other_functions->get_child_node( name = wd_this->wdctx_button ).
            lo_nd_button->set_lead_selection_index( index = lv_substring_i ).
            lo_el_button = lo_nd_button->get_element(  ).
            TRY.
                lo_el_button->get_attribute(
                EXPORTING
                  name =  `EVENT_ID`
                IMPORTING
                  value = lv_event_id ).
              CATCH cx_wd_context.
            ENDTRY.
            READ TABLE lt_parameters INTO ls_parameter WITH KEY name = 'SAPSRM_BOTYPE'.
            lv_botype = ls_parameter-value.
            READ TABLE lt_parameters INTO ls_parameter WITH KEY name = 'SAPSRM_BOID'.
            lv_boid = ls_parameter-value.
    *         Obtain the object_id;
            SELECT SINGLE object_id INTO lv_object_id
             FROM crmd_orderadm_h
             WHERE guid EQ lv_boid.
    *         If not Z button, exits;
            IF lv_event_id(1) NE 'Z'. EXIT. ENDIF.
    *      Actions;
            CASE lv_event_id.
              WHEN 'ZBUTTON'.
              WHEN 'ZBUTTON2'.
            ENDCASE.
          ENDIF.
        ENDIF.
      ENDIF.

  • Opening a popup from custom button in a Form

    I have a requirement to open a popup from a custom button of a portal form and once the value is selected from the popup the control should return to the main form with the value selected and set it to some display only field in that same form. It can be done thru' popup of a field directly but how can I do this thru'a button ?.
    Help would be appreciated.
    Thanks
    -Krishnamurthy

    Works for me if I middle-click a bookmark on the Bookmarks Toolbar and browser.tabs.loadBookmarksInBackground is set to true.
    Start Firefox in <u>[[Safe Mode|Safe Mode]]</u> to check if one of the extensions or if hardware acceleration is causing the problem (switch to the DEFAULT theme: Firefox/Tools > Add-ons > Appearance/Themes).
    *Don't click the Reset button on the Safe mode start window or otherwise make changes.
    *https://support.mozilla.org/kb/Safe+Mode
    *https://support.mozilla.org/kb/Troubleshooting+extensions+and+themes

Maybe you are looking for