为什么在我的报告程序中根本没有达到给定的代码块?

Why a given block of code is not reached at all in my report program?

我正在处理一个项目,其中选择屏幕中有两个选项。

块标题 - 搜索

  1. 航班信息
  2. 客户编号

选择第一个单选按钮时,可以输入以下字段:

卡里德、康尼德、弗拉达特(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 事件块下方。