Can I "catch" a click on a sortable column header of a report?

Hi,
I have a report.
Most columns are made sortable: users can click on them to sort.
I notice that when clicked only page-rendering executes (i.e. not page processing).
Here is the question.
I need to call some custom PL/SQL when the user clicks on a sortable column header. This PL/SQL could executes in the before header (it needs to fire before the page re-executes the query).
The PL/SQL needs to know which column was clicked on: how can I determine this?
Can I access the url (example below)? I see that it shows which column was clicked.
https://dev.centraal.boekhuis.nl:4443/pls/apex/f?p=100:3:145900176972409:fsp_sort_4::RP&fsp_region_id=1562722058676533
Thanks,
Toon

That would order the report by C1 when I click C2, which isn't what I want. I want to preserve the order of C1 (whether that's ascending or descending) and then have C2 ascend or descend for each set of values in C1.
If I can't set the Order By then I'll need something like this as my query. The "last_col1_order" and "this_col2_order" would be items, set according to the last few values of Request. It's horrible, but it gets the job done. This would be so easy in forms!
WITH data AS (
  select level col from dual connect by level < 6)
SELECT
  col1,
  col2,
  lpad(case last_col1_order
         when decode(this_col2_order,'asc','asc','desc') then col1
         else col1_desc end,20,'#') ||
    lpad(col2,20,'#') col2_sort
