当前位置: 首页 > news >正文

SAP ABAP

方法一:

REPORT ZDCH_09_TEST2.
************************************************************************
*                     DATEN DEFINITION                                 *
************************************************************************
TYPE-POOLS: SLIS.
TABLES:MAKT.
TYPES:BEGIN OF T_DATA, "查询出来的数据MATNR TYPE MAKT-MATNR,MAKTX TYPE MAKT-MAKTX,SPRAS TYPE MAKT-SPRAS,END   OF T_DATA,BEGIN OF T_ALV, "alv显示的数据MATNR     TYPE MAKT-MATNR,MAKTX     TYPE MAKT-MAKTX,SPRAS     TYPE MAKT-SPRAS,DD_HANDLE TYPE INT4,  "绑定下拉框对应的组END   OF T_ALV.
DATA:
"fieldcatGT_FIELDCATALOG TYPE LVC_T_FCAT,GW_FIELDCATALOG TYPE LVC_S_FCAT,
*定义存储下拉列表的数据GT_DDVAL        TYPE LVC_T_DROP,GW_DDVAL        TYPE LVC_S_DROP,
"alv事件GT_EVENTS       TYPE SLIS_T_EVENT,GW_EVENTS       TYPE SLIS_ALV_EVENT,
"数据库数据GT_DATA         TYPE TABLE OF T_DATA,GW_DATA         TYPE          T_DATA,
"alv数据GT_ALV          TYPE TABLE OF T_ALV,GW_ALV          TYPE          T_ALV,G_REPID         TYPE SY-REPID VALUE SY-REPID.
************************************************************************
*                     SELECTION SCREEN                                 *
************************************************************************
SELECT-OPTIONS: S_MATNR FOR MAKT-MATNR .************************************************************************
*                     START-OF-SELECTION                               *
************************************************************************
START-OF-SELECTION.
"获取数据SELECT MATNR MAKTX SPRASINTO TABLE GT_DATAUP TO 50 ROWSFROM MAKTWHERE MATNR IN S_MATNRAND SPRAS = '1'.
"alv填充数据LOOP AT GT_DATA INTO GW_DATA.MOVE-CORRESPONDING GW_DATA TO GW_ALV.APPEND GW_ALV TO GT_ALV.ENDLOOP.
"设置fieldcatPERFORM CREAT_FIELDCAT.
"设置下拉框值PERFORM CREAT_DROPDOWN_VALUES.
"设置下拉框事件PERFORM CREAT_EVENT_EXITS.
"显示alvCALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGI_CALLBACK_PROGRAM = G_REPIDIT_FIELDCAT_LVC    = GT_FIELDCATALOGIT_EVENTS          = GT_EVENTS "这一步一定要记得添加上TABLEST_OUTTAB           = GT_ALV.*---------------------------------------------------------------------*
* 设置输出字段的格式
*---------------------------------------------------------------------*
FORM CREAT_FIELDCAT.CLEAR GW_FIELDCATALOG.GW_FIELDCATALOG-FIELDNAME = 'MATNR'.GW_FIELDCATALOG-REF_FIELD = 'MATNR'.GW_FIELDCATALOG-REF_TABLE = 'MAKT'.APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.CLEAR GW_FIELDCATALOG.GW_FIELDCATALOG-FIELDNAME = 'MAKTX'.GW_FIELDCATALOG-REF_FIELD = 'MAKTX'.GW_FIELDCATALOG-REF_TABLE = 'MAKT'.APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.CLEAR GW_FIELDCATALOG.GW_FIELDCATALOG-FIELDNAME  = 'SPRAS'.GW_FIELDCATALOG-DRDN_FIELD = 'DD_HANDLE'. "设置下拉框
*  GW_FIELDCATALOG-DRDN_HNDL = '1'. "分组标识GW_FIELDCATALOG-EDIT       = 'X'.  "可编辑APPEND GW_FIELDCATALOG TO GT_FIELDCATALOG.
ENDFORM.                    " creat_fieldcat*---------------------------------------------------------------------*
*根据物料的所有的语言生成不同的生成下拉列表
*---------------------------------------------------------------------*
FORM CREAT_DROPDOWN_VALUES.DATA: L_SPRAS TYPE MAKT-SPRAS,L_COUNT TYPE I."为了演示简单,这里只设置了一组"句柄HANDLE 为I类型,相同数字为同一组下拉框"GW_DDVAL-HANDLE = 1. "对应分组标识第一组GW_DDVAL-VALUE  = 1. "组值APPEND GW_DDVAL TO GT_DDVAL.CLEAR GW_DDVAL.GW_DDVAL-HANDLE = 1. "第一组GW_DDVAL-VALUE  = 2.APPEND GW_DDVAL TO GT_DDVAL.CLEAR GW_DDVAL.GW_DDVAL-HANDLE = 1. "第一组GW_DDVAL-VALUE  = 3.APPEND GW_DDVAL TO GT_DDVAL.CLEAR GW_DDVAL.LOOP AT GT_ALV INTO GW_ALV.GW_ALV-DD_HANDLE = 1. "ALV绑定组MODIFY GT_ALV FROM GW_ALV.ENDLOOP.
ENDFORM.                    " creat_dropdown_values*---------------------------------------------------------------------*
*      Form  creat_event_exits
*---------------------------------------------------------------------*
FORM CREAT_EVENT_EXITS .GW_EVENTS-NAME = 'CALLER_EXIT'.GW_EVENTS-FORM = 'CALLER_EXIT'.APPEND GW_EVENTS TO GT_EVENTS.
ENDFORM.                    " creat_event_exits*---------------------------------------------------------------------*
*设置下拉列表,使Grid和内表能链接上
*---------------------------------------------------------------------*
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_DDVAL.
ENDFORM.                    "CALLER_EXIT

 需要注意的是:如果下拉框设置的值是中文汉字,那么就不能输入了。
