ABAP SM30视图 自定义搜索帮助
Posted 狗尾巴草_lan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP SM30视图 自定义搜索帮助相关的知识,希望对你有一定的参考价值。
需求描述:
配置表中有字段“客户代码”和“银行账户”,其中“银行账户”需要自定义搜索帮助,根据“客户代码”带出对应BP主数据的银行账户供用户选择。
实现方式:
1. 在视图屏幕里定义POV事件
2. Module代码如下
MODULE BANKN_F4HELP INPUT.
DATA: LT_DYNPFIELDS TYPE STANDARD TABLE OF DYNPREAD,
LS_DYNPFIELDS TYPE DYNPREAD,
LT_RETURN TYPE STANDARD TABLE OF DDSHRETVAL,
LS_RETURN TYPE DDSHRETVAL,
LV_POVSTEPL TYPE SY-STEPL,
LV_INDEX TYPE SY-STEPL.
* 获取本页当前行号
CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
POVSTEPL = LV_POVSTEPL
EXCEPTIONS
STEPL_NOT_FOUND = 1.
* 当前行号 = TC(包括翻页)的首行行号 + 本页当前行号 - 1
LV_INDEX = TCTRL_ZTSD051-TOP_LINE + LV_POVSTEPL - 1.
CLEAR LT_DYNPFIELDS[].
LS_DYNPFIELDS-FIELDNAME = 'ZTSD051-KUNNR'.
LS_DYNPFIELDS-STEPL = LV_INDEX.
APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS.
CLEAR LS_DYNPFIELDS.
* 获取屏幕值(以防用户修改后未按回车)
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-REPID
DYNUMB = SY-DYNNR
TRANSLATE_TO_UPPER = 'X'
TABLES
DYNPFIELDS = LT_DYNPFIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
INVALID_PARAMETER = 7
UNDEFIND_ERROR = 8
DOUBLE_CONVERSION = 9
STEPL_NOT_FOUND = 10
OTHERS = 11.
READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS INDEX 1.
IF SY-SUBRC = 0.
DATA(LV_KUNNR) = LS_DYNPFIELDS-FIELDVALUE.
ENDIF.
* 查询客户银行信息
SELECT PARTNER,
BKVID,
BANKS,
BANKL,
BANKN
INTO TABLE @DATA(LT_BUT0BK)
FROM BUT0BK
WHERE PARTNER = @LV_KUNNR.
* 自定义搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'BANKN'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_BUT0BK
RETURN_TAB = LT_RETURN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
READ TABLE LT_RETURN INTO LS_RETURN INDEX 1.
IF SY-SUBRC = 0.
ZTSD051-BANKN = LS_RETURN-FIELDVAL.
ENDIF.
ENDIF.
ENDMODULE.
以上是关于ABAP SM30视图 自定义搜索帮助的主要内容,如果未能解决你的问题,请参考以下文章
2020.05.07 ABAP随笔- ABAP-SM30删除前检查