繁体   English   中英

对于普通ABAP屏幕中的I / O字段,我能否使其表现得像SELECT-OPTIONS?

[英]For the I/O fields in a normal ABAP screen, can i get them to behave like a SELECT-OPTIONS?

我正在尝试为我的常规屏幕之一中的字段提供普通SELECT-OPTIONS的功能。

我遍历了Designer中该I / O字段的所有属性,但找不到任何东西。

我看到一些选择功能正在提供给我,但还不完整,这意味着在提示中,我不再能够使用F4直观地选择我的范围。

我正在努力实现的目标有可能吗?

你可以用

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECT-OPTIONS so_foo FOR baz-baz.
SELECTION-SCREEN END OF SCREEN 100.

然后将生成的屏幕包含在程序的子屏幕区域中。

您可以使用功能模块FREE_SELECTIONS_INITFREE_SELECTIONS_DIALOG的组合。 (您可以通过按下dynpro上的按钮来触发此操作)。 功能模块有点复杂,但是它们具有在线文档。

要扩展dynpro以模拟报告选择屏幕中的选择选项,您可以显示所选数据第一行的下限值和上限值。

这是一个入门的示例(功能模块FREE_SELECTIONS_DIALOG的文档实际上包含一些示例代码):

report  ztest_free_seldiag.

data: lv_selid type RSDYNSEL-SELID.
data: lt_fld type table of RSDSFIELDS.
data: ls_fld type RSDSFIELDS.

ls_fld-tablename = 'T001'.
ls_fld-fieldname = 'BUKRS'.
append ls_fld to lt_fld.

call function 'FREE_SELECTIONS_INIT'
  EXPORTING
    KIND                           = 'F'
  IMPORTING
    SELECTION_ID                   = lv_selid
  TABLES
    FIELDS_TAB                     = lt_fld
 EXCEPTIONS
   FIELDS_INCOMPLETE              = 1
   FIELDS_NO_JOIN                 = 2
   FIELD_NOT_FOUND                = 3
   NO_TABLES                      = 4
   TABLE_NOT_FOUND                = 5
   EXPRESSION_NOT_SUPPORTED       = 6
   INCORRECT_EXPRESSION           = 7
   ILLEGAL_KIND                   = 8
   AREA_NOT_FOUND                 = 9
   INCONSISTENT_AREA              = 10
   KIND_F_NO_FIELDS_LEFT          = 11
   KIND_F_NO_FIELDS               = 12
   TOO_MANY_FIELDS                = 13
   DUP_FIELD                      = 14
   FIELD_NO_TYPE                  = 15
   FIELD_ILL_TYPE                 = 16
   DUP_EVENT_FIELD                = 17
   NODE_NOT_IN_LDB                = 18
   AREA_NO_FIELD                  = 19
   OTHERS                         = 20.
if sy-subrc <> 0.
* Implement suitable error handling here
  exit.
endif.

call function 'FREE_SELECTIONS_DIALOG'
  exporting
    selection_id                  = lv_selid
    TITLE                         = 'Select Company Code'
    AS_WINDOW                     = 'X'
    TREE_VISIBLE                  = ' '
* IMPORTING
*   WHERE_CLAUSES                 =
*   EXPRESSIONS                   =
*   FIELD_RANGES                  =
*   NUMBER_OF_ACTIVE_FIELDS       =
  tables
    fields_tab                    = lt_fld
 EXCEPTIONS
   INTERNAL_ERROR                = 1
   NO_ACTION                     = 2
   SELID_NOT_FOUND               = 3
   ILLEGAL_STATUS                = 4
   OTHERS                        = 5.
if sy-subrc <> 0.
  BREAK-POINT.
  exit.
endif.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM