2012 Mar 26 6:48 AM
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.
2012 Mar 26 7:18 AM
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
2012 Mar 26 7:25 AM
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.
2012 Mar 26 8:22 AM
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
2012 Mar 26 12:55 PM
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