Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

help on pdf document creation

Former Member
0 Likes
917

I  am  doing  coding  as  below  for  reading  PO  whenever  it  changes  and  sending  to  the  requestor  through  mail  as  PDF,



FORM entry_neu USING ent_retco ent_screen.


  TYPES:
       BEGIN OF meein_xaend.
          INCLUDE STRUCTURE cdshw.
  TYPES:   ebelp LIKE ekpo-ebelp,
           zekkn LIKE ekkn-zekkn,
           etenr LIKE eket-etenr,
           ctxnr LIKE t166c-ctxnr,
           rounr LIKE t166c-rounr,
           insert,
           flag_adrnr,
        END OF meein_xaend.

  TYPES:     BEGIN OF meein_purchase_doc_print,
           xekko   LIKE ekko,
           xpekko  LIKE pekko,
           xekpa   LIKE msgpa  OCCURS 0,
           xekpo   LIKE ekpo  OCCURS 0,
           xpekpo  LIKE pekpo OCCURS 0,
           xeket   LIKE eket  OCCURS 0,
           xekkn   LIKE ekkn  OCCURS 0,
           xekek   LIKE ekek  OCCURS 0,
           xekeh   LIKE ekeh  OCCURS 0,
           xaend   TYPE meein_xaend OCCURS 0,
           xtkomv  TYPE komv  OCCURS 0,
     END OF meein_purchase_doc_print.


  DATA: l_druvo LIKE t166k-druvo,
        l_nast  LIKE nast,
        l_from_memory,
        l_doc   TYPE meein_purchase_doc_print.

  DATA  toa_dara1  LIKE  toa_dara.
  DATA  arc_params1  LIKE  arc_params.

DATA   l_address  LIKE   bapiaddr3.

DATA l_return LIKE bapiret2.


  CLEAR ent_retco.

  IF l_nast-aende EQ space.
    l_druvo = '1'.
  ELSE.
    l_druvo = '2'.
  ENDIF.


  CALL FUNCTION 'ME_READ_PO_FOR_PRINTING'
    EXPORTING
      ix_nast        = l_nast
      ix_screen      = ent_screen
    IMPORTING
      ex_retco       = ent_retco
      ex_nast        = l_nast
      doc            = l_doc
    CHANGING
      cx_druvo       = l_druvo
      cx_from_memory = l_from_memory.


  CHECK ent_retco EQ 0.


  CALL FUNCTION 'ME_PRINT_PO'
    EXPORTING
      ix_nast        = l_nast
      ix_druvo       = l_druvo
      doc            = l_doc
      ix_screen      = ent_screen
      ix_from_memory = l_from_memory
      ix_toa_dara    = toa_dara1
      ix_arc_params  = arc_params1
    IMPORTING
      ex_retco       = ent_retco.

ENDFORM.                    "entry_neu



CALL FUNCTION 'BAPI_USER_GET_DETAIL'

EXPORTING
  username             =  ekpo-afnam
IMPORTING
address              =   l_address
*   COMPANY              =
*   SNC                  =
*   REF_USER             =
*   ALIAS                =
*   UCLASS               =
*   LASTMODIFIED         =
*   ISLOCKED             =
TABLES
*   PARAMETER            =
*   PROFILES             =
*   ACTIVITYGROUPS       =
  return               = l_return.
*   ADDTEL               =
*   ADDFAX               =
*   ADDTTX               =
*   ADDTLX               =
*   ADDSMTP              =
*   ADDRML               =
*   ADDX400              =
*   ADDRFC               =
*   ADDPRT               =
*   ADDSSF               =
*   ADDURI               =
*   ADDPAG               =
*   ADDCOMREM            =
*   PARAMETER1           =
*   GROUPS               =
*   UCLASSSYS            =
*   EXTIDHEAD            =
*   EXTIDPART            =
*   SYSTEMS              =


*reading  email  address
READ  l_address  into  work  area .

here  i  has  to  generate the PDF Documents   ,  please  help  me  on  how  to  generate  pdf  document  .

Many  thanks  in  advance.

4 REPLIES 4
Read only

former_member222709
Contributor
0 Likes
807

Hi,

When you want to print a PO, whether a hard copy or in pdf, you need to have a pre-defined format where the data of the PO will be inserted.

Ideally, it can be a Smartform designed or customized as per the client's requirement. Once you have your Smartform done, you can suppress the dialog pop-up of the Smartform FM 'SSF_FUNCTION_MODULE_NAME' and then convert the Smartform to pdf using FM 'CONVERT_OTF'.

