-1
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 表输出。之后他们有什么办法改变字段长度吗?

4

3 回答 3

0

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

于 2016-02-19T08:40:52.953 回答
0

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

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

于 2016-02-20T20:33:48.090 回答
0

扩展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 一起使用时,您将丢失字段描述。(另一方面,原始字段的字段描述将不再适合新字段。)

于 2016-02-22T11:51:13.907 回答