如何将S/4HANA系统存储的图片文件用Java程序保存到本地
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关如何将S/4HANA系统存储的图片文件用Java程序保存到本地,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我在S/4HANA的事
千家信息网最后更新 2025年12月02日如何将S/4HANA系统存储的图片文件用Java程序保存到本地
这期内容当中小编将会给大家带来有关如何将S/4HANA系统存储的图片文件用Java程序保存到本地,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
我在S/4HANA的事务码MM02里为Material维护图片文件作为附件:
通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来:
REPORT zgos_api.DATA ls_appl_object TYPE gos_s_obj.DATA lo_gos_api TYPE REF TO cl_gos_api.DATA lt_attachment_list TYPE gos_t_atta.DATA lt_role_filter TYPE gos_t_rol.DATA: lv_id TYPE matnr VALUE '16', lt_att TYPE TABLE OF sibflporb.CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' EXPORTING input = lv_id IMPORTING output = lv_id. ls_appl_object-typeid = 'BUS1001006'. ls_appl_object-instid = lv_id. ls_appl_object-catid = 'BO'. START-OF-SELECTION. TRY. lo_gos_api = cl_gos_api=>create_instance( ls_appl_object ). APPEND cl_gos_api=>c_attachment TO lt_role_filter. lt_attachment_list = lo_gos_api->get_atta_list( lt_role_filter ). CATCH cx_gos_api INTO DATA(error). WRITE:/ error->get_text( ). RETURN. ENDTRY. DATA: ls_key TYPE gos_s_attkey, lv_base64 type string. LOOP AT lt_attachment_list ASSIGNING FIELD-SYMBOL(). ls_key-atta_id = -atta_id. ls_key-atta_cat = -atta_cat. DATA(ls) = lo_gos_api->get_al_item( ls_key ). BREAK-POINT. ENDLOOP.
然后我把这段代码封装到一个Function moduleZDIS_GET_MATERIAL_IMAGES里,在Java代码里消费这个function module,把S/4HANA返回的二进制内容存成本地图片文件。在ABAP系统里图片二进制文件内容的类型为RAWSTRING,如何在Java里使用它?
使用JCO在Java里消费ABAP function module的代码:
static private void getProductImageTest(){ JCoDestination destination = null; try { destination = JCoDestinationManager.getDestination(DESTINATION_NAME); JCoRepository repo = destination.getRepository(); JCoFunction stfcConnection = repo.getFunction("ZDIS_GET_MATERIAL_IMAGES"); JCoParameterList imports = stfcConnection.getImportParameterList(); String materialID = "16"; imports.setValue("IV_MATERIAL_ID", materialID); stfcConnection.execute(destination); JCoParameterList exports = stfcConnection.getExportParameterList(); int abapDuration = exports.getInt("EV_DURATION"); StringBuilder sb = new StringBuilder(); sb.append("{ \"" + ABAP_DURATION + "\": " + abapDuration + ","); sb.append("\"" + UPSELL_PRODUCT + "\":["); JCoTable codes = exports.getTable("ET_IMAGES"); int row = codes.getNumRows(); System.out.println("Total rows: " + row); System.out.println("ABAP duration: " + abapDuration); for( int i = 0; i < row; i++){ codes.setRow(i); sb.append("{\"" + FILE_ID + "\":" + codes.getString("FILEID") + "," + "\"" + FILE_OWNER + "\":\"" + codes.getString("OWNER") + "\"" + ","); sb.append("{\"" + FILE_CDATE + "\":" + codes.getString("CREATION_DATE") + "," + "\"" + FILE_NAME + "\":\"" + codes.getString("FILENAME") + "\""); storeLocalFile(codes); if( i < row - 1){ sb.append("},"); } else{ sb.append("}"); } } sb.append("]}"); System.out.println("Final json: " + sb.toString()); } catch (JCoException e) { // TODO Auto-generated catch block e.printStackTrace(); } }其中把ABAP的类型为RAWSTRING的字段保存成本地文件的代码封装于方法storeLocalFile里:
static private void storeLocalFile(JCoTable codes){ InputStream is = codes.getBinaryStream("FILECONTENT"); try { File file = new File("c:\\temp\\" + codes.getString("FILENAME")); byte[] bytes = new byte[is.available()]; is.read(bytes); OutputStream output = new FileOutputStream(file); BufferedOutputStream bufferedOutput = new BufferedOutputStream(output); bufferedOutput.write(bytes); bufferedOutput.close(); is.close(); } catch (IOException e) { e.printStackTrace(); } }执行Java代码后,在本地C盘temp目录下能够看到S/4HANA里Material ID为16的两个附件图片:
上述就是小编为大家分享的如何将S/4HANA系统存储的图片文件用Java程序保存到本地了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
图片
文件
代码
内容
系统
二进制
程序
存储
类型
附件
分析
封装
消费
专业
两个
中小
事务
内容丰富
字段
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无线城域网络技术特点
北京党建设计软件开发系统
金立手机安全更新服务器
上海微型网络技术哪家好
加密服务器设置
网络安全手抄小报五十字
云上贵州服务器
两大新兴网络技术领域是什么
python3数据库比较
无锡智慧工厂软件开发
怎么把数据库弄成脚本文件
phpmysql数据库教程
服务器跑着跑着就黑屏了
移动通信网络技术有限公司
黑龙江企业党建软件开发哪儿好
义县软件开发项目管理在线咨询
网络技术中专实训考核
上海互联网络技术咨询公司
数字时代网络技术公司
数据库emp表格
上海医工院数据库电话
中原电子软件开发
我的世界仿真服务器下载
香港恒生互联网科技指数简介
服务器身份
德勤 网络安全法
营口市网络安全和信息化委员会
全民英雄数据库
国家官方网络安全手册
鲨鱼汇 刘梦星 软件开发