Adding custom context menu in classical list

By Joyjit Ghosh, IBM India

*&---------------------------------------------------------------*
*& Report  Z_CONTEXT_MENU_DEMO
*&
*&---------------------------------------------------------------*
*& published at SAPTechnical.COM
*&
*&---------------------------------------------------------------*
REPORT  z_context_menu_demo.
* Table declaration
DATA: i_vbak TYPE STANDARD TABLE OF vbak INITIAL SIZE 0,
      i_vbap TYPE STANDARD TABLE OF vbap INITIAL SIZE 0.
* Workarea declaration
DATA: w_vbak TYPE vbak,
      w_vbap TYPE vbap.
START-OF-SELECTION.
* Set custom status
  SET PF-STATUS 'BASIC'.
* Fetch header data
  SELECT * FROM vbak
  INTO TABLE i_vbak
  UP TO 50 ROWS.
  IF sy-subrc = 0.
*   Fetch line item data
    SELECT * FROM vbap
    INTO TABLE i_vbap
    FOR ALL ENTRIES IN i_vbap
    WHERE vbeln = i_vbap-vbeln.
    CHECK sy-subrc = 0.
*   Display basic list
    LOOP AT i_vbak INTO w_vbak.
      FORMAT COLOR COL_HEADING.
      WRITE : /10 w_vbak-vbeln,
               20 w_vbak-erdat,
               35 w_vbak-erzet,
               55 w_vbak-ernam.
      HIDE: w_vbak-vbeln.
    ENDLOOP.
  ENDIF.
AT USER-COMMAND.
* Handle user command
  CASE sy-ucomm.
    WHEN 'DETAIL'.
      CHECK NOT w_vbak IS INITIAL.
*     Display detail list
      LOOP AT i_vbap INTO w_vbap WHERE vbeln =
                                  w_vbak-vbeln.
        FORMAT COLOR COL_HEADING.
        WRITE : /10 w_vbap-vbeln,
                 25 w_vbap-posnr,
                 35 w_vbap-matnr,
                 55 w_vbap-matwa.
      ENDLOOP.
      WINDOW STARTING AT 20 20
         ENDING  AT 120 110.
  ENDCASE.
*&---------------------------------------------------------------*
*&      Form  on_ctmenu_request
*&---------------------------------------------------------------*
*       Creation of custom context menu- It is called dynamically
*       by ABAP runtime
*----------------------------------------------------------------*
*      -->L_MENU     Handle for context menu
*----------------------------------------------------------------*
FORM on_ctmenu_request USING l_menu TYPE REF TO cl_ctmenu.
  DATA lin TYPE i.
  GET CURSOR LINE lin.
  IF lin > 2 AND sy-lsind = 0.
*   Add menu
    CALL METHOD l_menu->add_function
      EXPORTING
        fcode = 'DETAIL'
        text  = text-001.
  ENDIF.
*   Add menu
  CALL METHOD l_menu->add_function
    EXPORTING
      fcode = 'BACK'
      text  = text-002.
ENDFORM.                    "on_ctmenu_request

How SAP calls the routine ON_CTMENU_REQUEST:

Whenever user presses right mouse button or shift + F10 key combinations sap triggers system event and calls the method DISPATCH_SYSTEM_EVENTS of class CL_GUI_CFW. Within it, it calls the method DISPATCH of class LCL_DYNPRO_PROXY (defined within the class pool of CL_GUI_CFW).

 

 

From this method (DISPATCH) it calls the routine ON_CTMENU_REQUEST which is defined in our program.

 

 

Output:  

Basic list:

 

Detail list:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值