从字符串中删除/提取最后一个字符

Sun*_*her 3 string sap abap

当然,问题讨论千倍(1,2,3),但没有提供,只是这个丑陋的代码片段:

data: str type string value 'abcd#',
      len type i.

len = strlen( str ).
len = len - 1.
str = str+0(len).
Run Code Online (Sandbox Code Playgroud)

有没有优雅的单行做这个?我到目前为止唯一突出的方法是

SHIFT str RIGHT DELETING TRAILING `,`.
Run Code Online (Sandbox Code Playgroud)

但是,它要求您知道最后一个字符是什么(TRAILING掩码)并且掩码不支持正则表达式或通配符.或者我错了?

由于某些原因,此变体对我不起作用

SHIFT string RIGHT BY 1.
Run Code Online (Sandbox Code Playgroud)

也许有人知道更好的语法在一行中做到这一点?ABAP 7.40或7.50中有什么新东西?

Józ*_*zai 7

SUBSTRING获取字符串的最后一个字符:

DATA: str TYPE string VALUE 'abcd#'.
str = substring( val = str off = strlen( str ) - 1 len = 1 ).
Run Code Online (Sandbox Code Playgroud)

str将是'#'

要删除字符串的最后一个字符(如示例所示):

str = substring( val = str off = 0 len = strlen( str ) - 1 ).
Run Code Online (Sandbox Code Playgroud)

在ABAP编辑器中键入SUBSTRING并在其上点击F1,还有一些变体(substring_after,substring_before等)