如何将S/4HANA系统存储的图片文件用Java程序保存到本地
生活随笔
收集整理的這篇文章主要介紹了
如何将S/4HANA系统存储的图片文件用Java程序保存到本地
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我在S/4HANA的事務(wù)碼MM02里為Material維護(hù)圖片文件作為附件:
通過(guò)如下簡(jiǎn)單的ABAP代碼即可將圖片文件的二進(jìn)制內(nèi)容讀取出來(lái):
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'EXPORTINGinput = lv_idIMPORTINGoutput = 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(<id>).ls_key-atta_id = <id>-atta_id.ls_key-atta_cat = <id>-atta_cat.DATA(ls) = lo_gos_api->get_al_item( ls_key ).BREAK-POINT.ENDLOOP.然后我把這段代碼封裝到一個(gè)Function moduleZDIS_GET_MATERIAL_IMAGES里,在Java代碼里消費(fèi)這個(gè)function module,把S/4HANA返回的二進(jìn)制內(nèi)容存成本地圖片文件。在ABAP系統(tǒng)里圖片二進(jìn)制文件內(nèi)容的類型為RAWSTRING,如何在Java里使用它?
使用JCO在Java里消費(fèi)ABAP function module的代碼:
其中把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();}}執(zhí)行Java代碼后,在本地C盤temp目錄下能夠看到S/4HANA里Material ID為16的兩個(gè)附件圖片:
要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙"或者掃描下面二維碼:
總結(jié)
以上是生活随笔為你收集整理的如何将S/4HANA系统存储的图片文件用Java程序保存到本地的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 友商芯片恢复供应 5G大厂中兴回应:竞争
- 下一篇: 税收具有哪三个特征