FUNCTION_ALV 下拉框的实现

下拉框可以用drdn_field或者使用DRDN_HNDL,这个文章主要是下拉框的基本使用,核心就是在fieldcat内表里面设置好下拉框的字段或者组的编号

文章目录

  • drdn_field
    • 使用DRDN_HNDL
    • 复制状态
    • 完整代码
    • 核心代码
    • 运行结果

drdn_field

在这里插入图片描述

使用DRDN_HNDL

在这里插入图片描述

复制状态

在这里插入图片描述

完整代码

*&---------------------------------------------------------------------*
*& Report Z_ALV_DROPDOWN
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*T_CODE         :
*CREATOR        :   LiuHongyu
*CREATE ON      :   2024827*TYPE           :   Report
*Description    :   ALV下拉框
**********************************************************************
*               Change History
* ----------    -------------  ----------   -------------
* Version       Date            Change By    Description
* ----------    -------------  ----------   -------------
* 1             2024.8.27        Hongyu.Liu   创建
**********************************************************************
REPORT Z_ALV_DROPDOWN.*----------------------Variables--------------------------*
TYPES: BEGIN OF GTY_HEAD,CARRID    TYPE SPFLI-CARRID, "航线CONNID    TYPE SPFLI-CONNID, "航班号PRICE     TYPE SFLIGHT-PRICE, "价格PLANETYPE TYPE SFLIGHT-PLANETYPE, "航班类型DEPTIME   TYPE SPFLI-DEPTIME, "出发时间DD_HANDLE TYPE INT4, "用于分辨分组的编号END OF GTY_HEAD.
DATA: GS_HEAD TYPE GTY_HEAD.
TYPES: BEGIN OF GTY_ITEMS,CARRID    TYPE SPFLI-CARRID, "航线CONNID    TYPE SPFLI-CONNID, "航班号COUNTRYFR TYPE SPFLI-COUNTRYFR, "国家/地区CITYFROM  TYPE SPFLI-CITYFROM, "起飞城市CITYTO    TYPE SPFLI-CITYTO, "到达城市FLTIME    TYPE SPFLI-FLTIME, "航班时间DISTANCE  TYPE SPFLI-DISTANCE, "距离CARRNAME  TYPE SCARR-CARRNAME, "航线CURRCODE  TYPE SCARR-CURRCODE, "航线货币URL       TYPE SCARR-URL, "URLEND OF GTY_ITEMS.DATA: BEGIN OF GS_OUT.INCLUDE STRUCTURE GS_HEAD. "抬头
DATA:   DETAIL TYPE TABLE OF GTY_ITEMS,END OF GS_OUT.
DATA: GT_OUT LIKE TABLE OF GS_OUT. "定义和GS_OUT工作区结构一样的内表DATA: GT_FIELDCAT TYPE LVC_T_FCAT,GS_FIELDCAT TYPE LVC_S_FCAT.
DATA: GS_LAYOUT   TYPE LVC_S_LAYO.   "ALV布局工作区DATA:GS_DROP_DOWN TYPE LVC_S_DROP, "下拉框工作区GT_DROP_DOWN TYPE LVC_T_DROP. "下拉框内表*定义事件内表
DATA:GT_EVENTS TYPE SLIS_T_EVENT,GS_EVENTS TYPE SLIS_ALV_EVENT.
*------------------------ Logic -----------------------------*START-OF-SELECTION.PERFORM GET_DATA.PERFORM SET_FIELDCAT.PERFORM ALV_DISPLAY.FORM CALLER_EXIT USING LS_DATA TYPE SLIS_DATA_CALLER_EXIT.DATA: L_REF_ALV TYPE REF TO CL_GUI_ALV_GRID.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGE_GRID = L_REF_ALV.CALL METHOD L_REF_ALV->SET_DROP_DOWN_TABLEEXPORTINGIT_DROP_DOWN = GT_DROP_DOWN.
ENDFORM.*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_DATA ."抬头SELECT  CARRID,CONNID,PRICE FROM SFLIGHT WHERE CARRID = 'AZ' INTO TABLE @DATA(LT_HEAD) UP TO 20 ROWS."细节SELECT A~CARRID,A~CONNID,COUNTRYFR,CITYFROM,CITYTO,FLTIME,DISTANCE,B~CARRNAME,B~CURRCODE,B~URLFROM SPFLI AS ALEFT JOIN SCARR AS B ON A~CARRID = B~CARRIDFOR ALL ENTRIES IN  @LT_HEADWHERE A~CARRID = @LT_HEAD-CARRID INTO TABLE @DATA(LT_ITEMS).LOOP AT LT_ITEMS ASSIGNING FIELD-SYMBOL(<FS_ITEM>).IF <FS_ITEM>-DISTANCE > 100.<FS_ITEM>-DISTANCE  = 100.ENDIF.ENDLOOP.LOOP AT LT_HEAD INTO GS_HEAD.APPEND INITIAL LINE TO GT_OUT ASSIGNING FIELD-SYMBOL(<FS_OUT>).<FS_OUT> = CORRESPONDING #( GS_HEAD ).<FS_OUT>-DETAIL = LT_ITEMS.ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SET_FIELDCAT ."""""""""""""""""构建ALV字段""""""""""""""""""""动态字段名称赋值DATA: LO_TABDESCR TYPE REF TO CL_ABAP_STRUCTDESCR.DATA: LS_FIELD_IN TYPE DFIES,LT_DFIES    TYPE DDFIELDS.LO_TABDESCR ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( GS_OUT ).CALL METHOD CL_SALV_DATA_DESCR=>READ_STRUCTDESCREXPORTINGR_STRUCTDESCR = LO_TABDESCRRECEIVINGT_DFIES       = LT_DFIES.LOOP AT LT_DFIES INTO LS_FIELD_IN.MOVE-CORRESPONDING LS_FIELD_IN TO GS_FIELDCAT.GS_FIELDCAT-REF_TABLE = LS_FIELD_IN-REFTABLE. "参照类型的表,搜索帮助,域控制GS_FIELDCAT-REF_FIELD = LS_FIELD_IN-REFFIELD. "参照类型字段IF GS_FIELDCAT-COLTEXT IS INITIAL. "当COLTEXT不存在显示SCRTEXT_MGS_FIELDCAT-COLTEXT = LS_FIELD_IN-SCRTEXT_M.ENDIF."设置下拉框的字段IF GS_FIELDCAT-FIELDNAME = 'PLANETYPE'.GS_FIELDCAT-EDIT = 'X'. "可编辑GS_FIELDCAT-DRDN_FIELD = 'DD_HANDLE'. "设置下拉框的字段是DD_HEANDLEENDIF.IF  GS_FIELDCAT-FIELDNAME = 'DEPTIME' . "如果是出发时间字段,直接把下拉框分组设置成3GS_FIELDCAT-DRDN_HNDL = '3'. "DRDN_HNDL设置成3GS_FIELDCAT-EMPHASIZE = 'C310'."带有颜色的高亮列ENDIF.IF GS_FIELDCAT-FIELDNAME <> 'DD_HANDLE'.APPEND GS_FIELDCAT TO GT_FIELDCAT.ENDIF.CLEAR: LS_FIELD_IN,GS_FIELDCAT.ENDLOOP.ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM ALV_DISPLAY ."""""""""""""""""设置布局""""""""""""""""""GS_LAYOUT-ZEBRA = 'X'.GS_LAYOUT-CWIDTH_OPT = 'X'.""""""""""""""设置事件"""""""""""""""""""""
**把使 GRID 和 内表 连接在一起的事件存入事件内表GS_EVENTS-NAME = 'CALLER_EXIT'.    "这里是子例程名字GS_EVENTS-FORM = 'CALLER_EXIT'.     "这里是子例程名字APPEND GS_EVENTS TO GT_EVENTS."""""""""""""""""设置下拉框"""""""""""""""""""设置分组的字段的值LOOP AT GT_OUT INTO GS_OUT.IF GS_OUT-CONNID = '0555'.GS_OUT-DD_HANDLE = '1'.ELSE.GS_OUT-DD_HANDLE = '2'.ENDIF.MODIFY GT_OUT FROM GS_OUT.CLEAR GS_OUT.ENDLOOP."设置下拉框DEFINE FILL_DROP.CLEAR GS_DROP_DOWN.GS_DROP_DOWN-HANDLE = &1.GS_DROP_DOWN-VALUE = &2.APPEND GS_DROP_DOWN TO GT_DROP_DOWN.END-OF-DEFINITION.FILL_DROP:'1' '大飞机'.FILL_DROP:'1' '小飞机'.FILL_DROP:'1' '中飞机'.FILL_DROP:'1' '漂亮飞机'.FILL_DROP:'1' '直升机'.FILL_DROP:'1' '战斗飞机'.FILL_DROP:'2' 'A飞机'.FILL_DROP:'2' 'B飞机'.FILL_DROP:'2' 'C飞机'.FILL_DROP:'3' '2024-08-01'.FILL_DROP:'3' '2024-08-02'.FILL_DROP:'3' '2024-08-03'.FILL_DROP:'3' '2024-08-07'."""""""""""""""""创建ALV"""""""""""""""""""CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTING
*     I_INTERFACE_CHECK  = ' '
*     I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
*     I_BUFFER_ACTIVE    = I_BUFFER_ACTIVEI_CALLBACK_PROGRAM = SY-REPID
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME   = I_STRUCTURE_NAME
*     I_BACKGROUND_ID    = ' '
*     I_GRID_TITLE       = I_GRID_TITLE
*     I_GRID_SETTINGS    = I_GRID_SETTINGSIS_LAYOUT_LVC      = GS_LAYOUTIT_FIELDCAT_LVC    = GT_FIELDCAT
*     IT_EXCLUDING       = IT_EXCLUDING
*     IT_SPECIAL_GROUPS_LVC             = IT_SPECIAL_GROUPS_LVC
*     IT_SORT_LVC        = IT_SORT_LVC
*     IT_FILTER_LVC      = IT_FILTER_LVC
*     IT_HYPERLINK       = IT_HYPERLINK
*     IS_SEL_HIDE        = IS_SEL_HIDE
*     I_DEFAULT          = 'X'
*     I_SAVE             = ' '
*     IS_VARIANT         = IS_VARIANTIT_EVENTS          = GT_EVENTS
*     IT_EVENT_EXIT      = IT_EVENT_EXIT
*     IS_PRINT_LVC       = IS_PRINT_LVC
*     IS_REPREP_ID_LVC   = IS_REPREP_ID_LVC
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE  = 0
*     I_HTML_HEIGHT_TOP  = I_HTML_HEIGHT_TOP
*     I_HTML_HEIGHT_END  = I_HTML_HEIGHT_END
*     IT_ALV_GRAPHICS    = IT_ALV_GRAPHICS
*     IT_EXCEPT_QINFO_LVC               = IT_EXCEPT_QINFO_LVC
*     IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
* IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
*     ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USERTABLEST_OUTTAB           = GT_OUT
* EXCEPTIONS
*     PROGRAM_ERROR      = 1
*     OTHERS             = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.
ENDFORM.

