Two trees on 1 screen, 1 Event - 1 Method = Which tree ?

Hi,
as I am fairly new to the Abap-OO this may be a silly question, but:
I have two list_trees on one screen to drag&drop between them. Now I need one event (Link_Click) for both trees. My problem now is how to determine and use the tree that raised the event.
Do I really need to define two methods like Handle_link_click_left & Handle_link_click_right ?
I thought somehow within the method I use an object like
"clicked_at_tree" instead of tree_left / tree_right ?!?!
I hope I was able to describe my problem and someones able to help me out
Thx in advance,
Karsten

Simular to what I did in this program, you may be able to extend the class, by using a local class and inheriting from your other class.  In this example, I have to text edit containers on the screen 100, the same event and handler is being executed for each instance of the text editor.
* Create the screen 100,  add two container to the screen,
* CONTAINER1 and CONTAINER2.
* Double click in either control
report zrich_0001 .
*       CLASS lcl_text_edit DEFINITION
class lcl_text_edit definition inheriting from cl_gui_textedit.
  public section.
    data: textlines type table of tline-tdline,
          wa_text type tline-tdline.
    events: customevent.
    methods: constructor importing
               im_parent type ref to cl_gui_container,
             customeventhandle
                     for event dblclick of lcl_text_edit.
endclass.
*       CLASS lcl_text_edit IMPLEMENTATION
class lcl_text_edit implementation.
  method constructor.
    call method super->constructor( parent = im_parent ).
  endmethod.
  method customeventhandle.
    wa_text = 'Appended Line'.
    append wa_text to textlines.
    call method me->set_text_as_r3table
       exporting
             table              = textlines
       exceptions
             others             = 1.
  endmethod.
endclass.
data: container1 type ref to cl_gui_custom_container.
data: container2 type ref to cl_gui_custom_container.
data: textedit1 type ref to lcl_text_edit.
data: textedit2 type ref to lcl_text_edit.
start-of-selection.
  call screen 100.
*&      Module  STATUS_0100  OUTPUT
module status_0100 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
  create object:
          container1
              exporting container_name = 'CONTAINER1',
          textedit1
              exporting
                   im_parent     = container1.
  call method textedit1->register_event_dblclick.
  set handler textedit1->customeventhandle for textedit1.
  create object:
          container2
              exporting container_name = 'CONTAINER2',
          textedit2
              exporting
                   im_parent     = container2.
  call method textedit2->register_event_dblclick.
  set handler textedit2->customeventhandle for textedit2.
endmodule.
*&      Module  USER_COMMAND_0100  INPUT
module user_command_0100 input.
endmodule.
If you found any answers helpful, please award points.  Thanks.
Regards,
Rich Heilman

