• 如何在事件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读出,如下:

    以上。

  • 相关阅读:
    基于arm开发板四个按键控制四个灯亮
    汇编语言实现led灯的跑马灯
    cpsr当前程序状态寄存器
    ewp开发
    erlang学习 d1
    java基础之封装继承
    java面试常见问题
    crm项目复盘
    ssm整合-动态项目-day13
    ssm整合spring,springmvc,mybatis-day12
  • 原文地址:https://www.cnblogs.com/datie/p/11434448.html
Copyright © 2020-2023  润新知