Events in Interactive reports

hi gurus,
i want detailed explanation each n every event of standard report...
Regards
baskar

HI
<b>INITIALIZATION</b>
This event keyword defines an event block whose event is triggered by the ABAP runtime environment during the flow of an executable program, directly after LOAD-OF-PROGRAM and before the selection screen processing of any existing standard selection screen. This gives you the one-time opportunity to initialize the input fields of the selection screen, including those defined in the logical database linked with the program.
When an executable program defines a standard selection screen, it is called again by the ABAP runtime environment after execution, which triggers the INITIALIZATION event again. In this case, initializing parameters or selection criteria of the selection screen has no effect, because they are automatically supplied with the preceding user inputs from the selection screen during the selection screen event AT SELECTION-SCREEN OUTPUT. To explicitly initialize the selection screen for each call, you must use the event AT SELECTION-SCREEN OUTPUT.
<b>START-OF-SELECTION</b>
This event keyword defines an event block whose event is triggered by the ABAP runtime environment when calling the executable program selection screen processing of a selection screen.
In an executable program, all statements that are not declarations, and are listed before the first explicit processing block, are assigned to this event block. If the program does not contain an explicitly defined event block START-OF-SELECTION, these statements form the complete event block START-OF-SELECTION. If a program contains an explicitly defined event block START-OF-SELECTION, these statements are added to the beginning of the event block. If the program contains no explicitly defined event blocks, these statements form the entire event block START-OF-SELECTION.
If the program is linked to a logical database, preparations can be made here before the logical database reads data. If the program is not linked to a logical database, this event block even displays a "main program" from which procedures or screen layouts are called.
<b>GET node</b>
Use GET to handle two types of events after submitting executable programs: Get events and events at the end of a hierarchy level of a logical database. If during a GET event a list is written, previously an automatic line feed is created.
The event blocks after GET are implemented internally as procedures. Declarative statements in GET event blocks create local data.
<b>END-OF-SELECTION</b>
This statement defines an event block, whose event is raised by the ABAP-runtime environment during the calling of an executable program , if the logical database, with which the program is linked, has completely finished its work.
In this event block, all data read by the logical data base , can be processed summarically. In an executable program without logical data base, there is no need to implement the event block END-OF-SELECTION.
<b>LOAD-OF-PROGRAM</b>
This event keyword defines an event block whose event is triggered by the ABAP-runtime environment when an executable program, a module pool, a function group or a sub-routine pool is loaded in the internal session.
When calling a program through SUBMIT or through a transaction code, then, at every call, a new internal session is opened and the event block is executed once at every call. You can initialize global data objects of the program here.
At the first call of an external Procedure (sub-program or function module), the framework program of the called procedure is loaded into the internal session of the caller, thus triggering the event LOAD-OF-PROGRAM. The event block is executed before the called procedure. At any further call of a procedure of the same framework program by a caller of the same internal session, the event LOAD-OF-PROGRAM is triggered no longer.
The event LOAD-Of-PROGRAM should mainly be used to initialize global data when calling external procedures or Transactions. If you call executable programs with SUBMIT, we recommend that you use the event INITIALIZATION, as the Starting values for parameter and selection criteria are set after LOAD-OF-PROGRAM (see program flow after SUBMIT).
<b>AT SELECTION-SCREEN</b>
AT SELECTION-SCREEN selscreen_event.
This statement defines event blocks for different events selscreen_event that are triggered by the ABAP runtime environment during selection screen processing.
Selection screen events occur immediately before sending a selection screen and after certain user actions on a displayed selection screen. They assist in selection screen processing in the ABAP program.
AT SELECTION-SCREEN is triggered at least twice during actions on selection screens that are linked into another selection screen as a subscreen - first for the linked selection screen itself, and then for the linking selection screens.
The event blocks after AT SELECTION-SCREEN are implemented internally as procedures. Declarative statments in these event blocks create local data.
<b>AT SELECTION-SCREEN OUTPUT</b> 
This event is triggered at the screen event PBO of a selection screen. In the event block, the selection screen can be prepared through assignments to the data objects of parameters and selection criteria and through dynamic screen modifications.
The assignments to input fields in the event block AT SELECTION-SCREEN OUTPUT always affect the selection screen and overwrite the user inputs from previous displays of the same selection screen. Assignments in the event blocks LOAD-OF-PROGRAM oder INITIALIZATION, on the other hand, only have an effect at first program start.
<b>AT SELECTION-SCREEN ON {para|selcrit}</b>
This event is triggered at the screen event PAI of a selection screen if the content of the input field of a parameter para or a line of a selection criterion selcrit was passed to the ABAP program. In the event block, the user input can be checked. Sending a warning or an error message in the event block makes the fields para and selcrit ready for input again.
No parameter that is defined as a radio button can be specified. For this purpose, the addition ON RADIOBUTTON GROUP is provided.
If a user action takes place in the dialog box for the multiple selection of a selection criterion selcrit, the entries of the selection table are passed to the program, line by line. For each line, the event AT SELECTION-SCREEN ON selcrit is triggered.
<b>AT SELECTION-SCREEN ON END OF selcrit</b>
This event is triggered after the selection table selcrit has been fully passed to the program after a user action in the dialog box for the multiple selection has taken place. In the event block, the entire selection table can be checked.
<b>AT SELECTION-SCREEN ON BLOCK block</b>
This event is triggered at the screen event PAI of a selection screen if all the input fields of a block block of the selection screen were passed to the ABAP program. In the event block, the user inputs can be checked. Sending a warning or an error message in the event block makes all the fields of the block block ready for input again.
<b>AT SELECTION-SCREEN ON RADIOBUTTON GROUP radi</b>
This event is triggered at the screen event PAI of a selection screen if all the fields of a radio button group radi of the selection screen were passed to the ABAP program. In the event block, the user input can be checked. Sending a warning or error message in the event block makes all the radion buttons of the block radi ready for input again.
The individual fields of a radio button group are not passed individually and do not trigger the event AT SELECTION-SCREEN ON par.
<b>AT SELECTION-SCREEN { ON { HELP-REQUEST | VALUE-REQUEST } FOR
    {para|selcrit-low|selcrit-high} }</b>
The two events ON HELP-REQUEST and ON VALUE-REQUEST are triggered at the screen events POH and POV of a selection screen if - for the input field of a parameter para or one of the input fields of a selection criterion selcrit - the field help F1 or the input help F4 was called. Other selection events are not triggered.
In the event blocks, a self-defined field or input field can be programmed, which overrides any helps possibly defined in the ABAP Dictionary.
These event blocks can only be implemented for fields of the selection screen that are defined in the same ABAP program and not in a possibly linked logical database.
With the events for the field and input help, no data is transported between the selection screen and the ABAP program. As with general screens, suitable function modules must be used for these. The parameters and selection criteria changed for the input help are transported to the selection screen.
<b>AT LINE-SELECTION</b>
This statement defines an event block whose event is triggered by the ABAP runtime environment during the display of a screen list - provided the scren cursor is on a list line and you select a function using the function code PICK. Through the definition of this event block, the standard list status is automatically enhanced in such a way that the function code F2 and, with it, the double-click mouse function is linked up to the function code PICK.
If the function key F2 is linked with a function code different than PICK, each double click will trigger its even, usually AT USER-COMMAND, and not AT LINE-SELECTION.
<b>AT USER-COMMAND</b>
This statement defines an event block whose event is triggered by the ABAP runtime environment if, during the display of a screen list, a function with a self-defined function code was chosen.
Self-defined function codes are all those that include character combinations, except for the following:
The function codes PICK and PF## ("##" stands for 01 to 24) do not cause the event AT USER-COMMAND, but the events AT LINE-SELECTION and AT PF##.
All function codes that start with the character "%" are interpreted as system functions and do not cause the event AT USER-COMMAND. The system functions for lists are listed in the following table 1.
The function codes in the following table 2, likewise, do not cause the event AT USER-COMMAND, but are handled by the list processor.
<b>AT PF##</b>
This statemet defines an event block whose event is triggered by the ABAP runtime environment during list display - provided the screen cursor is on a list line and a function is selected using the function code PF##. Here ## stands for a number between 01 and 24. In the= standard list status, these function codes are assigned to the function keys of the input device.
Instead of AT PF## , AT USER-COMMAND should always be used and special function codes should be assigned to the required function keys.
<b>TOP-OF-PAGE</b>
Effect
This statement defines an event block whose event is triggered by the ABAP runtime environment during the creation of a list. This occurs when a new page is started - that is, immediately before the first line in a new page is to be output. All list outputs that take place in the event block are placed below the standard page header of the list. You cannot output more lines than are available in the page within the event block. The NEW-PAGE statement is ignored within this event block.
The entire output written to the list in the event block belongs to the page header of the current list page. The top page header cannot be moved when you scroll vertically in a list displayed on the screen.
<b>TOP-OF-PAGE DURING LINE-SELECTION</b>
If you do not use an addition, an event block is triggered for event TOP-OF-PAGE during the creation of a basic list. If you use the addition DURING LINE-SELECTION, an event block is triggered for the corresponding events during the creation of details lists. You have to use system fields like sy-lsind to distinguish between the individual details lists.
<b>END-OF-PAGE</b>
This statement defines an event block that is raised by the ABAP-runtime during creation of a basic list, if there is a line reservation in the addition LINE-COUNT of the initiating statement for a page footer, which was reached while writing to this page. A list output that takes place in the event block, is placed in this area. Output statements that exceed the reserved area will be ignored.
<b>Reward if usefull</b>

