为什么在我的报告程序中根本没有达到给定的代码块?
Why a given block of code is not reached at all in my report program?
我正在处理一个项目,其中选择屏幕中有两个选项。
块标题 - 搜索
- 航班信息
- 客户编号
选择第一个单选按钮时,可以输入以下字段:
卡里德、康尼德、弗拉达特(A、B、C)
给出第一个报告,在选择第二个单选按钮时,可以输入以下字段:
客户编号 (D)
应该给第二个报告。
使用第一个单选按钮可以正确输出一些行,但是使用第二个单选按钮,程序甚至不会到达行 IF rad2 = 'X'
,因此没有任何输出。
有人知道为什么这段代码没有执行吗?
代码:
TABLES : sbook.
DATA : it_final TYPE TABLE OF sbook,
wa_final LIKE LINE OF it_final,
it_rad2final TYPE TABLE OF sbook,
wa_rad2final LIKE LINE OF it_rad2final.
PARAMETERS rad1 RADIOBUTTON GROUP rad USER-COMMAND abc DEFAULT 'X'.
SELECT-OPTIONS :
a FOR sbook-carrid MODIF ID ra,
b FOR sbook-connid MODIF ID ra,
c FOR sbook-fldate MODIF ID ra.
PARAMETERS rad2 RADIOBUTTON GROUP rad.
SELECT-OPTIONS d FOR sbook-customid MODIF ID rb.
START-OF-SELECTION.
IF rad1 = 'X'.
SELECT * FROM sbook INTO TABLE it_final
WHERE carrid IN a AND connid IN b AND fldate IN c.
ELSEIF rad2 = 'X'.
SELECT * FROM sbook INTO TABLE it_rad2final WHERE customid IN d.
ENDIF.
IF rad1 = 'X'.
LOOP AT it_final INTO wa_final.
WRITE : / wa_final-fldate , wa_final-passname ,wa_final-luggweight COLOR 6.
HIDE wa_final-customid.
ENDLOOP.
ENDIF.
AT LINE-SELECTION.
CALL FUNCTION 'ZKJ_FNMODMINI' EXPORTING custid = wa_final-customid.
IF rad2 = 'X'. " <=== NO BREAK-POINT STOP, LINE NOT REACHED !
LOOP AT it_rad2final INTO wa_rad2final.
WRITE :/ wa_rad2final-connid , wa_rad2final-fldate , wa_rad2final-bookid.
ENDLOOP.
ENDIF.
语句AT LINE-SELECTION 为函数代码PICK
定义了一个event block。触发此事件时将执行此语句之后的所有内容(除非有其他事件语句或类似内容)。
您需要做的是将块 IF rad2 = 'X'
的语句移动到 START-OF-SELECTION
事件块下方。
我正在处理一个项目,其中选择屏幕中有两个选项。
块标题 - 搜索
- 航班信息
- 客户编号
选择第一个单选按钮时,可以输入以下字段:
卡里德、康尼德、弗拉达特(A、B、C)
给出第一个报告,在选择第二个单选按钮时,可以输入以下字段:
客户编号 (D)
应该给第二个报告。
使用第一个单选按钮可以正确输出一些行,但是使用第二个单选按钮,程序甚至不会到达行 IF rad2 = 'X'
,因此没有任何输出。
有人知道为什么这段代码没有执行吗?
代码:
TABLES : sbook.
DATA : it_final TYPE TABLE OF sbook,
wa_final LIKE LINE OF it_final,
it_rad2final TYPE TABLE OF sbook,
wa_rad2final LIKE LINE OF it_rad2final.
PARAMETERS rad1 RADIOBUTTON GROUP rad USER-COMMAND abc DEFAULT 'X'.
SELECT-OPTIONS :
a FOR sbook-carrid MODIF ID ra,
b FOR sbook-connid MODIF ID ra,
c FOR sbook-fldate MODIF ID ra.
PARAMETERS rad2 RADIOBUTTON GROUP rad.
SELECT-OPTIONS d FOR sbook-customid MODIF ID rb.
START-OF-SELECTION.
IF rad1 = 'X'.
SELECT * FROM sbook INTO TABLE it_final
WHERE carrid IN a AND connid IN b AND fldate IN c.
ELSEIF rad2 = 'X'.
SELECT * FROM sbook INTO TABLE it_rad2final WHERE customid IN d.
ENDIF.
IF rad1 = 'X'.
LOOP AT it_final INTO wa_final.
WRITE : / wa_final-fldate , wa_final-passname ,wa_final-luggweight COLOR 6.
HIDE wa_final-customid.
ENDLOOP.
ENDIF.
AT LINE-SELECTION.
CALL FUNCTION 'ZKJ_FNMODMINI' EXPORTING custid = wa_final-customid.
IF rad2 = 'X'. " <=== NO BREAK-POINT STOP, LINE NOT REACHED !
LOOP AT it_rad2final INTO wa_rad2final.
WRITE :/ wa_rad2final-connid , wa_rad2final-fldate , wa_rad2final-bookid.
ENDLOOP.
ENDIF.
语句AT LINE-SELECTION 为函数代码PICK
定义了一个event block。触发此事件时将执行此语句之后的所有内容(除非有其他事件语句或类似内容)。
您需要做的是将块 IF rad2 = 'X'
的语句移动到 START-OF-SELECTION
事件块下方。