【转载】SAP开发-ABAP数据字典(搜索帮助增强)

搜索帮助在SAP GUI中应用非常广泛,在上一篇<ABAP系列-数据字典(搜索帮助)>中,我们介绍了系统标准搜索帮助的创建和使用方法。实际工作中,我们还经常会遇到一些特别的搜索要求,需要在标准搜索帮助的基础上做增强开发。这一篇我们通过一个简单的例子来看看如何实现搜索帮助的增强。

先回顾下上一篇数据字典搜索帮助的内容。首先,创建一个系统标准搜索帮助ZEMPNO_ESH1。

创建完成后,赋值给相关对象,比如数据元素ZE_EMPNO。激活生效后,我们看到屏幕上实际的使用效果是这样的。

现在有个小需求,需要将姓氏和名字合成一个字段<姓名>,该如何实现?可以使用搜索字段的增强来完成。我们新建一个搜索帮助ZEMPNO_ESH2,在之前ZEMPNO_ESH1的基础上,稍作改造。

步骤1:调整输出参数,去掉FNAME, LNAME, 新增一个字段NAME1。

步骤2:指定搜索帮助增强,(增强又称作出口)。系统有一个样例Function <F4IF_SHLP_EXIT_EXAMPLE> 可供参考,可将样例拷贝至ZF4IF_SHLP_EXIT_EMPNO, 通过事务码SE37查看,会看到有个变量CALLCONTROL-STEP,这代表了搜索帮助处理过程中的各个事件,包括SELONE,PRESEL,SELECT,DISP等,每一个事件在程序中都有详细的备注说明。我们可以在DISP事件中添加一段代码:

  IF callcontrol-step = ‘DISP’.
  • PERFORM AUTHORITY_CHECK TABLES RECORD_TAB SHLP_TAB
  •                       CHANGING SHLP CALLCONTROL.
    
    DATA ls_record LIKE LINE OF record_tab.
    DATA lv_name TYPE string.
    LOOP AT record_tab INTO ls_record.
    lv_name = ls_record-string+9(10).
    CONDENSE lv_name.
    lv_name = | { ls_record-string+9(10) }{ ls_record-string+19(10) } |.
    CONDENSE lv_name.
    ls_record-string+74(10) = lv_name.
    MODIFY record_tab FROM ls_record.
    ENDLOOP.
    EXIT.
    ENDIF.

    这段代码主要是用于合并姓氏和名字,合并后更新回结果列表 recode_tab, 如果初学的朋友们对这些代码感到陌生,没关系,可以先大概了解,后面熟悉语法后再回头来看。

    创建完搜索帮助ZEMPNO_ESH2,将其赋给数据元素ZE_EMPNO。我们看看屏幕上实际使用的效果。

    可以看到,姓氏和名字已经合并成姓名字段了。增强完成,是不是很简单呢,各位如果还有疑问,可以加入群讨论。

    微信号:eckwise

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值