2010年2月10日 星期三

ALV分頁法則

在寫FI的ALV程式常會碰到要以某個成本中心群組作分頁
這時我們可以在Sortinfo_init內設定要以什麼作為分頁
當某個值一變動後 立刻換頁作新的一筆呈現方式

&---------------------------------------------------------------------*
*&   Form  SORTINFO_INIT
*&---------------------------------------------------------------------*
FORM SORTINFO_INIT USING IT_SORTINFOE TYPE SLIS_T_SORTINFO_ALV.
  DATA: ST_SORTE TYPE SLIS_SORTINFO_ALV.
*ALV分頁 by KSGRU(成本中心群組)
  ST_SORTE-SPOS   = '1'.
  ST_SORTE-FIELDNAME = 'KSGRU'.
  ST_SORTE-TABNAME   = 'GT_RPT'.
  ST_SORTE-UP     = 'X'.
  ST_SORTE-GROUP = '*'.  "跳頁
  APPEND ST_SORTE TO IT_SORTINFOE.
  CLEAR  ST_SORTE.

ENDFORM.     "SORTINFO_INIT

2010年2月2日 星期二

ALV欄位顏色控制

在ALV程式中如有需求是值為負值時顏色可能要求為紅色
這時我們可以在ALV的程式內加入以下顏色控制的欄位宣告
並在該資料項判斷後Modify這個值
最後在Layout控制加上該色彩控制..(如無設定程式會有Error)

*增加色彩欄位宣告
DATA: BEGIN OF GW_ITAB,
 C1 TYPE C,
 P1 TYPE P.
DATA: COLINFO TYPE SLIS_T_SPECIALCOL_ALV,  "必要的宣告
  END OF GW_ITAB.
DATA GT_ITAB LIKE GW_ITAB OCCURS 0 WITH HEADER LINE.
DATA:   GT_COLOR  TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
LOOP AT GT_ITAB
    IF  GT_ITAB < 0.
 GT_COLOR-FIELDNAME = P1.
 GT_COLOR-COLOR-COL = 6.
 GT_COLOR-COLOR-INT = 0.
  GT_COLOR-COLOR-INV = 1.
  APPEND GT_COLOR.
  CLEAR GT_COLOR.
 GT_ITAB-COLINFO = GT_COLOR[].
 MODIFY GT_ITAB.
    ENDIF.
ENDLOOP.
*&----------------------------------------------------------------*
*&   Form  LAYOUT_INIT
*&----------------------------------------------------------------*
FORM LAYOUT_INIT USING P_L_LAYOUT TYPE SLIS_LAYOUT_ALV.
  P_L_LAYOUT-COLTAB_FIELDNAME = 'COLINFO'.
ENDFORM.     " LAYOUT_INIT