变量中的星号与SQL中的%不同


我创建了这三个单选按钮来定义变量TEST的值。

前两个很好:如果我单击p_r1,它会指定B,如果我单击p_r2,它会分配A

我希望第三个分配*以获得所有状态,即A、B、C。

为什么它不起作用?*不是一个特殊的字符吗?它的意思和SQL中的%一样?

DATA: TEST TYPE C.
PARAMETERS:
P_R1 RADIOBUTTON GROUP GRP1 DEFAULT 'X',
P_R2 RADIOBUTTON GROUP GRP1,
P_R3 RADIOBUTTON GROUP GRP1.
IF P_R1 = 'X'.
TEST = 'B'.
ELSEIF P_R2 = 'X'.
TEST = 'A'.
ELSEIF P_R3 = 'X'.
TEST = '*'.
ENDIF.
SELECT  VBELN,GBSTK
FROM LIKP
WHERE GBSTK = @TEST
INTO TABLE @DATA(IT_FINAL).

CL_DEMO_OUTPUT=>DISPLAY( IT_FINAL ).

要使您的需求发挥作用,需要记住几件事:

  1. where条件中的=或EQ不允许使用通配符。即,在您的示例中,当test等于"*"时,它只会在数据库表中找到GBSTK等于"*"的条目,很可能为零
  2. 要使用通配符,需要使用LIKE而不是=或EQ
  3. 处理任何字符串的通用通配符是"%",而不是"*">

有关更多详细信息,请查看特定版本的SELECT-WHERE的SAP帮助。这是752的:https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapwhere.htm?file=abapwhere.htm

最新更新