用于设置参数缺省值的字符串模板字符串、模板、参数

2023-09-03 10:56:56 作者:嫑走

是否可以在ABAP中动态评估字符串模板?

通常,您的代码中会有一些字符串模板,编译器将对其进行检查。(大括号中的变量由编译器在编译时检查)。

SAP中设置参数缺省值小技巧

但是,是否可以在运行时计算字符串?

所以,而不是:

data(val) = |System ID: { sy-sysid }|.

我希望插入的字符串来自其他地方,例如:

parameter: p_file type string lower case default '/mnt/{ sy-sysid }/file.txt'.

在这种情况下,我希望在运行时计算p_file的值,以便用运行时值替换变量(sy-sysid)。

当然,您可以编写自己的替换程序,方法是使用正则表达式查找所有出现的带有大括号的变量,然后使用ASSIGN计算变量值并将它们替换回字符串中,但我正在寻找一种内置的方法来完成此操作。

抱歉,这可能是一个愚蠢的例子,但希望您能理解我的意思。(如果没有,请在评论中告诉我,我会努力澄清)。

推荐答案

代码段中的问题不是字符串模板问题,而是参数行为问题。它不允许在DEFAULT子句中使用动态。

要获得您想要的内容,您应该使用INITIALIZATION并在运行时设置路径值:

parameter: p_file type string lower case.

INITIALIZATION.
p_file = | /mnt/{ sy-sysid }/file.txt |.