Adobe Interactive Forms : validation via Webservices

Les formulaires interactifs Adobe peuvent être utilisés de deux façons différentes :

  • Online : intégré par exemple dans une application Web Dynpro
  • Offline : renvoyé par exemple au serveur SAP par le biais d’un mail ou d’un Web Service

Nous verrons ici comment renvoyer au serveur SAP les données renseignées au sein du pdf via l’utilisation d’un Web Service.

Soit par exemple la table spécifique YTADOBE_FROM_WS qui contiendra un ensemble de noms/prénoms et qui sera alimentée par un pdf interactif :

La première étape consiste en la création d’une bapi  permettant la mise à jour de cette table :

Cette bapi devra être accessible à distance :

On retrouve en entrée le nom et le prénom à enregistrer :

On retourne le code retour de l’opération :

Mise à jour de la table :

La bapi étant maintenant créée et opérationnelle, la seconde étape consiste en la génération du Web Service correspondant :

Spécifier un nom de service :

Activer le mapping des noms :

Sélectionner le profil de sécurité en fonction du besoin :

Spécifier les options de transport :

Votre Web Service est créé :

On peut retrouver le service créé en SE80 :

La troisième étape consiste en la récupération du WSDL correspondant au service, pour cela lancer la transaction SOAMANAGER, sélectionner le second onglet « Communication inter-applications/-scénarios » et cliquer sur « Admin. de services individuels » :

Rechercher votre service :

Après avoir sélectionné votre service parmi les résultats retournés et cliqué sur « Apply Selection », cliquer sur « Ouvrir document WSDL pour liaison sélectionnée » :

Le WSDL apparait :

Enregistrer le en local sur votre machine :

Entrer ensuite en édition sur votre formulaire Adobe afin d’y ajouter une nouvelle connexion aux données :

Spécifier qu’il faut récupérer la description des données d’un fichier WSDL :

Récupérer ensuite votre fichier WSDL :

Valider la nouvelle connexion :

La nouvelle connexion apparaît dans la hiérarchie :

En dépilant cette dernière on retrouve nos paramètres de bapi (nom et prénom) :

Glisser/déposer le bouton au sein de la mise en forme :

Télécharger le formulaire en local sur votre machine puis entrer en modification dessus :

En cliquant sur le bouton, une popup de demande d’autorisation peut apparaitre :

Renseigner ensuite vos paramètres de connexion au système SAP (suivant le niveau de sécurité appliqué au web service précédemment) :

On peut voir que la bapi a bien été exécutée via le web service et que les données saisies dans le formulaire interactif ont bien été intégrées :

Publicités

