ALV基础二:ALV的扩展功能
https://www.cnblogs.com/sapSB/p/8532072.html
参考这个,做扩展,有些人喜欢用OO ALV有些喜欢用普通的CALL FUNC ALV。。。我只用LVC。。。
先说明一下,每个报表程序,我都会自定义工具栏,只是为了以防万一。工具栏有个一键填充的功能,可以把ALV常用的按钮都添加到工具栏,所以不需要自己去想加什么按钮。。
双击按钮进入工具栏界面,

入图,选择调整模板

普通的LIST,选择list viewer,下面那个复制程序的工具栏还不如直接从程序复制快。。。然后就可以了。
打印:https://www.cnblogs.com/sapSB/p/7735719.html
编辑:https://www.cnblogs.com/sapSB/p/5168184.html
今天新做的个测试例子:
REPORT YLY001. DATA:GT_FIELDCAT TYPE LVC_T_FCAT.
DATA GS_FIELDCAT LIKE LINE OF GT_FIELDCAT.
DATA LS_LAYOUT TYPE LVC_S_LAYO.
DATA LT_EVENT TYPE SLIS_T_EVENT.
DATA LS_EVENT LIKE LINE OF LT_EVENT.
DATA LR_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA:GT_T100 TYPE STANDARD TABLE OF T100,
GS_T100 TYPE T100. DEFINE APPEND_FIELDCAT .
CLEAR GS_FIELDCAT.
GS_FIELDCAT-FIELDNAME = &.
GS_FIELDCAT-SCRTEXT_L = &.
GS_FIELDCAT-OUTPUTLEN = &.
GS_FIELDCAT-NO_ZERO = &.
GS_FIELDCAT-EDIT = &.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION. START-OF-SELECTION.
PERFORM PRM_GET_DATA.
* PERFORM PRM_SET_FIELD.
PERFORM PRM_SHOW.
*&---------------------------------------------------------------------*
*& Form PRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_DATA .
SELECT * INTO TABLE GT_T100 FROM T100 UP TO ROWS WHERE SPRSL = 'E' AND ARBGB = 'ZCRM_MSG'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PRM_SHOW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_SHOW .
REFRESH GT_FIELDCAT.
LS_LAYOUT-CWIDTH_OPT = 'X'. "优化列宽选项是否设置
LS_LAYOUT-ZEBRA = 'X'.
* ls_layout-box_fname = 'SEL'.
APPEND_FIELDCAT:'SPRSL' '语言' 'X' '',
'ARBGB' '区域' 'X' '',
'MSGNR' '消息号' 'X' 'X',
'TEXT' '消息文本' '' ''. DATA:LV_TITLE TYPE LVC_TITLE. DESCRIBE TABLE GT_T100 LINES LV_TITLE.
CONDENSE LV_TITLE NO-GAPS. CONCATENATE '结果共' LV_TITLE '条目!' INTO LV_TITLE. REFRESH:LT_EVENT.
LS_EVENT-FORM = 'DATA_CHANGED_METHOD'.
LS_EVENT-NAME = 'DATA_CHANGED'.
APPEND LS_EVENT TO LT_EVENT. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PRM_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'PRM_USER_COMMAND'
IS_LAYOUT_LVC = LS_LAYOUT
IT_FIELDCAT_LVC = GT_FIELDCAT[]
I_GRID_TITLE = LV_TITLE
IT_EVENTS = LT_EVENT
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = GT_T100
EXCEPTIONS
PROGRAM_ERROR =
OTHERS = .
IF SY-SUBRC <> .
ENDIF.
ENDFORM.
FORM PRM_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'ZSTAT'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LR_GRID. CALL METHOD LR_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
IF SY-SUBRC <> .
ENDIF.
ENDFORM.
FORM PRM_USER_COMMAND USING P_UCOMM LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD. CHECK P_UCOMM = '&IC1'.
ENDFORM.
FORM DATA_CHANGED_METHOD
USING PA_DATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL .
DATA:
L_IT_DATA TYPE LVC_T_MODI,
L_WA_DATA LIKE LINE OF L_IT_DATA.
FIELD-SYMBOLS:<LV_FIELD> TYPE ANY. L_IT_DATA = PA_DATA_CHANGED->MT_MOD_CELLS. CHECK L_IT_DATA IS NOT INITIAL. LOOP AT PA_DATA_CHANGED->MT_MOD_CELLS INTO L_WA_DATA.
READ TABLE GT_T100 INTO GS_T100 INDEX L_WA_DATA-ROW_ID.
IF SY-SUBRC = .
ASSIGN COMPONENT L_WA_DATA-FIELDNAME OF STRUCTURE GS_T100 TO <LV_FIELD>.
IF SY-SUBRC = .
<LV_FIELD> = L_WA_DATA-VALUE.
IF L_WA_DATA-FIELDNAME = 'MSGNR'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = GS_T100-MSGNR
IMPORTING
OUTPUT = GS_T100-MSGNR. SELECT SINGLE TEXT INTO GS_T100-TEXT FROM T100 WHERE SPRSL = GS_T100-SPRSL AND ARBGB = GS_T100-ARBGB AND MSGNR = GS_T100-MSGNR.
ENDIF.
MODIFY GT_T100 FROM GS_T100 INDEX L_WA_DATA-ROW_ID.
ENDIF.
ENDIF.
ENDLOOP. CALL METHOD LR_GRID->REFRESH_TABLE_DISPLAY.
ENDFORM. " DATA_CHANGED_METHOD
ALV基础二:ALV的扩展功能的更多相关文章
- ABAP基础二:ALV基础之ALV的简单编辑
前两天有个打印需求变更,需要在ALV显示列表中添加两个字段,可编辑,而我自己用的是函数:REUSE_ALV_GRID_DISPLAY_LVC 因为之前做可编辑基本都是固定套路,定义类,画屏幕.... ...
- ABAP基础一:ALV基础之ALV的整体结构
很久没摸ECC了,最近看到很多新人在捯饬ALV...中国就喜欢量产垃圾...培训,上岗...没有行业道德... 闲话不多说,开始正事: ALV很常见,在SAP非WEB的项目,没有不用的,它包含了报表和 ...
- OO方式下,ALV TREE和ALV GRID的不同之处
作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Bootstrap <基础二十九>面板(Panels)
Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...
- Bootstrap<基础二十七> 多媒体对象(Media Object)
Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论),我们可以在组件中使用图文混排,图像可以左对齐或者右对齐.媒体对象可以用更少的 ...
- Bootstrap <基础二十六>进度条
Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
随机推荐
- FPGA总结——杂谈
数字设计 一.关于组合逻辑 竞争冒险:一个逻辑门的多个输入信号同时跳变(路径时延不同,使得状态改变的时刻有先有后).这种现象叫做竞争,引起的结果称为冒险. 消除毛刺(冒险):(1)增加冗余项:(2 ...
- EntityFreamWork 项目总结
前段时间一直在忙着处理一个B2C的商城项目,未来得整理这次项目的心得,今天偶有空闲便写下这篇文章以记录整个项目的设计及自我总结. 这个项目是我综合传智播客教学基础将传统三层架构与EntityFrame ...
- javascript callback
https://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/ MDN web docs htt ...
- DataCommand和DataAdapter
SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAda ...
- 记账本微信小程序开发七
完成所有后续代码 主页代码 教程做的感觉很好,但是自己做出来感觉就low了很多,还是有很多需要改进的地方,这也是我下一步的改进点.
- 一文理解 Java NIO 核心组件
同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下[1]. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相对于同步, ...
- Linux下按扇区读写块设备
本文介绍Linux下按扇区读写块设备(示例TF卡),实际应用是在Android系统上,主要方法如下: 1.找到sdcard的挂载点,在android2.1系统下应该为/dev/block/mmcblk ...
- vector和list
vector vector与数组类似,拥有一段连续的内存空间,并且起始地址不变.便于随机访问,时间复杂度为O(1),但因为内存空间是连续的,所以在进入插入和删除操作时,会造成内存块的拷贝,时间复杂度为 ...
- Python3 tkinter基础 Menu add_radiobutton 单选的下拉菜单
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- UVA11992 Fast Matrix Operations
思路 注意到最多20行,拆成20颗线段树即可 注意set标记清空左右儿子的add,不要清空自己的add,因为这个set操作之后可能还有add存在这个节点上 代码 #include <cstdio ...