2016-02-19 127 views
0
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表。他們之後有什麼方法可以改變字段長度嗎?改變字段長度後

+0

對於閱讀此內容的任何人:這是一個很好的示例,說明在任何情況下,在ABAP中的代碼。 – vwegert

+1

特別是爲什麼?好的,選擇是愚蠢的。但除此之外?我同意,我不會這樣做,就像op做的那樣,調試QM,你會看到很多這些東西...... – icbytes

+0

你能給我們一個更具體的例子嗎? –

回答

0

除了代碼中的多個問題,你不能。如果您需要與此類似的東西,可以根據需要添加一個額外的字段到結構中,然後複製這些值。

+1

這只是一個例子,我的真實程序沒有問題。雅,你的建議工作,因爲首先我認爲ALV領域必須輸出所有IT領域。謝謝。 – RamonC

0

如果目標是將某些內容(或不同格式)輸出到內部存儲(或數據庫中)的屏幕上,那麼使用具有轉換出口的數據元素可能是最佳選擇。

例如,查看錶PRPS的關鍵字段。

0

擴大answer of 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使用它,你將失去的字段描述。 (另一方面,原始字段的字段描述將不再適合新字段。)