現象描述 函數
在使用ABAP報表展現數據的時候會涉及到金額類字段,在手動計算金額的時候,有時會發生存在負值而沒法正常展現的狀況。測試
處理過程spa
ABAP報表的數據展現經常使用的方法有兩種,分別是表控制和ALV設計
一、使用ALV展現時負值不會報錯,可是金額字段的負號默認顯示在結尾如圖3d
若是但願按照習慣將負號置於數字前段,則須要手動編寫一個轉換例程的函數來實現。blog
首先建立一個函數,命名規則CONVERSION_EXIT_XXXX_OUTPUT,其中XXXX爲自定義名稱,參考代碼爲ast
再建立對應的另一個函數,命名規則CONVERSION_EXIT_XXXX_INPUT,其中XXXX爲自定義名稱,參考代碼爲程序設計
而後在設置ALV字段屬性時將剛剛建立的轉換例程添加進去程序
最後從新執行報表就能夠獲得咱們想要的展現結果方法
二、使用表控制展現時,若是數據存在負值,會出現Short Dump。
解決方法是將表控制中的該金額字段的屬性設置爲帶記號的,以下圖
設置完成後從新執行報表,程序可以正常執行,負號顯示在末尾
若是但願加負號置前,能夠在退出對話中將以前建立的轉換例程添加進去
添加之後的執行效果
在ABAP程序中負值展現問題的處理是一種特例,須要用上述特殊的方式來進行處理,不然會出現顯示不正常甚至是Short Dump。因此在程序設計的時候,若是涉及到金額字段,應該充分考慮是否存在負值的狀況,而且進行全面的測試,防範傳輸以後出現此種問題。