SAP自建表做搜索条件时,需要的search help(源代码)

2023-10-27

以我之前写的:在SAP自建 全国各大城市数据表http://blog.csdn.net/szlaptop/article/details/8074609 为基础,设计search help。

最终效果如下:



因为是自建全国各省市数据表,用做查询的时候没有search help ,很难记住那个省份,城市的ID是多少。所以利用search help功能。操作如下:

代码相对简单,入门级别的一看便知。


*&---------------------------------------------------------------------*
*& REPORT  ZSEARCHHELP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSEARCHHELP.
TABLES ZCHINA_MESSAGE.

TYPES:BEGIN OF T_AREA,
      AREACODE TYPE ZCHINA_MESSAGE-AREACODE,
      AREANAME TYPE ZCHINA_MESSAGE-AREANAME,
  END OF T_AREA.

TYPES:BEGIN OF T_PROVINCE,
    PROVINCECODE TYPE ZCHINA_MESSAGE-PROVINCECODE,
    PROVINCE TYPE ZCHINA_MESSAGE-PROVINCE,
END OF T_PROVINCE.

TYPES:BEGIN OF T_CITY,
    CITYCODE TYPE ZCHINA_MESSAGE-CITYCODE,
    CITY TYPE ZCHINA_MESSAGE-CITY,
END OF T_CITY.


DATA: IT_AREA TYPE STANDARD TABLE OF T_AREA,   "定义大区内表
      IT_PROVINCE TYPE STANDARD TABLE OF T_PROVINCE, "定义省份内表
      IT_CITY TYPE STANDARD TABLE OF T_CITY,   "定义城市内表

      WA_RETURN_TAB TYPE DDSHRETVAL,
      IT_RETURN_TAB TYPE STANDARD TABLE OF DDSHRETVAL, "接口结构搜索帮助 <-> 帮助系统
      V_REPID TYPE SY-REPID,
      V_DYNNR TYPE SY-DYNNR. "ABAP 程序, 当前屏幕的编号

SELECT-OPTIONS:S_ACODE FOR ZCHINA_MESSAGE-AREACODE NO INTERVALS NO-EXTENSION,
               S_PCODE FOR ZCHINA_MESSAGE-PROVINCECODE NO INTERVALS NO-EXTENSION,
               S_CCODE FOR ZCHINA_MESSAGE-CITYCODE NO INTERVALS NO-EXTENSION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_ACODE-LOW.

  IF IT_AREA[] IS INITIAL.
    PERFORM INIT_AREALIST.
  ENDIF.
  PERFORM F_VALUEHELP_AREA.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PCODE-LOW.

  IF IT_PROVINCE[] IS INITIAL.
    PERFORM INIT_PROVINCELIST.
  ENDIF.
  PERFORM F_VALUEHELP_PROVINCE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CCODE-LOW.

  IF IT_CITY[] IS INITIAL.
    PERFORM INIT_CITYLIST.
  ENDIF.
  PERFORM F_VALUEHELP_CITY.



*&---------------------------------------------------------------------*
*&      Form  INIT_KSTARLIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM INIT_AREALIST.
  V_REPID = SY-REPID.
  V_DYNNR = SY-DYNNR.

  SELECT DISTINCT AREACODE AREANAME FROM ZCHINA_MESSAGE INTO TABLE IT_AREA ORDER BY AREACODE.

ENDFORM.                    "INIT_AREALIST

*&---------------------------------------------------------------------*
*&      Form  INIT_PROVINCELIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM INIT_PROVINCELIST.
  V_REPID = SY-REPID.
  V_DYNNR = SY-DYNNR.

  SELECT DISTINCT PROVINCECODE PROVINCE FROM ZCHINA_MESSAGE INTO TABLE IT_PROVINCE ORDER BY PROVINCECODE.

ENDFORM.                    "INIT_PROVINCELIST

