SAP:SALV刷新按钮事件

news/2024/10/2 3:36:42

SAP SALV刷新事件

1、主程序

*&---------------------------------------------------------------------*
*& Report  Z17_04
*&
*&---------------------------------------------------------------------*
*& 全屏Classic List模式
*& LIST_DISPLAY : 用SALV显示与传统式REUSE_ALV_LIST_DISPLAY函数输出ALV
*& 一样效果的报表。
*& 36、USER-COMMAND事件是追加在TOOLBAR事件中追加的图标功能的事件。追加当
*&   单击REFRESS按钮时从表SFLIGHT中取得10件数据的逻辑。
*& 问题: 没有搞懂类的定义、实现与子程序之间的顺序 。
*&---------------------------------------------------------------------*REPORT Z17_36.DATA: gt_itab type table of sflight.
DATA: gr_table TYPE REF TO CL_SALV_TABLE.
DATA: gr_function type ref to cl_salv_functions_list." 应用工具栏
DATA: gr_container type ref to cl_gui_custom_container.
DATA: OK_CODE type syucomm.SELECT * FROM  SFLIGHT INTO CORRESPONDING FIELDS OF TABLEgt_itab up to 25 rows.*& #REGION: 用 屏幕100代替
*cl_salv_table=>factory(
*  EXPORTING
*    list_display = abap_true
*  IMPORTING
*    r_salv_table = gr_table
*  CHANGING
*    t_table = gt_itab
*      ).*& #region:  应用工具栏
*gr_function = gr_table->get_functions( ).
*gr_function->set_default( ).
*gr_function->set_all( abap_true ).
*& #endregion:  应用工具栏
**gr_table->display( ).
*& #ENDREGION: 用 屏幕100代替*& 调用自定义的屏幕100
CALL SCREEN 0100.*&---------------------------------------------------------------------*
*& CLASS lcl_handle_events DEFINTION
*&---------------------------------------------------------------------*
CLASS lcl_handle_events DEFINITION.PUBLIC SECTION.methods:on_user_command FOR EVENT added_function of cl_salv_eventsIMPORTING e_salv_function.
ENDCLASS. " lcl_handle_events DEFINITION*&---------------------------------------------------------------------*
*& CLASS lcl_handle_event IMPLEMENTATION
*&---------------------------------------------------------------------*
CLASS lcl_handle_events IMPLEMENTATION.METHOD on_user_command.PERFORM handle_user_command USING e_salv_function.ENDMETHOD. " on_user_command
ENDCLASS. " lcl_handle_events IMPLEMENTATIONDATA: gr_event type ref to lcl_handle_events.data: lr_event TYPE REF TO cl_salv_events_table.  " 定义事件变量*& 屏幕输出后事件 子程序
INCLUDE Z17_36_PBO.
*INCLUDE Z17_35_PBO.
*INCLUDE z17_04_pbo.*& 屏幕的输入前事件 子程序
INCLUDE Z17_36_PAI.
*INCLUDE Z17_35_PAI.
*INCLUDE z17_04_pai.*&---------------------------------------------------------------------*
*&  FORM handle_user_command
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
FORM handle_user_command USING p_function type salv_de_function.CASE p_function .when 'REFRESH'.perform refresh.WHEN OTHERS.ENDCASE.ENDFORM. " handle__user_command.
*&---------------------------------------------------------------------*
*& FORM REFRESH 刷新事件
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
FORM  Refresh.SELECT * FROM SFLIGHTINTO CORRESPONDING FIELDS OF TABLE gt_itabUP TO 10 rows.gr_table->refresh( ).
ENDFORM. " REFRESH FORM.

  

2、屏幕逻辑流

PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.MODULE 0100_PBO.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.MODULE 0100_PAI.

  

3、 PAI 子程序

*----------------------------------------------------------------------*
***INCLUDE Z17_36_PAI.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  0100_PAI  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE 0100_PAI INPUT.CASE OK_CODE.WHEN 'BACK' OR 'EXIT' OR  'CANC'.SET SCREEN 0.LEAVE SCREEN.ENDCASE.
ENDMODULE.                 " 0100_PAI  INPUT

  

