September 09, 2010     | Register
  
Subject: Imprimer des factures scannés PDF en masse possible?
Prev Next
You are not authorized to post a reply.

Author Messages

amanbenzaza
Messages:69

03/02/2010 23:12:13  

Bien qu'on approche de la solution mais lentement, j'aimerai savoir si une personne a déjà fait cela et comment?
On a des factures MM reçus via IDOC et stoquées en PDF sur le serveur SAP (pas de spool sinon c'a serai trop facile :-)). Il n'ya aucun problème de les visualiser une à une et les imprimer une à une aussi.. mais la le client veut que ca soit une impression de masse - directement -. On creuse..on creuse...
Merci pour les mains expertes.


Manfred von Richthofen

Fredo
Messages:241

04/02/2010 8:27:36  

 

Tu nous donnes pas suffisemment d'information pour te répondre.

 

Où sont stockées tes factures ? en GOS ? en DMS ? ....

Tu veux les imprimer une fois en masse ? ou régulièrement ?

Quel est l'OS de ton serveur ?

 

 


sandraros
Messages:197

04/02/2010 10:20:17  

Je ne pense pas que la question soit sur la récupération, mais sur comment envoyer les PDF à l'imprimante.

Vu que l'imprimante n'accepte souvent que son langage (en anglais le "PDL"), par expl le postscript, le PCL, etc., rarement le PDF natif, la question est: comment convertir le PDF en PDL?

Si l'on veut utiliser les drivers windows, il faut convertir le PDF en GDI, et le driver convertira de GDI en PDL.

Bref, tout ça pour dire qu'il faut un logiciel externe. Acrord32.exe (le viewer) a une option qui permet de lancer l'impression directement, mais il n'est pas spécialisé et ça m'étonnerait qu'on puisse le retenir.

Donc, quels logiciels permettent de faire ça, quels retours d'expérience avez-vous? (ghostscript, pdfmachin, pdftruc, etc.)


amanbenzaza
Messages:69

04/02/2010 15:17:56  
Je vais être plus clair :

1. On a des fournisseurs qui utilisent un prestataire pour scanner en PDF leur factures et générer des fichiers des données de ces même factures
2. a ) Les facture PDF sont déposés par un job sur le serveur SAP visible via AL11 comme suit :
Directory: /interface/PRESTATAIRE/IN/image
utilisable
vu
modifié
Dernière modif. Créé par Long. Nom

14.01.2010 15:06:25 dr1adm 12 288 .
25.11.2009 09:12:27 dr1adm 256 ..
X X 10.11.2009 16:10:57 ir1adm 77 256 20091030002001.PDF_O
X 13.11.2009 14:59:12 dr1adm 77 256 20091030002001.pdf
X 13.11.2009 14:59:12 dr1adm 75 121 20091030002006.pdf

2. b les données de ces factures sont intégrés dans SAP par IDOC.
3. on a développé un programme qui met en pièce jointe les facture PDF (MIR4) avec les factures créés par SAP (pour un contrôle de conformité éventuel donnée/factures PDF) .
RESULTAT : on peut visualiser facture par facture et imprimer facture par facture, mais on ne peut pas le faire en masse..
la solution qu'on a trouvé pour l'instant est de rapatrier les factures PDF sur un serveur local PC et à l'utilisateur de tous les sélectionner et les imprimer en même temps... je sais c'est pas le top.. mais bon c'est une solution rapide... voilà j'espère que je suis claire comme ca..

Manfred von Richthofen

Fredo
Messages:241

09/02/2010 14:04:43  

Il manque juste de savoir si tes documents tu les lies bien avec ArchivLink 

 

 


amanbenzaza
Messages:69

10/02/2010 15:44:35  
Oui monsieur puisqu'ils sont visualisées avec tous les module- fonctions archivlink grace à leur ID comme suit :

CALL FUNCTION 'ARCHIVOBJECT_DISPLAY'
EXPORTING
archiv_doc_id = '4B163737372F029502000000AC143421'
archiv_id = 'ZX'
objecttype = 'BUS2081'
object_id = '00128822692009' "Concaténation facture // année
ar_object = 'ZMMINVOICE'
doc_type = 'PDF'
EXCEPTIONS
error_archiv = 1
error_communicationtable = 2
error_kernel = 3
OTHERS = 4.

On peut aussi récupérér les données des dites factures par les MF suivants :
ARCHIVOBJECT_GET_TABLE
ARCHIVOBJECT_GET_BYTES
ARCHIVOBJECT_STATUS (donne la facture et l'année)
ARCHIVOBJECT_GET_URI '(Adresse du serveur et infos fichier)
ARCHIVOBJECT_URL_FROM_AS (Donne le serveur directement)
ARCHIVOBJECT_DISPLAY_MIX1 (Afficher avec adobe)
ARCHIVOBJECT_DISPLAY_HTMLCNTRL (Encore mieux)
Tables TOA01 avec SAP_OBJECT = 'BUS2081' => Factures à imprimer..

Donc aucun souci pour les visualiser et les imprimer une à une... mais en masse non... malheureusement.
A VOTRE BON CŒUR MESSIEURS DAMES DEMOISELLES !!!! ;-)

