1. 程式人生 > >程式中下載採購申請的附件

程式中下載採購申請的附件

一、可以對採購申請掛載附件,通過兩種方式:
1、使用GOS,直接掛附件,GOS這個名詞比較唬人,其實就是在PR介面上使用image建立附件,註釋等.這樣掛載的附件只能掛到某個PR上,不能對行專案掛附件。

2、使用DMS,可以細到對行專案掛附件。(沒用過,目前沒空研究)

二、使用第一個方式管理附件的話,有的報表程式可能需要下載PR對應的附件到前臺目錄(前臺指定目錄和檔名),或者下載到某個local PC目錄,或者寫檔案到application server路徑下。
首先要知道的是這種方式下相關的透明表:
SRGBTBREL 文件連結,欄位INSTID_A、INSTID_B
SOOD SAPoffice: 物件定義,欄位OBJTP 文件類別程式碼, OBJYR 物件: 來自 ID 的年份, OBJNO 物件: 來自 ID 的號碼, OBJDES 內容的簡短描述, FILE EXT PC 應用程式的副檔名。

1、如果程式中需要在前臺儲存附件,可以使用class:

CL_GOS_DOCUMENT_SERVICE,

method:EXPORT_ATTACHMENT

2、下載到某個local PC目錄
使用FM:GUI_DOWNLOAD,如果是純文字的檔案,可以使用BAPI_REL_GETRELATIONS獲得物件連結,然後SO_OBJECT_READ獲得文字物件的內容。如果是二進位制檔案,如圖片,doc檔案,pdf檔案等,則處理較為複雜,需要BAPI_REL_GETRELATIONS,SO_OBJECT_READ,SO_KPRO_DATA_FROM_OBJCONT_GET,SO_LOIO_PHIO_GET,SDOK_PHIO_LOAD_CONTENT,SCMS_BINARY_TO_XSTRING幾個FM。

3、寫檔案到application server路徑,如寫到/usr/ttt/目錄下以供他用
如2中獲得物件內表,然後使用open dataset方式寫檔案,以下例子:

FORM frm_download_atta  USING    p_it_zmmjy_th_pr STRUCTURE zmmjy_th_pr
                                                p_g_path  ”路徑/usr/ttt/
                                    CHANGING p_flag    ”PR是否有附件
                                                   p_ftype .
DATA: l_objectid TYPE bapiborid,
        lt_relat TYPE TABLE OF bapirellk WITH HEADER LINE,
        l_objdisp TYPE sood2,
        lt_objcont TYPE TABLE OF soli,
        lt_context LIKE sdokpropty OCCURS 0 WITH HEADER LINE,
        loio_object LIKE sdokobject,
        phio_object LIKE sdokobject,
        lt_binary_content TYPE TABLE OF sdokcntbin,
        xfile TYPE xstring,
        xfilename TYPE string.
DATA: xlen TYPE i.
DATA t_banfn LIKE eban-banfn.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input  = p_it_zmmjy_th_pr-banfn
IMPORTING
output = t_banfn.
  l_objectid-objkey = t_banfn.
  l_objectid-objtype = 'BUS2105'.
  p_flag = 'X'.
CALL FUNCTION 'BAPI_REL_GETRELATIONS'
EXPORTING
      objectid        = l_objectid
      relation        = 'ATTA'"附件,除此之外還有NOTE,URL等
TABLES
      listofrelations = lt_relat[].
IF LINES( lt_relat ) = 0."沒有附件
    p_flag = ''.
EXIT.
ENDIF.
*  LOOP AT lt_relat.
READ TABLE lt_relat INDEX 1."業務上規定附件只有一個
REFRESH lt_objcont.
CALL FUNCTION 'SO_OBJECT_READ'
EXPORTING
      folder_id         = lt_relat-objkey_b(17)
      object_id         = lt_relat-objkey_b+17(17)
IMPORTING
      object_hd_display = l_objdisp
TABLES
      objcont           = lt_objcont
EXCEPTIONS
OTHERS            = 15.
MOVE l_objdisp-file_ext TO p_ftype .
TRANSLATE l_objdisp-file_ext TO UPPER CASE.
CALL FUNCTION 'SO_KPRO_DATA_FROM_OBJCONT_GET'
IMPORTING
      loio_object       = loio_object
