巧了。。。刚好一个需求,就直接来撸起来吧。

需要做一个报表:

1.创建查询结构和结果结构

2.创建实施类:

SE24创建ZCL_JPEXPORT_ORDER_IL

更改父类:CL_WCF_GENIL_ABSTR_COMPONENT

重定义方法:GET_DYNAMIC_QUERY_RESULT

  METHOD if_genil_appl_intlay~get_dynamic_query_result.TYPES:BEGIN OF ty_order,guid         TYPE crmt_object_guid,object_id    TYPE crmt_object_id_db,process_type TYPE crmt_process_type,END OF ty_order,BEGIN OF ty_product,product_guid TYPE comt_product_guid,product_id   TYPE comt_product_id,short_text   TYPE comt_prshtextx,END OF ty_product,BEGIN OF ty_part,guid_hi     TYPE crmt_object_guid,addr_nr     TYPE ad_addrnum,addr_type   TYPE ad_adrtype,partner_fct TYPE crmt_partner_fct,END OF ty_part,BEGIN OF ty_adrc,addrnumber TYPE ad_addrnum,name1      TYPE ad_name1,smtp_addr  TYPE ad_smtpadr,tel_number TYPE ad_tlnmbr1,street     TYPE ad_street,str_suppl1 TYPE ad_strspp1,str_suppl2 TYPE ad_strspp2,post_code1 TYPE ad_pstcd1,city1      TYPE ad_city1,END OF ty_adrc.DATA: lt_selection    TYPE axtt_tables_sel_param,ls_selection    TYPE axt_tables_sel_param,rt_object_id    TYPE RANGE OF crmt_object_id,rs_object_id    LIKE LINE OF rt_object_id,rt_process_type TYPE RANGE OF crmt_process_type,rs_process_type LIKE LINE OF rt_process_type,rt_cgi_date     TYPE RANGE OF zadtel00009q,rs_cgi_date     LIKE LINE OF rt_cgi_date,rt_cgi_time     TYPE RANGE OF zadtel00009u,rs_cgi_time     LIKE LINE OF rt_cgi_time,lx_root         TYPE REF TO cx_root.              "#EC NEEDEDDATA:gt_order   TYPE TABLE OF ty_order,gw_order   LIKE LINE OF gt_order,gt_product TYPE TABLE OF ty_product,gw_product LIKE LINE OF gt_product,gt_part    TYPE TABLE OF ty_part,vt_part    TYPE TABLE OF ty_part,gw_part    LIKE LINE OF gt_part,gt_adrc    TYPE TABLE OF ty_adrc,gw_adrc    LIKE LINE OF gt_adrc,gv_index   TYPE i. "
