一个很棒的ALV例子

功能:包括变式的设置,ICON、CHECK字段的设置,&F3标准功能的修改,双击事件的处理,复数行的选择,标题的设置等。

[@more@]

REPORT ZALV_MATERIAL_INFO.

*----------------------------------------------------------------------*

* INCLUDE

*----------------------------------------------------------------------*

INCLUDE .

*----------------------------------------------------------------------*

* TYPES

*----------------------------------------------------------------------*

TYPE-POOLS SLIS. "Used for ALV function

*----------------------------------------------------------------------*

* DATA

*----------------------------------------------------------------------*

*----- material information structure & itab

DATA:

BEGIN OF WA_MATERIAL,

CHECK TYPE C,

ICON1 LIKE ICON-ID,

MATNR LIKE MAKT-MATNR,

MAKTX LIKE MAKT-MAKTX,

END OF WA_MATERIAL.

DATA:

IT_MATERIAL LIKE TABLE OF WA_MATERIAL,

GW_MATNR LIKE MAKT-MATNR,

*----- ALV used

IT_EVENT TYPE SLIS_T_EVENT,

IT_HEADER TYPE SLIS_T_LISTHEADER,

WA_EXIT TYPE SLIS_EXIT_BY_USER, "RET-CODE CANCEL

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

GW_VARIANT LIKE DISVARIANT,

IT_EXIT TYPE SLIS_T_EVENT_EXIT WITH HEADER LINE,

*----- Program ID

GW_REPID LIKE SY-REPID,

*----- user's selection of pop up dialog

GW_ANSWER TYPE C.

*----------------------------------------------------------------------*

* CONSTANTS

*----------------------------------------------------------------------*

CONSTANTS:

C_TABNAM TYPE SLIS_TABNAME VALUE 'WA_MATERIAL',

C_PF_ST LIKE SY-PFKEY VALUE 'S001',

C_FN_TOP_PAGE TYPE SLIS_FORMNAME VALUE 'ALV_TOP_OF_PAGE'.

*----------------------------------------------------------------------*

* PARAMETERS

*----------------------------------------------------------------------*

PARAMETERS:

P_VARI TYPE DISVARIANT-VARIANT. "Layout

*----------------------------------------------------------------------*

* INITIALIZATION

*----------------------------------------------------------------------*

INITIALIZATION.

GW_REPID = SY-REPID. "Get Program ID

%_P_VARI_%_APP_%-TEXT = 'Display Variant'.

* BACK button

IT_EXIT-UCOMM = '&F03'.

IT_EXIT-BEFORE = 'X'.

IT_EXIT-AFTER = 'X'.

APPEND IT_EXIT TO IT_EXIT.

IT_EXIT-UCOMM = '&IC1'.

APPEND IT_EXIT TO IT_EXIT.

*----------------------------------------------------------------------*

* AT SELECTION-SCREEN

*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

* ALV layout help list

PERFORM F4_FOR_VARIANT USING P_VARI.

*----------------------------------------------------------------------*

* AT SELECTION-SCREEN

*----------------------------------------------------------------------*

AT SELECTION-SCREEN.

PERFORM CHECK_LAYOUT_VAR.

*----------------------------------------------------------------------*

* START-OF-SELECTION

*----------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM FRM_SELECT_DATA.

PERFORM FRM_OUTPUT_RESULT.

*&---------------------------------------------------------------------*

*& Form FRM_SELECT_DATA

*&---------------------------------------------------------------------*

* Select data from MAKT

*----------------------------------------------------------------------*

FORM FRM_SELECT_DATA.

SELECT MATNR

MAKTX

FROM MAKT

UP TO 10 ROWS

INTO CORRESPONDING FIELDS OF TABLE IT_MATERIAL.

*----- set icon

LOOP AT IT_MATERIAL INTO WA_MATERIAL.

WA_MATERIAL-ICON1 = ICON_GREEN_LIGHT.

MODIFY IT_MATERIAL FROM WA_MATERIAL.

ENDLOOP.

ENDFORM. " FRM_SELECT_DATA

*&---------------------------------------------------------------------*

