SAP ABAP SEARCH HELP F4 自定义搜索帮助出口

博客介绍了利用搜索帮助出口创建自定义搜索帮助的方法,包括拷贝标准搜索帮助出库DEMO函数F4IF_SHLP_EXIT_EXAMPLE实现FORM STEP_SELECT,以及在SE11创建搜索帮助并激活。

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

利用搜索帮助出口创建自定义搜索帮助 。

1.拷贝标准搜索帮助出库DEMO函数 F4IF_SHLP_EXIT_EXAMPLE 实现FORM STEP_SELECT 

FORM FRM_STEP_SELECT_ZZFI002 TABLES PT_RECORD_TAB STRUCTURE SEAHLPRES
                            PT_SHLP_TAB    TYPE SHLP_DESCT
                   CHANGING CS_SHLP        TYPE SHLP_DESCR
                            CS_CALLCONTROL TYPE DDSHF4CTRL
                            CV_SUBRC       TYPE SY-SUBRC.
  TYPES:
    BEGIN OF LTY_ZZFI002,
      ZZFI002  TYPE ZFIT0036-ZKEY,
      ZZFI002T TYPE ZFIT0036-ZVALUE,
    END OF LTY_ZZFI002.
*
  DATA: L_BUKRS      TYPE T001-BUKRS,
        L_HSLB       TYPE ZFIT0036-HSLB,
        L_HKONT      TYPE SKA1-SAKNR,
        LW_SELOPT    TYPE DDSHSELOPT,
        LR_ZZFI002  TYPE RANGE OF  ZFIT0036-ZKEY,
        LR_ZZFI002T TYPE RANGE OF ZFIT0036-ZVALUE,
        LW_ZZFI002  LIKE LINE OF LR_ZZFI002,
        LW_ZZFI002T LIKE LINE OF LR_ZZFI002T,
        LT_ZZFI002  TYPE STANDARD TABLE OF LTY_ZZFI002.
*
  FIELD-SYMBOLS: <L_BSEG> TYPE BSEG,
                 <L_COBL> TYPE COBL.
*
  ASSIGN ('(SAPMF05A)BSEG') TO <L_BSEG>.
  IF SY-SUBRC = 0.
    L_HKONT = <L_BSEG>-HKONT.
  ELSE.
    ASSIGN ('(SAPLF040)BSEG') TO <L_BSEG>.
    IF SY-SUBRC = 0.
      L_HKONT = <L_BSEG>-HKONT.
    ELSE.
      ASSIGN ('(SAPMF05L)BSEG') TO <L_BSEG>.
      IF SY-SUBRC = 0.
        L_HKONT = <L_BSEG>-HKONT.
      ENDIF.
    ENDIF.
  ENDIF.
*
  IF L_HKONT IS INITIAL.
    ASSIGN ('(SAPLKACB)COBL') TO <L_COBL>.
    IF SY-SUBRC = 0.
      L_HKONT = <L_COBL>-HKONT.
    ENDIF.
  ENDIF.
  IF L_HKONT IS INITIAL.
    ASSIGN ('(SAPLFSKB)COBL') TO <L_COBL>.
    IF SY-SUBRC = 0.
      L_HKONT = <L_COBL>-HKONT.
    ENDIF.
  ENDIF.
*
  IF L_HKONT IS INITIAL.
    RETURN.
  ENDIF.
*
  GET PARAMETER ID 'BUK' FIELD L_BUKRS.
*
  IF L_BUKRS IS INITIAL.
    EXIT.
  ENDIF.
* 取数据
  SELECT
    SINGLE
    HSLB
     INTO L_HSLB
     FROM ZFIT0035
    WHERE BUKRS = L_BUKRS
      AND FRGL <= L_HKONT
      AND TOGL >= L_HKONT
    AND FIELDN EQ 'ZZFI002'.
*-  如果未取到核算类别时,则不做后续取数
  IF L_HSLB IS INITIAL.
    RETURN.
  ENDIF.

  LOOP AT CS_SHLP-SELOPT INTO LW_SELOPT.
    CASE LW_SELOPT-SHLPFIELD.
      WHEN 'ZZFI002'.
        LW_ZZFI002-SIGN   = LW_SELOPT-SIGN.
        LW_ZZFI002-OPTION = LW_SELOPT-OPTION.
        LW_ZZFI002-LOW    = LW_SELOPT-LOW.
        LW_ZZFI002-HIGH   = LW_SELOPT-HIGH.

        APPEND LW_ZZFI002 TO LR_ZZFI002.
      WHEN 'ZZFI002T'.
        LW_ZZFI002T-SIGN   = LW_SELOPT-SIGN.
        LW_ZZFI002T-OPTION = LW_SELOPT-OPTION.
        LW_ZZFI002T-LOW    = LW_SELOPT-LOW.
        LW_ZZFI002T-HIGH   = LW_SELOPT-HIGH.
        APPEND LW_ZZFI002T TO LR_ZZFI002T.
      WHEN OTHERS.
    ENDCASE.
  ENDLOOP.

*
  SELECT ZKEY
         ZVALUE
    INTO TABLE LT_ZZFI002
    FROM ZFIT0036
   WHERE BUKRS = L_BUKRS
     AND HSLB  = L_HSLB
     AND FIELDN EQ 'ZZFI002'
  AND ZKEY  IN LR_ZZFI002
  AND ZVALUE IN LR_ZZFI002T.
*
  CALL FUNCTION 'F4UT_RESULTS_MAP'
    TABLES
      SHLP_TAB          = PT_SHLP_TAB
      RECORD_TAB        = PT_RECORD_TAB
      SOURCE_TAB        = LT_ZZFI002
    CHANGING
      SHLP              = CS_SHLP
      CALLCONTROL       = CS_CALLCONTROL
    EXCEPTIONS
      ILLEGAL_STRUCTURE = 1
      OTHERS            = 2.
  IF SY-SUBRC <> 0.
    CV_SUBRC = SY-SUBRC.
  ELSE.
    CV_SUBRC = SY-SUBRC.
  ENDIF.
ENDFORM.

 

SE11创建搜索帮助如下如:

激活即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值