SAP ABAP开发技巧-简单的搜索帮助入门例子

文章介绍了在SAP中通过SE11创建搜索帮助的过程,包括选择方法、对话类型和出口函数的使用。通过MATCHCODEOBJECT定义数据源,并使用F4IF_SHLP_EXIT_EXAMPLE创建函数出口进行数据筛选和展示。示例代码展示了如何处理搜索帮助的各个步骤,如SELECT、PRESEL、SELECT和DISP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选择屏幕调用自定义搜索帮助(Searchu Help)简单例子

  1. 选择屏幕调用:MATCHCODE OBJECT在这里插入图片描述
  2. 创建搜索帮助(Search Help):SE11在这里插入图片描述
  3. 搜索帮助的内容:在这里插入图片描述
    4. 主要内容说明:
    4.1 选择方法:指定搜索帮助表数据来源。
    4.2 对话类型
    在这里插入图片描述
    4.2.1 根据值集合的对话:如果数据量大于100条就不会直接展示数据,会先展示一个筛选界面;
    4.2.2 立即显示值:就是立即展示数据源表中的全部数据;
    4.2.3 具有值限制的对话:搜索帮助一开始不会将数据表中的全部数据展示出了,会给个筛选条件;
    在这里插入图片描述
    5. 搜索帮助出口: 通过SE37 参考SAP的预定义函数F4IF_SHLP_EXIT_EXAMPLE新建一个常规函数。在这里插入图片描述在这里插入图片描述6.出口函数详细代码例子:
FUNCTION zfm_vendtype_f4.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      SHLP_TAB TYPE  SHLP_DESCR_TAB_T
*"      RECORD_TAB STRUCTURE  SEAHLPRES
*"  CHANGING
*"     VALUE(SHLP) TYPE  SHLP_DESCR_T
*"     VALUE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
*"----------------------------------------------------------------------
  RANGES:ra_parentcode FOR zrre_d_bp_type_t-parentcode,
         ra_typecode FOR zrre_d_bp_type_t-typecode,
         ra_parentname FOR zrre_d_bp_type_t-parentname,
         ra_typename FOR zrre_d_bp_type_t-typename.
  DATA:BEGIN OF ls_type,
         typecode   LIKE zrre_d_bp_type_t-typecode,
         typename   LIKE zrre_d_bp_type_t-typename,
         parentcode LIKE zrre_d_bp_type_t-parentcode,
         parentname LIKE zrre_d_bp_type_t-parentname,
       END OF ls_type.
  DATA:lt_type LIKE TABLE OF ls_type.

  CHECK callcontrol-step = /rer/if_ccm_constants=>gc_step-select. "'SELECT'.

  LOOP AT shlp-selopt INTO DATA(ls_selopt).
    CASE ls_selopt-shlpfield.
      WHEN 'PARENTCODE'.
        ra_parentcode = CORRESPONDING #( ls_selopt ).
        APPEND ra_parentcode.
      WHEN 'PARENTNAME'.
        ra_parentname = CORRESPONDING #( ls_selopt ).
        APPEND ra_parentname.
      WHEN 'TYPEPCODE'.
        ra_typecode = CORRESPONDING #( ls_selopt ).
        APPEND ra_typecode.
      WHEN 'TYPENAME'.
        ra_typename = CORRESPONDING #( ls_selopt ).
        APPEND ra_typename.
      WHEN OTHERS.
    ENDCASE.
  ENDLOOP.

  SELECT typecode typename
          parentcode parentname
    FROM zrre_d_bp_type_t
    INTO TABLE lt_type
    WHERE zstatus = '01'
    AND parentcode IN ra_parentcode AND typecode IN ra_typecode
    AND parentname IN ra_parentname AND typename IN ra_typename.
  IF sy-subrc = 0.
    SORT lt_type BY typecode parentcode.
  ENDIF.
  
  CLEAR record_tab.
  REFRESH record_tab.
*  clear: shlp_tab, callcontrol.
  callcontrol-sortoff = abap_true.

  IF lt_type IS NOT INITIAL.
    CALL FUNCTION 'F4UT_RESULTS_MAP'
      TABLES
        shlp_tab          = shlp_tab
        record_tab        = record_tab
        source_tab        = lt_type
      CHANGING
        shlp              = shlp
        callcontrol       = callcontrol
      EXCEPTIONS
        illegal_structure = 1
        OTHERS            = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.

*下一个时间点直接转到DISP,否则无法再屏幕上显示帮助列表
  callcontrol-step = 'DISP'.
ENDFUNCTION.

注意:输出字段避免长度过长,容易抛出异常Dump掉。

7.函数解读:(此处参考优快云博客所搜索内容)
在选择一次搜索帮助时会调用四次出口,用参数CALLCONTROL-STEP来控制是第几次。
第一次:CALLCONTROL-STEP = ‘SELONE’.
第一次的调用仅用于复合搜索帮助,在这次调用中它可以被使用以减少SHLP_TAB中给出的基本搜索帮助的数量。

第二次:CALLCONTROL-STEP = ‘PRESEL’.
第二次的调用我们可以修改一下限制条件,或者为了完全跳过对话框。

第三次:CALLCONTROL-STEP = ‘SELECT’.
这一步可以用来完全取代数据选择。

第四次:CALLCONTROL-STEP = ‘DISP’.
第四次调用之后前台将展示表RECORD_TAB的数据,可以在这次调用中增减这个表的数据来影响最终展示数据;下一个时间点直接转到DISP,否则无法在屏幕上显示帮助列表。

《从实例学SAP ABAP编程1-10章》是一本SAP ABAP编程的经典入门教材。本书从简单SAP ABAP编程入手,通过多个实例向读者展示了SAP ABAP编程的核心概念和语法。 在第一章中,本书通过一个简单例子介绍了SAP ABAP编程的基础知识,讲解了ABAP编辑器、ABAP数据字典和ABAP Workbench等重要工具的用法。 在第二章中,本书通过一个简单例子向读者介绍了ABAP表格的创建和维护,并讲解了一些与表格相关的SAP ABAP编程的语法和概念。 在第三章中,本书介绍了SAP ABAP编程中的面向对象编程,通过几个例子向读者展示了如何使用类、对象和继承等概念进行SAP ABAP编程。 在第四章中,本书介绍了SAP ABAP编程中的函数模块,向读者讲解了如何创建和调用函数模块,以及如何在SAP系统中使用函数模块。 在第五章中,本书介绍了SAP ABAP编程中的异常处理,向读者讲解了如何使用TRY/CATCH语句处理SAP系统中的异常情况。 在第六章中,本书介绍了SAP ABAP编程中的Web服务,向读者讲解了如何创建和使用SAP系统中的Web服务,以及如何使用HTTP和SOAP协议进行数据通信。 在第七章中,本书介绍了SAP ABAP编程中的ALV报表,向读者讲解了如何创建和维护SAP系统中的ALV报表,以及如何对报表进行数据操作和定制。 在第八章中,本书介绍了SAP ABAP编程中的BADI和Enhancement点,向读者讲解了如何使用BADI和Enhancement点扩展和修改SAP系统中的业务逻辑。 在第九章中,本书介绍了SAP ABAP编程中的Smart Form,向读者讲解了如何使用Smart Form创建和维护SAP系统中的表单。 在第十章中,本书介绍了SAP ABAP编程中的SAP HANA数据库,向读者讲解了如何使用SAP HANA数据库进行高效的数据处理和分析。 通过阅读本书,读者可以快速掌握SAP ABAP编程的核心知识和技能,从而能够独立进行SAP系统的开发和维护工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混沌破晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值