SAP ABAP dialog 获取屏幕字段值 F4搜索帮助

在POV事件中,因为没有经过PAI直接进入POV中的MODULE,所以直接调用屏幕中的字段并没有值,所以要

用DYNP_VALUES_READ读取屏幕字段的值,且读取的值格式为输入的格式。

当使用DYNP_VALUES_READ时,所读取的屏幕应正在加载中。

读取屏幕字段

DATA:BEGIN OF ls_help,
     bukrs TYPE ztfi_zbztyp_help-bukrs,
     zzbztype TYPE ztfi_zbztyp_help-zzbztype,
     zbzname TYPE ztfi_zbztyp_help-zbzname,
     END OF ls_help,
     lt_help LIKE STANDARD TABLE OF ls_help.
DATA: lt_return TYPE TABLE OF ddshretval.
  DATA: lt_dynp TYPE TABLE OF dynpread.
  DATA: lv_bukrs TYPE ztfi_zbztyp_help-bukrs.

  CLEAR: lt_return, lt_dynp, lv_bukrs.
*  GET CURSOR LINE L_LINES_VB.
  lt_dynp = VALUE #( ( fieldname = 'ZTFI_ZBZTYP_HELP-BUKRS' ) ).

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname     = sy-repid
      dynumb     = sy-dynnr
    TABLES
      dynpfields = lt_dynp.
  IF sy-subrc EQ 0.
    IF line_exists( lt_dynp[ fieldname = 'ZTFI_ZBZTYP_HELP-BUKRS' ] ).
      lv_bukrs = lt_dynp[ fieldname = 'ZTFI_ZBZTYP_HELP-BUKRS' ]-fieldvalue.
    ENDIF.
  ENDIF.

F4搜索帮助

IF lv_bukrs IS NOT INITIAL.
  SELECT bukrs zzbztype zbzname
    FROM ztfi_zbztyp_help
    INTO TABLE lt_help
    WHERE bukrs = lv_bukrs.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield               = 'ZZBZTYPE' "指定要返回屏幕参数的在内表中的field
*     PVALKEY                = ' '
      dynpprog               = sy-repid "指定屏幕参数所在的程序名称
      dynpnr                 = sy-dynnr "指定参数所在的屏幕编号
*      dynprofield            = ztfi_zbztyp_help-zzbztype
*     STEPL                  = 0
*     WINDOW_TITLE           =
*     VALUE                  = ' '
      VALUE_ORG              = 'S'
*     MULTIPLE_CHOICE        = ' '
*     DISPLAY                = ' '
*     CALLBACK_PROGRAM       = ' '
*     CALLBACK_FORM          = ' '
*     CALLBACK_METHOD        =
*     MARK_TAB               =
*   IMPORTING
*     USER_RESET             =
    tables
      value_tab              = lt_help
*     FIELD_TAB              =
      return_tab             = lt_return
*     DYNPFLD_MAPPING        =
*   EXCEPTIONS
*     PARAMETER_ERROR        = 1
*     NO_VALUES_FOUND        = 2
*     OTHERS                 = 3
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

IF line_exists( lt_return[ 1 ] ).
    ztfi_zbztyp_help-zzbztype = lt_return[ 1 ]-fieldval.
  ENDIF.

ENDIF.

 

posted @ 2022-04-11 17:08  年轻的小菜鸟  阅读(1354)  评论(0编辑  收藏  举报