PDF forms have enabled many SAP customers to automate manual processes, remove paper forms and replace processes based on Excel/Word forms that require manual re-keying.
However, many form-based processes involve multiple processing steps, such as levels of approval, and these steps might be processed on a multiple of devices, where PDF is the wrong user interface or where the version of Adobe Reader does not support Interactive Forms.


The solution might involve a complex mixture of interactive forms, portal pages, mobile apps and even SAP Fiori, as one size does not fit all.

 

  • Portal pages based on BSP or web Dynpro can have limitations with mobile devices.  SAPUI5 is a much better alternative, but it takes a lot of extra development to create a SAPUI5 page that works on many devices.
  • Custom mobile apps overcome this issue, but they can be expensive to maintain.  Plus, users do not want to manage many mobile apps on their devices.
  • SAP Fiori has the advantage of acting as a container for multiple simple transactions, but users will not want to manage many tiles within SAP Fiori, and the standard transaction screens delivered within SAP Fiori will often not fit the business requirement closely enough.   Plus, SAP Fiori works only ‘on-line’ whereas custom apps can be developed to work off-line and synchronise data later.


Moreover, for many business processes, you do not know what device the user will use at each step of the process.  Processes may be triggered from desktop or mobile device, and approved in the office or on the move.  Users will have multiple devices and it is not realistic to expect them to install and manage a range of apps on a range of devices.


Let’s consider a simple real-life example.

 

 

Company A has 10,000 employees, all of whom have access to ESS.  Within ESS each employee is empowered to update their own personal data such as home address, next of kin and bank details.  The problem is that they don’t.  Many users only have a SAP ID for ESS access, and they don’t use it as they have long forgotten their password, or don’t realise that SSO is in place.

This leads to a variety of issues for Company A, with a high HR administration cost.

Company A also has 2,000 temporary employees who have employee records but no ESS access.  The personal data for these employees is also incomplete or incorrect.


No combination of mobile apps, SAP Fiori and portal pages is going to fix this issue: it is one of process compliance, and that’s where a forms-based process can add huge value.


A possible solution could be:

 

  • Process triggered by HR Admin, Manager or background job
  • For each selected employee a form is generated and they are sent a notification e-mail.
  • For employees with no SAP access, or with no recent activity in the SAP system, a PDF interactive form is attached to the e-mail.  This is pre-populated with their own data which they can confirm or correct and submit back.
  • For employees with active SAP users, then they can be presented with a link to an on-line version of the form, which can be rendered in HTML5, so that they can use any device to check and correct their own data.  Alternatively they can use ESS (or a custom app) to update their data.
  • When a form is submitted back then the employee data is automatically updated.
  • A background job can check for any unprocessed forms –and check whether the employee master record was updated – and if not, then trigger a reminder e-mail.  As time passes the employee’s line manager can be informed:  The system can ‘chase’ each employee until they have confirmed their own data.

 

So here a solution involving multiple UIs and many devices can solve a business problem without a large scale roll out of mobile apps or SAP Fiori.

 

Let’s consider another example:

 

 

Company A is processing a mixture of expense forms. Some employees are using an Excel spreadsheet, some are using SAP Portal.  Some employees are scanning receipts, others are posting the receipts.  It’s a mess.

 

The company wishes to introduce an expenses mobile app, whereby the employees can enter details and attach photos of receipts, taken on mobile or tablet.

 

As part of the expense form, the employee indicates the project or cost centre against each item, and then approval for those items has to be sought from the budget owner.

 

In some cases the form will need to be approved by a line manager or by an administrator to ensure receipts have been checked.  This might be a dynamic rule based on the form data or simply a governance rule (such as 5% of expense claims must be randomly checked).

 

Not all users will have mobile devices and not all users will have SAP access.   Users will want to be able to track the progress of their expense form through approval stages.  At any time the expense form can be rejected back to the user.

 

Users can be notified by e-mail and SAP Universal Worklist, and so there isn’t any value of adding an ‘inbox’ function within the expenses app.

Users who submitted expenses claims without using the app also need to track their forms, and so there isn’t any point in building the tracking capability into the app either.

 

So quickly we see that the best fit is, once again, a multi-UI process.

 

With a multi-UI process, employees with SAP access could elect to start the process using an on-line form, the custom mobile app.  Employees without SAP access could either be sent a PDF form each month, or could download a PDF form from the company intranet, or could use a published html form on the intranet.  The benefit of sending the form to the employee is that it can be pre-populated with their own data.

 

