matinal:ABAP 自定义搜索帮助参数解析

2023-10-14 14:20:09 浏览数 (2)

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.

0 人点赞