还有:下拉框设置了值,并且设置了可编辑,此时编辑的时候只能输入下拉框中有的值,其他的值输入不进去。

设置F4搜索帮助

只需要把之前设置的DRDN_FIELD修改成F4AVAILABL,然后设置上参考表和参考字段,去表里给这个字段设置上它的搜索帮助,那么ALV也就可以用了!

 

 方法二:

ALV通过参考可以直接获取表中搜索帮助,但是表中字段没有搜索帮助或者不合要求就需要通过F4事件完成了。

CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA:gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
go_grid TYPE REF TO cl_gui_alv_grid,
go_event_receiver TYPE REF TO lcl_event_receiver.
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_f4_help FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data
et_bad_cells
e_display.
ENDCLASS. "lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_f4_help.
FIELD-SYMBOLS:<fs_alv> TYPE gs_alv.
CASE e_fieldname.
WHEN 'ARKTX'.
READ TABLE git_alv ASSIGNING <fs_alv> INDEX es_row_no-row_id.
IF sy-subrc = 0.
PERFORM frm_get_arktx_f4 CHANGING <fs_alv>-arktx.
ENDIF.
* WHEN .
WHEN OTHERS.
ENDCASE.
CALL METHOD go_grid->refresh_table_display.
ENDMETHOD.
ENDCLASS. "lcl_event_receiver

定义alv-fieldcat属性

  1. gs_fieldcat-f4availabl = 'X'.

  2. gs_fieldcat-edit = 'X'.

将F4事件注册到ALV对象中

DATA:lt_f4             TYPE lvc_t_f4,ls_f4             TYPE lvc_s_f4.CALL METHOD go_grid->set_table_for_first_displayEXPORTINGit_toolbar_excluding = lt_excludeCHANGINGit_fieldcatalog      = git_fieldcatit_outtab            = git_alv[].CLEAR:ls_f4.
ls_f4-fieldname  = 'ARKTX'.
ls_f4-register   = 'X'.
ls_f4-getbefore  = 'X'.
ls_f4-chngeafter = ''.
ls_f4-internal   = ''.
INSERT ls_f4 INTO TABLE lt_f4.CALL METHOD go_grid->register_f4_for_fieldsEXPORTINGit_f4 = lt_f4.CREATE OBJECT go_event_receiver.
SET HANDLER go_event_receiver->handle_f4_help FOR go_grid .

