ABAP中避免重复的select,可以用宏动态的改变select的各个参数
一、定义宏,及需要变量
FIELD-SYMBOLS <FS> TYPE ANY TABLE.
DATA GV_BASE TYPE CHAR20.
DATA GV_WHERE TYPE C LENGTH 200 .
DEFINE %%SEL_DATAS.
SELECT *
FROM (&1)
INTO CORRESPONDING FIELDS OF TABLE &2
UP TO P_MNUM ROWS
WHERE (&3).
END-OF-DEFINITION.
二、向宏中传递参数
IF R_AR EQ GC_X.
GV_BASE = 'ZSTU_INFO' .
CLEAR GV_WHERE.
CONCATENATE 'SNO' 'IN' 'S_SNO'
'AND' 'SCHOOL' 'IN' 'S_SCHOOL'
'AND' 'IDCARD' 'IN' 'S_CARD'
'AND' 'NAME' 'IN' 'S_NAME'
'AND' 'COLLEGE' 'IN' 'S_COLL'
'AND' ' MAJOR' 'IN' 'S_MAJOR'
'AND' ' CLASS' 'IN' 'S_CLASS'
INTO GV_WHERE SEPARATED BY ' '.
IF <FS> IS ASSIGNED.
UNASSIGN <FS>.
ASSIGN GT_STUINFO to <FS>.
ELSE.
ASSIGN GT_STUINFO to <FS>.
ENDIF.
ELSEIF R_RE EQ GC_X.
GV_BASE = 'ZSTU_RESUME' .
CLEAR GV_WHERE.
CONCATENATE 'SNO' 'IN' 'S_SNO'
'AND' 'NAME' 'IN' 'S_NAME'
INTO GV_WHERE SEPARATED BY ' '.
IF <FS> IS ASSIGNED.
UNASSIGN <FS>.
ASSIGN GT_RESUME[] to <FS>.
ELSE.
ASSIGN GT_RESUME[] to <FS>.
ENDIF.
ENDIF .
%%SEL_DATAS: GV_BASE <FS> GV_WHERE .