*&---------------------------------------------------------------------*
*&      Form  INIT_CITYLIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM INIT_CITYLIST.
  V_REPID = SY-REPID.
  V_DYNNR = SY-DYNNR.

  SELECT DISTINCT CITYCODE CITY FROM ZCHINA_MESSAGE INTO TABLE IT_CITY ORDER BY CITYCODE.

ENDFORM.                    "INIT_CITYLIST

*&---------------------------------------------------------------------*
*&      Form  F_VALUEHELP_KSTAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F_VALUEHELP_AREA.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'AREACODE'
      DYNPPROG        = V_REPID
      DYNPNR          = V_DYNNR
      DYNPROFIELD     = 'S_ACODE-LOW'
      VALUE_ORG       = 'S'
      MULTIPLE_CHOICE = 'X'
    TABLES
      VALUE_TAB       = IT_AREA
      RETURN_TAB      = IT_RETURN_TAB.

  IF SY-SUBRC = 0.
    S_ACODE-SIGN = 'I'.
    S_ACODE-OPTION = 'EQ'.

    LOOP AT IT_RETURN_TAB INTO WA_RETURN_TAB.  "将内表的值传给结构
      S_ACODE-LOW = WA_RETURN_TAB-FIELDVAL.  "将屏幕选取的值填充上去
      APPEND S_ACODE.
    ENDLOOP.

  ENDIF.


ENDFORM.                    "F_VALUEHELP_AREA

*&---------------------------------------------------------------------*
*&      Form  F_VALUEHELP_PROVINCE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F_VALUEHELP_PROVINCE.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'PROVINCECODE'
      DYNPPROG        = V_REPID
      DYNPNR          = V_DYNNR
      DYNPROFIELD     = 'S_PCODE-LOW'
      VALUE_ORG       = 'S'
      MULTIPLE_CHOICE = 'X'
    TABLES
      VALUE_TAB       = IT_PROVINCE
      RETURN_TAB      = IT_RETURN_TAB.

  IF SY-SUBRC = 0.
    S_PCODE-SIGN = 'I'.
    S_PCODE-OPTION = 'EQ'.

    LOOP AT IT_RETURN_TAB INTO WA_RETURN_TAB.
      S_PCODE-LOW = WA_RETURN_TAB-FIELDVAL.
      APPEND S_PCODE.
    ENDLOOP.

  ENDIF.


ENDFORM.                    "F_VALUEHELP_PROVINCE

*&---------------------------------------------------------------------*
*&      Form  F_VALUEHELP_CITY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM F_VALUEHELP_CITY.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      RETFIELD        = 'CITYCODE'
      DYNPPROG        = V_REPID
      DYNPNR          = V_DYNNR
      DYNPROFIELD     = 'S_CCODE-LOW'
      VALUE_ORG       = 'S'
      MULTIPLE_CHOICE = 'X'
    TABLES
      VALUE_TAB       = IT_CITY
      RETURN_TAB      = IT_RETURN_TAB.

  IF SY-SUBRC = 0.
    S_CCODE-SIGN = 'I'.
    S_CCODE-OPTION = 'EQ'.

    LOOP AT IT_RETURN_TAB INTO WA_RETURN_TAB.
      S_CCODE-LOW = WA_RETURN_TAB-FIELDVAL.
      APPEND S_CCODE.
    ENDLOOP.

  ENDIF.


ENDFORM.                    "F_VALUEHELP_CITY


作为一名刚入行不久的新人,在接到任务要做一个这样的工作时,脑子一片空白不知道如何下手。将自建的表的字段要出现在查询条件 时才知道没有search help。如果不考虑search help,理论上这个工作没法交差的,毕竟那么多省区谁能记住编码呢。

