ABAP开发:屏幕输入中,在多个选项卡中如何确定选择了哪个Tab Strips?

news2024/11/24 7:08:06

 在ABAP开发中,使用了SELECTION-SCREEN来创建了一个带有多个选项卡(Tab Strips)的屏幕。每个选项卡对应一个不同的屏幕编号(SCREEN 101, 102, 103),如下图:

      屏幕中有Name、Age、City三个标签选择,那么,在程序中如何确定选择了哪个标签呢?

     一般来说,需要给每个选项卡分配一个功能码(function code),并在AT SELECTION-SCREEN事件中检查sy-ucomm字段的值:

AT SELECTION-SCREEN.
  CASE sy-ucomm.  "根据系统变量判断用户选择
    WHEN 'TAB1'.
      WRITE: / 'You selected the Name tab'.
    WHEN 'TAB2'.
      WRITE: / 'You selected the Age tab'.
    WHEN 'TAB3'.
      WRITE: / 'You selected the City tab'.
    WHEN OTHERS.
      WRITE: / 'You did not select any tab'.
  ENDCASE.

但这样存在一个问题,就是当程序运行时,屏幕上显示的是默认的第一个标签即上图中的Name标签,若用户不选择其他标签就执行程序时,此时的sy-ucomm值为‘ONLI’ (代表点击了执行按钮),若根据上面的代码来判断,用户未对标签作出任何选择,这不符合我们的预期。为此,可以设置一个变量Choice 来记录用户的选择,并在屏幕的INITIALIZATION事件中设置Choice = 1 来作为用户默认选择了第一个标签,之后再在AT SELECTION-SCREEN事件中检查sy-ucomm字段的值来判断用户选择了哪个标签。完整代码如下:


REPORT ztabstrip.
DATA :CHOICE. "选择
* Define tabstrip area and tab titles
SELECTION-SCREEN BEGIN OF TABBED BLOCK tab_area FOR 10 LINES.
SELECTION-SCREEN TAB (10) tab1 USER-COMMAND tab1 DEFAULT SCREEN 100.
SELECTION-SCREEN TAB (10) tab2 USER-COMMAND tab2 DEFAULT SCREEN 200.
SELECTION-SCREEN TAB (10) tab3 USER-COMMAND tab3 DEFAULT SCREEN 300.
SELECTION-SCREEN END OF BLOCK tab_area.

* Define subscreen areas for each tab title
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
PARAMETERS: p_name TYPE char10.
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS: p_age TYPE i.
SELECTION-SCREEN END OF SCREEN 200.

SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.
PARAMETERS: p_city TYPE char10.
SELECTION-SCREEN END OF SCREEN 300.

* Assign texts to tab titles
INITIALIZATION.
  tab1 = 'Name'.
  tab2 = 'Age'.
  tab3 = 'City'.
  CHOICE = 1 . "屏幕默认的选项为第一个标签也作为用户的默认选择
* Check which tab title is selected
AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'TAB1'.
     CHOICE = 1 . " 用户选择了 Tab Strips 1
    WHEN 'TAB2'.
     CHOICE = 2 . " 用户选择了 Tab Strips 2
    WHEN 'TAB3'.
     CHOICE = 3 . " 用户选择了 Tab Strips 3
  ENDCASE.
 START-OF-SELECTION.
  WRITE :/0 '你选择的标签是:',   CHOICE.

当用户执行程序而不做任何选择时,程序默认用户选择第一个标签,执行结果如下:

当用户选择第二个或第三个标签后执行程序的结果如下:

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

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

相关文章

开源、无广告的小巧的动态壁纸软件

一、简介 1、开源、无广告的小巧的动态壁纸软件。它是绿色软件,软件压缩包大小仅有 0.5MB,目前仅支持 Windows 平台。它简单好用,支持将各种尺寸、分辨率的 MP4、MOV 等主流格式的视频文件设置为桌面动态壁纸,性能表现以及稳定性都…

python数据分析---ch11 python数据描述性统计

python数据分析--- ch11 python数据描述性统计 1. Ch11--描述性统计2. 数据集中趋势的度量2.1 平均值2.2 中位数2.3 众数2.4 几何平均值2.5 调和平均值 3. 数据离散趋势的度量3.1 极差3.2 平均绝对偏差(MAD)3.3 方差和标准差3.4 下偏方差和下偏标准差3.5 目标下偏方差和目标下偏…

嵌入式技术学习——c51单片机——定时器

一、定时器 定时器是51单片机内部的资源,其电路连接和运转均在单片机内部完成。 定时器的作用: (1)用于计时系统,可实现软件计时,或程序每隔一固定时间完成一项操作 (2)替代长时…

windows下mysql设置开机自启动

windows下mysql设置开机自启动 情况1.mysql服务不存在情况2.mysql服务已存在 我们先检查一下电脑是否存在mysql服务 此电脑(右键)—>管理—>服务 看一下能不能找到相关mysql 服务 情况1.mysql服务不存在 以管理员的身份运行命令窗口,找到mysqld.exe 所在的路径 命令如下…

