目录
The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。
①定义ALV所需要用到的类型池:TYPE-POOLS:SLIS.
②定义ALV所要显示的数据对应的内表数据类型及内表数据对象
③定义一些显示ALV时所需要使用的变量
④定义选择屏幕
⑤声明各个选择屏幕事件块
*Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST . *定义ALV所需要用到的类型池 TYPE-POOLS SLIS. *****************************TABLES TABLES:MARD. *****************************Data Definitions *定义ALV所要显示的数据对应的内表数据类型及内表数据对象 DATA: BEGIN OF GT_MARD OCCURS 0, "一般物料資料 MATNR LIKE MARD-MATNR , "物料號碼 WERKS LIKE MARD-WERKS, "工厂 LABST LIKE MARD-LABST, "未限制使用的已估價庫存 END OF GT_MARD. *定义一些显示ALV时所需要使用的变量 DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. "定义FIELDCAT *****************************Selection Screen *定义选择屏幕 PARAMETERS: P_MATNR LIKE MARD-MATNR OBLIGATORY. *****************************Main Process *声明各个选择屏幕事件块 START-OF-SELECTION. PERFORM GET_DATA. PERFORM ALV_DISPLAY. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* FORM GET_DATA . SELECT MATNR WERKS LABST INTO TABLE GT_MARD FROM MARD WHERE MATNR = P_MATNR. ENDFORM. " GET_DATA *&---------------------------------------------------------------------* *& Form ALV_SHOW *&---------------------------------------------------------------------* FORM ALV_SHOW . *將ITAB欄位轉換為ALV欄位(欄位說明作為欄位標題) CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE‘ EXPORTING I_PROGRAM_NAME = SY-CPROG I_INTERNAL_TABNAME = ‘GT_MARD‘ I_CLIENT_NEVER_DISPLAY = ‘X‘ I_INCLNAME = SY-CPROG CHANGING CT_FIELDCAT = GT_FIELDCAT EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3. * 显示ALV的函数 CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM = SY-REPID IT_FIELDCAT = GT_FIELDCAT[] I_SAVE = ‘A‘ "保存全局,特定變式 TABLES T_OUTTAB = GT_MARD EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. " ALV_SHOW
运行效果
*Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST . *定义ALV所需要用到的类型池 TYPE-POOLS SLIS. *****************************TABLES TABLES:MARD. *****************************Data Definitions *定义ALV所要显示的数据对应的内表数据类型及内表数据对象 DATA: BEGIN OF GT_MARD OCCURS 0, "一般物料資料 MATNR LIKE MARD-MATNR , "物料號碼 WERKS LIKE MARD-WERKS, "工厂 LABST LIKE MARD-LABST, "未限制使用的已估價庫存 END OF GT_MARD. *定义一些显示ALV时所需要使用的变量 DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE. "定义FIELDCAT *****************************Selection Screen *定义选择屏幕 PARAMETERS: P_MATNR LIKE MARD-MATNR OBLIGATORY. *****************************Main Process *声明各个选择屏幕事件块 START-OF-SELECTION. PERFORM GET_DATA. PERFORM CATA_LOG. PERFORM ALV_SHOW. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* FORM GET_DATA . SELECT MATNR WERKS LABST INTO TABLE GT_MARD FROM MARD WHERE MATNR = P_MATNR. ENDFORM. " GET_DATA *&---------------------------------------------------------------------* *& Form CATA_LOG *&---------------------------------------------------------------------* FORM CATA_LOG . DEFINE FILL_FDCAT. GT_FIELDCAT-FIELDNAME = &1. GT_FIELDCAT-SELTEXT_L = &2. APPEND GT_FIELDCAT. END-OF-DEFINITION. FILL_FDCAT ‘MATNR‘ ‘物料编号‘. FILL_FDCAT ‘WERKS‘ ‘工厂‘. FILL_FDCAT ‘LABST‘ ‘库存‘. ENDFORM. " CATA_LOG *&---------------------------------------------------------------------* *& Form ALV_SHOW *&---------------------------------------------------------------------* FORM ALV_SHOW. * 显示ALV的函数 CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY‘ EXPORTING I_CALLBACK_PROGRAM = SY-REPID IT_FIELDCAT = GT_FIELDCAT[] I_SAVE = ‘A‘ "保存全局,特定變式 TABLES T_OUTTAB = GT_MARD EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. " ALV_SHOW
运行效果