热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

SAP小技巧简化多值输入

一前言先举个例子解释一下多值输入.比如盘点通知单:总部创建的通知特定门店执行盘点操作的单据.主从结构主表-盘点通知抬头,从表-盘点通知明细商品信息需要指定参与盘点的门店范围.一个常

前言

先举个例子解释一下多值输入.

比如盘点通知单:总部创建的通知特定门店执行盘点操作的单据.

主从结构

主表-盘点通知抬头,

从表-盘点通知明细商品信息

需要指定参与盘点的门店范围. 一个常规做法是把参与的门店创建一个子表,记录所有参与的门店. 但这个子表实际只需要一个有用字段.感觉为了这个字段单独创建一个子表很麻烦,整个单据也从主从表变成一主多从表.维护界面也会复杂很多.

可以考虑把参与的门店编码放在一个字段中,通过逗号分割多个门店编码. 这样既满足了记录,又没有附加从表,原逻辑无需太多改变.

唯一的问题是:怎么简化多个门店的输入和查看.这是本文的话题

本文主要介绍怎么通过搜索帮助完成多值输入及查看

思维导图

3a789ccdd3f79e59c186e60addce8d69.png

输入方式

先看下实现的效果,对于需要多值输入的字段. 你可以手工输入

比如店类别范围, 可以直接输入10,20 .

也可以通过搜索帮助勾选输入(图一)

勾选确定后, 系统把多个勾选的关键字用逗号分割填写在字段中.

勾选屏幕中允许

  • 全选

  • 取消全选

  • 部分选择.(使用ALV的标准选择后,点击按钮完成部分选择)

勾选输入的结果和手工输入一致.(图二)

40c24ac7468b55ce48f2caa6577cd0d6.png

f704a83a6231ccf4acb7cf59e3074348.png

图一

00dcd53edf2e65b3353e039731f43f51.png

图二

查看方式

对于已经存在内容的字段. 如果想知道这些编号的描述信息, 可以通过点击搜索帮助,查看编码对应的描述. 复选框自动填写. (如果字段非编辑状态, 调整勾选的内容不会回写到字段内容,所以复选框未做只读处理)

04dceb911c9329e8e8421478553ba184.png

实现方式

实现非常简单.只需要定义字段,数据元素,关联搜索帮助即可. 

对于需要多值输入的字段,字段名命名规则

<原字段名>_MULTI(图三)

示例:

地点多选, 可以定义成 WERKS_MULTI

商品多选, 可以定义成 MATNR_MULTI

定义一个长度255的域值,

设置通用搜索帮助 ZSH_MABIAO_MULTI .(图四)

2fc094d8f724a5509baed4535c8e7bad.png

图三

1393cc96a0ef00c061104e160f70b545.png

图四

疑问及解决

看到这里, 聪明如你可能会问一个问题. 字段长度255 字段内容通过逗号分割. 如果编码长度10,那么最多填写 255 / 11 &#61; 22 个编码左右. 超过的部分怎么办?

系统会检查字段长度,计算出该字段最大存放的编码个数,

如果勾选的编码个数小于该数字, 则通过逗号分割存放多个编码.

如果勾选的编码个数大于该数字, 则把生成一个码表勾选ID,勾选的编码与该ID关联,记录在表ztmabiao_mul中. 原位置放码表勾选ID即可. 每次勾选都会生成一个新的码表勾选ID记录关系,如下图所示

码表勾选ID填充在测试客户字段中

337216c959683efc6d109e7e14a0cf35.png

点击搜索帮助可以看到所有勾选的客户编码

67282b6e0af5898d8d7afe99badf604a.png

表中存储的内容

037299b06026bf6979c7a37daeccc7af.png

底层逻辑

多值输入帮助是个通用搜索帮助, 

根据字段命名规则可以获取原字段名. 

通过查询码表获取编码,描述. 

呈现给用户勾选. 

根据勾选的结果. 判断直接记录或者产生码表勾选ID记录