几经搜索,sap标准里面有个示例程序“DEMO_DYNPRO_F4_HELP_MODULE”,于是照猫画虎的做了一遍不见效果。这里面的代码有的难度的,要重新添加屏幕,定位屏幕,设置屏幕等。于是继续google,搜到一条老外的博文,虽说是E文,但是有图有代码,很容易就看明白了,这样就有了上面的源代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAP自建表做搜索条件时,需要的search help(源代码) 的相关文章

  • git:文件存储方式

    引言 我们知道 git 跟踪文件会经历三个阶段 工作区 暂存区和本地仓库 参考git 理解工作区 暂存区和本地仓库 在这些阶段文件如何被储存 理解 git 文件的存储方式能帮助我们掌握 git 的工作原理 git 对象 在上述三个阶段 文件
  • 基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 文献来源 本文首先研究了一种基于广义典型相
  • 安装ik中文分词器

    前提是安装了es Elasticsearch安装 p f 的博客 CSDN博客 1 根据es版本下载对应的中文ik分词器zip资源 官方下载地址 Releases medcl elasticsearch analysis ik GitHub
  • 火狐自定义字体失败 downloadable font: no supported format found

    Bootstrap AdminLTE搭起来的服务 突然字体图标都访问不了了 报错如下 解决办法1 FontAwesome官网找解决办法 不引用本地的css 直接引用官网建议的地址 完美解决 图标都出来了 解决办法2 pom打包的代码中添加
  • Vxe Table/Grid 单元格分组合并

    要合并的列 htbm htmc hetd hetdws yjs 一般的合并 不带逻辑 直接就把各自列对应的相同名字的列合并了 如下所示 不是合同的数据 值一样 直接给合并了 加上逻辑区分后的合并 会依次判断前面的字段一致后才合并后面的字段
  • Centos7.3 Openstack-liberty安装部署记录

    一 环境 1 1 安全 本指南会告诉你如何使用 Red Hat Enterprise Linux 7和其衍生的EPEL仓库安装OpenStack 说明 目前统一采用Centos7 3版本进行Openstack liberty版本的安装 测试
  • 【分布式】Zookeeper数据与存储

    一 前言 前面分析了Zookeeper对请求的处理 本篇博文接着分析Zookeeper中如何对底层数据进行存储 数据存储被分为内存数据存储于磁盘数据存储 二 数据与存储 2 1 内存数据 Zookeeper的数据模型是树结构 在内存数据库中
  • Centos7搭建sftp服务,window上filezilla连接

    1 创建sftp数据目录 添加群组用户 mkdir p data sftp sftp的数据目录 chmod 755 R data sftp 给ftp用户进入目录 chown root root R data sftp 需要使用chroot
  • Python 列表在内存中的顺序存储

    列表在内存中的存储空间是连续的 因此在创建列表时 首先向操作系统申请一块固定大小的内存空间 来存储每个列表元素 例如 a 1 2 3 4 由于在 python 中 int 类型的数据占4个字节 因此这条语句会向操作系统申请 4 4 16 b
  • js对象数组根据某一属性查找对象

    js对象数组 name zhangsan age 20 name lisi age 30 如果想查找name是zhangsan的这个对象 传统方法可以根据for if条件遍历 也可以用map重新构造 或者组装新对象 1 组装新对象 list
  • Python实现ARMA模型

    1 导入相关包 查看数据情况 import numpy as np import pandas as pd import matplotlib pyplot as plt plt rcParams font sans serif SimHe
  • android开发浅谈之PackageManagerService(pkms)

    本文基于Android10 0 主要从以下几个方面着手 PKMS启动 PKMS安装APK PKMS卸载APK PKMS启动 这里我简单的将其分为以下几个步骤 1 SystemServer通过PKMS的main方法启动PKMS 2 PKMS构
  • pLSA/mixture unigram/gmm em算法公式汇总

    1 LSA 隐性语义分析 和SVD 奇异值分解 在VSM 文档空间向量模型中 在文章看做词袋的集合 将文档转换为同一空间向量进行计算 聚类 分类 文本检索是减少计算量 但是难以考虑文档位置以及文档的一词多义性 基于SVD分解 我们可以构造一
  • 在Mac下vs code配置Python开发环境

    背景 之前用的捷克公司JetBrains的系列软件之一Pycharm 也是非常的好用 但是要收费 对于我等穷屌丝来说 有点吃不消 开流节源 我找了一款免费的开发软件 而且是近年来崛起的 vscode 而且是一个开源项目 微软出品 什么是 V
  • Django调用Nameko微服务使用简介

    Nameko is a framework for building microservices in Python The example requires RabbitMQ because it s using the Nameko b
  • 软考中级软件设计师--7.设计模式

    设计模式 参考 https www yuque com saodai ss8tp9 B站视频 我这里只是个做个笔记 设计模式最好结合UML 类图并且结合实际代码学习 最好还是看上边视频中相关内容 创造型设计模式 概念 创造型设计模式抽象了实
  • Apache Doris : 一个开源 MPP 数据库的架构与实践

    分享提纲 Doris 背景介绍 适用场景 案例介绍 Doris 整体架构 Doris 关键技术 Doris 背景介绍 介绍 Doris 的整体架构 以及 Doris 的一些特性 一 Doris Doris 是分布式 面向交互式查询的分布式数
  • 怎么判断ios设备、移动设备、浏览器

    Navigator Navigator接口表示用户代理的状态和标识 允许脚本查询它和注册一些自己的服务 我们可以通过window navigator来访问Navigator对象 常用属性 Navigator appVersion 浏览器版本
  • git-创建release

    git tag a v0 1 1 m Release test git push origin v0 1 1
  • 前端开发微信支付宝支付流程

    微信支付的流程 我认为有几种方案 微信支付 async payOrder 1 创建订单 const orderInfo order price 0 1 consignee addr this addstr goods this cart f

