2020-08-20 06:47发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
在sap hana 2.0 sp04 XSA中寻找App开发
我的应用程序是使用NodeJS模块上传和下载Excel工作表或导入或导出Excel工作表
通过提供一些用于节点JS模块开发的代码可以提供任何帮助
此致
B N Kartheek
HANA7 openSAP课程有一个示例,其中我们在Node.js中进行Excel下载: https://github.com/SAP-samples/hana-xsa-opensap-hana7/blob/hana2_sps04/srv/router/routes/excel.js
我从我的团队使用的内部工具中获得了另一个示例(因此它不在公开的github存储库中)。 它可以批量导出和导入整个容器。 这只是应用程序执行导出和导入的部分:
/* eslint no-undef:0 */ "使用严格"; module.exports =函数(应用){ /** * @swagger * */srv_api/admin: *得到: *摘要:测试管理员端点 *标签: *-管理员 *回应: *'200': *说明:管理员功能 */ app.get('/admin',函数(req,res){ 如果(req.authInfo!==未定义&& req.authInfo.checkLocalScope(" Admin")){ 返回res.send('管理功能') }其他{ 返回res.type(" text/plain")。status(401).send("错误:未授权。缺少管理范围") } }) /** * @swagger * * 组件: *模式: *表格: *类型:对象 *属性: * TABLE_NAME: *类型:字符串 */ /** * @swagger * */srv_api/admin/tables: *得到: *摘要:获取TeamTask模式中所有表的列表 *标签: *-管理员 *回应: *'200': *说明:所有表的列表 *内容: * application/json: *模式: *类型:数组 *项: * $ ref:'#/components/schemas/Table' *'401': *说明:错误未授权。 缺少管理员范围 *'500': *说明:常规DB错误 */ app.get("/img/admin/tables",异步(req,res)=> { 如果(req.authInfo!==未定义&& req.authInfo.checkLocalScope(" Admin")){ 尝试{ const dbClass = require(global .__ base +" utils/dbPromises") 让dbConn =新的dbClass(req.db) const语句=等待dbConn.preparePromisified( `从M_TABLES中选择SELECT_TABLE_NAME 哪里SCHEMA_NAME = CURRENT_SCHEMA AND RECORD_COUNT> 0` ) const结果=等待dbConn.statementExecPromisified(statement,[]) 返回res.type(" application/json")。status(200).send(JSON.stringify(results)) } catch(err){ 返回res.type(" text/plain")。status(500).send(`ERROR:$ {err.toString()}`) } }其他{ 返回res.type(" text/plain")。status(401).send("错误:未授权。缺少管理范围") } }); /** * @swagger * */srv_api/admin/export: *得到: *摘要:在ZIP文件中将所有表内容导出为JSON *标签: *-管理员 *回应: *'200': *说明:ZIP文件中所有表的内容均为JSON *内容: *应用程序/邮政编码: *模式: *类型:字符串 *格式:二进制 *'401': *说明:错误未授权。 缺少管理员范围 *'500': *说明:常规DB错误 */ app.get("/img/admin/export",异步(要求,要求)=> { 如果(req.authInfo!==未定义&& req.authInfo.checkLocalScope(" Admin")){ 尝试{ const dbClass = require(global .__ base +" utils/dbPromises") 让dbConn =新的dbClass(req.db) const语句=等待dbConn.preparePromisified( `从M_TABLES中选择SELECT_TABLE_NAME 哪里SCHEMA_NAME = CURRENT_SCHEMA AND RECORD_COUNT> 0` ) const结果=等待dbConn.statementExecPromisified(statement,[]) let zip =新的require(" node-zip")(); 为(让结果的结果){ const statementMain =等待dbConn.preparePromisified(`SELECT * FROM $ {result.TABLE_NAME}`) const resultsMain =等待dbConn.statementExecPromisified(statementMain,[]) zip.file(`$ {result.TABLE_NAME} .json`,JSON.stringify(resultsMain)) } 让数据= zip.generate({ base64:否, 压缩:" DEFLATE" }); res.header(" Content-Disposition","附件; filename = TeamTaskExport.zip"); 返回res.type(" application/zip")。status(200).send(Buffer.from(data," binary")); } catch(err){ 返回res.type(" text/plain")。status(500).send(`ERROR:$ {err.toString()}`) } }其他{ 返回res.type(" text/plain")。status(401).send("错误:未授权。缺少管理范围") } }); /** * @swagger * */srv_api/admin/import: *发布: *摘要:在ZIP文件中将所有表内容作为JSON导入 *标签: *-管理员 * requestBody: *说明:上传的zip文件(表以JSON格式) *必填:true *内容: *应用程序/邮政编码: *模式: *类型:字符串 *格式:二进制 *回应: *'201': *说明:所有数据均已成功上传 *'401': *说明:错误未授权。 缺少管理员范围 *'500': *说明:常规DB错误 */ 让bodyParser = require('body-parser') var zipParser = bodyParser.raw({ 类型:" application/zip" }) app.post('/admin/import',zipParser,异步(req,res)=> { 如果(req.authInfo!==未定义&& req.authInfo.checkLocalScope(" Admin")){ 尝试{ let zip = new require('node-zip')(request.body,{ base64:否, checkCRC32:是的 }); const cds = require(" @ sap/cds") const srv =等待cds.connect.to('db') const dbClass = require(global .__ base +" utils/dbPromises") 让dbConn =新的dbClass(req.db) const语句=等待dbConn.preparePromisified( `从M_TABLES中选择SELECT_TABLE_NAME SCHEMA_NAME = CURRENT_SCHEMA` ) const结果=等待dbConn.statementExecPromisified(statement,[]) 为(让结果的结果){ 如果(zip.files [`$ {result.TABLE_NAME} .json`]!==未定义){ 让inputData = JSON.parse(zip.files [`$ {result.TABLE_NAME} .json`] ._ data) const deleteStatement =等待dbConn.preparePromisified(`从$ {result.TABLE_NAME}中删除) 等待dbConn.statementExecPromisified(deleteStatement,[]) 等待srv.run(INSERT.into(result.TABLE_NAME).entries(inputData)) } } res.status(201).end(`所有表已导入`) } catch(err){ 返回res.type(" text/plain")。status(500).send(`ERROR:$ {JSON.stringify(err)}`) } }其他{ 返回res.type(" text/plain")。status(401).send("错误:未授权。缺少管理范围") } }) };
感谢Allot Mr.Thoms Jung
很高兴收到您的来信,我会继续讲这个尾声
最多设置5个标签!
HANA7 openSAP课程有一个示例,其中我们在Node.js中进行Excel下载:
https://github.com/SAP-samples/hana-xsa-opensap-hana7/blob/hana2_sps04/srv/router/routes/excel.js
我从我的团队使用的内部工具中获得了另一个示例(因此它不在公开的github存储库中)。 它可以批量导出和导入整个容器。 这只是应用程序执行导出和导入的部分:
感谢Allot Mr.Thoms Jung
很高兴收到您的来信,我会继续讲这个尾声
此致
B N Kartheek
一周热门 更多>