Wherever the form was submitted from the rest of the process should now be common.  Data from each form will be collated by cost center / project and routed to each budget holder for approval.  Only when all parts of the form have been approved will the form be moved on to the next stage of the process.   Users will be notified by Universal Worklist, E-mail or both.  Off-line users will continue to work with off-line forms. On-line users will work with on-line html forms.

 

The point for organisations to consider when introducing new UI solutions is that the mixture should be the norm. They should not design a single new process and manage all exceptions separately: the management of those exceptions is where a lot of hidden cost lies.  Designing the process first and the technology second will result in a better business fit, and greater overall process efficiencies.   I caution against selecting ‘web Dynpro’ (because that’s what we always do) or ‘SAP Fiori’ (because that is what SAP are selling us) or ‘custom app’ (because users are crying out to use their iPads).  That’s no way to start a project.


Some simple forms infrastructure, like Arch FLM, will provide the framework for easy development and management of multi-UI processes.  FLM provides common form services, such as device determination, pre-population, data validation and form routing, which can be re-used by a variety of UIs such that organisations can maintain their business logic centrally instead of replicating it to support each different UI.


When organisations adopt a multi-UI approach they future-proof their business processes from changing UIs.

 

Arch FLM is a SAP-endorsed business solution.

SAP-endorsed business solutions are complementary to SAP® software offerings, have been specifically integrated with SAP solutions and tested by SAP, and provide additional choices and flexibility for businesses running SAP software. SAP-endorsed business solutions are offered by SAP partners.

Sap Interactive Forms by Adobe Today and Tomorrow @sap TechEd online by peter barker, nikhil dhairyawan, jurger hauser(Adobe) - Oct 2013,

 

I attended the SAP TechEd  through SAP TechED online. In this blog, I will share some of the notes I made today during the session which I hope will be a quick read providing the audience with insights into what SAP Interactive forms by Adobe is all about.

Key Message: SAP has made the first clear step towards consolidating on the mobile technology, Sap script and smart forms support by sap until 2020.

 

Key Agenda are overview of SAP Interactive Forms by Adobe, important guarantees, mobile forms, ADS in the cloud , SAP HANA cloud platform,

evolution P7, P8, P9.

He explained about offline and online scenario Advantages of adobe forms like it supports bar-codes, populated with data.digital signatures.

(digital sign will lock the form, if we edit that form digital sign will be lost. and moreover adobe forms can be triggered in workflow,User validation also possible in forms.

 

Advantages

1) Perfect interface between causal worker and sap.

2) Adobe reader is ubiquitous and free of charge.

3) Lower Total cost of ownership(tco), printing archiving.

4) Less manual data entry fewer errors

5) High volume printing - Parallel processing

6) ZPL for label printing

 

Future of Adobe Forms - Mobile Forms (2014)

key feature :

1) Same template for PDF and HTML

2) Open XFA will be rended in HTML5

3) scribble signature

4) ADS Cloud

5) Floor Plan Manager

6) UI5

 

 

The ADS in the cloud will use SAP HANA cloud  platform. Moving ADS in cloud netweaver, ABAP Stack will call Https web service to connect SAP HANA cloud platform. By using this technology we have more benefits like save time and money, non-disruptive, simple, flexible and attractive licencing model.

 

Evolution of Adobe Forms : P7, P8, P9

 

Features in P7:

1) life cycle designer 10

2) It supports MICR fonts and OCR fonts

3) Native itanium support

4) rupee symbol support(Indian currency symbol)

 

Features in P8:

1) certificates,security

2) life cycle designer 10.6

3) ADS availability on windows server 2012

4) https URL graphics

 

Features in P9:

1) Hindi support in ads

2) Maintenance easy

3) Turkish currency support

4) Japanese postal bar-code support

5) Mobile + ADS in cloud

 

Note:

1) P9 only have to complete, Planning to launch in 2014.

2) Hybrid solutions for on-demand  and on-premise planned for 2014.

 

References sites

scn.sap.com/interactive-forms-by-adobe

sc.sap.com/community/output-management

reference books

bc480

bc481

hr280

Often we come across the requirement of having the same layout of form for multiple languages.The best way to achieve this is by implementing the translations.

 

The following are the ways for translation of a original form (EN) to many other languages.

