FUNCTION_ALV 下拉框的实现

2024-08-27 22:04
文章标签 实现 function alv 下拉框

本文主要是介绍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.

核心代码

在这里插入图片描述

运行结果

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

这篇关于FUNCTION_ALV 下拉框的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112906

相关文章

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组