码表机制详见链接

无峰&#xff0c;公众号&#xff1a;ABAP 技巧与实战SAP开发框架系列之 码表框架

涉及的代码调用层级太多. 就不贴出了. 大家了解这个处理的思路就好.

302139b41aa0a2de49848fdb3fbbfeed.png

搜索帮助

f99956714a385ce31f64730e83478a69.png

搜索帮助的增强函数

优化

写文章的过程中,发现多值输入有如下几个优化点,(这些细节后续有空处理)

  • 显示状态点击F4后, 复选框应该不允许勾选

  • 显示状态点击F4后, 应该默认过滤只显示勾选的行

  • 特定字段(比如商品,客户,根据字段域的转换例程转换),勾选界面及结果最好去掉前置0(这个细节可以放到码表功能中实现)

  • 如果勾选内容不变,无需分配新的码表勾选ID

总结

多值输入只是一个很简单的应用, 具体在设计程序时, 可以把这种需要记录多值需求放在一个长字段中. 避免因为记录多值创建一个从表(让程序设计更复杂).

同时这也是一个小的通用模块. 可以在所有需要多值输入的地方使用, 因为使用的标准搜索帮助功能. 可以在任意界面使用(屏幕,ALV等).

使用多值输入在一定程度上简化了程序及界面设计.

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

 

 

 


推荐阅读
  • 导读上一篇讲了zsh的常用字符串操作,这篇开始讲更为琐碎的转义字符和格式化输出相关内容。包括转义字符、引号、print、printf的使用等等。其中很多内容没有必要记忆,作为手册参 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 如何在Linux中配置环境变量:命令与脚本详解
    请关注本头条号,每天坚持更新原创干货技术文章。当您在Linux命令行上键入命令时,您实际是在告诉shell运行指定名称的可执行文件。在Linux中,这些可执行程序通常位于系统上的几 ... [详细]
  • 互联网世界 9 种基本的商业模式
    互联网世界9种基本的商业模式一个商业模式是运行一个公司的方法;通过该模式的运作,一个公司能维持自己的生存,就是说,能有收益。商业模式意味着一个公司是如何通过在价值链中定位自己,从而获 ... [详细]
  • [VScode教程] VSCode 任务系统配置 – 分组和结果显示
    VSCode任务系统配置–分组和结果显示,来学习一下任务系统配置里的其他属性 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在 Go 开发环境中,通过使用 iTerm 和 Oh My Zsh,可以显著提升终端操作的效率和体验。Oh My Zsh 是一个强大的 Zsh 配置管理框架,提供了丰富的插件支持,如代码高亮、自动补全和多种编程语言支持,同时还拥有众多美观的主题,使终端界面更加个性化和高效。Zsh 作为一种高度可定制的 shell,不仅适用于交互式应用,还可用作脚本解释器,集成了 bash、ksh 和 tcsh 等其他 shell 的诸多优点,并具备独特的功能特性。 ... [详细]
  • awk if 包含_千面 awk | Linux 中国
    awk命令不仅提供了简单的输入字符串筛选功能,还包含提取数据列、打印简单文本、筛选内容——甚至做一些数学计算。--SandraHenry-stockerawk命令不仅 ... [详细]
  • android巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解一、反射机制概述Java反射机制是在运行状态中 ... [详细]
  • 文章目录一、背景二、字节跳动新的Rust镜像源以及安装rustcrates.ioMirrorRustupMirror安装Rust三、rust使用其他国内镜像以及安装rust使用国内 ... [详细]
  • jupyterlab部署到docker
    操作环境:macOS10.14.6docker版本:10.03.1终端:iterm23.3时间:2019年8月::说明::jupyter没有提供单独的jupyterlab镜像,可以 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 我创建了一个新的AWSSSO(使用内部IDP作为身份源,因此不使用ActiveDirectory)。我能够登录AWSCLI、AWSGUI,但 ... [详细]
author-avatar
机智的树獭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有