前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >根据变量值取得变量的参数名

根据变量值取得变量的参数名

作者头像
Jerry Wang
发布2019-05-31 10:13:05
8600
发布2019-05-31 10:13:05
举报

写作于2017年2月17日。

Java和ABAP只能根据字符串通过反射获得变量的metadata,像标题描述的这个需求听起来有点怪。需求是Mervin实现Range search时需要根据range table的内容来动态拼OPEN SQL,OPEN SQL里的statement必须是range table的变量名。 AG9: 这四个参数模拟search支持的attribute,如果runtime时候哪个参数传了值进去,就把哪个参数名拼到SQL去:

clipboard1
clipboard1

具体实现:

代码语言:javascript
复制
  method BUILD_SQL.
* Jerry: move this logic to constructor!!

  data: lt_arg TYPE TABLE OF SEOSUBCODF.
  SELECT * INTO TABLE lt_arg FROM SEOSUBCODF WHERE clsname = 'ZCL_SQL'
     and cmpname = 'BUILD_SQL'.
* Jerry: end.

  DATA: lv_result TYPE string value 'select from XXX'.

  LOOP AT lt_arg ASSIGNING FIELD-SYMBOL(<arg>).
     ASSIGN (<arg>-sconame) TO FIELD-SYMBOL(<arg_value>).
     IF sy-subrc = 0 and <arg_value> IS NOT INITIAL.
        lv_result = | { lv_result } WHERE { <arg>-sconame } = { <arg_value> } |.
     ENDIF.
  ENDLOOP.
  WRITE: / lv_result.
  endmethod.

测试:

clipboard2
clipboard2

输出: 参数名已经动态拼到SQL里去了:

clipboard3
clipboard3
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档