为什么 inline-declared itab 没有在 AT SELECTION SCREEN OUTPUT 中初始化?
Why is inline-declared itab not initialized in AT SELECTION SCREEN OUTPUT?
我有如下一段代码。
REPORT YYY.
TYPES: BEGIN OF t_test,
test TYPE c LENGTH 4,
END OF t_test,
tth_test TYPE HASHED TABLE OF t_test WITH UNIQUE KEY test.
DATA(g_tab_test) = VALUE tth_test( ( test = 'AAAA' ) ( test = 'BBBB' )
( test = 'CCCC' ) ( test = 'DDDD' ) ).
PARAMETERS:
p_x1 TYPE abap_bool,
p_x2 TYPE abap_bool,
p_x3 TYPE abap_bool.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD main.
ENDMETHOD.
ENDCLASS.
AT SELECTION-SCREEN OUTPUT.
LOOP AT screen.
MODIFY SCREEN.
ENDLOOP.
BREAK-POINT. "<-- why is the table g_tab_test not initialsed here yet?
AT SELECTION-SCREEN ON p_x1.
ASSERT 1 = 1.
尽管有定义,AT SELECTION-SCREEN OUTPUT
中中断点的 table 是空的。为什么会这样,是否有记录在案的行为?
我相信这是一个记录在案的行为。
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapstart-of-selection.htm
In an executable program, the following statements are assigned to an
implicit START-OF-SELECTION event block, which is inserted by an
explicit START-OF-SELECTION event block if one exists:
All statements that are not declaration and are listed before the
first explicit processing block.
All functional statements in the program if it does not contain any
explicit processing blocks,
代码是"in the air",不是在确切事件下显式的,这意味着内部table的初始化将运行仅与隐式START-OF-SELECTION
。
代码段需要在INITIALIZATION
(或LOAD-OF-PROGRAM
下,具体取决于具体需要)
我有如下一段代码。
REPORT YYY.
TYPES: BEGIN OF t_test,
test TYPE c LENGTH 4,
END OF t_test,
tth_test TYPE HASHED TABLE OF t_test WITH UNIQUE KEY test.
DATA(g_tab_test) = VALUE tth_test( ( test = 'AAAA' ) ( test = 'BBBB' )
( test = 'CCCC' ) ( test = 'DDDD' ) ).
PARAMETERS:
p_x1 TYPE abap_bool,
p_x2 TYPE abap_bool,
p_x3 TYPE abap_bool.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
main.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD main.
ENDMETHOD.
ENDCLASS.
AT SELECTION-SCREEN OUTPUT.
LOOP AT screen.
MODIFY SCREEN.
ENDLOOP.
BREAK-POINT. "<-- why is the table g_tab_test not initialsed here yet?
AT SELECTION-SCREEN ON p_x1.
ASSERT 1 = 1.
尽管有定义,AT SELECTION-SCREEN OUTPUT
中中断点的 table 是空的。为什么会这样,是否有记录在案的行为?
我相信这是一个记录在案的行为。
https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapstart-of-selection.htm
In an executable program, the following statements are assigned to an implicit START-OF-SELECTION event block, which is inserted by an explicit START-OF-SELECTION event block if one exists:
All statements that are not declaration and are listed before the first explicit processing block.
All functional statements in the program if it does not contain any explicit processing blocks,
代码是"in the air",不是在确切事件下显式的,这意味着内部table的初始化将运行仅与隐式START-OF-SELECTION
。
代码段需要在INITIALIZATION
(或LOAD-OF-PROGRAM
下,具体取决于具体需要)