FROM (
  SELECT
    col1,
    col2,
    (max(col1) over(partition by 1))-(dense_rank() over(order by col1)) col1_desc,
    'asc' last_col1_order,
    'desc' this_col2_order
  FROM (
    SELECT a.col col1, b.col col2
    FROM data a, data b
order by col2_sort desc

Similar Messages

  • How can I display the range for LastFullMonth in the header of a report

    How can I display the month for LastFullMonth in the header of a report run in the past so that a report that ran sept 1 2009 selecting data for LastFullMonth (august 2009)  displays sept 2009 in the header even if there is no data selected by the report?

    Good,
    Sometimes I answer these questions and completly miss it....
    ( lack of understanding on my part )   

  • How to sort data in descending order when user clicks on the column heading

    Hi
    I have a report called "Top customers", which shows the top customers for a specific product line. It displays the customer name and one column with the total amount spent in the period for each product line. By default, the leftmost product line is sorted in descending order.
    If the user wants to know who are the top customers for another product line, they simply click on the column heading to sort the list by that column.
    The problem is that when you click for the first time on a sortable column heading, Apex sorts it in ascending order; you need to click on the same column heading again to sort in descending order.
    Is it possible to change this behaviour and sort the data in descending order in the first click? So the users don't have to click twice...
    Thanks
    Luis
    PS: Apex 3 running on Oracle 10.2.0

    Luis,
    See: Can I "catch" a click on a sortable column header of a report?
    Take a look at Anton Nielsen's answer with regards to hiding a column and displaying its value instead of the sortable column.
    Asumming the following simple report query:
    select product,sales
    from <table>
    Change that into:
    select product
    ,sales*-1 as reverse_sales -- Select this one as an extra column
    ,sales -- Hide this column
    from <table>
    In your report column attributes (of column reverse_sales), html-expression, type #sales#. It then displays the normal sales. However apex will generate a 'order by 2 asc' for the first time. The '2' will refer to the sales*-1 value: sorting it asc, is the same as sorting sales descending...
    Toon

  • Can we catch keyboard event triggered by an inputfiled?

    Hi all,
    I have a question here:
    When we are doing the web dynpro abap development, if I want to catch the keyboard triggered by an
    input help and handle it, how can I achieve this?
    e.g.   I have an inputfield on the UI,  if user click "F10" on the keyboard, can I catch this kind of event?
    Thanks and Regards,
    Aaron

    Hi Thomas,
    Yes, I'm trying to acomplish an input help for an inputfield.But, the free programmed value or OVS or dictionary search help can fullfill my needs.Here is the situation:
    I have a inputfield on the UI, and next to that , I have another textview, which should be changed according inputfield. e.g.  the inputfield is a user name, and next to that , is the user id. but we only want the input help for user name. so when user select one row iof the search result table, I want that two fields both filled.
    1. the OVS can't meet my need because I can't change the layout of the search result table, I need a table with a tree in it.
    2. free programmed value help can only send back the value of the inputfield. although maybe I can get the user_id's context attribute name and by hardcoding and send back also the user id. but I don't like hardcoding.
    So, I'm wondering whether I could catch the keyboard event. and handle the F4 help all by myself.
    Do you have some suggestion on this?
    Thanks and Regards,
    Aaron

  • Why can not catch the standard BACK event in ALV's USER_COMMAND event,

    Hi expert, why i can not catch the standard BACK event in ALV's USER_COMMAND event,
    Code:
    DATA G_CON_UC_FORM   TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND',
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM      = SY-REPID
          I_CALLBACK_TOP_OF_PAGE  = G_CON_FORM
          I_CALLBACK_USER_COMMAND = G_CON_UC_FORM
          IT_FIELDCAT             = G_TAB_FIELDCAT
          IT_SORT                 = G_TAB_SORT_INF
          I_SAVE                  = G_CON_U
    *<<<Liang
        IT_EVENTS               = G_TAB_ALV_EVENTS
    *<<<Liang
        TABLES
          T_OUTTAB                = G_TAB_OUTPUT_DATA
        EXCEPTIONS
          PROGRAM_ERROR           = 1
          OTHERS                  = 2.
    *&      Form  F_USER_COMMAND
          ALV USER COMMAND processing
    FORM F_USER_COMMAND .
      IF SY-UCOMM = '&FO3'.
        LEAVE TO SCREEN 0.
      ENDIF.
    ENDFORM.                    " F_USER_COMMAND
    When I set breakpoint on this subrouting ,and try to click stardard  BACK or CANCEL button, the callback form do not run, but if double click one of line of alv report, the callback form works well,
    so why??

    hi
    good
    check this report and change your code accordingly.
    THESE LINES ARE FOR THE MAIN PROGRAM ***
    SAP V40B ***
    REPORT Z_PICK_LIST .
    TABLES: RESB.
    SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.
    SELECT-OPTIONS: S_WERKS FOR RESB-WERKS," Plant
                    S_AUFNR FOR RESB-AUFNR," Order number
                    S_BDTER FOR RESB-BDTER." Req. date
    SELECTION-SCREEN END OF BLOCK BL1.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT DEFAULT '/STANDARD'.
    DATA: BEGIN OF OUT OCCURS 10,
            AUFNR LIKE RESB-AUFNR,         " Order number
            MATNR LIKE RESB-MATNR,         " Material
            BDMNG LIKE RESB-BDMNG,         " Requirements in UM
            MEINS LIKE RESB-MEINS,         " Unit of Measure (UM)
            ERFMG LIKE RESB-ERFMG,         " Requirements in UE
            ERFME LIKE RESB-ERFME,         " Unit of Entry (UE)
            MAKTX LIKE MAKT-MAKTX,         " Mat. description
          END OF OUT.
    INCLUDE Z_ALV_VARIABLES.
    INITIALIZATION.
      REPNAME = SY-REPID.
      PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
      PERFORM BUILD_EVENTTAB USING EVENTS[].
      PERFORM BUILD_COMMENT USING HEADING[].
      PERFORM INITIALIZE_VARIANT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    AT SELECTION-SCREEN.
      PERFORM PAI_OF_SELECTION_SCREEN.
    START-OF-SELECTION.
      PERFORM GET_ORDERS.
      PERFORM GET_MATERIAL_DESCRIPTION.
    END-OF-SELECTION.
      PERFORM BUILD_LAYOUT USING LAYOUT.
      PERFORM BUILD_PRINT  USING PRINTS.
      PERFORM WRITE_USING_ALV.
          FORM INITIALIZE_FIELDCAT                               *
    -->  P_TAB                                                         *
    FORM INITIALIZE_FIELDCAT USING P_TAB TYPE SLIS_T_FIELDCAT_ALV.
      DATA: CAT TYPE SLIS_FIELDCAT_ALV.
      CLEAR CAT.
    ENDFORM.                               " INITIALIZE_FIELDCAT
    *&      Form  GET_ORDERS
          text
    FORM GET_ORDERS.
      SELECT AUFNR MATNR BDMNG MEINS ERFMG ERFME
             FROM RESB
             APPENDING TABLE OUT
             WHERE XLOEK EQ SPACE          " deletion indicator
             AND   XWAOK EQ 'X'            " goods movement indicator
             AND   WERKS IN S_WERKS        " plant
             AND   BDTER IN S_BDTER        " req. date
             AND   AUFNR IN S_AUFNR.       " pr. order
    ENDFORM.                               " GET_ORDERS
    *&      Form  GET_MATERIAL_DESCRIPTION
          text
    FORM GET_MATERIAL_DESCRIPTION.
      SORT OUT BY MATNR.
      LOOP AT OUT.
        SELECT SINGLE MAKTX
               INTO OUT-MAKTX
               FROM MAKT
               WHERE MATNR EQ OUT-MATNR
               AND   SPRAS EQ 'EN'.
        MODIFY OUT.
      ENDLOOP.
      SORT OUT BY AUFNR MATNR.
    ENDFORM.                               " GET_MATERIAL_DESCRIPTION
          FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      DATA: L_POS TYPE P.
    first line
      WRITE:/ TEXT-001.                    " Plant:
      IF S_WERKS-HIGH NE SPACE.
        WRITE: S_WERKS-LOW, TEXT-TO1, S_WERKS-HIGH.
      ELSEIF S_WERKS-LOW NE SPACE.
        LOOP AT S_WERKS.
          WRITE: S_WERKS-LOW.
        ENDLOOP.
      ELSEIF S_WERKS-LOW EQ SPACE.
        WRITE: TEXT-ALL.
      ENDIF.
      L_POS = ( SY-LINSZ DIV 2 ) - ( STRLEN( TEXT-TIT ) DIV 2 ).
      POSITION L_POS. WRITE: TEXT-TIT.
      L_POS = SY-LINSZ - 20.
      POSITION L_POS. WRITE: TEXT-011, SY-UNAME RIGHT-JUSTIFIED.  " User:
    second line
      WRITE:/ TEXT-002.                    " Order:
      IF S_AUFNR-HIGH NE SPACE.
        WRITE: S_AUFNR-LOW, TEXT-TO1, S_AUFNR-HIGH.
      ELSEIF S_AUFNR-LOW NE SPACE.
        LOOP AT S_AUFNR.
          WRITE: S_AUFNR-LOW.
        ENDLOOP.
      ELSEIF S_AUFNR-LOW EQ SPACE.
        WRITE: TEXT-ALL.
      ENDIF.
      L_POS = SY-LINSZ - 20.
      POSITION L_POS. WRITE: TEXT-012,SY-DATUM.      " Date:
    third line
      WRITE:/ TEXT-003.                    " Req. Date:
      IF S_BDTER-HIGH(1) NE '0'.
        WRITE: S_BDTER-LOW, TEXT-TO1, S_BDTER-HIGH.
      ELSEIF S_BDTER-LOW(1) NE '0'.
        LOOP AT S_BDTER.
          WRITE: S_BDTER-LOW.
        ENDLOOP.
      ELSEIF S_BDTER-LOW(1) EQ '0'.
        WRITE: TEXT-ALL.
      ENDIF.
      L_POS = SY-LINSZ - 20.
      POSITION L_POS. WRITE: TEXT-013, SY-PAGNO.   " Page:
    ENDFORM.                               " TOP_OF_PAGE
          FORM END_OF_LIST                                              *
    FORM END_OF_LIST.
      DATA: L_POS TYPE P.
      ULINE.
      WRITE:/ '|', TEXT-021.      " Delivered by:
      L_POS = SY-LINSZ DIV 2.
      POSITION L_POS. WRITE: '|', TEXT-031.            " Received by:
      L_POS = SY-LINSZ.
      POSITION L_POS. WRITE: '|'.
      WRITE:/ '|'.
      L_POS = SY-LINSZ DIV 2.
      POSITION L_POS. WRITE: '|'.
      L_POS = SY-LINSZ.
      POSITION L_POS. WRITE: '|'.
      ULINE.
      WRITE:/ '|', TEXT-012.      " Date:
      L_POS = SY-LINSZ DIV 2.
      POSITION L_POS. WRITE: '|', TEXT-012.            " Date:
      L_POS = SY-LINSZ.
      POSITION L_POS. WRITE: '|'.
      WRITE:/ '|'.
      L_POS = SY-LINSZ DIV 2.
      POSITION L_POS. WRITE: '|'.
      L_POS = SY-LINSZ.
      POSITION L_POS. WRITE: '|'.
      ULINE.
    ENDFORM.                               " END_OF_LIST
    *&      Form  WRITE_USING_ALV
          text
    FORM WRITE_USING_ALV.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                I_PROGRAM_NAME     = REPNAME
                I_INTERNAL_TABNAME = 'OUT'
                I_INCLNAME         = REPNAME
           CHANGING
                CT_FIELDCAT        = FIELDTAB.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM       = REPNAME
               i_callback_pf_status_set = 'PF_STATUS_SET'
               i_callback_user_command  = 'USER_COMMAND'
                I_STRUCTURE_NAME         = 'OUT'
                IS_LAYOUT                = LAYOUT
                IT_FIELDCAT              = FIELDTAB
                I_DEFAULT                = 'A'
                I_SAVE                   = G_SAVE
                IS_VARIANT               = G_VARIANT
                IT_EVENTS                = EVENTS[]
                IS_PRINT                 = PRINTS
           TABLES
                T_OUTTAB                 = OUT.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                               " WRITE_USING_ALV
    THESE LINES ARE FOR THE INCLUDE ***
    ***INCLUDE Z_ALV_VARIABLES .
    TYPE-POOLS: SLIS.
    DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
          HEADING  TYPE SLIS_T_LISTHEADER,
          LAYOUT   TYPE SLIS_LAYOUT_ALV,
          EVENTS   TYPE SLIS_T_EVENT,
          REPNAME  LIKE SY-REPID,
          F2CODE   LIKE SY-UCOMM VALUE  '&ETA',
          PRINTS   TYPE SLIS_PRINT_ALV,
          TITLE(40) TYPE C,
          G_SAVE(1) TYPE C,
          G_EXIT(1) TYPE C,
          G_VARIANT LIKE DISVARIANT,
          GX_VARIANT LIKE DISVARIANT.
    CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
               FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE',
               FORMNAME_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST',
               FORMNAME_BEFORE_LINE TYPE SLIS_FORMNAME VALUE 'BEFORE_LINE',
               FORMNAME_AFTER_LINE TYPE SLIS_FORMNAME VALUE 'AFTER_LINE'.
          FORM MAIN_STATEMENTS                                          *
    THIS IS THE CODE THAT MUST BE INSERTED IN THE MAIN PROGRAM
    FORM MAIN_STATEMENTS.
    Declare the parameter P_VARI wherever you want it. If you don't
    want it, hide it with NO-DISPLAY, but it must exist.
    parameters: p_vari like disvariant-variant. " ALV Variant
    You have to add the following line after the data and parameter
    declaration:
    include z_alv_variables.
    Then, after the data/parameter declaration, add these lines:
    *initialization.
    repname = sy-repid.
    perform initialize_fieldcat using fieldtab[].
    perform build_eventtab using events[].
    perform build_comment using heading[].
    perform initialize_variant.
    If you are using the variable P_VARI (ALV Variant), also add this:
    *at selection-screen on value-request for p_vari.
    perform f4_for_variant.
    *at selection-screen.
    perform pai_of_selection_screen.
    After the "END-OF-SELECTION" statement, add these lines:
    perform build_layout using layout.
    perform build_print  using prints.
    perform write_using_alv.
    You also have to create the following forms: (you can find samples
    in this program)
    INITIALIZE_FIELDCAT
    USER_COMMAND     (only if you are creating a STATUS)
    WRITE_USING_ALV
    ENDFORM.
    *&      Form  INITIALIZE_FIELDCAT_SAMPLE
          THIS IS A SAMPLE, DO NOT USE THIS FORM IN YOUR PROGRAM
         -->P_FIELDTAB[]  text                                           *
    FORM INITIALIZE_FIELDCAT_SAMPLE USING P_TAB TYPE SLIS_T_FIELDCAT_ALV.
      DATA: CAT TYPE SLIS_FIELDCAT_ALV.
      CLEAR CAT.                           " Always clear before use
      CAT-TABNAME = 'I'.                   " Your internal table
      CAT-REF_TABNAME = 'ZCUSTMAS'.  " The data dictionary reference table
      CAT-FIELDNAME = 'KUNNR'.       " Name of your field in the itable.
      CAT-COL_POS   = 1.                   " Output position
      APPEND CAT TO P_TAB.
      CAT-FIELDNAME = 'NAME1'.             " Next field
      CAT-COL_POS   = 2.
      APPEND CAT TO P_TAB.
      CAT-FIELDNAME = 'STRAS'.             " and the next
      CAT-COL_POS   = 3.
      APPEND CAT TO P_TAB.
      CAT-FIELDNAME = 'LOEVM'.
      CAT-SELTEXT_S = 'Del'.         " You can always override the descrip-
      CAT-SELTEXT_M = 'Delivery'.          " tion (short, medium, large)
      CAT-SELTEXT_L = 'Delivery Num'.
      CAT-COL_POS   = 4.
      APPEND CAT TO P_TAB.
      CAT-FIELDNAME = 'FKIMG'.
      CAT-DO_SUM    = 'X'.                 " You want totals calculated.
      CAT-NO_OUT    = 'X'.                 " and hidden.
      APPEND CAT TO P_TAB.
    ENDFORM.                               " INITIALIZE_FIELDCAT
    *&      Form  BUILD_EVENTTAB
          THIS IS THE SAME FOR ALL THE PROGRAMS
         -->P_EVENTS[]  text                                             *
    FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = P_EVENTS.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
      CLEAR LS_EVENT.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_END_OF_LIST
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_END_OF_LIST TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
      CLEAR LS_EVENT.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_BEFORE_LINE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
      CLEAR LS_EVENT.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_AFTER_LINE_OUTPUT
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_AFTER_LINE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
      CLEAR LS_EVENT.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
    ENDFORM.                               " BUILD_EVENTTAB
    *&      Form  BUILD_COMMENT
    NOT REALLY NEEDED, BUT I'LL LEAVE IT THERE, JUST IN CASE...
         -->P_HEADING[]  text                                            *
    FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
      DATA: HLINE TYPE SLIS_LISTHEADER,
            TEXT(60) TYPE C,
            SEP(20) TYPE C.
      CLEAR: HLINE, TEXT.
      HLINE-TYP  = 'H'.
    write: text-101 to text+23.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
    ENDFORM.                               " BUILD_COMMENT
    *&      Form  INITIALIZE_VARIANT
    VERY IMPORTANT WHEN YOU USE VARIANTS!!!
    FORM INITIALIZE_VARIANT.
      G_SAVE = 'A'.
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = REPNAME.
      GX_VARIANT = G_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                I_SAVE     = G_SAVE
           CHANGING
                CS_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = GX_VARIANT-VARIANT.
      ENDIF.
    ENDFORM.                               " INITIALIZE_VARIANT
    *&      Form  PAI_OF_SELECTION_SCREEN
    ALSO FOR VARIANTS
    FORM PAI_OF_SELECTION_SCREEN.
      IF NOT P_VARI IS INITIAL.
        MOVE G_VARIANT TO GX_VARIANT.
        MOVE P_VARI TO GX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  I_SAVE     = G_SAVE
             CHANGING
                  CS_VARIANT = GX_VARIANT
             EXCEPTIONS
                  WRONG_INPUT   = 1
                  NOT_FOUND     = 2
                  PROGRAM_ERROR = 3.
        IF SY-SUBRC EQ 0.
          G_VARIANT = GX_VARIANT.
        ELSE.
          PERFORM INITIALIZE_VARIANT.
        ENDIF.
      ELSE.
        PERFORM INITIALIZE_VARIANT.
      ENDIF.
    ENDFORM.                               " PAI_OF_SELECTION_SCREEN
    *&      Form  F4_FOR_VARIANT
          text
    FORM F4_FOR_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                IS_VARIANT = G_VARIANT
                I_SAVE     = G_SAVE
           IMPORTING
                E_EXIT     = G_EXIT
                ES_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF G_EXIT = SPACE.
          P_VARI = GX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.
    ENDFORM.                               " F4_FOR_VARIANT
    *&      Form  BUILD_LAYOUT
    STANDARD LAYOUT
         -->P_LAYOUT  text                                               *
    FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
      P_LAYOUT-F2CODE       = F2CODE.
      P_LAYOUT-ZEBRA        = 'X'.
    p_layout-detail_popup = 'X'.
      P_LAYOUT-TOTALS_TEXT  = SPACE.
      P_LAYOUT-SUBTOTALS_TEXT = SPACE.
    ENDFORM.                               " BUILD_LAYOUT
          FORM BUILD_PRINT                                              *
    STANDARD PRINT OPTIONS                                             *
    -->  P_PRINT                                                       *
    FORM BUILD_PRINT USING P_PRINT TYPE SLIS_PRINT_ALV.
      P_PRINT-NO_PRINT_LISTINFOS = 'X'.
      P_PRINT-NO_PRINT_SELINFOS  = ' '.
    ENDFORM.                               " BUILD_PRINT
          FORM PF_STATUS_SET                                            *
    NAME YOUR STATUS ALV. IF YOU NEED IT..                             *
    FORM PF_STATUS_SET USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'ALV' EXCLUDING EXTAB.
    ENDFORM.                               " PF_STATUS_SET
          FORM USER_COMMAND_SAMPLE                                      *
    -->  UCOMM                                                         *
    -->  SELFIELD                                                      *
    FORM USER_COMMAND_SAMPLE USING UCOMM    LIKE SY-UCOMM
                               SELFIELD TYPE SLIS_SELFIELD.
      CASE UCOMM.
        WHEN 'MSXL'.                       " Export to Excel
         perform set_excel_export.
          CLEAR UCOMM.
        WHEN 'MM03'.
         set parameter id 'MAT' field selfield-value.
         call transaction 'MM03' and skip first screen.
          CLEAR UCOMM.
        WHEN 'BGR1'.
         perform fill_available.
         perform graph_available.
          CLEAR UCOMM.
        WHEN 'DOCU'.
         call function 'Z_HELP' exporting repname = repname.
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
    *&      Form  WRITE_USING_ALV_SAMPLE
    *THIS IS A SAMPLE AND MUST BE WRITTEN DIRECTLY IN THE MAIN PROGRAM
    FORM WRITE_USING_ALV_SAMPLE.
    YOU CAN MERGE WITH A DATA DICTIONARY TABLE USING THIS:
    call function 'REUSE_ALV_FIELDCATALOG_MERGE'
          exporting
               i_program_name     = repname
               i_internal_tabname = 'I'
               i_inclname         = repname
          changing
               ct_fieldcat        = fieldtab.
    if sy-subrc <> 0.
       write: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_FIELDCATALOG_MERGE'.
    endif.
    OR JUST DISPLAY IT USING THIS:
    call function 'REUSE_ALV_LIST_DISPLAY'
          exporting
               i_callback_program       = repname
               i_callback_pf_status_set = 'PF_STATUS_SET'
               i_callback_user_command  = 'USER_COMMAND'
               i_structure_name         = 'I'
               is_layout                = layout
               it_fieldcat              = fieldtab
               i_default                = 'A'
               i_save                   = g_save
               is_variant               = g_variant
               it_events                = events[]
               is_print                 = prints
          tables
               t_outtab                 = i.
    if sy-subrc <> 0.
       write: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
    endif.
    ENDFORM.                               " WRITE_USING_ALV
    thanks
    mrutyun^

  • Why is sortCompareFunction called when clicking checkbox on non-sortable column?

    Hello,
    I have a datagrid that contains three static DataGridColumn columns.  The first column uses a checkbox item renderer whose sortable property is set to false:
    <mx:DataGridColumn
    width="100"
    sortable="false"
    itemRenderer="com.mycomponent.CheckBoxItemRenderer" />
    On creation complete, a fourth column is added dynamically to the datagrid, through ActionScript, and several of its properties are set, like so:
    var dgc : DataGridColumn = new DataGridColumn();
    dgc.headerText = someAttribute.name;
    dgc.itemRenderer = new ClassFactory(ProductResultItemRenderer);
    dgc.sortCompareFunction = attributeCompareFunction;
    Everything is rendered just fine.  If I sort the datagrid items by clicking the column header of the second or third columns (these are the static columns that use Flex's default sort function) and then click on any of the items' checkboxes, there are no issues.  However, if I sort the items by clicking on the header of the dynamically-added fourth column and then click on any of the items' checkboxes, the results are partially re-sorted.  Setting a breakpoint in my attributeCompareFunction method, any time I click a checkbox in this use case, this compare function is called.
    Can someone shed some light on why this function is invoked in this last use case, especially when performing a non-sortable event (clicking on a checkbox)?
    Thanks,
    -Jose

    Hi Alex,
    I set a breakpoint in the sortCompareFunction, but I'm unable to determine what is calling it.  Here is the call stack:
    Main Thread (Suspended)
    Function/<anonymous>
    mx.collections::SortField/http://www.adobe.com/2006/flex/mx/internal::internalCompare
    mx.collections::Sort/internalCompare
    mx.collections::Sort/findItem
    mx.collections::ListCollectionView/http://www.adobe.com/2006/flex/mx/internal::findItem
    mx.collections::ListCollectionView/addItemsToView
    mx.collections::ListCollectionView/moveItemInView
    mx.collections::ListCollectionView/handlePropertyChangeEvents
    mx.collections::ListCollectionView/listChangeHandler
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    mx.collections::ArrayList/internalDispatchEvent
    mx.collections::ArrayList/itemUpdateHandler
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    com.my.package.models::ProductVO/dispatchEvent [no source]
    com.my.package.models::ProductVO/set compare [no source]
    com.my.package.components::CheckBoxItemRenderer/onChange
    com.my.package.components::CheckBoxItemRenderer/___CheckBoxItemRenderer_CheckBox1_change
    flash.events::EventDispatcher/dispatchEventFunction [no source]
    flash.events::EventDispatcher/dispatchEvent [no source]
    mx.core::UIComponent/dispatchEvent
    spark.components.supportClasses::ToggleButtonBase/buttonReleased
    spark.components.supportClasses::ButtonBase/mouseEventHandler
    The event dispatched by "ProductVO/dispatchEvent" is of type "mx.events.PropertyChangeEvent", which is OK since the "compare" property was updated.  However, later in the call stack, the "ArrayList" object fires an "internalDispatchEvent" of type "mx.events.CollectionEvent", which is an "update" event.  Looking at the rest of the call stack, this is the event that leads to the re-sort.
    Is there any way to prevent this CollectionEvent event from firing and, if so, how?
    Thanks,
    -Jose

  • I downloaded Maverick and now I can't open pages from the Dock.  The Pages icon just jumps up and down abut doesn't open.  However, I can one pages by clicking on the App. I have an iMac with iWork 08.

    Since upgrading to Maverick from Mountain Lion I am unable to open Pages from the Dock.  When I click on the pages icon in the dock the icon just keeps bouncing up and down.  However, I can open pages by clicking on the icon in the Apps folder.  No problems prior to upgrading to Maverick.

    Quit Pages. Drag its icon out of the Dock. Create a new one by dragging the application into the Dock. Test.

  • How can I define Double Click Processing in SAP Query ?

    The first question is : How Can I define drill-down for SAP Query report ?
    The second one :  How can I program Double Click in SAP Query report for Different columns like ALV Grid processing ?

    you can attach a repot or at tcode etc in an SAP query using report assignment in SQ01 but as far as i remember you cannot attach multiple reports.
    regards,
    khusro habib

  • How do I reorder songs in a playlist in the new itunes??? I can no longer just click and drag. When I click, it doesn't move!!!! Need help ASAP- trying to prepare for an aerobics class and need songs in a specific order!

    How do I reorder songs in a playlist in the new itunes??? I can no longer just click and drag. When I click, it doesn't move!!!! Need help ASAP- trying to prepare for an aerobics class and need songs in a specific order!

    Vera,
    Use View > View Options, and set 'Sort By" to "Manual Order."
    Then you will be able to drag-n-drop songs up and down the list.

  • How can i catch the jsp checking event ?

    As we know, there are three parameters which is about checking in the weblogic.xml, pageCheckSeconds,*servlet-reload-check-secs*,*resource-reload-check-secs*, but how can i catch the checking event when the webapp is active.
    The fellowing is my simple test, i deployed a webapp on a weblogic server instance, and it was actived. I wrote a simple bash shell to try to catch the event, but fail. i througnt it may be dependent on the webapp's stage mode. but i change the mode, and try again, it was fail too.
    [weblogic@tdy218 ~]$ ls
    getLastAccessTime.sh webapps
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh ~/webapps/Test/login.jsp
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    The file's last access time is: 2011-05-22 11:10:21.000000000 +0800
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh
    /bea/wls924/user_projects/domains/base_domain/servers/AdminServer/stage/Test/Test/login.jsp
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    The file's last access time is: 2011-05-22 11:11:37.000000000 +0800
    [weblogic@tdy218 ~]$ stat
    /bea/wls924/user_projects/domains/base_domain/servers/AdminServer/stage/Test/Test/login.jsp
    File: `/bea/wls924/user_projects/domains/base_domain/servers/AdminServer/stage/Test/Test/login.jsp'
    Size: 634 Blocks: 8 IO Block: 4096 regular file
    Device: 804h/2052d Inode: 583725 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 502/weblogic) Gid: ( 500/ bea)
    Access: 2011-05-22 11:11:37.000000000 +0800
    Modify: 2010-05-24 14:49:08.000000000 +0800
    Change: 2011-05-22 11:10:21.000000000 +0800
    The jsp file's last access time didn't changed in the past.
    [weblogic@tdy218 ~]$ more getLastAccessTime.sh
    #!/bin/bash
    declare -i m=1
    declare -i n=100
    while [ $m -le $n ]; do
    echo "The file's last access time is: $(stat -c %x $1)"
    m=m+1
    sleep 3
    done
    weblogic.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.oracle.com/technology/weblogic/servers/wls810/dtd/weblogic810-web-jar.dtd">
    <weblogic-web-app>
    <jsp-descriptor>
    <jsp-param>
    <param-name>pageCheckSeconds</param-name>
    <param-value>2</param-value>
    </jsp-param>
    </jsp-descriptor>
    <container-descriptor>
    <servlet-reload-check-secs>2</servlet-reload-check-secs>
    <resource-reload-check-secs>2</resource-reload-check-secs>
    </container-descriptor>
    <context-root>/jdbc</context-root>
    </weblogic-web-app>
    env :
    WebLogic 9.2 MP4、Redhat Linux AS 4 Update 8 x86.

    I tested on WLS 11g ps2(10.3.3) which is running in Development Mode also, but it was the same as WLS 9.2 MP4.
    During the weblogic server running, it don't check the application resources , but it will check the $Domain_Home/autodeploy directory every three seconds in Development Mode , the following is the result.
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh /bea/wls924/user_projects/domains/base_domain/autodeploy
    The file's last access time is: 2011-05-22 12:01:43.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:43.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:43.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:46.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:46.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:46.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:49.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:49.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:49.000000000 +0800
    The file's last access time is: 2011-05-22 12:01:52.000000000 +0800
    Ctrl + ^
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh ~/webapps/Test
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    The file's last access time is: 2011-05-22 17:26:25.000000000 +0800
    Ctrl + ^
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh ~/webapps/Test/
    insert.jsp login.jsp query.jsp tdy218.sql WEB-INF/
    [weblogic@tdy218 ~]$ ./getLastAccessTime.sh ~/webapps/Test/login.jsp
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    The file's last access time is: 2011-05-22 11:44:31.000000000 +0800
    Ctrl + ^
    I set the frequency to every one seconds this time by using sleep method in my Bash Shell script.
    #!/bin/bash
    declare -i m=1
    declare -i n=100
    while [ $m -le $n ]; do
    echo "The file's last access time is: $(stat -c %x $1)"
    m=m+1
    sleep 1
    done

  • I upgraded to Maverick O/S and I can no longer right click on iPhoto images to find my photo files.  My photo files are not where they were before upgrade.

    I upgraded to Maverick O/S and I can no longer right click on iPhoto images to find my photo files.  My photo files are not where they were before upgrade.

    Have you checked the sorting settings to make sure they are as you expect?
    OT

  • I get an "install failed" message. "Recovery system can't be created-click restart to return to previous version of OS X." This doesn't work. My Mac continues to try to install Mountain Lion. What is the elegant way to get my system back?

    I get an "install failed" message. "Recovery system can't be created—click restart to return to previous version of OS X." This doesn't work. My Mac continues to try to install Mountain Lion. What is the elegant way to get my system back?

    The first time I attempted to install ML was on a late 2011 MBP.  It ran for three minutes then gave me the error message: Could not install OSX due to an unexpected error.  I was using the original ML install app, not a USB or other drive.  
    After a couple of restarts wiht the same result I saw a message to the effect that the install was trying to close open apps.  I closed apps  manually a few times to no avail.  I shut down instead of restarting then booted into Safe mode (hold down the shift key when starting) and that did it.  The install went smoothly after that. 
    I since installed ML in two iMacs using a cloned copy of the install app on a USB drive.  This time I shut down the computers and booted into Safe Mode first and there were no problems. 
    I don't know if this issue is the one causing you these problems but it is a simple enough solution to try.
    Jay

  • How can I catch and display the "cent" symbol (Alt+0162)?

    Hi,
    I have a jTextArea field in which it supposes to be able to catch a special
    character, money cent symbol by Alt+0162 from the keyboard. Does anyone know
    how I can catch it and display it in money cent symbol in the jTextArea field?
    Thanks for your help.
    -John

    The CATCH-ENDCATCH statement is obsolete as of release was620. You should use TRY. CATCH. ENDCATCH.
    The exception that will be raise is CX_SY_CONVERSION_NO_NUMBER, so you have to catch that exception or a super class of this exception class.
    REPORT zfsl_sum_functions.
    DATA: cin(50),
    cout(50),
    iin TYPE i,
    iout TYPE i,
    etext TYPE string.
    DATA: rf_cx_error TYPE REF TO CX_SY_CONVERSION_NO_NUMBER,
            errortxt TYPE string.
    TRY.
        cin = '123ABC'. " how can i catch this
        iout = cin.
        WRITE: iout.
      CATCH CX_SY_CONVERSION_NO_NUMBER INTO  rf_cx_error.
        errortxt = rf_cx_error->get_text( ).
        WRITE errortxt.
    ENDTRY.

  • Can't seem to click anything without using CTRL

    There are some similar threads here but nothing exact. I have a MacBook. I was transferring files from a USB stick when OS froze completely and stopped responding to both the keyboard and trackpad. I had to use the power button. On restart, everything was back to normal except I couldn't click... On anything. The cursor moves around the screen fine but the clickpad is unresponsive completely. Also, the F-keys had reset, and the Fn + F-keys did nothing. (I fixed that with sysprefs)
    After extensive trial & error, I managed to find out that I can click with the trackpad + CTRL. However, it goes to the right-click menus and such. I can select with one click on the trackpad. But if I move the cursor around, it drags the file/folder/icon. If i drag the cursor around the desktop it lassos everything. I have to double-click the menu bar empty space to stop this.
    I can't actually double-click anything. I click once, and then again when the menu with "Open" pops up.
    I have tried repairing disk permissions, checking system preferences, resetting system preferences and resetting the PRAM. I have also tried a new user, and it stays this way. Also, using an external mouse yields the same results. Unless I hold CTRL, it won't do anything.
    It's kind of hard to explain what's exactly going on, but I hope I have. It's like suddenly everything is backwards, if that makes sense. It's like my clickpad is being held down constantly or something.
    I'm assuming since it happens with an external mouse (regardless of whether I check "ignore trackpad") that it's a software issue.
    Any suggestions on how to change it back to normal? Please?

    Hi Veelle, and a warm welcome to the forums!
    At this point I think you should get Applejack, and even though you've some of this, it does things in the right order...
    http://www.versiontracker.com/dyn/moreinfo/macosx/19596
    After installing, reboot holding down CMD+s, (+s), then when the DOS like prompt shows, type in...
    applejack AUTO
    Then let it do all 5 of it's things.
    At least it'll eliminate some questions if it doesn't fix it.
    The 5 things it does are...
    Correct any Disk problems.
    Repair Permissions.
    Clear out Cache Files.
    Repair/check several plist files.
    Dump the VM files for a fresh start.
    We can figure another course if needed from there.

  • I can not right click "open in new tab" nor open in new window, in my bookmark file.the bookmarks are all there, but I have to open a tab first then left click to open an item. Why can't I right click? The options are there, but not highlighted/clickable.

    I can not right click "open in new tab" nor open in new window, in my bookmark file.the bookmarks are all there, but I have to open a tab first then left click to open an item. Why can't I right click? The options are there, but not highlighted/clickable.

    now it is working?! Go figure. Yeah! Thanks anyway......

Maybe you are looking for

  • How to make proficiency rating and objective compulsory.

    Hi gurus, Please I need your help, I need to make Proficiency Rating column of appraisal and appraisal objective to be required (i.e compulsory). That is, Appraiser will not be allow to move to step 3, if scores are not awarded to appraisee and objec

  • Date created not working in Finder

    In finder, after I import photos, or even look at photos on a NAS drive created well before I got the Mac, the date modified and date created is exactly the same. When I look at the same files under Windows Explorer, they show correct date created (i

  • Strange issue on log call.. calls registered in log ...

    i had this problem.. i have some calls registered on my log calls that i never done! some of them are incoming and other outgoing... i notice this on a contact that i was checking the relative contact sheet .. i received a phone call from another con

  • Find aging of concurrent jobs execution for last one year in R12

    DB:11.2.0.3.0 EBS: 12.1.3 O/S: Red Hat Linux Hi all, Could anyone please share the resolution for the below question in R12 ? 1)      Considering only 3 weeks of data is maintained in FND tables, which means we cannot use fnd_concurrent_requests to g

  • HT5167 Great I updated and now can't open outlook or eye tv. Thanks apple now have to do a restore!!

    Warning!! Do not update to OSX 10.7.4 Lion! I updated this afternoon and now none of my office suite works or my eye tv application. I am now in the process of using a backup to fix the problem. Well done Apple! I'd expect this from Microsoft not App