TABLES
      objcont           = lt_objcont
      context           = lt_context
EXCEPTIONS
      missing_kpro_data = 1
OTHERS            = 2.
CALL FUNCTION 'SO_LOIO_PHIO_GET'
EXPORTING
      loio_object        = loio_object
IMPORTING
      phio_object        = phio_object
EXCEPTIONS
      kpro_inconsistency = 1
      x_error            = 2
OTHERS             = 3.
CALL FUNCTION 'SDOK_PHIO_LOAD_CONTENT'
EXPORTING
      object_id           = phio_object
TABLES
      file_content_binary = lt_binary_content
EXCEPTIONS
      not_existing        = 1
      not_authorized      = 2
      no_content          = 3
      bad_storage_type    = 4
OTHERS              = 5.
  xlen = l_objdisp-objlen.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
      input_length = xlen
IMPORTING
buffer       = xfile
TABLES
      binary_tab   = lt_binary_content
EXCEPTIONS
      failed       = 1
OTHERS       = 2.
DATA sap_path_n TYPE string.
DATA wa LIKE sdokcntbin.
CONCATENATE p_g_path  p_it_zmmjy_th_pr-filename '.' p_ftype INTO sap_path_n.
OPEN DATASET sap_path_n FOR OUTPUT IN BINARY MODE.
IF sy-subrc NE 0.
MESSAGE 'OPEN FILE FAILED' TYPE 'E'.
ENDIF.
LOOP AT lt_binary_content INTO wa.
TRANSFER wa-line TO sap_path_n.
ENDLOOP.
CLOSE DATASET sap_path_n.
CLEAR sap_path_n.
*  ENDLOOP.
ENDFORM. 

三、可以用事務碼OAOR管理附件
以PR為例,
image

三、若DMS管理附件,怎麼下載附件,候補

相關推薦

程式下載採購申請附件

一、可以對採購申請掛載附件,通過兩種方式: 1、使用GOS,直接掛附件,GOS這個名詞比較唬人,其實就是在PR介面上使用建立附件,註釋等.這樣掛載的附件只能掛到某個PR上,不能對行專案掛附件。 2、使用DMS,可以細到對行專案掛附件。(沒用過,目前沒空研究) 二、使用第一個方式管理附件的話,有的報表程式可能

JAVA建立HTTP通訊,從伺服器上獲取HTML程式碼,通過HTTP請求來下載圖片或其他二進位制檔案的程式下載結果要按下載到的檔案型別進行存檔

通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔 將程式碼從伺服器的中獲取下來的程式碼,在我之前已經講過了這裡寫連結內容 這裡我們就直接將原始碼稍加改動,加入一個檔案並請將builder 寫入即可。 import

JSP程式response物件實現檔案下載的兩種方式

  這篇文章主要介紹了JSP隱含物件response實現檔案下載的兩種方法,很簡單,但很實用,需要的朋友可以參考下。   一.JSP隱含物件response實現檔案下載的介紹   (1)在JSP中實現檔案下載最簡單的方法是定義超連結指向目標資源,使用者單擊超連結後直接下載資源,但直接暴露資源的URL   也

java 多excel下載 打成zip壓縮包 程式建立檔案 響應到瀏覽器(二)

         在瀏覽器端點選下載,會下載一個zip壓縮包,裡面包含多個Excel檔案(二)       我暫且把從程式中下載壓縮包分為三種類型,即三步下載,兩步下載,一步下載。三步下載是指第一步先從資料庫讀取資料、寫成檔案,然後把檔案們下載到本地磁碟;第二步是把檔案

android應用如何在有需要時申請root許可權?在程式要呼叫哪些語句來實現?

測試的手機已經root,並且裝有授權管理,允許應用來申請root許可權。但是要怎麼在程式裡寫程式碼來觸發申請?我試過用:Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("su");是會彈出一個對話方塊問你是否允許申請root

php使用head進行二進位制流輸出,讓使用者下載PDF等附件的方法

