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视图 自定义搜索帮助的主要内容,如果未能解决你的问题,请参考以下文章

ABAP SM30视图 添加描述文本字段

ABAP SM30视图 添加描述文本字段

ABAP SM30视图 添加描述文本字段

ABAP SM30维护视图,新增更改时记录存入Log字段

2020.01.11 ABAP随笔SM30常见增强操作-自动带描述等

2020.05.07 ABAP随笔- ABAP-SM30删除前检查