在Tabstrip控件中包含的文本框中访问和分配值

问题描述

在ABAP中,我建立了3个屏幕:0100、0110、0120

屏幕0100是带有2个选项卡的Tabstrip控件(每个选项卡都包含一个子屏幕)。 屏幕0100呼叫屏幕0110

屏幕0110包含两个文本框:value1,value2和一个按钮 按下按钮会将我带到包含文本框结果的Tabstrip的tab2。

我想添加textBox(值1)和textBox(值2)的值,并将结果分配到textBox(结果)中。

问题)如何访问TabstripControlTab1-Subscreen-TextBox1(value1)和TabstripControlTab1-Subscreen-TextBox2(value2)中存在的值,并将计算出的值分配给TabstripControlTab2-Subscreen-TextBox1(result)?

我在程序的TopInclude中声明了与文本框控件同名的变量:value1,value2,结果均为整数类型,但不知何故文本框中的值不会反映到ABAP程序变量中。

Screen0110:

enter image description here

Screen0120:

enter image description here


代码 ***

Main Program: 

INCLUDE Z_DEMOSCREEN_TOP.    " global Data

*Screen 110 Include:
INCLUDE Z_DEMOSCREEN_STATUS_0100O01.
INCLUDE Z_DEMOSCREEN_USER_COMD_010I01.

*Screen 120 Include:
INCLUDE Z_DEMOSCREEN_STATUS_0110O01.
INCLUDE Z_DEMOSCREEN_USER_CMD_011I01.

START-OF-SELECTION.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*& Include Z_DEMOSCREEN_TOP          Module Pool      Z_DEMOSCREEN
*&
*&---------------------------------------------------------------------*

PROGRAM  Z_DEMOSCREEN.
DATA:
FirsT_VALUE TYPE C,SECOND_VALUE TYPE I,RESULT TYPE I,ok_code LIKE sy-ucomm.
CONTROLS tabstrip TYPE TABSTRIP.

*****Screen 100:*****
PROCESS BEFORE OUTPUT.
 MODULE STATUS_0100.
 CALL SUBSCREEN TABSTRIP_TAB1_SUBSCR INCLUDING sy-cprog '0110'.


PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0100.

module USER_COMMAND_0100 input.
  CLEAR: ok_code.
  ok_code = sy-ucomm.

  CASE ok_code.
    WHEN 'TAB1' OR 'TAB2'.
      tabstrip-activetab = ok_code.
    WHEN 'ADD'.
      tabstrip-activetab = 'TAB2'.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'CANCEL'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
  ENDCASE.
endmodule.     

*** Screen 110***
PROCESS BEFORE OUTPUT.
 MODULE STATUS_0200.
*
PROCESS AFTER INPUT.
 MODULE USER_COMMAND_0200.

解决方法

我必须在PBO上同时调用子屏幕110和120 在PAI上,我必须调用子屏幕110

我假设,因为每次我按下按钮PUSH时,仅在PBO调用子屏幕(在PAI处没有调用声明)就会再次调用子屏幕110,从而擦除先前的条目。

屏幕100的代码

PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN tabstrip_tab1_subscr INCLUDING sy-cprog '0110'.
  CALL SUBSCREEN tabstrip_tab2_subscr INCLUDING sy-cprog '0120'.




PROCESS AFTER INPUT.
  MODULE user_command_0100.
  CALL SUBSCREEN tabstrip_tab1_subscr.

全局变量已移至TOP include。

屏幕110和120将没有新的菜单或代码。

屏幕120 PBO将具有以下计算: 结果= First_Value + Second_Value

在PAI上,我无法使用完整通话子屏幕方法:

CALL SUBSCREEN tabstrip_tab1_subscr INCLUDING sy-cprog '0110'.

为什么?

,

您需要将元素名称指定为全局变量,例如GV_VALUE1和GV_VALUE2。 GUI自动显示变量值,并将输入的值分配给这些变量。