自定义F4,获取数

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_ARKTX_F4
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_<FS_ALV>_ARKTX  text
*----------------------------------------------------------------------*
FORM frm_get_arktx_f4  USING    pc_matnr TYPE vbrp-matnrCHANGING pc_arktx TYPE zfit005-maktx.DATA:BEGIN OF lt_zfit029 OCCURS 0,sub_type_m TYPE zfit029-sub_type_m,sub_name_m TYPE zfit029-sub_name_m,END OF lt_zfit029.DATA:lt_ret_tab TYPE TABLE OF ddshretval WITH HEADER LINE.DATA:lv_matnr TYPE zfit028-matnr.lv_matnr = pc_matnr.SELECT sub_type_msub_name_mINTO TABLE lt_zfit029FROM zfit028INNER JOIN zfit029 ON zfit028~type_m = zfit029~type_mWHERE zfit028~matnr = lv_matnr.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield        = 'SUB_NAME_M'value_org       = 'S'TABLESvalue_tab       = lt_zfit029return_tab      = lt_ret_tabEXCEPTIONSparameter_error = 1no_values_found = 2OTHERS          = 3.IF sy-subrc = 0.READ TABLE lt_ret_tab INDEX 1.IF sy-subrc = 0  AND lt_ret_tab-fieldval IS NOT INITIAL.pc_arktx = lt_ret_tab-fieldval.ENDIF.ENDIF.ENDFORM.                    " FRM_GET_ARKTX_F4

方法三:

 

自动带出描述的代码: 

SELECT SINGLE NAME1INTO ZPM004-NAME1FROM T001WWHERE WERKS = ZPM004-IWERKAND SPRAS = SY-LANGU.

添加 F4的代码

DATA:BEGIN OF LT_WERKS OCCURS 0,WERKS LIKE T001W-WERKS,NAME1 LIKE T001W-NAME1,END OF LT_WERKS.SELECT WERKS NAME1INTO CORRESPONDING FIELDS OF TABLE LT_WERKSFROM T001W.SORT LT_WERKS BY WERKS.DELETE ADJACENT DUPLICATES FROM LT_WERKS COMPARING WERKS.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD        = 'WERKS'DYNPPROG        = SY-REPIDDYNPNR          = SY-DYNNRDYNPROFIELD     = 'IWERK'VALUE_ORG       = 'S'TABLESVALUE_TAB       = LT_WERKSEXCEPTIONSPARAMETER_ERROR = 1NO_VALUES_FOUND = 2OTHERS          = 3.

相关文章:

SAP ABAP

方法一&#xff1a; REPORT ZDCH_09_TEST2. ************************************************************************ * DATEN DEFINITION * *********************************************************************…...

C/C++每日一练(20230219)

目录 1. 用队列实现栈 2. 判断是否能组成三角形 3. 只出现一次的数字 II 附录 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;的异同 1. 栈和队列的相同点 2. 栈和队列的不同点 1. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;…...

【NestJS】模块

脚手架中&#xff0c;可以执行 nest g mo XXX 创建模块。通过脚手架命令创建的模块&#xff0c;会自动被导入至根模块注册。 注意&#xff1a;项目中的模块都需要导入到根模块中注册一下才能被使用。 共享模块 nest g res boy、nest g res girl 如果希望在 girl 模块中使用 …...

隐私计算头条周刊(2.13-2.19)

开放隐私计算收录于合集#企业动态44个#周刊合辑44个#政策聚焦37个#隐私计算91个#行业研究36个开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神&#xff0c;专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播…...

【STM32笔记】低功耗模式配置及避坑汇总

【STM32笔记】低功耗模式配置及配置汇总 文章总结&#xff1a;&#xff08;后续更新以相关文章为准&#xff09; 【STM32笔记】__WFI()&#xff1b;进入不了休眠的可能原因 【STM32笔记】HAL库低功耗模式配置&#xff08;ADC唤醒无法使用、低功耗模式无法烧录解决方案&#x…...

DFN: Dynamic Filter Networks-动态卷积网络

一、论文信息 论文名称&#xff1a;Dynamic Filter Networks 作者团队&#xff1a;NIPS2016 二、动机与创新 卷积层是通过将上一层的特征映射与一组过滤器进行卷积计算输出特征映射&#xff0c;滤波器是卷积层的唯一参数&#xff0c;通常用反向传播算法在训练中学习&#xff…...

面试官:你是怎样理解Fiber的

hello&#xff0c;这里是潇晨&#xff0c;今天我们来聊一聊Fiber。不知道大家面试的时候有没有遇到过和react Fiber相关的问题呢&#xff0c;这一类问题比较开放&#xff0c;但也是考察对react源码理解深度的问题&#xff0c;如果面试高级前端岗&#xff0c;恰巧你平时用的是re…...

【C++的OpenCV】第一课-opencv的介绍和安装(Linux环境下)

第一课-目录一、基本介绍1.1 官网1.2 git源码1.3 介绍二、OpenCV的相关部署工作2.1 Linux平台下部署OpenCV一、基本介绍 1.1 官网 opencv官网 注意&#xff1a;官网为英文版本&#xff0c;可以使用浏览器自带的翻译插件进行翻译&#xff0c;真心不推荐大家去看别人翻译的&am…...

