天天看點

如何用ABAP代碼讀取SAP Business partner的附件資料Sent: Wednesday, April 3, 2013 9:47 PM

Sent: Wednesday, April 3, 2013 9:47 PM

Subject: RE: how to read attachment in BP overview UI

我寫了一個report:

DATA:     ls_kw_business_object TYPE sibflporb,
          lv_relation_name      TYPE crmt_relation_name,
          lt_loios              TYPE skwf_ios,
          lt_phios              TYPE skwf_ios,
          ls_phios              TYPE skwf_io,
          lt_prop_result        TYPE crm_kw_propst,
          ls_prop_result        TYPE crm_kw_props.

  ls_kw_business_object-instid = 'F8D9601DAFD6674F94EA19C1CDBE37DA'.
  ls_kw_business_object-catid = 'BO'.
  ls_kw_business_object-typeid = 'BUS1006'.

CALL METHOD cl_crm_documents=>get_info
      EXPORTING
        business_object       = ls_kw_business_object
        newest_only           = 'X'
      IMPORTING
        ios_properties_result = lt_prop_result
        loios                 = lt_loios
        phios                 = lt_phios.           

我解決問題的思路:

首先在UI上debug打開contact detail page的時候,contact上面的attachment是怎樣從DB裡面讀出來并且顯示在UI上的。

可以參考product的debug:

這個方法的輸入是一個bol entity,輸出就是ui上的attachment。是以我通過觀察lr_entity裡面的attribute就能知道為了讀取document,需要哪些輸入參數。

這裡可以發現instID必須傳BP的guid進去。

那下一個問題就是如何在你的代碼上下文裡拿到BP guid呢?我們隻知道contact的id。

如果你觀察BP的model,你會發現BuilHeader有三個association都能到另一個root object BuilContactPerson,

而BuilContactPerson也有association到BuilHeader。

如果你在UI上修改account ID = 400646的description,你會發現對應的contact ID = 400646的description也自動變了。是以這裡的contact和account對應DB(BUT000)裡面是同一條entry,BP的guid也就是contact的GUID。

是以你直接用contact的guid作為api的輸入就可以了。

本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。

繼續閱讀