SAP UI5 Upload/Download file through NetWeaver Gateway
1、创建 SEGW对象

2、创建Entity Type

要把Media 标识打上


3、 激活对象然后到DPC Class的扩展对象里面重定义
/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM
/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM
/IWBEP/IF_MGW_APPL_SRV_RUNTIME~UPDATE_STREAM
METHOD /iwbep/if_mgw_appl_srv_runtime~get_stream.TRY.DATA: ls_stream TYPE ty_s_media_resource,ls_file TYPE zmmp_matl_file,lv_matnr TYPE matnr.READ TABLE it_key_tab ASSIGNING FIELD-SYMBOL(<fs_key>) INDEX 1.DATA: lv_filename TYPE char30.lv_matnr = <fs_key>-value.SELECT SINGLE * FROM zmmp_matl_file INTO ls_file WHERE matnr = lv_matnr .IF ls_file IS NOT INITIAL.ls_stream-value = ls_file-value.ls_stream-mime_type = ls_file-mimetype.copy_data_to_ref( EXPORTING is_data = ls_streamCHANGING cr_data = er_stream ).ENDIF.CATCH /iwbep/cx_mgw_busi_exception.CATCH /iwbep/cx_mgw_tech_exception.ENDTRY.ENDMETHOD.
METHOD /iwbep/if_mgw_appl_srv_runtime~create_stream.TRY.DATA: ls_file TYPE zmmp_matl_file.DATA: lt_hdr_params TYPE tihttpnvp,ls_hdr_params TYPE ihttpnvp.DATA: lo_facade TYPE REF TO /iwbep/if_mgw_dp_int_facade.REFRESH: lt_hdr_params.lo_facade ?= /iwbep/if_mgw_conv_srv_runtime~get_dp_facade( ).lt_hdr_params = lo_facade->get_request_header( ).READ TABLE lt_hdr_params INTO ls_hdr_params WITH KEY name = 'material'. "header messageIF sy-subrc = 0.ls_file-matnr = ls_hdr_params-value.ENDIF.READ TABLE lt_hdr_params INTO ls_hdr_params WITH KEY name = 'zmatserial'. "header messageIF sy-subrc = 0.ls_file-zmat_serial = ls_hdr_params-value.ENDIF.IF ls_file-matnr IS INITIAL OR ls_file-zmat_serial IS INITIAL.ls_file-value = is_media_resource-value.ls_file-mimetype = is_media_resource-mime_type.ls_file-crt_dat = sy-datum.ls_file-crt_tim = sy-uzeit.MODIFY zmmp_matl_file FROM ls_file.copy_data_to_ref(EXPORTINGis_data = ls_fileCHANGINGcr_data = er_entity ).ELSE.DATA ls_msg TYPE scx_t100key.ls_msg-attr1 = '上传失败'.RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exceptionEXPORTINGtextid = ls_msg.ENDIF.CATCH /iwbep/cx_mgw_busi_exception.CATCH /iwbep/cx_mgw_tech_exception.ENDTRY.ENDMETHOD.
METHOD /iwbep/if_mgw_appl_srv_runtime~update_stream.TRY.DATA: ls_file TYPE zmmp_matl_file.DATA: lt_hdr_params TYPE tihttpnvp,ls_hdr_params TYPE ihttpnvp.DATA: lo_facade TYPE REF TO /iwbep/if_mgw_dp_int_facade.REFRESH: lt_hdr_params.lo_facade ?= /iwbep/if_mgw_conv_srv_runtime~get_dp_facade( ).lt_hdr_params = lo_facade->get_request_header( ).READ TABLE it_key_tab ASSIGNING FIELD-SYMBOL(<fs_key>) WITH KEY name = 'Matnr'.IF sy-subrc = 0.ls_file-matnr = <fs_key>-value.ENDIF.READ TABLE it_key_tab ASSIGNING <fs_key> WITH KEY name = 'ZmatSerial'.IF sy-subrc = 0.ls_file-zmat_serial = <fs_key>-value.ENDIF.ls_file-value = is_media_resource-value.ls_file-mimetype = is_media_resource-mime_type.ls_file-crt_dat = sy-datum.ls_file-crt_tim = sy-uzeit.MODIFY zmmp_matl_file FROM ls_file.CATCH /iwbep/cx_mgw_busi_exception.CATCH /iwbep/cx_mgw_tech_exception.ENDTRY.ENDMETHOD.
4、部署ODATA服务
5、测试服务
使用POST则会调用Create_Stream,而使用Update则会使用Update_Stream

