在使用时,有时需要预定义一个RANGES或者说一个字符串之类的变量保存起来,方便使用时使用,此变量也就相当于在SAP的全局变量 ,可以在SAP的任何程序中使用,并且方便维护定义。
以下相关的几种方法,可以定义RANGS,使用时可根据需要选择,
1.一、自定RANGES表,
1.自定程序调用COMPLEX_SELECTIONS_DIALOG函数维护RANGES,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
REPORT ZTEST02 . TABLES: MARA. RANGES: II_MATNR FOR MARA-MATNR. CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG' EXPORTING TITLE = '选择物料' TABLES RANGE = II_MATNR ** EXCEPTIONS ** NO_RANGE_TAB = 1 ** CANCELLED = 2 ** INTERNAL_ERROR = 3 ** INVALID_FIELDNAME = 4 ** OTHERS = 5 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. |
2.保存到自定义表中。
3,使用时直接从自定义表中SELECT出来到RANGES中使用。
2.二、使用GS01创建集,
1.使用事务码 GS01 , GS02, GS03, GS04维护好相关集,
2.在代码中使用函数 G_SET_GET_ALL_VALUES ,得到维护的集,并转换为RANGES使用
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 |
FORM GET_SET TABLES P_TAB_VALUES STRUCTURE RGSB4 USING P_SETNR. CALL FUNCTION 'G_SET_GET_ALL_VALUES' EXPORTING SETNR = P_SETNR CLASS = '0000' TABLES SET_VALUES = P_TAB_VALUES[] EXCEPTIONS SET_NOT_FOUND = 1 OTHERS = 2. ENDFORM. " GET_SET PERFORM GET_SET TABLES TAB_VALUES USING 'GL_ACCT_REQ_TRADPTNR_MS'. "科目 - 贸易伙伴必输(不能为9999) LOOP AT TAB_VALUES INTO REC_VALUES. R_HKONT_MS-SIGN = 'I'. IF REC_VALUES-TO NE SPACE. R_HKONT_MS-OPTION = 'BT'. R_HKONT_MS-HIGH = REC_VALUES-TO. ELSE. R_HKONT_MS-OPTION = 'EQ'. ENDIF. R_HKONT_MS-LOW = REC_VALUES-FROM. APPEND R_HKONT_MS. "科目 - 贸易伙伴必输(不能为9999) ENDLOOP. |
3.三、 STVARV 维护SAP全局变量
1.使用事务码:STVARV( STVARVC)维护变量,维护好后内容会保存到表TVARV,
2.使用时从表中取出数据,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
FUNCTION Z_GET_STVARV_VARIANTS . *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" REFERENCE(I_TVARVC_TYPE) TYPE RSSCR_KIND *" REFERENCE(I_TVARVC_NAME) TYPE RVARI_VNAM *" CHANGING *" REFERENCE(CT_TVARVC_VAL) TYPE ZSTVARV_TAB *"---------------------------------------------------------------------- DATA: LT_TVARVC TYPE TABLE OF TVARVC.. REFRESH LT_TVARVC. SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_TVARVC FROM TVARVC WHERE NAME EQ I_TVARVC_NAME AND TYPE EQ I_TVARVC_TYPE. IF SY-SUBRC EQ 0. APPEND LINES OF LT_TVARVC TO CT_TVARVC_VAL. ENDIF. FREE LT_TVARVC. ENDFUNCTION. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DATA: lv_time TYPE TVARV_VAL, lv_tvarvc(25) . CONSTANTS lv_prefix(25) VALUE 'ZZXXS_'. CONCATENATE lv_prefix p_werks INTO lv_tvarvc. SELECT SINGLE low INTO lv_time FROM tvarvc WHERE name = lv_tvarvc AND type = 'P'. IF sy-subrc eq 0. g_time = lv_time. ELSE. g_time = '000000'. ENDIF. CLEAR:lv_time,lv_tvarvc. |