当前位置: 首页 > news >正文

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边缘检测膨胀&#xff08;可视具体情况省略&#xff09;轮廓检索选取角度1、前言 我们用相机拍照时&#xff0c;会因为角度问题造成拍歪&#xff0c;会影响图像的识别&#xff0c;这时就需…...

JavaScript:函数与箭头函数的区别

ref 1. 定义 函数 function getName() {}箭头函数 const getName () > {}2. 命名 函数分为匿名、具名。 function getName() {} let getName function () {}箭头函数只有匿名。 const getName () > {}3. 构造函数 箭头函数都是匿名函数&#xff0c;所以不能作为构造…...

八股文(四)

目录 一、 Vue2的双向数据绑定原理 二、 vue2数据绑定缺点是什么&#xff1f;vue3是怎么解决的&#xff1f; &#xff08;1&#xff09;因为vue2.0 object.defineProperty只能劫持对象属性 &#xff08;2&#xff09;Proxy是直接代理对象 &#xff08;3&#xff09;proxy不…...

XSS挑战赛(xsslabs)1~10关通关解析

简介 XSS挑战赛&#xff0c;里面包含了各种XSS的防御方式和绕过方式&#xff0c;好好掌握里面的绕过细节&#xff0c;有助于我们更好的去发现XSS漏洞以及XSS的防御。本文更多的是分享解析的细节&#xff0c;不是一个标准的答案&#xff0c;希望大家在渗透的时候有更多的思维。…...

什么是以太网供电POE

POE指的是以太网供电&#xff0c;就是一根网线在传输网络的同时还传输设备所需的电源。我们最常见的就是通过POE交换机连接网络摄像头&#xff0c;网络摄像头无需的电源适配器&#xff0c;仅靠一根网线就能实现电源和网络的传输。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&#xff0c;抽象的队列式同步器)&am…...

Spark 磁盘作用

Spark 磁盘作用磁盘作用性能价值失败重试ReuseExchangeSpark 导航 磁盘作用 临时文件、中间文件、缓存数据&#xff0c;都会存储到 spark.local.dir 中 在 Shuffle Map 时&#xff0c; 当内存空间不足&#xff0c;就会溢出临时文件存储到磁盘上溢出的临时文件一起做归并计算…...

三、Spark 内存管理

文章目录Spark 内存管理堆内和堆外内存堆内内存堆外内存堆外与堆内的平衡内存空间分配静态内存管理&#xff08;早期版本&#xff09;统一内存管理Spark 内存管理 堆内和堆外内存 Spark 引入了堆外&#xff08;Off-heap&#xff09;内存&#xff0c;使之可以直接在工作节点的…...

Java 面试常见项目问题回答

之前整理了好几期&#xff0c;我面试时遇到的面试候选人&#xff0c;我是如何我去筛选的&#xff0c;这一期&#xff0c;我们来看下一些 面试常问的业务性的问题 你们公司权限认证是如何实现的? 这其实是个通用性的问题&#xff0c;大部分公司 小型公司&#xff0c;或者中型公…...

文件上传和下载(原生JS + SpringBoot实现)

目录 概述 前端编写-上传表单和图片回显 HTML表单代码 发送请求逻辑 CSS代码 后端编写-文件上传接口 后端编写-文件下载接口 概述 在现代Web应用程序中&#xff0c;文件上传和下载是常见的功能。本博客将介绍如何使用原生JS和Spring Boot实现文件上传和下载的功能。 在其…...

【C语言学习笔记】:安全性

用const修饰变量或方法&#xff0c;从而告诉编译器这些都是不可变的&#xff0c;有助于编译器优化代码&#xff0c;并帮助开发人员了解函数是否有副作用。此外&#xff0c;使用const &可以防止编译器复制不必要的数据。John Carmack对const的评论[2]值得一读。 // Bad Ide…...

Linux - 磁盘存储管理 磁盘引入

# 我们要介绍下 磁盘管理&#xff0c; 那不妨先来看一张图来简单 引入 &#xff1a;这张图呢&#xff0c;是我们 Windows 上的磁盘管理的显示 。根据这幅图呢&#xff0c;提出一个问题 &#xff1a;>>> 这幅图磁盘管理所显示的内容&#xff0c;你能判断出 该电脑 有几…...

分割std::string成多个string

文章目录问题描述前置知识解决代码问题描述 假设我们有一个http服务器&#xff0c;此服务器接收客户端发来的http请求&#xff0c;假设请求如下 GET / HTTP/1.1我们怎么将这个Http请求分割成三份&#xff0c;分别存入不同的string中分别处理? 前置知识 首先std::string的本…...

3月多国更新进出口产品规定

【3月多国更新进出口产品规定】2023年3月多项外贸新规实施&#xff0c;涉及欧盟&#xff0c;伊拉克&#xff0c;泰国&#xff0c;孟加拉国&#xff0c;埃及等多国进出口产品限制及海关税则。1. 3月1日起给予埃塞俄比亚等三国98%税目产品零关税待遇中国国务院关税税则委员会17日…...

nacos相关面试题

Nacos是阿里巴巴开源的一款注册中心和配置中心&#xff0c;它能够实现服务的注册、发现和配置管理等功能。Nacos的实现原理主要分为以下几个部分&#xff1a;注册中心&#xff1a;Nacos作为注册中心&#xff0c;通过提供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&#xff1f; AI 是 Artificial Intelligent 的缩写&#xff0c;是我们通常意义上说的人工智能。 简单来说就是让机器能够模拟人类的思维能力&#xff0c;让它能够像人一样感知、思考甚至决策。 为什么要开发AI&#xff1f; 因为在过去&#xff0c;都是我们学习机器…...

【Linux】-- 进程间通讯

目录 进程间通讯概念的引入 意义&#xff08;手段&#xff09; 思维构建 进程间通信方式 管道 站在用户角度-浅度理解管道 匿名管道 pipe函数 站在文件描述符角度-深度理解管道 管道的特点总结 管道的拓展 单机版的负载均衡 匿名管道读写规则 命名管道 前言 原理…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...