*&
&---------------------------------------------------------------------
*&
*&
&---------------------------------------------------------------------
REPORT ZTEST_ALV1 NO STANDARD PAGE HEADING.
*@=@
*@ 声明数据库表
*@=@
TABLES: T006,
T006A.
*@=@
*@ 定义结构类型
*@=@
TYPES:BEGIN OF TYP_RESULT,
BOX TYPE C, "选择字段
MANDT TYPE MANDT,
SPRAS TYPE SPRAS,
MSEHI TYPE MSEHI,
MSEH3 TYPE MSEH3,
MSEH6 TYPE MSEH6,
MSEHT TYPE MSEHT,
MSEHL TYPE MSEHL,
COLOR TYPE LVC_T_SCOL, "用来保存字段的显示颜色
END OF TYP_RESULT.
*@=@
*@ 定义全局变量、内表与工作区
*@=@
DATA:GT_RESULT TYPE TABLE OF TYP_RESULT WITH HEADER LINE.
FIELD-SYMBOLS TYPE TYP_RESULT.
DATA:G_INDIC TYPE C.
@------------------ ALV 相关的变量 -----------------------------------
TYPE-POOLS:SLIS.
DATA:G_GRID TYPE REF TO CL_GUI_ALV_GRID,
G_REPID LIKE SY-REPID,
G_STRUCTURE_NAME TYPE TABNAME,
G_COMMAND TYPE SLIS_FORMNAME,
G_TITLE TYPE LVC_TITLE,
G_SETTING TYPE LVC_S_GLAY,
WA_PRINT TYPE SLIS_PRINT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WA_FIELDCAT LIKE LINE OF GT_FIELDCAT,
G_SAVE TYPE C,
G_CON_MARK TYPE SLIS_FIELDCAT_ALV-FIELDNAME VALUE ‘MARK’,
G_POS TYPE I.
- 用操作具体单元的是否可编辑的内表和工作区
DATA: WA_COLOR TYPE LVC_S_SCOL,
GT_COLOR TYPE LVC_T_SCOL,
WA_COLOR_6 TYPE LVC_S_COLO,
WA_COLOR_5 TYPE LVC_S_COLO,
WA_COLOR_4 TYPE LVC_S_COLO.
*@=@
*@ 定义宏
*@=@
DEFINE MCR_FIELD.
CLEAR WA_FIELDCAT.
G_POS = G_POS + 1 .
WA_FIELDCAT-COL_POS = G_POS.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-TABNAME = ‘TYP_RESULT’. - wa_fieldcat-no_out = ‘X’. "field no display, choose from layout
WA_FIELDCAT-KEY = ’ '. "SUBTOTAL KEY
WA_FIELDCAT-SELTEXT_L = &2.
WA_FIELDCAT-OUTPUTLEN = &3.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
*@=@
*@ SELECT-SCREEN 选择屏幕
*@=@
SELECTION-SCREEN BEGIN OF BLOCK XAVERY WITH FRAME TITLE TEXT-001.
PARAMETERS: P_SPRAS TYPE SPRAS OBLIGATORY. "语言代码
SELECT-OPTIONS:S_MSEHI FOR T006-MSEHI. "期间
SELECTION-SCREEN END OF BLOCK XAVERY.
*@=@
*@ 执行程序事件
*@=@
INITIALIZATION.
PERFORM SUB_INIT_COND. "初始化选择屏幕字段
START-OF-SELECTION.
PERFORM SUB_PROCESS_COND. "对选择条件进行处理
PERFORM SUB_QUERY_T006A . "查询相关数据
END-OF-SELECTION.
PERFORM SUB_CREATE_FIELDCAT.
PERFORM SUB_INIT_LAYOUT.
PERFORM SUB_DISPLAY_AS_ALV. "以ALV的方式输出结果表
&---------------------------------------------------------------------
*& Form SUB_INIT_COND
&---------------------------------------------------------------------
- 设置选择屏幕上的初始值
----------------------------------------------------------------------
FORM SUB_INIT_COND .
P_SPRAS = SY-LANGU.
ENDFORM. " SUB_INIT_COND
&---------------------------------------------------------------------
*& Form SUB_PROCESS_COND
&--------------------------------------------------------------------- - 对选择条件进行处理
----------------------------------------------------------------------
FORM SUB_PROCESS_COND .
ENDFORM. " SUB_PROCESS_COND
&---------------------------------------------------------------------
*& Form SUB_QUERY_T006A
&--------------------------------------------------------------------- - text
----------------------------------------------------------------------
FORM SUB_QUERY_T006A .
SELECT * FROM T006A
INTO CORRESPONDING FIELDS OF TABLE GT_RESULT
WHERE SPRAS EQ P_SPRAS AND
MSEHI IN S_MSEHI.
ENDFORM. " SUB_QUERY_T006A
&---------------------------------------------------------------------
*& Form SUB_CREATE_FIELDCAT
&--------------------------------------------------------------------- - text
----------------------------------------------------------------------
FORM SUB_CREATE_FIELDCAT .
CLEAR GT_FIELDCAT[].
MCR_FIELD ‘MANDT’ ‘客户端’ ‘8’.
MCR_FIELD ‘SPRAS’ ‘语言代码’ ‘8’.
MCR_FIELD ‘MSEHI’ ‘计量单位’ ‘4’.
MCR_FIELD ‘MSEH3’ ‘商业格式中外部计量单’ ‘18’.
MCR_FIELD ‘MSEH6’ ‘技术格式中的外部计量单’ ‘30’.
MCR_FIELD ‘MSEHT’ ‘度量单位文本’ ‘10’.
MCR_FIELD ‘MSEHL’ ‘度量单位长文本’ ‘20’.
ENDFORM. " SUB_CREATE_FIELDCAT
&---------------------------------------------------------------------
*& Form SUB_INIT_LAYOUT
&--------------------------------------------------------------------- - text
----------------------------------------------------------------------
FORM SUB_INIT_LAYOUT .
WA_LAYOUT-ZEBRA = ‘X’.
WA_LAYOUT-WINDOW_TITLEBAR = ‘计量单位查询清单’.
WA_LAYOUT-COLWIDTH_OPTIMIZE = ‘X’.
WA_LAYOUT-BOX_FIELDNAME = ‘BOX’.
WA_LAYOUT-COLTAB_FIELDNAME = ‘COLOR’.
G_TITLE = ‘Fuck God’.
WA_COLOR_4-COL = ‘1’.
WA_COLOR_4-INT = ‘0’.
WA_COLOR_4-INV = ‘0’.
WA_COLOR_5-COL = ‘5’.
WA_COLOR_5-INT = ‘0’.
WA_COLOR_5-INV = ‘0’.
WA_COLOR_6-COL = ‘6’.
WA_COLOR_6-INT = ‘0’.
WA_COLOR_6-INV = ‘0’. - 设置特定字段的颜色
LOOP AT GT_RESULT ASSIGNING .
REFRESH GT_COLOR.
IF -SPRAS = ‘1’.
CLEAR WA_COLOR.
WA_COLOR-FNAME = ‘MSEHT’.
WA_COLOR-COLOR = WA_COLOR_6.
APPEND WA_COLOR TO GT_COLOR.
ENDIF.
IF -MSEH3+0(1) = ‘M’.
CLEAR WA_COLOR.
WA_COLOR-FNAME = ‘MSEHI’.
WA_COLOR-COLOR = WA_COLOR_5.
APPEND WA_COLOR TO GT_COLOR.
ELSEIF -MSEH3+0(1) = ‘B’.
CLEAR WA_COLOR.
WA_COLOR-FNAME = ‘MSEHI’.
WA_COLOR-COLOR = WA_COLOR_4.
APPEND WA_COLOR TO GT_COLOR.
ENDIF.
-COLOR = GT_COLOR.
ENDLOOP.
ENDFORM. " SUB_INIT_LAYOUT
&---------------------------------------------------------------------
*& Form SUB_DISPLAY_AS_ALV
&--------------------------------------------------------------------- - text
----------------------------------------------------------------------
FORM SUB_DISPLAY_AS_ALV .
G_REPID = SY-REPID.
G_SETTING-COLL_TOP_P = ‘X’. "最小化 CALLBACK-TOP-OF-PAGE.
*ABAP List Viewer
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_STRUCTURE_NAME = ‘TYP_RESULT’
I_GRID_TITLE = G_TITLE
I_GRID_SETTINGS = G_SETTING
I_CALLBACK_USER_COMMAND = ‘SUB_USER_COMMAND’ -
TABLESI_CALLBACK_PF_STATUS_SET = 'SUB_SET_PF_STATUS' I_CALLBACK_TOP_OF_PAGE = 'SUB_TOP_OF_PAGE' I_SAVE = G_SAVE IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = GT_FIELDCAT[]
T_OUTTAB = GT_RESULT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " SUB_DISPLAY_AS_ALV
@--------------------------------------------------------------------
*@ Form sub_user_command
@-------------------------------------------------------------------- - –>R_UCOMM 事务功能码
- –>RS_SELFIELD ALV相关的数据
---------------------------------------------------------------------
FORM SUB_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN ‘&IC1’. "双击事件的功能码
WHEN ‘CLEAR’.
PERFORM SUB_UCOMM_CLEAR. "清空操作
ENDCASE. - 刷新ALV报表
- CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
- IMPORTING
- e_grid = g_grid.
- CALL METHOD g_grid->check_changed_data.
- CALL METHOD g_grid->refresh_table_display.
RS_SELFIELD-REFRESH = ‘X’.
ENDFORM. "sub_user_command
@---------------------------------------------------------------------
*@ FORM SUB_SET_PF_STATUS *
@--------------------------------------------------------------------- - 设置ALV菜单
- 通过SE41,拷贝程序SAPLSLVC_FULLSCREEN的状态STANDARD_FULLSCREEN过来
@---------------------------------------------------------------------
FORM SUB_SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS ‘STANDARD_FULLSCREEN’.
ENDFORM. "sub_set_pf_status
&---------------------------------------------------------------------
*& Form sub_top_of_page
&--------------------------------------------------------------------- - text
----------------------------------------------------------------------
FORM SUB_TOP_OF_PAGE.
DATA: GS_LINE TYPE SLIS_LISTHEADER.
REFRESH GT_LIST_TOP_OF_PAGE. - 第一行
CLEAR GS_LINE.
GS_LINE-TYP = ‘H’.
GS_LINE-INFO = ‘Xavery Hsueh’.
APPEND GS_LINE TO GT_LIST_TOP_OF_PAGE. - 第二行
CLEAR GS_LINE.
GS_LINE-TYP = ‘S’.
GS_LINE-INFO = ‘Created by’.
CONCATENATE GS_LINE-INFO ‘Xavery Huseh On’ INTO GS_LINE-INFO.
CONCATENATE GS_LINE-INFO ‘2008-08-08’ INTO GS_LINE-INFO.
APPEND GS_LINE TO GT_LIST_TOP_OF_PAGE. - 第三行
CLEAR GS_LINE.
GS_LINE-TYP = ‘A’.
GS_LINE-INFO = ‘Double Click’.
APPEND GS_LINE TO GT_LIST_TOP_OF_PAGE. - 输出抬头
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM. "sub_top_of_page
&---------------------------------------------------------------------
*& Form SUB_UCOMM_CLEAR
&--------------------------------------------------------------------- - 清空字段MSEHT的颜色
----------------------------------------------------------------------
FORM SUB_UCOMM_CLEAR .
LOOP AT GT_RESULT ASSIGNING .
CLEAR -COLOR.
ENDLOOP.
ENDFORM. " SUB_UCOMM_CLEAR