1.Translation available at the form level in SFP txn of the adobe forms.Menu-->Goto-->Translation.

2.Using Standard Texts (SO10)

3.Using Text Modules.(Smartforms)

 

The best way and easy maintenance in future, I suggest you to go for Textmodules.

These text modules can be created in the original language "EN" and can be converted in to differenet languages using txn SE63 using target language.

 

This way when you pass the the texmodule and the login language to the fileds of Text created in the Context node i.e.

Text Name -- 'ABC' (Name of the Text module created)

Textlanguage -- Langu. (This langu is the variable which is passed either from interface or from print pgm as import parameter where langu = sy-langu).

 

Now as you have converted all the text modules in the required languages,when you run the form in that particular login you get the necessary out in that particular language.

 

As per me this is the best and easiest way to proceed.

 

The second approach you can opt for is the standard text.(S010).But the probelm here is we need to be careful of insert the standard text in the Transport Request as the creation of standard text explicitly does not ask for TR.This is the only difference apart from that this is equivalent to textmodules.

 

The last option Translation at form level is not recomended as this needs the form to be developed statically.And when you have a requirement of translating the forms in multiple languages the form takes the changes fine for the first initial time.But when the changes are requested at later point of time to the translated text,we face issues with New text not getting reflected in the latest generated form(Not immediately).

 

Looking at all the available options,I suggest you to go for textmodules.

SAP TechEd 2013 just opened in Las Vegas. Do you use the current solution of SAP Interactive Forms by Adobe (IFbA) and would you like to hear about the new Mobile and Cloud functionality? Are you looking for a powerful and attractive document service that can be integrated seamlessly into your existing landscape?

Then you are in good company – the first session about IFbA generated a wave of excitement and useful feedback.


You have a
second chance to learn more about the current capabilities of IFbA including prefilling forms with data, offline usage, digital signatures, archiving options and integrations scenarios.

Is your company interested in using forms on mobile devices and/or in the context of an easy-to-consume cloud offering? Then come to the next session to find out about Mobile Forms and Cloud Forms.

 

There will be more opportunities to attend this lecture with demos in Amsterdam.

Shai Lapidot

Links in PDF

Posted by Shai Lapidot Sep 1, 2013

One of the first things I noticed when I started working with InterActiveForms is the lack of a Link element (like LinkToAction in webDynpro).

Here's suggestion of  awork around:

 

1) Place a button element where the link is supposed to be

2) In the Border palet change the 'Style' property to 'None', that will make the the button with no collor in the backround.

3) In the 'Font' palet change the 'Font collor' to light blue (press the icon with the letter 'A' and choose your collor).

4) Again in the 'Font' pallet press the 'underLine' icon (a icon with a capital 'U').

 

Now the button looks like a link and in the 'click' event you can write any code for showing the destination of the link (e.g.: xfa.host.gotoURL("http://www.url.com")) .

 

Now lets go one step forwerd: A lot of times links need to have dynamic text...

For doing this in the layout:ready event of the link (button) write this code (with formCalc only):

$.caption.value.#text = "Any text" (usually it won't be a string but a value from the dataSource).

This is a small example to overcome the Scroll bars Issue in Adobe Interactive Forms.

 

Eg: Assume that we are getting the Scroll bars issue as shown below.

1.JPG

To overcome such scenarios type the below code in FormCalc in the Script editor.

 

$.access = "nonInteractive"

 

See the out put below after writing the FormCalc.

 

2.JPG

Regards,

--Naveen

 

 

Assume that we have a requirement to print the text in the below format.

 

1. This is a demo to print the text using styles. This is a demo to print the text using styles.

    This is a demo to print the text using styles. This is a demo to print the text using styles..

    This is a demo to print the text using styles. This is a demo to print the text using styles.

    This is a demo to print the text using styles. This is a demo to print the text using styles.

 

To achieve the above requirement follow the below steps:

 

Step 1) Go to the Tcode smart forms and create a style Z_align.

Create a paragraph format SU as mentioned below.

 

1.JPG

 

Create a text module and use the Paragraph format which is created.

 

The Out put looks similar as below

 

 

2.JPG

 

Regards,

Naveen

 

I think I should share this:

 

This will convert Indian Rupees(digits) into  word.

 

 

 

FUNCTION ZMM_AMT_WORDS_INR.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     REFERENCE(AMOUNT) TYPE  NETWR

