给SAP WebClient UI的表格行项目增添PDF预览功能-阿里云开发者社区

开发者社区> 开发者小助手-bz4> 正文

给SAP WebClient UI的表格行项目增添PDF预览功能

简介: 给SAP WebClient UI的表格行项目增添PDF预览功能
+关注继续查看

In CRM UI by default the PDF preview is only available in document header level. For example once PDF Fact Sheet is clicked, the PDF is displayed in a popup window.



image.pngimage.pngSuppose there are lots of document to be previewed as a PDF, you have to enter to overview page of each and preview there. A more efficient way is the preview functionality can be directly available in search result table as “One Click Action(OCA)”. This blog will explain the main required steps.


The example is built based on new Genil model CRMSM developed in CRM EHP3. For detail about this Genil model, please refer to this blog Twitter(also Facebook) is official integrated into CRM 7.0 EHP3.


Let’s have a look at what could be achieved as table line item preview.


Once the OCA in a given table row is clicked,


image.pngA new Popup is displayed with rendered PDF there.image.pngStep by step for line item preview enablement

(1) since it is required to display PDF in popup, so component usage for reuse component GSURLPOPUP must be declared in runtime repository.


image.png(2) Define OCA event handler in get_p callback:image.pngSource code of GET_P:METHOD get_p_thtmlb_oca.

 CASE iv_property.

   WHEN if_bsp_wd_model_setter_getter=>fp_fieldtype.

     rv_value = cl_bsp_dlc_view_descriptor=>field_type_oca.

   WHEN if_bsp_wd_model_setter_getter=>fp_onclick.

     rv_value = 'PREVIEW'.

 ENDCASE.

ENDMETHOD.(3) Create a new event handler for PREVIEW event:image.pngMETHOD eh_onpreview.

   DATA: lv_event    TYPE REF TO cl_htmlb_event_tableview.

   lv_event    ?= htmlb_event.

   me->typed_context->searchresult->eh_on_one_click_action(

      iv_htmlb_event    = lv_event

      iv_htmlb_event_ex = htmlb_event_ex ).

 ENDMETHOD.The method above EH_ON_ONE_CLICK_ACTION is implemented in context node class:METHOD eh_on_one_click_action.

 DATA: lv_event     TYPE string,

       lv_index     TYPE string,

       lr_col       TYPE REF TO cl_crm_bol_entity.

 SPLIT iv_htmlb_event_ex->event_defined AT '.' INTO lv_event lv_index.

 me->get_bo_by_index( conv #( lv_index ) ).

 lr_col ?= me->collection_wrapper->get_current( ).

 CHECK lr_col IS NOT INITIAL.

 CASE lv_event.

   WHEN 'PREVIEW'.

     mr_owner->open_pdf( lr_col ).

   WHEN OTHERS.

 ENDCASE.

ENDMETHOD.Inside this method, the PDF preview task is delegated to method OPEN_PDF:METHOD open_pdf.

   DATA(lv_uuid) = ir_bol->get_property_as_string( 'UUID' ).

   CONCATENATE 'uuid=' lv_uuid INTO DATA(lv_query).

   DATA(lv_url) = cl_crm_web_utility=>create_url( iv_path = '/sap/crm/social_print'

                                            iv_query = lv_query

                                            iv_in_same_session = 'X' ).

   SELECT SINGLE internal_id INTO @DATA(lv_id) FROM crmd_soc_post WHERE uuid = @lv_uuid.

   DATA(lv_title) = 'Social Post preview: ' && lv_id.

   DATA(lr_popup) =  me->comp_controller->window_manager->create_popup(  iv_interface_view_name = 'GSURLPOPUP/MainWindow'

                                                                   iv_usage_name          = 'CUGSURLPopup'

                                                                   iv_title               = lv_title ).

   DATA(lr_cn) = lr_popup->get_context_node( 'PARAMS' ).

   DATA(lr_obj) = lr_cn->collection_wrapper->get_current( ).

   DATA(ls_params) = VALUE crmt_gsurlpopup_params( url = lv_url height = '700' ).

   lr_obj->set_properties( ls_params ).

   lr_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_plain ).

   lr_popup->set_window_width( 700 ).

   lr_popup->set_window_height( 700 ).

   lr_popup->open( ).

 ENDMETHOD.(4) Create a new ICF node social_print in tcode SICF:image.pngCreate a new handler class ZCL_SOCIAL_PRINT for this node.image.png(5) Inside the handler class mentioned in step 4, an Adobe print form template ZPF_SOCIAL_POST is used.


As a result you need to create it in tcode SFP. You have two objects to create in this transaction code.


(1) A form interface ZIF_SOCIAL_POST. This interface declares importing signature which will be filled by the PDF consumer with business data.

The signature required by this example could be found in below screenshot.



image.png(2). A template file which defines PDF layout. In the design time you specify the mapping relationship between UI elements in the template with their corresponding data nodes created in form interface.


image.pngClick Layout tab to open Form Builder, and define data binding there.image.pngFor this example, you can just type “fb_xdp_up” in command area and upload the template file locally.image.pngOnce uploaded, activate both interface and template.image.pngIn the runtime the ABAP data to be displayed is converted to xml format and merged into template by ADS ( Adobe Document Service ). If you meet with any trouble during PDF generation phase, you can debug method CL_FP_PDF_OBJECT~EXECUTE_INTERNAL to find the root cause.



image.pngThe user parameter FPTRACELEVEL is a convenient way to get detail trace for PDF rendering detail.

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9950 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13699 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9130 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11867 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7312 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4437 0
MyEclipse 2016 CI 版本实时预览功能引发的中文乱码的Bug
今天一个加入我的QQ群:IT十年(170273637)的朋友,请教关于MyEclipse 2016 CI 3 JSP页面中文乱码的问题;开始是JSP页面在编辑器中乱码,解决之后又发现在浏览器中查看是乱码,说是该配置的都已经配置了,还问我是不是MyEclipse新版本的问题,我当时还很自信的说应该不是;由于当时是工作时间不方便,我就说晚上帮他看看。
787 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22336 0
2315
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载