一、自定RANGES表,
1.自定程序调用COMPLEX_SELECTIONS_DIALOG函数维护RANGES,
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中使用。
二、使用GS01创建集,
1.使用事务码 GS01 , GS02, GS03, GS04维护好相关集,
2.在代码中使用函数 G_SET_GET_ALL_VALUES ,得到维护的集,并转换为RANGES使用
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.
三、 STVARV 维护SAP全局变量
1.使用事务码:STVARV( STVARVC)维护变量,维护好后内容会保存到表TVARV,
2.使用时从表中取出数据,
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.
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.