ABAP Dropdown List

http://hi.baidu.com/jiaoying7c/blog/item/e274f9c2c2e989190ff477be.html

 

http://wfly2004.blog.163.com/blog/static/1176427200988114845276/

REPORT : Dropdown List

1. 在选择屏幕上添加下拉列表控件, 代码如下:

  PARAMETERS: auart LIKE vapma-auart AS LISTBOX   VISIBLE LENGTH 6

    DEFAULT 'ZESC' OBLIGATORY.

2. 手工添加下拉列表数据, 代码如下:

  *&---------------------------------------------------------------------*
*&      Form  fill_data_to_auart
*&---------------------------------------------------------------------*
*       to fill data for combo auart.
*----------------------------------------------------------------------*
FORM fill_data_to_auart .
  TYPE-POOLS: vrm . "存放combobox内容的type pool
  DATA: name TYPE vrm_id, " list box的名称
        list TYPE vrm_values, " list box的值
        value LIKE LINE OF list . " list box的结构

  REFRESH list .

  DEFINE fill_list.
    value-key = &1.  "个就是变量P_LIST的值
    value-text = &2. "这个是text
    append value to list.
  END-OF-DEFINITION.

  fill_list 'ZESC' 'ZESC'.
  fill_list 'ZESE' 'ZESE'.
  fill_list 'ZEDN' 'ZEDN'.
  fill_list 'ZEEN' 'ZEEN'.
  fill_list 'ZPBB' 'ZPBB'.
  fill_list 'ZPBE' 'ZPBE'.
  fill_list 'ZPDN' 'ZPDN'.
  fill_list 'ZPEN' 'ZPEN'.
  fill_list 'ZOCS' 'ZOCS'.
  fill_list 'ZASC' 'ZASC'.
  fill_list 'ZASE' 'ZASE'.
  fill_list 'ZADN' 'ZADN'.
  fill_list 'ZAEN' 'ZAEN'.

  "---〉调用函数显示listbox里面的值
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'AUART'  " PARAMETERS's Name
      values = list.
ENDFORM.                    " fill_data_to_auart

3. 在 AT SELECTION-SCREEN OUTPUT. 事件中填充数据,代码如下:

    PERFORM fill_data_to_auart.

以上代码,ECC6环境下通过。

 

 

 

ALV 字段下拉列表

http://www.abaptech.com/2010/08/alv%e4%b8%89%e4%b8%aa%e4%b8%8b%e6%8b%89%e5%88%97%e8%a1%a8%e5%88%97%e8%81%94%e5%8a%a8/

 

 

http://blogold.chinaunix.net/u2/68743/showart_689292.html

ABAP--如何在ALV_Grid的函数中定义下拉列表

代码如下:

REPORT.
************************************************************************
*                     DATEN DEFINITION                                 *
************************************************************************
TYPE-POOLS: slis.

TYPES:
       BEGIN OF t_data,
         matnr   TYPE makt-matnr,
         maktx   TYPE makt-maktx,
         spras   TYPE makt-spras,
       END   OF t_data,
       BEGIN OF t_alv,
         matnr     TYPE makt-matnr,
         maktx     TYPE makt-maktx,
         spras     TYPE makt-spras,
         dd_handle TYPE int4,
       END   OF t_alv.
DATA:
      gt_fieldcatalog      TYPE lvc_t_fcat,
      gw_fieldcatalog      TYPE lvc_s_fcat,
*定义存储下拉列表的数据     
      gt_ddval             TYPE lvc_t_drop,
      gw_ddval             TYPE lvc_s_drop,

     
      gt_events            TYPE slis_t_event,
      gw_events            TYPE slis_alv_event,
      gt_data              TYPE TABLE OF t_data,
      gw_data              TYPE          t_data,
      gt_alv               TYPE TABLE OF t_alv,
      gw_alv               TYPE          t_alv,
      g_repid              TYPE sy-repid VALUE sy-repid.
************************************************************************
*                     SELECTION SCREEN                                 *
************************************************************************
SELECT-OPTIONS: s_matnr FOR gw_data-matnr .

************************************************************************
*                     START-OF-SELECTION                               *
************************************************************************
START-OF-SELECTION.
  SELECT matnr maktx spras
  INTO TABLE gt_data up to 50 rows
  FROM makt
  WHERE matnr IN s_matnr
    and SPRAS = 'EN'.

  LOOP AT gt_data INTO gw_data.
    MOVE-CORRESPONDING gw_data TO gw_alv.
    APPEND gw_alv TO gt_alv.
  ENDLOOP.

  PERFORM creat_fieldcat.
  PERFORM creat_dropdown_values.
  PERFORM creat_event_exits.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = g_repid
      it_fieldcat_lvc    = gt_fieldcatalog
      it_events          = gt_events
    TABLES
      t_outtab           = gt_alv.
