A>單元格處理
"---1定義
data: begin of t_tab5 OCCURS 0,
FLDNAME type LVC_T_SCOL, "某單元格的顏色設定
SEL type c length 1,
MARK type c length 1,
MATNR like mara-matnr,
MENGE type c length 20,
end of t_tab5.
"-----2賦值
data: l_alvcolor type LVC_S_SCOL.
l_alvcolor-fname = 'MATNR'.
l_alvcolor-color-col = '7'.
l_alvcolor-color-int = '1'.
l_alvcolor-color-inv = '0'.
l_alvcolor-nokeycol = 'X'.
append l_alvcolor to t_tab5-FLDNAME.
" l_alvcolor-fname = 'MENGE'.
" l_alvcolor-color-col = '7'.
" l_alvcolor-color-int = '1'.
" l_alvcolor-color-inv = '0'.
" l_alvcolor-nokeycol = 'X'.
" append l_alvcolor to t_tab5-FLDNAME.
append t_tab5.
clear: t_tab5. "記得清,否則t_tab5-FLDNAME以後再
"append l_alvcolor to t_tab5-FLDNAME.還是按第一次的
"-----3,設定內表哪個字段是存放("某單元格的顏色設定)
gs_layout-coltab_fieldname = 'FLDNAME'. "單元格
B>行處理
"---1定義
data: begin of t_tab5 OCCURS 0,
RCOLOR TYPE C LENGTH 1, "某行的顏色設定
SEL type c length 1,
MARK type c length 1,
MATNR like mara-matnr,
MENGE type c length 20,
end of t_tab5.
"-----2賦值
t_tab5-rcolor = 'C710'.
append t_tab5.
"-----3,設定內表哪個字段是存放行的顏色
gs_layout-info_fieldname = 'RCOLOR'. "行
C>列處理
"---1直接在顯示字段屬性中設定
gt_fieldcat-emphasize = 'C603'. "顏色,設置顏色時不可以與 關鍵值gt_fieldcat-key = 'X'.
一起使用
D>單元格是否可以修改&增加單擊按鈕
TYPE-POOLS: slis.
DATA: BEGIN OF ITAB OCCURS 0,
ZQRFH_ICON TYPE STRING,
ZLDATE TYPE string,
"ZLUSR TYPE ZLUSR,
K TYPE STRING,
FIELD_STYLE TYPE LVC_T_STYL, " 內表添加設置編輯狀態所需的欄位
END OF ITAB.
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_BUTTON_CLICK
FOR EVENT BUTTON_CLICK OF CL_GUI_ALV_GRID
IMPORTING ES_COL_ID ES_ROW_NO.
ENDCLASS.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_BUTTON_CLICK.
PERFORM BUTTON_CLICK USING ES_COL_ID ES_ROW_NO.
ENDMETHOD.
ENDCLASS.
DATA: GV_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER,
GV_EVENTS type SLIS_T_EVENT.
data: s_fieldcat type LVC_S_FCAT,
t_fieldcat type LVC_T_FCAT,
X_LAYOUT type LVC_S_LAYO.
START-OF-SELECTION.
S_FIELDCAT-FIELDNAME = 'ZQRFH_ICON'. " 設置列可編輯
S_FIELDCAT-EDIT = 'X'. "一定要先設可編輯
APPEND S_FIELDCAT TO T_FIELDCAT.
S_FIELDCAT-FIELDNAME = 'ZLDATE'. " 設置列可編輯
S_FIELDCAT-EDIT = 'X'. "一定要先設可編輯
APPEND S_FIELDCAT TO T_FIELDCAT.
itab-ZLDATE = '1'.
itab-ZQRFH_ICON = 'click'.
append itab.
clear itab.
itab-ZQRFH_ICON = 'click'.
itab-ZLDATE = '2'.
append itab.
clear itab.
DATA STYLELIN TYPE LVC_S_STYL.
LOOP AT ITAB.
"IF ITAB-ZXMDM = 'D' OR ITAB-ZXMDM = 'F' OR ITAB-ZXMDM = 'H'.
STYLELIN-FIELDNAME = 'ZLDATE'. " 需要編輯的列名
if itab-ZLDATE = '1'.
STYLELIN-STYLE = '00100000'. "CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. "
設置不可編輯狀態
endif.
APPEND STYLELIN TO ITAB-FIELD_STYLE.
CLEAR STYLELIN.
STYLELIN-FIELDNAME = 'ZQRFH_ICON'. " 需要按鈕的列名
STYLELIN-STYLE = '20000000'.
APPEND STYLELIN TO ITAB-FIELD_STYLE.
CLEAR STYLELIN.
MODIFY ITAB.
" ENDIF.
endloop.
X_LAYOUT-STYLEFNAME = 'FIELD_STYLE'. " 將內表中的欄位名存入顯示格式
PERFORM FM_EVENT_BUILD.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'"調用函數
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_DEFAULT = 'X'
I_SAVE = 'A'
IT_FIELDCAT_LVC = T_FIELDCAT
IS_LAYOUT_LVC = X_LAYOUT
IT_EVENTS = GV_EVENTS
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
END-OF-SELECTION.
FORM user_command USING rf_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield .
* FIELD-SYMBOLS: <fs>,<fs1>,<fs2>.
* ASSIGN COMPONENT 6 OF STRUCTURE rs_selfield TO <fs>.
* ASSIGN COMPONENT 14 OF STRUCTURE rs_selfield TO <fs1>.
* ASSIGN COMPONENT 2 OF STRUCTURE rs_selfield TO <fs2>.
* DATA: wa_analy LIKE gt_result.
* READ TABLE gt_result INDEX <fs2> INTO wa_analy.
* DATA: index TYPE i.
* DATA: answer TYPE c.
* DATA: refresh_list TYPE c.
* DATA: cursor_pos LIKE sy-tabix.
* rs_selfield-tabindex = sy-tabix.
*---------------------------------------------------------------------------
DATA ref TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref.
CALL METHOD ref->check_changed_data.
rs_selfield-refresh = 'X'.
*--------------------------------------------------------------------------
* IF SY-UCOMM = '&PRIN' OR
*SY-UCOMM = '&RNT_PREV' OR
*SY-UCOMM = '&RNT' OR SY-UCOMM = 'PRIN' OR SY-UCOMM = 'PRNT'.
* MESSAGE 'abc' TYPE 'E'.
* ENDIF.
CASE rf_ucomm.
WHEN 'SELA'.
"PERFORM sel_record USING 'X'.
WHEN 'DELA'.
" PERFORM sel_record USING ''.
WHEN 'ZPRINTC'.
"PERFORM GOODS_SLIP_LIST. "????±?
* WHEN 'ZPRINTB'.
* G_FORMNAME = 'ZSPP_MOA'.
* PERFORM set_data_to_print.
WHEN 'ZPRINTA'.
"G_FORMNAME = 'ZRPP031A_A5_N'.
"PERFORM set_data_to_print.
WHEN 'ZPRINTD'.
"G_FORMNAME = 'ZRPP031A_A5_N'.
"PERFORM set_data_to_print_b.
* WHEN 'RETURN' OR 'BACK' OR 'CANCE'.
* LEAVE TO SCREEN 0.
ENDCASE.
RS_SELFIELD-COL_STABLE = 'X'. "°O???J?I
RS_SELFIELD-ROW_STABLE = 'X'. "°O???J?I
RS_SELFIELD-REFRESH = 'X'. "??·s??·s
ENDFORM. "USER_COMMAND
FORM FM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.
DATA GV_GRID TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
E_GRID = GV_GRID
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
CREATE OBJECT GV_EVENT_RECEIVER.
SET HANDLER GV_EVENT_RECEIVER->HANDLE_BUTTON_CLICK FOR GV_GRID.
ENDFORM.
FORM FM_EVENT_BUILD.
DATA LV_EVENT LIKE LINE OF GV_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = GV_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* LV_EVENT-NAME = 'CALLER_EXIT'.
* LV_EVENT-FORM = 'FM_BUTTON'.
* APPEND LV_EVENT TO GV_EVENTS.
* delete GV_EVENTS where name = 'USER_COMMAND'.
* LV_EVENT-NAME = 'USER_COMMAND'.
* LV_EVENT-FORM = 'USER_COMMAND'.
* APPEND LV_EVENT TO GV_EVENTS.
READ TABLE GV_EVENTS WITH KEY NAME = 'CALLER_EXIT' INTO LV_EVENT .
IF SY-SUBRC = 0 .
LV_EVENT-FORM = 'FM_BUTTON' .
APPEND LV_EVENT TO GV_EVENTS . "add form 'TOP_OF_PAGE' to the events,
ENDIF. "perform the FORM 'to_of_page' .
ENDFORM.
DATA GV_GRID TYPE REF TO CL_GUI_ALV_GRID.
FORM BUTTON_CLICK USING P_COL_ID
P_ROW_NO TYPE lvc_s_roid.
"READ TABLE ITAB_ALVDATA INTO WA_ALVDATA INDEX P_ROW_NO-ROW_ID.
"PERFORM FM_DISPLAY_COMMENT.
MESSAGE '123' type 'S' DISPLAY LIKE 'E'.
ENDFORM.