SAP UI5 Upload/Download file through NetWeaver Gateway

news/2024/5/3 16:22:33/文章来源:https://blog.csdn.net/weixin_42646630/article/details/129315074

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_78046.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1497. 树的遍历

文章目录1.二叉树的遍历2.二叉树的构造3.例题二叉树的构造&#xff1a;没有中序遍历则无法唯一构造1.二叉树的遍历 2.二叉树的构造 3.例题 一个二叉树&#xff0c;树中每个节点的权值互不相同。 现在给出它的后序遍历和中序遍历&#xff0c;请你输出它的层序遍历。 输入格式…

5.深入理解HttpSecurity的设计

深入理解HttpSecurity的设计 一、HttpSecurity的应用 在前章节的介绍中我们讲解了基于配置文件的使用方式&#xff0c;也就是如下的使用。 也就是在配置文件中通过 security:http 等标签来定义了认证需要的相关信息&#xff0c;但是在SpringBoot项目中&#xff0c;我们慢慢脱离…

ubuntu20修改网卡静态ip或者动态ip

1、查看所有网卡信息 ifconfig -a 2、修改信息 sudo gedit /etc/netplan/01-network-manager-all.yaml # Let NetworkManager manage all devices on this system network:ethernets:ens33: #配置的网卡的名称dhcp4: trueens38:dhcp4: trueversion: 2renderer: networkd…

用Python按时间分割txt文件中的数据

案例 有一个监测系统,每隔两分钟就会记录一下监测结果,如下图所示:现在要求按小时将数据提取,并存为新的txt文件,也就是1天会对应有24个txt文件。先整理一下思路: 读取数据将每行数据的时间戳转换成“日期-小时”格式,并按此分类数据,存入字典 按“日期-小时”分断,将…

没有钱怎么创业?一分钱没有如何能创业成功?

限制人创业成功的从来都不是资金&#xff0c;而是能力&#xff0c;这个道理很多人都可能不懂&#xff0c;多数人习惯了庸庸碌碌、日复一日地打工行为&#xff0c;却不知如何创业&#xff0c;那么&#xff0c;没有钱怎么创业&#xff1f;一分钱没有如何能创业成功呢&#xff1f;…

【虹科案例】虹科任意波形发生器在量子计算中的应用

虹科AWG在量子计算中的应用精度在研究中始终很重要&#xff0c;很少有研究领域需要比量子研究更高的精度。奥地利因斯布鲁克大学的量子光学和量子信息研究所需要一个任意波形发生器&#xff08;AWG&#xff09;来为他们的研究生成各种各样的信号。01无线电频率第一个应用是在射…

python线上商城网站项目前台和后台源码

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python51 获取完整源码源文件说明文档配置教程等 1、网站前台 在虚拟环境中启动程序后&#xff0c;使用浏览器访问“http://127.0.0.1:5000”即可进入网站前台首页。如图1所示。 单击首页左上角“注册”按钮&#xff0c;进…

【MySQL】第17章_触发器

第17章_触发器 在实际开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;有 2 个或者多个相互关联的表&#xff0c;如商品信息和库存信息分别存放在 2 个不同的数据表中&#xff0c;我们在添加一条新商品记录的时候&#xff0c;为了保证数据的完整性&#xff0c;必须同时…

正版Scrivener 3 论文/小说写作工具神器软件

一款非常优秀的写作软件&#xff0c;提供了各种写作辅助功能&#xff0c;如标注多个文档、概述介绍、全屏幕编辑、快照等&#xff0c;能够轻松、便捷的辅助作者从作品构思、搜集资料、组织结构、增删修改到排版输出的整个写作流程。 作为一个专业的写作软件&#xff0c;Scriven…

给文档添加签名,介绍用iPhone的实例

环境&#xff1a;iOS 16 实现电子文档上的签名不是什么新鲜事&#xff0c;也不需要高级的技术&#xff0c;原理基本一致&#xff0c;就是菜单路径有所不同&#xff0c;故在此记录一下&#xff0c;不然容易忘记。 这里介绍的解决方法&#xff1a; 需要一个签名&#xff0c;背…

面向对象设计模式:行为型模式之迭代器模式

一、迭代器模式&#xff0c;Iterator Pattern aka&#xff1a;Cursor Pattern 1.1 Intent 意图 Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. 提供一种按顺序访问聚合对象的元素而不公开其基…

XShell连接ubuntu20.04.LTS

1 下载XshellXShell官方下载地址打开XSHELL官方下载地址&#xff0c;我们可以选择【家庭和学校用户的免费许可证】&#xff0c;输入邮箱之后即可获得下载链接安装非常简单&#xff0c;跟着提示进行即可。2 连接ubuntu2.1 查看ubuntu的ip地址输入命令查看ip地址ifconfig刚开始可…

C++ | 你真的了解namespace吗?

文章目录一、前言二、命名冲突三、命名空间1、域作用限定符2、命名空间的概念&#x1f449;示例1&#x1f449;示例23、命名空间的定义4、命名空间的使用① 指定命名空间访问【做项目】② 使用using部分展开【做项目】③ 使用using namespace全局展开【日常练习】5、小结解答&a…

通用业务平台设计(五):预警平台建设

前言 在上家公司&#xff0c;随着业务的不断拓展(从支持单个国家单个主体演变成支持多个国家多个主体)&#xff0c;对预警的诉求越来越紧迫&#xff1b;如何保障业务的稳定性那&#xff1f;预警可以帮我们提前甄别风险&#xff0c;从而让我们可以在风险来临前将其消灭&#xff…

3DEXPERIENCE Works 成为了中科赛凌实现科技克隆环境的催化剂

您的企业是否想过实现设计数据的统筹管理&#xff0c;在设计上实现标准化&#xff0c;并把每位设计工程师串联起来协同办公?中科赛凌通过使用3DEXPERIENCE Works 实现了上述内容&#xff0c;一起来看本期案例分享吧!中科赛凌 通过其自主研发的单压缩机制冷技术实现零下190℃制…

【Linux】Linux项目自动化构建工具make makefile

文章目录1. 背景2.实例3.原理4.项目清理5. 文件属性中的三个时间6. Linux下第一个小程序——进度条6.1 前置知识1&#xff1a;缓冲区6.2前置知识2&#xff1a;回车换行6.3进度条的实现7 Linux下git的”三板斧“1. 背景 一个工程中的源文件不计其数&#xff0c;其按类型、功能、…

网络通信快速入门

&#x1f3e1;个人主页 &#xff1a; 守夜人st &#x1f680;系列专栏&#xff1a;Java …持续更新中敬请关注… &#x1f649;博主简介&#xff1a;软件工程专业&#xff0c;在校学生&#xff0c;写博客是为了总结回顾一些所学知识点 目录网络编程实现网络编程的三要素&#x…

「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

C++基础(二)—— 类和对象(类的封装)、对象的构造和析构(浅拷贝、深拷贝、explicit、动态分配内存)

【上一篇】C基础&#xff08;一&#xff09;—— C概述、C对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)1. 类和对象的基本概念1.1 C和C中struct区别c语言struct只有变量c语言struct 既有变量&#xff0c;也有函数1.2 类的封装我们编写…

移动web(三)

her~~llo&#xff0c;我是你们的好朋友Lyle&#xff0c;是名梦想成为计算机大佬的男人&#xff01; 博客是为了记录自我的学习历程&#xff0c;加强记忆方便复习&#xff0c;如有不足之处还望多多包涵&#xff01;非常欢迎大家的批评指正。 媒体查询 目标&#xff1a;能够根据…