3

所以我有这个:

SELECT-OPTIONS gr_saord FOR gv_sales_order OBLIGATORY.

然后

PERFORM check_values CHANGING gr_saord.

然后

FORM check_values CHANGING p_gr_saord TYPE selopt.

我还尝试过SELOPT使用 Table Type代替结构,piq_selopt_t而不是传递gr_saord给 pass gr_saord[]

代码的呈现版本和替代结果都在相同的错误消息中:

在PERFORM或CALL FUNCTION“CHECK_VALUES”中,实参“GS_SAORD”与形参“P_GR_SAORD”不兼容。

基本上我想简单地传递一个SELECT-OPTIONS表作为参数并且无法做到。

4

2 回答 2

8

这是因为 selopt 和 piq_selopt_t 不适用于 vbak-vbeln。与您的选择选项相比,这些数据类型中的 Low 和 High 的类型不同。

这应该工作

data: gv_sales_order type vbap-vbeln.

types: tr_vbeln like RANGE OF gv_sales_order.

SELECT-OPTIONS: gs_saord for gv_sales_order.


perform check_values CHANGING gs_saord[].

form check_values CHANGING p_gr_saord TYPE tr_vbeln.

endform.
于 2012-07-24T12:56:48.097 回答
0

如果您很懒(并且有很多选择选项要传递)并且您只需要将它们传递给您的 FORM 中的选择语句,您可以跳过类型定义并定义您的表单

perform check_values CHANGING gs_saord[].

form check_values CHANGING p_gr_saord TYPE standard table.

endform.
于 2012-07-25T14:55:52.757 回答