*& Form FRM_OUTPUT_RESULT

*&---------------------------------------------------------------------*

* Display result

*----------------------------------------------------------------------*

FORM FRM_OUTPUT_RESULT.

*----- event table

PERFORM BUILD_EVENTTAB USING IT_EVENT.

*----- ALV layout

PERFORM SET_ALV_LAYOUT.

PERFORM CHANGE_ALV_LAYOUT.

*----- set ALV variant

PERFORM SET_ALV_VARIANT USING P_VARI.

*----- display ALV

PERFORM DISPLAY_ALV_GRID.

ENDFORM. " FRM_OUTPUT_RESULT

*&---------------------------------------------------------------------*

*& Form FRM_SET_PF_STAUS

*&---------------------------------------------------------------------*

* Set gui status

*----------------------------------------------------------------------*

FORM FRM_SET_PF_STAUS USING UT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS C_PF_ST. "S001

ENDFORM. " FRM_SET_PF_STAUS

*&---------------------------------------------------------------------*

*& Form FRM_HANDLE_USER_COMMAND

*&---------------------------------------------------------------------*

* Handle user command

*----------------------------------------------------------------------*

FORM FRM_HANDLE_USER_COMMAND USING U_UCOMM LIKE SY-UCOMM

UH_SELFIELD TYPE SLIS_SELFIELD.

CASE U_UCOMM.

WHEN '&F03'.

PERFORM POPUP_DIALOG.

IF GW_ANSWER <> '1'.

LEAVE SCREEN.

ELSE.

LEAVE TO SCREEN 0.

ENDIF.

WHEN 'CLER'.

* double click a line

WHEN '&IC1'.

READ TABLE IT_MATERIAL INTO WA_MATERIAL

INDEX UH_SELFIELD-TABINDEX.

GW_MATNR = WA_MATERIAL-MATNR.

SET PARAMETER ID: 'MAT' FIELD GW_MATNR.

CALL TRANSACTION 'MM03'.

WHEN '&REF'.

ENDCASE.

ENDFORM. " FRM_HANDLE_USER_COMMAND

*&---------------------------------------------------------------------*

*& Form BUILD_EVENTTAB

*&---------------------------------------------------------------------*

* Set event table

*----------------------------------------------------------------------*

FORM BUILD_EVENTTAB USING UT_EVENT TYPE SLIS_T_EVENT.

DATA: LH_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = UT_EVENT

EXCEPTIONS

OTHERS = 1.

READ TABLE UT_EVENT WITH KEY NAME = SLIS_EV_TOP_OF_PAGE

INTO LH_EVENT.

IF SY-SUBRC = 0.

MOVE C_FN_TOP_PAGE TO LH_EVENT-FORM.

MODIFY UT_EVENT FROM LH_EVENT INDEX SY-TABIX.

ENDIF.

ENDFORM. " BUILD_EVENTTAB

*&---------------------------------------------------------------------*

*& Form DISPLAY_ALV_GRID

*&---------------------------------------------------------------------*

* Show ALV in grid mode

*----------------------------------------------------------------------*

FORM DISPLAY_ALV_GRID.

DATA:

LTH_LAYOUT TYPE SLIS_LAYOUT_ALV,

LW_ALV_TITLE TYPE LVC_TITLE.

LW_ALV_TITLE = 'Material Info'.

LTH_LAYOUT-BOX_FIELDNAME = 'CHECK'.

LTH_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_INTERFACE_CHECK = SPACE

I_BUFFER_ACTIVE = SPACE

I_CALLBACK_PROGRAM = GW_REPID

* I_CALLBACK_PF_STATUS_SET = 'FRM_SET_PF_STAUS'

I_CALLBACK_USER_COMMAND = 'FRM_HANDLE_USER_COMMAND'

I_GRID_TITLE = LW_ALV_TITLE

IS_LAYOUT = LTH_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

I_DEFAULT = 'X'

I_SAVE = 'A'

IS_VARIANT = GW_VARIANT

IT_EVENTS = IT_EVENT

IT_EVENT_EXIT = IT_EXIT[]

IMPORTING