function downloadFile( $fullPath ){ // Must be fresh start if( headers_sent() ) die('Headers Sent'); // Required for

在Mac OS X下載Android源代碼的一些經驗

總結 同步 uil 空白 googl 新版 -h 教程 files 首先說明。隨著最近(2014年6月開始)GFW的升級。這個站點:http://www.android.com/ 已經不能正常訪問了,以下的這些操作均是在我連接VPN的時候進行的。 首先,須要做一些準

java實現從url路徑下載pdf文檔到本地

clas filename input 自己 lis pdf import tin -a package com.cellstrain.icell.util;import java.io.*;import java.net.*;public class DownloadPd

在ASP.NET MVC利用Aspose.cells 將查詢出的數據導出為excel,並在瀏覽器下載

width tdi 新增 column 需求 options 解決 印象 ats 正題前的嘮叨 本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麽做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好

maven下載jar包源碼和javadoc

clip load format code 引用 over resolve -i ise 1:Maven命令下載源碼和javadocs當在IDE中使用Maven時如果想要看引用的jar包中類的源碼和javadoc需要通過maven命令下載這些源碼,然後再進行引入,通過mvn

Confluence 6 從一個備份獲得文件附件

www. dmi 自動 頁面 允許 ini www 自動備份 config 頁面中的文件附件可以從備份中獲得而不需要將備份文件導入到 Confluence 中。這個在用戶刪掉了附件,但是你還是想恢復這個附件的時候就變得非常有用了。自動備份和手動備份都允許你進行這個操作,但是

CentOS7下載安裝Multitail(讓你的日誌文件變得多彩)

rec 時間 use ubuntu inf 圖片 tor ice clean MultiTail是幹啥的? Linux系統下查看日誌的一個工具,允許您監視終端中多個窗口中的日誌文件和命令輸出,著色,過濾和合並。 具體介紹請看官網:https://www.vanheusd

Springboot下載功能,附件超過8K不能顯示下載彈窗,頁面亂碼問題

strong oid map str 亂碼 ica req 大小 出現 Springboot項目中遇到一個文件下載問題,當文件大小超過8K時,不會出現彈出窗,而是直接在頁面顯示亂碼。 有問題的源碼如下: @RequestMapping(value = "/exportFi

如何找到微信快取的檔案以及微信網頁下載的遊戲

第一級目錄為 : Tencent   第二級目錄為:MicroMsg (微信)  MobileQQ  (QQ)   第三級目錄為:BigFile (儲存大的檔案 如遊戲)   檔名是隨機加密的 我們可以從大小看出 

程式遇到的那些坑

坑1、沒有DOM 無法使用熟悉的$查詢、document.getElementById等等這些操作,小程式取而代之的是資料繫結技術,所謂的資料驅動,就是資料改變之後,檢視展示跟著自己會變。DOM沒了,所以只好頻繁的使用this.setData({})來操作頁面屬性。 tip:在方法最

怎樣在程式打日誌?

在平時程式設計中經常遇到需要打日誌診斷錯誤這種情況,遠端客戶機?不能遠端除錯?系統中沒有自己的日誌方法?這時候就需要一個方便的,隨時加入隨時刪除的日誌方法。雖然沒有什麼技術含量,卻是相當實用 不多說,直接上程式碼 /// <summary>

程式圖片上傳

前端小程式:wxml <!--huitianxia/view/attend/attend/attend.wxml--> <import src="/huitianxia/view/common/foot.wxml"/> <view class='wrappe

微信小程式資料的儲存和獲取

/儲存資料     try {       wx.setStorageSync('key',this.data.radioCheckVal2)  //key表示data中的引數

【Telerik UI for ASP.NET教程】如何在WPF應用程式獲得流暢的設計主題

下載Telerik UI for WPF最新版本 瞭解如何使用Telerik UI中的Fluent主題為WPF輕鬆設定WPF應用程式的主題。新增透明度,丙烯酸效果,陰影,動畫等,以使用最新的UX和UI趨勢實現應用程式的現代化。 在WPF中使用Fluent Design 現在可以輕鬆地修改使用Tele

使用CefSharp在.Net程式嵌入Chrome瀏覽器(四)——啟動優化

在實際使用過程中,發現有的客戶端會出現chrome載入網頁過慢問題,定位後發現很多是因為設定系統代理所致,此時可以通過如下啟動引數禁止系統代理。 {"proxy-auto-detect", "0"},{"no-proxy-server", "1"}, 另外一個小技巧是: 由於cef本