SAP小技巧 特殊搜索帮助

前言

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

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

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

特殊的搜索帮助

  • RANGE类

  • 码表类

  • 表的字段名类

  • 表的多字段类

  • 层级选择类

  • 指定表,字段的RANGE

RANGE类

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

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

01

表现形式

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

8ed4f0d5177ab20f9785c5fd530248da.png

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

155a24670903945ce3ba9d0d4bc4bd5b.png

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

4ba41020d7da26aa5a23d7e6690a83fa.png

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

6e64e99dbe48f2cc6ca93a8c8e0b0e69.png

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

8941d5eb47d54d471ca2d04c7d4f5c37.png

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

8bdc064231a260bb96b7aeb5c311748b.png

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

74852dc5c5cc6b4e920fb3aff9202b6c.png

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

f433e51f25ee273417986ccccd16c4e0.png

02

实现方式

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

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

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

8de1e5dd9ecd42a2260415c60e89bf23.png

03

搜索帮助

17f132ccad059e28f8c14f899d167135.png

码表类

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

码表的概念详见链接

01

表现形式

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

450755712bef4fd3d3dee5ec67b5441b.png

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

096c89717531709ea9bdc73d4fc84227.png

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

72a9cd1310edf2fb4fb5658695eda788.png

02

实现方式

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

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

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

7427296949ad18afe72c559fa4753dab.png

e19f743cb19bd3ee17a9c578f8343d00.png

03

搜索帮助

cb805d5bc03cc7f56ff893b88e0e4b07.png

表的字段名类

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

01

表现形式

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

a5a44c4b1968c83f6cb401b2bf9fe413.png

02

实现方式

c3ca03c11a0f4cd7fc0ee74163a02adf.png

03

搜索帮助

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

c2a48d60d20a1e54bd77bc69f4e8de37.png

表的多字段类

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

01

表现形式

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

66ea4c1e00696c50c3c762d678a3326a.png

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

5deed1d3f5e26a840f6b4ca0b6baf8f5.png

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

aeb7b1e90cb9a4205479cc69213588a4.png

02

实现方式

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

fa390d8b16d7ec4f674d5a1ed94c526c.png

03

搜索帮助

a35bda0687aa92b3880fa3cf71725950.png

层级选择类

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

01

表现形式

916859d5af9a307ffaab164251ab5d86.png

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

f41799184055c20d33f4406be57f4cd8.png

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

6f0158e8e72acfa60811945e11ba010d.png

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

416681d34d74a2e7607489d1c20bbd66.png

03d9d2d1f58b24c702d6584f18672da9.png

02

实现方式

e3786d3739f56b9df3552189519d59c5.png

03

搜索帮助

44763d13a9dcb2b5d59fb4f19a38ea35.png

指定表,字段的RANGE

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

01

表现形式

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

048d17e969f9e5681c26f94e4fe54f92.png

02

实现方式

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

93b5b602e57f746287609eb252299199.png

03

搜索帮助

a612630f940158cabe5f7ea2febedcf1.png

特殊搜索帮助的应用

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

01

配置自动单据过滤条件

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

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

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

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

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

3e69c81c0da4da939b9492aecfa036fe.png

02

动态报表的默认选择内容

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

1739a8ad13a7a988267fa2ae48be4a9c.png

03

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

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

6b152f17e74434d334ca896951f66d7a.png

04

数据同步平台配置

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

eb328232b4626aaf3d32fe7bdfb84235.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、付费专栏及课程。

余额充值