ABAP 开发的那些小技巧
在对话框程序中的选择屏幕添加图标
要在选择屏幕中添加图标,其中包括参数:
在参数的选择文本中或选择选项(select-option)中写入 @01@
或选择选项:
您可以使用 01、02、03,依此类推,以获取不同的不同图标。
在运行时更改参数的名称
这是在运行时更改参数的很酷的技巧:
在特定时间或单击参数标签将更改…
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS : rd1 RADIOBUTTON GROUP g1 USER-COMMAND abc DEFAULT 'X', rd2 RADIOBUTTON GROUP g1. SELECTION-SCREEN: BEGIN OF LINE. SELECTION-SCREEN: COMMENT 1(50) text_003. " (text_003 will holds the name)
PARAMETERS p_matnr TYPE matnr .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b1. *To change the name on click of radio button AT SELECTION-SCREEN OUTPUT. IF rd1 = 'X'. text_003 = 'Matnr'. ELSEIF rd2 = 'X'. text_003 = 'Material Number'. ENDIF.

实际开发中遇到的解决方式:
代码如下:
**----------------------------------------------------------------------*
*& 选择屏幕部分
SELECTION-SCREEN FUNCTION KEY 1.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text002.SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: p1 TYPE c RADIOBUTTON GROUP rb1 USER-COMMAND uc DEFAULT 'X'.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p1.PARAMETERS: p2 TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p2.
SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text001.SELECT-OPTIONS:s_pbom FOR zmmt076-zcompocode MODIF ID ty1, " Component Codes_fbom FOR zmmt077-zforpegcode MODIF ID ty2," Forecast Pegging Codeso_sku FOR mara-zmatsku, " SKUs_zbrand FOR mara-zbrand , " Brands_zrange FOR mara-zrange, " Ranges_zprod FOR mara-zprod, " Products_zprgrp FOR mara-zprdgrp, " Product Groups_series FOR mara-zseries_int, " Internal Seriess_erdat FOR zmmt076-erdat, " Update Dates_bismt FOR zmmt076-zbismt, " Old Material No.s_crdat FOR zmmt076-erdat. " Sales Order Created Date
SELECTION-SCREEN END OF BLOCK b1.INITIALIZATION.text001 = 'Selection'.text002 = 'PBOM/FBOM'.s_crdat-low = '20200101'. s_crdat-high = sy-datum.s_crdat-sign = 'I'.s_crdat-option = 'BT'.APPEND s_crdat.CLEAR s_crdat.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.CASE screen-group1.WHEN 'TY1'.IF p1 = 'X'.screen-active = '1'.ELSE.screen-active = '0'.ENDIF.WHEN 'TY2'.IF p2 IS INITIAL.screen-active = '0'.ELSE.screen-active = '1'.ENDIF.ENDCASE.MODIFY SCREEN.ENDLOOP.
显示效果如下:

