SAP ABAP

news2024/12/27 15:47:36

方法一:

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:
"fieldcat
  GT_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 SPRAS
  INTO TABLE GT_DATA
  UP TO 50 ROWS
  FROM MAKT
  WHERE MATNR IN S_MATNR
    AND SPRAS = '1'.
"alv填充数据
  LOOP AT GT_DATA INTO GW_DATA.
    MOVE-CORRESPONDING GW_DATA TO GW_ALV.
    APPEND GW_ALV TO GT_ALV.
  ENDLOOP.
"设置fieldcat
  PERFORM CREAT_FIELDCAT.
"设置下拉框值
  PERFORM CREAT_DROPDOWN_VALUES.
"设置下拉框事件
  PERFORM CREAT_EVENT_EXITS.
"显示alv
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM = G_REPID
      IT_FIELDCAT_LVC    = GT_FIELDCATALOG
      IT_EVENTS          = GT_EVENTS "这一步一定要记得添加上
    TABLES
      T_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'
    IMPORTING
      E_GRID = L_REF_ALV.
  CALL METHOD L_REF_ALV->SET_DROP_DOWN_TABLE
    EXPORTING
      IT_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_display
  EXPORTING
    it_toolbar_excluding = lt_exclude
  CHANGING
    it_fieldcatalog      = git_fieldcat
    it_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_fields
  EXPORTING
    it_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-matnr
                       CHANGING 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_m
         sub_name_m
  INTO TABLE lt_zfit029
  FROM zfit028
  INNER JOIN zfit029 ON zfit028~type_m = zfit029~type_m
  WHERE zfit028~matnr = lv_matnr.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'SUB_NAME_M'
      value_org       = 'S'
    TABLES
      value_tab       = lt_zfit029
      return_tab      = lt_ret_tab
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 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 NAME1
  INTO ZPM004-NAME1
  FROM T001W
  WHERE WERKS = ZPM004-IWERK
    AND 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 NAME1
    INTO CORRESPONDING FIELDS OF TABLE LT_WERKS
    FROM T001W.
  SORT LT_WERKS BY WERKS.
  DELETE ADJACENT DUPLICATES FROM LT_WERKS COMPARING WERKS.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'WERKS'
      DYNPPROG        = SY-REPID
      DYNPNR          = SY-DYNNR
      DYNPROFIELD     = 'IWERK'
      VALUE_ORG       = 'S'
    TABLES
      VALUE_TAB       = LT_WERKS
    EXCEPTIONS
      PARAMETER_ERROR = 1
      NO_VALUES_FOUND = 2
      OTHERS          = 3.

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

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

相关文章

【数据结构】二叉树-堆实现及其堆的应用(堆排序topK问题)

文章目录一、堆的概念及结构二、堆的实现1.结构的定义2.堆的初始化3.堆的插入4.堆的向上调整5.堆的删除6.堆的向下调整7.取出堆顶元素8.返回堆的元素个数9.判断堆是否为空10.打印堆中的数据11.堆的销毁三、完整代码1.Heap.h2.Heap.c3.test.c四、堆排序1.堆排序2.建堆3.选数4.完…

Shopee、ebay、亚马逊等跨境卖家了解测评的一篇干货

随着时代的发展&#xff0c;大家越来越喜欢网购&#xff0c;国外也有亚马逊、沃尔码、阿里国际、速卖通、ebay、shopee、Lazada、ozon、temu等等&#xff0c;而国外这些平台也有很大的市场&#xff0c;跨境电商也随时诞生&#xff0c;而当今社会环境实体生意越来越难做&#xf…

DAMA认证|数据治理产业上规模需要做到“三化”

数据治理是开启数据安全体系化建设的第一步&#xff0c;需要从产业层面做大做强&#xff0c;支撑数据安全整体框架&#xff0c;为数据流通提供安全保障&#xff0c;推动促进数字化产业进一步发展。 规模化发展是数据治理产业的瓶颈&#xff0c;行业数字化业务的复杂性和过多的定…

k8s安装tekton,编写task

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

Spring MVC 源码之MultipartResolver 组件

MultipartResolver 组件&#xff0c;内容类型( Content-Type )为 multipart/* 的请求的解析器&#xff0c;主要解析文件上传的请求。例如&#xff0c;MultipartResolver 会将 HttpServletRequest 封装成 MultipartHttpServletRequest 对象&#xff0c;便于获取参数信息以及上传…

【NVMEM子系统】二、NVMEM驱动框架

个人主页&#xff1a;董哥聊技术我是董哥&#xff0c;嵌入式领域新星创作者创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01;文章目录1、前言2、驱动框架3、源码目录结构4、用户空间下的目录结构1、前言 NVMEM SUBSYSTEM&#xff0c;该子系…

视频片段怎么做成gif图?快试试这2种方法

