从SAP ABAP中的表动态声明参数

时间:2013-03-01 06:17:08

标签: parameters sap abap

是否可以从表条目动态创建参数?

例如:

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-workarea-field不是常量的错误。这是否意味着不可能动态声明参数或者我只是做错了?感谢

2 个答案:

答案 0 :(得分:2)

正确。 PARAMETERS语句在编译时编译到选择屏幕,而不是在运行时。因此,你不能以你提出的方式做你想做的事。

但是,可以使用某种形式的动态屏幕。

查看此问题的答案:For the I/O fields in a normal ABAP screen, can i get them to behave like a SELECT-OPTIONS?

这为您提供了两个起点:使用可以动态调用的子屏幕,或者使用FREE_SELECTIONS_INIT作为示例。

答案 1 :(得分:1)

根据您对此的疯狂程度,您还可以调查: http://help.sap.com/abapdocu_702/en/abenabap_language_dynamic.htm

您可以加载DYNPRO并动态更改屏幕,激活然后运行调用已更改屏幕的报告。

这当然是使用PARAMETERS的另一种方法,应该只用于宠物项目,而不是真正的生产代码,因为这些语句供内部使用。我相信这是SE16在为表格生成选择屏幕时使用的方法。