Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »


QuestionMore DetailsAnswer
Which SAP Versions are supported by SAPALink SDK ?

SAPALink is supported by all SAP Systems (including the current ERP6.0 with EHP8). SAP Hana also supports the the ArchiveLink-Protocol (inlcuding the Abap-Stack).

See: https://www.kgs-software.com/2017/02/kgs-erhaelt-zertifizierung-von-sap-fuer-dokumentenarchivierung-im-sap-s-4hana-umfeld/

Is it possible to integrate additional documents or metadata from DMS server and makes them available to SAP (eg scanned components from DMS ). How does this works ?
No, not directly. Every Document needs to be known by the SAP System (the process of making a document known to SAP is called "Document Linking"). Every Document Archiving process needs to do two steps: 1). Archive in the DMS-System , 2.) Link to SAP System. (or vice versa). In your specifc scenario you would need to write a tool/connector that take your DMS-Data und Link it into the SAP System (with ContentRepository, Document ID etc.). KGS does not offer a generic solution for that.
High availability : is it possible to have multiple instances of KGSContentServerStorage with a Load balancer like Apache to handle load balancing and failover ?
The KGS ContentServer4Storage is a Java-Servlet running on a Webserver. Servlets can coexist on the same Machine as well as on different machines (they dont need to know each other). Load Balancer are designed to reroute http(s) Requests depending on the load of machines. So definitv YES. Most of our customer uses load balancer. The ContentServer-Address (like http://webserver:port/KGS-Admin/contentserver) is configured in the SAP Transaction OAC0. In case a load balancer is configured, the OAC0 targets the load balancer and this load balancer targets N-ContentServer
Is KGSContentServerStorage compatible HTTPS ?
A similar answer: The Webserver of the Java Servlet handles the Protocol. For a Tomcat for example, you configure https in the "server.xml" (server-level, in the configfolder). Its more or less pass-through. So YES, the KGSContentServer4Storage can also be addresses with https
Extension : componentCreateCold()

createComponent is called First ( with the printlist i think ) and componentCreateCold is called with an ascii textFile.

Do you confirm ? 

How the ASCII text file is generated SAP / KGS ?

- What is the format of ascii text , can we have a sample ?

This method is depreciated and is no longer supported in the current release of the KGS ContentServer.
Extension : documentKeysSet()

Documentation : This function provides additional keys for the specified document. The Keylist contains meta- data information about the corresponding SAP Object and offers the opportunity to map these information to the Document for an SAPGUI independent search functionality. Example |OBJECT_ID=100019000000152002|SAP_OBJECT=BKPF|AR_OBJECT=FIIINVOICE|KEYNAME1 =KEYVALUE1|KEYNAME2=KEYVALUE2|


Question: My understanding is when a document is pushed to the content server a kind of trigger is executed by KGS framework to get associated metadata.

  1. Is that correct? 
  2. Can you give us more details ?
  3. Is it synchronous or asynchronous ?
  4. Are we notified with data update or deletion ? 


This understanding is correct. This extension works only with the KGS ContentServer and is not supported by the SAPALink-Standard. The workflow is following:

When a document is pushed to the contentserver and in the ContentServer is configured properly for this feature, then a custom SAP Function Module (Z_KGSKEYEXPORT) is triggered. Z_ in SAP means that its a custom Module. So its necessary to have this Z_KGSKEYEXPORT Module "transported" into your SAP System. Its written in ABAP and can be rewritten specific of the customer needs (add additonal Parameters etc.). The Z_KGSKEYEXPORT returns these details as a .idx-file which is stored temporarily on the KGS ContentServer. Depending on your configuation, the KGS ContentServer take these .idx-Files (by time cycle) and processes these (it send exaclty these data [e.g. your Example on the right] to the DMS-System). How you integrate or use this data is up to you. Every request sent to the ContentServer is handled independently and in parallel, so its asynchronous. Every connection (link-open) to the DMS is capable of handling multiple requests, but in case this capability is reached, the KGS ContentServer spawns additional link-open(s).

- No ,update or deletion does not trigger the documentKeysSet (delete will send the delete request for the document anyways to the DMS-Backend, so in case you have already a keyset to that document, you have to cleanup these unneeded metadata as well on your DMS System). Specified Metadata is configured / implemented in the SAP Function Module (Z_KGSKEYEXPORT).

infoGetLinkVersion() infoGetProductVersion()

- Is there some structured information to suply ?

- What is the difference between them ?

The infoLinkVersion refers to your SAPALink.class (in case you extend it or do bugfixes you increment the Version) whereas the infoProductVersion refers to your DMS System Version. There is no structured info to supply, every Vendor is free in syntax as long its a valid String. Keep in mind that these Strings might get delivered via the http(s) Protocol, therefore UTF-8 with no special chars (like &) is highly recommended. Besides, the KGS ContentServer URL-Encode the chars anyways, but in case u are using a non-KGS ContentServer you might get troubles with special chars.
ComponentCreate

Documentation : If the document ID is not provided as an input parameter, you have to create a unique doc ID, and return this ID.


In the function declaration DocId is set as mandatory - How can we return a docId knowind that the function is void ?

Thats more or less a wrong Documentation. Per ArchiveLink-Standard, its not allowed to create a component without an DocID (its mandatory). Per definition, the ReturnCode for this Request (from the KGS ContentServer) is 400 -> bad Request. So this case is already fetched before it even can occur on DMS Site.

Means: the DocID IS mandatory. The Documentation refers to the SAPALink that theoretically allows this (even it does not make sense: Imaging you create a docID and store the component in that document on your DMS. The SAP System will never know about that generated docid and is therefore unknown and unsearchable which result in a zombie-document in your DMS System [Unless you want to access the data without SAP]). Anyways: SAP's ArchiveLink-Protocoll already deny this circumstances which the KGS ContentServer (and SAP ContentServer) handles first.

componentGetWho is responsible of deleting the returned files  ?Thats a bit tricky as well. Because the SAPALink-Protocol is quite old, developers used to work with temp-files. Because of this quite old Interface you have to create the file (if you dont have it already as file) on DMS side and return the absolute path to the file. After the KGS ContentServer delivered the data to the receiver/consumer, he tries to delete the file. So Yes: the ContentServer delete the files afterwards. But its also necessary that the CS has write-Access on the Folder where the DMS create the (tmp)-Files
putCert Available in Document API Test but not in SAPALINK.java . What is the use of this function ?

The putCert is for Security and securing the communication via the Web (https only ensure the transport layer security whereas the putCert(certificate) ensure that only from certificate-aware clients requests are allowed).

SAPALink is called from the Contentserver, so the transport to the ContentServer was already successful and allowed (The CS handles the certificate-validation). You only have to ensure the connection (LinkOpen) to your DMS System is secured (or at least it should be).

Is there a way to communicate directly with SAP asking for Document or Metadata created between 2 dates ?Same as before but on Content Server Level

SAP ContentServer / KGS ContentServer etc. are adressed by url or protocol (the SAP ContentServer has a query like serveradress:port:endpoint.dll?create& ....) which is similar to our syntax: serveradress:port:endpoint/contentserver?create& ...). There are several ContentServer out there with different Syntaxes (OpenText,SAP ContentServer, KGS ContentServer,IBM, HP RecordManager|Trim ..). But the parameters are delivered all by url-conform queries [ = ArchiveLink] As mentioned before, ContentServers in SAP are configured in the Transaction OAC0 (which for example also can be read from external with a SAP Connector).

Specfic search-requests (like your question regarding every document between Date A and Date B) does not exist in the ArchiveLink/SAPALink-Environment. See the next question regarding search.

Search function: why search function is not part of SAPALINK.java ?
  • Do we need an extension for that ?
  • On which elements search is applied ?
  • Document content/ metadata / Technical data ?
Search is not provided by SAPALink because SAPALink operate as Interface on DocumentLevel. The Search Logic is integrated on the Client side (e.g. the SAP by itself which can filter and search internally and only ask the Archive/DMS for the result which the User searched for). Search and Find-Logic is Client Side.



  • No labels