python flask配置数据库并进行orm操作 flask_sqlalchemy

🌈所属专栏:【Flask】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…

python之对接有道翻译API接口实现批量翻译

内容将会持续更新,有错误的地方欢迎指正,谢谢! python之对接有道翻译API接口实现批量翻译 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&…

Stable Diffusion 3 Medium 正式开源

Stable Diffusion 3 Medium 正式开源 Stability AI宣布Stable Diffusion 3 Medium现已开源,这是最新的文本生成图像AI模型,被官方声称为“迄今为止最先进的开源模型”,其性能超过了Midjourney 6。 这款Stable Diffusion 3 Medium模型拥有2…

刷代码随想录有感(106):动态规划——分割等和子集(01背包问题)

题干&#xff1a; 代码&#xff1a; class Solution { public:bool canPartition(vector<int>& nums) {int sum 0;for(int i : nums){sum i;}if(sum % 2 ! 0)return false;int target sum / 2;vector<int>dp(10001, 0);for(int i 0; i < nums.size(); …

SRM系统对供应商的意义是什么?

在甲方与乙方互相合作、沟通的世界里&#xff0c;供应商们也同样面临着诸多挑战~ 你是否经常感到在庞大的订单流中迷失方向&#xff0c;对库存情况一无所知&#xff0c;你是否在与采购商的沟通中频频碰壁&#xff1f;你是否在苦苦寻找一个能够全面管理供应商关系的系统&#x…

opencv的RGB 颜色表

RGB&#xff08;255,23,140&#xff09;是光的三原色&#xff0c;也即是红绿蓝Red&#xff0c;Green&#xff0c;Blue&#xff0c;它们的最大值是255&#xff0c;相当于100%。 白色&#xff1a;rgb(255,255,255) 黑色&#xff1a;rgb(0,0,0) 红色&#xff1a;rgb(255,0,0) …

Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单

文章目录 一、SSO介绍1、使用SSO的好处 二、中间件介绍1、Express安装导入使用 2、cors安装导入配置 3、express-session安装导入配置使用 4、jsonwebtoken安装导入使用 5、jwt和session对比 三、SSO实现方案1、安装依赖2、结构3、实现原理 三、示例代码1、nodejs端 server/ind…

OpenGL系列(六)变换

在三角形和纹理贴图示例中&#xff0c;顶点使用的是归一化设备坐标&#xff0c;在该坐标系下&#xff0c;顶点的每个轴的取值为-1到1&#xff0c;超出范围的顶点不可见。 基于归一化设备坐标的物体的形状随着设备的大小变换而变化&#xff0c;这里产生的第一个问题是&#xff0…

Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope

本文主要介绍如何在无需网关&#xff0c;无需配置 HttpClient 的情况下&#xff0c;使用 Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope 等 OpenAI 接口兼容的大模型服务。 1. 背景 一直以来&#xff0c;我们都在探索如何更好地利用大型语言模型&#xff08;LLM&…

如何免费试用阿里云的视频画质增强服务50元额度

上文有说到阿里云有画质增强的服务&#xff0c;我也试了&#xff0c;确实画质提升不少。 本文讲解如何免费试用视频画质增强服务。 首先我们得有一个阿里云的账号&#xff0c;大家自行注册&#xff1a; 阿里云-计算&#xff0c;为了无法计算的价值 注册好后我们打开阿里云的视频…

12.3 Go 测试覆盖率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【BES2500x系列 -- RTX5操作系统】系列文章索引

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…

可视化大屏搞这样,是对前端开发尊严的巨大挑战。

现在可视化大屏不搞点炫酷的效果和3D交互&#xff0c;出门都不好意思给别人打招呼&#xff0c;作为前端领域的老司机&#xff0c;我感觉尊严受到了巨大挑战&#xff0c;必须迎难而上&#xff0c;hold住他们&#xff0c;老铁们你们觉得呢&#xff1f;

Nuxt快速学习开发 -- Nuxt3配置

Nuxt配置 nuxt.config.ts文件位于 Nuxt 项目的根目录下&#xff0c;可以覆盖或扩展应用程序的行为 使用可组合项&#xff0c;这些变量会暴露给应用程序 //nuxt.config.ts import { fileURLToPath } from "url"; ​ export default defineNuxtConfig({alias: {//配置…

LeetCode | 344.反转字符串

设置头尾两个指针&#xff0c;依靠中间变量temp交换头尾指针所指元素&#xff0c;头指针后移&#xff0c;尾指针前移&#xff0c;直到头尾指针重合或者头指针在尾指针后面一个元素 class Solution(object):def reverseString(self, s):""":type s: List[str]:r…

大数据量列表渲染优化:前端实战经验让性能飙升50%,页面速度提升95%

引言&#xff1a;在处理大规模数据集渲染时&#xff0c;前端性能常常面临巨大的挑战。本文将探讨 react-virtualized-list 库如何通过虚拟化技术和 Intersection Observer&#xff0c;实现前端渲染性能飙升 50% 的突破&#xff0c;页面渲染速度提升 95% &#xff01;&#x1f5…