Describe 方法的替代
我们可以在不使用 DESCRIBE 语句的情况下计算内表的行:
count = lines(itab)
动态 SQL 语句
动态创建选择查询语句的技巧:
SELECT (<fs_fields>)FROM (<fs_tabname>)APPENDING TABLE <fs_itab>WHERE (wa_tab) .
[every variable should be of character type]
显示 ALV 的最简单方式
使用此代码显示 ALV 的最简单和最短方法:
DATA: gr_table TYPE REF TO cl_salv_table.CALL METHOD cl_salv_table=>factoryIMPORTINGr_salv_table = gr_tableCHANGINGt_table = itab. " internal table having data to displaygr_table->display( ).
运行阻塞的 T-Code
Tcodes 被中断…不是一个大问题。这是运行任何 T-code 的两种方法:
RS_HDSYS_CALL_TC_VARIANT: RS_HDSYS_CALL_TC_VARIANT 并使用参数进行权限检查- 在报表中使用如下的代码:
DATA: l_tcode TYPE sytcode. PARAMETERS: p_tcode TYPE sy-tcode. START-OF-SELECTION. SELECT SINGLE tcode FROM tstc INTO l_tcode WHERE tcode = p_tcode. IF sy-subrc = 0. CALL TRANSACTION p_tcode. ELSE. MESSAGE 'TCODE not found.' TYPE 'I'. ENDIF.
显示弹出窗口
使用 method th_popup 函数来显示弹出框或消息提示。
CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING text_question = '确定删除?' IMPORTING answer = lv_answer
* TABLES
* PARAMETER = EXCEPTIONS text_not_found = 1 OTHERS = 2. CHECK lv_answer = '1'.
报表中创建日志
这是在 ABAP 中创建日志显示的代码:
CREATE OBJECT lc_app_log EXCEPTIONS log_header_inconsistent = 1 OTHERS = 2. *Error messages LOOP AT i_msg_log INTO wa_msg_log. lw_msg = wa_msg_log-message. lw_msgty = wa_msg_log-msgtyp. CALL METHOD lc_app_log->add_msg_free_text EXPORTING im_msg = lw_msg im_msgty = lw_msgty EXCEPTIONS msg_error = 1 OTHERS = 2. IF NOT sy-subrc IS INITIAL. RETURN. ENDIF. CLEAR wa_msg_log. ENDLOOP. lc_app_log->display_log( ).
用字符串查找报表
我们可以通过使用报表输入任何程序中编写的字符串来找到报表:RS_ABAP_SOURCE_SCAN
在不按 CTRL+C 或 CTRL+V 的情况下复制任何行
使用 CTRL+D 来复制任何一行,通常在更新代码时使用,将原有的逻辑注释,复制当前行的代码,重新写新的业务逻辑代码
相关文章:
ABAP 开发的那些小技巧
在对话框程序中的选择屏幕添加图标 要在选择屏幕中添加图标,其中包括参数: 在参数的选择文本中或选择选项(select-option)中写入 01 或选择选项: 您可以使用 01、02、03,依此类推,以获取不同的不同图标。 在运行时…...
电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)
问题:电科金仓(人大金仓)数据库链接异常,重启失败,查看日志如下: 致命错误: XX000: License file expired. 位置: PostmasterMain, postmaster.c:725 解决方法: 一、下载授权文件 根据安装版本在官网下载授权文件(电科金仓-成为世界卓越的数据库产品与服务提供商)…...
玩转「HF/魔搭/魔乐」平台
模型下载 Hugging Face 下载到 GitHub CodeSpace CodeSpace创建环境: # 安装transformers pip install transformers4.38 pip install sentencepiece0.1.99 pip install einops0.8.0 pip install protobuf5.27.2 pip install accelerate0.33.0下载internlm2_5-7b…...
鸿蒙系统的优势 开发 环境搭建 开发小示例
HarmonyOS是面向多智能终端、全场景的分布式操作系统,为消费者提供跨终端的无缝体验.华为开发者联盟从HarmonyOS应用设计、开发、测试、推广变现等环节全方位助力开发者。 开发者可以通过以下步骤学习鸿蒙系统的开发: 基础理论学习: 了解鸿蒙系统概述&a…...
python批量合并excel文件
当工作中发现有多个excel表需要进行相同的操作或者需要汇总在一起,一个一个处理太费时间,以下的python代码能够帮你解决这个问题~ import pandas as pd import os# 设置Excel文件所在的文件夹路径和合并文件的输出路径 folder_path D:\\Desktop\\dat…...
AWS S3 JavaScript SDK(v3)常用操作
安装 aws s3 sdk npm install aws-sdk/client-s3配置 创建 ~/.aws/credentials 文件,添加以下配置项: [default] aws_access_key_id<...> aws_secret_access_key<...> region<...>S3 SDK常用桶操作 获取桶列表 import {S3Client,…...
数据结构——图的基本操作
文章目录 1.图2.图的结构体定义3.图的初始化4.添加顶点、删除顶点4.1添加顶点4.2删除顶点 5.添加边、删除边5.1添加边5.2删除边 6.打印图7.main函数 在生命旅途中,我们就像是一个个节点,被无数看不见的边相连。每一次的相识与相离,都在这张巨…...
掌握全球速递:在表格中高效利用国际快递公式查询快递
在当今全球化的商业环境中,国际快递服务已成为连接世界各地企业与个人的重要桥梁。无论是跨国企业间的货物运输,还是个人用户的海外购物需求,国际快递都扮演着不可或缺的角色。然而如何快速准确地获取大量国际快递的物流轨迹成为了一个挑战。…...
【MySQL系列】字符集设置
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Vue2进阶之Vue3高级用法
Vue3高级用法 响应式Vue2:Object.definePropertyObject.definePropertythis.$set设置响应式 Vue3:Proxy composition APIVue2 option API和Vue3 compositionAPIreactive和shallowReactivereadonly效果toRefs效果 生命周期main.jsindex.htmlLifeCycle.vue…...
基于微信的追星小程序+ssm(lw+演示+源码+运行)
摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,追星小程序被用户普遍使用,为方便用户能够可以…...
【51单片机】串口通信原理 + 使用
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…...
优选算法第五讲:位运算模块
优选算法第五讲:位运算模块 1.常见的位运算总结2.判断字符是否唯一3.丢失的数字4.两整数之和5.只出现一次的数字II6.消失的两个数字 1.常见的位运算总结 2.判断字符是否唯一 链接: link class Solution { public:bool isUnique(string astr) {if(astr.size() >…...
【07】Maven项目多环境打包配置
(1)Web项目使用Maven进行多模块划分开发之后,面临一个问题,即如何加载不同环境的配置文件打包发布到不同的环境中? (2)不同的环境有开发环境、测试环境、线上生产环境等。 (3&#x…...
嵌入式Linux入门具备:C语言基础与基本驱动学习(2):Linux GIibc IO基础
标准IO 标准 I/O 虽然是对文件 I/O 进行了封装,但事实上并不仅仅只是如此,标准 I/O 会处理很多细节,譬如分配 stdio 缓冲区、以优化的块长度执行 I/O 等,这些处理使用户不必担心如何选择使用正确的块长度。I/O 库函数是构建于文件…...
【微服务】Docker 容器化
一、初识Docker 1. 为什么需要 Docker 大型项目组件较多,运行环境也较为复杂,部署时会遇到一些问题: 依赖关系复杂,容易出现兼容性的问题开发、测试、生产环境有差异 Docker 如何解决依赖的兼容问题 将应用的Libs(…...
[前端] 为网站侧边栏添加搜索引擎模块
前言 最近想给我的个人网站侧边栏添加一个搜索引擎模块,可以引导用户帮助本站SEO优化(让用户可以通过点击搜索按钮完成一次对本人网站的搜索,从而实现对网站的搜索引擎优化)。 最开始,我只是想实现一个简单的百度搜索…...
解决CORS (跨源资源共享) 错误
问题引入 前端代码 <template><div id"hello-vue" class"demo">{{ message }}</div><el-button type"primary" click"handleClick">我是一个按钮</el-button></template><script setup>//加…...
Redis 实现分布式缓存
一、引言 在当今互联网时代,随着业务的不断发展和用户量的持续增长,系统的性能和可扩展性成为了关键挑战。分布式缓存作为一种重要的技术手段,能够有效地缓解数据库压力、提高系统响应速度、增强系统的可扩展性。Redis 作为一种高性能的内存数…...
Chrome与火狐哪个浏览器的移动版本更流畅
在当今的数字化时代,移动设备已经成为我们生活中不可或缺的一部分。而浏览器作为我们访问互联网的重要工具,其性能和用户体验直接影响到我们的使用感受。本文将对比Chrome和火狐(Firefox)两款主流浏览器的移动版本,探讨…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