A lot of help for creating PO Smartform and using 'CONVERT_OTF' is available on sdn. If this resolves your issue, then, do try the above steps and post if you any particular queries in applying them.

Regards,

Pranav

Read only

0 Likes
807

thanks  for  your  reply  ,  in  my  spec  it  is  mentioned  to refer   logic  in  ADOBE_PRINT_OUTPUT in program SAPFM06P  for  creating  pdf  document ,  so  i  has  to  copy  full   logic  present  in   ADOBE_PRINT_OUTPUT  and  my  requirement  is  for  order   EF  application,  please  help here.

Read only

0 Likes
807

I  am using  below  code  ,  please  check  whether  it  is  correct  for  creating  pdf  document.

   *&---------------------------------------------------------------------*
*&  Include           FM06PE04
*&---------------------------------------------------------------------*
FORM adobe_print_output USING  value(if_druvo)   TYPE druvo
                               value(if_preview) TYPE c
                        CHANGING     ef_retco    LIKE sy-subrc.

  DATA: cl_output_po TYPE REF TO cl_purchase_order_output,
  cl_output_knt TYPE REF TO cl_purchase_contract_output,
    cl_output_schedagr TYPE REF TO cl_purchase_sched_agr_output,
        fp_docparams     TYPE sfpdocparams,
        fp_outputparams  TYPE sfpoutputparams,
        fp_formoutput    TYPE fpformoutput,
        fp_interfacetype TYPE fpinterfacetype,
        lf_formname      TYPE fpname,
        l_errstr    TYPE string.
  DATA: l_ebeln TYPE ebeln,
    ls_ekko TYPE ekko,
      W_CX_ROOT          TYPE REF TO CX_ROOT,
      MESG TYPE STRING.


  IF nast-kappl = 'EF'.

    CREATE OBJECT cl_output_po TYPE cl_purchase_order_output
                            EXPORTING c_mode  = if_druvo
                                      es_nast = nast.

    CALL METHOD cl_output_po->read.

  ELSE.
    MOVE nast-objky(10) TO l_ebeln.

    SELECT SINGLE * FROM ekko INTO ls_ekko
    WHERE ebeln EQ l_ebeln.

    IF ls_ekko-bstyp = 'K'.
      CREATE OBJECT cl_output_knt TYPE cl_purchase_contract_output
                              EXPORTING c_mode  = if_druvo
                                        es_nast = nast.

      CALL METHOD cl_output_knt->read.
    ELSE.
      CREATE OBJECT cl_output_schedagr
            TYPE cl_purchase_sched_agr_output
                           EXPORTING c_mode  = if_druvo
                                     es_nast = nast.

      CALL METHOD cl_output_schedagr->read.

    ENDIF.

  ENDIF.
  DATA: ls_function TYPE rs38l_fnam, "LIKE tnapr-funcname,
        ls_options  TYPE ssfcompop,
        ls_control  TYPE ssfctrlop.

  CLEAR ef_retco.

  ls_function = tnapr-funcname.

  IF NOT tnapr-fonam IS INITIAL.
    lf_formname = tnapr-fonam.
    TRY.
        CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
          EXPORTING
            i_name               = lf_formname
          IMPORTING
            e_funcname           = ls_function
            e_interface_type     = fp_interfacetype        .

      CATCH CX_ROOT INTO W_CX_ROOT.
        MESG = W_CX_ROOT->GET_TEXT( ).
        WRITE:/ MESG.

    ENDTRY.

    IF sy-subrc <> 0.


      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.


  PERFORM fill_control_structure USING    nast
                                          if_preview
                                 CHANGING fp_outputparams.

  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.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CLEAR: fp_docparams.
  fp_docparams-langu = nast-tdspras.
  fp_docparams-country = nast-tland.
  IF nast-kappl = 'EF'.
    call function ls_function
      EXPORTING
        /1bcdwb/docparams = fp_docparams
        mode              = cl_output_po->mode
        header            = cl_output_po->is_ekko
        addressinfo       = cl_output_po->is_t024e
        headerinfo        = cl_output_po->is_t166u
        contactinfo       = cl_output_po->is_t024
        headertext        = cl_output_po->it_t166k
        paymentterms      = cl_output_po->it_payment
        item              = cl_output_po->it_ekpo
        itemline          = cl_output_po->it_item
        schedule          = cl_output_po->it_eket
        conditions        = cl_output_po->it_komvd
        manfdetails       = cl_output_po->it_htnmat
        changetext        = cl_output_po->it_t166t
        account           = cl_output_po->it_ekkn
        qmtext            = cl_output_po->it_qmtext
        texts             = cl_output_po->it_t166p
        documents         = cl_output_po->it_drad
        komk              = cl_output_po->is_komk
        componentshdr     = cl_output_po->it_complist_hdr
        components        = cl_output_po->it_complist
        invoice           = cl_output_po->it_fpltdr
        invoiceper        = cl_output_po->it_fpltdr_per
        invoiceval        = cl_output_po->it_fpltdr_val
        appendixtext      = cl_output_po->it_t166a
        shipinstr         = cl_output_po->it_t027b
        variants          = cl_output_po->it_pekpov
        configmat         = cl_output_po->it_econf_out
        services          = cl_output_po->it_ml_esll
        srvlines          = cl_output_po->it_srvlines
        srvtyp            = cl_output_po->it_srvtyp
        srvhdr            = cl_output_po->it_srvhdr
        srvtime           = cl_output_po->it_time
        srvvalue          = cl_output_po->it_esuh
        formulahdr        = cl_output_po->it_formel
        formulabody       = cl_output_po->it_variablen
        srvconditions     = cl_output_po->it_komvd_srv
        srvtext           = cl_output_po->it_t166p_srv
        chgtxtsrv         = cl_output_po->it_t166t_srv
        mainthdr          = cl_output_po->it_mmpt
        maintpos          = cl_output_po->it_mpos.


  ELSE.
   IF ls_ekko-bstyp = 'K'.

    call function ls_function
      EXPORTING
        /1bcdwb/docparams = fp_docparams
        mode              = cl_output_knt->mode
        header            = cl_output_knt->is_ekko
        addressinfo       = cl_output_knt->is_t024e
        headerinfo        = cl_output_knt->is_t166u
        contactinfo       = cl_output_knt->is_t024
        headertext        = cl_output_knt->it_t166k
        paymentterms      = cl_output_knt->it_payment
        item              = cl_output_knt->it_ekpo
        itemline          = cl_output_knt->it_item
        schedule          = cl_output_knt->it_eket
        contconditions    = cl_output_knt->it_ekomd
        quanconditions    = cl_output_knt->it_ekomd_quant
        valueconditions   = cl_output_knt->it_ekomd_value
        lineconditions    = cl_output_knt->it_ekomd_cond
        manfdetails       = cl_output_knt->it_htnmat
        changetext        = cl_output_knt->it_t166t
        account           = cl_output_knt->it_ekkn
        qmtext            = cl_output_knt->it_qmtext
        texts             = cl_output_knt->it_t166p
        documents         = cl_output_knt->it_drad
        komk              = cl_output_knt->is_komk
        invoice           = cl_output_knt->it_fpltdr
        invoiceper        = cl_output_knt->it_fpltdr_per
        invoiceval        = cl_output_knt->it_fpltdr_val
        appendixtext      = cl_output_knt->it_t166a
        shipinstr         = cl_output_knt->it_t027b
        variants          = cl_output_knt->it_pekpov
        configmat         = cl_output_knt->it_econf_out
        services          = cl_output_knt->it_ml_esll
        srvlines          = cl_output_knt->it_srvlines
        srvtyp            = cl_output_knt->it_srvtyp
        srvhdr            = cl_output_knt->it_srvhdr
        srvtime           = cl_output_knt->it_time
        srvvalue          = cl_output_knt->it_esuh
        formulahdr        = cl_output_knt->it_formel
        formulabody       = cl_output_knt->it_variablen
        srvconditions     = cl_output_knt->it_komvd_srv
        srvtext           = cl_output_knt->it_t166p_srv
        chgtxtsrv         = cl_output_knt->it_t166t_srv
        mainthdr          = cl_output_knt->it_mmpt
        maintpos          = cl_output_knt->it_mpos.
     ELSE.
      call function ls_function
      EXPORTING
        /1bcdwb/docparams = fp_docparams
        mode              = cl_output_schedagr->mode
        header            = cl_output_schedagr->is_ekko
        addressinfo       = cl_output_schedagr->is_t024e
        headerinfo        = cl_output_schedagr->is_t166u
        contactinfo       = cl_output_schedagr->is_t024
        headertext        = cl_output_schedagr->it_t166k
        paymentterms      = cl_output_schedagr->it_payment
        item              = cl_output_schedagr->it_ekpo
        itemline          = cl_output_schedagr->it_item
        schedule          = cl_output_schedagr->it_eket
        conditions        = cl_output_schedagr->it_komvd
        contconditions    = cl_output_schedagr->it_ekomd
        quanconditions    = cl_output_schedagr->it_ekomd_quant
        valueconditions   = cl_output_schedagr->it_ekomd_value
        lineconditions    = cl_output_schedagr->it_ekomd_cond
        manfdetails       = cl_output_schedagr->it_htnmat
        changetext        = cl_output_schedagr->it_t166t
        account           = cl_output_schedagr->it_ekkn
        qmtext            = cl_output_schedagr->it_qmtext
        texts             = cl_output_schedagr->it_t166p
        documents         = cl_output_schedagr->it_drad
        komk              = cl_output_schedagr->is_komk
        invoice           = cl_output_schedagr->it_fpltdr
        invoiceper        = cl_output_schedagr->it_fpltdr_per
        invoiceval        = cl_output_schedagr->it_fpltdr_val
        appendixtext      = cl_output_schedagr->it_t166a
        shipinstr         = cl_output_schedagr->it_t027b
        variants          = cl_output_schedagr->it_pekpov
        configmat         = cl_output_schedagr->it_econf_out
        services          = cl_output_schedagr->it_ml_esll
        srvlines          = cl_output_schedagr->it_srvlines
        srvtyp            = cl_output_schedagr->it_srvtyp
        srvhdr            = cl_output_schedagr->it_srvhdr
        srvtime           = cl_output_schedagr->it_time
        srvvalue          = cl_output_schedagr->it_esuh
        formulahdr        = cl_output_schedagr->it_formel
        formulabody       = cl_output_schedagr->it_variablen
        srvconditions     = cl_output_schedagr->it_komvd_srv
        srvtext           = cl_output_schedagr->it_t166p_srv
        chgtxtsrv         = cl_output_schedagr->it_t166t_srv
        mainthdr          = cl_output_schedagr->it_mmpt
        maintpos          = cl_output_schedagr->it_mpos.

     ENDIF.

  ENDIF.

  CALL FUNCTION 'FP_GET_LAST_ADS_ERRSTR'
    IMPORTING
      E_ADSERRSTR = l_errstr.



  CALL FUNCTION 'FP_JOB_CLOSE'
