【转】ABAP的坑5
對于初寫ALV的ABAPer,it_fieldcat參數經常有一些隱藏的小坑,需要多加注意。
目錄:
01、字段名大小寫的問題
02、導出到Excel或者文本最后一位丟失
03、默認變式導致改了FLDCAT看不到效果
04、CONVERTION轉換
05、編輯數值(數量、金額)字段總是給變成小數
06、匯總的時候DUMP
07、導出的時候DUMP
08、篩選的時候,長度不對
09、可編輯字段不指定輸出長度,編輯的時候默認只能輸入10位
10、?改變了數據元素或者domain之后,ALV字段沒反應?
11、金額和數值顯示小數位的問題
詳細介紹:
01、SAP運行時是區分大小寫的,也就是說,'a'和'A'在SAP運行時是不同的字符,有同學在FIELDCAT里面使用了小寫或者大小寫混合的字段名,SAP就不會認識,導致出錯。其實,不僅僅是FIELDCAT,程序任何地方最好都要注意大小寫。
02、導出到Excel少一位,具體見:http://blog.chinaunix.net/uid-8527621-id-2029555.html,簡單說就是加上參考表和參考字段就好了。
03、FIELDCAT添加了新的字段,ALV卻不顯示!看看是不是有默認的Layout變式吧。
04、顯示的字段,物料的前導零沒去掉、單位是內部單位、WBS元素成了數字。。。這一切的原因都是來自于CONVERTION轉換,沒有做內外部轉換,加上參考表和參考字段吧。要么這樣:fldct-edit_mask = '==MATN1'.
05、在可編輯的ALV里面,數值型字段修改的時候,會把數據縮小100(1000)倍,只要根據情況設置一下小數位就可以了:fldcat-decimals_out = 3.
06、這個不僅僅是FIELDCAT的事兒,有時候LAYOUT設置不對也會導致DUMP,比如設置is_layout-coltab_fieldname = 'CELLC'.但是內表根本就沒有CELLC這個字段,就不行了。
07、同06.
08、比如物料號,18位,但是篩選彈出來的窗口只能輸入10位。這個可以通過添加參考表參考字段解決,也可以使用fldct-edit_mask?=?'==MATN1'.?,還有設置fldct-intlen?=?18.?
09、同08
10、ALV的字段參考了數據字段的內容,但是在修改了數據元素或者域后,ALV字段并沒有立即變成修改后的樣子,然后第二天莫名其妙好了。這個實際上是SAP上下文的鍋,只需要運行一下程序BALVBUFDEL,重置下ALV緩沖區就可以了。
11、SAP開發有句行話:有數值必有單位,有金額必有貨幣。ALV顯示也是這樣,如果不給指定單位或者貨幣字段,顯示的可能就是不正確的。數值字段:fldct-qfieldname?=?'MEINS'.?金額字段:fldct-cfieldname?=?'WAERS'.?
總結:
如果方便,最好是寫上參考表和參考字段,實在不愿寫用一個偷懶的辦法:
根據實際情況修改一下既可以。
總結
以上是生活随笔為你收集整理的【转】ABAP的坑5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量显示JOB Log
- 下一篇: SAP中用json数据格式调用http接