*"  EXPORTING

*"     REFERENCE(WORD) TYPE  Z_CHAR160

*"----------------------------------------------------------------------

 

MAMOUNT = ABS( AMOUNT ).

 

   MSTRING = FLOOR( MAMOUNT ).

   CONDENSE MSTRING.

   MLEN = STRLEN( MSTRING ).

   IF MLEN > 10.

   ENDIF.

   MDECI = MAMOUNT - FLOOR( MAMOUNT ).

   MPAISE = MDECI * 100.

   MPAISESTATUS = 'Y'.

 

   ITAB_AMT-DESC = 'One'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Two'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Three'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Four'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Five'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Six'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Seven'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Eight'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Nine'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Ten'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Eleven'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Twelve'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Thirteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Fourteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Fifteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Sixteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Seventeen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Eighteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Nineteen'.

   APPEND ITAB_AMT.

 

   ITAB_AMT-DESC = 'Twenty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Thirty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Forty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Fifty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Sixty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Seventy'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Eighty'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   ITAB_AMT-DESC = 'Ninety'.

   APPEND ITAB_AMT.

   PERFORM FILL_AMT.

 

   MWORD = 'Rupees'.

   MLEN1 = MLEN.

 

   DO.

     WHILE MLEN > 0 AND MLEN <= 16.

 

       IF MLEN = 16.

 

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 15.

 

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 14.

 

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 13.

 

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING   MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 12.

         MCLTH = 'Thousand'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                  MLEN

                                  MCLTH

                                  MWORD

                                  MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 11.

         MCLTH = 'Thousand'.

         MCONTINUE = 'Y'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                      MLEN

                                      MCLTH

                                      MWORD

                                      MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 10.

         MCLTH = 'Hundred'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                  MLEN

                                  MCLTH

                                  MWORD

                                  MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 9.

 

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 8.

 

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING   MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 7.

 

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

 

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 6.

 

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 5.

 

         MCLTH = 'Thousand'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

 

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 4.

         MCLTH = 'Thousand'.

 

 

 

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

       ELSEIF MLEN = 3.

 

         MCLTH = 'Hundred'.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

 

 

       ELSEIF MLEN = 2.

         MSUBSCR = MSTRING.

         MTMPSCR = MSUBSCR.

         IF MSUBSCR = 0.

           EXIT.

         ENDIF.

         IF MSUBSCR <= 20.

           READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.

           MLEN = 0.

         ELSE.

           MSUBSCR = MSTRING(1).

           MSUBSCR = MSUBSCR * 10.

           READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.

         ENDIF.

 

         CONCATENATE MWORD MAMT_DESC INTO MWORD SEPARATED BY SEP.

         SHIFT MSTRING.

         MLEN = MLEN - 1.

         IF MTMPSCR > 20.

           MSUBSCR = MSTRING(1).

           IF MSUBSCR = 0.

             SHIFT MSTRING.

             MLEN = MLEN - 1.

             CONTINUE.

           ENDIF.

           READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.

           CONCATENATE MWORD MAMT_DESC INTO MWORD SEPARATED BY SEP.

           SHIFT MSTRING.

           MLEN = MLEN - 1.

         ELSE.

           EXIT.

         ENDIF.

       ELSEIF MLEN = 1.

 

         MCLTH = ''.

         MCONTINUE = 'N'.

 

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y' OR MLEN = 0.

           EXIT.

         ENDIF.

 

       ENDIF.

     ENDWHILE.

 

     IF MPAISE > 0 AND MPAISESTATUS = 'Y'.

       MSTRING = MPAISE.

       CONDENSE MSTRING.

       MLEN = STRLEN( MSTRING ).

       MPAISESTATUS = 'N'.

       CONCATENATE MWORD 'And Paise' INTO MWORD SEPARATED BY SEP.

     ELSEIF

     MLEN = 1.

     ELSE.

       EXIT.

     ENDIF.

   ENDDO.

 

   CONCATENATE MWORD 'only' INTO MWORD SEPARATED BY SEP.

   WORD = MWORD.

 

Best,

Abhijeet Kankani

 

 

 

 

 

ENDFUNCTION.

Hi,

 

If you are installing Adobe Document Services (ADS) on Red Hat operation system versions 6.X (RHEL 6), some extra packages should be installed.

It's described on SAP note 1633459 .

 

