tables:itab.
TYPE-POOLS: slis. "alv
"ALV顯示標准定義
DATA: g_repid LIKE sy-repid,
it_fieldcat TYPE lvc_t_fcat WITH HEADER LINE,
is_layout TYPE lvc_s_layo.
DATA: gwk_grid_setting LIKE lvc_s_glay. "標記選中列
CONSTANTS pf_status TYPE slis_formname VALUE 'ALV_PF_STATUS'. "定義狀態
CONSTANTS user_command TYPE slis_formname VALUE 'ALV_USER_COMMAND'. "定義按鈕
"以上的都是標准的定義,直接復制。
"定義內表
DATA : BEGIN OF wa_itab,
"alv顯示字段
matnr TYPE zewmt026-matnr,
END OF wa_itab.
DATA lt_itab LIKE TABLE OF wa_itab.
"可以自己定義一個小的屏幕,也可以不需要 ,看自己需不需要
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-901.
SELECTION-SCREEN FUNCTION KEY 1.
PARAMETERS : p1 TYPE char1 RADIOBUTTON GROUP g1 .
SELECT-OPTIONS:
s_a FOR table-a ,
s_b FOR table-b .
PARAMETERS : p2 TYPE char1 RADIOBUTTON GROUP g1.
SELECTION-SCREEN: END OF BLOCK b1.
"判斷自己是否需要選擇屏幕,根據選擇條件顯示的內容
PARAMETERS d LIKE table-d.
SELECT-OPTIONS:
a FOR table-a,
b FOR table-b.
INITIALIZATION. "加載前的事件,不一定會有。
"用FORM的形式可以避免整個程序出錯,還可以更快找到不正確的地方。
START-OF-SELECTION.
PERFORM get_data. "獲取數據
PERFORM alv_layout_build. "alv格式設置
PERFORM alv_fieldcat. "樣式
PERFORM alv_show. "ALV顯示
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data ." 獲取需要顯示的數據
SELECT *
FROM table
INTO CORRESPONDING FIELDS OF TABLE lt_itab
WHERE a IN a
AND b IN b.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_LAYOUT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_layout_build ."自己可以添加需要的設置
is_layout-zebra = 'X'. "明亮顯示
is_layout-box_fname = 'SEL'. "可選
is_layout-cwidth_opt = 'X'. "自動寬度
gwk_grid_setting-edt_cll_cb = 'X'."刷新
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_fieldcat .
CLEAR it_fieldcat.REFRESH it_fieldcat.
DEFINE lit_fieldcat. "自己可以添加需要的設置
it_fieldcat-tabname = 'IT_OUT'.
it_fieldcat-fieldname = &1. "字段名字
it_fieldcat-coltext = &2. "字段描述
it_fieldcat-just = &3. "對齊
it_fieldcat-edit = &4. "可以更改
" ls_fieldcat-decimals_out = &5. "去掉小數點后面的零填0
.
.
.
.
APPEND it_fieldcat.
CLEAR it_fieldcat.
END-OF-DEFINITION. "lit_fieldcat
lit_fieldcat :
'MATNR' '物料編碼' 'L'