E_EXIT_CAUSED_BY_CALLER = WA_EXIT

TABLES

T_OUTTAB = IT_MATERIAL

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

ENDFORM. " DISPLAY_ALV_GRID

*&---------------------------------------------------------------------*

*& Form SET_ALV_LAYOUT

*&---------------------------------------------------------------------*

* set alv layout

*----------------------------------------------------------------------*

FORM SET_ALV_LAYOUT.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = GW_REPID

I_INTERNAL_TABNAME = C_TABNAM

* I_STRUCTURE_NAME =

* I_BYPASSING_BUFFER = 'X'

* I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = GW_REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT[]

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

ENDFORM. " SET_ALV_LAYOUT

*&---------------------------------------------------------------------*

*& Form CHANGE_ALV_TEXT

*&---------------------------------------------------------------------*

* set ALV catalog

*----------------------------------------------------------------------*

* --&gt U_VALUE text 項目

* --&gt U_LENTYP text 短中長の指定

* --&gt U_NAME text 項目名称

*----------------------------------------------------------------------*

FORM CHANGE_ALV_TEXT USING U_VALUE

U_LENTYP

U_NAME.

READ TABLE IT_FIELDCAT INTO WA_FIELDCAT WITH KEY FIELDNAME = U_VALUE.

IF SY-SUBRC = 0.

WA_FIELDCAT-DDICTXT = U_LENTYP.

WA_FIELDCAT-SELTEXT_L = U_NAME.

WA_FIELDCAT-SELTEXT_M = U_NAME.

WA_FIELDCAT-SELTEXT_S = U_NAME.

WA_FIELDCAT-REPTEXT_DDIC = U_NAME.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDIF.

ENDFORM. " CHANGE_ALV_TEXT

*&---------------------------------------------------------------------*

*& Form CHANGE_ALV_LAYOUT

*&---------------------------------------------------------------------*

* change ALV layout

*----------------------------------------------------------------------*

FORM CHANGE_ALV_LAYOUT.

PERFORM SET_CHECK_FIELD USING 'CHECK' 'X'.

PERFORM NO_DISPLAY_SET USING 'CHECK'.

PERFORM SET_ICON USING 'ICON1' 'X'.

* set ALV catalog

PERFORM CHANGE_ALV_TEXT

USING: 'ICON1' ' ' 'Status',

'MATNR' ' ' 'Material No',

'MAKTX' ' ' 'Material Description'.

ENDFORM. " CHANGE_ALV_LAYOUT

*&---------------------------------------------------------------------*

*& Form SET_ICON

*&---------------------------------------------------------------------*

* Set icon

*----------------------------------------------------------------------*

FORM SET_ICON USING U_FIELD TYPE SLIS_FIELDNAME

U_VALUE TYPE C.

READ TABLE IT_FIELDCAT INTO WA_FIELDCAT WITH KEY FIELDNAME = U_FIELD.

IF SY-SUBRC = 0.

WA_FIELDCAT-ICON = U_VALUE.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDIF.

ENDFORM. " SET_ICON

*&---------------------------------------------------------------------*

*& Form SET_CHECK_FIELD

*&---------------------------------------------------------------------*

* set check field

*----------------------------------------------------------------------*

FORM SET_CHECK_FIELD USING U_FIELD TYPE SLIS_FIELDNAME

U_VALUE TYPE C.

READ TABLE IT_FIELDCAT INTO WA_FIELDCAT

WITH KEY FIELDNAME = U_FIELD.

IF SY-SUBRC = 0.

WA_FIELDCAT-CHECKBOX = U_VALUE.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDIF.

ENDFORM. " SET_CHECK_FIELD

*&---------------------------------------------------------------------*

*& Form NO_DISPLAY_SET

*&---------------------------------------------------------------------*

* No display set

*----------------------------------------------------------------------*

FORM NO_DISPLAY_SET USING U_FIELD TYPE SLIS_FIELDNAME.

READ TABLE IT_FIELDCAT INTO WA_FIELDCAT

WITH KEY FIELDNAME = U_FIELD.

IF SY-SUBRC = 0.

WA_FIELDCAT-TECH = 'X'.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDIF.