For helping on the task o identify if you already have needed packages, you can run this command on your shell:

 

[root@~]# for i in 'autoconf automake cyrus-sasl-lib expat fontconfig freetype glibc keyutils-libs krb5-libs

libcom_err libgcc libidn libidn-devel libselinux libssh2 libX11 libXau libxcb nspr nss nss-softokn nss-softokn-freebl

nss-util openldap openssl transfig zlib'; do rpm -q $i --qf '%{NAME}-%{ARCH}\n' ;done

 

 

Expected result is something like that (package versions can change depending of operation system version):

 

autoconf-noarch

automake-noarch

cyrus-sasl-lib-x86_64

cyrus-sasl-lib-i686

expat-x86_64

expat-i686

fontconfig-x86_64

fontconfig-i686

freetype-x86_64

freetype-i686

glibc-x86_64

glibc-i686

keyutils-libs-x86_64

keyutils-libs-i686

krb5-libs-x86_64

krb5-libs-i686

libcom_err-x86_64

libcom_err-i686

libgcc-x86_64

libgcc-i686

libidn-x86_64

libidn-i686

libidn-devel-x86_64

libidn-devel-i686

libselinux-x86_64

libselinux-i686

libssh2-x86_64

libssh2-i686

libX11-x86_64

libX11-i686

libXau-x86_64

libXau-i686

libxcb-x86_64

libxcb-i686

nspr-x86_64

nspr-i686

nss-x86_64

nss-i686

nss-softokn-x86_64

nss-softokn-i686

nss-softokn-freebl-x86_64

nss-softokn-freebl-i686

nss-util-x86_64

nss-util-i686

openldap-x86_64

openldap-i686

openssl-x86_64

openssl-i686

transfig-x86_64

zlib-x86_64

zlib-i686

 

 

At this time, you can only run ADS 73X on RHEL 6.

Please check PAM.

Hi,

 

As part of some business requirements like Form 16 generation, sometimes you need to setup ADS to connect through SSL to ABAP stack.

That setup is described on SAP Help guides, but I'll give a short description about what should be done.

 

 

Official SAP guides/notes:

 

    - Adobe Document Services for Form Processing - version 73X

    - Adobe Document Services Configuration Guide - version 70X

    - Form 16 central note for ADS configuration

 

 

My brief description for adapting your existing working ADS configuration to run also using SSL:

 

  1. Configure SSL port at Java ADS server;

  1.2. Test it using a browser, when calling   https://<JAVA_host>:<HTTPS_port>/   it should work;

  1.3. Export Java SSL port certificate as 'base64', save it locally on your machine.

 

  2. Create ADS_HTTPS rfc on ABAP server (check above guides for configuration details);

             Path Prefix:                     /AdobeDocumentServicesSec/Config?style=rpc

             Logon Procedure:        No Logon

             SSL Client Certificate: <choose a SSL client identity from strust transaction>

 

  2.1. Import Java certificate from 1.3 section in the same SSL client identity you are using on ADS_HTTPS rfc;

  2.2. Export Owner certificate of that SSL client identity as 'base64' and save locally;

  2.3. Restart ICM :  SMICM -> Administration -> ICM -> Exit Soft -> Global

 

  3. Import Owner certificate from 2.2 section into Java ADS and assign it to ADSUSER.

 

  ** For Java 73X versions, "SecureConfigPort_Document" entry should be added on "Destination Template Management"

 

 

Common mistakes:

 

  1. Missing HTTPS port on ICM at ABAP side, so connection will not initiate;

  2. Missing configuration on Java SSL port, "Request client certificate" should be checked;

  3. Not matching certificates, so SSL error is raised when testing ADS_HTTPS rfc.

      ** You should set ICM level 3 trace, reproduce the issue and check on trace why certificates are not matching.

          This is related to section 2.1.

  4. Using self-signed certificates, it should be also added on Trusted CAs at Java side.

  5. UME parameter should be set to TRUE on Java side:  ume.logon.allow_cert

  6. ClientCertLoginModule authentication module isnt set to AdobeDocumentServicesSec

 

 

For further investigation, if after all configurations were done but ADSUSER authentication using certificates are still not working:

 

- SAP note 846610   - How to activate ADS trace

- SAP note 1045019 - Web diagtool for collecting traces

 

- SAP note 1128476 - How to activate ADS trace in NW7.10 and higher

- SAP note 1332726 - Troubleshooting Wizard

