ABAP DIALOG 讀取屏幕字段和tablecontrol內字段


 

在POV事件中,因為沒有經過PAI直接進入POV中的MODULE,所以直接調用屏幕中的字段並沒有值,所以要

用DYNP_VALUES_READ讀取屏幕字段的值,且讀取的值格式為輸入的格式。

當使用DYNP_VALUES_READ時,所讀取的屏幕應正在加載中。

讀取屏幕字段

DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE,
        L_MATNR LIKE VBAP-MATNR,
        L_LINES_VB TYPE I.

  CLEAR: dynpfields, dynpfields[],L_MATNR,L_LINES_VB.
*  GET CURSOR LINE L_LINES_VB.
  dynpfields-fieldname = 'GW_TAB-MATNR'. "填入需要讀值的字段名
*  dynpfields-fieldname = 'GW_TAB-MATNR(01)'. "第一行的物料號
*  dynpfields-STEPL = L_LINES_VB.
  APPEND dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = sy-repid
      dynumb             = sy-dynnr
      translate_to_upper = 'X'
*      DETERMINE_LOOP_INDEX = 'X'"TABLE CONTROL時使用
    TABLES
      dynpfields         = dynpfields
    EXCEPTIONS
      OTHERS             = 9.
    IF sy-subrc = 0.
      READ TABLE dynpfields WITH KEY fieldname = 'GW_TAB-MATNR'.
      L_MATNR = dynpfields-fieldvalue. "備注
    ENDIF.

 

讀取DIALOG中的TABLE CONTROL中的字段

DATA: dynpfields TYPE TABLE OF dynpread WITH HEADER LINE,
        L_MATNR LIKE VBAP-MATNR,
        L_LINES_VB TYPE I.

  CLEAR: dynpfields, dynpfields[],L_MATNR,L_LINES_VB.
  GET CURSOR LINE L_LINES_VB.
  dynpfields-fieldname = 'GW_TAB-MATNR'. "填入需要讀值的字段名
*  dynpfields-fieldname = 'GW_TAB-MATNR(01)'. "第一行的物料號
  dynpfields-STEPL = L_LINES_VB.
  APPEND dynpfields.

  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = sy-repid
      dynumb             = sy-dynnr
      translate_to_upper = 'X'
      DETERMINE_LOOP_INDEX = 'X'"TABLE CONTROL時使用
    TABLES
      dynpfields         = dynpfields
    EXCEPTIONS
      OTHERS             = 9.
    IF sy-subrc = 0.
      READ TABLE dynpfields WITH KEY fieldname = 'GW_TAB-MATNR'. 
    L_MATNR
= dynpfields-fieldvalue. "備注
ENDIF.

 

還有用字段符號取屏幕字段,一般是在增強中用,在POV中可能取不到值

  "讀取一個字段時,在POV中取不到值
  FIELD-SYMBOLS:<FS_MATNR> TYPE ANY.
  ASSIGN ('(ZTEST051)GW_TAB-MATNR') TO <FS_MATNR>.
  "讀取一個表,在DIALOG中,如果table在輸入后,經過了PAI,可獲得table中內容,但為舊值
  FIELD-SYMBOLS: <FS_TABLE> TYPE TABLE.
  ASSIGN ('(ZTEST051)GT_TAB[]') TO <FS_TABLE>.
ZTEST051      為屏幕數據中的程序名
GW_TAB-MATNR  為取值的字段
GT_TAB[]      為取值的表,通過GW_TAB或屏幕的PAI去查找

可以用   GET CURSOR LINE L_LINES.    獲取table當前行L_LINE.

 


免責聲明!

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



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