ABAP POH和POV事件中 獲得屏幕字段的值


屏幕中有四個主要的邏輯流 (PBO,PAI POH,POV)

PROCESS BEFORE OUTPUT.       該事件在屏幕出來之前被觸發

PROCESS AFTER INPUT.       該模塊監聽用戶操作時間

PROCESS ON HELP-REQUEST.  

    FIELD FIELD_NAME MODULE HELP_MODULE.        "當用戶查看幫助信息時(按下F1鍵)被觸發,事件結束后將繼續處理當前屏幕

PROCESS ON VALUE-REQUEST.  

 FIELD FIELD_NAME MODULE F4_MODULE.             "當用戶按下查詢幫助按鍵時(或按下F4)被觸發,事件結束后將繼續處理當前屏幕。

 

 

http://www.mamicode.com/info-detail-1921783.html

在Screen顯示之前,系統會自動將程序變量值放到屏幕字段中;在PAI事件中,系統會自動將屏幕字段的值更新到相應的程序變量。
在Screen Logic中我們還有POH和POV事件,所以有時需要調用函數DYNP_VALUES_READ來讀取屏幕字段值。
 
比如:屏幕上有兩個字段,NAME1 和 NAME2。當字段NAME2觸發搜索幫助的時候,必須參照用戶在NAME1中的錄入值。由於PAI尚未被執行,屏幕字段NAME1的字符串值尚未更新到程序變量NAME1。
此時我們可以調用DYNP_VALUES_READ來實現。
 
DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE.

CLEAR: dynpfields, dynpfields[].
 dynpfields-fieldname = 'NAME1'. "填入需要讀值的字段名
APPEND dynpfields.

CALL FUNCTION 'DYNP_VALUES_READ'
   EXPORTING
     dyname             = sy-repid
     dynumb             = sy-dynnr
     translate_to_upper = 'X'
   TABLES
     dynpfields         = dynpfields
   EXCEPTIONS
     OTHERS             = 9.
IF sy-subrc = 0.
   READ TABLE dynpfields WITH KEY fieldname = 'NAME1'.
   name1 = dynpfields-fieldvalue. "備注
ENDIF. 

 


免責聲明!

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



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