之后更改字段长度


TABLES: VBRK.
DATA: BEGIN OF it_test,
      BUKRS LIKE VBRK-BUKRS,
      FKDAT LIKE VBRK-FKDAT,
END OF it_test.
DATA: wa_test LIKE it_test.

SELECT * FROM VBRK INTO CORRESPONDING FIELD OF wa_test.
IF wa_test-BUKRS = 'xxxx'.
   wa_test-BUKRS = 'XXXXX' "Problem occurs here as the BUKRS allow 4 value
   APPEND wa_test TO it_test.
ENDIF.

然后我想将内部表映射到输出为 ALV 表。他们之后有什么办法可以更改字段长度吗?

除了代码中的多个问题之外,您不能。如果您需要类似的东西,请以所需的任何大小向结构添加一个附加字段,然后将值复制过来。

如果目标是将与内部(或数据库中)存储的内容不同(或格式不同)的内容输出到屏幕上,那么使用带有转换出口的数据元素可能是要走的路。

例如,请查看表 PRPS 的关键字段。

扩展 vwegert 的答案:

MOVE-CORRESPONDING命令(和SELECT ... INTO CORRESPONDING FIELDS)不需要相同的字段类型。内容已转换。因此,您可以在内部结构中定义一个 5 个字符的字段,并将BUKRS -value 复制到此 5 个字符的字段中:

TABLES: VBRK.
DATA: BEGIN OF it_test,
      BUKRS(5), "longer version of VBRK-BUKRS,
      FKDAT LIKE VBRK-FKDAT,
END OF it_test.
DATA: tt_test TYPE STANDARD TABLE OF it_test.
* I would strongly recommend to set a filter!
SELECT * FROM VBRK INTO CORRESPONDING FIELD OF it_test.
  IF it_test-BUKRS = 'xxxx'.
     it_test-BUKRS = 'XXXXX'.
     APPEND it_test to tt_test.
  ENDIF.
ENDSELECT.

一个陷阱:当您将其与ALV一起使用时,您将丢失字段描述。(另一方面,原始字段的字段描述将不再适合新字段。

相关内容

  • 没有找到相关文章

最新更新