核心代码

在这里插入图片描述

运行结果

┗( ▔, ▔ )┛
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不仅仅是文化:解决常见安全问题根源

今年&#xff0c;GitLab对DevSecOps专业人士的年度调查发现了一些与组织文化相关的问题&#xff0c;这些问题可能会阻碍工程团队和安全团队之间的更深层次协调。 大多数(58%)的安全受访者表示&#xff0c;他们很难让开发部门优先修复漏洞&#xff0c;52%的人表示&#xff0c;繁…

fastjson序列化时过滤字段的方法

在使用fastjson进行序列化时&#xff0c;可能需要根据实际需求过滤掉某些字段&#xff0c;以避免将敏感信息或不必要的字段发送到客户端。fastjson提供了多种灵活的方式来实现这一需求。以下整理了fastjson序列化时过滤字段的几种常用方法。 方法一&#xff1a;使用fastjson的…

【CVPR‘23】CompletionFormer:用于深度补全的 Transformer 网络!已开源

【CVPR23】CompletionFormer:用于深度补全的 Transformer 网络! 摘要方法3.1 RGB 和深度嵌入3.2 联合卷积注意力和 Transformer 编码器3.3 解码器3.4 SPN 精化和损失函数主要贡献实验结果论文地址:https://openaccess.thecvf.com/content/CVPR2023/papers/Zhang_CompletionF…