Manfred von Richthofen

Fredo
Messages:241

11/02/2010 8:06:19  

Moi j'ai ca : En gros, j'ai stocké dans GOS des PDF ou autres, et je les liste pour les coller dans un email. Ce que tu peux faire, c'est les lister, les extraires et les imprimer en avant plant (SapGui) avec l'instruction de Acrobat.

*---------------------------------------------------------------------*
*   Form P_GET_BACC_FOUR.                                             *
*---------------------------------------------------------------------*
FORM p_get_bacc_four CHANGING is_cert STRUCTURE g_cert
                              w_subrc TYPE      sysubrc.


  DATA : it_objects   TYPE sibflporbt,
         it_link_a    TYPE obl_t_link ,
         it_link_b    TYPE obl_t_link ,
         it_roles     TYPE obl_t_rolt ,
         it_relations TYPE obl_t_relt ,
         it_role2     TYPE obl_t_role ,


         is_role      TYPE obl_s_rolt ,
         is_object    TYPE sibflporb  ,
         is_relation  TYPE obl_s_relt ,
         is_link      TYPE obl_s_link ,


         w_doc_id     TYPE so_entryid ,
         w_file_size  TYPE i ,
         w_file_size2 TYPE so_doc_len ,
         w_file_type  TYPE fileformat ,
         w_matnr      TYPE char18.




* Vérification que la clef n'est pas vide.
  check not is_cert-vbdpl-matnr is initial and
        not is_cert-vbdpl-matnr is initial.

* Création de la clef.
  CONCATENATE is_cert-vbdpl-matnr
              is_cert-vbdpl-charg
              INTO is_object-instid.


* Chargement valeurs par defaut
  MOVE : 'ZBA_CC'     TO is_object-typeid ,
         'BO'         TO is_object-catid .
  APPEND is_object TO it_objects.

  MOVE : 'I'          TO is_role-sign ,
         'EQ'         TO is_role-option ,
         'GOSAPPLOBJ' TO is_role-low.
  APPEND is_role TO it_roles.

  MOVE : 'I'          TO is_relation-sign ,
         'EQ'         TO is_relation-option ,
         'ATTA'       TO is_relation-low .
  APPEND is_relation TO it_relations.

  MOVE : 'BIN' TO w_file_type.


* Extraction des liens.
  TRY.
      CALL METHOD cl_binary_relation=>read_links_of_objects
        EXPORTING
          it_objects          = it_objects
          it_role_options     = it_roles
          it_relation_options = it_relations
        IMPORTING
          et_links_a          = it_link_a.
    CATCH cx_obl_model_error .
    CATCH cx_obl_parameter_error .
    CATCH cx_obl_internal_error .
  ENDTRY.


* Test existence document(s).
  IF NOT it_link_a[] IS INITIAL.
    CLEAR w_subrc.
  ELSE.
    MOVE 1 TO w_subrc.
  ENDIF.




ENDFORM.                     " P_GET_BACC_FOUR

 

FORM p_mail_gos_doc USING is_cert         TYPE zqm_cert
                          w_html_txt      TYPE string
                          w_html_len      TYPE i
                          obj_mime_helper TYPE REF TO cl_gbt_multirelated_service
                          w_num           TYPE numc3.


  DATA : w_file_type       TYPE fileformat ,
         w_doc_id          TYPE so_entryid ,
         w_file            TYPE string ,
         w_content_id      TYPE string ,
         w_content_type    TYPE w3conttype ,
         w_obj_len         TYPE so_obj_len ,
         w_word_from       TYPE char300 ,
         w_word_to         TYPE char300 ,
         w_numc            TYPE char3 ,

         is_object         TYPE sibflporb ,
         is_role           TYPE obl_s_rolt ,
         is_relation       TYPE obl_s_relt ,
         is_link           TYPE obl_s_link ,
         is_doc_data       TYPE sofolenti1 ,

         it_objects        TYPE sibflporbt,
         it_roles          TYPE obl_t_rolt ,
         it_relations      TYPE obl_t_relt ,
         it_link           TYPE obl_t_link ,
         it_contentx       TYPE solix_tab .



*

  MOVE '_' TO w_numc+0(1).
  WRITE w_num+1(2) TO w_numc+1(2).


* Création de la clef.
  CONCATENATE is_cert-vbdpl-matnr
              is_cert-vbdpl-charg
              INTO is_object-instid.
  MOVE : 'ZBA_CC'     TO is_object-typeid ,
         'BO'         TO is_object-catid .
  APPEND is_object TO it_objects.
  MOVE : 'I'          TO is_role-sign ,
         'EQ'         TO is_role-option ,
         'GOSAPPLOBJ' TO is_role-low.
  APPEND is_role TO it_roles.
  MOVE : 'I'          TO is_relation-sign ,
         'EQ'         TO is_relation-option ,
         'ATTA'       TO is_relation-low .
  APPEND is_relation TO it_relations.
  MOVE : 'BIN' TO w_file_type.