4、 PBO子程序 

*----------------------------------------------------------------------*
***INCLUDE Z17_36_PBO.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  0100_PBO  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE 0100_PBO OUTPUT.SET PF-STATUS '0100'.IF gr_container is not bound.*& 1. Create ContainerCREATE OBJECT gr_containerexportingcontainer_name = 'CONTAINER'.*& 2. CREATE ALVcl_salv_table=>factory(exportingr_container = gr_containercontainer_name = 'CONTAINER'IMPORTINGr_salv_table = gr_tableCHANGINGt_table = gt_itab).*& 3. SET ALV BUTTONgr_function = gr_table->get_functions( ).gr_function->set_all( abap_true ). " 追加ALV所有功能*& 3.1
*& #region: 追加刷新按钮INCLUDE <icon>.DATA: l_icon TYPE string .l_icon = icon_refresh.gr_function->add_function(name = 'REFRESH'icon = l_icontext = 'REFRESH'tooltip = 'REFRESH'position = if_salv_c_function_position=>right_of_salv_functions).
*&
*& #endregion: 追加刷新按钮*& 3.2
*& #REGION: 注册事件
lr_event = gr_table->get_event( ).
Create object gr_event .
SET HANDLER gr_event->on_user_command for lr_event .
*& #ENDREGION: 注册事件*& 4. Call alvgr_table->display( ).ENDIF.
ENDMODULE.                 " 0100_PBO  OUTPUT

  效果图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44767.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

解决github中一个新手著名问题

问题的引入 首先新手在初学git的时候,会先git init,然后config一些配置,之后链接远程仓库的时候,十分有可能碰到一个报错:ERROR: Permission to yixianshen-reserved/learning-repo.git denied to yiquanfeng. fatal: Could not read from remote repository. Please make…

dotnet 基于 DirectML 控制台运行 Phi-3 模型

本文将和大家介绍如何在 C# dotnet 里面的控制台应用里面,使用 DirectML 将 Phi-3 模型在本地运行起来在微软的 Microsoft Build 2024 大会上介绍了 Phi-3 模型,这是一个 small language models (SLMs) 本地小语言模型。简单说就是一个可以在用户设备上运行的模型,据说能和 …

PyQT5之计数器控件QSpinBox

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *class spindemo(QWidget):def __init__(self, parent=None):super(spindemo, self).__init__(parent)#设置标题与初始大小self.setWindowTitle(SpinBox 例子)self.resize(300,1…

PyQT5之滑块控件QSlider

import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class QSliderDemo(QWidget):def __init__(self):super(QSliderDemo, self).__init__()self.initUI()def initUI(self):self.setWindowTitle(滑块控件演示) # 创建窗口标题sel…

[转帖]见识一下SQL Server隐式转换处理的不同

https://cloud.tencent.com/developer/article/1873328 隐式转换(Implicit Conversion)就像他的名字一样,是个隐秘、不容易被发现的问题,但归根结底,还是设计开发中未遵守相关的规范,或者说是不良的设计开发习惯所导致的。 如果在条件中的字段和变量类型不一致,数据库会按…

读AI未来进行式笔记11丰饶时代与奇点

读AI未来进行式笔记11丰饶时代与奇点1. 第四次工业革命 1.1. 在AI轰轰烈烈地拉开第四次工业革命帷幕的同时,一场清洁能源革命也紧锣密鼓地展开 1.1.1. 清洁能源革命好比一场“及时雨”,不但将解决日益加剧的全球气候变化问题,而且会大幅降低全世界的电力成本 1.1.2. 人们将致…

PyQtGraph之多图绘制

from PyQt5.QtWidgets import * import pyqtgraph as pg import sysclass MainWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle(pyqtgraph作图示例)# 创建 GraphicsLayoutWidget 对象self.pw = pg.GraphicsLayoutWidget()self.pw.setBackground(w)#…

PyQtGraph之柱状图

from PyQt5.QtWidgets import * import pyqtgraph as pg import sysclass MainWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle(pyqtgraph作图示例)# 创建 PlotWidget 对象self.pw = pg.PlotWidget()# 设置图表标题self.pw.setTitle("订单数量…