【专项刷题】— 链表

1、2两数相加 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 只要有任意一个链表还没有为空的时候就继续加&#xff0c;当链表为空的时候但是t不尾0&#xff0c;还是进入循环进行操作 代码&#xff1a; public ListNode addTwoNumbers(ListNode l1, ListNode l2) {…

Git学习(001 git介绍以及安装)

尚硅谷2024最新Git企业实战教程&#xff0c;全方位学习git与gitlab 总时长 5:42:00 共40P 此文章包含第1p-第p4的内容 文章目录 介绍Git介绍GitLab介绍 概述Git安装版本控制工具介绍 介绍 Git介绍 GitLab介绍 相当于中央仓库 概述 Git安装 进入官网(下载当前版本 2.43.0) …

AD原理图Update成PCB时提示Comparator Results的原因

在使用AD20把原理图转换成PCB时&#xff0c;AD提示 【原理图导入PCB时提示ECO的原因】 解释是&#xff1a; 原理图中存在元件未添加PCB封装。 验证 1、从右下角的panels打开messages 2、Validate PCB Project 3、warning中的确提示有元器件缺少封装 在更改添加了原理图中的元…

FL Studio 24.1.1.4285官方中文版全新发布,最新功能解析

【功能强大&#xff1a;一站式音乐制作平台】 说到功能&#xff0c;这款软件简直就是全能战士。从录音、编曲到混音、母带处理&#xff0c;FL Studio几乎能涵盖音乐制作的方方面面。而且它还支持多种插件格式&#xff0c;让你的音乐作品更加丰富多彩。 【兼容性强&#xff1a;…

