是否可以在ABAP中动态评估字符串模板?
通常,您的代码中会有一些字符串模板,编译器将对其进行检查。(大括号中的变量由编译器在编译时检查)。
但是,是否可以在运行时计算字符串?
所以,而不是:
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 |.