我想在字符变量中添加缺少的空格。
例如,bu_partner是char10,其值为31
。在标准数据库表中,只有值0000000031
。
我尝试了覆盖命令,但31
位于开头而不是结尾。
DATA: mask TYPE bu_partner VALUE '0000000000',
partner TYPE bu_partner.
partner = '31'.
OVERLAY partner WITH mask.
write partner.
输出:
3100000000
有没有办法实现0000000031
?
答案 0 :(得分:3)
使用域指定的相应转换出口:
DATA: some_value TYPE c LENGTH 10,
partner TYPE bu_partner.
some_value = '31'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = some_value
IMPORTING
output = partner.
WRITE: / partner USING NO EDIT MASK.
请注意,在这种情况下您需要WRITE ... USING NO EDIT MASK
- 如果您不使用此添加,列表处理将自动调用CONVERSION_EXIT_ALPHA_OUTPUT
,这将消除前导零。
答案 1 :(得分:1)
请检查映射到bu_partner域的转换例程。您可以在域中检查映射到bu_partner的数据元素的域。我猜它会是阿尔法。这意味着您应该使用FM CONVERSION_EXIT_ALPHA_INPUT将外部数据转换为内部格式(如果输入31,则输出为0000000031)。如果要将内部转换为外部,请在适当的位置使用FM CONVERSION_EXIT_ALPHA_OUTPUT。
答案 2 :(得分:0)
经过一番挖掘,我找到了命令UNPACK
。
DATA: lv_partner_leading_zeros(10) type c,
lv_partner TYPE bu_partner.
lv_partner = '31'.
UNPACK lv_partner to lv_partner_leading_zeros.