Hi,

 

Sometimes when you are trying to generate Adobe forms using a new ADS server just installed on a Linux server you start getting errors (even test reports from SAP note 944221 are not working).

 

After enable ADS trace (SAP notes 846610 or 1128476) and reproduce the issue, you can see on trace file:

 

/usr/sap/SID/DVEBMGS00/j2ee/os_libs/adssap/XMLFormService/bin/XMLForm:

       error while loading shared libraries: ./libxfatraversalservice.so:

       cannot restore segment prot after reloc: Permission denied

 

  ** it can be another lib name.

 

That is happening because Selinux, so please set it as "permissive" for disabling it and reboot your server.

 

- Setting permissive mode:

            Edit file: /etc/selinux/config
            Change 'SELINUX'  to:  SELINUX=permissive

 

- After reboot, expected output:

   [root@ ~]# getenforce

               Permissive

 


Selinux "Permissive" is recommended on SAP notes 1048303 and 1496410 .

Adobe forms are popular in forms area because of its wide variety of uses.

 

  • The general transaction: SFP. Through SFP we can create a form as well as its interface..
  • Try to pass less variables from print program to the form interface.
  • Recommended to use textmodules as its easy for maintenance.When we try to use static text and when we translate the forms into other language, some times changes might not refelect while support activities.
  • To translate the text of textmodules into other languages use txn SE63.
  • Textmodules can be created using txn: smartforms.
  • We can use different formatting styles in textmodules.
  • These formatting styles are created in txn : Smartstyles.

Sometimes you get bellow error when trying generating ADS forms:

 

"SYSTEM Error: com.adobe.ProcessingException: The rule specified,

requires Output PDF named: Nodes, does not exist."

 

It should happens only on old releases like: NW701 SP-4/SP-6  and NW711 SP-2/SP-3/SP-4

So general recommendation is update ADS to newer release.

 

But you can also fix it doing bellow changes:

 

1. From OS level go to folder:

/usr/sap/<SID>/SYS/global/AdobeDocumentServices/lib

 

2. Make a backup copy of operationRules.properties


3. Then edit this file and you can find a line:

requiresOutputPDF.Nodes=GetReviewCopy

 

4. Please comment that line inserting '#' at begin of this line.

 

5. Save changes.

 

6. Then Stop/Start application com.adobe/AdobeDocumentServices

 

 

Regards.

There may be requirement to use the same layout and Interface for some requirements.

To achieve that we generally copy the interface name and Form name and then activate them.

 

 

Below are the simple steps where we can achieve that.

 

Download the Interface and Form which you want to copy on the desktop.

 

Step 1) Create a Interface and click on change button.

 

 

Step 2) From Utilities menu select Uploading Interface as shown below.

Upload the Interface which you have saved on your desktop earlier.

 

1.JPG

 

Activate the Interface.

 

Step 3) Goto sfp create a Form and click on change.

 

Step 4) From Utilities menu select Uploading Form as shown below.

Upload the Form which you have saved on your desktop earlier.

2.JPG

Activate and execute.

 

Regards,

Naveen

Dear friends,

 

I need your help.

 

When i try to execute the Adobe Form.

 

Value is populated though function moudle : function_name. But System Error : 2  [ EXCEPTIONS ]

 

Please Help Me. High Priorty

 

Code :

TRY.
      CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
        EXPORTING
          i_name     = l_name
        IMPORTING
          e_funcname = function_name.

** Exception handled
    CATCH cx_fp_api_internal.
    CATCH cx_fp_api_repository.
    CATCH cx_fp_api_usage.
  ENDTRY.


    CALL FUNCTION function_name
     EXPORTING
       /1BCDWB/DOCPARAMS       =  fp_docparams
        header                 =  lv_header

*   IMPORTING
*     /1BCDWB/FORMOUTPUT       =
     EXCEPTIONS
       usage_error              = 1
       system_error          = 2   --------------------------------------------------------------------  " System Error Generated "
       internal_error           = 3
       OTHERS                   = 4.

    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

 

 

Also tryed to execute the Program : FP_TEST_IA_01

 

It shows Error message like

 

Error Message :   ADS: com.adobe.ProcessingException: com.adobe.ProcessingException: could not retrive credential for alias: ReaderRights ( 200,101 )

 

Please give me solution for this issue.

Actions

Filter Blog

By author:
By date:
By tag: