もちろん、質問は何千回も議論されました( 1 、 2 、)が、この醜いスニペット以外は何も提供されませんでした:
data: str type string value 'abcd#',
len type i.
len = strlen( str ).
len = len - 1.
str = str+0(len).
これを行うためのエレガントなワンライナーはありますか?これまでに見つけた唯一の顕著な方法は
SHIFT str RIGHT DELETING TRAILING `,`.
ただし、最後の文字が何であるか(TRAILINGマスク)を知っている必要があり、マスクは正規表現またはワイルドカードをサポートしていません。または私は間違っていますか?
このバリアントは、何らかの理由で私には機能しません
SHIFT string RIGHT BY 1.
たぶん誰かがこれを一行で行うより美しい構文を知っていますか? ABAP 7.40または7.50の新機能はありますか?
文字列の最後の文字を取得するSUBSTRING:
DATA: str TYPE string VALUE 'abcd#'.
str = substring( val = str off = strlen( str ) - 1 len = 1 ).
strは '#'になります
文字列の最後の文字を削除するには(例のように):
str = substring( val = str off = 0 len = strlen( str ) - 1 ).
ABAPエディターでSUBSTRINGを入力してF1キーを押します。さらにいくつかのバリエーションがあります(substring_after、substring_beforeなど)。
私が過去に使ったトリック:
DATA l_str TYPE string VALUE `abcd#`.
SHIFT l_str RIGHT by 1 PLACES CIRCULAR. " move last char to start, read it from l_str(1)
l_str = l_str+1. " remove it.