欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Dialog中实现下拉框效果并对下拉框赋自定义的值

程序员文章站 2022-05-30 22:08:30
...

一般在Dialog中用下面一个函数,显示下拉列表,本例以f4函数来实现的
CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      ID              = 'P_LGORT'   "对应屏幕的input框名称
      VALUES          = I_VALUES[]
    EXCEPTIONS
      ID_ILLEGAL_NAME = 1
      OTHERS          = 2.

PS:绘制屏幕时,设置下拉参数有两种:listbox;listbox with key
listbox with key 表示即使你的gui状态中不设置在下拉列表中显示key关键字,但他任然显示key
参数VALUES,是一个内表结构,含2个字段(key,value),选择listbox with key 时,感觉好像key,value都进入input框了,但实际只有key传入了,可以debug验证

程序执行效果:

在Dialog中实现下拉框效果并对下拉框赋自定义的值

1.主程序代码

DATA: OK_CODE TYPE SY-UCOMM.
DATA: BEGIN OF ITAB OCCURS 0,
         CARRNAME LIKE SCARR-CARRNAME,
      END OF ITAB.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  CREATE_DROPDOWN_LIST  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE CREATE_DROPDOWN_LIST INPUT.
  REFRESH ITAB.
  CLEAR ITAB.
  ITAB-CARRNAME = '合格'.
  APPEND ITAB.
  ITAB-CARRNAME = '不合格'.
  APPEND ITAB.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*     DDIC_STRUCTURE         = ' '
      RETFIELD               = 'CARRNAME'
*     PVALKEY                = ' '
*     DYNPPROG               = ' '
*     DYNPNR                 = ' '
*     DYNPROFIELD            = ' '
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
     VALUE_ORG              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     CALLBACK_METHOD        =
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
    TABLES
      VALUE_TAB              = ITAB
*     FIELD_TAB              =
*     RETURN_TAB             =
*     DYNPFLD_MAPPING        =
*   EXCEPTIONS
*     PARAMETER_ERROR        = 1
*     NO_VALUES_FOUND        = 2
*     OTHERS                 = 3
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

ENDMODULE.                 " CREATE_DROPDOWN_LIST  INPUT

2.自定义屏幕100
screen 100中的work flow:

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
PROCESS ON VALUE-REQUEST.
  FIELD LISTID MODULE CREATE_DROPDOWN_LIST.

layout:

在Dialog中实现下拉框效果并对下拉框赋自定义的值

PS:下拉框为什么含有空指?

因为非必输,必输就没有了。