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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM