SAP小技巧 特殊搜索帮助

文摘   2024-09-29 18:18   北京  

前言

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_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 

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


码农干货铺
永远要保持一种无论何时何地都逼着自己更努力更优秀来享受更好生活的学习状态
 最新文章