原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
SAP的搜索帮助是一个非常有用的功能.
常规情况下搜索帮助可以帮助用户选择内容填入字段中.
**本文介绍几种特殊的搜索帮助功能,用来添加一些特殊的字段内容**
二
特殊的搜索帮助
• RANGE类
• 码表类
• 表的字段名类
• 表的多字段类
• 层级选择类
• 指定表,字段的RANGE
三
RANGE类
搜索帮助界面类似选择屏幕,包含所有标准选择屏幕中的功能.
添加的选择条件合并成字符串的返回到目标字段.
_**01** _
**表现形式**
如下图, 对订单号限制 字段点击搜索帮助,会弹出一个动态选择屏幕,
输入复杂的选择条件,确认后.
把复杂选择条件的所有行通过逗号分割填写到字段中.
存在内容的情况下,点击搜索帮助,可以看到动态选择屏幕中的内容. 此时可以修改
在复杂选择内容中,可以通过多项选择,进入下一级搜索帮助多选内容.
多选确定的内容进入选择单值
当选择内容太多. ALV的字段无法显示(最多128个字符). 使用 MU <NUM10>替代
可以通过搜索帮助重现内容
_**02** _
**实现方式**
对表的字段分配特殊搜索帮助ZSH_RANGES_VBELN, 或 ZSH_RANGES_ALL_FIELDS
分配时指定参考表,参考字段即可.
注意,字段名建议命名规则 <参考字段名>_MUL . 字段长度限定为128位 (域ZDB_FIELDS_MUL)
_**03** _
**搜索帮助**
四
码表类
把字段的编码,描述通过弹窗显示,勾选结构组合成字符串返回到字段内容
码表的概念详见链接
_**01** _
**
**
**表现形式**
点击字段的搜索帮助,会显示该字段对应码表的所有编码,描述内容.
勾选后,所有编码通过英文逗号分割返回到字段内容中
如果勾选生成的字符串超过128位, 则使用<NUM10> 替代字段内容. 此时可以通过搜索帮助查看实际勾选内容
_**02** _
**实现方式**
为表字段分配通用搜索帮助 ZSH_MABIAO_MULTI
字段名命名规则 <码表字段>_MULTI
<码表字段> 在ZTMD006R中维护码表信息(获取编码,描述的方式)
_**03** _
**搜索帮助**
五
表的字段名类
同一行需要一个表名字段,添加表名. 然后搜索帮助中显示该表的所有字段, 双击把字段名选中到字段内容中
_**01** _
**表现形式**
显示指定表的所有字段,以便输入,这是一个最基础的搜索帮助形式
_**02** _
**实现方式**
_**03** _
**搜索帮助**
这是个最基础的搜索帮助. 通过传输参数传入表名,传出选择的字段名
六
表的多字段类
指定表后, 允许勾选多个字段.把勾选的结果组合成字符串返回到字段内容中
_**01** _
**表现形式**
输入表名后, 字段名的搜索帮助显示该表的所有字段, 通过勾选选中多字段
选中的多字段通过英文逗号分割生成字符串放到内容中
如果选中字段组合的字符串超过128位, 替换成 MU<NUM10> ,此时只能通过搜索帮助查看实际勾选字段
_**02** _
**实现方式**
表的字段分配搜索帮助 ZSH_TABLE_FIELDS_MULTI . 字段名命名没有什么限制
_**03** _
**搜索帮助**
七
层级选择类
选用了一个标准字段 物料的产品层次PRDHA
_**01** _
**表现形式**
选中后,把多层选择的内容组合放到字段内容中
产品层次在标准界面的搜索帮助表现形式(树状结构选择)
通过屏幕中指定VALUE-REQUEST实现
_**02** _
**实现方式**
_**03** _
**搜索帮助**
八
指定表,字段的RANGE
行中给定表名,字段名. 条件值内容通过搜索帮助的动态选择设置,选择内容合并到字符串输出
_**01** _
**表现形式**
参考RANGE类. 需要在行中先输入表名,字段名,值的搜索帮助按输入的表名,字段名生成动态选择屏幕.
_**02** _
**
**
**实现方式**
表中包含参考表,字段名 .字段值. 字段值的搜索帮助分配ZSH_RANGES_ALL_FIELDS. 同时指定表中的参考表,字段名
_**03** _
**搜索帮助**
九
特殊搜索帮助的应用
特殊搜索帮助在多个场景中使用, 这里列出几个示例
_**01** _
**配置自动单据过滤条件**
配置自动单据的保存过滤条件,符合过滤条件的单据保存时会写入自动产生后续单据的表中.
比如,交货单保存时,如果满足自动过账DN_POST的条件, 则写入ZTA_DN_POST. 后台定时执行ZA_DN_POST完成交货单的过账动作
其中同一个条件分组中的条件之间是AND关系, 不同的条件分组之间是OR关系
这种配置方式兼具简洁性和灵活性. 可以指定任意抬头/明细表字段内容作为条件,通过RANGE形式简化了条件值得输入.
一个配置表替代了之前的多个配置表.
_**02** _
**动态报表的默认选择内容**
动态报表的默认选择内容有复杂的填写规则,通过搜索帮助简化填写
_**03** _
**自动清账程序的多条件配置**
自动清账程序允许配置多个限制条件,这些限制条件通过特殊搜索帮助辅助维护.
_**04** _
**数据同步平台配置**
数据同步平台配置默认选择条件,分组字段
十
特殊配置内容的使用
CALL METHOD zcl_zorder_comm=>get_value_of_range( EXPORTING iv_range =
lv_fieldvalue IMPORTING et_r = lr_range2 ).详见示例程序 ZTS_COMM_GET_RANGE
*&---------------------------------------------------------------------**& Report ZTS_COMM_GET_RANGE*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*REPORT zts_comm_get_range.
DATA lr_range LIKE RANGE OF t001w-kunnr .DATA lr_range2 LIKE RANGE OF t001w-kunnr .DATA: lv_range_value TYPE string."一段RANGE字符lv_range_value = 'E/EQ/W001,I/CP/W*,W002,I/BT/1000000000/1999999999'.
cl_demo_output=>next_section( '原始字符串,包换RANGE信息' ).cl_demo_output=>write( lv_range_value )."RANGE字符获取RANGE IDDATA: lv_always_rang
...