微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 企业开发 > SAP >

简单的查询分析器

时间:2016-11-23 03:48  浏览:努力统计中...
se16n,只能用来查一张表的数据 每每想到以前用的查询分析器或者各种Console就忍不住想吐槽 刚开始接触abap的时候就想自己写一个查询分析器 这两天周六周日上班,不想干活… 尝试着开始

se16n,只能用来查一张表的数据

每每想到以前用的查询分析器或者各种Console就忍不住想吐槽

刚开始接触abap的时候就想自己写一个查询分析器

这两天周六周日上班,不想干活…

尝试着开始写这个东西

趁放假前把写好的东西放出来吧

实现了简单的查询 及 连接查询  (增删改暂时不支持,可以考虑根据关键字进行操作的分类,应该也是类似的)

(个人估计 五一后也没这么多精力来做这种东西了  这是第一个版本 也是最后一个版本了

虽然写的有点挫  部分代码都是copy过来后都没怎么改  所以比较凌乱  但单大致思路应该还是可以的)

 

主要使用的技术:

1. “自省”结构体:  主要是某个表结构的所有字段

2. 动态内表

3. 动态程序

 

现在的程序有个BUG:

P类型数据, 采用的技术手段获取字段信息不准确

例如 domain中定义的是 length 13 decimals 3  但是现在获取的是  length 7  decimals 2

导致select数据在添加到动态内表时,由于结构不一致,导致异常…

 

效果截图:

a.查询语句:

image

b.结果:

image

 

附:代码

REPORT  Z_QUERY_PARSER.type-pools: esp1,abap .tables: mara.data: gt_message type ESP1_MESSAGE_TAB_TYPE with header line.data: gt_sql LIKE abapsource OCCURS 0 WITH HEADER LINE.*每个筛选字段  例如:mara~matnrtypes: begin of field_value,        value(20),       end of field_value.data: gt_field type field_value occurs 0 with header line.data: gt_component type field_value occurs 0 with header line.data: gt_tabname type field_value occurs 0 with header line.perform call_query_panel.perform spliter.perform create_dyn_pro.form call_query_panel.   CALL FUNCTION 'EDITOR_APPLICATION'       EXPORTING            application = 'BF'            display     = ' '            name        = 'Query Panel'*       IMPORTING*            fcode       = fcode*            changed     = changed       TABLES            content     = gt_sql[].endform.form spliter.  data: l_query type string.  data: l_field(10),l_tabname1(10),l_tabname2(10).  loop at gt_sql.    concatenate l_query gt_sql  into l_query separated by space.  endloop.  condense l_query.  translate l_query to upper case.  split l_query at space into table gt_field.endform.form create_dyn_pro.DATA: l_prog TYPE string,      l_code  TYPE
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------
栏目列表
推荐内容