DATA ls_selection_paras TYPE genilt_selection_parameter.DATA lt_where_condition TYPE crmt_report_dyn_sql_line_ta.DATA: gt_result TYPE TABLE OF zcrms0056,vt_result TYPE TABLE OF zcrms0056,ls_result TYPE          zcrms0056.DATA: lv_maxhit     TYPE          int4,lv_object_key TYPE          crmt_bsp_objectkey,lr_object     TYPE REF TO   if_genil_cont_root_object.DEFINE set_result.LOOP AT GT_RESULT INTO LS_RESULT.LR_OBJECT = IV_ROOT_LIST->ADD_OBJECT( IV_OBJECT_NAME = 'ZTCRESULT'IS_OBJECT_KEY = LS_RESULT-GUID ).LV_OBJECT_KEY = LS_RESULT-GUID.LR_OBJECT->SET_KEY( LV_OBJECT_KEY ).LR_OBJECT->SET_ATTRIBUTES( LS_RESULT ).CLEAR LS_RESULT.ENDLOOP.END-OF-DEFINITION .lt_selection = it_selection_parameters.
*    SORT LT_SELECTION BY ATTR_NAME.LOOP AT lt_selection INTO ls_selection.CASE  ls_selection-attr_name.WHEN 'ZZAFLD00001Y'.MOVE-CORRESPONDING ls_selection TO rs_cgi_time.INSERT rs_cgi_time INTO TABLE rt_cgi_time.WHEN 'PROCESS_TYPE'.MOVE-CORRESPONDING ls_selection TO rs_process_type.INSERT rs_process_type INTO TABLE rt_process_type.WHEN 'ZZAFLD00001X'.MOVE-CORRESPONDING ls_selection TO rs_cgi_date.INSERT rs_cgi_date INTO TABLE rt_cgi_date.ENDCASE.ENDLOOP.lv_maxhit = is_query_parameters-max_hits.SELECT b~guida~guid AS headera~po_number_solda~zzztrackreturna~zzafld000001b~zzafld00001x AS zzgi_dateb~description AS short_textINTO CORRESPONDING FIELDS OF TABLE gt_resultFROM zhsb_sales_index AS aINNER JOIN crmd_orderadm_i AS bON a~guid = b~headerWHERE a~process_type = 'ZSO5'AND a~sales_org    = 'O 50000231'AND a~sold_to_party = '0000202693'AND b~zzafld00001x IN rt_cgi_dateAND b~zzafld00001y IN rt_cgi_timeAND b~itm_type     = 'ZSO5'."取前置服务工单vt_result[] = gt_result[].DELETE vt_result WHERE po_number_sold IS INITIAL.IF vt_result[] IS NOT INITIAL.SELECT guidobject_idprocess_typeINTO TABLE gt_orderFROM zhsb_order_indexFOR ALL ENTRIES IN vt_resultWHERE object_id = vt_result-po_number_sold+0(10)AND   process_type = 'ZSV1'.ENDIF."取合作伙伴ship toREFRESH:vt_result.vt_result[] = gt_result[].SORT vt_result BY header.DELETE ADJACENT DUPLICATES FROM vt_result COMPARING header.IF vt_result[] IS NOT INITIAL.SELECT crmd_link~guid_hicrmd_partner~addr_nrcrmd_partner~addr_typecrmd_partner~partner_fctINTO TABLE gt_partFROM crmd_linkINNER JOIN crmd_partnerON crmd_link~guid_set = crmd_partner~guidFOR ALL ENTRIES IN vt_resultWHERE crmd_link~guid_hi = vt_result-headerAND   crmd_partner~partner_fct = '00000002'AND   crmd_link~objtype_set = '07'."PARTNERREFRESH:vt_part.vt_part[] = gt_part[].SORT vt_part BY addr_nr.DELETE ADJACENT DUPLICATES FROM vt_part COMPARING addr_nr.IF vt_part[] IS NOT INITIAL.SELECT adrc~addrnumberadrc~name1adr6~smtp_addradrc~tel_numberadrc~streetadrc~str_suppl1adrc~str_suppl2adrc~post_code1adrc~city1INTO TABLE gt_adrcFROM adrcLEFT JOIN adr6ON adrc~addrnumber = adr6~addrnumberFOR ALL ENTRIES IN vt_partWHERE adrc~addrnumber = vt_part-addr_nr.REFRESH:vt_part.ENDIF.ENDIF.SORT gt_part BY guid_hi.SORT gt_adrc BY addrnumber.LOOP AT gt_result INTO ls_result.READ TABLE gt_order INTO gw_order WITH KEY object_id = ls_result-po_number_sold+0(10).IF sy-subrc <> 0.CONTINUE.ENDIF.ls_result-name2 = '固定值'."赋值联系人信息READ TABLE gt_part INTO gw_part WITH KEY guid_hi = ls_result-header BINARY SEARCH.IF sy-subrc = 0.READ TABLE gt_adrc INTO gw_adrc WITH KEY addrnumber = gw_part-addr_nr BINARY SEARCH.IF sy-subrc = 0.ls_result-tel_number = gw_adrc-tel_number.ls_result-post_code1 = gw_adrc-post_code1.ls_result-street = gw_adrc-street.ls_result-str_suppl1 = gw_adrc-str_suppl1.ls_result-name1 = gw_adrc-name1.ENDIF.ENDIF.MODIFY gt_result FROM ls_result.ENDLOOP.set_result.ENDMETHOD.

注意在处理Object key的时候一定不能有重复,不然会dump

3.创建BOL对象