ENDFORM. " NO_DISPLAY_SET

*&---------------------------------------------------------------------*

*& Form SET_INPUT_FIELD

*&---------------------------------------------------------------------*

* set input field

*----------------------------------------------------------------------*

FORM SET_INPUT_FIELD USING U_FIELD TYPE SLIS_FIELDNAME

U_VALUE TYPE C.

READ TABLE IT_FIELDCAT INTO WA_FIELDCAT

WITH KEY FIELDNAME = U_FIELD.

IF SY-SUBRC = 0.

WA_FIELDCAT-INPUT = U_VALUE.

MODIFY IT_FIELDCAT FROM WA_FIELDCAT INDEX SY-TABIX.

ENDIF.

ENDFORM. " SET_INPUT_FIELD

*&---------------------------------------------------------------------*

*& Form ALV_TOP_OF_PAGE

*&---------------------------------------------------------------------*

* set ALV header

*----------------------------------------------------------------------*

FORM ALV_TOP_OF_PAGE.

DATA: LH_LINE TYPE SLIS_LISTHEADER.

REFRESH IT_HEADER.

LH_LINE-TYP = 'S'.

LH_LINE-INFO = 'Header line1'.

APPEND LH_LINE TO IT_HEADER.

LH_LINE-TYP = 'S'.

LH_LINE-INFO = 'Header line2'.

APPEND LH_LINE TO IT_HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_HEADER.

ENDFORM. " ALV_TOP_OF_PAGE

*&---------------------------------------------------------------------*

*& Form POPUP_DIALOG

*&---------------------------------------------------------------------*

FORM POPUP_DIALOG.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = 'Previous screen'

TEXT_QUESTION = 'Do you really want to quit'

TEXT_BUTTON_1 = 'Yes'

TEXT_BUTTON_2 = 'No'

DEFAULT_BUTTON = '2'

DISPLAY_CANCEL_BUTTON = ''

START_COLUMN = 25

START_ROW = 6

IMPORTING

ANSWER = GW_ANSWER

EXCEPTIONS

TEXT_NOT_FOUND = 1

OTHERS = 2.

ENDFORM. " POPUP_DIALOG

*&---------------------------------------------------------------------*

*& Form F4_FOR_VARIANT

*&---------------------------------------------------------------------*

* ALV layout help list

*----------------------------------------------------------------------*

FORM F4_FOR_VARIANT USING U_VARI.

DATA:LI_VARIANT LIKE DISVARIANT,

LE_VARIANT LIKE DISVARIANT.

LI_VARIANT-REPORT = SY-REPID.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = LI_VARIANT

I_SAVE = 'A'

IMPORTING

ES_VARIANT = LE_VARIANT

EXCEPTIONS

NOT_FOUND = 2.

IF SY-SUBRC = 2.

* 選択されていません

MESSAGE S205(0K).

ELSE.

U_VARI = LE_VARIANT-VARIANT.

ENDIF.

ENDFORM. " F4_FOR_VARIANT

*&---------------------------------------------------------------------*

*& FORM CHECK_LAYOUT_VAR

*&---------------------------------------------------------------------*

* Check if layout variant exists

*----------------------------------------------------------------------*

FORM CHECK_LAYOUT_VAR.

DATA LH_DISVARIANT TYPE DISVARIANT.

IF NOT P_VARI IS INITIAL.

LH_DISVARIANT-REPORT = SY-REPID.

LH_DISVARIANT-VARIANT = P_VARI.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

I_SAVE = SPACE

CHANGING

CS_VARIANT = LH_DISVARIANT

EXCEPTIONS

WRONG_INPUT = 1

NOT_FOUND = 2

PROGRAM_ERROR = 3.

IF SY-SUBRC <> 0.

SET CURSOR FIELD 'P_VARI'.

* layout variant is not defined

MESSAGE E809(00) WITH P_VARI.

ENDIF.

ENDIF.

ENDFORM. " CHECK_LAYOUT_VAR

*&---------------------------------------------------------------------*

*& Form SET_ALV_VARIANT

*&---------------------------------------------------------------------*

