SAP UI5 Upload/Download file through NetWeaver Gateway

news2025/1/12 10:51:53

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_stream

                              CHANGING  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 message
        IF 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 message
        IF 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(
             EXPORTING
               is_data =  ls_file
             CHANGING
                cr_data = er_entity ).

        ELSE.
          DATA ls_msg TYPE scx_t100key.
          ls_msg-attr1 =  '上传失败'.
          RAISE EXCEPTION TYPE /iwbep/cx_mgw_tech_exception
            EXPORTING
              textid = 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.coloradmin.cn/o/391866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手写操作系统+文件系统开源啦

哈喽&#xff0c;我是子牙&#xff0c;一个很卷的硬核男人。喜欢研究底层&#xff0c;聚焦做那些大家想学没地方学的课程&#xff1a;手写操作系统、手写虚拟机、手写模拟器、手写编程语言… 今年是我创业的第二年&#xff0c;已经做了两个课程&#xff1a;手写JVM、手写操作系…

十五、Spring中的八大模式

1 简单工厂模式 BeanFactory的getBean()方法&#xff0c;通过唯一标识来获取Bean对象。是典型的简单工厂模式&#xff08;静态工厂模式&#xff09;&#xff1b; 2 工厂方法模式 FactoryBean是典型的工厂方法模式。在配置文件中通过factory-method属性来指定工厂方法&#x…

多线程的创建、Thread类、线程安全、同步、通信

目录 多线程的创建 方式一&#xff1a;继承Thread类 方式二&#xff1a;实现Runnable接口 方式三&#xff1a;JDK 5.0新增&#xff1a;实现Callable接口 Thread的常用方法 线程安全 线程安全问题是什么、发生的原因 线程安全问题案例模拟 线程同步 同步思想概述 方式…

0202state详解-组件-React

文章目录1 state简介2 初始化state3 React中事件绑定4 类方法中this指向问题5 解决React类组件方法this指向5 setState5.1 更新state状态数据方式5.2 更新state整体替换还是合并相同项&#xff1f;5.3 关于构造器、render方法调用次数6 state简写7 问题解答后记1 state简介 Re…

在NVIDIA JetBot Nano小车上更新WIFI驱动

前言:树莓派上的WIFI驱动类型比较多&#xff0c;经常有更好驱动的需求本文给出RealTek的无线WIFI模组&#xff0c;8821CU的驱动更新办法步骤第一 通过其他方式连接网络小车通过网线或者老的WIFI连接到网络上第二 构建驱动模块并下载驱动首先&#xff0c;我们需要打开一个ubuntu…

【深度学习】BERT变体—RoBERTa

RoBERTa是的BERT的常用变体&#xff0c;出自Facebook的RoBERTa: A Robustly Optimized BERT Pretraining Approach。来自Facebook的作者根据BERT训练不足的缺点提出了更有效的预训练方法&#xff0c;并发布了具有更强鲁棒性的BERT&#xff1a;RoBERTa。 RoBERTa通过以下四个方面…

【JavaEE】基于mysql与servlet自制简易的表白墙程序

文章目录1 表白墙页面构建2 Servlet 回顾3 表白墙后端程序实现3.1 我们需要做什么&#xff1f;3.2 实现细节4 实现结果写在最后1 表白墙页面构建 该页面由标题、文本、三个 input 输入框与一个提交按钮构成&#xff0c;整体比较简单&#xff0c;相关样式文件和页面代码会在后面…

【16】linux命令每日分享——tail命令查看文件

大家好&#xff0c;这里是sdust-vrlab&#xff0c;Linux是一种免费使用和自由传播的类UNIX操作系统&#xff0c;Linux的基本思想有两点&#xff1a;一切都是文件&#xff1b;每个文件都有确定的用途&#xff1b;linux涉及到IT行业的方方面面&#xff0c;在我们日常的学习中&…

分布式中雪花算法

背景需要选择合适的方案去应对数据规模的增长&#xff0c;以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括&#xff1a;业务分库、主从复制&#xff0c;数据库分表。 2.数据库分表概念&#xff1a;将不同业务数据分散存储到不同的数据库服务器&#xff0c;能够支…

