二维码

FM:DYNP_VALUES_READ读取屏幕字段值

Twilight发表于 2014-08-11 15:36Twilight 最后回复于 2014-08-11 15:36 [复制链接] 2534 0

在Screen显示之前,系统会自动将程序变量值放到屏幕字段中;在PAI事件中,系统会自动将屏幕字段的值更新到相应的程序变量。在Screen Logic中我们还有POH和POV事件,所以有时需要调用函数DYNP_VALUES_READ来读取屏幕字段值。
比如屏幕上有两个字段,NAME1 和 NAME2。当字段NAME2触发搜索帮助的时候,必须参照用户在NAME1中的录入值。由于PAI尚未被执行,屏幕字段NAME1的字符串值尚未更新到程序变量NAME1。此时我们可以调用DYNP_VALUES_READ来实现。
DYNP_VALUES_READ中首要的接口是DYNPFIELDS,它主要含2个字段,字段名和字段值。由于它读取的是屏幕字段,所以字段值自然是未经转换的字符串输入值。
  1.   DATA:lt_dynpfields TYPE TABLE OF dynpread WITH HEADER LINE.

  2.   CLEAR:lt_dynpfields,lt_dynpfields[].
  3.   lt_dynpfields-fieldname = 'P_KAIPJ0'. "填入需要读值的字段名
  4.   APPEND lt_dynpfields.
  5.   CALL FUNCTION 'DYNP_VALUES_READ'
  6.     EXPORTING
  7.       dyname               = sy-repid
  8.       dynumb               = sy-dynnr
  9.       translate_to_upper   = 'X'
  10. *     REQUEST              = ' '
  11. *     PERFORM_CONVERSION_EXITS             = ' '
  12. *     PERFORM_INPUT_CONVERSION             = ' '
  13. *     DETERMINE_LOOP_INDEX = ' '
  14. *     START_SEARCH_IN_CURRENT_SCREEN       = ' '
  15. *     START_SEARCH_IN_MAIN_SCREEN          = ' '
  16. *     START_SEARCH_IN_STACKED_SCREEN       = ' '
  17. *     START_SEARCH_ON_SCR_STACKPOS         = ' '
  18. *     SEARCH_OWN_SUBSCREENS_FIRST          = ' '
  19. *     SEARCHPATH_OF_SUBSCREEN_AREAS        = ' '
  20.     TABLES
  21.       dynpfields           = lt_dynpfields[]
  22.     EXCEPTIONS
  23.       invalid_abapworkarea = 1
  24.       invalid_dynprofield  = 2
  25.       invalid_dynproname   = 3
  26.       invalid_dynpronummer = 4
  27.       invalid_request      = 5
  28.       no_fielddescription  = 6
  29.       invalid_parameter    = 7
  30.       undefind_error       = 8
  31.       double_conversion    = 9
  32.       stepl_not_found      = 10
  33.       OTHERS               = 11.
  34.   IF sy-subrc = 0.
  35.     READ TABLE lt_dynpfields WITH KEY fieldname = 'P_KAIPJ0'.
  36.     name1 = lt_dynpfields-fieldvalue.
  37.   ENDIF.
复制代码

备注:
如果必要,这里要进行输入转换(Input Conversion),将用户录入的字符串转换成SAP的内部变量值。可以调用CONVERSION_EXIT_XXXXX_INPUT此类函数。
可参考系统程序:se38:DEMO_DYNPRO_F4_HELP_MODULE
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表