随机推荐

  • 什么是缓冲区?(详细!!!!!干货!!!!!)

    缓冲区 缓冲区其实是不存在的 只不过是我们认为想象出来的 1 把数据写入文件之前 会先写入缓冲区 刷新时才会写入文件内 2 我们所说的缓冲区 实际 只有库函数中存在 3 文件流指针所应用的 文件描述符没有 知识点 1 使用printf向文件
  • 关于Gitlab恼人的Git无权限访问问题解决

    问题 不知什么时候起 从gitlab com上新开的项目中拿代码时 冒出ERROR The project you were looking for could not be found or you don t have permissi
  • docker-compose重新启动Mysql报错changing ownership of ‘/var/lib/mysql/mysql.sock‘: No such file or direct

    一 背景 最近在使用 docker compose 编排整合一个项目 springboot mysql 的时候 首次启动后重新再启动的时候 mysql 容器启动失败 通过 docker logs 命令查看 mysql 容器的启动日志如下 c
  • ajax穿formdata,ajax formdata格式问题

    慕容708150 貌似是因为没有name属性 修改如下 HTML 发布评论JavaScript function postComment var commentForm document getElementById comment for
  • apache转发tomcat http转https

    最近在弄小程序 而小程序网络请求所需要的链接需要https安全链接 之前胡乱配置一番可以用了 不过并不太理解 后来又需要一个php项目 各处查看了一下 需要apache服务器 而我的只有一个域名 已经给了tomcat了 如果在域名后面加端口
  • 2020-10-07

    渗透测试 U盘监控器 1 打开USB监控器 注册时输入任意注册码 出现注册失败页面 2 在Winhex打开USB监控器 exe 文本搜索 注册失败 之后推出字符串文件偏移地址为0x81A79 引用该字符串的指令在字符串地址的常量为0x048
  • Java09

    一 继承 在Java中 使用关键字extends来继承类 父类 public class Fu int num 100 public void methodfu System out println num 子类继承 关键字 public
  • dns服务器项目实例,DNS服务器配置实例-----主DNS服务器

    DNS服务器配置简单实例 主DNS服务器 DNS服务器类型 主DNS服务器 master 辅助DNS服务器 slave 高速缓存服务器 hint 安装bind三部曲 1 查询包是否已经安装 Nborn root 08 06 rpm q bi
  • esp32 Micropython驱动ST7735 1.8寸TFT屏幕 中文显示;时间显示、网络network实时时间获取utptime;urequests、upip等包安装

    参考 https blog csdn net weixin 57604547 article details 122274614 0 线连接 IO就是GPIO引脚 ESP32 TFT 屏ST7735 GND GND 3 3V VDD IO2
  • springboot集成shiro

    这里写自定义目录标题 Springboot集成shiro Shiro介绍 springboot集成shiro Springboot集成shiro Shiro介绍 Shiro是Apache 的一个开源项目 是一个java的安全框架具有认证 授
  • Open Euler学习

    Open Euler学习 目录 Open Euler学习 Open Euler安装截图 使用MobaXterm exe软件 连接自己的操作系统 作业问题 1 使用什么命令查看 ip 地址及接口信息 2 cp和mv命令有什么区别 用什么指令将
  • EM算法推导(收敛性证明和在GMM中的应用)

    一 EM算法的提出 当你有一组数据像如下这样 Note picture source 显然用单个高斯分布模型去拟合它们效果不好 这是一个典型的高斯混合模型的例子 p X
  • TypeError: strptime() takes no keyword arguments ValueError(“‘%s‘ is a bad directive in format ‘%s‘“

    t datetime datetime strptime 2021 5 12 09 28 11 format Y m d h m s 1 错误原因 参数格式不匹配 strptime定义 def strptime data string fo
  • leveldb(六):key的不同种类型

    有5个key的概念 可能会让人混淆 下面就来一个一个的分析 User key 最简单的key了 就是用户传入的数据 Slice user key ParsedInternalKey enum ValueType kTypeDeletion
  • sqlite3交叉编译

    1 交叉编译sqllite3可以先从官网下载最新最新的源码进行编译 sqlite3下载sqlite3有两种版本的源代码 sqlite amalgamation 3300100 zip这种是将所有的操作放到sqlite3中进行使用的 虽然官方
  • 特征筛选1——根据方差筛选(单变量筛选)

    根据给定方差的阈值 删除掉值变化小的维度 以此降低数据规模 当把阈值设置为0的时候 就会删除没有变化的数据 示例 import numpy as np from sklearn feature selection import Varian
  • 【模板】组合数取模

    文章目录 1 利用递推式预处理组合数取模 2 预处理阶乘的余数和阶乘逆元的余数 3 卢卡斯定理 4 将组合数分解质因数 高精度乘低精度 1 利用递推式预处理组合数取模 题目描述 给定 n n n 组询问 每组询问给定两个整数 a
  • C++类继承:派生类的构造函数

    派生类不能直接访问基类的私有成员 必须使用基类的公有方法来访问基类的私有成员 这意味着派生类的构造函数必须使用基类的构造函数来设置从基类中继承的私有成员 因此 在程序使用派生类构造函数创建派生类对象之前 要使用基类构造函数创建基类对象 C
  • CSS样式里面的堆叠(层叠)上下文(层次顺序z-index)

    看了网上很多的博客 将了关于这个层叠上下本的技术博客 然后我也自己去整理了下 我这篇关css元素的堆叠顺序 写的很清楚 很有条理 很简单明了 层叠上下文的法则都总结好了 希望对大家有帮助 这个属于扩展 当然你想了解技术的话 可以看看我这个关
  • SAP自建表做搜索条件时,需要的search help(源代码)

    以我之前写的 在SAP自建 全国各大城市数据表http blog csdn net szlaptop article details 8074609 为基础 设计search help 最终效果如下 因为是自建全国各省市数据表 用做查询的时