SAP小技巧 特殊搜索帮助

前言

SAP的搜索帮助是一个非常有用的功能.

常规情况下搜索帮助可以帮助用户选择内容填入字段中.

本文介绍几种特殊的搜索帮助功能,用来添加一些特殊的字段内容

特殊的搜索帮助

  • RANGE类

  • 码表类

  • 表的字段名类

  • 表的多字段类

  • 层级选择类

  • 指定表,字段的RANGE

RANGE类

搜索帮助界面类似选择屏幕,包含所有标准选择屏幕中的功能.

添加的选择条件合并成字符串的返回到目标字段.

01

表现形式

如下图, 对订单号限制 字段点击搜索帮助,会弹出一个动态选择屏幕,

f6d1596492ee589f0902e056c325ffb5.png

输入复杂的选择条件,确认后.

13ce7370ba7827af5324d6dbfbe4a5b8.png

把复杂选择条件的所有行通过逗号分割填写到字段中.

41bf97d66d94b183a4505cf83e29c8fd.png

存在内容的情况下,点击搜索帮助,可以看到动态选择屏幕中的内容. 此时可以修改

b6998fecc50ac897fe42439ad3ab6f02.png

在复杂选择内容中,可以通过多项选择,进入下一级搜索帮助多选内容.

d253c4dd1ab42ee21894af27a065535f.png

多选确定的内容进入选择单值

17d8c1100930c52e0c8644847fbe69c1.png

当选择内容太多. ALV的字段无法显示(最多128个字符). 使用 MU <NUM10>替代

616eb1025a90b13c656458b2a96d9052.png

可以通过搜索帮助重现内容

67d9d22ee2761f1b0a3a7ba6c0c827ab.png

02

实现方式

对表的字段分配特殊搜索帮助ZSH_RANGES_VBELN, 或 ZSH_RANGES_ALL_FIELDS

分配时指定参考表,参考字段即可.

注意,字段名建议命名规则 <参考字段名>_MUL . 字段长度限定为128位 (域ZDB_FIELDS_MUL)

4cb2da786d199ab370f101590e795abe.png

03

搜索帮助

120135d1ec7f39f3c8d56340342dd574.png

码表类

把字段的编码,描述通过弹窗显示,勾选结构组合成字符串返回到字段内容

码表的概念详见链接

01

表现形式

点击字段的搜索帮助,会显示该字段对应码表的所有编码,描述内容.

bc0107b9cb470bf70e864cf9008e7f2b.png

勾选后,所有编码通过英文逗号分割返回到字段内容中

019b6227b8f7ac0f6ae18424764e594c.png

如果勾选生成的字符串超过128位, 则使用<NUM10> 替代字段内容. 此时可以通过搜索帮助查看实际勾选内容

9c3ece08a860d32fcb23ffe00d758a85.png

02

实现方式

为表字段分配通用搜索帮助 ZSH_MABIAO_MULTI

字段名命名规则 <码表字段>_MULTI

<码表字段> 在ZTMD006R中维护码表信息(获取编码,描述的方式)

ff62c0ba529868b5e31622d5e8028c50.png

7be2feaa2d923153bcbef17c95f4e342.png

03

搜索帮助

7cea6c2268fd8d19f093ac912771eef4.png

表的字段名类

同一行需要一个表名字段,添加表名. 然后搜索帮助中显示该表的所有字段, 双击把字段名选中到字段内容中

01

表现形式

显示指定表的所有字段,以便输入,这是一个最基础的搜索帮助形式

56fe8de9dc1f62bb97e8d7bb1a9444ae.png

02

实现方式

152c7c05d994e56878094af8f244b4d9.png

03

搜索帮助

这是个最基础的搜索帮助. 通过传输参数传入表名,传出选择的字段名

45e26835bcf3e7e31fdbbe9c22cd48f1.png

表的多字段类

指定表后, 允许勾选多个字段.把勾选的结果组合成字符串返回到字段内容中

01

表现形式

输入表名后, 字段名的搜索帮助显示该表的所有字段, 通过勾选选中多字段

c07ad84af5f48232dae36b9bfb313918.png

选中的多字段通过英文逗号分割生成字符串放到内容中

45afb12d14f8f13185d4ab918ddfe164.png

如果选中字段组合的字符串超过128位, 替换成 MU<NUM10>,此时只能通过搜索帮助查看实际勾选字段

73c76ab284a3212a82ea5d24c2dc9a4d.png

02

实现方式

表的字段分配搜索帮助 ZSH_TABLE_FIELDS_MULTI . 字段名命名没有什么限制

29ab3d007692ec925b250115a7c5bed5.png

03

搜索帮助

7335cd69b7450358c95d651dd7f9abc2.png

层级选择类

选用了一个标准字段 物料的产品层次PRDHA

01

表现形式

109b03e83e65c90559b40c65a27bafac.png

