One of simple tasks that I had to do was to retrieve DP documents from OpenText Archive server using Archive link functions in order to attach them into GOS email services.

I found lots of examples of reading data from Archive link and all of them required writing files on a physical folder to attach them to email function . However I remember that I programed ABAP modules and objects in a SAP security project circa 2003 where I setup a Kpro server as SAP DMS and did DMS  configurations. The function modules I built at that time is reading data from Kpro DMS contents sever in MEMORY not as a physical file nor needed to write down a file on local folder wherever. Thee reason of that was the encrypted of RSA keys were to be added to the header of the footer of MS office (or Adobe) documents  as binary set which also worked only with binary document body. The documents I read as memory must be binary format for that reason. The decryption and validation process with CA  were done by opposite ways.

I am suspicious that there might be one among Archive link functions which I built. I did find it.

 

Development Example

Get Archive ID of DP document 

Create ABAP class ZCL_VIM_DP_INVFILE_SRV_001->CONSTRUCTOR and read Archive ID  by using OpenText FM ‘/OPT/VIM_VA2_GET_ARCH_DATA’   or simply select from 1head table at method “constructor”

  SELECT SINGLE archiv_id
                arc_doc_id
           INTO (iv_archiv_id,
                iv_arc_doc_id)
           FROM /opt/vim_1head
          WHERE docid = iv_docid.

You can get Archive ID and Archive Document ID from DP document ID

    CALL FUNCTION '/OPT/VIM_VA2_GET_ARCH_DATA'
      EXPORTING
        iv_docid              = iv_docid
      IMPORTING
        iv_archiv_id          = gv_archiv_id
        iv_arc_doc_id         = gv_arc_doc_id
      EXCEPTIONS
        system_failure        = 1 error_message
        communication_failure = 2 error message.

Import parameter IV_DOCID TYPE /OPT/DOCID

* read Archive ID
    IF iv_docid IS INITIAL.
      RAISE EXCEPTION TYPE zcx_vim_util EXPORTING textid = zcx_vim_util=>exp_id001.
    ENDIF.

    CALL FUNCTION '/OPT/VIM_VA2_GET_ARCH_DATA'
      EXPORTING
        iv_docid              = iv_docid
      IMPORTING
        iv_archiv_id          = gv_archiv_id
        iv_arc_doc_id         = gv_arc_doc_id
      EXCEPTIONS
        system_failure        = 1 error_message
        communication_failure = 2 error message.

    IF   gv_archiv_id IS INITIAL
      OR gv_arc_doc_id IS INITIAL.
      RAISE EXCEPTION TYPE zcx_vim_util EXPORTING textid = zcx_vim_util=>exp_id002.
    ENDIF.

 

Read Document as memory (Internal table)

Create a METHOD get_dp_image_from_cms_x. with return parameter  RT_SOLIX_TAB  TYPE SOLIX_TAB

CompID should be ‘data’ and need to pass Archive ID and Doc ID. Then need to convert the data type RAW 1024 of output into type RAW 255 which is compatible with the data format of email attachment.

Archive Link Document Class for the OpenText DP document is  ‘/OPT/V1001’ : GC_DP_DOC_TYPE

  METHOD get_dp_image_from_cms_x.

    CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
      EXPORTING
        archiv_id                = gv_archiv_id
        document_type            = gc_dp_doc_type
        archiv_doc_id            = gv_arc_doc_id
*       ALL_COMPONENTS           =
*       SIGNATURE                = 'X'
        compid                   = 'data'
      IMPORTING
        length                   = ev_length
        binlength                = ev_binlength
      TABLES
        archivobject             = et_archivobject
        binarchivobject          = et_binarchivobject
      EXCEPTIONS
        error_archiv             = 1
        error_communicationtable = 2
        error_kernel             = 3
        OTHERS                   = 4.

    IF sy-subrc = 0.
      CALL METHOD cl_rmps_general_functions=>convert_1024_to_255
        EXPORTING
          im_tab_1024 = et_binarchivobject[]
        RECEIVING
          re_tab_255  = rt_solix_tab[].
    ENDIF.
  ENDMETHOD.

 

Make a short form  with email attachment as PDF 

GP_DEF_ATTRIB = DP document id (type : /opt/docid )

** Create OBJ attachment -  DP Invoice PDF
DATA(lt_pdf_solix)
  = NEW zcl_vim_dp_invfile_srv_001( CONV /opt/docid( gp_def_attrib ) )->get_dp_image_from_cms_x(
        IMPORTING ev_binlength = lv_binlength
                  ev_length    = lv_length    ).

IF lt_pdf_solix[] IS NOT INITIAL.
   lo_document_att    = cl_document_bcs=>create_document(
              i_type       = 'PDF'
              i_subject    = CONV so_obj_des( TEXT-303 )
              i_length     = CONV so_obj_len( lv_binlength )
              i_hex        = lt_pdf_solix
              i_language   = sy-langu
              i_importance = '1'       ).
   lo_document->add_document_as_attachment( lo_document_att ).
   APPEND lo_document_att TO lt_attachments.
ENDIF.

 

Eventually, The Function Group SAPLARCHIVOBJECT is a kind of full package of check-in and check-out functions plus extra functionalities.

In general usage as contents server, you can read PDF data directly with export parameter document_type            ‘PDF’ if the documents are stored as PDF file . But OT DP document has own document class.  

call function ‘ARCHIVOBJECT_GET_TABLE’
exporting
archiv_id                aid
document_type            ‘PDF’
archiv_doc_id            adi

 

 

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x