*           IMPORTING
*             E_RESULT             =
   EXCEPTIONS
     usage_error          = 1
     system_error         = 2
     internal_error       = 3
     OTHERS               = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " adobe_print_output



*&---------------------------------------------------------------------*
*&      Form  fill_control_structure
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_NAST  text
*      -->P_IF_PREVIEW  text
*      <--P_FP_OUTPUTPARAMS  text
*----------------------------------------------------------------------*
FORM fill_control_structure  USING    value(is_nast)    TYPE nast
                                      value(if_preview) TYPE c
                             CHANGING es_outparms  TYPE sfpoutputparams.

  CLEAR: es_outparms.
  IF if_preview IS INITIAL.
    CLEAR: es_outparms-preview.
  ELSE.
    es_outparms-preview = 'X'.
  ENDIF.
  es_outparms-nodialog = 'X'.
  es_outparms-dest = is_nast-ldest.
  es_outparms-reqimm = is_nast-dimme.
  es_outparms-reqdel = is_nast-delet.
  es_outparms-copies = is_nast-anzal.
  es_outparms-dataset = is_nast-dsnam.
  es_outparms-suffix1 = is_nast-dsuf1.
  es_outparms-suffix2 = is_nast-dsuf2.
  es_outparms-covtitle = is_nast-tdcovtitle.
  es_outparms-cover = is_nast-tdocover.
  es_outparms-receiver = is_nast-tdreceiver.
  es_outparms-division = is_nast-tddivision.
  es_outparms-reqfinal = 'X'.
  es_outparms-arcmode = is_nast-tdarmod.
  es_outparms-schedule = is_nast-tdschedule.
  es_outparms-senddate = is_nast-vsdat.
  es_outparms-sendtime = is_nast-vsura.


ENDFORM.                    " fill_control_structure

Read only

0 Likes
807

This must be your 20th or so locked post, old and new SCN combined. When will you learn that you cannot just dump your code or requirements here for others to work everything out for you.

Do some research for information, read documentation, attend classes.

Thread locked.

Thomas