• 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.

  • 相关阅读:
    mysql 开发基础系列7 流程函数与其它函数
    mysql 开发基础系列6 数值与日期函数
    html5 浏览器端数据库
    html5 响应式布局
    css 文本溢出显示省略号
    js 字符串的操作
    js 图片轮播(一)
    css 弹出层-透明层
    js选项卡
    js获取当前时间显示在页面上
  • 原文地址:https://www.cnblogs.com/CtrlS/p/10755592.html
Copyright © 2020-2023  润新知