Generic Object Services

Das Ablegen von Anhängen an SAP-Standardtransaktionen hat sich zu Release 4.70 komplett geändert. Konnte man vorher die Anhänge mit dem Funktionsbaustein SREL_GET_NEXT_RELATIONS lesen, ist zu 4.70 eine andere Vorgehensweise vonnöten.

In den meisten SAP-Standardtransaktionen können Anhänge angefügt werden. Dazu geht man unter Menü “System – Verknüpfungen” und kann Notizen, Bilder oder andere Dateien zuordnen.

Gelesen werden diese im Release 4.5 z.B. mit dem Funktionsbaustein SREL_GET_NEXT_RELATIONS:

*** Anhänge zur Qualitätsmeldung lesen
  gs_objects-objkey  = gv_qmnum.
  gs_objects-objtype = 'BUS2078'.  "Q-Meldung
  CALL FUNCTION 'SREL_GET_NEXT_RELATIONS'
    EXPORTING
      object         = gs_objects
    TABLES
      links          = gt_links
      roles          = gt_roles
    EXCEPTIONS
      internal_error = 1
      OTHERS         = 2.

 

Ab Release 4.70 (oder 4.6) erhält man aber keine Ergebnisse, wenn die Anhänge über den sogenannten “Generischen Objektdienst” (GOS) gespeichert wurden.

Siehe Hierzu auch den Artikel “Generic Object Services“.

Die Anhänge müssen nun wie folgt ermittelt werden (Anregung aus dem OSS-Hinweis “632997 Belegfluß: Anlagen, Notizen, URLs nicht angezeigt”):

DATA: l_sysid             LIKE tbdls-logsys.
DATA: lt_relation_options TYPE obl_t_relt.
DATA: ls_relation_options TYPE obl_s_relt.
DATA: l_object            TYPE sibflporb.
DATA: lt_links            TYPE obl_t_link.
DATA: ls_links            TYPE obl_s_link.
DATA: lt_roles            TYPE obl_t_role.
DATA: ls_roles            TYPE obl_s_role.

*--- Beschaffung der "Logischen System-ID" für F-Leiste L_BORIDENT
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
  IMPORTING
    own_logical_system             = l_sysid
  EXCEPTIONS
    own_logical_system_not_defined = 0.

*--- Ermitteln der Verknüpfungen, die über die neue Technik zugeordnet
*--- wurden GOS Attachments, URLs und Notizen
l_object-typeid = 'BUS2078'.
l_object-instid = p_qmnum.
l_object-catid  = 'BO'.
ls_relation_options-sign   = 'I'.
ls_relation_options-option = 'EQ'.
ls_relation_options-low    = 'ATTA'.
APPEND ls_relation_options TO lt_relation_options.
ls_relation_options-low    = 'NOTE'.
APPEND ls_relation_options TO lt_relation_options.
ls_relation_options-low    = 'URL'.
APPEND ls_relation_options TO lt_relation_options.

TRY.
*--- Lesen der Verknüpften Objekte
    CALL METHOD cl_binary_relation=>read_links_of_binrels
      EXPORTING
        is_object           = l_object
        ip_logsys           = l_sysid
        it_relation_options = lt_relation_options
      IMPORTING
        et_links            = lt_links
        et_roles            = lt_roles.
  CATCH cx_obl_parameter_error .
  CATCH cx_obl_internal_error .
  CATCH cx_obl_model_error .
ENDTRY.

Weiterführende Infos

Hilfreich ist eventuell auch die Klasse CL_ATTACHMENT_LIST.

Mithilfe des Funktionsbausteins BDS_ALL_CONNECTIONS_GET kann ermittelt werden, wieviele Dokumente vorhanden sind.

Weitere Doku im SDN “HOW TO ATTACH DOCUMENTS TO ANY CUSTOM PROGRAM USING GENERIC OBJECT SERVICES”:  http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/0e6b0d95-0a01-0010-4696-ca0a48de5fb3

Enno Wulff