1 背景
在alv或者table control里需要定义字段的搜索帮助,本文通过自定义的搜索帮助出口来实现,相对于定义alv的f4事件或者屏幕的process on value-request的方式代码量少,更加方便。同时自定义搜索帮助里需要取自ALV或者table control的其他字段来实现关联搜索帮助功能。
本文根据物料、工厂、库存地点取批次及库存信息
2.实现
2.1 建立自定义搜索帮助
事务代码SE11建立搜索帮助

从标准搜索帮助出口函数F4IF_SHLP_EXIT_EXAMPLE复制到自定义函数如上图所示。
在select部分编写代码如下:
获取输入的条件值,然后根据条件取数,最后调用显示函数
DATA:lr_matnr TYPE RANGE OF mchb-matnr,
lr_werks TYPE RANGE OF mchb-werks,
lr_charg TYPE RANGE OF mchb-charg,
lr_lgort TYPE RANGE OF mchb-lgort.
IF callcontrol-step = ‘SELECT’.
LOOP AT shlp-selopt INTO DATA(ls_selopt).
CASE ls_selopt-shlpfield.
WHEN ‘MATNR’.
lr_matnr[] = VALUE #( BASE lr_matnr[] (
sign = ls_selopt-sign
option = ls_selopt-option
low = ls_selopt-low
high = ls_selopt-high ) ).
WHEN ‘WERKS’.
lr_werks[] = VALUE #( BASE lr_werks[] (
sign = ls_selopt-sign
option = ls_selopt-option
low = ls_selopt-low
high = ls_selopt-high ) ).
WHEN ‘CHARG’.
lr_charg[] = VALUE #( BASE lr_charg[] (
sign = ls_selopt-sign
option = ls_selopt-option
low = ls_selopt-low
high = ls_selopt-high ) ).
WHEN ‘LGORT’.
lr_lgort[] = VALUE #( BASE lr_lgort[] (
sign = ls_selopt-sign
option = ls_selopt-option
low = ls_selopt-low
high = ls_selopt-high ) ).
WHEN OTHERS.
ENDCASE.
ENDLOOP.
SELECT matnr, werks, charg FROM v_cf_mcha
WHERE matnr IN @lr_matnr
AND werks IN @lr_werks
AND charg IN @lr_charg
AND lvorm_0 = @space
INTO TABLE @DATA(lt_mcha_tab).
IF sy-subrc = 0.
SELECT n~matnr, n~werks, n~lgort, n~charg, n~clabs,
m~sgt_scat
FROM ( nsdm_e_mchb_diff AS n
INNER JOIN

本文介绍了如何在SAP ABAP中通过自定义搜索帮助实现ALV和TableControl的关联搜索功能。首先在SE11中创建自定义搜索帮助,复用标准出口函数并根据输入条件进行数据检索。接着在ALV中引入搜索帮助,关联字段以实现搜索。最后针对TableControl,展示了如何在disp步骤中获取当前行数据并设置默认搜索条件,以达到关联搜索的效果。
最低0.47元/天 解锁文章
1138

被折叠的 条评论
为什么被折叠?