Similar Messages

  • How to display two grids in same screen using SALV Method

    Hi Freinds,
    Please let me know how to display two grids in same screen using SALV Method.
    Thank you
    Regards,
    SDV

    Using the same concept as described in How to dispaly Three Internal Table  Data (One below another) in ALV OOPS .
    All you need to add is passing your new containers as r_container parementer of factory method.
    "1st one
          cl_salv_table=>factory(
             EXPORTING
               R_CONTAINER    = g_top_container
    "2nd one
          cl_salv_table=>factory(
             EXPORTING
               R_CONTAINER    = g_bottom_container
    Regards
    Marcin

  • How to Call Event Handler Method in Another view

    Hi Experts,
                       Can anybody tell me how to call Event handler Method which is declared in View A ,it Should be Called in
      view B,Thanks in Advance.
    Thanks & Regards
    Santhosh

    hi,
    1)    You can make the method EH_ONSELECT as public and static and call this method in viewGS_CM/ADDDOC  using syntax
        impl class name of view GS_CM/DOCTREE=>EH_ONSELECT "method name.
                 or
    2)The view GS_CM/ADDDOC which contains EH_ONSELECT method has been already enhanced, so I can't execute such kind of operation one more time.
                         or
    3)If both views or viewarea containing that view are under same window , then you can get the instance ofGS_CM/DOCTREE from view GS_CM/ADDDOC  through the main window controller.
    lr_window = me->view_manager->get_window_controller( ).
        lv_viewname = 'GS_CM/DOCTREE '.
      lr_viewctrl ?=  lr_window ->get_subcontroller_by_viewname( lv_viewname ).
    Now you can access the method of view GS_CM/DOCTREE .
    Let me know in case you face any issues.
    Message was edited by: Laure Cetin
    Please do not ask for points, this is against the Rules of Engagement: http://scn.sap.com/docs/DOC-18590

  • Is it possible to have two at selection-screen events in a program

    Hi all,
         I have a selection screen wherein i am using i have 5 radiobuttons and 3 select-options and a parameter. I am trying to use two at selection-screen events
    1) at selection-screen on radiobutton group rad1.
    2) AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_STATUS.
    the second event is not getting triggered.
    I have to get certain values for the parameter p_status based on the radiobutton selected from an internal table(the field doesn't belong to any dictionary table i am filling an itab with some values based on the radiobutton selected) pls help. its urgent.
    Regards
    Tharanath

    Hi
    TYPES : BEGIN OF ST_OBJID_SH,
             OTYPE TYPE HRP1000-OTYPE,
             OBJID TYPE HRP1000-OBJID,
            END OF ST_OBJID_SH.
    DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.
    DATA : WA_OBJID_SH TYPE ST_OBJID_SH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.
    IF S_OBJID IS NOT INITIAL.
        SELECT OTYPE OBJID FROM HRP1000
                     INTO TABLE IT_OBJID_SH
                     WHERE OTYPE = 'D'.
    IF SY-SUBRC EQ 0.
    SEARCH HELP FOR QUALIFICATION.
        CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
          EXPORTING
                 DDIC_STRUCTURE         = ' '
            RETFIELD               =  'OBJID'
                 PVALKEY                = ' '
           DYNPPROG               = SY-REPID
           DYNPNR                 = SY-DYNNR
           DYNPROFIELD            = 'S_OBJID'
                 STEPL                  = 0
                 WINDOW_TITLE           =
                 VALUE                  = ' '
           VALUE_ORG              = 'S'
                 MULTIPLE_CHOICE        = ' '
                 DISPLAY                = ' '
                 CALLBACK_PROGRAM       = ' '
                 CALLBACK_FORM          = ' '
                 MARK_TAB               =
               IMPORTING
                 USER_RESET             =
          TABLES
            VALUE_TAB              =  IT_OBJID_SH
                 FIELD_TAB              =
                 RETURN_TAB             = RETURN_TAB
                 DYNPFLD_MAPPING        =
               EXCEPTIONS
                 PARAMETER_ERROR        = 1
                 NO_VALUES_FOUND        = 2
                 OTHERS                 = 3
        IF SY-SUBRC <> 0.
              MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                      WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    Use in this way it will defently triggers
    <b>REward if usefull</b>

  • Why has gray palm tree shown up in Events with no photos

    I have all currant updates for Mac & Iphoto but since the last update I know have several grau Palm tree folder on the Events screen with no photos. Several have just the date listed below the palm tree and several have actually been named. Have I lost pictures in the events? Where are they and why am I getting these event files with palm tree?

    Apply the two fixes below in order as needed: 
    Fix #1
    Launch iPhoto with the Command+Option keys held down and rebuild the library.
    Since only one option can be run at a time start with Option #3, followed by #4 and then #1 as needed.
    Fix #2
    Using iPhoto Library Manager  to Rebuild Your iPhoto Library
    1 - download iPhoto Library Manager and launch.
    2 - click on the Add Library button, navigate to your Home/Pictures folder and select your iPhoto Library folder.
    3 - Now that the library is listed in the left hand pane of iPLM, click on your library and go to the File ➙ Rebuild Library menu option.
    4 - In the next  window name the new library and select the location you want it to be placed.
    5 - Click on the Create button.
    Note: This creates a new library based on the LIbraryData.xml file in the library and will recover Events, Albums, keywords, titles and comments.  However, books, calendars, cards and slideshows will be lost. The original library will be left untouched for further attempts at fixing the problem or in case the rebuilt library is not satisfactory.
    OT

  • Repetitive call of event handler method

    hi,
           i ve some 8 screens with alv grid controls on each...i'm using
    same subroutine for event handling for all the controls...the problem
    is whenever i navigate from 1 to the other and return back to the same,
    after data change, the event handler method is getting called as many times
    i ve navigated....for toolbar actions i used befor user command event and
    overcame but for data changed i got struck... Plz tel me the reason and how can we avoid.....
    Thanks
    Swaminathan.

    Hello Swami
    The following sample report shows how to handle the same event for different control instances. The crucial point is to check for the sending control.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
              e_row_id
              e_column_id
              es_row_no
              sender.       " sending control !!!
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_hotspot_click.
    *   define local data
        DATA:
          ls_knb1     TYPE knb1,
          ls_col_id   TYPE lvc_s_col.
        CASE sender.  " check for the sending control (this is known!!!)
          WHEN go_grid1.
            READ TABLE gt_customer1 INTO ls_knb1 INDEX e_row_id-index.
            MESSAGE 'Do event handling for 1st ALV grid!' TYPE 'I'.
          WHEN go_grid2.
            READ TABLE gt_customer2 INTO ls_knb1 INDEX e_row_id-index.
            MESSAGE 'Do event handling for 2nd ALV grid!' TYPE 'I'.
          WHEN OTHERS.
            RETURN.
        ENDCASE.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    The sample report contains two screens showing two parts of the selected data (just for demonstration). Please do note that it does not matter at all whether the ALV lists are on the same screen or on different screens or whether they are displayed in subscreens of the same dynpro.
    *& Report  ZUS_SDN_ALVGRID_EVENTS_4
    * Both screens have the same flow logic and do not contain any elements:
    *PROCESS BEFORE OUTPUT.
    *  MODULE STATUS_0100.
    *PROCESS AFTER INPUT.
    *  MODULE USER_COMMAND_0100.
    REPORT  ZUS_SDN_ALVGRID_EVENTS_4.
    DATA:
      gd_okcode        TYPE ui_func,
      gt_fcat          TYPE lvc_t_fcat,
      go_docking1      TYPE REF TO cl_gui_docking_container,
      go_docking2      TYPE REF TO cl_gui_docking_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid,
      go_grid2         TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_customer1     TYPE STANDARD TABLE OF knb1,
      gt_customer2     TYPE STANDARD TABLE OF knb1.
    PARAMETERS:
      p_bukrs      TYPE bukrs  DEFAULT '2000'  OBLIGATORY.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
              e_row_id
              e_column_id
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_hotspot_click.
    *   define local data
        DATA:
          ls_knb1     TYPE knb1,
          ls_col_id   TYPE lvc_s_col.
        CASE sender.
          WHEN go_grid1.
            READ TABLE gt_customer1 INTO ls_knb1 INDEX e_row_id-index.
            MESSAGE 'Do event handling for 1st ALV grid!' TYPE 'I'.
          WHEN go_grid2.
            READ TABLE gt_customer2 INTO ls_knb1 INDEX e_row_id-index.
            MESSAGE 'Do event handling for 2nd ALV grid!' TYPE 'I'.
          WHEN OTHERS.
            RETURN.
        ENDCASE.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        CASE e_column_id-fieldname.
          WHEN 'KUNNR'.
            SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
            SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
            CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
          WHEN 'ERNAM'.
    *        SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
    *        NOTE: no parameter id available, yet simply show the priciple
            CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
          WHEN OTHERS.
    *       do nothing
        ENDCASE.
    *   Set active cell to field BUKRS otherwise the focus is still on
    *   field KUNNR which will always raise event HOTSPOT_CLICK
        ls_col_id-fieldname = 'BUKRS'.
        CALL METHOD go_grid1->set_current_cell_via_id
          EXPORTING
            is_row_id    = e_row_id
            is_column_id = ls_col_id.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT * FROM  knb1 INTO TABLE gt_customer1
             WHERE  bukrs  = p_bukrs
             AND    kunnr  <= '0000300000'.
      SELECT * FROM  knb1 INTO TABLE gt_customer2
             WHERE  bukrs  = p_bukrs
             AND    kunnr  > '0000300000'.
    * Create docking container
      CREATE OBJECT go_docking1
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT go_docking2
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create ALV grid
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_docking1
        EXCEPTIONS
          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.
      CREATE OBJECT go_grid2
        EXPORTING
          i_parent          = go_docking2
        EXCEPTIONS
          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.
    * Set event handler
      SET HANDLER:
        lcl_eventhandler=>handle_hotspot_click FOR ALL INSTANCES.
    * Build fieldcatalog and set hotspot for field KUNNR
      PERFORM build_fieldcatalog_knb1.
    * Display data
      CALL METHOD go_grid1->set_table_for_first_display
        CHANGING
          it_outtab       = gt_customer1
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          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.
      CALL METHOD go_grid2->set_table_for_first_display
        CHANGING
          it_outtab       = gt_customer2
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          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.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking1->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          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.
      CALL METHOD go_docking2->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0200'
    *      CONTAINER                   =
        EXCEPTIONS
          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.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          CASE syst-dynnr.
            WHEN '0100'.
              SET SCREEN 0. LEAVE SCREEN.
            WHEN '0200'.
              SET SCREEN 100. LEAVE SCREEN.
          ENDCASE.
        WHEN 'NEXT'.
          SET SCREEN 200. LEAVE SCREEN.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_FIELDCATALOG_KNB1
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog_knb1 .
    * define local data
      DATA:
        ls_fcat        TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = 'KNB1'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_error                = 2
          OTHERS                       = 3.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT gt_fcat INTO ls_fcat
              WHERE ( fieldname = 'KUNNR'  OR
                      fieldname = 'ERNAM' ).
        ls_fcat-hotspot = abap_true.
        MODIFY gt_fcat FROM ls_fcat.
      ENDLOOP.
    ENDFORM.                    " BUILD_FIELDCATALOG_KNB1
    Regards
      Uwe

  • How to go to different screen by Double Clicking a Tree Node

    Hi guys,
    I have a tool where i have a top panel and a bottompanel. On the top panel, i add Tab buttons so that if anyone is clicked, it will repaint the bottom panel with corresponding Tab screen(New screen will come with the top panel remaining same). There are Actions, Conditions,Trees tabs on the main panel. There is also a Home Tab on the main panel which when clicked brings up a tree structure on the left hand side of the bottom panel which has some parent and child nodes depending on whether they are files or directories. There are folders(parent nodes) with names Trees & Conditions also related to the Tabs on the main panel under which i have some file names. I am including the method which creates the nodes. The problem is that when i double click any file(not a directory), it should take me to the screen which is actually populated when i select the Trees/Conditions tab and select the corresponding file name from the drop down provided in that screen and click a view button. So, it is something like adding an actionListener or SelectionListener. But, i am unable to do it. Can anyone suggest me how to do it?
    The class involving the following looks something like this.
    public class MainHomePanel extends AbstractDtPanel {And the AbstractDtPanel looks something like this.
    public abstract class AbstractDtPanel extends JPanelFinally, the method to create the Nodes is given below
        private void createNodes(DefaultMutableTreeNode top) {
            DefaultMutableTreeNode parentFolder = null;
            DefaultMutableTreeNode innerFolder = null;
            DefaultMutableTreeNode fileNames = null;
            ArrayList folderName = new ArrayList();       
            ArrayList innerFolderNames = new ArrayList();
            ArrayList fileNameArray = new ArrayList();
            CommonUtil cu = new CommonUtil();
            folderName =cu.getFolderNames(sessionData.getSysPath());
            if(folderName != null && folderName.size() > 0) {
                 for(int i =0; i<folderName.size(); i++) {
                     parentFolder = new DefaultMutableTreeNode((String)folderName.get(i));
                     top.add(parentFolder);
                     innerFolderNames =  new ArrayList();
                     innerFolderNames = cu.getInnerFolderNames(sessionData.getSysPath(), (String)folderName.get(i));
                     for(int k=0; k<innerFolderNames.size();k++) {
                         innerFolder = new DefaultMutableTreeNode((String)innerFolderNames.get(k));
                         parentFolder.add(innerFolder);
                         fileNameArray = new ArrayList();
                         fileNameArray = cu.getFileNames(sessionData.getSysPath(), (String)folderName.get(i),(String)innerFolderNames.get(k));
                         for(int j=0; j<fileNameArray.size(); j++) {
                             fileNames = new DefaultMutableTreeNode(fileNameArray.get(j));
                             innerFolder.add(fileNames);
        }

    Sorry, a small mistake. The "createNodes" method is in the "MainHomePanel" class.

  • How to get rid of the loop in ALV output from At selection screen event?

    I have several push buttons on a selection screen.
    Clikc on a button, then it pops up an editable ALV report. (This gets triggered AT SELECTION SCREEN event.). REUSE_ALV_GRID_DISPLAY_LVC..
    On the ALV output, I enabled F4 for a couple of fields. Once I click on the F4 button, ONF4 method gets triggerd and a pop up appears with custom search helps.
    choose a line and it fills the cell.
    Upto this it works fine.
    Now I click on the BACK button at the ALV output, it takes me to the selection screen. I click on the button again, it show the editable ALV. Now when I click on the F4 button, the pop up comes up twice and the cell gets filled from the second pop - up.
    How to control this?
    Probably I am not refreshing something?
    (I am using REUSE_ALV_GRID_DISPLAY_LVC and tooks ome code for ONF4 event from BCALV_*DATATYPES (forgot the exact name) program.)
    Thanks,
    Ven

    Hi,
    FORM refresh_grid USING  pw_grid TYPE REF TO cl_gui_alv_grid.
    *Work area
      DATA : wal_stable TYPE lvc_s_stbl.
      CHECK NOT pw_grid IS INITIAL.
      wal_stable-col = c_check.
      wal_stable-row = c_check.
    *Method to refresh grid
      CALL METHOD  pw_grid->refresh_table_display
           EXPORTING
             is_stable      = wal_stable
             i_soft_refresh = c_check
           EXCEPTIONS
             finished       = 1
             OTHERS         = 2.
    ENDFORM.                    " refresh_grid
    Thanks,
    Sree.

  • On at selection-screen event

    hi,
    i have two fields in seelction screen .if i enter delivery number on selection screen field automatically delivery date to filled in second field of selection screen.
    how it solved..

    hi, you need to press enter after filling the field so that the next parameter is populated otherwise no event is triggered
    Please check this sample code and award points if found helpful
    <b>
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-NAME = 'ST_NAME'.
          IF ST_NAME IS NOT INITIAL AND FLAG_SEL IS INITIAL.
            CLEAR LIMPR.
            CLEAR QTY.
            SELECT STOCK CURRPR
                         FROM
                         ZEXCH
                         INTO (ST_CODE, CURRPR)
                         WHERE ST_NAME = ST_NAME
                         AND EXCH = L_EXCH.
            ENDSELECT.
            IF SY-SUBRC <> 0.
              FLAG_END = 'X'.
              CLEAR CURRPR.
              CLEAR ST_CODE.
              CLEAR ST_NAME.
          ENDIF.
          ENDIF.
      ENDLOOP.
    </b>
    When u want to handle F4 help for this and automatically fill the delivery date then u need to use <b>AT SELECTION-SCREEN ON VALUE-REQUEST FOR ST_NAME.</b>
    Award points if found helpful

  • Sequence of  AT SELECTION-SCREEN events

    Hi All,
    I have a requirement where i need to have two fields selection screen, where the second field should have f4 help depending on the first field.
    So, i have validated the first field through AT SELECTION-SCREEN ON <FIELD1>. and for the second field i am using AT SELECTION-SCREEN ON VALUE-REQUEST FOR  <FIELD2>
    The problem i am facing over here is when i give first field input and press F4 in the second field it is not validating the First field and instead it is showing FIELD1 as blank to over come this i need to press enter before i press F4 in the second field. Is there any other alternative to over come this problem.
    Is there any sequenec for the AT SELECTION-SCREEN events to be used.
    Thanks
    Shashikanth

    Hi Shashi,
    Check the below code
    and for your future ref
    Table Control dynamic F4
    DATA : BEGIN OF f4_tab OCCURS 0,
             carrid TYPE sflight-carrid,
             connid TYPE sflight-connid,
        END OF f4_tab.
       CLEAR lin.
    " adjust this as per your requirement
      DATA : dynpread TYPE TABLE OF dynpread WITH HEADER LINE.
      REFRESH dynpread.
      CLEAR dynpread.
      dynpread-fieldname = 'ITAB-CARRID'.
    *  dynpread-stepl = lin. 
      APPEND dynpread.
      CLEAR dynpread.
    at selection-screen on value-request for YOUR_FIELD " Your Second Field here
      CALL FUNCTION 'DYNP_VALUES_READ'
            " This FM gives the First field value before u press Enter/ PAI is triggered
        EXPORTING
          dyname                               = sy-repid
          dynumb                               = sy-dynnr
        TABLES
          dynpfields                           = dynpread
       EXCEPTIONS
         invalid_abapworkarea                 = 1
         invalid_dynprofield                  = 2
         invalid_dynproname                   = 3
         invalid_dynpronummer                 = 4
         invalid_request                      = 5
         no_fielddescription                  = 6
         invalid_parameter                    = 7
         undefind_error                       = 8
         double_conversion                    = 9
         stepl_not_found                      = 10
         OTHERS                               = 11
      IF sy-subrc IS INITIAL.
        READ TABLE dynpread WITH KEY fieldname = 'ITAB-CARRID'.
        IF sy-subrc IS INITIAL.
          SELECT carrid connid FROM sflight
                INTO TABLE f4_tab
                 WHERE carrid = dynpread-fieldvalue.
          CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
            EXPORTING
              retfield               = 'CONNID'
             dynpprog               = sy-repid
             dynpnr                 = sy-dynnr
             dynprofield            = 'ITAB-CONNID'
             value_org              = 'S'
            TABLES
              value_tab              = f4_tab
        ENDIF.
      ENDIF.
    Cheerz
    Ram
    Edited by: Rob Burbank on Mar 18, 2010 9:01 AM

  • Populating database tables in event handler method - error

    Friends,
    I am trying to insert values into ztable in an event handler method in a WDA application.
    This is the code. ZDATA1 is a ztable with two fields: MANDT and ZKTOKD of data element char01.
    types: begin of zs,
    zktokd type char01,
    end of zs.
    data: zitab type table of zs,
    zstruct like line of zitab.
    zstruct-zktokd =  's'.
    append zstruct to zitab.
    INSERT zdata1 FROM TABLE zitab.
    I am getting the error: "The Work area "ZITAB" is not long enough...
    Please let me know what is missing.
    Thanks and Regards.

    Hi,
    The error is here
    types: begin of zs,
    zktokd type char01,
    end of zs.
    data: zitab type table of zs ,
    zstruct like line of zitab.
    "passed the Internal table name which is wrong
    Correct one
    data:
    zitab type table of zs,
    zstruct like line of ZS. " Here we have to give the type you have declared above.
                                    " Zstruct acts like a workarea.
    Regards
    Lekha

  • Handling exceptions for a event handler method.

    Hi Mates,
                    I have two custom container in which i am displaying an alv grid usind objects. when a double click event is performed in one of the alv the other alv should be displayed. I now have to handle exceptions of the class  CX_SY_DYN_CALL_ILLEGAL_TYPE. This is raised for an invalid parameter type when calling a method dynamically. I cannot use the keyword "RAISING" in the definition of the event handler method. i checked with the syntax of the method definition in abap dictionary, there were no addition "RAISING" for an event handler method. please provide me with the solution (a sample code would do.)

    Hello,
    May be you should read about the TRY ... CATCH block which is used for handling exceptions.
    Basic construct of your code should look like this:
    TRY.
    " Your Dynamic Method call
      CATCH CX_SY_DYN_CALL_ILLEGAL_TYPE.
    ENDTRY.
    If you want to get the error message text:
    DATA:
    lcx_excp TYPE REF TO CX_SY_DYN_CALL_ILLEGAL_TYPE,
    v_err_msg TYPE string.
    TRY.
    " Your Dynamic Method call
      CATCH CX_SY_DYN_CALL_ILLEGAL_TYPE INTO lcx_excp.
      v_err_msg = lcx_excp->get_text( ).
    ENDTRY.

  • Two ALV in Same Screen..

    Hello Guys.....
    As Per My New Requirement I Have to Display Data in two ALV Drid . like.........
    ALV1
    ALV2
    In a sample Program at SAP slis library I found Two ALV in same screen but they are in ALV1 ALV2 format.. it's will not fullfill my requirement..
    any one have any idea..
    Please send me test program ..
    Regard
    Swati Namdev..

    Hi Swati,
    see given code
    REPORT  Z7RNP_ALV_SO_BLOCK  MESSAGE-ID Z7NEW                     .
    TABLE DECLARATION
    TABLES: VBAK ,             "Sales Document: Header Data
            VBAP ,             "Sales Document: Item Data
            MAKT ,             "Material Descriptions
            LIPS .             "SD document: Delivery: Item data
    DECLARATION OF TYPE-POOL
    *THIS TYPE-POOL CONTAINS THE EVENTS,
    TYPE-POOLS : SLIS.
    DECLARATION OF EVENTS
    DECLARATION OF FIELD LAYOUT
    DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: T_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: T_EVENT TYPE SLIS_T_EVENT.
    DATA: X_EVENT TYPE SLIS_ALV_EVENT.
    DECLARATION OF LIST HEADER
    DATA: I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DECLARATION OF FIELD CATALOG FOR SCREEN 1
    DATA: I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
    DECLARATION OF FIELD CATALOG FOR SCREEN 2
    DATA: I_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
    SORTING OF OUTPUT
    DATA: I_SORT TYPE SLIS_T_SORTINFO_ALV.
    DATA: T_SORT TYPE SLIS_T_SORTINFO_ALV.
    *DATA DECLARATION
    DATA: V_AUART TYPE TVAK-AUART,
          V_VKORG TYPE TVKO-VKORG,
          V_KUNNR TYPE KNA1-KUNNR,
          V_MATNR TYPE MARA-MATNR ,
          V_SPART TYPE TVTA-SPART .
    DATA: V_REPID LIKE SY-REPID .
    TYPES: BEGIN OF IT_SO ,
           VBELN TYPE VBELN_VA ,          "SALES ORDER NO.
           AUART TYPE AUART ,             "SALES DOC. TYPE
           VKORG TYPE VKORG ,             "SALES ORG.
           SPART TYPE SPART ,             "DIVISION
           KUNNR TYPE KUNAG ,             "SOLD TO PARTY
           POSNR TYPE POSNR_VA ,          "SALES DOC. ITEM
           MATNR TYPE MATNR ,             "MATERIAL NO
           MAKTX TYPE MAKTX ,             "DESCRIPTION
           KWMENG TYPE KWMENG ,           "QUANTITY
           VRKME TYPE VRKME ,             "SALES UNIT
           END OF IT_SO .
    TYPES: BEGIN OF IT_DEL ,
           VBELN TYPE VBELN_VL ,         "SALES ORDER NO.
           POSNR TYPE POSNR_VL ,         "SALES DOC. ITEM
           MATNR TYPE MATNR ,            "MATERIAL NO
           WERKS TYPE WERKS_D ,          "PLANT
           LGORT TYPE LGORT_D ,          "STORAGE LOCATION
           CHARG TYPE CHARG_D ,          "BATCH NO.
           LFIMG TYPE LFIMG ,            "ACTUAL DELIVERY QTY.
           VRKME TYPE VRKME ,            "SALES UNIT
           END OF IT_DEL .
    TYPES: BEGIN OF TYPE_VBFA ,
           VBELV TYPE VBELN_VON ,
           "Preceding sales and distribution document
           POSNV TYPE POSNR_VON ,      "Preceding item of an SD document
           VBELN TYPE VBELN_NACH ,
           "Subsequent sales and distribution document
           POSNN TYPE POSNR_NACH,
           "Document category of subsequent document
           VBTYP_N TYPE VBTYP_N ,
          END OF TYPE_VBFA .
    DATA: IT_SO1 TYPE STANDARD TABLE OF IT_SO ,
          IT_DEL1 TYPE STANDARD TABLE OF IT_DEL ,
          IT_VBFA TYPE STANDARD TABLE OF TYPE_VBFA,
          IT_DEL_FUL TYPE STANDARD TABLE OF IT_DEL.
    DATA: WA_SO TYPE IT_SO ,
          WA_DEL TYPE IT_DEL ,
          WA_VBFA TYPE TYPE_VBFA,
          wa_IT_DEL_FUL TYPE IT_DEL.
    *SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-004 .
    SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN ,
                    S_AUART FOR V_AUART ,
                    S_VKORG FOR V_VKORG ,
                    S_SPART FOR V_SPART ,
                    S_KUNNR FOR V_KUNNR ,
                    S_MATNR FOR V_MATNR .
    SELECTION-SCREEN END OF BLOCK BLK1 .
    *AT SELECTION SCREEN
    AT SELECTION-SCREEN.
      SELECT SINGLE VBELN
                     FROM VBAK INTO VBAK-VBELN
                     WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E202.
      ENDIF.
    *START OF SELECTION
    INITIALIZATION.
      V_REPID = SY-REPID.
    START-OF-SELECTION .
      PERFORM DATA_SELECT.
    FOR BLOCK 1
      PERFORM INITIALIZE_BLOCK .
      PERFORM FLD_CAT USING I_FLDCAT[] .
      PERFORM T_LAYOUT USING I_LAYOUT .
      PERFORM I_SORT USING I_SORT .
      PERFORM EVENT USING T_EVENT .
      PERFORM CALL_ALV.
    FOR BLOCK 2
      PERFORM FLD_CAT2 USING I_FLDCAT2[] .
      PERFORM I_LAYOUT USING I_LAYOUT .
    PERFORM T_SORT USING I_SORT .
      PERFORM EVENT1 USING T_EVENT .
      PERFORM CALL_ALV1.
      PERFORM BLOCK-DISPLAY .
    *&      Form  DATA_SELECT
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_SELECT .
      REFRESH: IT_VBFA, IT_SO1, IT_DEL1, IT_DEL_FUL.
      SELECT
            A~VBELN
            A~AUART
            A~VKORG
            A~SPART
            A~KUNNR
            B~POSNR
            B~MATNR
            C~MAKTX
            B~KWMENG
            B~VRKME
            INTO TABLE IT_SO1 FROM VBAK AS A
                  JOIN VBAP AS B ON BVBELN = AVBELN
                  JOIN MAKT AS C ON CMATNR = BMATNR
                  AND C~SPRAS = SY-LANGU
                  WHERE A~VBELN IN S_VBELN .
      IF SY-SUBRC = 0.
        SELECT VBELV POSNV VBELN POSNN VBTYP_N INTO TABLE IT_VBFA
               FROM VBFA
               FOR ALL ENTRIES IN IT_SO1
               WHERE VBELV = IT_SO1-VBELN
               AND   POSNN = IT_SO1-POSNR
               AND VBTYP_N ='J' .
       IF SY-SUBRC = 0.
          SELECT VBELN POSNR MATNR WERKS LGORT CHARG LFIMG VRKME
                 FROM LIPS INTO TABLE IT_DEL_FUL
                 FOR ALL ENTRIES IN IT_VBFA
                 WHERE VBELN = IT_VBFA-VBELN
                 AND   POSNR = IT_VBFA-POSNN.
        ENDIF.
        ENDIF .
        V_REPID = SY-REPID .
    ENDFORM.                    " DATA_SELECT
    *&      Form  INITIALIZE_BLOCK
          text
    -->  p1        text
    <--  p2        text
    FORM INITIALIZE_BLOCK .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
      EXPORTING
        I_CALLBACK_PROGRAM             = V_REPID .
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      IT_EXCLUDING                   =
    ENDFORM.                    " INITIALIZE_BLOCK
    *&      Form  FLD_CAT
          text
         -->P_I_FLDCAT[]  text
    FORM FLD_CAT  USING    P_I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SALES ORDER NO.'.
      I_FLDCAT-COL_POS     = 1.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'AUART'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SALES DOC. TYPE'.
      I_FLDCAT-COL_POS     = 2.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'VKORG'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SALES ORG.'.
      I_FLDCAT-COL_POS     = 3.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'SPART'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'DIVISION'.
      I_FLDCAT-COL_POS     = 4.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'KUNNR'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SOLD TO PARTY'.
      I_FLDCAT-COL_POS     = 5.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SALES DOC. ITEM'.
      I_FLDCAT-COL_POS     = 6.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'MATERIAL NO.'.
      I_FLDCAT-COL_POS     = 7.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'MAKTX'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'DESCRIPTION'.
      I_FLDCAT-COL_POS     = 8.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'KWMENG'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'QUANTITY'.
      I_FLDCAT-COL_POS     = 9.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
      CLEAR I_FLDCAT.
      I_FLDCAT-FIELDNAME   = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT-TABNAME     = 'IT_SO1'.
      I_FLDCAT-SELTEXT_M   = 'SALES UNIT'.
      I_FLDCAT-COL_POS     = 10.        " POSITION OF THE COLUMN.
      I_FLDCAT-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT-KEY         = 'X'.
      " SO THAT THIS FIELD IS NOT SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT.
    ENDFORM.                    " FLD_CAT
    *&      Form  T_LAYOUT
          text
         -->P_I_LAYOUT  text
    FORM T_LAYOUT  USING    P_I_LAYOUT TYPE SLIS_LAYOUT_ALV .
    P_I_LAYOUT-ZEBRA = 'X'.
    P_I_LAYOUT-KEY_HOTSPOT = 'X'.
    P_I_LAYOUT-F2CODE            = 'DISP'.
    ENDFORM.                    " T_LAYOUT
    *&      Form  I_SORT
          text
         -->P_I_SORT  text
    FORM I_SORT  USING    P_I_SORT TYPE SLIS_T_SORTINFO_ALV .
      DATA: I_SORT TYPE SLIS_SORTINFO_ALV .
      REFRESH P_I_SORT .
      CLEAR I_SORT.
      I_sort-spos = 1.
      I_sort-fieldname = 'VBELN'.
      I_sort-up = 'X'.
      I_sort-subtot = 'X'.
      I_sort-group = '*'.
      APPEND I_SORT TO P_I_SORT.
    ENDFORM.                    " I_SORT
    *&      Form  CALL_ALV
          text
    -->  p1        text
    <--  p2        text
    FORM   CALL_ALV .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = T_LAYOUT
        IT_FIELDCAT                      = I_FLDCAT[]
        I_TABNAME                        = 'IT_SO1'
        IT_EVENTS                        = T_EVENT
       IT_SORT                          = I_SORT
       I_TEXT                           = TEXT-202
      TABLES
        T_OUTTAB                         = IT_SO1
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    REFRESH T_EVENT .
    CLEAR T_EVENT .
    ENDFORM.                    " CALL_ALV
    *&      Form  FLD_CAT2
          text
         -->P_I_FLDCAT2[]  text
    FORM FLD_CAT2  USING    P_I_FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'VBELN'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'DELIVERY NO.'.
      I_FLDCAT2-COL_POS     = 1.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
      I_FLDCAT2-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'POSNR'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'DELIVERY ITEM'.
      I_FLDCAT2-COL_POS     = 2.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'MATNR'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'MATERIAL NO.'.
      I_FLDCAT2-COL_POS     = 3.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'WERKS'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'PLANT.'.
      I_FLDCAT2-COL_POS     = 4.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'LGORT'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'ST. LOCATION'.
      I_FLDCAT2-COL_POS     = 5.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'CHARG'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'BATCH NO.'.
      I_FLDCAT2-COL_POS     = 6.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'LFIMG'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'ACT. DEL. QTY.'.
      I_FLDCAT2-COL_POS     = 7.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
      CLEAR I_FLDCAT2.
      I_FLDCAT2-FIELDNAME   = 'VRKME'. "FIELD FOR WHICH CATALOG ID FILLED
      I_FLDCAT2-SELTEXT_M   = 'SALES UNIT.'.
      I_FLDCAT2-COL_POS     = 8.        " POSITION OF THE COLUMN.
      I_FLDCAT2-OUTPUTLEN   = 20.       " SET THE OUTPUT LENGTH.
      I_FLDCAT2-EMPHASIZE   = 'X'.      " COLOR OF THIS COLUMN.
      I_FLDCAT2-KEY         = 'X'.      " SO THAT THIS FIELD IS NOT
      "SCROLLABLE AND HIDDABLE.
    I_FLDCAT-HOTSPOT     = 'X'.
      APPEND I_FLDCAT2.
    ENDFORM.                    " FLD_CAT2
    *&      Form  I_LAYOUT
          text
         -->P_I_LAYOUT  text
    FORM I_LAYOUT  USING    P_I_LAYOUT TYPE SLIS_LAYOUT_ALV .
    P_I_LAYOUT-ZEBRA = 'X'.
    P_I_LAYOUT-KEY_HOTSPOT = 'X'.
    P_I_LAYOUT-F2CODE            = 'DISP'.
    ENDFORM.                    " I_LAYOUT
    *&      Form  CALL_ALV1
          text
    -->  p1        text
    <--  p2        text
    FORM CALL_ALV1 .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
        IS_LAYOUT                        = I_LAYOUT
        IT_FIELDCAT                      = I_FLDCAT2[]
        I_TABNAME                        = 'IT_DEL_FUL'
        IT_EVENTS                        = T_EVENT
      IT_SORT                          =
      I_TEXT                           = ' '
      TABLES
        T_OUTTAB                         = IT_DEL_FUL
    EXCEPTIONS
      PROGRAM_ERROR                    = 1
      MAXIMUM_OF_APPENDS_REACHED       = 2
      OTHERS                           = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " CALL_ALV1
    *&      Form  BLOCK-DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM BLOCK-DISPLAY .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK             = ' '
      IS_PRINT                      =
      I_SCREEN_START_COLUMN         = 0
      I_SCREEN_START_LINE           = 0
      I_SCREEN_END_COLUMN           = 0
      I_SCREEN_END_LINE             = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER       =
      ES_EXIT_CAUSED_BY_USER        =
    EXCEPTIONS
       PROGRAM_ERROR                 = 1
       OTHERS                        = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " BLOCK-DISPLAY
    *&      Form  EVENT
          text
         -->P_T_EVENT  text
    FORM EVENT  USING    P_T_EVENT type slis_t_event.
    x_event-form = 'TOP_OF_LIST1'.
    x_event-name = slis_ev_top_of_list.
    append x_event to p_t_event.
    clear x_event .
    ENDFORM.                    " EVENT
    *&      Form  EVENT1
          text
         -->P_T_EVENT  text
    FORM EVENT1  USING    P_T_EVENT type slis_t_event.
    x_event-form = 'TOP_OF_LIST2'.
    x_event-name = slis_ev_top_of_list.
    append x_event to p_t_event.
    ENDFORM.                    " EVENT1
    FORM TOP_OF_LIST1.
    SKIP 1.
    WRITE: 10 'BLOCK LIST 1 FOR SALES ORDER DETAILS ' COLOR 4 .
    skip 1.
    format reset.
    endform.
    FORM TOP_OF_LIST2.
    skip 1.
    WRITE: 10 'BLOCK LIST 2 FOR DELIVERY ORDER DETAILS ' COLOR 4 .
    skip 1.
    format reset.
    endform.
    Reward point if useful.

  • How can I handle touch screen events with Swing?

    Hi,
    I was wondering how i can handle touch screen events. Are there APIs for that or is it just a mouse event?
    Thank you in advance.
    Tim

    I have recently created an application that ran on a touch screen system. I used the normal mouse events attached to the swing components (onClick) and these were translated by the touch screen. Typically I created a calculator type keypad, touched the screen on the text box where I wanted the data to appear and then pressed the keypad buttons to populate the field. No special drivers, just using swing components
    Hope that helps
    yeah, this is really useful info.. me too trying to build an application for the touch screen... just wondering how other events like focus gained, tree selection events are recognized by touch screen? can we have focus and tree, table selection events etc, as it is in the touch screen as well?? or everything is just mouse event only??

  • Capture Selection-screen events

    Dear SAP friends,
    I have created OOP report.
    At the runtime the program creates toolbar and adds pushbuttons to it.
    Every button has fcode assigned.
    On button click the below method is called.
    The below statement "CALL SELECTION-SCREEN 1200 STARTING AT 10 10" calls selection screen as popup.
    I need to capture when User closes the selection popup and when he clicks Cancel button located in the selection popup.
    Please advise.
    Regards
    Tatyana.
    METHOD  handle_pushbutton_click.
    CASE fcode.
          WHEN 'CHECKS_EXP'.
            CALL SELECTION-SCREEN 1200 STARTING AT 10 10.
            PERFORM at_selection_1200.
            CHECK w_continue = abap_true.
            PERFORM build_options_range.
            PERFORM build_options_norange.
            PERFORM start_selection_1200.
            PERFORM fcat_init_1200.
            w_title = 'Checks -> Expenditures'.
            PERFORM set_layout USING w_title.
            PERFORM getdata_1200.
            DESCRIBE TABLE lt_rpt LINES w_count.      " Get number of records.
            PERFORM populate_selection USING w_count.
    ENDDCASE.

    Hello Tatyana
    The following sample report ZUS_SDN_OO_REPORT_SELSCREEN should simulate your scenario.
    If you push the EXECUTE button you will find ok-code='CRET'.
    If you close the popup or push the CANCEL button ok-code=' ' (space; empty). This way you know that the popup was closed by the user.
    *& Report  ZUS_SDN_OO_REPORT_SELSCREEN
    *& Thread: Capture Selection-screen events
    *& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1205127"></a>
    REPORT  zus_sdn_oo_report_selscreen.
    *       CLASS lcl_myclass DEFINITION
    CLASS lcl_myclass DEFINITION.
      PUBLIC SECTION.
        CLASS-DATA:
          md_okcode   TYPE ui_func.
        CLASS-METHODS:
          handle_pushbutton_click.
    ENDCLASS.                    "lcl_myclass DEFINITION
    *       CLASS lcl_myclass IMPLEMENTATION
    CLASS lcl_myclass IMPLEMENTATION.
      METHOD handle_pushbutton_click.
        DATA: ld_msg    TYPE bapi_msg.
        BREAK-POINT.
        CLEAR: lcl_myclass=>md_okcode.
        DO.
          CALL SELECTION-SCREEN 1200 STARTING AT 10 10.
          EXIT.
        ENDDO.
        CONCATENATE 'ok-code =' md_okcode INTO ld_msg
          SEPARATED BY space.
        MESSAGE ld_msg TYPE 'I'.
        MESSAGE 'Continue after SelScreen' TYPE 'S'.
      ENDMETHOD.                    "handle_pushbutton_click
    ENDCLASS.                    "lcl_myclass IMPLEMENTATION
    SELECTION-SCREEN BEGIN OF SCREEN 1200.
    PARAMETERS:
      p_bukrs   TYPE bukrs.
    SELECTION-SCREEN END OF SCREEN 1200.
    AT SELECTION-SCREEN OUTPUT.
      BREAK-POINT.
      CLEAR: syst-ucomm.
    AT SELECTION-SCREEN.
      BREAK-POINT.
      lcl_myclass=>md_okcode = syst-ucomm.
    START-OF-SELECTION.
      lcl_myclass=>handle_pushbutton_click( ).
    END-OF-SELECTION.
    Regards
      Uwe

Maybe you are looking for