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