* set ALV layout variant

*----------------------------------------------------------------------*

FORM SET_ALV_VARIANT USING U_VARI.

CLEAR GW_VARIANT.

GW_VARIANT-REPORT = SY-REPID.

IF NOT U_VARI IS INITIAL.

MOVE U_VARI TO GW_VARIANT-VARIANT.

ENDIF.

ENDFORM. " SET_ALV_VARIANT

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8214011/viewspace-910657/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8214011/viewspace-910657/

内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
基于Gin+GORM+Casbin+Vue.js的权限管理系统是一个采用前后端分离架构的企业级权限管理解决方案,专为软件工程和计算机科学专业的毕业设计项目开发。该系统基于Go语言构建后端服务,结合Vue.js前端框架,实现了完整的权限控制和管理功能,适用于各类需要精细化权限管理的应用场景。 系统后端采用Gin作为Web框架,提供高性能的HTTP服务;使用GORM作为ORM框架,简化数据库操作;集成Casbin实现灵活的权限控制模型。前端基于vue-element-admin模板开发,提供现代化的用户界面和交互体验。系统采用分层架构和模块化设计,确保代码的可维护性和可扩展性。 主要功能包括用户管理、角色管理、权限管理、菜单管理、操作日志等核心模块。用户管理模块支持用户信息的增删改查和状态管理;角色管理模块允许定义不同角色并分配相应权限;权限管理模块基于Casbin实现细粒度的访问控制;菜单管理模块动态生成前端导航菜单;操作日志模块记录系统关键操作,便于审计和追踪。 技术栈方面,后端使用Go语言开发,结合Gin、GORM、Casbin等成熟框架;前端使用Vue.js、Element UI等现代前端技术;数据库支持MySQL、PostgreSQL等主流关系型数据库;采用RESTful API设计规范,确保前后端通信的标准化。系统还应用了单例模式、工厂模式、依赖注入等设计模式,提升代码质量和可测试性。 该权限管理系统适用于企业管理系统、内部办公平台、多租户SaaS应用等需要复杂权限控制的场景。作为毕业设计项目,它提供了完整的源码和论文文档,帮助学生深入理解前后端分离架构、权限控制原理、现代Web开发技术等关键知识点。系统设计规范,代码结构清晰,注释完整,非常适合作为计算机相关专业的毕业设计参考或实际项目开发的基础框架。 资源包含完整的系统源码、数据库设计文档、部署说明和毕
下面是一个简单的 ABAP 代码示例,用于创建一个基本的 ALV 报表: ``` REPORT ztest_alv_report. * 定义内部表 DATA: itab TYPE TABLE OF sflight. * 从数据库中读取数据并存储到内部表中 SELECT * FROM sflight INTO TABLE itab. * 创建 ALV 报表 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid i_callback_top_of_page = 'TOP_OF_PAGE' TABLES t_outtab = itab. * 顶部回调函数 FORM top_of_page. DATA: header TYPE slis_selfield. header-seltext_l = 'Flight Number'. header-fieldname = 'CARRID'. APPEND header TO it_top_of_page. CLEAR header. header-seltext_l = 'Flight Date'. header-fieldname = 'FLDATE'. APPEND header TO it_top_of_page. CLEAR header. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = it_top_of_page. ENDFORM. ``` 这个例子中,我们定义了内部表 itab 用于存储从 sflight 表中读取的数据。然后,我们使用 REUSE_ALV_GRID_DISPLAY 函数创建了一个基本的 ALV 报表,传递了内部表 itab 作为输出表格。同时,我们指定了一个顶部回调函数 top_of_page,用于在报表的顶部添加标题栏。 在顶部回调函数中,我们定义了两个标题栏字段,分别是 Flight Number 和 Flight Date,然后将它们添加到 it_top_of_page 表格中。最后,我们使用 REUSE_ALV_COMMENTARY_WRITE 函数将标题栏添加到报表中。 以上代码只是一个简单的示例,实际的报表可能需要更多的功能和定制。但是,这个例子可以作为一个入门级别的指南,帮助你开始使用 ABAP 创建 ALV 报表。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值