Abap 在不使用of TABLES关键字的情况下修改输入字段上的文本

Abap 在不使用of TABLES关键字的情况下修改输入字段上的文本,abap,input-field,Abap,Input Field,我想在屏幕的输入字段上显示文本,这是来自工作区的值,分别是姓名、年龄和城市,如您所见。当我声明znew_fdkey01和znew_fdkey02(它们是透明的表格)时,使用表格关键字如下: TABLES: znew_fdkey01, znew_fdkey02. DATA: znew_fdkey01 TYPE znew_fdkey01, znew_fdkey02 TYPE znew_fdkey02. 它工作得很好。但是,当我想在不使用此关键字的情况下获得相同的效果时,当我声明如下变

我想在屏幕的输入字段上显示文本,这是来自工作区的值,分别是姓名、年龄和城市,如您所见。当我声明
znew_fdkey01
znew_fdkey02
(它们是透明的表格)时,使用
表格
关键字如下:

TABLES: znew_fdkey01, znew_fdkey02.
DATA: znew_fdkey01 TYPE znew_fdkey01,
      znew_fdkey02 TYPE znew_fdkey02.
它工作得很好。但是,当我想在不使用此关键字的情况下获得相同的效果时,当我声明如下变量时:

TABLES: znew_fdkey01, znew_fdkey02.
DATA: znew_fdkey01 TYPE znew_fdkey01,
      znew_fdkey02 TYPE znew_fdkey02.
它不会在输入字段中显示文本

为什么?

注意:以下是初始化屏幕字段的代码(两种情况下相同):


这是正确的,表格定义了工作区域,同时有必要确保屏幕(dynpro)和ABAP程序之间的自动通信,如:

使用表声明的表工作区是接口工作区

如果字段是从ABAP字典中在程序的dynpro中定义的,则dynpro字段和ABAP程序之间交换数据需要语句表。在dynpro事件PBO中,表格工作区的内容被传递给同名的dynpro字段。在PAI中,系统从同名的dynpro字段获取数据

(否则,不要使用表来声明工作区,这是过时的)

仅当您将屏幕输入/输出字段定义为“DDIC”字段(数据/ABAP字典)时,才必须使用。这是在屏幕画师中为每个屏幕字段定义的复选框

有两种可能性:

  • 您可以根据现有的DDIC结构字段对屏幕I/O字段进行命名(正如您所做的那样,
    ZNEW_FDKEY01-name
    ),并将其定义为“DDIC”字段(它是屏幕绘制程序中的字段属性),并且必须使用
    来传输值
  • 或者,您不将屏幕输入字段定义为“DDIC”字段,而将字段名定义为程序中的全局变量,使用
    表格
    是完全可选的。但在这种情况下,您会丢失屏幕中DDIC特有的一些功能,如重复使用DDIC标签(任何更改都会影响所有屏幕)、值Help/F4(如搜索帮助)意味着多个字段(但您仍然可以从头开始在ABAP中对其进行编码),等等
例如:

  • 创建此程序:
    TABLES spfli. " Mandatory as screen field SPFLI-CARRID is connected to the "DDIC"
    DATA scarr TYPE scarr. " or TABLES scarr if you wish
    
    spfli-carrid = 'LH'.
    scarr-carrname = 'Name of company'.
    
    CALL SCREEN 100.
    
    MODULE screen_0100_pai INPUT.
      LEAVE TO SCREEN 0.
    ENDMODULE.
    
  • 使用这些字段创建dynpro 0100(注意“Dict.field”)
  • 这个流程逻辑是:
    PROCESS BEFORE OUTPUT.
    PROCESS AFTER INPUT.
      MODULE SCREEN_0100_PAI.
    
  • 激活并运行程序
  • 预期结果:

问题没有明确提出,我添加了“为什么?”(在您最后一句话“它没有在输入字段中显示文本”之后)。注意:我没有回答您的问题,但您在屏幕上的最新代码
循环对回答问题没有帮助。此外,此语句仅用于在运行时更改屏幕字段的属性(如隐藏、防止输入等),因此可以省略循环,只需保留以下三行:
znew_fdkey01-name=lr_znewfdkey3-name。znew_fdkey01-age=lr_znewfdkey3-age。znew_fdkey02-city=lr_znewfdkey3-city。
如何声明输入字段?在屏幕画师中