zoukankan      html  css  js  c++  java
  • 如何在事件AT SELECTION-SCREEN ON VALUE-REQUEST中取得选择画面字段输入值

    在AT SELECTION-SCREEN ON VALUE-REQUEST事件中,是不能直接取得选择屏幕字段的默认值或输入的值,而是需要通过函数 DYNP_VALUES_READ读取。

    例子程序:

    REPORT ZTEST_F4_DEFAULT.
    
    PARAMETERS: p_folder TYPE file_table-filename.
    
    
    INITIALIZATION.
    
    * 初始化
    p_folder = 'C:PKF'.
    
    *&---------------------------------------------------------------------*
    *&   Event AT SELECTION-SCREEN
    *&---------------------------------------------------------------------*
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_folder.
      PERFORM frm_f4_pfolder.
    
    *&---------------------------------------------------------------------*
    *&      Form  FRM_F4_PFOLDER
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM frm_f4_pfolder .
    
      DATA: l_path  TYPE string,
            l_sel   TYPE string,
            lit_dyn TYPE TABLE OF dynpread,
            lwa_dyn TYPE dynpread.
      IF p_folder IS INITIAL.
        lwa_dyn-fieldname = 'P_FOLDER'.
        APPEND lwa_dyn TO lit_dyn.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            dyname               = sy-cprog
            dynumb               = sy-dynnr
          TABLES
            dynpfields           = lit_dyn
          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 lit_dyn INTO lwa_dyn WITH KEY fieldname = 'P_FOLDER'.
        l_path = lwa_dyn-fieldvalue.
      ELSE.
        l_path = p_folder.
      ENDIF.
      CALL METHOD cl_gui_frontend_services=>directory_browse
        EXPORTING
          initial_folder       = l_path
        CHANGING
          selected_folder      = l_sel
        EXCEPTIONS
          cntl_error           = 1
          error_no_gui         = 2
          not_supported_by_gui = 3
          OTHERS               = 4.
      IF sy-subrc EQ 0.
        p_folder = l_sel.
      ENDIF.
    
    ENDFORM.

    debug截图:

    发现,虽然P_folder有初始默认值z:/zpkf,但是在VALUE-REQUEST事件中,P_folder为空,

    随后通过DYNP_VALUES_READ读出,如下:

    以上。

  • 相关阅读:
    debian/ubuntu系统vi无法删除字符的解决办法
    kvm磁盘镜像文件管理,格式转换,调整大小
    读懂MACD背离,多空力量分析
    OpenStack部署都有哪些方式
    [STM32F10x] 利用定时器测量频率
    [STM32F10x] 利用定时器测量脉冲宽度
    曼彻斯特编码
    最近关注的几个技术点网页链接
    windows中cmd常用命令收集
    Mybatis Generator代码自动生成(实体类、dao层、映射文件)
  • 原文地址:https://www.cnblogs.com/datie/p/11434448.html
Copyright © 2011-2022 走看看