6 commentaires sur “Adobe Interactive Forms : validation via Webservices

  1. Bonjour,
    Je vous remercie pour cette tutorial, je cherchais justement quelque chose de similaire. Je rencontre juste un petite problème.
    Sur le point « Télécharger le formulaire en local sur votre machine puis entrer en modification dessus : »
    Pouvez vous me dire s’il vous plait comment vous avez fait pour telecharger votre pdf en local? Moi quand je l’enregistrer « Je fais une impression » mais le formulaire n’est plus éditable.
    Pouvez vous m’éclairer sur ce point.
    Je vous remercie d’avance.

  2. Bonjour,

    Il me semble que je l’avais fait via un programme :

    *&———————————————————————*
    *& Report YDOWNLOAD_FORM
    *&
    *&———————————————————————*
    *&
    *&
    *&———————————————————————*
    REPORT ydownload_form.

    DATA:
    t_att_content_hex TYPE solix_tab,
    l_fm_name TYPE rs38l_fnam,
    l_formname TYPE fpname VALUE ‘YCALLBACK_ADOBE_FORM_MAIL’,
    fp_docparams TYPE sfpdocparams,
    fp_formoutput TYPE fpformoutput,
    fp_outputparams TYPE sfpoutputparams.

    PARAMETERS:
    p_export TYPE rlgrap-filename.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_export.
    * Gestion du matchcode pour le nom du fichier :
    CONSTANTS :
    * Définition des constantes locales :
    lc_def_path TYPE char20 VALUE ‘C:\WINDOWS\BUREAU’.

    * Appel de la popup de recherche de fichier :
    CALL FUNCTION ‘WS_FILENAME_GET’
    EXPORTING
    def_filename = space
    def_path = lc_def_path
    * mask = lc_mask
    mode = ‘O’
    title = ‘Sauvegarder sous’
    IMPORTING
    filename = p_export
    EXCEPTIONS
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    OTHERS = 5.

    START-OF-SELECTION.
    PERFORM get_function_module.
    PERFORM convert_pdf_binary.

    DATA lv_filename TYPE string.
    lv_filename = p_export.
    CALL METHOD cl_gui_frontend_services=>gui_download
    EXPORTING
    * bin_filesize = lv_size
    filename = lv_filename
    filetype = ‘BIN’
    * append = SPACE
    * write_field_separator = SPACE
    * header = ’00’
    * trunc_trailing_blanks = SPACE
    * write_lf = ‘X’
    * col_select = SPACE
    * col_select_mask = SPACE
    * dat_mode = SPACE
    * confirm_overwrite = SPACE
    * no_auth_check = SPACE
    codepage = ‘1100’
    * ignore_cerr = ABAP_TRUE
    * replacement = ‘#’
    * write_bom = SPACE
    * trunc_trailing_blanks_eol = ‘X’
    * wk1_n_format = SPACE
    * wk1_n_size = SPACE
    * wk1_t_format = SPACE
    * wk1_t_size = SPACE
    * show_transfer_status = ‘X’
    * fieldnames =
    * write_lf_after_last_line = ‘X’
    * IMPORTING
    * filelength =
    CHANGING
    data_tab = t_att_content_hex
    * EXCEPTIONS
    * file_write_error = 1
    * no_batch = 2
    * gui_refuse_filetransfer = 3
    * invalid_type = 4
    * no_authority = 5
    * unknown_error = 6
    * header_not_allowed = 7
    * separator_not_allowed = 8
    * filesize_not_allowed = 9
    * header_too_long = 10
    * dp_error_create = 11
    * dp_error_send = 12
    * dp_error_write = 13
    * unknown_dp_error = 14
    * access_denied = 15
    * dp_out_of_memory = 16
    * disk_full = 17
    * dp_timeout = 18
    * file_not_found = 19
    * dataprovider_exception = 20
    * control_flush_error = 21
    * not_supported_by_gui = 22
    * error_no_gui = 23
    * others = 24
    .
    IF sy-subrc 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    *&———————————————————————*
    *& Form GET_FUNCTION_MODULE
    *&———————————————————————
    FORM get_function_module .
    CALL FUNCTION ‘FP_FUNCTION_MODULE_NAME’
    EXPORTING
    i_name = l_formname
    IMPORTING
    e_funcname = l_fm_name.
    * E_INTERFACE_TYPE =
    fp_outputparams-nodialog = ‘X’.
    fp_outputparams-getpdf = ‘X’.
    CALL FUNCTION ‘FP_JOB_OPEN’
    CHANGING
    ie_outputparams = fp_outputparams
    EXCEPTIONS
    cancel = 1
    usage_error = 2
    system_error = 3
    internal_error = 4
    OTHERS = 5.
    IF sy-subrc 0.
    CASE sy-subrc.
    WHEN OTHERS.
    ENDCASE.  » CASE sy-subrc
    ENDIF.
    fp_docparams-langu = ‘X’.
    fp_docparams-country = ‘US’.
    fp_docparams-fillable = ‘X’.
    CALL FUNCTION l_fm_name
    EXPORTING
    /1bcdwb/docparams = fp_docparams
    IMPORTING
    /1bcdwb/formoutput = fp_formoutput
    EXCEPTIONS
    usage_error = 1
    system_error = 2
    internal_error = 3
    OTHERS = 4.
    IF sy-subrc 0.
    CASE sy-subrc.
    WHEN OTHERS.
    ENDCASE.  » CASE sy-subrc
    ENDIF.  » IF sy-subrc 0
    CALL FUNCTION ‘FP_JOB_CLOSE’
    * IMPORTING
    * E_RESULT = result
    EXCEPTIONS
    usage_error = 1
    system_error = 2
    internal_error = 3
    OTHERS = 4
    .
    IF sy-subrc 0.
    CASE sy-subrc.
    WHEN OTHERS.
    ENDCASE.  » CASE sy-subrc
    ENDIF.  » IF sy-subrc 0.
    ENDFORM.  » GET_FUNCTION_MODULE
    *&———————————————————————*
    *& Form CONVERT_PDF_BINARY
    *&———————————————————————
    FORM convert_pdf_binary .
    CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
    EXPORTING
    buffer = fp_formoutput-pdf
    * APPEND_TO_TABLE = ‘ ‘
    * IMPORTING
    * OUTPUT_LENGTH =
    TABLES
    binary_tab = t_att_content_hex .
    ENDFORM.  » CONVERT_PDF_BINARY

  3. Je suis de retour comme promis. Alors j’ai eu un peu du mal avec le programme que vous m’avez donné j’ai pu extraire le pdf depuis le programme standard FP_TEST_IA_01 et tout fonctionne correctement.
    Merci encore pour le Tutorial

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s