1. 程式人生 > >ALV 的金額和數量的問題

ALV 的金額和數量的問題

alv輸出時,fieldcat(lvc_s_fcat)的利用是必然的,我們需要很仔細,不然,很容易發生一些瑕疵和馬虎的問題,最容易出現的問題就是數量和金額的問題:

1.alv中數量和金額的列目錄的顯示,例如庫存的時候,數量有 期初的,期末的,期間發生的,怎麼做到列名稱就是我們需要的呢,

可以利用截圖中 的第一個 coltext 來編輯fieldname的描述,後面的三個就不要用了,不然還會顯示標準表中的欄位描述。

2.出現數量和金額欄位是可編輯的時候,要注意參照資料庫表或者自建表的欄位了或者自己定義個型別

如截圖顯示,可以利用圖中 的2種方式來解決

截圖1中的適用金額和數量都可以

截圖2 中的需要自己來分辨金額和數量的型別了

datatype 的domain中有很多的值範圍,這個需要自己來分辨的     inttype 也是需要分辨不同的datatype的domain對應的值範圍

DEFINE alv_field_qua.
  clear gw_field.

  gw_field-fieldname = &1.
  gw_field-coltext   = &2.
  gw_field-outputlen = &3.
  gw_field-datatype  = 'QUAN'.
  gw_field-inttype   = 'C'.
  gw_field-edit      = &4.
  gw_field-f4availabl = &5.
  append gw_field to gt_field.

END-OF-DEFINITION.

DEFINE alv_field_curr.
  clear gw_field.

  gw_field-fieldname = &1.
  gw_field-coltext   = &2.
  gw_field-outputlen = &3.
  gw_field-	  = 'CURR'.
  gw_field-edit      = &4.
  gw_field-f4availabl = &5.
  append gw_field to gt_field.

END-OF-DEFINITION.

DEFINE alv_ref1.
  clear gw_field.
  gw_field-fieldname = &1.
  gw_field-coltext  = &2.
  gw_field-outputlen = &3.
  gw_field-ref_field = &4.
  gw_field-ref_table = &5.
  gw_field-edit = &6.
  gw_field-f4availabl = &7.

  append gw_field to gt_field.
END-OF-DEFINITION.

3.還有注意數量和金額的小數的問題

可以利用datatype的值域 ‘INT4’  和inttype的 'I'來解決,或者lvc_s_fcat中的decmails的引數

4.下圖中小數點的問題和欄位所包含的domain的轉換例程convexit 的應用

  DEFINE alv.
    clear: ps_fieldcat.
    ps_fieldcat-fieldname = &1.
    ps_fieldcat-scrtext_s = &2.
    ps_fieldcat-scrtext_m = &2.
    ps_fieldcat-scrtext_l = &2.
    case &1.
      when 'AUFNR'.
        ps_fieldcat-convexit = 'ALPHA'.
    endcase.
    IF &1 = 'ZMENG' .
      ps_fieldcat-no_zero = 'X'.
      ps_fieldcat-quantity = '1'.
      ps_fieldcat-qfieldname = 'MEINS'.
    ENDIF.
    append ps_fieldcat to pt_fieldcat.
    clear: ps_fieldcat.
  END-OF-DEFINITION.

6.做f4的參照表的時候,出現下圖的問題;這時要注意該欄位所用的參照表的欄位資料元素的搜尋幫助是否存在外來鍵檢查,這時會出現外來鍵檢查的報錯 如下:

如何解決呢,很簡單;

如果你用的標準表,那隻能換欄位了,如果是自定義的表,把這個外來鍵檢查改一下,其他欄位換成預設值