t-code:GENIL_MODEL_BROWSER

创建结果对象

定义动态搜索对象:

到此对象创建完成,点击transport将对象数据添加到请求中

4.创建组件集:

5.创建搜索页面

T-CODE:BSP_WD_CMPWB

输入组件名:ZHSI_JPEXP点击创建

4.1添加BOL模型节点

点击:Runtime Repository Editor

点击编辑按钮

右键Model节点,添加model:ZJPEXP保存

4.2创建搜索页面:

转载于:https://www.cnblogs.com/sapSB/p/7723008.html

UI基础三:简单的BOL报表开发相关推荐

  1. 数据准备 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  2. 你的报表工具会做数据准备吗 ——报表开发中的深层次问题

    前言 现在企业的报表开发大部分都使用报表工具完成,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但在实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是 ...

  3. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础-手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  4. iPhone开发教程 UI基础课程(58课时)

    qianqianlianmeng iPhone开发教程 UI基础课程(58课时) 第一章   iPhone开发入门 UI基础课程 第一章 iPhone开发入门 1.1 iOS概述和架构         ...

  5. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  6. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  7. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇-Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  8. 三周一套报表开发系统,原来Excel的顶级替代品是它

    老规矩,文末送模板! 报表是企业IT数据建设里必不可少的一环,可以说小到一张张出入单据,大到各个公司里的大屏看板等等,都是重要的数据资产. 像我这种程序员平日里也经常会遇到要做报表的情况,比如领导每月 ...

  9. 三天,我通过了Apsara Clouder基础技能认证:阿里巴巴Android开发规范

    花费了三天时间学习了阿里巴巴 Android 开发规范,顺便通过了Apsara Clouder基础技能认证:阿里巴巴Android开发规范.证可能用处不大,但能反向push自己:1.注重代码规范,磨练 ...

最新文章

  1. 去掉动网广告“国内使用量最大的动网论坛”的方法
  2. python计算每月工资-Python实现扣除个人税后的工资计算器示例
  3. SCANF SCANF_S
  4. Spring boot中使用log4j记录日志
  5. 再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署...
  6. 2010-11-23 network virtualization papers(2)
  7. linux时间老是跳快6分钟,Linux超省时小技巧,让你原来要十分钟解决的问题现在只用一秒钟...
  8. java实现身份证号码的严格校验!
  9. 史上最全源码安装ROS-BUG解决集合2:在树莓派4B上安装Raspbian Bluster aarch64系统 + ROS-Melodic
  10. 灰度发布:灰度很简单,发布很复杂
  11. python基础趣讲精练_Python内置函数精讲精练 enumerate()
  12. 阿里云认证有什么用?考试费用高不高?
  13. SmartUplod中文乱码问题(已解决)
  14. 如何建立英文字符的哈希表
  15. 骷髅创意设计灵感_20种创意旅行应用程序设计,激发您的灵感
  16. 翁恺《零基础学习Java语言》作业答案 第1周到第7周
  17. 计算机技术发展作文,【推荐】科技发展作文三篇
  18. 好消息,发现一款知网学术不端论文检测查重助手,永久免费分享给大家使用
  19. 仙剑java_xianjian 仙剑游戏JAVA版源码,早期练习保存的资料 Develop 244万源代码下载- www.pudn.com...
  20. php esc p 打印,ESC/P 打印指令使用,3种票据打印方法(转)

热门文章

  1. ${pageContext.request.contextPath}的作用
  2. 2017年05月13日勒索软件, 勒索病毒(WannaCry)肆虐全球, 中国安全防线严重受挫
  3. 存储过程中is的含义
  4. 西门子1200 plc与台达14ES plc之间modbus 通讯实战程序 西门子1200plc做主站,台达DVP plc做从站,进行数据交换
  5. 产品化软件开发与项目化软件开发的对比
  6. 计算机记录乐器,2013年计算机考试题模拟考试2套题.doc
  7. 交通大数据应用场景——高速落地检
  8. Windows10搭建opengrok服务器
  9. qt编写网易云界面(3)----列表框的实现
  10. Python:绘制动态地图-pyecharts