目录
The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。
①定义ALV所需要用到的类型池:TYPE-POOLS:SLIS.
②定义ALV所要显示的数据对应的内表数据类型及内表数据对象
③定义一些显示ALV时所需要使用的变量
④定义选择屏幕
⑤声明各个选择屏幕事件块
REPORT ZMMRTEST. *****************************TABLES TABLES:marc. *****************************Data Definitions *定义ALV所要显示的数据对应的内表数据类型及内表数据对象 TYPES: BEGIN OF ty_data, matnr LIKE mara-matnr, "物料號碼 maktx LIKE makt-maktx, "物料说明 groes LIKE mara-groes, "规格 END OF ty_data. DATA: gt_data TYPE TABLE OF ty_data, gt_makt LIKE TABLE OF makt, wa_data LIKE LINE OF gt_data, wa_makt LIKE LINE OF gt_makt. *定义一些显示ALV时所需要使用的变量 *定义ALV所需要用到的类型池 TYPE-POOLS slis. "定义和LAYOUT和FIELDCAT DATA: gs_layout TYPE slis_layout_alv, gt_fieldcat TYPE slis_t_fieldcat_alv, wa_fieldcat TYPE slis_fieldcat_alv. *****************************Selection Screen *定义选择屏幕 PARAMETERS: p_werks LIKE marc-werks DEFAULT '2000' OBLIGATORY. SELECT-OPTIONS: s_matnr FOR marc-matnr. *****************************Main Process *声明各个选择屏幕事件块 START-OF-SELECTION. PERFORM get_data. PERFORM display_data. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* FORM get_data . SELECT marc~matnr mara~groes INTO CORRESPONDING FIELDS OF TABLE gt_data FROM marc INNER JOIN mara ON marc~matnr EQ mara~matnr WHERE marc~matnr IN s_matnr AND marc~werks EQ p_werks. SELECT * INTO TABLE gt_makt FROM makt WHERE matnr IN s_matnr AND spras = sy-langu. SORT: gt_data BY matnr, gt_makt BY matnr. LOOP AT gt_data INTO wa_data. READ TABLE gt_makt INTO wa_makt WITH KEY matnr = wa_data-matnr BINARY SEARCH. IF sy-subrc = 0. wa_data-maktx = wa_makt-maktx. ENDIF. MODIFY gt_data FROM wa_data. ENDLOOP. ENDFORM. " GET_DATA *&---------------------------------------------------------------------* *& Form DISPLAY_DATA *&---------------------------------------------------------------------* FORM display_data. "栏位最适宽度 gs_layout-colwidth_optimize = 'X'. PERFORM set_fieldcat. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = gs_layout it_fieldcat = gt_fieldcat[] * i_callback_pf_status_set = 'alv_pf_status' " 触发事件调用子程序 * i_callback_user_command = 'alv_user_command' " 鼠标事件操作子程序 i_save = 'A' TABLES t_outtab = gt_data EXCEPTIONS program_error = 1 OTHERS = 2. ENDFORM. " DISPLAY_DATA *&---------------------------------------------------------------------* *& Form SET_FIELDCAT *&---------------------------------------------------------------------* FORM set_fieldcat. DEFINE fieldcat. wa_fieldcat-fieldname = &1. "对应内表字段名 wa_fieldcat-seltext_l = &2. "输出列文本 APPEND wa_fieldcat TO gt_fieldcat.CLEAR wa_fieldcat. END-OF-DEFINITION. fieldcat 'MATNR' '物料'. fieldcat 'MAKTX' '物料说明'. fieldcat 'GROES' '规格'. ENDFORM. " SET_FIELDCAT