改造小蚁摄像头支持免费无限容量云储存(Samba挂载篇)

为什么要改造&#xff1f; 插卡摄像头最大的一个问题就是频繁的读写会导致内存卡寿命急速下降&#xff0c;哪怕是市面上支持NAS转存的摄像头也是先录制到SD卡里&#xff0c;然后把SD卡上的视频再转存到NAS。同样对内存卡和NAS硬盘寿命都是损耗巨大。而这类监控视频绝大多数情况…

数据结构——树的三种表示方法

目录 引言 树 1.树的定义 2.树的基本概念 3.树的表示方式 (1)双亲表示法 (2)孩子表示法 (3)左孩子右兄弟表示法 (4)树的应用 结束语 引言 在学习完栈和队列的之后后&#xff0c;我们接下来学习新的数据结构——树。 树 1.树的定义 树是一种非线性数据结构&#x…

智慧公路大数据运营中心整体解决方案

方案简介&#xff1a; 智慧公路大数据运营中心解决方案的实施&#xff0c;不仅提高了公路交通的运行效率和管理水平&#xff0c;还推动了智慧交通建设的深入发展。通过消除信息孤岛、促进数据共享和开放&#xff0c;实现了交通信息资源的有效整合和利用。未来&#xff0c;随着…

ctfhub-web-SSRF通关攻略