k8s安装tekton,编写task

文章目录一、官方安装二、国内资源安装安装tekton安装dashboard安装CLI三、demo编写task.yaml编写taskRun.yaml使用tkn命令查看参考文章一、官方安装 地址&#xff1a;https://tekton.dev/docs/installation/pipelines/#installing-tekton-pipelines-on-kubernetes 注意&#…...

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:数据对比&#xff1a;四、部分代码说明1、接线引脚定义1.1、STC89C52RCS12SD紫外线传感器模块1.2、STM32F103…...

还真不错,今天 Chatgpt 教会我如何开发一款小工具开发(Python 代码实现)

上次使用 Chatgpt 写爬虫&#xff0c;虽然写出来的代码很多需要修改后才能运行&#xff0c;但Chatgpt提供的思路和框架都是没问题。 这次让 Chatgpt 写一写GUI程序&#xff0c;也就是你常看到的桌面图形程序。 由于第一次测试&#xff0c;就来个简单点的&#xff0c;用Python…...

Boom 3D最新版本下载电脑音频增强应用工具

为了更好地感受音乐的魅力&#xff0c;Boom 3D 可以让你对音效进行个性化增强&#xff0c;并集成 3D 环绕立体声效果&#xff0c;可以让你在使用任何耳机时&#xff0c;都拥有纯正、优质的音乐体验。Boom 3D是一款充满神奇魅力的3D环绕音效升级版&#xff0c;BOOM 3D是一个全新…...

redis-如何保证数据库和缓存双写一致性?

前言 数据库和缓存&#xff08;比如&#xff1a;redis&#xff09;双写数据一致性问题&#xff0c;是一个跟开发语言无关的公共问题。尤其在高并发的场景下&#xff0c;这个问题变得更加严重。 我很负责的告诉大家&#xff0c;该问题无论在面试&#xff0c;还是工作中遇到的概率…...

系列二、核心概念运行流程

一、镜像&容器&仓库 1.1、镜像 定义&#xff1a;一个镜像代表着一个软件&#xff0c;例如&#xff1a;mysql镜像、redis镜像、nginx镜像。 特点&#xff1a;只读 1.2、容器 定义&#xff1a;基于某个镜像运行一次就会生成一个程序实例&#xff0c;一个程序实例称之为一…...

恢复 iPhone 和 iPad 数据的 10 种简单工具

它发生了.. 有时您需要从您的手机或平板设备恢复重要数据。 许多人已经开始将重要文件存储在手机上&#xff0c;因为他们几乎可以在任何情况下随时随地轻松访问数据。 从技术上讲&#xff0c;您会在几分之一秒内丢失所有存储的信息、照片、视频、音乐、文档等。因此&#xff…...

经理与员工工资关系-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-6】经理与员工工资案例&#xff08;利用多态实现&#xff09; 欢迎点赞关注收藏 【案例介绍】 案例描述 某公司的人员分为员工和经理两种&#xff0c;但经理也属于员工中的一种&#xff0c;公司的人员都有自己的姓名和地址&#xff0c;员工和经理都有自己的工号、工…...

Micropython ESP32配置与烧录版本

下载ESP32的Micropython固件 官方连接https://www.micropython.org/download/esp32/ 看了下描述&#xff0c;上面的是IDF4.x系列编译&#xff0c;下面是IDF3.x系列编译&#xff0c;我们默认选新的 下载安装CP2102驱动 CP210x USB to UART Bridge VCP Drivers - Silicon Labs…...

java面试题-并发关键字(Synchronized,volatile,final)

Synchronized1.Synchronized可以作用在哪里?Synchronized可以作用在方法、代码块、静态方法和类上。方法public synchronized void method(){//同步代码块 }代码块Object lock new Object(); synchronized(lock){//同步代码块 }静态方法public static synchronized void stat…...

【笔试强训】Day_02

目录 一、选择题 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 二、编程题 1、排序子序列 2、倒置字符串 一、选择题 1、 使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。…...

DepGraph:适用任何结构的剪枝

文章目录摘要1、简介2、相关工作3、方法3.1、神经网络中的依赖关系3.2、依赖关系图3.3、使用依赖图剪枝4、实验4.1、设置。4.2、CIFAR的结果4.3、消融实验4.4、适用任何结构剪枝5、结论摘要 论文链接&#xff1a;https://arxiv.org/abs/2301.12900 源码&#xff1a;https://gi…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...