我们知道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
以上。
2019-10-24 10:57 上午