一、内网访问 1.打开ctfhub给的环境地址 2.观察题目 发现让我们访问127.0.0.1下的flag.php 在地址栏后面有一个url参数 ?urlhttp://127.0.0.1/flag.php 提交即可 二、伪协议读取文件 1.打开ctfhub给的环境 2.观察题目 发现让我们读取flag.php文件 读取文件用到的协议是…

QT Mainwindow下指定控件的setMouseTracking(true)和mousemoveevent函数失效-问题解决

目录&#xff1a; 一&#xff0c;问题描述二&#xff0c;解决方法2.1解决依据2.2方法实操 三&#xff0c;参考资料 一&#xff0c;问题描述 ☀️之前碰到过的一个问题&#xff0c;现在分享出来&#xff1a;想在qt哪里搞个鼠标移动在控件显示的图片上&#xff0c;然后实时显示对…

设备状态图表-甘特图

1.背景&#xff1a;设备状态监控图表&#xff0c;监控不同状态的时间段&#xff0c;可以使用甘特图来展示效果 鼠标经过时的数据提示框 2、代码实现 <template><divref"ganttChartRefs":style"{ height: 6.2rem, width: 100% }"class"bg…

java Boss直聘爬虫数据分析

摘要 本报告利用Java和Selenium爬虫技术获取数据&#xff0c;并使用ECharts库对薪资数据进行可视化分析&#xff0c;旨在探究不同经验和学历的薪资分布情况。 数据来源 数据来源于Boss直聘&#xff0c;使用Java结合Selenium库进行数据抓取。 数据总数&#xff1a;约2000家企…

如何设置Winfrom中dataGridView中的内容换行并行高自适应

如何设置Winfrom中dataGridView行高 在 Windows Forms (WinForms) 应用程序中&#xff0c;DataGridView 控件用于显示和编辑数据的表格形式。如果你想要设置 DataGridView 控件中行的高度&#xff0c;可以通过以下几种方式来实现&#xff1a; 1. 通过属性设置行高 你可以直接…

Vue:组件化开发

我们为什么要组件化开发&#xff1f; 在之前的vue中&#xff0c;我们要么是通过本地引入vue.js进行开发&#xff0c;要么就是通过CLI&#xff08;脚手架&#xff09;来创建环境然后单独在App.vue中进行开发&#xff0c;这样的开发模式当然没有问题&#xff0c;但是当项目庞大起…

3 Python开发工具:VSCode+插件

本文是 Python 系列教程第 3 篇&#xff0c;完整系列请查看 Python 专栏。 Visual Studio Code的安装非常简单&#xff0c;就不放这里增加文章篇幅了。 相比PyCharm&#xff0c;VSCode更加轻量&#xff0c;启动速度快。并且搭配Python插件就能实现和Pycharm一样的代码提示、高…

摄影曝光:曝光模式认知

写在前面 学习整理《摄影曝光&#xff1a;拍出好照片的49个关键技法》读书笔记博文内容涉及曝光模式简单认知适合小白认知理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好好做事&#xff0c;所以唯一的解决办法就是行动起来&#xff0c;认真…

PyTorch深度学习模型训练流程:(二、回归)

回归的流程与分类基本一致&#xff0c;只需要把评估指标改动一下就行。回归输出的是损失曲线、R^2曲线、训练集预测值与真实值折线图、测试集预测值散点图与真实值折线图。输出效果如下&#xff1a; 注意&#xff1a;预测值与真实值图像处理为按真实值排序&#xff0c;图中呈现…

【JS】使用MessageChannel实现深度克隆

前言 通常使用简便快捷的JSON 序列化与反序列化实现深克隆&#xff0c;也可以递归实现或者直接使用lodash。 但 JSON 序列化与反序列化 无法处理如下的循环引用&#xff1a; 实现 MessageChannel 内部使用了浏览器内置的结构化克隆算法&#xff0c;该算法可以在不同的浏览器上…