-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

vwegertの答えを拡張する:

MOVE-CORRESPONDINGコマンド (および)はSELECT ... INTO CORRESPONDING FIELDS、同じフィールド タイプである必要はありません。内容が変換されます。したがって、内部構造で 5 文字のフィールドを定義し、BUKRS値をこの 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 に答える
0

コード内の複数の問題を除けば、できません。それに似たものが必要な場合は、必要なサイズのフィールドを構造体に追加し、値をコピーします。

于 2016-02-19T08:40:52.953 に答える