网络参考模型

OSI参考模型 应用层 不服务于任何其他层&#xff0c;就是位APP提供相应的服务&#xff0c;不如HTTP、域名解析DNS提供服务表示层 1.使得应用数据能够被不同的系统&#xff08;Windows\Linux&#xff09;进行识别和理解 2.数据的解码和编码、数据的加密与解密、数据的压缩和解…

简单易懂值得收藏的Spring源码解析,依赖注入和bean的初始化

简单易懂值得收藏的Spring源码解析&#xff0c;依赖注入和bean的初始化原理解析依赖注入PropertyValues、PropertyValue、PropertyAccessorbyNamebyTypeAutowiredbean的初始化源码走读依赖注入populateBean方法autowireByNameautowireByType方法AutowiredAnnotationBeanPostPro…

广义状态平均法功率变换器建模分析

两种状态平均法在功率变换器建模的应用比较 [!info] Bibliography [1] 高朝晖, 林辉张晓斌 & 吴小华, “两种状态平均法在功率变换器建模的应用比较,” 计算机仿真, no. 241-244248, 2008. [!note] 状态空间平均法采用直流量近似&#xff08;线性系统模型&#xff09;&…

通达信指标公式颜色代码的四种写法(COLOR/RGB)

通达信指标公式颜色代码有四种写法&#xff0c;分别为COLOR颜色的英文、COLOR十六进制、RGBX十六进制、RGB(R,G,B)。标题有点尴尬&#xff0c;让我想到孔乙己“茴”字的四种写法&#xff0c;哈哈。 一、COLOR颜色的英文 “COLOR颜色的英文”这种写法比较简单&#xff0c;函数库…

【C++】bsearch函数的使用及二分法查找介绍

写程序的时候&#xff0c;肯定避免不了需要从集合中找到符合条件的元素&#xff0c;一般情况下&#xff0c;最简单也最常用的就是循环遍历元素&#xff0c;这种方法虽然写的简单&#xff0c;但是小数据量还行&#xff0c;但是数据过大的话&#xff0c;这样效率就低了。循环的时…

浅谈游戏中运用到的人工智能

电子游戏中的人工智能意味着电子游戏中角色的创造性行为就像人类游戏玩家正在控制他们一样。它提供了自适应和响应式的视频游戏体验。1949年初&#xff0c;密码学家克劳德香农发现了游戏中的人工智能&#xff0c;从而联想到了电脑上的单人国际象棋游戏。对于人工智能的发展&…

Android的基础介绍

一、Android介绍 Android是一种基于Linux的自由及开放源代码的操作系统,Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。 Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序——…

力扣-可回收且低脂的产品

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道超级超级超级简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1757. 可回收且低脂的产品二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交S…

iview tree树形菜单实践之数据回显与选中

iview tree树形菜单在使用过程中&#xff0c;多多少少有一些小坑&#xff0c;本文简单罗列几个&#xff1a; 避坑指南&#xff1a; 关于iview tree树形菜单在使用过程中存在父级菜单的数据传输和回显问题 简单就是两个方面&#xff1a;勾选后数据传输和回显问题。 一&#xff…

mac 环境下安装MongoDB

目录 一、下载MongoDB数据库并进行安装 二. 解压放在/usr/local目录下 三. 配置环境变量 “无法验证开发者”的解决方法 mongodb可视化工具的安装与使用 一、下载MongoDB数据库并进行安装 下载地址&#xff1a;https://www.mongodb.com/try/download/community 二. 解压…

大数据项目实战之数据仓库:用户行为采集平台——第2章 项目需求及架构设计

第2章 项目需求及架构设计 2.1 项目需求分析 1&#xff09;采集平台 &#xff08;1&#xff09;用户行为数据采集平台搭建 &#xff08;2&#xff09;业务数据采集平台搭建 2&#xff09;离线需求 3&#xff09;实时需求 4&#xff09;思考题 1、项目技术如何选型&…