SAP 自定义搜索帮助在ALV和TABLE CONTROL里实现关联搜索

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值