业务需求
要求SAP报表查询界面(选择界面)上的查询条件只能输入单值,不能输入区间值等,但要可以输入多个值。
效果如下图所示:
分析及实现
由于需要输入多个值,那么需要使用SELECT-OPTIONS,但是SELECT-OPTIONS默认的样式支持输入的方式比较多,因此需要考虑是否能对SELECT-OPTIONS的样式做定制。
搜索了一下,还真找到了解决方法,使用SELECT_OPTIONS_RESTRICT就能实现对选择条件输入样式的限制了。
在SAP的标准程序V50R_INIT_BEFORE_PARAMETERS_I中的FORM restrictions_set.有这个函数的使用例子,可以直接打开参考使用就好了。
以下为网上流传的一个案例,实现的效果就是上面的截屏,供参考:
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
REPORT ZFITEST001. TYPE-POOLS SSCR. TABLES : MARC. *定义选择屏幕 SELECT-OPTIONS : S_MATNR FOR MARC-MATNR NO INTERVALS, S_WERKS FOR MARC-WERKS. * Define the object to be passed to the RESTRICTION parameter DATA RESTRICT TYPE SSCR_RESTRICT. * Auxiliary objects for filling RESTRICT DATA : OPTLIST TYPE SSCR_OPT_LIST, ASS TYPE SSCR_ASS. INITIALIZATION. * 限制MATNR参数只能使用‘EQ'. OPTLIST-NAME = 'OBJECTKEY1'. OPTLIST-OPTIONS-EQ = 'X'. * OPTLIST-OPTIONS-BT = 'X'. APPEND OPTLIST TO RESTRICT-OPT_LIST_TAB. ASS-KIND = 'S'. ASS-NAME = 'S_MATNR'. ASS-SG_MAIN = 'I'. ASS-SG_ADDY = SPACE. ASS-OP_MAIN = 'OBJECTKEY1'. APPEND ASS TO RESTRICT-ASS_TAB. CLEAR : OPTLIST,ASS. * 限制 WERKS 参数只能使用CP, GE, LT, NE. OPTLIST-NAME = 'OBJECTKEY2'. OPTLIST-OPTIONS-EQ = 'X'. OPTLIST-OPTIONS-GT = 'X'. OPTLIST-OPTIONS-LT = 'X'. OPTLIST-OPTIONS-NE = 'X'. APPEND OPTLIST TO RESTRICT-OPT_LIST_TAB. ASS-KIND = 'S'. ASS-NAME = 'S_WERKS'. ASS-SG_MAIN = 'I'. ASS-SG_ADDY = SPACE. ASS-OP_MAIN = 'OBJECTKEY2'. APPEND ASS TO RESTRICT-ASS_TAB. CALL FUNCTION 'SELECT_OPTIONS_RESTRICT' EXPORTING RESTRICTION = RESTRICT EXCEPTIONS TOO_LATE = 1 REPEATED = 2 SELOPT_WITHOUT_OPTIONS = 3 SELOPT_WITHOUT_SIGNS = 4 INVALID_SIGN = 5 EMPTY_OPTION_LIST = 6 INVALID_KIND = 7 REPEATED_KIND_A = 8 OTHERS = 9. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/8404.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。