[英]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_INIT
和FREE_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.