如何将S/4HANA系统存储的图片文件用Java程序保存到本地
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关如何将S/4HANA系统存储的图片文件用Java程序保存到本地,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我在S/4HANA的事
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
高科技互联网
工业互联网科技新基建
华宇互联网科技
互联网 卓越科技
唐信互联网科技
科技互联网创业计划书
互联网科技公司介绍
海南购全球互联网科技
成都玖崟互联网科技有限公司乐商圈怎么样
互联网科技公司需要的职位
互联网科技实习生岗位职责
互联网大会黑科技排名
科技类公司包括互联网吗
互联网公司黑科技创始人
佛山市拉法互联网科技有限公司
滨湖区互联网智能科技产品有哪些
昆明中奇联合互联网科技
求路客互联网科技电话
互联网领先科技成果宣传视频
互联网大会出现的黑科技
湖北九亚互联网络科技有限公司
重庆互联网络科技
成都互联网科技公司
深圳天众互联网科技公司
四个字互联网科技公司取名
科技与互联网哪个更好
互联网科技人工智能实验室
广州新华互联网科技学校电竞方面
深圳无忧互联网科技
互联网科技大会大佬