2020-08-16 14:44发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好民间!
我有一个要求,我想在其中创建一个报表,该报表可以创建Excel/电子表格以及SAP ABAP中Excel和数据的动态模板。 可以实现吗? 例如,我要在此处复制的Excel工作表就是相同的示例。 请指导我...
谢谢大家
Rajashree Palkar。
您好 Rajashree Palkar
感谢您的澄清。
I 建议使用ABAP2XLSX库:
https://github.com/sapmentors/abap2xlsx
https://blogs.sap .com/2010/07/12/abap2xlsx-generate-your-professional-excel-spreadsheet-from-abap/-使用示例。
使用此方法,您可以创建结果电子表格 从头开始或填写上传到应用程序服务器的模板。
要存储模板,我建议使用CL_BDS_DOCUMENT_SET类:
以下是示例:
方法upload_template。 "当然,常量应该定义为类属性 常数: lc_bds_comp_id TYPE bds_compid VALUE'EXCEL_TEMPLATE', lc_bds_classtype TYPE sbdst_classtype VALUE'OT', lc_bds_obj_key TYPE sbdst_object_key VALUE'EXCEL_TEMPLATE', lc_bds_classname类型sbdst_classname值'SOFFICEINTEGRATION'。 数据: lv_rc TYPE i, lv_file TYPE rsawbnobjnm, lv_path TYPE rstxtlg, lv_filename TYPE字符串, lv_full_path TYPE rsfilenm, ls_files TYPE bapifiles, ls_object_key TYPE sbdst_object_key, lt_filetab TYPE文件表, lt_files TYPE sbdst_files, lt_signature TYPE sbdst_signature, lt_components TYPE sbdst_components。 呼叫方法cl_gui_frontend_services => file_open_dialog 出口 file_filter ='MS Excel(* .xlsx)| * .xlsx |所有文件(*。*)| *。* |' 改变 file_table = lt_filetab rc = lv_rc 例外情况 file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 其他= 5。 检查lv_rc = 1和sy-subrc = 0。 读取表lt_filetab索引1进入lv_filename。 lv_full_path = lv_filename。 通话功能'RSDS_SPLIT_PATH_TO_FILENAME' 出口 i_filepath = lv_full_path 输入 e_pathname = lv_path e_filename = lv_file。 ls_files-doc_count = 1。 ls_files-directory = lv_path。 ls_files-文件名= lv_file。 ls_files-comp_id = lc_bds_comp_id。 ls_files-mimetype ='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'。 将ls_files插入表lt_files中。 "获取最新版本 呼叫方法cl_bds_document_set => get_info_newest_only 出口 类别名称= lc_bds_classname classtype = lc_bds_classtype 客户= sy-mandt object_key = lc_bds_obj_key 改变 组件= lt_components 签名= lt_signature 例外情况 error_kpro = 1 internal_error = 2 nothing_found = 3 not_allowed = 4 not_authorized = 5 parameter_error = 6 其他= 7。 读取表lt_signature参考到数据(ld_signature)索引1。 如果sy-subrc = 0。 "更新以前的版本 调用方法cl_bds_document_set => create_version_with_files 出口 类别名称= lc_bds_classname classtype = lc_bds_classtype 客户= sy-mandt object_key = lc_bds_obj_key doc_id = ld_signature-> doc_id doc_ver_no = ld_signature-> doc_ver_no doc_var_id = ld_signature-> doc_var_id 改变 文件= lt_files 例外情况 error_kpro = 1 internal_error = 2 nothing_found = 3 not_authorized = 4 not_allowed = 5 parameter_error = 6 其他= 7。 其他。 "上载新 在lt_signature后面添加初始行,然后在ld_signature中添加引用行。 ld_signature-> doc_count = ls_files-doc_count。 ld_signature-> doc_id ='MY_DOCID'。 ld_signature-> prop_name ='DESCRIPTION'。 ld_signature-> prop_value ='我的Excel模板'。 在lt_signature后面添加初始行,然后在ld_signature中添加引用行。 ld_signature-> doc_count = ls_files-doc_count。 ld_signature-> doc_id ='MY_DOCID'。 ld_signature-> prop_name ='BDS_KEYWORD'。 ld_signature-> prop_value ='EXCEL_TEMPLATE'。 ls_object_key = lc_bds_obj_key。 呼叫方法cl_bds_document_set => create_with_files 出口 类别名称= lc_bds_classname classtype = lc_bds_classtype 客户= sy-mandt 改变 文件= lt_files object_key = ls_object_key 签名= lt_signature 例外情况 internal_error = 1 error_kpro = 2 parameter_error = 3 not_allowed = 4 not_authorized = 5 nothing_found = 6 其他= 7。 万一。 如果sy-subrc <> 0。 消息ID sy-msgid类型sy-msgty编号sy-msgno 与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。 返回。 万一。 "并成功上传 带有"模板"的消息s038(w3_tool)。 终结法。 方法get_excel_template。 "当然,常量应该定义为类属性 常数: lc_bds_comp_id TYPE bds_compid VALUE'EXCEL_TEMPLATE', lc_bds_classtype TYPE sbdst_classtype VALUE'OT', lc_bds_obj_key TYPE sbdst_object_key VALUE'EXCEL_TEMPLATE', lc_bds_classname类型sbdst_classname值'SOFFICEINTEGRATION'。 数据: lv_raw TYPE xstring, lt_signature TYPE sbdst_signature, lt_components TYPE sbdst_components, lt_content TYPE sbdst_content。 呼叫方法cl_bds_document_set => get_info_newest_only 出口 类别名称= lc_bds_classname classtype = lc_bds_classtype 客户= sy-mandt object_key = lc_bds_obj_key 改变 组件= lt_components 签名= lt_signature 例外情况 error_kpro = 1 internal_error = 2 nothing_found = 3 not_allowed = 4 not_authorized = 5 parameter_error = 6 其他= 7。 检查sy-subrc = 0。 提取文件 呼叫方法cl_bds_document_set => get_with_table 出口 类别名称= lc_bds_classname classtype = lc_bds_classtype 客户= sy-mandt object_key = lc_bds_obj_key 改变 含量= lt_含量 签名= lt_signature 组件= lt_components 例外情况 error_kpro = 1 internal_error = 2 nothing_found = 3 no_content = 4 parameter_error = 5 not_authorized = 6 not_allowed = 7 其他= 8。 转换 将lt_content引用到数据(ld_file)中。 将lv_raw ld_file-> line插入INTO lv_raw IN BYTE MODE。 结局。 rv_result = lv_raw。 终结法。
亲切的问候, Mateusz
你好 Rajashree Palkar
" Excel和数据的动态模板"是什么意思?
又非常酷,功能强大 以及对abap2xlsx的快速学习曲线扩展(当前尚未合并拉取请求),在此进行了描述:
嗨Mateusz,
感谢您的联系...
实际上,我的意思是通常excel包含表格模板,但就我而言,它应该像上面的screeshot一样采用表格/字母格式。
谢谢
哇!!! 感谢您的详细解释。 BDS,您的意思是业务文档服务(Tcode OAOR)。
让我浏览其他网站上提到的这些链接/博客。
再次非常感谢!
最多设置5个标签!
您好 Rajashree Palkar
感谢您的澄清。
I 建议使用ABAP2XLSX库:
https://github.com/sapmentors/abap2xlsx
https://blogs.sap .com/2010/07/12/abap2xlsx-generate-your-professional-excel-spreadsheet-from-abap/-使用示例。
使用此方法,您可以创建结果电子表格 从头开始或填写上传到应用程序服务器的模板。
要存储模板,我建议使用CL_BDS_DOCUMENT_SET类:
以下是示例:
亲切的问候,
Mateusz
你好 Rajashree Palkar
" Excel和数据的动态模板"是什么意思?
亲切的问候,
Mateusz
又非常酷,功能强大 以及对abap2xlsx的快速学习曲线扩展(当前尚未合并拉取请求),在此进行了描述:
嗨Mateusz,
感谢您的联系...
实际上,我的意思是通常excel包含表格模板,但就我而言,它应该像上面的screeshot一样采用表格/字母格式。
谢谢
Rajashree Palkar。
嗨Mateusz,
哇!!! 感谢您的详细解释。 BDS,您的意思是业务文档服务(Tcode OAOR)。
让我浏览其他网站上提到的这些链接/博客。
再次非常感谢!
Rajashree Palkar。