选中后,把多层选择的内容组合放到字段内容中

e534ef43b234e907841439bb6313f166.png

产品层次在标准界面的搜索帮助表现形式(树状结构选择)

d587ba68efa4c83ab42eb3ff1496fce0.png

通过屏幕中指定VALUE-REQUEST实现

65fed197838f33a9c209738af41e1225.png

733d3121f29723de07f19240054cfab6.png

02

实现方式

c2f648cb83b6e8ea8ac69f0d1b580fc1.png

03

搜索帮助

dedee4a1233a87a6573699c0baab1f7b.png

指定表,字段的RANGE

行中给定表名,字段名. 条件值内容通过搜索帮助的动态选择设置,选择内容合并到字符串输出

01

表现形式

参考RANGE类. 需要在行中先输入表名,字段名,值的搜索帮助按输入的表名,字段名生成动态选择屏幕.

5a5406fec3a0fe5ace5a0388b28e6c21.png

02

实现方式

表中包含参考表,字段名 .字段值. 字段值的搜索帮助分配ZSH_RANGES_ALL_FIELDS. 同时指定表中的参考表,字段名

3d59adff0cb06d014157e4281f328d9d.png

03

搜索帮助

ab6e5e10da2e0818311b3d859f3376c9.png

特殊搜索帮助的应用

特殊搜索帮助在多个场景中使用, 这里列出几个示例

01

配置自动单据过滤条件

配置自动单据的保存过滤条件,符合过滤条件的单据保存时会写入自动产生后续单据的表中.

比如,交货单保存时,如果满足自动过账DN_POST的条件, 则写入ZTA_DN_POST. 后台定时执行ZA_DN_POST完成交货单的过账动作

其中同一个条件分组中的条件之间是AND关系, 不同的条件分组之间是OR关系

这种配置方式兼具简洁性和灵活性. 可以指定任意抬头/明细表字段内容作为条件,通过RANGE形式简化了条件值得输入. 

一个配置表替代了之前的多个配置表.

ba2fc58ca4ca1cbde54100407a0591dd.png

02

动态报表的默认选择内容

动态报表的默认选择内容有复杂的填写规则,通过搜索帮助简化填写

66b454be4005003a9cc7fb1121688fc1.png

03

自动清账程序的多条件配置

自动清账程序允许配置多个限制条件,这些限制条件通过特殊搜索帮助辅助维护.

a411871117c67e049b5bddd3cc7d4f3d.png

04

数据同步平台配置

数据同步平台配置默认选择条件,分组字段

8a5cee5b53bc376dad806ae894ba5591.png

特殊配置内容的使用

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 ID
DATA: lv_always_range_id TYPE zeb_always_range_id.
lv_always_range_id = 'X'. "强制获取RANGE_ID . 如果不强制转换, 转换逻辑根据字符长度>128才转换
EXPORT lv_always_range_id = lv_always_range_id TO MEMORY ID 'ZALWAYS_RANGE_ID'.


DATA: lv_fieldvalue TYPE string.
CALL FUNCTION 'Z_BC_GET_RANGE_VALUE_OUT'
  EXPORTING
    iv_str = lv_range_value
*   iv_same     = lv_same
*   iv_range_id = lv_ori_tmp
  IMPORTING
    ev_str = lv_fieldvalue.


cl_demo_output=>next_section( '原始字符串转换成RANGE ID' ).
cl_demo_output=>write( lv_fieldvalue ).


"获取range , 考虑range id 和 字符传的情况


CALL METHOD zcl_zorder_comm=>get_value_of_range( EXPORTING iv_range = lv_fieldvalue IMPORTING et_r = lr_range2 ).


cl_demo_output=>next_section( 'range id获取range' ).
cl_demo_output=>write( lr_range2 ).


"
CALL METHOD zcl_zorder_comm=>get_value_of_range( EXPORTING iv_range = lv_range_value IMPORTING et_r = lr_range ).


cl_demo_output=>next_section( 'range 字符传获取range' ).
cl_demo_output=>write( lr_range ).


CL_DEMO_OUTPUT=>DISPLAY( ).

十一

总结

搜索帮助在表字段中分配后, 可以在所有应用到该字段的屏幕,ALV显示中使用. 上述特殊搜索帮助简化了一些特殊字段内容的输入.

这些特殊内容可以简化配置表的形式. 友好的输入帮助则简化了特殊内容的配置.

同时通过替代串让ALV类的程序(比如SE16N)可以维护更多的内容. 替代串对应的内容保存在表

  • ZTBC_SH_RANGES  保存通过特殊搜索帮助ZSH_RANGES_ALL_FIELDS获取的结果

  • ZTMABIAO_MUL  存放码表多选的内容

上述特殊搜索帮助通过简单的搜索帮助分配就能实现.

THE

END

约定

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

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值