ALV控件需要出现最左边的选中列,并且多选了行后,在GT_ALV中可以有标记。
1、选中ALV:
2、在GT_ALV中有一个字段,鼠标点选后,选中的行内表中会打上X。
3、ABAP代码如下:
*---------------------------------------------------------------------
* Form SHOW_DATA
*---------------------------------------------------------------------
FORM FRM_SHOW_DATA .
DATA: WS_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
WS_LAYOUT TYPE SLIS_LAYOUT_ALV,
WS_SORTFIELDS_TAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
WS_EVENTS TYPE SLIS_T_EVENT.
DATA: NN TYPE I VALUE 0.
DATA: TITLE TYPE LVC_TITLE.
DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*
DEFINE HOUT.
NN = NN + 1.
WS_FIELDCAT-COL_POS = NN.
WS_FIELDCAT-TABNAME = 'GT_ALV'.
WS_FIELDCAT-KEY = &1.
WS_FIELDCAT-FIELDNAME = &2.
WS_FIELDCAT-SELTEXT_M = &3.
WS_FIELDCAT-CFIELDNAME = &4.
WS_FIELDCAT-DATATYPE = &5.
WS_FIELDCAT-REF_TABNAME = &6.
WS_FIELDCAT-REF_FIELDNAME = &7.
WS_FIELDCAT-DO_SUM = &8.
WS_FIELDCAT-HOTSPOT = &9.
APPEND WS_FIELDCAT.
CLEAR WS_FIELDCAT.
END-OF-DEFINITION.
HOUT:
'' 'ordid' '订单ID' '' '' '' '' '' '',
'' 'ZTP' '点位' '' '' '' '' '' '',
'' 'ordno' '订单号' '' '' '' '' '' '',
'' 'werks' '工厂' '' '' '' '' '' '',
'' 'matnr' '物料' '' '' '' '' '' '',
'' 'status' '状态' '' '' '' '' '' '',
'' 'message' '消息' '' '' '' '' '' ''.
WS_LAYOUT-BOX_FIELDNAME = 'SELXXX'.
WS_LAYOUT-ZEBRA = 'X'.
WS_LAYOUT-GET_SELINFOS = 'X'.
WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WS_LAYOUT-DETAIL_POPUP = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'ALV_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'ALV_USER_COMMAND'
IS_LAYOUT = WS_LAYOUT
IT_FIELDCAT = WS_FIELDCAT[]
IT_SPECIAL_GROUPS = WS_FIELDGROUPS_TAB[]
IT_SORT = WS_SORTFIELDS_TAB[]
IT_EVENTS = WS_EVENTS[]
I_GRID_TITLE = TITLE
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_ALV[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " OUTPUT_DATA
FORM ALV_STATUS_SET USING PT_EXTAB TYPE SLIS_T_EXTAB.
CLEAR: PT_EXTAB[].
SET PF-STATUS '100'.
ENDFORM.
FORM ALV_USER_COMMAND USING P_UCOMM LIKE SY-UCOMM P_SELFIELD TYPE SLIS_SELFIELD. "P_SELFIELD 用户鼠标选择的一个字段
CASE P_UCOMM.
WHEN '&GO'.
* LOOP AT gt_alv ASSIGNING <f_alv>.
* IF <f_alv>-status NE 'E'.
* PERFORM frm_point_pass CHANGING <f_alv>.
* ENDIF.
* UPDATE ztpd0008 SET execute_status = <f_alv>-status
* execute_msg = <f_alv>-message
* WHERE ordno = <f_alv>-ordno AND ztp = <f_alv>-ztp.
* ENDLOOP.
WHEN 'B2'.
ENDCASE.
ENDFORM.