SAP ABAP使用模式覆盖char字符串

时间:2013-11-19 09:17:27

标签: char sap abap

我想在字符变量中添加缺少的空格。

例如,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

3 个答案:

答案 0 :(得分:3)

使用域指定的相应转换出口:

conversion exit

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.