是否可以从表项动态创建参数?
例如:
SELECTION-SCREEN BEGIN OF BLOCK example WITH TITLE text-01
LOOP AT example_internal_table INTO example_workarea
IF example_workarea-field = criteria.
PARAMETERS: (example_workareafield) AS CHECKBOX.
ENDIF.
ENDLOOP.
SELECTION-SCREEN END OF BLOCK example.
上面的代码片段抛出了example-工作区-field不是常量的错误。这是否意味着动态声明参数是不可能的,或者我只是做错了?由于
正确。PARAMETERS
语句在编译时编译成选择屏幕,而不是在运行时。因此,你不能按照你提议的方式做你想做的事。
但是,可以使用某种形式的动态屏幕。
看看这个问题的答案:对于普通ABAP屏幕中的I/O字段,我可以让它们表现得像SELECT-OPTIONS吗?
这为您提供了两个起点:可以动态调用的子屏幕的使用,或者使用FREE_SELECTIONS_INIT
作为示例。
根据你对此的疯狂程度,你还可以调查:http://help.sap.com/abapdocu_702/en/abenabap_language_dynamic.htm
您可以加载DYNPRO并动态更改屏幕,激活然后运行调用更改后的屏幕的报告。
这当然是一种不同于使用PARAMETERS的方法,应该只用于宠物项目,而不是真正的生产代码,因为这些语句是内部使用的。我相信这就是SE16在为表生成选择屏幕时使用的方法。