Similar Messages

  • What are the events in interactive reports?

    what are the events in interactive reports?
    could plz explain

    hi,
    First event -
    Initialization : triggered when the report is loaded in memory.
    At selection-screen output : triggered when the selection screen is loaded in memory before being displayed.
    At selection-screen : before leaving the selection screen.
    start-of-selection : the first event for displaying the report.
    This event keyword defines an event block whose event is triggered by the ABAP runtime environment
    when calling the executable program selection screen processing of a selection screen.
    In an executable program, all statements that are not declarations,
    and are listed before the first explicit processing block, are assigned to this event block.
    If the program does not contain an explicitly defined event block START-OF-SELECTION,
    these statements form the complete event block START-OF-SELECTION.
    If a program contains an explicitly defined event block START-OF-SELECTION,
    these statements are added to the beginning of the event block.
    If the program contains no explicitly defined event blocks,
    these statements form the entire event block START-OF-SELECTION.
    end-of-selection : after the start-of-selection is completed.
    classiscal report events.
    top-of-page : every time a new page is started in the list.
    end-of-page : every time the list data reaches the footer region of the page.
    interactive report events.
    top of page during line selection : top of page event for secondary list.
    at line-selection : evey time user dbl-clicks(F2) on the list data.
    at pF<key> : function key from F5 to F12 to perform interactive action on the list.
    at user-command
    <b>http://help.sap.com/saphelp_47x200/helpdata/en/56/1eb6c705ad11d2952f0000e8353423/content.htm</b>
    Rgds
    Anver

  • Catch the onClick event on Interactive Report to access columns content

    Hi,
    I am using Apex 4
    I would like to display some rows into an interactive report. I have define a dynamic action on that report in order to catch the Mouse OnClick Event.
    The Goal is to display the detail of the row in a form region in the sidebar.
    To do this, I would like to get the content of a column of the row clicked and then execute a pl/sql block to get the detail of my row.
    I am stuck to get the content of the column I have clicked within the dynamic action to pass it to execute the pl/sql block.
    Any idee?
    Many thanks
    jko
    Edited by: user617942 on 29-Jul-2010 04:19

    Hello,
    Did I ask something stupid :-)
    Jko
    Edited by: user617942 on 29-Jul-2010 04:19
    Edited by: user617942 on 29-Jul-2010 08:34

  • AT USER COMMAND event in interactive reports

    hi experts,
    Can anyone explain me about AT USER COMMAND event with one practical ex.
    thanks in advance
    R.vijai

    Hi vijaya kumar,
        If the user chooses a function code during list processing that is neither processed by the system, or PICK or PF<nn>, the system triggers the event AT USER-COMMAND. For this event, you must define your own GUI status for a list. To react to your own function codes in a program, you must define the following event block:
    AT USER-COMMAND.
    <statements>.
    In this event block, you can use an IF or CASE structure to tell the function codes apart. They are available in the system field SY-UCOMM. There are further system fields that are filled in list events, such as SY-LSIND and SY-PFKEY, that allow you to make further case distinctions.
    REPORT Test_program.
    START-OF-SELECTION.
      SET PF-STATUS 'TEST'.
      WRITE:  'Basic list, SY-LSIND =', sy-lsind.
    AT LINE-SELECTION.
      WRITE:  'LINE-SELECTION, SY-LSIND =', sy-lsind.
    AT USER-COMMAND.
      CASE sy-ucomm.
        WHEN 'TEST'.
          WRITE:  'TEST, SY-LSIND =', sy-lsind.
      ENDCASE.
    With this code double click on 'TEST' and define your own PF status and give user command as TEST and check out this useful programe.
    All the very best to you.
    Regards,
    Mohan Vamsi Krishna.A

  • WHAT ARE EVENTS IN INTERACTIVE LIST ?

    WHAT ARE EVENTS IN INTERACTIVE LIST ? IS THERE A DIFFERENCE BETWEEN INTERACTIVE LIST AND INTERACTIVE REPORT ?
    BEST REGARDS,
    RYAN

    Hi
    Events in Interactive Report
    TOP-OF-PAGE DURING LINE-SELECTION
    AT USER-COMMAND.
    AT LINE-SELECTION
    AT PF-FUNCTION KEY
    Report Output is called LIST
    Interactive report Output is nothing but Interactive List
    <b><REMOVED BY MODERATOR></b>
    Regards
    Anji
    Message was edited by:
            Alvaro Tejada Galindo

  • Multiple event not working in interactive report

    Hi Experts,
    I am developing a interactive report used Set-PFstatus '100' , AT user-command and At line-selection in a single program.
    Here At line-selection is not working but at user-command is working fine.
    After commenting set-PF ststus '100' event at line selection is working.
    Ii want at to use at-user command and at line-selection both to work with set pf-status.
    Please help me out.

    Hi,
    You can use these events together but in case while
    creating your GUI status for your program you have
    to give Function Code 'PICK' with F2 short cut key
    because for at line selectino double click 'PICK' function
    code is trigerred.
    hope it helps,
    Regards
    Mansi

  • Which is first event triggred in interactive report

    pls let me know

    <b>The event are triggered depended on the way the output is generated . </b>
    for eg:
    "Initialization :
    triggered when the report is loaded in memory.
    "At selection-screen output :
    triggered when the selection screen is loaded in memory before being displayed.
    "At selection-screen / <field> :
    before leaving the selection screen.
    "start-of-selection :
    the first event for displaying the report.
    "end-of-selection :
    after the start-of-selection is completed.
    "classiscal report events.
    "top-of-page :
    every time a new page is started in the list.
    "end-of-page :
    every time the list data reaches the footer region of the page.
    "interactive report events.
    "top of page during line selection :
    top of page event for secondary list.
    "at line-selection :
    evey time user dbl-clicks(F2) on the list data.
    "at pF<key> :
    function key from F5 to F12 to perform interactive action on the list.
    reward  points if it is   usefull ....
    Girish

  • Interactive Report Events

    Hi Friends,
    Can any one give sample programs  of below Interactive Report Events ?
    AT PF<nn> (obsolete)
    AT LINE-SELECTION
    AT USER-COMMAND
    points for sure..
    Regards
    Vijaya

    Hi see the below program.
    Hope this helps you.
    But make sure that the Gui is also created and activated.
    To do this just double click at at pf-status <b>statusname.</b>
    REPORT  Z_EVENTS LINE-SIZE 250.
    Description : This Program accepts accept a range of Airline carrier *
                  ID and Flight connection numbers from the user and     *
                  display SPFLI data.Develop a user interface for the    *
                  basic list with two pushbuttons.It Sorts when the User *
                  clicks on the  sort and sort by push buttons           *
    TABLES:
      SPFLI.                               " Flight schedule
    "Selection screen elements............................................
    SELECTION-SCREEN BEGIN OF BLOCK
      CARR_CONN.
    SELECT-OPTIONS:
      S_CARRID FOR SPFLI-CARRID,           " Carrier Id
      S_CONNID FOR SPFLI-CONNID.           " Connection Id
    SELECTION-SCREEN END OF BLOCK
      CARR_CONN.
    Dat declaration of the structure to hold spfli data
    DATA:
      W_LINE_DATA(255) TYPE C.             " Line Content
    DATA:
      BEGIN OF FS_SPFLI,
        CARRID    LIKE SPFLI-CARRID,       " Carrier Id
        CONNID    LIKE SPFLI-CONNID,       " Connection Id
        CITYFROM  LIKE SPFLI-CITYFROM,     " Departur City
        CITYTO    LIKE SPFLI-CITYTO,       " Arrival City
        AIRPFROM  LIKE SPFLI-AIRPFROM,     " Departure Airport
        AIRPTO    LIKE SPFLI-AIRPTO,       " Arrival Airport
        COUNTRYFR LIKE SPFLI-COUNTRYFR,    " Departure Country
        COUNTRYTO LIKE SPFLI-COUNTRYTO,    " Arrival Country
      END OF FS_SPFLI.
    *Internal Table  to hold FLIGHT_DETAILS                                *
    DATA:
      T_SPFLI LIKE
    STANDARD TABLE                        " FS_SPFLI like Structure
           OF FS_SPFLI,
    W_FIELD(180) TYPE C.
    *" Data declarations...................................................
    Work variables                                                      *
    DATA:
      W_BOX TYPE C.                        " Check Box in the window
                         START OF SELECTION EVENT                        *
    START-OF-SELECTION.
      PERFORM SELECT_DETAILS.
    Set PF-Status
      SET PF-STATUS 'BUTTON_SORT'.
                         AT USER COMMAND EVENT                           *
    AT USER-COMMAND.
      GET CURSOR FIELD W_FIELD.
      W_FIELD = W_FIELD+9(10).
      CASE SY-UCOMM.
        WHEN 'SORT'.
          SORT T_SPFLI STABLE BY (W_FIELD) ASCENDING.
          PERFORM DISPLAY_DETAILS.
        WHEN 'SORTDATABY'.
          PERFORM DISPLY_FIELDS.
        WHEN 'SORTASCEN'.
          PERFORM SORT_ASC_FIELD.
        WHEN 'SORTDESCEN'.
          PERFORM SORT_DES_FIELD.
        WHEN OTHERS.
          WRITE 'Invalid Command'(002).
      ENDCASE.                             " CASE SY-UCOMM.
                         END  OF SELECTION EVENT                         *
    END-OF-SELECTION.
      PERFORM DISPLAY_DETAILS.
    *&      Form  SELECT_DETAILS                                           *
      This Sub routine Retriebes the Details From SPFLI Table            *
    There are no interface parameters to be passed to this subroutine.   *
    FORM SELECT_DETAILS .
      SELECT CARRID                        " Carrier Id
             CONNID                        " Connection Id
             CITYFROM                      " Departur City
             CITYTO                        " Arrival City
             AIRPFROM                      " Departure Airport
             AIRPTO                        " Arrival Airport
             COUNTRYFR                     " Departure Country
             COUNTRYTO                     " Arrival Country
        FROM SPFLI
        INTO TABLE T_SPFLI
      WHERE CARRID IN S_CARRID AND
        CONNID IN S_CONNID.
      IF SY-SUBRC NE 0.
        WRITE'No Records Available'(001).
      ENDIF.                               " IF SY-SUBRC NE 0.
    ENDFORM.                               " SELECT_DETAILS
    *&      Form  DISPLAY_DETAILS                                          *
    This subroutine displays the SPFLI data on the basic list            *
    There are no interface parameters to be passed to this subroutine.   *
    FORM DISPLAY_DETAILS .
      MOVE 0 TO SY-LSIND .
      LOOP AT T_SPFLI INTO FS_SPFLI.
        AT FIRST.
          WRITE:
            /  'Carrier Id'(003),
            15 'Connection Id'(004),
            30 'Departur City'(005),
            45 'Arrival City'(006),
            60 'Dept Airport'(007),
            75 'Arri Airport'(008),
            90 'Dept Country'(009),
            105 'Arri Country'(010).
            ULINE.
        ENDAT.
        WRITE:
          /01  FS_SPFLI-CARRID,            " Carrier Id
           15  FS_SPFLI-CONNID,            " Connection Id
           30  FS_SPFLI-CITYFROM,          " Departur City
           45  FS_SPFLI-CITYTO,            " Arrival City
           60  FS_SPFLI-AIRPFROM,          " Departure Airport
           75  FS_SPFLI-AIRPTO,            " Arrival Airport
           90  FS_SPFLI-COUNTRYFR,         " Departure Country
           105 FS_SPFLI-COUNTRYTO.         " Arrival Country
      ENDLOOP.                             " LOOP AT T_SPFLI INTO FS_SPFLI
    ENDFORM.                               " DISPLAY_DETAILS
    *&      Form  DISPLY_FIELDS                                            *
    This Subroutine displays All Fields names in displayed list          *
    There are no interface parameters to be passed to this subroutine.   *
    FORM DISPLY_FIELDS.
      SET PF-STATUS  'WINDOW'.
      WINDOW STARTING AT 3 10
             ENDING   AT 15 60.
      WRITE:
        /1  W_BOX AS CHECKBOX,
          5 'CARRID',
        /1 W_BOX AS CHECKBOX,
          5 'CONNID',
        /1 W_BOX AS CHECKBOX,
          5 'CITYFROM',
        /1 W_BOX AS CHECKBOX,
          5'CITYTO',
        /1 W_BOX AS CHECKBOX,
          5 'AIRPFROM',
        /1  W_BOX AS CHECKBOX,
          5 'AIRPTO',
        /1 W_BOX AS CHECKBOX,
          5 'COUNTRYFR',
        /1 W_BOX AS CHECKBOX,
          5 'COUNTRYTO'.
    ENDFORM.                               " DISPLY_FIELDS
    *&      Form  SORT_ASC_FIELD                                           *
      This subroutine sorts the list by selected fields in ascending     *
       order                                                             *
    There are no interface parameters to be passed to this subroutine   *
    FORM SORT_ASC_FIELD .
      DATA:
        LW_CHECK TYPE C,                   " Check Box
        LW_FIELD(255) TYPE C,              " Field
        LW_F_VALUE(10) TYPE C,             " Field Value
        LW_FIELD1(10) TYPE C,              " Field Value
        LW_FIELD2(10) TYPE C,              " Field Value
        LW_FIELD3(10) TYPE C,              " Field Value
        LW_FIELD4(10) TYPE C,              " Field Value
        LW_FIELD5(10) TYPE C,              " Field Value
        LW_FIELD6(10) TYPE C,              " Field Value
        LW_FIELD7(10) TYPE C,              " Field Value
        LW_FIELD8(10) TYPE C.              " Field Value
      DO 8 TIMES.
        READ LINE SY-INDEX.
        LW_CHECK = SY-LISEL+0(1).
        LW_F_VALUE = SY-LISEL+4(10).
        IF LW_CHECK = 'X'.
          CASE SY-INDEX.
            WHEN 1.
              LW_FIELD1 = LW_F_VALUE.
            WHEN 2.
              LW_FIELD2 = LW_F_VALUE.
            WHEN 3.
              LW_FIELD3 = LW_F_VALUE.
            WHEN 4.
              LW_FIELD4 = LW_F_VALUE.
            WHEN 5.
              LW_FIELD5 = LW_F_VALUE.
            WHEN 6.
              LW_FIELD6 = LW_F_VALUE.
            WHEN 7.
              LW_FIELD7 = LW_F_VALUE.
            WHEN 8.
              LW_FIELD8 = LW_F_VALUE.
          ENDCASE.
        ENDIF.
      ENDDO.
      SORT T_SPFLI STABLE BY
        (LW_FIELD1)  ASCENDING
        (LW_FIELD2)  ASCENDING
        (LW_FIELD3)  ASCENDING
        (LW_FIELD4)  ASCENDING
        (LW_FIELD5)  ASCENDING
        (LW_FIELD6)  ASCENDING
        (LW_FIELD7)  ASCENDING
        (LW_FIELD8)  ASCENDING.
      PERFORM DISPLAY_DETAILS.
    ENDFORM.                               " SORT_ASC_FIELD
    *&      Form  SORT_DES_FIELD
      This subroutine sorts the list by selected fields in descending    *
       order                                                             *
    There are no interface parameters to be passed to this subroutine   *
    FORM SORT_DES_FIELD .
      DATA:
      LW_CHECK TYPE C,
      LW_FIELD(255) TYPE C,
      LW_F_VALUE(10) TYPE C,
      LW_FIELD1(10) TYPE C,LW_FIELD2(10)
        TYPE C,
      LW_FIELD3(10) TYPE C,LW_FIELD4(10)
        TYPE C,
      LW_FIELD5(10) TYPE C,LW_FIELD6(10)
        TYPE C,
      LW_FIELD7(10) TYPE C,LW_FIELD8(10)
        TYPE C.
      DO 8 TIMES.
        READ LINE SY-INDEX.
        LW_CHECK = SY-LISEL+0(1).
        LW_F_VALUE = SY-LISEL+4(10).
        IF LW_CHECK = 'X'.
          CASE SY-INDEX.
            WHEN 1.
              LW_FIELD1 = LW_F_VALUE.
            WHEN 2.
              LW_FIELD2 = LW_F_VALUE.
            WHEN 3.
              LW_FIELD3 = LW_F_VALUE.
            WHEN 4.
              LW_FIELD4 = LW_F_VALUE.
            WHEN 5.
              LW_FIELD5 = LW_F_VALUE.
            WHEN 6.
              LW_FIELD6 = LW_F_VALUE.
            WHEN 7.
              LW_FIELD7 = LW_F_VALUE.
            WHEN 8.
              LW_FIELD8 = LW_F_VALUE.
          ENDCASE.                         " CASE sy-index.
        ENDIF.                             " IF lw_check = 'X'.
      ENDDO.                               " DO 8 TIMES.
      SORT T_SPFLI STABLE BY
        (LW_FIELD1)  DESCENDING
        (LW_FIELD2)  DESCENDING
        (LW_FIELD3)  DESCENDING
        (LW_FIELD4)  DESCENDING
        (LW_FIELD5)  DESCENDING
        (LW_FIELD6)  DESCENDING
        (LW_FIELD7)  DESCENDING
        (LW_FIELD8)  DESCENDING.
      PERFORM DISPLAY_DETAILS.
    ENDFORM.                               " SORT_DES_FIELD
    Regards,
    Rama chary.Pammi

  • *what are the step by step events trigger in interactive report*

    Hi gurus,
    pls explain event by event triggers in interactive report.
    points will be rewarded.
    Thanks,
    Balakrishna.

    Hi,
    Interactive reporting allows the user to participate in retrieving and presenting data at each level during the session.  Instead of presenting one extensive and detailed list with cluttered information, with interactive reporting you can create a condensed basic list from which the user can call detailed information by positioning the cursor and entering commands.
    Detailed information is presented in secondary lists. A secondary list may either overlay the basic list completely or appear in an additional dialog window on the same screen.  The secondary list can itself be interactive again. The basic list is not deleted when secondary list is created.
    User can interact with the system by:
    u2022     Double clicking or pressing F2
    u2022     Selecting menu option
    Like classical report, the interactive report is also event driven. Both the action mentioned above trigger events and code is written to handle these events.  The events triggered by this action are as follows:
    u2022     At line-selection
    u2022     At user-command
    u2022     Top-of-Page During Line-Selection for Secondary Page Header info
    Interactive report consists of one BASIC list and 20 secondary list. Basic list is produced by START-OF-SELECTION event. When the user double clicks on the basic list or chooses the menu option, the secondary list is produced. All the events associated with classical report except end-of-page are applicable only to basic list.
    AT LINE-SELECTION event
    Double clicking is the way most users navigate through programs. Double clicking on basic list or any secondary list triggers the event AT LINE-SELECTION. SY-LSIND denotes the index of the list currently created. For BASIC list it is always 0.  Following piece of code shows how to handle the event.
    Start-of-selection.
    Write: / u2018this is basic listu2019.
    At line-selection.
    Write : u2018this is first secondary listu2019.
    In this case the output will be displayed on basic list i.e.
    This is basic list.
    When user double clicks on this line, the event at line-selection gets triggered and secondary list is produced, i.e. This is first secondary list.
    You can go back to basic list by clicking on F3 or back icon on the standard tool bar.  For this list, the value of sy-lsind will be 1.
    HIDE technique
    In this case thins are much simpler. Consider the case, wherein you display fields from table sflight in basic list. When user double clicks on any sflight-carrid, you are displaying the detailed information related to that particular carrid on secondary list.  Hence there is a need to store the clicked carrid in some variable.  So that you can access this carrid for next list. ABAP/4 has facility; a statement called HIDE, which provides the above functionality.
    HIDE command temporarily stores the content of clicked field in system area.
    Syntax:
    HIDE <FIELDS>.
    This statement stores the contents of variable <f> in relation to the current output line (system field SY-LINNO) internally in the so-called HIDE area. The variable <f> must not necessarily appear on the current line.
    You have to place the HIDE statement always directly after the output statement i.e., WRITE for the variable <f>.  As when you hide the variable, control is passed to next record.  While writing, WRITE statement takes that record from header and writes it on to the list, but when writing onto your interactive list you will miss out 1st record.
    To hide several variables, use chain HIDE statement.
    As soon as the user selects a line for which you stored HIDE fields, the system fills the variables in the program with the values stored.  A line can be selected.
    u2022     By an interactive event.
    For each interactive event, the HIDE fields of the line on which the cursor is positioned during the event are filled with the stored values.
    The HIDE area is a table, in which the system stores the names and values of all HIDE fields for each list and line number.  As soon as they are needed, the system reads the values from the table.  (Please try to find the name of this table.)
    Sy-lsind indicates the index of the list and can be used to handle all the secondary lists.  When the user double clicks on the line or presses F2, sy-lsind is increased by one and this new sy-lsind can be handled.  For example:
    Write: / u2018this is basic listu2019.
    u2022     Will create a basic list.
    If sy-lsind = 1.
    Write: / u2018this is first secondary listu2019.
    Elseif sy-lsind = 2.
    Write: / u2018This is second secondary listu2019.
    Endif.
    When this code is executed,
    u2022     Basic list is produced.
    u2022     When the user clicks on the basic list, sy-lsind becomes one.
    u2022     AT LINE-SELECTION event is triggered.
    u2022     Whatever is written under IF Sy-lsind = 1, gets executed.
    u2022     Secondary list is produced.
    u2022     Again if user clicks on this list, sy-lsind becomes two.
    u2022     AT LINE-SELECTION gets triggered.
    u2022     Code written under IF Sy-lsind = 2, gets executed.
    A sample program for AT LINE-SELECTION.
    AT USER-COMMAND
    When the user selects the menu item or presses any function key, the event that is triggered is AT USER-COMMAND, and can be handled in the program by writing code for the same. The system variable SY-UCOMM stores the function code for the clicked menu item or for the function key and the same can be checked in the program.  Sample code would look like
    AT USER-COMMAND.
    Case sy-ucomm.
    When u2018DISPu2019.
            Select * from sflight.
            Write sflight-carrid, sflight-connid.
            Endselect.
    When u2018EXITu2019.
         LEAVE.
    If GUI status, suppose you have set menu bar for two items and the function code is u2018DISPu2019 and u2018EXITu2019 respectively. If the user clicks the menu item u2018DISPLAYu2019, then function code u2018DISPu2019 is stored in the sy-ucomm and whatever is written under the when u2018DISPu2019, gets executed. This is applicable for EXIT as well.
    Sy-lsind for the screen increases when the user clicks the menu item.
    Usually you have combination of all the three navigations in your user interface, i.e., you have to create menu bar, assign function code for the function keys and write code to handle all this in addition to handling double clicking.
    Things to remember while using all the combinations:
    u2022     Sy-lsind increases even if you select menu-item.
    u2022     When the user double clicks on particular line, value of sy-ucomm is u2018PICK.
    u2022     If you set sy-lsind = 2 for your 4th secondary list, when control is transferred to the 2nd secondary list, all the other lists after 2nd are lost or memory allocated to them is lost.
    u2022     Sy-lisel also gives you the value of clicked line but in this case you cannot differentiate between field. To retrieve the exact field, you have to know the field length of each field.
    u2022     If you use statement SY-LSIND = 1.
    The system reacts to a manipulation of SY-LSIND only at the end of an event, directly before displaying the secondary list. So, if within the processing block, you use statements whose INDEX options access the list with the index SY-LSIND, make sure that you manipulate the SY-LSIND field only after processing these statements. The best way is to have it always at the `as the last statementu2019 of the processing block.
    Regards,
    Bhaskar

  • Interactive report column filters to display differently than column values

    Greetings...
    We use images a lot in our interactive reports to provide a visual representation to a status, or something locked for update, or what-have-you. By default, when a user clicks the column heading of a column which contains images, the drop-down list that shows up displays the actual images, which is nice for the user to identify exactly which thing they want to filter on. The problem is when the user selects on of the options in the filtering drop-down, the resulting condition that is displayed under the interactive report search bar is the HTML code of the image. I'd like something else to display there because showing the user the HTML code is atrocious.
    I didn't think what I want is possible, but then I came across the Page Locks page within ApEx (page 4000:291 in ApEx 4.0.1) which displays a list of all the pages of an application and whether they are locked or not. It also allows you to bulk lock or bulk unlock a bunch of pages. That page uses an interactive report with a column called "Status" which contains images that represent whether the page is locked or not. When you click the "Status" column heading to filter, instead of seeing the images of an open and closed lock, you see the words "Page Locked" and "Page Unlocked." And even better... when you select on of them, the condition that is displayed to the user is very user-friendly.
    Can someone tell me how this is done so I can replicate it in my own apps?
    Shane.

    Why not create the IR using the text you require e.g. 'Lock', 'Unlock' and then use JQuery to replace the text in the report with the image you want. All the filters should then show the plain text and the report will display the image. e.g.
    http://apex.oracle.com/pls/apex/f?p=46801:1
    Here's what I did:
    Firstly make sure the IR has a region template.
    Then create a Dynamic Action with the following attributes:
    1. Advanced
    2. Event: After Refresh
    3. Selection Type: Region
    4. Region: [select the IR Region]
    5. Action: Execute JS Code
    6. Fire on page load: [checked]
    7. Code:
    $('td [headers="TEST"]').each(function(index) {
      if ($(this).text() == 'Lock') {
        $(this).empty().html('<img src="/i/htmldb/icons/locked_small.gif" alt="Lock" />');
      else {
        $(this).empty().html('<img src="/i/htmldb/icons/unlocked_small.gif" alt="Unlock" />');
    });Where TEST is the column name.
    That's it, this may also be of interest:
    http://simonhunt.blogspot.com/2011/10/adjusting-interactive-report-column.html
    I hope it helps
    Shunt

  • Error while scheduling a Hyperion Interactive Report

    Hi,
    I'm trying to run a scheduled Hyperion Interactive Report (version 9.3.1). The report is scheduled to run for 1st of every month. After the report is scheduled. When a user tries to run the report on demand.
    The error log states as follows:
    $ view server_messages_IRJobService.log
    "server_messages_IRJobService.log" [Read only] 38 lines, 2688 characters
    <event logger="com.brio.one.services.bqservice.SERVICE" method="ThrID(7) Logger(ZDbgPrint)" timestamp="1247269603142" level="ERROR" thread="[ORB=_it_orb_id_1,Pool=1]::id-6" sequence_no="74">^M
    <time>10 Jul 2009 16:46:43,142</time>^M
    <context subject="TIPAdmin" session_id="zRMz99t6-00000122670ef701-0000-8197-0a3f0708" originator_type="IRJobService" originator_name="InteractiveReportingService" host="tsbrit02">^M
    <info type="RESOURCE">IBQServiceImpl::runJob Job Identifier: TIPPFSMRPT Service Name: JF1_tsbrit02 Cycle Name: Cycle_0</info>^M
    <info type="RESOURCE_ID">000001225ef102a5-0000-8197-0a3f0708</info>^M
    </context>^M
    <message><![CDATA[TCApp::ExecuteJavaScript failed: ]]></message>^M
    </event>^M
    ^M
    But when the report is uploaded and when the user tries running it. It runs without any problem.
    The report has 3 filters(drop downs) on runtime.
    Could anyone please help me in this regard.
    Regards,
    Sadiq

    check your discoverer user role using:
    select granted_role from dba_role_privs where grantee=upper('<username>');
    from your database. the database to which the desktop is connecting.
    check for connect, resouce, multiorg roles.

  • I Need Interactive Report for displaying vendor information. Based on the s

    Interactive Report for displaying vendor information. Based on the selection made by the corresponding Vendor Bank Details are listed such that the line selected in the basic list was visible along with the secondary list.

    hi
    Hi
    Use the Table LFA1 and LFB1 in the basic list
    and LFBK table details in the secondary list
    see the sample code related to customer Sales orders
    modify it with the Vendor tables
    REPORT ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE
    HEADING.
    *TABLES DECLARATION
    TABLES : KNA1, VBAK, VBAP.
    *SELECT OPTIONS
    SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
    *INITIALIZATION
    INITIALIZATION.
    CUST_NO-LOW = '01'.
    CUST_NO-HIGH = '5000'.
    CUST_NO-SIGN = 'I'.
    CUST_NO-OPTION = 'BT'.
    APPEND CUST_NO.
    *SELECTION SCREEN VALIDATION
    AT SELECTION-SCREEN ON CUST_NO.
    LOOP AT SCREEN.
    IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000.
    MESSAGE E001(ZTJ1).
    ENDIF.
    ENDLOOP.
    *BASIC LIST SELECTION
    START-OF-SELECTION.
    SELECT KUNNR NAME1 ORT01 LAND1 INTO
    (KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
    FROM KNA1
    WHERE KUNNR IN CUST_NO.
    WRITE:/1 SY-VLINE,
    KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
    16 SY-VLINE,
    KNA1-NAME1 UNDER 'NAME',
    61 SY-VLINE,
    KNA1-ORT01 UNDER 'CITY',
    86 SY-VLINE,
    KNA1-LAND1 UNDER 'COUNTRY',
    103 SY-VLINE.
    HIDE: KNA1-KUNNR.
    ENDSELECT.
    ULINE.
    *SECONDARY LIST ACCESS
    AT user-command.
    IF SY-UCOMM = 'IONE'.
    PERFORM SALES_ORD.
    ENDIF.
    IF SY-UCOMM = 'ITWO'.
    PERFORM ITEM_DET.
    ENDIF.
    *TOP OF PAGE
    TOP-OF-PAGE.
    FORMAT COLOR 1.
    WRITE : 'CUSTOMER DETAILS'.
    FORMAT COLOR 1 OFF.
    ULINE.
    FORMAT COLOR 3.
    WRITE : 1 SY-VLINE,
    3 'CUSTOMER NO.',
    16 SY-VLINE,
    18 'NAME',
    61 SY-VLINE,
    63 'CITY',
    86 SY-VLINE,
    88 'COUNTRY',
    103 SY-VLINE.
    ULINE.
    FORMAT COLOR 3 OFF.
    *TOP OF PAGE FOR SECONDARY LISTS
    TOP-OF-PAGE DURING LINE-SELECTION.
    *TOP OF PAGE FOR 1ST SECONDARY LIST
    IF SY-UCOMM = 'IONE'.
    ULINE.
    FORMAT COLOR 1.
    WRITE : 'SALES ORDER DETAILS'.
    ULINE.
    FORMAT COLOR 1 OFF.
    FORMAT COLOR 3.
    WRITE : 1 SY-VLINE,
    3 'CUSTOMER NO.',
    16 SY-VLINE,
    18 'SALES ORDER NO.',
    40 SY-VLINE,
    42 'DATE',
    60 SY-VLINE,
    62 'CREATOR',
    85 SY-VLINE,
    87 'DOC DATE',
    103 SY-VLINE.
    ULINE.
    ENDIF.
    FORMAT COLOR 3 OFF.
    *TOP OF PAGE FOR 2ND SECONDARY LIST
    IF SY-UCOMM = 'ITWO'.
    ULINE.
    FORMAT COLOR 1.
    WRITE : 'ITEM DETAILS'.
    ULINE.
    FORMAT COLOR 1 OFF.
    FORMAT COLOR 3.
    WRITE : 1 SY-VLINE,
    3 'SALES ORDER NO.',
    40 SY-VLINE,
    42 'SALES ITEM NO.',
    60 SY-VLINE,
    62 'ORDER QUANTITY',
    103 SY-VLINE.
    ULINE.
    ENDIF.
    FORMAT COLOR 3 OFF.
    *END OF PAGE
    END-OF-PAGE.
    ULINE.
    WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
    SY-PAGNO.
    SKIP.
    *& Form SALES_ORD
    *& FIRST SECONDARY LIST FORM
    FORM SALES_ORD .
    SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
    (VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
    FROM VBAK
    WHERE KUNNR = KNA1-KUNNR.
    WRITE:/1 SY-VLINE,
    VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
    16 SY-VLINE,
    VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
    40 SY-VLINE,
    VBAK-ERDAT UNDER 'DATE',
    60 SY-VLINE,
    VBAK-ERNAM UNDER 'CREATOR',
    85 SY-VLINE,
    VBAK-AUDAT UNDER 'DOC DATE',
    103 SY-VLINE.
    HIDE : VBAK-VBELN.
    ENDSELECT.
    ULINE.
    ENDFORM. " SALES_ORD
    *& Form ITEM_DET
    *& SECOND SECONDARY LIST FORM
    FORM ITEM_DET .
    SELECT VBELN POSNR KWMENG INTO
    (VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
    FROM VBAP
    WHERE VBELN = VBAK-VBELN.
    WRITE : /1 SY-VLINE,
    VBAP-VBELN UNDER 'SALES ORDER NO.',
    40 SY-VLINE,
    VBAP-POSNR UNDER 'SALES ITEM NO.',
    60 SY-VLINE,
    VBAP-KWMENG UNDER 'ORDER QUANTITY',
    103 SY-VLINE.
    ENDSELECT.
    ULINE.
    ENDFORM. " ITEM_DET
    REPORT demo_list_at_pf.
    START-OF-SELECTION.
    WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.
    AT pf5.
    PERFORM out.
    AT pf6.
    PERFORM out.
    AT pf7.
    PERFORM out.
    AT pf8.
    PERFORM out.
    FORM out.
    WRITE: 'Secondary List by PF-Key Selection',
    / 'SY-LSIND =', sy-lsind,
    / 'SY-UCOMM =', sy-ucomm.
    ENDFORM.
    After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:
    Secondary List by PF-Key Selection
    SY-LSIND = 14
    SY-UCOMM = PF06
    Example for AT USER-COMMAND.
    REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.
    START-OF-SELECTION.
    WRITE: 'Basic List',
    / 'SY-LSIND:', sy-lsind.
    TOP-OF-PAGE.
    WRITE 'Top-of-Page'.
    ULINE.
    TOP-OF-PAGE DURING LINE-SELECTION.
    CASE sy-pfkey.
    WHEN 'TEST'.
    WRITE 'Self-defined GUI for Function Codes'.
    ULINE.
    ENDCASE.
    AT LINE-SELECTION.
    SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
    PERFORM out.
    sy-lsind = sy-lsind - 1.
    AT USER-COMMAND.
    CASE sy-ucomm.
    WHEN 'FC1'.
    PERFORM out.
    WRITE / 'Button FUN 1 was pressed'.
    WHEN 'FC2'.
    PERFORM out.
    WRITE / 'Button FUN 2 was pressed'.
    WHEN 'FC3'.
    PERFORM out.
    WRITE / 'Button FUN 3 was pressed'.
    WHEN 'FC4'.
    PERFORM out.
    WRITE / 'Button FUN 4 was pressed'.
    WHEN 'FC5'.
    PERFORM out.
    WRITE / 'Button FUN 5 was pressed'.
    ENDCASE.
    sy-lsind = sy-lsind - 1.
    FORM out.
    WRITE: 'Secondary List',
    / 'SY-LSIND:', sy-lsind,
    / 'SY-PFKEY:', sy-pfkey.
    ENDFORM.
    <b>Vendor performance report</b>
    See this sample code
    *"Table declarations...................................................
    TABLES:
    EKKO, " Purchasing Document Header
    CDHDR, " Change document header
    SSCRFIELDS. " Fields on selection screens
    *"Selection screen elements............................................
    SELECT-OPTIONS:
    S_EBELN FOR EKKO-EBELN, " Purchasing Document Number
    S_LIFNR FOR EKKO-LIFNR, " Vendor's account number
    S_EKGRP FOR EKKO-EKGRP, " Purchasing group
    S_BEDAT FOR EKKO-BEDAT, " Purchasing Document Date
    S_UDATE FOR CDHDR-UDATE. " Creation date of the change
    " document
    *" Data declarations...................................................
    Field String to hold Purchase Document Number *
    DATA:
    BEGIN OF FS_EBELN,
    EBELN(90) TYPE C, " Purchase Document Number
    ERNAM TYPE EKKO-ERNAM, " Name of Person who Created
    " the Object
    LIFNR TYPE EKKO-LIFNR, " Vendor's account number
    EKGRP TYPE EKKO-EKGRP, " Purchasing group
    BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
    END OF FS_EBELN,
    Field String to hold Purchase Document Header *
    BEGIN OF FS_EKKO,
    EBELN TYPE EKKO-EBELN, " Purchasing Document Number
    ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the
    " Object
    LIFNR TYPE EKKO-LIFNR, " Vendor's account number
    EKGRP TYPE EKKO-EKGRP, " Purchasing group
    BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
    END OF FS_EKKO,
    Field String to hold Account Number and name of the Vendor *
    BEGIN OF FS_LFA1,
    LIFNR TYPE LFA1-LIFNR, " Account Number of Vendor
    NAME1 TYPE LFA1-NAME1, " Name1
    END OF FS_LFA1,
    Field String to hold Change date and the name of the user *
    BEGIN OF FS_CDHDR,
    OBJECTCLAS TYPE CDHDR-OBJECTCLAS, " Object Class
    OBJECTID TYPE CDHDR-OBJECTID, " Object value
    CHANGENR TYPE CDHDR-CHANGENR, " Document change number
    USERNAME TYPE CDHDR-USERNAME, " User name
    UDATE TYPE CDHDR-UDATE, " Creation date of the change
    " document
    END OF FS_CDHDR,
    Field String to hold Change document items *
    BEGIN OF FS_CDPOS,
    OBJECTCLAS TYPE CDPOS-OBJECTCLAS," Object class
    OBJECTID(10) TYPE C, " Object Value
    CHANGENR TYPE CDPOS-CHANGENR, " Document change number
    TABNAME TYPE CDPOS-TABNAME, " Table Name
    FNAME TYPE CDPOS-FNAME, " Field Name
    VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field
    VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field
    END OF FS_CDPOS,
    Field String to hold Date Element Name *
    BEGIN OF FS_DATAELE,
    TABNAME TYPE DD03L-TABNAME, " Table Name
    FIELDNAME TYPE DD03L-FIELDNAME, " Field Name
    ROLLNAME TYPE DD03L-ROLLNAME, " Data element (semantic domain)
    END OF FS_DATAELE,
    Field String to hold Short Text of the Date Element *
    BEGIN OF FS_TEXT,
    ROLLNAME TYPE DD04T-ROLLNAME, " Data element (semantic domain)
    DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3
    " Repository Objects
    END OF FS_TEXT,
    Field String to hold data to be displayed on the ALV grid *
    BEGIN OF FS_OUTTAB,
    EBELN TYPE EKKO-EBELN, " Purchasing Document Number
    ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the
    " Object
    LIFNR TYPE EKKO-LIFNR, " Vendor's account number
    EKGRP TYPE EKKO-EKGRP, " Purchasing group
    BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
    WERKS TYPE LFA1-WERKS, " Plant
    NAME1 TYPE LFA1-NAME1, " Name1
    USERNAME TYPE CDHDR-USERNAME, " User name
    UDATE TYPE CDHDR-UDATE, " Creation date of the change
    " document
    DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3
    " Repository Objects
    VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field
    VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field
    END OF FS_OUTTAB,
    Internal table to hold Purchase Document Number *
    T_EBELN LIKE STANDARD TABLE
    OF FS_EBELN,
    Internal table to hold Purchase Document Header *
    T_EKKO LIKE STANDARD TABLE
    OF FS_EKKO,
    Temp Internal table to hold Purchase Document Header *
    T_EKKO_TEMP LIKE STANDARD TABLE
    OF FS_EKKO,
    Internal table to hold Account number and Name of the Vendor *
    T_LFA1 LIKE STANDARD TABLE
    OF FS_LFA1,
    Internal Table to hold Change date and the name of the user *
    T_CDHDR LIKE STANDARD TABLE
    OF FS_CDHDR,
    Internal Table to hold Change document items *
    T_CDPOS LIKE STANDARD TABLE
    OF FS_CDPOS,
    Temp. Internal Table to hold Change document items *
    T_CDPOS_TEMP LIKE STANDARD TABLE
    OF FS_CDPOS,
    Internal Table to hold Data Element Name *
    T_DATAELE LIKE STANDARD TABLE
    OF FS_DATAELE,
    Temp. Internal Table to hold Data Element Name *
    T_DATAELE_TEMP LIKE STANDARD TABLE
    OF FS_DATAELE,
    Internal Table to hold Short Text of the Date Element *
    T_TEXT LIKE STANDARD TABLE
    OF FS_TEXT,
    Internal Table to hold data to be displayed on the ALV grid *
    T_OUTTAB LIKE STANDARD TABLE
    OF FS_OUTTAB.
    C L A S S D E F I N I T I O N *
    CLASS LCL_EVENT_HANDLER DEFINITION DEFERRED.
    *" Data declarations...................................................
    Work variables *
    DATA:
    W_EBELN TYPE EKKO-EBELN, " Purchasing Document Number
    W_LIFNR TYPE EKKO-LIFNR, " Vendor's account number
    W_EKGRP TYPE EKKO-EKGRP, " Purchasing group
    W_VALUE TYPE EKKO-EBELN, " Reflected Value
    W_SPACE VALUE ' ', " Space
    W_FLAG TYPE I, " Flag Variable
    W_VARIANT TYPE DISVARIANT, " Variant
    *--- ALV Grid
    W_GRID TYPE REF TO CL_GUI_ALV_GRID,
    *--- Event Handler
    W_EVENT_CLICK TYPE REF TO LCL_EVENT_HANDLER,
    *--- Field catalog table
    T_FIELDCAT TYPE LVC_T_FCAT.
    AT SELECTION-SCREEN EVENT *
    AT SELECTION-SCREEN ON S_EBELN.
    Subroutine to validate Purchase Document Number.
    PERFORM VALIDATE_PD_NUM.
    AT SELECTION-SCREEN ON S_LIFNR.
    Subroutine to validate Vendor Number.
    PERFORM VALIDATE_VEN_NUM.
    AT SELECTION-SCREEN ON S_EKGRP.
    Subroutine to validate Purchase Group.
    PERFORM VALIDATE_PUR_GRP.
    START-OF-SELECTION EVENT *
    START-OF-SELECTION.
    Subroutine to select all Purchase orders.
    PERFORM SELECT_PO.
    CHECK W_FLAG EQ 0.
    Subroutine to select Object values.
    PERFORM SELECT_OBJ_ID.
    CHECK W_FLAG EQ 0.
    Subroutine to select Changed values.
    PERFORM SELECT_CHANGED_VALUE.
    CHECK W_FLAG EQ 0.
    Subroutine to Select Purchase Orders.
    PERFORM SELECT_PUR_DOC.
    Subroutine to select Vendor Details.
    PERFORM SELECT_VENDOR.
    Subroutine to select Text for the Changed values.
    PERFORM DESCRIPTION.
    END-OF-SELECTION EVENT *
    END-OF-SELECTION.
    IF NOT T_EKKO IS INITIAL.
    Subroutine to populate the Output Table.
    PERFORM FILL_OUTTAB.
    Subroutine to build Field Catalog.
    PERFORM PREPARE_FIELD_CATALOG CHANGING T_FIELDCAT.
    CALL SCREEN 100.
    ENDIF. " IF NOT T_EKKO...
    CLASS LCL_EVENT_HANDLER DEFINITION
    Defining Class which handles events
    CLASS LCL_EVENT_HANDLER DEFINITION .
    PUBLIC SECTION .
    METHODS:
    HANDLE_HOTSPOT_CLICK
    FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
    IMPORTING E_ROW_ID E_COLUMN_ID.
    ENDCLASS. " LCL_EVENT_HANDLER DEFINITION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION
    Implementing the Class which can handle events
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION .
    *---Handle Double Click
    METHOD HANDLE_HOTSPOT_CLICK .
    Subroutine to get the HotSpot Cell information.
    PERFORM GET_CELL_INFO.
    SET PARAMETER ID 'BES' FIELD W_VALUE.
    CALL TRANSACTION 'ME23N'.
    ENDMETHOD. " HANDLE_HOTSPOT_CLICK
    ENDCLASS. " LCL_EVENT_HANDLER
    *& Module STATUS_0100 OUTPUT
    PBO Event
    MODULE STATUS_0100 OUTPUT.
    SET PF-STATUS 'OOPS'.
    SET TITLEBAR 'TIT'.
    Subroutine to fill the Variant Structure
    PERFORM FILL_VARIANT.
    IF W_GRID IS INITIAL.
    CREATE OBJECT W_GRID
    EXPORTING
    I_SHELLSTYLE = 0
    I_LIFETIME =
    I_PARENT = CL_GUI_CONTAINER=>SCREEN0
    I_APPL_EVENTS =
    I_PARENTDBG =
    I_APPLOGPARENT =
    I_GRAPHICSPARENT =
    I_NAME =
    I_FCAT_COMPLETE = SPACE
    EXCEPTIONS
    ERROR_CNTL_CREATE = 1
    ERROR_CNTL_INIT = 2
    ERROR_CNTL_LINK = 3
    ERROR_DP_CREATE = 4
    OTHERS = 5.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF. " IF SY-SUBRC <> 0
    CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    I_BUFFER_ACTIVE =
    I_BYPASSING_BUFFER =
    I_CONSISTENCY_CHECK =
    I_STRUCTURE_NAME =
    IS_VARIANT = W_VARIANT
    I_SAVE = 'A'
    I_DEFAULT = 'X'
    IS_LAYOUT =
    IS_PRINT =
    IT_SPECIAL_GROUPS =
    IT_TOOLBAR_EXCLUDING =
    IT_HYPERLINK =
    IT_ALV_GRAPHICS =
    IT_EXCEPT_QINFO =
    IR_SALV_ADAPTER =
    CHANGING
    IT_OUTTAB = T_OUTTAB
    IT_FIELDCATALOG = T_FIELDCAT
    IT_SORT =
    IT_FILTER =
    EXCEPTIONS
    INVALID_PARAMETER_COMBINATION = 1
    PROGRAM_ERROR = 2
    TOO_MANY_LINES = 3
    OTHERS = 4
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF. " IF SY-SUBRC <> 0.
    ENDIF. " IF W_GRID IS INITIAL
    CREATE OBJECT W_EVENT_CLICK.
    SET HANDLER W_EVENT_CLICK->HANDLE_HOTSPOT_CLICK FOR W_GRID.
    ENDMODULE. " STATUS_0100 OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    PAI Event
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
    LEAVE PROGRAM.
    WHEN 'CANCEL'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    *& Form PREPARE_FIELD_CATALOG
    Subroutine to build the Field catalog
    <--P_T_FIELDCAT Field Catalog Table
    FORM PREPARE_FIELD_CATALOG CHANGING PT_FIELDCAT TYPE LVC_T_FCAT .
    DATA LS_FCAT TYPE LVC_S_FCAT.
    Purchasing group...
    LS_FCAT-FIELDNAME = 'EKGRP'.
    LS_FCAT-REF_TABLE = 'EKKO'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Purchasing Document Number...
    LS_FCAT-FIELDNAME = 'EBELN'.
    LS_FCAT-REF_TABLE = 'EKKO' .
    LS_FCAT-EMPHASIZE = 'C411'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    LS_FCAT-HOTSPOT = 'X'.
    APPEND LS_FCAT TO PT_FIELDCAT .
    CLEAR LS_FCAT .
    Name of Person who Created the Object...
    LS_FCAT-FIELDNAME = 'ERNAM'.
    LS_FCAT-REF_TABLE = 'EKKO'.
    LS_FCAT-OUTPUTLEN = '15' .
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Purchasing Document Date...
    LS_FCAT-FIELDNAME = 'BEDAT'.
    LS_FCAT-REF_TABLE = 'EKKO'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Vendor's account number...
    LS_FCAT-FIELDNAME = 'LIFNR'.
    LS_FCAT-REF_TABLE = 'EKKO'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Account Number of Vendor or Creditor...
    LS_FCAT-FIELDNAME = 'NAME1'.
    LS_FCAT-REF_TABLE = 'LFA1'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    LS_FCAT-COLTEXT = 'Vendor Name'(001).
    LS_FCAT-SELTEXT = 'Vendor Name'(001).
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Creation date of the change document...
    LS_FCAT-FIELDNAME = 'UDATE'.
    LS_FCAT-REF_TABLE = 'CDHDR'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    LS_FCAT-COLTEXT = 'Change Date'(002).
    LS_FCAT-SELTEXT = 'Change Date'(002).
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    User name of the person responsible in change document...
    LS_FCAT-FIELDNAME = 'USERNAME'.
    LS_FCAT-REF_TABLE = 'CDHDR'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '10'.
    LS_FCAT-COLTEXT = 'Modified by'(003).
    LS_FCAT-SELTEXT = 'Modified by'(003).
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Short Text Describing R/3 Repository Objects...
    LS_FCAT-FIELDNAME = 'DDTEXT'.
    LS_FCAT-REF_TABLE = 'DD04T'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '15'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    Old contents of changed field...
    LS_FCAT-FIELDNAME = 'VALUE_OLD'.
    LS_FCAT-REF_TABLE = 'CDPOS'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '12'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    New contents of changed field...
    LS_FCAT-FIELDNAME = 'VALUE_NEW'.
    LS_FCAT-REF_TABLE = 'CDPOS'.
    LS_FCAT-INTTYPE = 'C'.
    LS_FCAT-OUTPUTLEN = '12'.
    APPEND LS_FCAT TO PT_FIELDCAT.
    CLEAR LS_FCAT.
    ENDFORM. " PREPARE_FIELD_CATALOG
    *& Form SELECT_PO
    Subroutine to select all the Purchase Orders
    There are no interface parameters to be passed to this subroutine.
    FORM SELECT_PO .
    SELECT EBELN " Purchasing Document Number
    ERNAM " Name of Person who Created
    " the Object
    LIFNR " Vendor's account number
    EKGRP " Purchasing group
    BEDAT " Purchasing Document Date
    FROM EKKO
    PACKAGE SIZE 10000
    APPENDING TABLE T_EBELN
    WHERE EBELN IN S_EBELN
    AND BEDAT IN S_BEDAT.
    ENDSELECT.
    IF SY-SUBRC NE 0.
    W_FLAG = 1.
    MESSAGE S401(M8).
    ENDIF. " IF SY-SUBRC NE 0
    ENDFORM. " SELECT_PO
    *& Form SELECT_OBJ_ID
    Subroutine to select Object ID
    There are no interface parameters to be passed to this subroutine.
    FORM SELECT_OBJ_ID .
    IF NOT T_EBELN IS INITIAL.
    SELECT OBJECTCLAS " Object Class
    OBJECTID " Object value
    CHANGENR " Document change number
    USERNAME " User name
    UDATE " Creation date
    FROM CDHDR
    INTO TABLE T_CDHDR
    FOR ALL ENTRIES IN T_EBELN
    WHERE OBJECTID EQ T_EBELN-EBELN
    AND UDATE IN S_UDATE
    AND TCODE IN ('ME21N','ME22N','ME23N').
    ENDSELECT.
    IF SY-SUBRC NE 0.
    W_FLAG = 1.
    MESSAGE S833(M8) WITH 'Header Not Found'(031).
    ENDIF. " IF SY-SUBRC NE 0.
    ENDIF. " IF NOT T_EBELN IS INITIAL
    ENDFORM. " SELECT_OBJ_ID
    *& Form SELECT_CHANGED_VALUE
    Subroutine to select Changed Values
    There are no interface parameters to be passed to this subroutine.
    FORM SELECT_CHANGED_VALUE .
    IF NOT T_CDHDR IS INITIAL.
    SELECT OBJECTCLAS " Object class
    OBJECTID " Object value
    CHANGENR " Document change number
    TABNAME " Table Name
    FNAME " Field Name
    VALUE_NEW " New contents of changed field
    VALUE_OLD " Old contents of changed field
    FROM CDPOS
    PACKAGE SIZE 10000
    APPENDING TABLE T_CDPOS
    FOR ALL ENTRIES IN T_CDHDR
    WHERE OBJECTCLAS EQ T_CDHDR-OBJECTCLAS
    AND OBJECTID EQ T_CDHDR-OBJECTID
    AND CHANGENR EQ T_CDHDR-CHANGENR.
    ENDSELECT.
    IF SY-SUBRC NE 0.
    W_FLAG = 1.
    MESSAGE S833(M8) WITH 'Item Not Found'(032).
    ENDIF. " IF SY-SUBRC NE 0.
    ENDIF. " IF NOT T_CDHDR IS INITIAL
    T_CDPOS_TEMP[] = T_CDPOS[].
    ENDFORM. " SELECT_CHANGED_VALUE
    *& Form SELECT_PUR_DOC
    Subroutine to select Purchase Order Details
    There are no interface parameters to be passed to this subroutine.
    FORM SELECT_PUR_DOC .
    IF NOT T_CDPOS IS INITIAL.
    SORT T_EBELN BY EBELN.
    LOOP AT T_CDPOS INTO FS_CDPOS.
    READ TABLE T_EBELN INTO FS_EBELN WITH KEY EBELN =
    FS_CDPOS-OBJECTID BINARY SEARCH.
    IF SY-SUBRC NE 0.
    DELETE TABLE T_EBELN FROM FS_EBELN.
    ENDIF. " IF SY-SUBRC NE 0.
    ENDLOOP. " LOOP AT T_CDPOS...
    LOOP AT T_EBELN INTO FS_EBELN.
    MOVE FS_EBELN-EBELN TO FS_EKKO-EBELN.
    MOVE FS_EBELN-ERNAM TO FS_EKKO-ERNAM.
    MOVE FS_EBELN-LIFNR TO FS_EKKO-LIFNR.
    MOVE FS_EBELN-EKGRP TO FS_EKKO-EKGRP.
    MOVE FS_EBELN-BEDAT TO FS_EKKO-BEDAT.
    APPEND FS_EKKO TO T_EKKO.
    ENDLOOP. " LOOP AT T_EBELN...
    T_EKKO_TEMP[] = T_EKKO[].
    ENDIF. " IF NOT T_CDPOS IS INITIAL
    ENDFORM. " SELECT_PUR_DOC
    *& Form SELECT_VENDOR
    Subroutine to select Vendor details
    There are no interface parameters to be passed to this subroutine.
    FORM SELECT_VENDOR .
    IF NOT T_EKKO IS INITIAL.
    SORT T_EKKO_TEMP BY LIFNR.
    DELETE ADJACENT DUPLICATES FROM T_EKKO_TEMP COMPARING LIFNR.
    SELECT LIFNR " Account Number of Vendor or
    " Creditor
    NAME1 " Name 1
    FROM LFA1
    INTO TABLE T_LFA1
    FOR ALL ENTRIES IN T_EKKO_TEMP
    WHERE LIFNR EQ T_EKKO_TEMP-LIFNR.
    IF SY-SUBRC NE 0.
    MESSAGE S002(M8) WITH 'Master Details'(033).
    ENDIF. " IF SY-SUBRC NE 0.
    ENDIF. " IF NOT T_EKKO IS INITIAL
    ENDFORM. " SELECT_VENDOR
    *& Form DESCRIPTION
    Subroutine to get the description
    There are no interface parameters to be passed to this subroutine.
    FORM DESCRIPTION .
    IF NOT T_CDPOS IS INITIAL.
    SORT T_CDPOS_TEMP BY TABNAME FNAME.
    DELETE ADJACENT DUPLICATES FROM T_CDPOS_TEMP COMPARING TABNAME FNAME
    SELECT TABNAME " Table Name
    FIELDNAME " Field Name
    ROLLNAME " Data element
    FROM DD03L
    INTO TABLE T_DATAELE
    FOR ALL ENTRIES IN T_CDPOS_TEMP
    WHERE TABNAME EQ T_CDPOS_TEMP-TABNAME
    AND FIELDNAME EQ T_CDPOS_TEMP-FNAME.
    IF NOT T_DATAELE IS INITIAL.
    T_DATAELE_TEMP[] = T_DATAELE[].
    SORT T_DATAELE_TEMP BY ROLLNAME.
    DELETE ADJACENT DUPLICATES FROM T_DATAELE_TEMP COMPARING ROLLNAME.
    SELECT ROLLNAME " Data element
    DDTEXT " Short Text Describing R/3
    " Repository Objects
    FROM DD04T
    INTO TABLE T_TEXT
    FOR ALL ENTRIES IN T_DATAELE_TEMP
    WHERE ROLLNAME EQ T_DATAELE_TEMP-ROLLNAME
    AND DDLANGUAGE EQ SY-LANGU.
    IF SY-SUBRC NE 0.
    EXIT.
    ENDIF. " IF SY-SUBRC NE 0.
    ENDIF. " IF NOT T_DATAELE IS INITIAL.
    ENDIF. " IF NOT T_CDPOS IS INITIAL.
    ENDFORM. " DESCRIPTION
    *& Form FILL_OUTTAB
    Subroutine to populate the Outtab
    There are no interface parameters to be passed to this subroutine.
    FORM FILL_OUTTAB .
    SORT T_CDHDR BY OBJECTCLAS OBJECTID CHANGENR.
    SORT T_EKKO BY EBELN.
    SORT T_LFA1 BY LIFNR.
    SORT T_DATAELE BY TABNAME FIELDNAME.
    SORT T_TEXT BY ROLLNAME.
    LOOP AT T_CDPOS INTO FS_CDPOS.
    READ TABLE T_CDHDR INTO FS_CDHDR WITH KEY
    OBJECTCLAS = FS_CDPOS-OBJECTCLAS
    OBJECTID = FS_CDPOS-OBJECTID
    CHANGENR = FS_CDPOS-CHANGENR
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    MOVE FS_CDHDR-USERNAME TO FS_OUTTAB-USERNAME.
    MOVE FS_CDHDR-UDATE TO FS_OUTTAB-UDATE.
    READ TABLE T_EKKO INTO FS_EKKO WITH KEY
    EBELN = FS_CDHDR-OBJECTID
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    MOVE FS_EKKO-EBELN TO FS_OUTTAB-EBELN.
    MOVE FS_EKKO-ERNAM TO FS_OUTTAB-ERNAM.
    MOVE FS_EKKO-LIFNR TO FS_OUTTAB-LIFNR.
    MOVE FS_EKKO-EKGRP TO FS_OUTTAB-EKGRP.
    MOVE FS_EKKO-BEDAT TO FS_OUTTAB-BEDAT.
    READ TABLE T_LFA1 INTO FS_LFA1 WITH KEY
    LIFNR = FS_EKKO-LIFNR
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    MOVE FS_LFA1-NAME1 TO FS_OUTTAB-NAME1.
    ENDIF. " IF SY-SUBRC EQ 0.
    ENDIF. " IF SY-SUBRC EQ 0.
    ENDIF. " IF SY-SUBRC EQ 0.
    MOVE FS_CDPOS-VALUE_NEW TO FS_OUTTAB-VALUE_NEW.
    MOVE FS_CDPOS-VALUE_OLD TO FS_OUTTAB-VALUE_OLD.
    READ TABLE T_DATAELE INTO FS_DATAELE WITH KEY
    TABNAME = FS_CDPOS-TABNAME
    FIELDNAME = FS_CDPOS-FNAME
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    READ TABLE T_TEXT INTO FS_TEXT WITH KEY
    ROLLNAME = FS_DATAELE-ROLLNAME
    BINARY SEARCH.
    IF SY-SUBRC EQ 0.
    MOVE FS_TEXT-DDTEXT TO FS_OUTTAB-DDTEXT.
    ENDIF. " IF SY-SUBRC EQ 0.
    ENDIF. " IF SY-SUBRC EQ 0.
    APPEND FS_OUTTAB TO T_OUTTAB.
    CLEAR FS_OUTTAB.
    ENDLOOP.
    ENDFORM. " FILL_OUTTAB
    *& Form GET_CELL_INFO
    Subroutine to get the Cell Information
    --> W_VALUE Holds the value of Hotspot clicked
    FORM GET_CELL_INFO .
    CALL METHOD W_GRID->GET_CURRENT_CELL
    IMPORTING
    E_ROW =
    E_VALUE = W_VALUE
    E_COL =
    ES_ROW_ID =
    ES_COL_ID =
    ES_ROW_NO =
    ENDFORM. " GET_CELL_INFO
    *& Form VALIDATE_PD_NUM
    Subroutine to validate Purchase Document Number
    There are no interface parameters to be passed to this subroutine.
    FORM VALIDATE_PD_NUM .
    IF NOT S_EBELN[] IS INITIAL.
    SELECT EBELN " Purchase Document Number
    FROM EKKO
    INTO W_EBELN
    UP TO 1 ROWS
    WHERE EBELN IN S_EBELN.
    ENDSELECT.
    IF SY-SUBRC NE 0.
    CLEAR SSCRFIELDS-UCOMM.
    MESSAGE E717(M8).
    ENDIF. " IF SY-SUBRC NE 0
    ENDIF. " IF NOT S_EBELN[]...
    ENDFORM. " VALIDATE_PD_NUM
    *& Form VALIDATE_VEN_NUM
    Subroutine to validate Vendor Number
    There are no interface parameters to be passed to this subroutine.
    FORM VALIDATE_VEN_NUM .
    IF NOT S_LIFNR[] IS INITIAL.
    SELECT LIFNR " Vendor Number
    FROM LFA1
    INTO W_LIFNR
    UP TO 1 ROWS
    WHERE LIFNR IN S_LIFNR.
    ENDSELECT.
    IF SY-SUBRC NE 0.
    CLEAR SSCRFIELDS-UCOMM.
    MESSAGE E002(M8) WITH W_SPACE.
    ENDIF. " IF SY-SUBRC NE 0
    ENDIF. " IF NOT S_LIFNR[]...
    ENDFORM. " VALIDATE_VEN_NUM
    *& Form VALIDATE_PUR_GRP
    Subroutine to validate the Purchase Group
    There are no interface parameters to be passed to this subroutine.
    FORM VALIDATE_PUR_GRP .
    IF NOT S_EKGRP[] IS INITIAL.
    SELECT EKGRP " Purchase Group
    FROM T024
    INTO W_EKGRP
    UP TO 1 ROWS
    WHERE EKGRP IN S_EKGRP.
    ENDSELECT.
    IF SY-SUBRC NE 0.
    CLEAR SSCRFIELDS-UCOMM.
    MESSAGE E622(M8) WITH W_SPACE.
    ENDIF. " IF SY-SUBRC NE 0
    ENDIF. " IF NOT S_EKFRP[]...
    ENDFORM. " VALIDATE_PUR_GRP
    *& Form FILL_VARIANT
    Subroutine to fill the Variant Structure
    There are no interface parameters to be passed to this subroutine
    FORM FILL_VARIANT .
    Filling the Variant structure
    W_VARIANT-REPORT = SY-REPID.
    W_VARIANT-USERNAME = SY-UNAME.
    ENDFORM. " FILL_VARIANT
    <b>Reward if usefull</b>

  • Remove HTML from Interactive report download

    I have interactive reports where the column link on a specific column has to be dynamic, that means, it cannot be hard coded in the column link attributes. The following is an example of one such report query:
    case when d.object_type_description ='Business Service' then
    '< href="f?p='||:app_id||':183:'||:app_session||'::::P183_OBJECT_ID:'||d.id||'">'||d.object_name||'</>'
    when d.object_type_description = 'Real Time Event' then
    '< href="f?p='||:app_id||':162:'||:app_session||'::::P162_OBJECT_ID:'||d.id||'">'||d.object_name||'</>'
    else
       null
    end as "OBJECT NAME"As you see in the above example, the link on the "Object Name" column could either redirect to page 183 or to page 162 based on the "Object Type Description" column.
    The column attribute of the "Object Name" column has "Display Type" set to "Standard Report Column". That works perfectly fine in the UI of the report. However, if I download the IR data (in any format) from the Actions -> Download menu, the object name column values are downloaded with the HTML characters as:
    < href="f?p=15548:183:6072319179284::::P183_OBJECT_ID:255245470513999672860510787772603748464">JP010000</>where JP010000 is the object name.
    Is there a way I can strip the HTML from the column values in the downloaded files?
    I am using Apex 4.1.

    Rohit,
    You can define the link in the query, make it hidden, use the value as column link URL. So, your query will look like the following:
    d.object_name,
    case when d.object_type_description ='Business Service' then
        'f?p='||:app_id||':183:'||:app_session||'::::P183_OBJECT_ID:'||d.id
    when d.object_type_description = 'Real Time Event' then
        'f?p='||:app_id||':162:'||:app_session||'::::P162_OBJECT_ID:'||d.id
    else
       null
    end linkChange the display type of LINK column to Hidden. In column link, enter #OBJECT_NAME# as Link Text. Select URL as Target. Enter #LINK# as URL value. In APEX 4.2, you can do this in easier way by defining HTML Column Expression.
    Regards,
    Christina
    Edited by: cbcho on Sep 27, 2012 11:35 AM

  • Dynamic Action based on Interactive Report Select List Value

    I'd like to perform a Dynamic Action when a user selects one of 3 options from a Select List within an Interactive Report:
    select APEX_ITEM.SELECT_LIST(
    p_idx => 3,
    --p_value         =>   deptno,
    p_list_values => 'Copy;Copy,Delete;Delete,Export to PDF;Export to PDF',
    --p_attributes    =>   'style="color:red;"',
    p_show_null => 'YES',
    p_null_value => NULL,
    p_null_text => '--Select--',
    --p_item_id       =>   'f03_#ROWNUM#',
    p_item_id => 'P6_IR_SELECT_LIST',
    p_item_label => 'Label for f03_#ROWNUM#',
    p_show_extra => 'YES') "Actions"
    from dual;
    When building the Dynamic Action, I chose the following values from the Advanced wizard
    Event: Select
    Selection Type: DOM Object
    DOM Object: P6_IR_SELECT_LIST
    Condition: Equal to
    Value: "Delete"
    True Action: Execute Javascript Code: Alert('Here');
    Doesn't seem to be firing...can anyone help?
    Thanks in advance,
    John

    Hi,
    I am not sure if the "equal to" condition applies to a DOM object... after all, a DOM object can be anything (any HTML element) not only a field.
    Try using a javascript expression instead, like this:
    $v('P6_IR_SELECT_LIST')=='Delete'UPDATE: Sorry, I just tested and "equal to" condition works for DOM objects... should have tested before posting!
    Luis
    Edited by: Luis Cabral on Feb 29, 2012 4:45 PM

  • Button on Interactive Report to fire a process using JavaScript

    I have a requirement to trigger a process from a button on an interactive report. One of the report columns has the triggering data allowed to make the process fire. The requirement is that the button says different things based on the value from another column in report.
    My button is an html button that when the process is allowed to run, is enabled and fires a javascript function. When the process is not allowed to run for the row where the button is placed, the button changes text, color and is disabled.
    The switching of the HTML button is working properly. The problem is that I am not able to grab the column value from the report to submit with the onclick() event.
    As best I can tell, there is not unique id tag on the report columns and the best that I am able to do is to apply one class to the button and another class to the column that contains the value that needs to be submitted on my onclick() event.
    I have considered using a link column that does a submit to a URL passing in the desired value but I would lose control of the appearance of my button.
    Does anyone have a suggestion?
    Thanks

    In debugging while clicking on back button for first time, I found that after 'Leave to screen 0' statement debugger goes to double click event of screen 100 and start processing from a statment written immediately after 'Call screen 200' statement.
    Yes, that's right. The processing will be continued from next stamtement after CALL SCREEN 200. But after the PAI will finish it shoud go to NEXT SCREEN which is 0.
    If that doens't work you can try leaving the screen 100 explicitly as well.
       CALL SCREEN 200. 
       LEAVE TO SCREEN 0.  "the processing will terminate screen 100 as well
    Try it out.
    Regards
    Marcin

Maybe you are looking for

  • Error in document splitting

    Hi experts, I am posting vendor invoice, while saving system is giving the following error: Doc.Type : KR ( Vendor Invoice ) Normal document Doc. Number                     Company Code    6000         Fiscal Year     2010 Doc. Date      23.09.2010  

  • Import interfaces in jsp

    Hi, all. I'm new with EJB and try to test something in order to get to know EJB. I just faced with some problem. I am trying to solve this for couple hours now.. Here is the problem. I get this error when I compile jsp file. C:\Documents and Settings

  • GETTING ERROR IN SAP BODS : 230102

    Dear Expert , I am New in SAP BODS,I am getting below Error in SAP BODS. Data Flow terminated due to error <230102> We are transfering data from MS SQL to SAP BW. Please tell me how to resolved it Many Many Thanks In Advance. Regards, Divyesh Patel (

  • Need Help Gurus...

    HI, I have to extend an idoc ACC_GL_POSTING01 to include more custom fields...Could you guys provide me the steps to do this...what exit shud i use and how to do it... Thanx

  • Deployment and Redeployment

    Hi, everyone.           How are you deploying your apps? Are you using the weblogic.deploy tool (do           you use -component with your cluster as a target?)? The console? Or do you           just copy your archive to the applications directory? T