*   Extraction des liens.
  TRY.
      CALL METHOD cl_binary_relation=>read_links_of_objects
        EXPORTING
          it_objects          = it_objects
          it_role_options     = it_roles
          it_relation_options = it_relations
        IMPORTING
          et_links_a          = it_link.
    CATCH cx_obl_model_error.
    CATCH cx_obl_parameter_error.
    CATCH cx_obl_internal_error.
  ENDTRY.

*   Boucle sur les docs.
  LOOP AT it_link
       INTO is_link.
*   Petit nom
    MOVE is_link-instid_b TO w_doc_id.
*   Extraction du contenu.
    CALL FUNCTION 'SO_DOCUMENT_READ_API1'
      EXPORTING
        document_id                = w_doc_id
      IMPORTING
        document_data              = is_doc_data
      TABLES
        contents_hex               = it_contentx
      EXCEPTIONS
        document_id_not_exist      = 1
        operation_no_authorization = 2
        x_error                    = 3
        OTHERS                     = 4.
    CONCATENATE is_cert-vbdpl-charg
                w_numc
                '.'
                is_doc_data-obj_type
                INTO w_file.
    CONCATENATE is_cert-vbdpl-charg
                w_numc
                '.'
                is_doc_data-obj_type
                INTO w_content_id.
    CLEAR w_content_type.
    w_obj_len      = is_doc_data-doc_size.
    CALL METHOD obj_mime_helper->add_binary_part
      EXPORTING
        content      = it_contentx
        filename     = w_file
        extension    = is_doc_data-obj_type
        description  = is_doc_data-obj_descr
        content_type = w_content_type
        length       = w_obj_len
        content_id   = w_content_id.
  ENDLOOP.



ENDFORM.                     " P_MAIL_GOS_DOC


amanbenzaza
Messages:69

11/02/2010 12:02:15  
Merci Fredo, je vais tester ta méthode.. et je reviendrais pour info.. merciiiiii

Manfred von Richthofen

Fredo
Messages:241

12/02/2010 14:55:46  

t'occupe pas de la partie AddBinary  c'est pour ajouter les pièces jointes au mail.

 

après, il manque le module fonction pour appeler une commande sur le poste client et la ligne de commande d'acrobat pour imprimer en arrière plant


jfo
Messages:1743

15/02/2010 10:05:21  
Dites donc cela mériterais d'etre publié comme ABAP TIPS dans les articles

webmaster du site (C'est moi le chef ici, pas cette crevure de Celdron)

Mon site web perso à wouam.

Fredo
Messages:241

22/02/2010 10:21:51  

J'ai en projet la mise en place d'un HTTP Content Server, ca pourrait etre plus sympa (deuxième semestre)

 


jfo
Messages:1743

22/02/2010 11:39:12  
Oui j'adorerais... perso j'ai découvert jack rabbit comme HTTP content server... A propos quelqu'un aurait les spécifications des RFC a créer pour faire un content server ArchiveLink

webmaster du site (C'est moi le chef ici, pas cette crevure de Celdron)

Mon site web perso à wouam.

Fredo
Messages:241

22/02/2010 14:59:28  

oulaaa non

tu pense le trouver librement ?

 

La dernière que j'en ai trouvé une, et je pensais que ca n'existait pas, c'est pour faire de l'OTF


kcqp679
Messages:33

26/02/2010 11:31:12  
Bonjour,

L'impression en arrière plan depuis SAP de document non SAP ( PDF , document offcie etc..) est une problème et le seul moyen de le faire "proprement" est de s'appuyer sur l'interface BC-XSD et d'un système externe. ( voir la note OSS 810025 ). Attention Les systèmes externes ne sont pas nombreux et les coûts de licence peuvent être assez concéquent. Je sais que la société seal sytem fourni ce type de solution (http://www.sealsystems.de/fr/solutions/produits/produits-pour-sap/sap-records-management/bc-xdc.html).
Si non une façon moins "propre" d'impirmer un PDF en arrière paln depuis SAP est de convertir via une ligne de commande le PDF en postscript en utilisant un exécutable type pdf2PS et d'envoyer le fichier pS à l'imprimante. le problème est que les exécutables gratuit du type PDF2PS que l'on peut trouver sur le net ne sont pas compatibles avec toutes les versions de acrobat reader donc en fonction de la version utiliser pour créer le PDF une fois cela marche une fois pas !!! Donc le seul moyen d'utiliser cette solution est de maitriser la version d'acrobat qui sert à créer les doc ce qui n'est pas possible si les pDF te sont envoyés par des partenaires ( client, fournisseur etc...).

David
You are not authorized to post a reply.
Forums > Forums SAP > Technique : ABAP et ABAP OO > Imprimer des factures scannés PDF en masse possible?



ActiveForums 3.7