动态 Select (宏)

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 .

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值