动态gif图片作为当下非常常用的表情包&#xff0c;其丰富的内容生动的画面深受大众喜爱。那么&#xff0c;当我们想要将电影或是电视剧中的某一片段做成gif动态图片的时候&#xff0c;要如何操作呢&#xff1f;接下来&#xff0c;给大家分享两招视频转化gif的小窍门–使用【GIF…

【力扣-Python-1】两数之和(easy)

https://leetcode.cn/problems/two-sum/题目描述给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答…

uboot下实现U盘自动升级程序的思路分析(基于USB系统、eMMC系统、FAT32文件系统)

1、常见的升级方式 1.1、应用程序升级 优点&#xff1a;在图形化界面操作&#xff0c;只需要选中升级文件并点击升级即可&#xff0c;操作简单&#xff1b; 缺点&#xff1a;应用程序必须能正常启动&#xff0c;当程序出现bug就不能升级&#xff0c;可靠性差&#xff1b; 总结…

旺店通与金蝶云星空对接集成采购入库单接口

旺店通旗舰奇门与金蝶云星空对接集成采购入库单查询连通销售退货新增V1(12-采购入库单集成方案-P)数据源系统:旺店通旗舰奇门旺店通是北京掌上先机网络科技有限公司旗下品牌&#xff0c;国内的零售云服务提供商&#xff0c;基于云计算SaaS服务模式&#xff0c;以体系化解决方案…

Prometheus集群分布式架构浅析

集群行为是一种常见于自然界中鱼群、鸟群、蜂群等低等群居生物的集体行为&#xff0c;受此启发形成了无人机集群的概念。无人机集群不是多无人机间的简单编队&#xff0c;而是通过必要的控制策略使之产生集群协同效应&#xff0c;从而具备执行复杂多变、危险任务的能力。目前无…

【C++】AVLTree——高度平衡二叉搜索树

文章目录一、AVL树的概念二、AVL树节点的定义三、AVL树的插入四、AVL树的旋转1.左单旋2.右单旋3.左右双旋4.右左双旋五、进行验证六、AVLTree的性能个人简介&#x1f4dd; &#x1f3c6;2022年度博客之星Top18;&#x1f3c6;2022社区之星Top2;的&#x1f947;C/C领域优质创作者…

JVM类加载子系统

1、类加载子系统在内存结构中所处的位置通过内存结构图&#xff0c;我们先知道类加载子系统所处的位置&#xff0c;做到心中有图。2、类加载器作用类加载器子系统负责从文件系统或者网络中加载Class文件&#xff0c;class文件在文件开头有特定的文件标识。ClassLoader只负责cla…

anaconda创建环境为空、修改默认环境位置

无论是用navigator还是命令行创建环境都无法指定python版本conda create -n test python3.9其实就是没有路径&#xff0c;添加几个镜像就好&#xff1a;conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels ht…

BUUCTF-[安洵杯 2019]crackMe1

题目下载&#xff1a;下载 这道题涉及到SM4加密和变表base64。 SM4简单了解&#xff1a;SM4算法过程_不是小白才怪的博客-CSDN博客_sm4算法 先运行一下程序&#xff0c; 发现有一个Messagebox&#xff0c;并且内容是hooked。 载入IDA&#xff0c;使用IDA的插件Findcrypt查…

ChatGPT:“抢走你工作的不会是 AI ,而是先掌握 AI 能力的人”

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; ChatGPT&#xff1a;“抢走你工作的不会是 AI &#xff0c;而是先掌握 AI 能力的人” ChatGPT&#xff1a;美国OpenAI 研发的聊天机器人程序&#xff0c;人工智能技术…

Springboot启动过程分析

Springboot启动过程分析 SpringBoot的版本是v3.0.2&#xff0c;下面进行详细的分析。 一、SpringBoot启动流程的主干 示例程序入口如下所示&#xff1a; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApp…

【网络知识】TCP和UDP详解

TCP和UDP 文章目录UDP协议概述TCP协议概述TCP报文段TCP连接的建立两天内完成下面的参考博客&#x1f60a;点此到文末惊喜↩︎ UDP协议 概述 TCP协议 概述 定义 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种传输层通信协议&…

Python 之 Pandas DataFrame 数据类型的简介、创建的列操作

文章目录一、DataFrame 结构简介二、DataFrame 对象创建1. 使用普通列表创建2. 使用嵌套列表创建3 指定数值元素的数据类型为 float4. 字典嵌套列表创建5. 添加自定义的行标签6. 列表嵌套字典创建 DataFrame 对象7. Series 创建 DataFrame 对象三、DataFrame 列操作1. 选取数据…

【LeetCode】剑指 Offer(5)

目录 写在前面&#xff1a; 题目&#xff1a; 题目的接口&#xff1a; 解题思路1&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 解题思路2&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a;…