利用搜索帮助出口创建自定义搜索帮助 。
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创建搜索帮助如下如:
激活即可。