注意再使用Create_Stream的时候,可能会报错,
Invalid or no mapping to system data types found
这个需要定义一下MPC_EXT中的DEFINE
METHOD define.super->define( ).DATA: lo_entity TYPE REF TO /iwbep/if_mgw_odata_entity_typ,lo_property TYPE REF TO /iwbep/if_mgw_odata_property.lo_entity = model->get_entity_type( iv_entity_name = 'MaterialFileStru' ).IF lo_entity IS BOUND.lo_property = lo_entity->get_property( iv_property_name = 'Mimetype').lo_property->set_as_content_type( ).ENDIF.ENDMETHOD.
还可以使用Update_Stream

相关文章:
SAP UI5 Upload/Download file through NetWeaver Gateway
1、创建 SEGW对象 2、创建Entity Type 要把Media 标识打上 3、 激活对象然后到DPC Class的扩展对象里面重定义 /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM /IWBEP/IF_MGW_APPL_SRV_RUNTIME~UPDATE_STREAM METHOD /iwbep/if_m…...
opencv校正图像
目录1、前言2、例程2.1、代码2.2、效果口罩说明书网页3、按步骤分析转灰度图降噪 Canny边缘检测膨胀(可视具体情况省略)轮廓检索选取角度1、前言 我们用相机拍照时,会因为角度问题造成拍歪,会影响图像的识别,这时就需…...
JavaScript:函数与箭头函数的区别
ref 1. 定义 函数 function getName() {}箭头函数 const getName () > {}2. 命名 函数分为匿名、具名。 function getName() {} let getName function () {}箭头函数只有匿名。 const getName () > {}3. 构造函数 箭头函数都是匿名函数,所以不能作为构造…...
八股文(四)
目录 一、 Vue2的双向数据绑定原理 二、 vue2数据绑定缺点是什么?vue3是怎么解决的? (1)因为vue2.0 object.defineProperty只能劫持对象属性 (2)Proxy是直接代理对象 (3)proxy不…...
XSS挑战赛(xsslabs)1~10关通关解析
简介 XSS挑战赛,里面包含了各种XSS的防御方式和绕过方式,好好掌握里面的绕过细节,有助于我们更好的去发现XSS漏洞以及XSS的防御。本文更多的是分享解析的细节,不是一个标准的答案,希望大家在渗透的时候有更多的思维。…...
什么是以太网供电POE
POE指的是以太网供电,就是一根网线在传输网络的同时还传输设备所需的电源。我们最常见的就是通过POE交换机连接网络摄像头,网络摄像头无需的电源适配器,仅靠一根网线就能实现电源和网络的传输。POE供电一般可以到100米。POE包含两个部分&…...
【JUC2022】第七章 AQS、ReentrantReadWriteLock 和 StampedLock
【JUC2022】第七章 AQS 文章目录【JUC2022】第七章 AQS一、AQS1.概述2.同步器3.抽象的4.队列式二、ReentrantReadWriteLock1.概述2.案例3.存在的问题三、StampedLock1.概述2.案例3.存在的问题一、AQS 1.概述 AQS(AbstractQueueSynchronizer,抽象的队列式同步器)&am…...
Spark 磁盘作用
Spark 磁盘作用磁盘作用性能价值失败重试ReuseExchangeSpark 导航 磁盘作用 临时文件、中间文件、缓存数据,都会存储到 spark.local.dir 中 在 Shuffle Map 时, 当内存空间不足,就会溢出临时文件存储到磁盘上溢出的临时文件一起做归并计算…...
三、Spark 内存管理
文章目录Spark 内存管理堆内和堆外内存堆内内存堆外内存堆外与堆内的平衡内存空间分配静态内存管理(早期版本)统一内存管理Spark 内存管理 堆内和堆外内存 Spark 引入了堆外(Off-heap)内存,使之可以直接在工作节点的…...
Java 面试常见项目问题回答
之前整理了好几期,我面试时遇到的面试候选人,我是如何我去筛选的,这一期,我们来看下一些 面试常问的业务性的问题 你们公司权限认证是如何实现的? 这其实是个通用性的问题,大部分公司 小型公司,或者中型公…...
文件上传和下载(原生JS + SpringBoot实现)
目录 概述 前端编写-上传表单和图片回显 HTML表单代码 发送请求逻辑 CSS代码 后端编写-文件上传接口 后端编写-文件下载接口 概述 在现代Web应用程序中,文件上传和下载是常见的功能。本博客将介绍如何使用原生JS和Spring Boot实现文件上传和下载的功能。 在其…...
【C语言学习笔记】:安全性
用const修饰变量或方法,从而告诉编译器这些都是不可变的,有助于编译器优化代码,并帮助开发人员了解函数是否有副作用。此外,使用const &可以防止编译器复制不必要的数据。John Carmack对const的评论[2]值得一读。 // Bad Ide…...
Linux - 磁盘存储管理 磁盘引入
# 我们要介绍下 磁盘管理, 那不妨先来看一张图来简单 引入 :这张图呢,是我们 Windows 上的磁盘管理的显示 。根据这幅图呢,提出一个问题 :>>> 这幅图磁盘管理所显示的内容,你能判断出 该电脑 有几…...
分割std::string成多个string
文章目录问题描述前置知识解决代码问题描述 假设我们有一个http服务器,此服务器接收客户端发来的http请求,假设请求如下 GET / HTTP/1.1我们怎么将这个Http请求分割成三份,分别存入不同的string中分别处理? 前置知识 首先std::string的本…...
3月多国更新进出口产品规定
【3月多国更新进出口产品规定】2023年3月多项外贸新规实施,涉及欧盟,伊拉克,泰国,孟加拉国,埃及等多国进出口产品限制及海关税则。1. 3月1日起给予埃塞俄比亚等三国98%税目产品零关税待遇中国国务院关税税则委员会17日…...
nacos相关面试题
Nacos是阿里巴巴开源的一款注册中心和配置中心,它能够实现服务的注册、发现和配置管理等功能。Nacos的实现原理主要分为以下几个部分:注册中心:Nacos作为注册中心,通过提供RESTful API的方式对外提供注册和发现服务。它使用基于Ra…...
Linux基础命令-groupmems管理组群的成员
Linux-usermod修改用户 Linux-useradd创建用户 Linux-userdel删除用户 Linux基础命令-chown修改文件属主 Linux基础命令-chmod修改文件权限 groupmems 命令介绍 先来看看这个命令的帮助信息是什么概念 NAME groupmems - administer members of a user’s primary group group…...
css系统化学习
元素的语义化 SEO:搜索引擎优化 根据搜索引擎展示的规律,语义化的元素更容易被展示获得更多浏览量 字符编码 css历史 内联样式(inline) style"内容全写在等号后面,双引号里面,多个之间用;隔开" 内部样式(internal) style写在head里面,在title下面,不是在body内, …...
AI的简单介绍
什么是AI? AI 是 Artificial Intelligent 的缩写,是我们通常意义上说的人工智能。 简单来说就是让机器能够模拟人类的思维能力,让它能够像人一样感知、思考甚至决策。 为什么要开发AI? 因为在过去,都是我们学习机器…...
【Linux】-- 进程间通讯
目录 进程间通讯概念的引入 意义(手段) 思维构建 进程间通信方式 管道 站在用户角度-浅度理解管道 匿名管道 pipe函数 站在文件描述符角度-深度理解管道 管道的特点总结 管道的拓展 单机版的负载均衡 匿名管道读写规则 命名管道 前言 原理…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
