SAP 小技巧简化多值输入

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

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

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

主从结构

主表-盘点通知抬头,

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

需要指定参与盘点的门店范围. 一个常规做法是把参与的门店创建一个子表,记录所有参与的门店.

但这个子表实际只需要一个有用字段.感觉为了这个字段单独创建一个子表很麻烦,整个单据也从主从表变成一主多从表.维护界面也会复杂很多.

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

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

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

思维导图

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

输入方式

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

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

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

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

勾选屏幕中允许

• 全选

• 取消全选

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

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

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

图一

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

图二

查看方式

对于已经存在内容的字段. 如果想知道这些编号的描述信息, 可以通过点击搜索帮助,查看编码对应的描述. 复选框自动填写. (如果字段非编辑状态,

调整勾选的内容不会回写到字段内容,所以复选框未做只读处理)

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

实现方式

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

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

<原字段名>_MULTI(图三)

示例

地点多选, 可以定义成 WERKS_MULTI

商品多选, 可以定义成 MATNR_MULTI

定义一个长度255的域值,

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

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

图三

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

图四

疑问及解决

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

超过的部分怎么办?

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

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

如果勾选的编码个数大于该数字, 则把生成一个码表勾选ID,勾选的编码与该ID关联,记录在表ztmabiao_mul中. 原位置放码表勾选ID即可.

每次勾选都会生成一个新的码表勾选ID记录关系,如下图所示

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

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

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

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

表中存储的内容

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

底层逻辑

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

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

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

呈现给用户勾选.

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

> 码表机制详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP开发框架系列之 码表框架

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485048&idx=1&sn=76518aafb6203e7e88a21fa7775c6375&chksm=cf5ddb4ef82a5258b668deae7cb3eac48564369f66f851da68d6247f1db7767126065cf7e480#rd)

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

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

搜索帮助

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

搜索帮助的增强函数

优化

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

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

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

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

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

总结

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

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

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

**约定**

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

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

SAP 小技巧简化多值输入 - 封面图
SAP 小技巧简化多值输入 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP小技巧简化多值输入.md」整理生成,仅用于内部技术分享与学习交流。