我们知道SE11或SE16N中并不支持物料外部编码的模糊查询,比如:se11中模糊查询64771-062-*找不到符合条件的数据,
但实际上是有一条符合条件的物料。
如果想支持外部编码的模糊查询,就需要使用到函数 MGV_SELOP_AFTER_START_OF_SEL,将select-option中的带星号的模糊查询转换成为符合条件的内部编码。
简单写个代码供参考:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
REPORT ztest_selop.
TABLES:mara.
DATA: gv_flg TYPE c.
DATA:gt_mara TYPE STANDARD TABLE OF mara WITH HEADER LINE.
SELECT-OPTIONS s_matnr FOR mara-matnr.
START-OF-SELECTION.
"件号模糊查询支持
CLEAR gv_flg.
LOOP AT s_matnr .
IF s_matnr-low CS '*'.
gv_flg = 'X'.
EXIT.
ENDIF.
IF s_matnr-high CS '*'.
gv_flg = 'X'.
EXIT.
ENDIF.
ENDLOOP.
* 模糊查询
IF gv_flg = 'X'.
CALL FUNCTION 'MGV_SELOP_AFTER_START_OF_SEL'
EXPORTING
selopt_name = 'MATNR'
* MAT_ALL =
* MAT_HEAD =
* MAT_VERS =
* MAT_UNVE =
TABLES
range = s_matnr[].
ENDIF.
SELECT *
FROM mara
INTO TABLE gt_mara
WHERE matnr IN s_matnr.
LOOP AT gt_mara.
WRITE:/ gt_mara-matnr.
ENDLOOP.
|
测试:输入刚才se11中输入的64771-062-*
结果,成功找到64771-062-001
以上。