点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,我是新来的。
我目前正在尝试根据所选的单选按钮按三个类别进行过滤。
1。 所有航班(显示所有航班)2.国内航班(国家到价值=国家从价值)3.国际航班(国家到价值<>国家从价值开始)
当我按如下所示进行编码时,它无法正确过滤,想知道我错过了什么。
数据:带标题行的ZFLIGHT_TBL的dv_flight类型表。
数据:ls_flight类型的zflight_tbl。
* CASE语句的常量
常量标记值'X'。
*用于连接的选择
作为屏幕1100的SUBSCREEN的选择屏幕。
选择选项:ls_FLIGHT-CARRID存储器ID CARRID的SO_CARR,ls_FLIGHT-CONNID的SO_CONN。
SELECTION- 屏幕1100的屏幕结尾。
*航班选择
选择屏幕1200作为预订屏幕开始。
选择选项:SO_FLD用于ls_FLIGHT-FLDATE无扩展。
>选择屏幕1200的屏幕末端。
*输出参数
选择作为屏幕1300的选择屏幕的开始。
带有框架的块状放射状的选择屏幕的开始。
参数:PA_ALL RADIOBUTTON组RBG1,
PA_DOM RADIOBUTTON组RBG1,
PA_INT RADIOBUTTON组RBG1默认'X'。
RADIOBUTTON块的选择屏幕末端。
选择屏幕1300的屏幕末端。
标签块AI的选择屏幕开始 5行的RLINE。
选择屏幕TAB(20)TAB1用户命令连接
默认屏幕1100。
选择屏幕TAB(20)TAB2用户命令日期
默认屏幕。 1200.
选择屏幕选项卡(20)TAB3用户命令类型
默认屏幕1300.
选择航空公司的选择屏幕末端。
* == ========================= <=>
*结束新的或更改的代码
* ============ ===============
* =========================== =====
*新代码或更改代码的开头
* ============================
初始化。
*初始化CARRID的选择选项。可选
将以下项移动:'AA'到so_carr-low,
'ZZ'到so_carr-high,
'BT '至so_carr-option,
'I'至so_carr-sign。 ""包括
附加so_carr。
清除so_carr。
移动:'AZ'到so_carr-low,
'EQ'到so_carr-option,
'E'到so_carr -标志。 ""排除
附加so_carr。
清除so_carr。
*设置选项卡按钮的文本
tab1 ='连接'(t11)。
tab2 ='日期'(t12) 。
tab3 ='航班类型'(t13)。
*将第二个标签页设置为初始标签
airlines-activetab ='DATE'。
airlines-dynnr ='1200' 。
* ===========================
*新代码或更改代码的结尾
* = ==========================
开始选择。
CASE标记。
当PA_ALL时。
选择CARRID
CONNID
FLDATE
COUNTRYFR
CITYFROM
AIRPFROM
COUNTRYTO
CITYTO
AIRPTO
SEATSMAX
SEATSOCC
从ZFLIGHT_TBL到表dv_FLIGHT的对应字段中""""数组提取=到表中只有SELECT,没有endselect
SO_CARR中的CARRID和SO_CONN中的CONNID以及
FLDATE中的CARD SO_FLD。
""国内航班
当PA_DOM。
SELECT CARRID
CONNID
FLDATE
COUNTRYFR
CITYFROM
AIRPFROM
COUNTRYTO
CITYTO
AIRPTO
SEATSMAX
SEATSOCC
从ZFLIGHT_TBL到表dv_FLIGHT的对应字段中""""数组提取=到表中只有SELECT,没有endselect
SO_CARR中的CARRID和SO_CONN中的CONNID以及SO_FLD和
FLDATE中的FLDATE = ls_FLIGHT-COUNTRYFR。
" PANINT
SELECT CARRID
CONNID
FLDATE
COUNTRYFR
CITYFROM
AIRPFROM
> COUNTRYTO
CITYTO
AIRPTO
SEATSMAX
SEATSOCC
进入表的相应字段dv_FLIGHT从ZFLIGHT_TBL到""""数组提取=进入表仅具有SELECT,没有endselect
在哪里添加CARRID 如果sy-subrc = 0,则SO_CARR和
CONNID进入SO_CONN并
FLDATE进入SO_FLD和
COUNTRYTO <> ls_FLIGHT-COUNTRYFR。
ENDCASE。
在dv_flight INTO ls_flight中循环。
如果pa_all ='X'并且pa_dom <>'X'和pa_int <>'X'。
写:/ls_FLIGHT-CARRID,
ls_FLIGHT -CONNID,
ls_FLIGHT-FLDATE,
ls_FLIGHT-COUNTRYFR,
ls_FLIGHT-CITYFROM,
ls_FLIGHT-AIRPFROM,
ls_FLIGHT-COUNTRYTO, ls_FLIGHT-CITYTO,
ls_FLIGHT-SEATSMAX,
ls_FLIGHT-SEATSOCC。
否则,如果pa_dom ='X'并且ls_flight-countryto = ls_flight-countryfr和pa_int < >'X'和pa_all <>'X'。 ""国内:国家对价值=国家frm值
写:/ls_FLIGHT-CARRID,
ls_FLIGHT-CONNID,
ls_FLIGHT-FLDATE,
ls_FLIGHT-COUNTRYFR,
ls_FLIGHT-CITYFROM,< br> ls_FLIGHT-AIRPFROM,
ls_FLIGHT-COUNTRYTO,
ls_FLIGHT-CITYTO,
ls_FLIGHT-SEATSMAX,
ls_FLIGHT-SEATSOCC。
elseif pa_int ='X'并且ls_flight-countryto <> ls_flight-countryfr和pa_dom <>'X'和pa_all <>'X'。 ""国际:国家对价值<>国家frm值
写:/ls_FLIGHT-CARRID,
ls_FLIGHT-CONNID,
ls_FLIGHT-FLDATE,
ls_FLIGHT-COUNTRYFR,
ls_FLIGHT-CITYFROM,
ls_FLIGHT-AIRPFROM,
ls_FLIGHT-COUNTRYTO,
ls_FLIGHT-CITYTO,
ls_FLIGHT-SEATSMAX,
ls_FLIGHT-SEATSOCC。
ENDIF。
endloop。
endif。
清除ls_FLIGHT。
1。 至于基于自己的"答案"的"新"要求:
还将数据库的新z字段ZCOUNTRYTO_INT添加为选择选项作为选择选项:
旁注:select选项表中的多个包含值与" OR"语句组合(不包括" AND"值)。
2。 至于您的"原始"要求:
对于国内和国际选择,您尝试通过将db属性COUNTRYTO与变量ls_FLIGHT的属性COUNTRYFR进行比较来进行选择,但是,您从未设置该值 选择变量! 并且根据您的要求,它也不会以您打算的方式工作。
相反,您必须执行以下操作:
您说"过滤不正确"。"正确"的含义是什么?请解释您的操作(如何重现),
您好,谢谢您的答复,我通过在db表中创建2个新字段并命名来过滤了三种不同的航班(国内,国际和所有航班) 这两个数据元素为(countryto_dom和countryto_int)。我在域值范围内分配了国家/地区。
我在where子句中分配了这些数据元素以进行过滤
zcountryto_int ='FRA'或
zcountryto_int ='DEN'。
是否可以不对其进行硬编码?
__________
选择CARRID
CONNID
FLDATE
COUNTRYFR
CITYFROM
AIRPFROM
zcountryto_int
CITYTO
AIRPTO
SEATSMAX
SEATSOCC < br>从ZFLIGHT_TBL到表dv_FLIGHT的对应字段中""""数组提取=到表中仅具有SELECT,没有endselect
SO_CARR中的CARRID和SO_CONN中的CONNID以及SO_FLD和
中的FLDATE zcountryto_int ='FRA'或
zcountryto_int ='DEN'。
Sao GS ,
请使用CODE选项粘贴您的代码,也请进一步说明您的问题。
注意!
AS ,不确定我是否正确理解您,但我想您是在问怎么做 根据用户输入在一个选择语句中选择国内还是国际选择?
这是您可以执行的操作:
在两种情况下,我都创建了"虚拟"语句,您也可以 如果动态where语句中的全部限制或至少一个其他限制被消除,则将其删除
一周热门 更多>