ABAP 选择屏幕 自定义搜索帮助
物料号为例 如图展示的物料,是不经过自定义搜索帮助处理的,如果我只需要物料描述和物料号,且只限定20开头的物料,就需要用到自定义搜索帮助了
代码详解
构建选择屏幕
代码语言:javascript复制SELECTION-SCREEN BEGIN OF BLOCK blk1.
PARAMETERS:
p_matnr TYPE makt-matnr.
SELECTION-SCREEN END OF BLOCK blk1.
构建自定义帮助
代码语言:javascript复制AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr. "
PERFORM frm_create_matnr_help. " 创建自定义帮助的例程
处理帮助字段
代码语言:javascript复制"在屏幕初始化前 构建用户自定义帮助的例程
INITIALIZATION .
PERFORM frm_get_matnr_f4. "创建例程 例程里面是 需要的字段 也就啊是 20 开头的物料以及 物料描述
帮助字段的程逻辑
代码语言:javascript复制" 构建全局变量内表
TYPES:BEGIN OF ty_f4,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
END OF ty_f4.
DATA : gt_f4 TYPE STANDARD TABLE OF ty_f4.
"获取数据的例程
FORM frm_get_matnr_f4.
SELECT
from makt
FIELDS
makt~matnr,
makt~maktx
WHERE right( makt~matnr,8 ) LIKE '20%'
AND makt~spras eq @sy-langu
INTO CORRESPONDING FIELDS OF TABLE @gt_f4. "此处取数逻辑按自己的业务需求来
ENDFORM.
创建自定义帮助
代码语言:javascript复制FORM frm_create_matnr_help .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR' " 参考的表字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MATNR' " 用于选择屏幕上的哪一个
value_org = 'S'
TABLES
value_tab = gt_f4 " 自定义的表 需要全局变量 一般来说也是通过例程处理的 frm_get_matnr_f4
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.