*---------------------------------------------------------------------*
* 设置输出字段的格式
*---------------------------------------------------------------------*
FORM creat_fieldcat.
  CLEAR gw_fieldcatalog.
  gw_fieldcatalog-fieldname = 'MATNR'.
  gw_fieldcatalog-ref_field = 'MATNR'.
  gw_fieldcatalog-ref_table = 'MAKT'.
  APPEND gw_fieldcatalog TO gt_fieldcatalog.

  CLEAR gw_fieldcatalog.
  gw_fieldcatalog-fieldname = 'MAKTX'.
  gw_fieldcatalog-ref_field = 'MAKTX'.
  gw_fieldcatalog-ref_table = 'MAKT'.
  APPEND gw_fieldcatalog TO gt_fieldcatalog.

  CLEAR gw_fieldcatalog.
  gw_fieldcatalog-fieldname  = 'SPRAS'.
  gw_fieldcatalog-OUTPUTLEN = '7'.
  gw_fieldcatalog-dd_outlen = '7'.
  gw_fieldcatalog-intlen    = '2'.
  gw_fieldcatalog-inttype   = 'C'.
  gw_fieldcatalog-coltext   = 'Language'.
  gw_fieldcatalog-tooltip   = 'Language'.
  gw_fieldcatalog-seltext   = 'Language'.
  gw_fieldcatalog-drdn_field = 'DD_HANDLE'.
  gw_fieldcatalog-EDIT       = 'X'.
  APPEND gw_fieldcatalog TO gt_fieldcatalog.
ENDFORM.                    " creat_fieldcat
*---------------------------------------------------------------------*
*根据物料的所有的语言生成不同的生成下拉列表
*---------------------------------------------------------------------*
FORM creat_dropdown_values.
  DATA: l_spras TYPE makt-spras,
        l_count TYPE i.
  LOOP AT gt_alv INTO gw_alv.
    ADD 1 TO l_count.
    SELECT spras
       INTO l_spras
    FROM makt
    WHERE matnr = gw_alv-matnr.
      CLEAR gw_ddval.
      gw_ddval-handle = l_count.
      gw_ddval-value  = l_spras.
      APPEND gw_ddval TO gt_ddval.
    ENDSELECT.

    CLEAR gw_ddval.
    gw_ddval-handle = l_count.
    gw_ddval-value  = '                 '.
    APPEND gw_ddval TO gt_ddval.
*设置对应
    gw_alv-dd_handle = l_count.
    MODIFY gt_alv FROM gw_alv.
  ENDLOOP.
ENDFORM.                    " creat_dropdown_values

*---------------------------------------------------------------------*
*      Form  creat_event_exits
*---------------------------------------------------------------------*
FORM creat_event_exits .
  gw_events-name = 'CALLER_EXIT'.
  gw_events-form = 'CALLER_EXIT'.
  APPEND gw_events TO gt_events.
ENDFORM.                    " creat_event_exits
*---------------------------------------------------------------------*
*设置下拉列表,使Grid和内表能链接上
*---------------------------------------------------------------------*
FORM caller_exit USING ls_data TYPE slis_data_caller_exit.
  DATA: l_ref_alv TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_ref_alv.
  CALL METHOD l_ref_alv->set_drop_down_table
    EXPORTING
      it_drop_down = gt_ddval.
ENDFORM.                    "CALLER_EXIT

 

 原文地址 http://blog.youkuaiyun.com/CompassButton/archive/2008/04/26/2330532.aspx

### 回答1: ABAP中的leave list-processing是一种控制语句,用于在处理列表时跳出循环。它可以在循环内部使用,以便在满足某些条件时立即停止循环。这是一种非常有用的技术,可以帮助程序员更有效地处理大量数据。 ### 回答2: ABAP Leave List Processing用于控制、终止或跳过内部表处理过程中的行处理,并立即返回至CALL传递处理内部表的程序。该命令常用于中断内部表处理的循环或遍历过程,从而有效地节约处理时间和资源,并使程序更加高效。 具体来说,ABAP Leave List Processing 可以根据特定的条件进行程序控制,从而实现对内部表处理过程的中断或跳过操作。其中,Leave表达式可以是单一的语句或包括多个语句的复合语句。在进行处理时,如果满足Leave表达式,则程序会立即跳出内部表处理过程,并返回到CALL传递处理内部表的程序中,继续执行后续操作。 需要注意的是,当Leave表达式生效时,内部表处理程序将仍会继续执行,但是对于满足Leave的行,将不再继续进行处理。因此,在使用Leave List Processing命令时,需要仔细考虑在返回CALL程序之前需要执行的相关操作,以确保程序的正确性和有效性。 总之,ABAP Leave List Processing是一种有效的控制内部表处理过程的命令,可以通过简单的表达式实现对程序流程的中断和跳过,从而提高程序的效率和可靠性。 ### 回答3: ABAP中的Leave语句是一种控制语句,用于中断正在进行的循环和外部处理过程。List Processing是ABAP的一种强大的特性,用于在交互式列表输出(如选项菜单、报表)中显示数据。 当在List Processing中使用Leave语句时,它可以用于中断当前循环和处理过程,并跳出循环。在这种情况下,它还可以传递消息给调用方,以指示中断的原因。 例如,当用户在处理数据时发生错误时,可以使用Leave语句来中断当前处理过程,并向用户显示相应的错误消息以进行修复。 另外,还应该注意到在List Processing中处理过程的结果可以立即显示在列表中,因此,应该尽可能减少使用Leave语句,以确保最终的处理过程可以完全执行而不中断。 在ABAP编程中,Leave语句的正确使用是非常重要的,因为它可以优化处理过程并提高代码的可维护性和可读性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值