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

需要做一个报表:

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 NEEDED
DATA: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~guid
a~guid AS header
a~po_number_sold
a~zzztrackreturn
a~zzafld000001
b~zzafld00001x AS zzgi_date
b~description AS short_text
INTO CORRESPONDING FIELDS OF TABLE gt_result
FROM zhsb_sales_index AS a
INNER JOIN crmd_orderadm_i AS b
ON a~guid = b~header
WHERE a~process_type = 'ZSO5'
AND a~sales_org = 'O 50000231'
AND a~sold_to_party = ''
AND b~zzafld00001x IN rt_cgi_date
AND b~zzafld00001y IN rt_cgi_time
AND b~itm_type = 'ZSO5'. "取前置服务工单
vt_result[] = gt_result[].
DELETE vt_result WHERE po_number_sold IS INITIAL.
IF vt_result[] IS NOT INITIAL.
SELECT guid
object_id
process_type
INTO TABLE gt_order
FROM zhsb_order_index
FOR ALL ENTRIES IN vt_result
WHERE object_id = vt_result-po_number_sold+()
AND process_type = 'ZSV1'.
ENDIF. "取合作伙伴ship to
REFRESH: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_hi
crmd_partner~addr_nr
crmd_partner~addr_type
crmd_partner~partner_fct
INTO TABLE gt_part
FROM crmd_link
INNER JOIN crmd_partner
ON crmd_link~guid_set = crmd_partner~guid
FOR ALL ENTRIES IN vt_result
WHERE crmd_link~guid_hi = vt_result-header
AND crmd_partner~partner_fct = ''
AND crmd_link~objtype_set = ''."PARTNER REFRESH: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~addrnumber
adrc~name1
adr6~smtp_addr
adrc~tel_number
adrc~street
adrc~str_suppl1
adrc~str_suppl2
adrc~post_code1
adrc~city1
INTO TABLE gt_adrc
FROM adrc
LEFT JOIN adr6
ON adrc~addrnumber = adr6~addrnumber
FOR ALL ENTRIES IN vt_part
WHERE 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+().
IF sy-subrc <> .
CONTINUE.
ENDIF. ls_result-name2 = '固定值'.
"赋值联系人信息
READ TABLE gt_part INTO gw_part WITH KEY guid_hi = ls_result-header BINARY SEARCH.
IF sy-subrc = .
READ TABLE gt_adrc INTO gw_adrc WITH KEY addrnumber = gw_part-addr_nr BINARY SEARCH.
IF sy-subrc = .
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创建搜索页面:

UI基础三:简单的BOL报表开发的更多相关文章

  1. 利用JasperReport+iReport进行Web报表开发

    用JasperReport+iReport进行Web报表开发 序言 在非常多实际的项目里,报表都是当中十分重要的组成部分,比如把查询结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥 ...

  2. iOS开发UI篇—Quartz2D简单使用(三)

    iOS开发UI篇—Quartz2D简单使用(三) 一.通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联. 界 ...

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

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

  4. 使用C#和Excel进行报表开发(三)-生成统计图(Chart)

    有的Web项目选用Excel作为报表方案,在服务器端生成Excel文件,然后传送到客户端,由客户端进行打印.在国内的环境下,相对PDF方式,Excel的安装率应该比pdf阅读器的安装率要高,同时,微软 ...

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

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

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

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

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

    ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...

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

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

  9. iOS开发UI篇—Quartz2D简单介绍

    iOS开发UI篇—Quartz2D简单介绍 一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\ ...

随机推荐

  1. Docker Engine SDKs and API 的开发1

    Develop with Docker Engine SDKs and API Docker provides an API for interacting with the Docker daemo ...

  2. Linux命令3——c

    cal:calender,显示月历 -j:用凯撒历(dates of julius caesar)的形式来显示月历,不分月份.1-365/366 -m:显示月历时,把星期一定为一周的开始.默认星期日为 ...

  3. Linux安装svn客户端

    Red Hat Linux 1.安装$ yum install subversion 2.常见问题1.执行svn报错:cannot set LC_CTYPE localevi /etc/profile ...

  4. 给大家讲个故事,感受一下什么叫CF。不知道的请认真听。

    我朋友是个温柔.体贴.负责.做事认真和口才流利的好男人 他在大一时喜欢上别系的女同学,像他这样的好人我以为这段恋情是手到擒来 但并没有,女方只把它当工具人,一当就当了四年 身为室友的我每天看著她为女方 ...

  5. geoserver源码学习与扩展——自动发布shapefile图层

    geoserver通过工作空间Workspace-数据源DataStore-图层Layer管理地理数据,这些信息都通过Catalog进行组织和管理,要完成自动发布只需要在Catalog中增加相应的信息 ...

  6. _spellmod_leech_spell

    comment  备注 spell 技能ID,玩家释放该技能时附带吸血效果 meetAura  产生吸血效果需要满足的光环ID,比如做一个空的光环,为寒冰箭吸血光环,则有些光环时候,寒冰箭会附带吸血效 ...

  7. codeforces 741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

    题目链接:Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 第一次写\(dsu\ on\ tree\),来记录一下 \(dsu\ o ...

  8. C# 整理DotNetBar中SuperGridControl的一些基础属性

    //控制表格只能选中单行 superGridControl1.PrimaryGrid.MultiSelect = false; superGridControl1.PrimaryGrid.Initia ...

  9. pom中配置的仓库无效的问题

    今天在用spring cloud的时候发现,配置的pom仓库一直无效(官网要求2.0版本直接从指定仓库里下).于是上网搜索,发现(http://18810098265.iteye.com/blog/2 ...

  10. Django安装与创建项目

    下载 https://media.djangoproject.com/releases/1.11/Django-1.11.20.tar.gz 解压 tar -zvxf Django-1.11.20.t ...