Download BSP application

Hello,
In out CRM 4.0 implementation, we have created an HTML survey for our customers to fill up after they have received full set of services. The link to the survey is being sent in an email and it contains form fields and radio buttons for selection. Additionally, there is a 'SUBMIT' button which the customers hit on after filling in the survey.
The requirement is that we capture the customer response "AS IS" in a file,after they hit the Submit button, and save it on our server. I have tried to use the methods 'GET_CDATA' and 'GET_RAW_MESSAGE' of 'IF_HTTP_REQUEST'. I have also used the 'DOWNLOAD' method of CL_BSP_UTILITY. Now the issues I am facing are:
1) The http reply from the methods is not understandable as it is in XSTRING format. We need to capture the .html file.
2) The download funtion is putting the file somewhere I am not able to trace.
Any hints to the above would be appreciated.
Thanks is advance.

when they hit "submit"
in oninput processing set a flag to know that the user had clicked the submit button.
and in onmanipulation event write the following code.
declare httpbody as a var in page attribute with type string.
if not flag is initial .
call method response->if_http_entity~get_cdata
           receiving
              data = httpbody .
endif .
now httpbody var will contain the entire page content in string format which you can process as required

Similar Messages

  • Downloading Bsp application

    Hi,
        I've used the code sample provided in SDN to download my BSP application to local folder.
    "Tool to download BSP Application including MVC" by Boga Umashankar.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/3330a5e1-0701-0010-6e81-e88984de611a
    <u>Problem:</u>
    In my appln, Utilities --> Settings > abap editor>editor, Downwards-comp. Line Length(72) Checkbox is unchecked and there is no limitation on length of code in a line.
    When i download that application, In the output text file(of a method in a controller), The length of code in a line is limited to 73 characters and rest of the code is ignored while downloading. So only partial code is downloaded.
    So is there any solution so that i can download complete code.
    Thanks in advance,

    Hi,
    Does this happen too when you use this method?
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/abap/bsp/bsp-code-samples/abap%20code%20sample%20for%20download%20of%20a%20bsp%20application.pdf
    Eddy

  • Download BSP Application Source Code for Backup

    Dear All,
        Is there any way, I can download the whole BSP Application as a Text or HTML or DOC file, for backup purpose?
    Thank you.
    Regards
    Gladson

    have you seen this code sample
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/3330a5e1-0701-0010-6e81-e88984de611a">Tool to Download Complete BSP Application</a>
    Regards
    Raja

  • Re: Downloading BSP Code to PC for backup

    Hi,
    Is there any method or code to download BSP code to local PC? I found a link named SAPLINK but not sure how to use this.
    Please help me.
    Regards,
    Anshuman

    Hi,
    ABAP prog for downloading BSP application to PC:
    Selection Text:
    CHK_ATTR Attributes
    CHK_BSP DownLoad BSP
    CHK_CLS DownLoad Class
    CHK_CONT Controllers
    CHK_EVTS Events
    CHK_FRAG Page Fragments
    CHK_METH Methods
    CHK_PGFL Page with Flow Logic
    CHK_TYPE Types
    CHK_VIEW Views
    P_DIRCLS Folder Name
    P_DIRNAM Folder Name
    R_ALL All Components
    R_BSPALL All Components
    R_BSPPAR Partial Components
    R_PAR Partial Components
    S_BSPAPP BSP Application/s
    S_CLSNAM Class Name/s
    *& Report Z_UMA_BSP_DOWNLOAD
    report z_uma_bsp_download message-id zmsgcls line-size 180.
    * TABLES
    tables: seoclass,
    o2appl,
    o2pagcon.
    * TYPE-POOLS
    type-pools: seoo,seos,seor,seof,seot,seok,seop.
    * TYPE DEFINITIONS
    types: begin of t_class,
    clsname type seoclass-clsname, "Class Name
    descrip type seoclasstx-descript, "Class Description
    end of t_class.
    types: begin of t_component,
    clsname type seoclsname,
    cmpname type seocmpname,
    cmptype type seocmptype,
    mtdtype type seomtdtype,
    descrip type seodescr,
    end of t_component.
    types: begin of t_format,
    cmpname(30),
    decltyp(20),
    exposur(15),
    typtype(15),
    type(110),
    attval(110),
    desc(100),
    end of t_format.
    types: begin of t_format1,
    pad(4),
    sconame(30),
    decl(10),
    pass(20),
    optn(10),
    typtype(15),
    type(100),
    valu(100),
    desc(100),
    end of t_format1.
    types: begin of t_format2,
    pad(4),
    sconame(30),
    desc(100),
    end of t_format2.
    types: begin of t_mtd_compo,
    clsname type seoclsname,
    cmpname type seocmpname,
    sconame type seosconame,
    scotype type seoscotype,
    descrip type seodescr,
    end of t_mtd_compo.
    types: begin of t_bspappl,
    applname type o2applname,
    applclas type o2applclas,
    startpage type o2pageext,
    stateful type o2stateful,
    descrip type o2descr,
    end of t_bspappl.
    types: begin of t_pagdetl,
    applname type o2applname,
    pagekey type o2page,
    pagename type o2pageext,
    implclass type o2ctrcls,
    pagetype type o2pagtyp,
    controllerurl type o2pageext,
    lifetime type o2lifetime,
    state type o2pagstate,
    is_error_page type o2errpag,
    error_page type o2pageext,
    browser_cache type o2bcache,
    server_cache type o2scache,
    author type cnam,
    createdon type rdir_cdate,
    changedby type unam,
    changedon type rdir_udate,
    end of t_pagdetl.
    types: begin of t_pagcon,
    applname type o2applname,
    pagekey type o2page,
    objtype type o2objtype,
    version type r3state,
    end of t_pagcon.
    types: begin of t_pagedata,
    content type o2pageline_table,
    ev_handler type o2pagevh_tabletype,
    parameters type o2pagpar_tabletype,
    typesource type rswsourcet,
    xml_source type xstring,
    otr_guids type bsp_guids,
    html_pool type string,
    end of t_pagedata.
    types : begin of t_scr_out,
    appname type string,
    component type string,
    path type string,
    status type string ,
    etype type c,
    end of t_scr_out.
    * DATA DECLARATIONS
    data: v_langu type sy-langu,
    v_filename type string,
    x_format type t_format,
    x_format1 type t_format1,
    x_format2 type t_format2,
    v_lines type i,
    x_mtdkey type seocpdkey,
    x_transport type trkey,
    v_sourcename type programm,
    v_repid type sy-repid,
    v_dynnr type sy-dynnr,
    v_uzeit type sy-uzeit,
    v_filestr type string,
    v_datum type sy-datum,
    r_temp_all type c,
    v_cnt_cls type string.
    INTERNAL TABLE DECLARTIONS
    data: it_class type standard table of t_class with header line,
    it_compo type standard table of t_component with header line,
    it_mtd_compo type standard table of t_mtd_compo with header line,
    it_attributes type seoo_attributes_r,
    it_methods type seoo_methods_r,
    it_events type seoo_events_r,
    it_types type seoo_types_r,
    it_parameters type seos_parameters_r,
    it_exceps type seos_exceptions_r,
    it_implementings type seor_implementings_r,
    it_redefinitions type seor_redefinitions_r,
    it_friendships type seof_friendships_r,
    it_typepusages type seot_typepusages_r,
    it_clsdeferrds type seot_clsdeferrds_r,
    it_intdeferrds type seot_intdeferrds_r,
    it_explore_inheritance type seok_cls_typeinfos,
    it_explore_implementings type seok_int_typeinfos,
    it_aliases type seoo_aliases_r,
    it_bspappl type standard table of t_bspappl with header line,
    it_pagdetl type standard table of t_pagdetl with header line,
    it_pagcon type standard table of t_pagcon with header line,
    it_source type t_pagedata,
    it_scr_out type standard table of t_scr_out with header line,
    it_data(400) occurs 0 with header line,
    wa_source type line of o2pageline_table,
    wa_pagecon_key type o2pconkey.
    * CONSTANTS DECLARATIONS
    constants: gc_cmp_attr type n value 0, "COMPONENT ATTRIBUTE
    gc_cmp_meth type n value 1, "COMPONENT METHOD
    gc_cmp_evnt type n value 2, "COMPONENT EVENT
    gc_cmp_type type n value 3, "COMPONENT TYPE
    gc_mtd_meth type n value 0, "METHOD METHOD
    gc_mtd_evnt type n value 1, "METHOD EVENT
    gc_mtd_cons type n value 2, "METHOD CONSTRUCTOR
    gc_mtd_dest type n value 3, "METHOD DESTRUCTOR
    gc_mtd_getm type n value 4, "METHOD GET
    gc_mtd_setm type n value 5, "METHOD SET
    gc_sco_para type n value 0, "SCOPE PARAMETER
    gc_sco_excp type n value 1, "SCOPE EXCEPTION
    gc_exp_priv type n value 0, "EXPOSURE PRIVATE
    gc_exp_prot type n value 1, "EXPOSURE PROTECTED
    gc_exp_publ type n value 2, "EXPOSURE PUBLIC
    gc_typ_like type n value 0, "TYPE LIKE
    gc_typ_type type n value 1, "TYPE TYPE
    gc_typ_otyp type n value 2, "TYPE OBJECT TYPE
    gc_typ_tref type n value 3, "TYPE TYPE REF TO
    gc_atr_inst type n value 0, "ATTRIBUTE INSTANCE
    gc_atr_stat type n value 1, "ATTRIBUTE STATIC
    gc_atr_cnst type n value 2, "ATTRIBUTE CONSTANT
    gc_par_impo type n value 0, "PARAMETER IMPORTING
    gc_par_expo type n value 1, "PARAMETER EXPORTING
    gc_par_chng type n value 2, "PARAMETER CHANGING
    gc_par_retn type n value 3, "PARAMETER RETURNING
    gc_pas_valu type n value 0, "PARAMETER PASS BY VALUE
    gc_pas_refr type n value 1, "PARAMETER CALL BY REFERENCE
    gc_yes type c value 'X',
    gc_no type c value space,
    gc_tab(8) type c value ' ',
    gc_bsp_ctrl type o2pagtyp value 'C',
    gc_bsp_pgfr type o2pagtyp value 'X',
    gc_bsp_pgfl type o2pagtyp value space,
    gc_bsp_view type o2pagtyp value 'V',
    gc_lft_upgc type c value space,
    gc_lft_requ type c value '1',
    gc_lft_sess type c value '2'.
    * SELECTION SCREENS
    *Selection Screen for the Options
    selection-screen : begin of block b_main with frame title text-009.
    parameters : chk_bsp as checkbox user-command ucom,
    chk_cls as checkbox user-command ucom1.
    selection-screen : end of block b_main.
    *Selection Screen for the BSP Application
    selection-screen : begin of block b_bsp1 with frame title text-005.
    selection-screen : begin of block b_bsp2 with frame title text-006.
    select-options : s_bspapp for o2appl-applname no intervals modif id bsp.
    parameters : p_dirnam type rlgrap-filename default 'C:\' modif id bsp.
    selection-screen : end of block b_bsp2.
    selection-screen : begin of block b_bsp3 with frame title text-007.
    parameters : r_bspall radiobutton group rad1 user-command u1 modif id bsp default 'X',
    r_bsppar radiobutton group rad1 modif id bsp.
    selection-screen : begin of block b_bsp4 with frame title text-008.
    parameters : chk_cont as checkbox modif id bs1,
    chk_view as checkbox modif id bs1,
    chk_pgfl as checkbox modif id bs1,
    chk_frag as checkbox modif id bs1.
    selection-screen : end of block b_bsp4.
    selection-screen : end of block b_bsp3.
    selection-screen : end of block b_bsp1.
    *Selection Screen for Class Download
    selection-screen : begin of block b1 with frame title text-001.
    selection-screen : begin of block b2 with frame title text-002.
    select-options : s_clsnam for seoclass-clsname no intervals modif id cls.
    parameters : p_dircls like rlgrap-filename default 'C:\' modif id cls.
    selection-screen : end of block b2.
    selection-screen : begin of block b3 with frame title text-003.
    parameters : r_all radiobutton group rbsp user-command u2 modif id cls default 'X',
    r_par radiobutton group rbsp modif id cls.
    selection-screen : begin of block b4 with frame title text-004.
    parameters : chk_attr as checkbox modif id cl1,
    chk_meth as checkbox modif id cl1,
    chk_evts as checkbox modif id cl1,
    chk_type as checkbox modif id cl1.
    selection-screen : end of block b4.
    selection-screen : end of block b3.
    selection-screen : end of block b1.
    * INTIALIZATION
    initialization.
    v_repid = sy-repid.
    v_dynnr = sy-dynnr.
    v_langu = sy-langu.
    * AT SELECTION-SCREEN OUTPUT
    at selection-screen output.
    loop at screen.
    if chk_bsp = 'X'.
    if screen-group1 = 'BSP' or screen-group1 = 'BS1'.
    screen-active = 1.
    endif.
    else.
    if screen-group1 = 'BSP' or screen-group1 = 'BS1' .
    screen-active = 0.
    endif.
    endif.
    if r_bspall = 'X'.
    if screen-group1 = 'BS1'.
    screen-active = 0.
    endif.
    else.
    if screen-group1 = 'BS1'.
    screen-active = 1.
    endif.
    endif.
    modify screen.
    endloop.
    loop at screen.
    if chk_cls = 'X'.
    if screen-group1 = 'CLS' or screen-group1 = 'cl1'.
    screen-active = 1.
    endif.
    else.
    if screen-group1 = 'CLS' or screen-group1 = 'cl1'.
    screen-active = 0.
    endif.
    endif.
    if r_all = 'X'.
    if screen-group1 = 'CL1'.
    screen-active = 0.
    endif.
    else.
    if screen-group1 = 'CL1'.
    screen-active = 1.
    endif.
    endif.
    modify screen.
    endloop.
    * AT SELECTION-SCREEN
    at selection-screen.
    * START OF SELECTION
    start-of-selection.
    * If the user selected BSP check box then we need to do down load the BSP application
    if chk_cls is initial and
    chk_bsp is initial.
    message i001 with 'Select any download option'(007).
    exit.
    endif.
    if chk_bsp = 'X'.
    refresh it_bspappl.
    clear it_bspappl.
    if s_bspapp is initial.
    set pf-status'AA'.
    message i002 with 'Enter BSP Application Names'(010).
    exit.
    endif.
    * Check the directory name is entered or not
    if p_dirnam is initial.
    message i004 with 'Enter Directory name for BSP Download'(012).
    exit.
    else.
    if r_bspall = 'X'.
    clear : chk_cont,chk_view,chk_pgfl,chk_frag.
    endif.
    select a~applname
    a~applclas
    a~startpage
    a~stateful
    b~text into table it_bspappl
    from o2appl as a inner join o2applt as b
    on a~applname = b~applname
    where a~applname in s_bspapp and
    a~version = 'A' and
    b~langu = v_langu.
    * Check we got any entries in the class internal table
    clear v_lines.
    describe table it_bspappl lines v_lines.
    if v_lines > 0.
    loop at it_bspappl.
    perform save_bspappl_details using it_bspappl.
    perform get_bspappl_compo using it_bspappl.
    endloop.
    else.
    write:/ 'Enter Valid BSP Application Names'.
    endif.
    endif.
    endif.
    * If the user selected class check box then we need to do down load the class
    if chk_cls = 'X'.
    refresh it_class.
    clear it_class.
    clear r_temp_all.
    * Check Class name is empty or not
    if s_clsnam is initial.
    message i003 with 'Enter Class Names'(011).
    exit.
    endif.
    * Check the directory name is entered or not
    if p_dircls is initial.
    message i000 with 'Enter Directory name for Class Download'(008).
    exit.
    else.
    * if user selected All Components in Class Down Load
    * then clear all the check box variables
    move r_all to r_temp_all.
    if r_temp_all = 'X'.
    clear: chk_attr,chk_meth,chk_evts,chk_type.
    endif.
    * get the class name and Class Description from the table SEOCLASS
    * for all the classes which user entered in selection screen based on
    * the system language
    select a~clsname b~descript into table it_class
    from seoclass as a left outer join seoclasstx as b
    on a~clsname = b~clsname and
    b~langu = v_langu
    where a~clsname in s_clsnam.
    * Check we got any entries in the class internal table
    clear v_lines.
    describe table it_class lines v_lines.
    * if you got any enties in class interbnal table then we need to
    * get the other details about that class
    if v_lines > 0.
    perform add_slash_4dir changing p_dircls.
    perform check_dir_exists using p_dircls.
    loop at it_class.
    perform get_class_details using it_class-clsname 'X' ' '.
    endloop.
    else.
    write:/ 'PLEASE ENTER VALID CLASS NAMES'.
    endif.
    endif.
    endif.
    * END OF SELECTION
    end-of-selection.
    write: /1(25) 'Application Name',
    26(25) 'Component Name',
    52(50) 'Download Path',
    102(50) 'ErrorSuccess Message'.
    write:/ sy-uline.
    loop at it_scr_out.
    write:/1(25) it_scr_out-appname,
    26(25) it_scr_out-component,
    52(50) it_scr_out-path,
    102(50) it_scr_out-status.
    endloop.
    *& Form GET_CLASS_DETAILS
    * used to get the other details of the class
    form get_class_details using p_clsname p_check p_filename.
    * Data Declarations
    data: x_class type vseoclass,
    x_inheritance type vseoextend,
    x_seoclskey type seoclskey,
    x_attributes type line of seoo_attributes_r,
    x_methods type line of seoo_methods_r,
    x_events type line of seoo_events_r,
    x_types type line of seoo_types_r,
    x_parameters type line of seos_parameters_r,
    x_exceps type line of seos_exceptions_r,
    x_implementings type line of seor_implementings_r,
    x_redefinitions type line of seor_redefinitions_r,
    x_friendships type line of seof_friendships_r,
    x_typepusages type line of seot_typepusages_r,
    x_clsdeferrds type line of seot_clsdeferrds_r,
    x_intdeferrds type line of seot_intdeferrds_r,
    x_explore_inheritance type line of seok_cls_typeinfos,
    x_explore_implementings type line of seok_int_typeinfos,
    x_aliases type line of seoo_aliases_r.
    * REFRESH & CLEAR ALL THE VARIABLES.
    refresh: it_attributes,it_methods,it_events,it_types,it_parameters,
    it_exceps,it_implementings,it_redefinitions,it_friendships,
    it_typepusages,it_clsdeferrds,it_intdeferrds,it_data,
    it_explore_inheritance,it_explore_implementings,it_aliases.
    clear : it_attributes,it_methods,it_events,it_types,it_parameters,
    it_exceps,it_implementings,it_redefinitions,it_friendships,
    it_typepusages,it_clsdeferrds,it_intdeferrds,it_data,
    it_explore_inheritance,it_explore_implementings,it_aliases.
    clear : x_attributes,x_methods,x_events,x_types,x_parameters,
    x_exceps,x_implementings,x_redefinitions,x_friendships,
    x_typepusages,x_clsdeferrds,x_intdeferrds,
    x_explore_inheritance,x_explore_implementings,x_aliases,
    x_class,x_inheritance,x_seoclskey.
    * SET THE CLASS NAME TO THE STRUCTURE
    x_seoclskey-clsname = p_clsname.
    call function 'SEO_CLASS_TYPEINFO_GET'
    exporting
    clskey = x_seoclskey
    importing
    class = x_class
    attributes = it_attributes
    methods = it_methods
    events = it_events
    types = it_types
    parameters = it_parameters
    exceps = it_exceps
    implementings = it_implementings
    inheritance = x_inheritance
    redefinitions = it_redefinitions
    friendships = it_friendships
    typepusages = it_typepusages
    clsdeferrds = it_clsdeferrds
    intdeferrds = it_intdeferrds
    explore_inheritance = it_explore_inheritance
    explore_implementings = it_explore_implementings
    aliases = it_aliases
    exceptions
    not_existing = 1
    is_interface = 2
    model_only = 3
    others = 4.
    if sy-subrc <> 0.
    it_scr_out-component = p_clsname.
    it_scr_out-status = 'ERROR'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    * DOWNLOAD CLASS INFORMATION
    perform download_class_info using x_class.
    * DOWNLOAD INHERITANCE INFORMATION
    perform download_class_inht using x_inheritance.
    * DOWNLOAD CLASS IMPLEMENTATION
    perform download_class_otherdetails using p_clsname seop_ext_class_locals_imp.
    * DOWNLOAD CLASS TYPES
    perform download_class_otherdetails using p_clsname seop_ext_class_locals_def.
    DOWNLOAD CLASS MACROS
    perform download_class_otherdetails using p_clsname seop_ext_class_macros.
    DOWNLOAD CLASS ATTRIBUTES
    if r_temp_all = 'X' or chk_attr = 'X'.
    perform download_class_attr tables it_attributes.
    endif.
    DOWNLOAD CLASS METHODS
    if r_temp_all = 'X' or chk_meth = 'X'.
    perform download_class_meth tables it_methods
    it_parameters
    it_exceps.
    endif.
    Interface Implementations.
    perform download_class_implementation tables it_explore_implementings.
    DOWNLOAD CLASS EVENTS.
    if r_temp_all = 'X' or chk_evts = 'X'.
    perform download_class_evts.
    endif.
    * DOWNLOAD CLASS TYPE GROUPS.
    perform download_class_type_groups.
    * DOWNLOAD INTERNAL TYPES
    if r_temp_all = 'X' or chk_type = 'X'.
    perform download_class_internal_types.
    endif.
    if p_check = 'X'.
    * DOWNLOAD CLASS DEFINITION
    perform download_classdef using p_filename.
    else.
    * while downloading the bsp we need to pass the directory and
    * class name to the function module so the file will create
    perform download_class using p_check.
    endif.
    endif.
    endform. " GET_CLASS_DETAILS
    *& Form DOWNLOAD_CLASS_INFO
    * used to download the class information
    form download_class_info using p_x_class structure vseoclass.
    it_data = p_x_class-clsname.
    append it_data.
    clear it_data.
    it_data = p_x_class-descript.
    append it_data.
    clear it_data.
    endform. " DOWNLOAD_CLASS_INFO
    *& Form DOWNLOAD_CLASS_INHT
    * used to download the inheritance
    form download_class_inht using p_x_inheritance structure vseoextend.
    if not p_x_inheritance-refclsname is initial.
    concatenate 'INHERITED FROM: ' p_x_inheritance-refclsname into it_data.
    append it_data.
    clear it_data.
    endif.
    endform. " DOWNLOAD_CLASS_INHT
    *& Form DOWNLOAD_CLASS_ATTR
    * text
    form download_class_attr tables p_it_attr type seoo_attributes_r.
    data: x_attributes type line of seoo_attributes_r.
    it_data = '*********************************************************'.
    append it_data.
    clear it_data.
    it_data = 'ATTRIBUTES'.
    append it_data.
    clear it_data.
    it_data = '-----------'.
    append it_data.
    clear it_data.
    loop at p_it_attr into x_attributes.
    clear x_format.
    * ATTRIBUTE NAME
    x_format-cmpname = x_attributes-cmpname.
    * ATTRIBUTE DECLARATION LEVEL
    case x_attributes-attdecltyp.
    when gc_atr_inst.
    x_format-decltyp = 'INSTANCE ATTRIBUTE'.
    when gc_atr_stat.
    x_format-decltyp = 'STATIC ATTRIBUTE'.
    when gc_atr_cnst.
    x_format-decltyp = 'CONSTANT ATTRIBUTE'.
    endcase.
    * ATTRIBUTE EXPOSURE
    case x_attributes-exposure.
    when gc_exp_priv.
    x_format-exposur = 'PRIVATE'.
    when gc_exp_publ.
    x_format-exposur = 'PUBLIC'.
    when gc_exp_prot.
    x_format-exposur = 'PROTECTED'.
    endcase.
    * ATTRIBUTE TYPTYPE
    case x_attributes-typtype.
    when gc_typ_like.
    x_format-typtype = 'LIKE'.
    when gc_typ_type.
    x_format-typtype = 'TYPE'.
    when gc_typ_otyp.
    x_format-typtype = 'OBJECT TYPE'.
    when gc_typ_tref.
    x_format-typtype = 'TYPE REF TO'.
    endcase.
    * ATTRIBUTE REFERNCE TYPE
    x_format-type = x_attributes-type.
    * ATTRIBUTE INITIAL VALUE
    x_format-attval = x_attributes-attvalue.
    * ATTRIBUTE DESCRIPTION
    x_format-desc = x_attributes-descript.
    move x_format to it_data.
    append it_data.
    clear it_data.
    endloop.
    it_data = '*********************************************************'.
    append it_data.
    clear it_data.
    endform. " DOWNLOAD_CLASS_ATTR
    *& Form DOWNLOAD_CLASS_METH
    * used to download the methods of the class
    form download_class_meth tables p_it_meth type seoo_methods_r
    p_it_parm type seos_parameters_r
    p_it_excp type seos_exceptions_r.
    data: x_methods type line of seoo_methods_r,
    x_params type line of seos_parameters_r,
    x_exceps type line of seos_exceptions_r.
    clear: x_methods,x_params,x_exceps.
    it_data = 'METHODS'.
    append it_data.
    clear it_data.
    it_data = '-------'.
    append it_data.
    clear it_data.
    loop at p_it_meth into x_methods.
    clear: x_format.
    * METHOD NAME
    x_format-cmpname = x_methods-cmpname.
    * METHOD DECLARATION TYPE
    case x_methods-mtddecltyp.
    when gc_atr_inst.
    x_format-decltyp = 'INSTANCE METHOD'.
    when gc_atr_stat.
    x_format-decltyp = 'STATIC METHOD'.
    endcase.
    * METHOD EXPOSURE
    case x_methods-exposure.
    when gc_exp_priv.
    x_format-exposur = 'PRIVATE'.
    when gc_exp_publ.
    x_format-exposur = 'PUBLIC'.
    when gc_exp_prot.
    x_format-exposur = 'PROTECTED'.
    endcase.
    * METHOD DESCRIPTION.
    x_format-desc = x_methods-descript.
    move x_format to it_data.
    append it_data.
    clear it_data.
    * DOWNLOAD METHOD PARAMETERS
    perform download_method_params tables it_parameters
    using x_methods-cmpname.
    * DOWNLOAD METHOD EXCEPTIONS
    perform download_method_exceps tables it_exceps
    using x_methods-cmpname.
    * DOWNLOAD METHOD SOURCE
    perform download_method_source using it_class-clsname
    x_methods-cmpname.
    endloop.
    * DOWNLOAD RE-DEFINED METHODS IF ANY
    perform download_redef_methods.
    endform. " DOWNLOAD_CLASS_METH
    *& Form DOWNLOAD_METHOD_PARAMS
    * used to download the method parameters
    form download_method_params tables p_it_params type seos_parameters_r
    using p_cmpname.
    data: x_parameters type line of seos_parameters_r.
    clear: x_parameters.
    it_data = '^^^^PARAMETERS'.
    append it_data.
    clear it_data.
    loop at p_it_params into x_parameters where cmpname = p_cmpname.
    clear: x_format1.
    * METHOD PARAMETER NAME
    x_format1-sconame = x_parameters-sconame.
    * METHOD PARAMETER DECLARATION TYPE
    case x_parameters-pardecltyp.
    when gc_par_impo.
    x_format1-decl = 'IMPORTING'.
    when gc_par_expo.
    x_format1-decl = 'EXPORTING'.
    when gc_par_chng.
    x_format1-decl = 'CHANGING'.
    when gc_par_retn.
    x_format1-decl = 'RETURNING'.
    endcase.
    * METHOD PARAMETERS PASSING TYOE
    case x_parameters-parpasstyp.
    when gc_pas_valu.
    x_format1-pass = 'PASS BY VALUE'.
    when gc_pas_refr.
    x_format1-pass = 'PASS BY REFERENCE'.
    endcase.
    * METHOD PARAMETER TYPTYPE
    case x_parameters-typtype.
    when gc_typ_like.
    x_format1-typtype = 'LIKE'.
    when gc_typ_type.
    x_format1-typtype = 'TYPE'.
    when gc_typ_otyp.
    x_format1-typtype = 'OBJECT TYPE'.
    when gc_typ_tref.
    x_format1-typtype = 'TYPE REF TO'.
    endcase.
    * METHOD PARAMETER OPTIONAL/MANDATORY
    case x_parameters-paroptionl.
    when gc_yes.
    x_format1-optn = 'OPTIONAL'.
    when gc_no.
    x_format1-optn = 'MANDATORY'.
    endcase.
    * METHOD PARAMETER TYPE
    x_format1-type = x_parameters-type.
    * METHOD PARAMETER INITIAL VALUE
    x_format1-valu = x_parameters-parvalue.
    * METHOD PARAMETER DESCRIPTION
    x_format1-desc = x_parameters-descript.
    move x_format1 to it_data.
    append it_data.
    clear it_data.
    endloop.
    endform. " DOWNLOAD_METHOD_PARAMS
    *& Form DOWNLOAD_METHOD_EXCEPS
    * used to download the Exceptions of methods
    form download_method_exceps tables p_it_exceps type seos_exceptions_r
    using p_cmpname.
    data: x_exceps type line of seos_exceptions_r.
    clear: x_exceps.
    it_data = '^^^^EXCEPTION'.
    append it_data.
    loop at p_it_exceps into x_exceps where cmpname = p_cmpname.
    clear x_format2.
    * METHOD EXCEPTION NAME
    x_format2-sconame = x_exceps-sconame.
    * METHOD EXCEPTION DESCRIPTION
    x_format2-desc = x_exceps-descript.
    move x_format2 to it_data.
    append it_data.
    clear it_data.
    endloop.
    endform. " DOWNLOAD_METHOD_EXCEPS
    *& Form DOWNLOAD_METHOD_SOURCE
    * text
    form download_method_source using p_clsname
    p_cmpname.
    data : x_mtdkey type seocpdkey,
    x_source type line of seop_source,
    it_source type seop_source.
    refresh: it_source.
    clear : it_source,x_source,x_mtdkey.
    x_mtdkey-clsname = p_clsname.
    x_mtdkey-cpdname = p_cmpname.
    call function 'SEO_METHOD_GET_SOURCE'
    exporting
    mtdkey = x_mtdkey
    importing
    source = it_source
    exceptions
    _internal_method_not_existing = 1
    _internal_class_not_existing = 2
    others = 3.
    if sy-subrc <> 0.
    it_scr_out-component = p_cmpname.
    it_scr_out-status = ' FAILED '.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    loop at it_source into x_source.
    move x_source to it_data.
    append it_data.
    clear it_data.
    endloop.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    endif.
    endform. " DOWNLOAD_METHOD_SOURCE
    *& Form DOWNLOAD_REDEF_METHODS
    * used to download any redefined methods if any
    form download_redef_methods .
    data: x_redef type line of seor_redefinitions_r.
    loop at it_redefinitions into x_redef.
    * DOWNLOAD METHOD SOURCE
    perform download_method_source using it_class-clsname
    x_redef-mtdname.
    endloop.
    endform. " DOWNLOAD_REDEF_METHODS
    *& Form DOWNLOAD_CLASS_EVTS
    * used to download the class events types
    form download_class_evts .
    data: x_events type line of seoo_events_r.
    it_data = 'EVENTS'.
    append it_data.
    clear it_data.
    it_data = '-------'.
    append it_data.
    clear it_data.
    loop at it_events into x_events.
    clear: x_format.
    * EVENT NAME
    x_format-cmpname = x_events-cmpname.
    * METHOD DECLARATION TYPE
    case x_events-evtdecltyp.
    when gc_atr_inst.
    x_format-decltyp = 'INSTANCE EVENT'.
    when gc_atr_stat.
    x_format-decltyp = 'STATIC EVENT'.
    endcase.
    * EVENT EXPSOURE.
    case x_events-exposure.
    when gc_exp_priv.
    x_format-exposur = 'PRIVATE'.
    when gc_exp_publ.
    x_format-exposur = 'PUBLIC'.
    when gc_exp_prot.
    x_format-exposur = 'PROTECTED'.
    endcase.
    * EVENT DESCRIPTION
    x_format-desc = x_events-descript.
    append x_format to it_data.
    clear it_data.
    endloop.
    endform. " DOWNLOAD_CLASS_EVTS
    *& Form DOWNLOAD_CLASS_TYPE_GROUPS
    * used to download the type groups
    form download_class_type_groups .
    data: x_typep type line of seot_typepusages_r.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    it_data = 'TYPE-GROUPS'.
    append it_data.
    clear it_data.
    it_data = '------------'.
    append it_data.
    clear it_data.
    loop at it_typepusages into x_typep.
    it_data = x_typep-typegroup.
    append it_data.
    clear it_data.
    endloop.
    endform. " DOWNLOAD_CLASS_TYPE_GROUPS
    *& Form DOWNLOAD_CLASS_INTERNAL_TYPES
    * used to download the class type internal type definitions
    form download_class_internal_types .
    data: x_types type line of seoo_types_r.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    it_data = 'INTERNAL TYPES'.
    append it_data.
    clear it_data.
    it_data = '------------'.
    append it_data.
    clear it_data.
    loop at it_types into x_types.
    clear: x_format.
    * TYPE NAME
    x_format-cmpname = x_types-cmpname.
    * TYPE EXPSOURE.
    case x_types-exposure.
    when gc_exp_priv.
    x_format-exposur = 'PRIVATE'.
    when gc_exp_publ.
    x_format-exposur = 'PUBLIC'.
    when gc_exp_prot.
    x_format-exposur = 'PROTECTED'.
    endcase.
    * TYPTYPE
    case x_types-typtype.
    when gc_typ_like.
    x_format-typtype = 'LIKE'.
    when gc_typ_type.
    x_format-typtype = 'TYPE'.
    when gc_typ_otyp.
    x_format-typtype = 'OBJECT TYPE'.
    when gc_typ_tref.
    x_format-typtype = 'TYPE REF TO'.
    endcase.
    * TYPE
    x_format-type = x_types-type.
    * DESCRIPTION
    x_format-desc = x_types-descript.
    append x_format to it_data.
    clear it_data.
    endloop.
    endform. " DOWNLOAD_CLASS_INTERNAL_TYPES
    *& Form DOWNLOAD_CLASSDEF
    * used to download total class to the text file
    form download_classdef using p_p_filename.
    data: lv_filename type string.
    if p_p_filename = ' '.
    v_filename = it_class-clsname.
    concatenate p_dircls v_filename '.txt' into lv_filename.
    else.
    move p_p_filename to lv_filename.
    concatenate lv_filename '.txt' into lv_filename.
    endif.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_filename
    tables
    data_tab = it_data
    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
    others = 22.
    if sy-subrc <> 0.
    it_scr_out-component = it_class-clsname.
    it_scr_out-path = lv_filename.
    it_scr_out-status = 'FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_scr_out-component = it_class-clsname.
    it_scr_out-path = lv_filename.
    it_scr_out-status = 'SUCCESSFULL'.
    it_scr_out-etype = 'S'.
    append it_scr_out.
    clear it_scr_out.
    endif.
    endform. " DOWNLOAD_CLASSDEF
    *& Form SAVE_BSPAPPL_DETAILS
    * Used to Save the Bsp Application Details
    form save_bspappl_details using p_it_bspappl type t_bspappl.
    data: lv_filestr type string,
    lv_filenam type rlgrap-filename.
    refresh it_data.
    clear: it_data,lv_filestr.
    concatenate 'APPLICATION NAME: ' p_it_bspappl-applname into it_data.
    append it_data.
    concatenate 'DESCRIPTION: ' p_it_bspappl-descrip into it_data.
    append it_data.
    concatenate 'APPLICATION CLASS: ' p_it_bspappl-applclas into it_data.
    append it_data.
    concatenate 'START PAGE: ' p_it_bspappl-startpage into it_data.
    append it_data.
    if p_it_bspappl-stateful is initial.
    it_data = 'STATELESS APPLICATION'.
    else.
    it_data = 'STATEFUL APPLICATION'.
    endif.
    append it_data.
    perform add_slash_4dir changing p_dirnam.
    concatenate p_dirnam it_bspappl-applname '\' into lv_filenam.
    move lv_filenam to lv_filestr.
    call function 'GUI_CREATE_DIRECTORY'
    exporting
    dirname = lv_filenam
    exceptions
    failed = 1
    others = 2.
    move lv_filestr to v_filestr.
    concatenate lv_filestr it_bspappl-applname '.TXT' into lv_filestr.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_filestr
    tables
    data_tab = it_data
    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
    others = 22.
    if sy-subrc <> 0.
    it_scr_out-appname = p_it_bspappl-applname.
    it_scr_out-component = 'Application Details'.
    it_scr_out-path = lv_filestr.
    it_scr_out-status = 'FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_scr_out-appname = p_it_bspappl-applname.
    it_scr_out-component = 'Application Details'.
    it_scr_out-path = lv_filestr.
    it_scr_out-status = 'SUCCESSFULL'.
    it_scr_out-etype = 'S'.
    append it_scr_out.
    clear it_scr_out.
    endif.
    endform. " SAVE_BSPAPPL_DETAILS
    *& Form ADD_SLASH_4DIR
    * used to add '/' after the direcory if necessary
    form add_slash_4dir changing p_dirnamcls.
    data: lv_tempvar(1),
    lv_length type i.
    lv_length = strlen( p_dirnamcls ).
    lv_length = lv_length - 1.
    lv_tempvar = p_dirnam+lv_length(1).
    if lv_tempvar <> '\'.
    concatenate p_dirnamcls '\' into p_dirnamcls.
    endif.
    endform. " ADD_SLASH_4DIR
    *& Form CHECK_DIR_EXISTS
    * Check the Directory Exists or Not
    form check_dir_exists using p_dirnamcls.
    data: lv_filename type rlgrap-filename,
    lv_filestr type string,
    it_data(10) occurs 0 with header line.
    clear: lv_filename.
    v_datum = sy-datum.
    v_uzeit = sy-uzeit.
    concatenate p_dirnamcls 'TESTFIL_09087' '.TXT' into lv_filename.
    move lv_filename to lv_filestr.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_filestr
    tables
    data_tab = it_data
    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
    others = 22.
    if sy-subrc <> 0.
    message e901(zt) with 'INVALID DIRECTORY'.
    endif.
    endform. " CHECK_DIR_EXISTS
    *& Form GET_BSPAPPL_COMPO
    * To get the BSP Applciation Component Details
    form get_bspappl_compo using p_it_bspappl type t_bspappl.
    data: lv_filestr type string,
    lv_tempstr type string,
    lv_fn type rlgrap-filename.
    refresh it_pagdetl.
    clear it_pagdetl.
    select applname
    pagekey
    pagename
    implclass
    pagetype
    controllerurl
    lifetime
    state
    is_error_page
    error_page
    browser_cache
    server_cache
    author
    createdon
    changedby
    changedon
    into table it_pagdetl
    from o2pagdir
    where applname = p_it_bspappl-applname.
    * Downloading the application Class Details
    if not p_it_bspappl-applclas is initial.
    clear : lv_filestr.
    concatenate v_filestr 'APPLICATIONCLASS' '\' into lv_filestr.
    it_scr_out-appname = p_it_bspappl-applname.
    perform create_directory using lv_filestr.
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_class_details using lv_filestr p_it_bspappl-applclas.
    endif.
    if r_bspall = 'X' or chk_cont = 'X'.
    clear : lv_filestr.
    concatenate v_filestr 'CONTROLLERS' '\' into lv_filestr.
    perform create_directory using lv_filestr.
    * DOWNLOADING THE CONTROLLER DETAILS
    loop at it_pagdetl where pagetype = gc_bsp_ctrl.
    concatenate lv_filestr it_pagdetl-pagename '\' into lv_tempstr.
    perform create_directory using lv_tempstr.
    clear: lv_fn.
    move lv_tempstr to lv_fn.
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_controller_details using lv_tempstr .
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_class_details using lv_tempstr it_pagdetl-implclass.
    endloop.
    endif.
    if r_bspall = 'X' or chk_view = 'X'.
    clear : lv_filestr.
    concatenate v_filestr 'VIEWS' '\' into lv_filestr.
    perform create_directory using lv_filestr.
    * DOWNLOADING THE VIEW DETAILS
    loop at it_pagdetl where pagetype = gc_bsp_view.
    concatenate lv_filestr it_pagdetl-pagename '\' into lv_tempstr.
    perform create_directory using lv_tempstr.
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_html_event_details using it_pagdetl-applname
    it_pagdetl-pagekey
    lv_tempstr.
    endloop.
    endif.
    if r_bspall = 'X' or chk_frag = 'X'.
    clear : lv_filestr.
    concatenate v_filestr 'PAGEFRAGMENTS' '\' into lv_filestr.
    perform create_directory using lv_filestr.
    * DOWNLOADING THE PAGE FRAGMENTS DETAILS.
    loop at it_pagdetl where pagetype = gc_bsp_pgfr.
    concatenate lv_filestr it_pagdetl-pagename '\' into lv_tempstr.
    perform create_directory using lv_tempstr.
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_html_event_details using it_pagdetl-applname
    it_pagdetl-pagekey
    lv_tempstr.
    endloop.
    endif.
    if r_bspall = 'X' or chk_pgfl = 'X'.
    clear : lv_filestr.
    concatenate v_filestr 'PAGEFLOWLOGIC' '\' into lv_filestr.
    perform create_directory using lv_filestr.
    * DOWNLOADING THE PAGES WITH FLOW LOGIC DETAILS.
    loop at it_pagdetl where pagetype = gc_bsp_pgfl.
    concatenate lv_filestr it_pagdetl-pagename '\' into lv_tempstr.
    perform create_directory using lv_tempstr.
    it_scr_out-appname = p_it_bspappl-applname.
    perform download_html_event_details using it_pagdetl-applname
    it_pagdetl-pagekey
    lv_tempstr.
    endloop.
    endif.
    endform. " GET_BSPAPPL_COMPO
    *& Form CREATE_DIRECTORY
    * To Create Directory*----------------------------------------------------------------------*
    form create_directory using p_lv_filestr.
    data: lv_filename type rlgrap-filename.
    move p_lv_filestr to lv_filename.
    call function 'GUI_CREATE_DIRECTORY'
    exporting
    dirname = lv_filename
    exceptions
    failed = 1
    others = 2.
    endform. " CREATE_DIRECTORY
    *& Form DOWNLOAD_CONTROLLER_DETAILS
    * Controller Details
    form download_controller_details using p_lv_tempstr .
    data: lv_temp type n.
    refresh it_data.
    clear : it_data,
    v_cnt_cls.
    concatenate 'CONTROLLER_NAME: ' it_pagdetl-pagekey into it_data.
    append it_data.
    it_data = space.
    append it_data.
    concatenate 'ERROR HANDLING' ':' into it_data.
    append it_data.
    if it_pagdetl-is_error_page is initial.
    concatenate 'IS ERROR PAGE? ' 'NO' into it_data.
    else.
    concatenate 'IS ERROR PAGE? ' 'YES' into it_data.
    endif.
    append it_data.
    concatenate 'ERROR PAGE: ' it_pagdetl-error_page into it_data.
    append it_data.
    concatenate 'CONTROLLER CLASS : ' it_pagdetl-implclass into it_data.
    append it_data.
    it_data = space.
    append it_data.
    it_data = 'STATUS'.
    append it_data.
    case it_pagdetl-state.
    when gc_lft_requ.
    it_data = 'STATE: STATELESS FROM NOW ON'.
    when gc_lft_sess.
    it_data = 'STATE: STATEFUL FROM NOW ON'.
    when others.
    concatenate 'IS ERROR PAGE? ' 'YES' into it_data.
    endif.
    append it_data.
    concatenate 'ERROR PAGE: ' it_pagdetl-error_page into it_data.
    append it_data.
    concatenate 'CONTROLLER CLASS : ' it_pagdetl-implclass into it_data.
    append it_data.
    it_data = space.
    append it_data.
    it_data = 'STATUS'.
    append it_data.
    case it_pagdetl-state.
    when gc_lft_requ.
    it_data = 'STATE: STATELESS FROM NOW ON'.
    when gc_lft_sess.
    it_data = 'STATE: STATEFUL FROM NOW ON'.
    when others.
    it_data = 'STATE: UNCHANGED'.
    endcase.
    append it_data.
    case it_pagdetl-state.
    when gc_lft_requ.
    it_data = 'LIFETIME: REQUEST'.
    when gc_lft_sess.
    it_data = 'LIFETIME: SESSION'.
    when others.
    it_data = 'LIFETIME: UNTIL PAGE CHANGE'.
    endcase.
    append it_data.
    it_data = space.
    append it_data.
    it_data = 'CACHING'.
    append it_data.
    lv_temp = it_pagdetl-browser_cache.
    concatenate 'BROWSER CACHE: ' lv_temp into it_data.
    append it_data.
    lv_temp = it_pagdetl-server_cache.
    concatenate 'SERVER CACHE: ' lv_temp into it_data.
    append it_data.
    it_data = space.
    append it_data.
    it_data = 'LOG DETAILS'.
    append it_data.
    concatenate 'CREATED BY: ' it_pagdetl-author ' ON ' it_pagdetl-createdon into it_data.
    append it_data.
    concatenate 'CHANGED BY: ' it_pagdetl-changedby ' ON ' it_pagdetl-changedon into it_data.
    append it_data.
    concatenate p_lv_tempstr it_pagdetl-pagename into p_lv_tempstr.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = p_lv_tempstr
    tables
    data_tab = it_data
    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
    others = 22.
    if sy-subrc <> 0.
    concatenate 'CONTROLLER' it_pagdetl-pagekey into it_scr_out-component separated by ':'.
    it_scr_out-path = p_lv_tempstr.
    it_scr_out-status = 'Cntl Class Details Download FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    concatenate 'CONTROLLER' it_pagdetl-pagekey into it_scr_out-component separated by ':'.
    it_scr_out-path = p_lv_tempstr.
    it_scr_out-status = 'SUCCESSFULL'.
    it_scr_out-etype = 'S'.
    append it_scr_out.
    clear it_scr_out.
    endif.
    * Getting the Controller Class Name into Global Variable
    clear v_cnt_cls.
    move it_pagdetl-implclass to v_cnt_cls.
    endform. " DOWNLOAD_CONTROLLER_DETAILS
    *& Form download_class
    * DownLoading the Data to File
    form download_class using lv_filename.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_filename
    tables
    data_tab = it_data
    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
    others = 22.
    if sy-subrc <> 0.
    it_scr_out-component = lv_filename.
    it_scr_out-status = 'FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_scr_out-component = lv_filename.
    it_scr_out-status = 'SUCCESSFULL'.
    it_scr_out-etype = 'S'.
    append it_scr_out.
    clear it_scr_out.
    endif.
    endform. " download_class
    *& Form DOWNLOAD_HTML_EVENT_DETAILS
    * text
    form download_html_event_details using p_applname
    p_pagekey
    p_lv_tempstr.
    data: lv_tempstr type string,
    lv_count type n.
    refresh it_pagcon.
    clear it_pagcon.
    select applname
    pagekey
    objtype
    version
    into table it_pagcon
    from o2pagcon
    where applname = p_applname and
    pagekey = p_pagekey and
    version = 'A' and
    objtype = 'PD'.
    lv_count = 0.
    loop at it_pagcon.
    clear: lv_tempstr,it_source,wa_source,wa_pagecon_key.
    wa_pagecon_key-applname = it_pagcon-applname.
    wa_pagecon_key-pagekey = it_pagcon-pagekey.
    wa_pagecon_key-objtype = it_pagcon-objtype.
    wa_pagecon_key-version = it_pagcon-version.
    if it_pagcon-objtype = 'PD'. "PAGE
    concatenate p_lv_tempstr p_pagekey into lv_tempstr.
    endif.
    import content to it_source-content from database o2pagcon(tr) id wa_pagecon_key
    accepting padding ignoring conversion errors.
    if not it_source-content[] is initial.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_tempstr
    tables
    data_tab = it_source-content
    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
    others = 22.
    if sy-subrc <> 0.
    it_scr_out-component = p_pagekey.
    it_scr_out-path = lv_tempstr.
    it_scr_out-status = 'FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_scr_out-component = p_pagekey.
    it_scr_out-path = lv_tempstr.
    it_scr_out-status = 'SUCCESSFULL'.
    it_scr_out-etype = 'S'.
    append it_scr_out.
    clear it_scr_out.
    endif.
    endif.
    endloop.
    * NOW DOWNLOAD ALL THE PARAMETERS FOR THAT PAGE
    perform download_params_for_page using p_applname
    p_pagekey
    p_lv_tempstr.
    * NOW DOWNLOAD ALL EVENTS FOR THAT PAGE
    perform download_events_for_page using p_applname
    p_pagekey
    p_lv_tempstr.
    endform. " DOWNLOAD_HTML_EVENT_DETAILS
    *& Form DOWNLOAD_PARAMS_FOR_PAGE
    * text
    form download_params_for_page using p_applname
    p_pagekey
    p_lv_tempstr.
    types: begin of t_dld_params,
    compname type o2param,
    auto(5),
    typtype(15),
    type1 type rs38l_typ,
    parvalue type seovalue,
    end of t_dld_params.
    data: it_params type standard table of o2pagpar with header line.
    data: it_dld_params type standard table of t_dld_params with header line.
    data: lv_tempstr type string.
    refresh: it_params,it_dld_params.
    clear : it_params,it_dld_params.
    concatenate p_lv_tempstr 'PARAMETERS.TXT' into lv_tempstr.
    select * from o2pagpar into table it_params
    where applname = p_applname and
    pagekey = p_pagekey and
    version = 'A'.
    loop at it_params.
    it_dld_params-compname = it_params-compname.
    it_dld_params-type1 = it_params-type.
    it_dld_params-parvalue = it_params-parvalue.
    if it_params-pardecltyp = '0'.
    it_dld_params-auto = 'AUTO'.
    endif.
    if it_params-typtype = '3'.
    it_dld_params-typtype = 'TYPE REF TO'.
    else.
    it_dld_params-typtype = 'TYPE'.
    endif.
    append it_dld_params.
    clear it_dld_params.
    endloop.
    if not it_dld_params[] is initial.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_tempstr
    tables
    data_tab = it_dld_params.
    endif.
    endform. " DOWNLOAD_PARAMS_FOR_PAGE
    *& Form DOWNLOAD_EVENTS_FOR_PAGE
    * To Download the Events data
    form download_events_for_page using p_applname
    p_pagekey
    p_lv_tempstr.
    data: lv_tempstr type string,
    it_events type standard table of o2pagevh with header line,
    lv_count type i.
    types: begin of t_ev_handler,
    name type o2evhandlr,
    source type rswsourcet,
    end of t_ev_handler.
    types : it_ev_handler type sorted table of t_ev_handler with unique key name.
    data : it_ev_sources type it_ev_handler with header line.
    field-symbols : <fs_ev_handler> type it_ev_handler.
    refresh it_events.
    clear : it_events,lv_count.
    select * from o2pagevh into table it_events
    where applname = p_applname and
    pagekey = p_pagekey and
    version = 'A'.
    describe table it_events lines lv_count.
    if lv_count > 0.
    concatenate p_lv_tempstr 'EVENTS' '\' into lv_tempstr.
    perform create_directory using lv_tempstr.
    p_lv_tempstr = lv_tempstr.
    endif.
    refresh: it_ev_sources.
    clear: lv_tempstr,it_source,wa_source,wa_pagecon_key,it_ev_sources.
    wa_pagecon_key-applname = p_applname.
    wa_pagecon_key-pagekey = p_pagekey.
    wa_pagecon_key-objtype = 'EV'.
    wa_pagecon_key-version = 'A'.
    import evhandler to it_ev_sources from database o2pagcon(tr) id wa_pagecon_key
    accepting padding ignoring conversion errors.
    loop at it_ev_sources.
    concatenate p_lv_tempstr it_ev_sources-name '.TXT' into lv_tempstr.
    call function 'GUI_DOWNLOAD'
    exporting
    filename = lv_tempstr
    tables
    data_tab = it_ev_sources-source.
    endloop.
    endform. " DOWNLOAD_EVENTS_FOR_PAGE
    *& Form download_cnt_class
    * Perform to Download the Controller Class Details
    form download_class_details using p_lv_filestr pclassname.
    data : v_cnt_cls_name type string,
    v_cnt_lines type i.
    clear : v_cnt_cls_name.
    * As We need to call the common perform which is used for Downloading
    * Class . Before doing that we need to Set Some varibles.
    if pclassname is not initial.
    clear : r_temp_all,chk_attr,chk_meth,chk_evts,chk_type,it_class.
    move 'X' to r_temp_all.
    refresh it_class.
    concatenate p_lv_filestr pclassname into v_cnt_cls_name.
    * get the class name and Class Description from the table SEOCLASS
    * for all the classes which user entered in selection screen based on
    * the system language
    select a~clsname b~descript
    into table it_class
    from seoclass as a left outer join seoclasstx as b
    on a~clsname = b~clsname and
    b~langu = v_langu
    where a~clsname = pclassname.
    describe table it_class lines v_cnt_lines.
    if v_cnt_lines > 0.
    loop at it_class.
    perform get_class_details using it_class-clsname 'X' v_cnt_cls_name .
    endloop.
    endif.
    endif.
    endform. " download_cnt_class
    *& Form download_class_implementation
    * To Down Load the Class Implementaions
    form download_class_implementation tables p_implementation type seok_int_typeinfos.
    data : x_imp type line of seok_int_typeinfos.
    loop at p_implementation into x_imp.
    perform get_inferface_data using x_imp.
    endloop.
    endform. " download_class_implementation
    *& Form get_inferface_data
    * Getting the Interface Data
    form get_inferface_data using p_x_imp type line of seok_int_typeinfos.
    data : x_inmeth type line of seoo_methods_r,
    v_methodname type string,
    v_classname type string.
    it_data = 'INTERFACE'.
    append it_data.
    it_data = '----------'.
    append it_data.
    * Interface Name
    clear it_data.
    concatenate 'Interface Name : ' p_x_imp-interface-clsname into it_data.
    append it_data.
    * Interface Description
    clear it_data.
    concatenate 'Interface Description : ' p_x_imp-interface-descript into it_data.
    append it_data.
    * Interace Methods
    it_data = '-----------------'.
    append it_data.
    clear it_data.
    it_data = 'Interface Methods'.
    append it_data.
    clear it_data.
    it_data = '-----------------'.
    append it_data.
    loop at p_x_imp-methods into x_inmeth where clsname eq p_x_imp-interface-clsname .
    data : temp_str type string.
    * Adding Class Name & Class Description
    concatenate x_inmeth-cmpname cl_abap_char_utilities=>horizontal_tab x_inmeth-descript
    cl_abap_char_utilities=>horizontal_tab into temp_str.
    * Declaration Type
    if x_inmeth-mtddecltyp eq 0.
    concatenate temp_str 'Instance Method' into temp_str.
    else.
    concatenate temp_str 'Static Method' into temp_str.
    endif.
    * Visibility
    case x_inmeth-exposure.
    when 0.
    concatenate temp_str cl_abap_char_utilities=>horizontal_tab 'PRIVATE' into temp_str.
    when 2.
    concatenate temp_str cl_abap_char_utilities=>horizontal_tab 'PUBLIC' into temp_str.
    when 1.
    concatenate temp_str cl_abap_char_utilities=>horizontal_tab 'PROTECTED' into temp_str.
    endcase.
    it_data = temp_str.
    append it_data.
    * To Get Corresponding Paramenters.
    perform get_int_meth_parameters using p_x_imp x_inmeth-cmpname.
    * To Get Source Code for Interface methods.
    clear v_methodname.
    clear v_classname.
    concatenate p_x_imp-interface-clsname '~' x_inmeth-cmpname into v_methodname.
    v_classname = it_class-clsname.
    perform download_method_source using v_classname
    v_methodname.
    clear temp_str.
    clear it_data.
    append it_data.
    endloop.
    endform. " get_inferface_data
    *& Form GET_INT_METH_PARAMETERS
    * To get the method Parameters
    form get_int_meth_parameters using p_x_imp type line of seok_int_typeinfos
    p_x_inmeth_cmpname.
    data: x_parameters type line of seos_parameters_r,
    temp_str type string.
    it_data = '^^^^PARAMETERS'.
    append it_data.
    clear it_data.
    loop at p_x_imp-parameters into x_parameters where clsname eq p_x_imp-interface-clsname and
    cmpname eq p_x_inmeth_cmpname.
    concatenate cl_abap_char_utilities=>horizontal_tab
    cl_abap_char_utilities=>horizontal_tab
    x_parameters-sconame
    cl_abap_char_utilities=>horizontal_tab into temp_str.
    case x_parameters-pardecltyp.
    when 0.
    concatenate temp_str 'Importing' cl_abap_char_utilities=>horizontal_tab into temp_str.
    when 1.
    concatenate temp_str 'Exporting' cl_abap_char_utilities=>horizontal_tab into temp_str.
    when 2.
    concatenate temp_str 'Changing' cl_abap_char_utilities=>horizontal_tab into temp_str.
    when 3.
    concatenate temp_str 'Returning' cl_abap_char_utilities=>horizontal_tab into temp_str.
    endcase.
    case x_parameters-typtype.
    when 0.
    concatenate temp_str 'Like' cl_abap_char_utilities=>horizontal_tab into temp_str.
    when 1.
    concatenate temp_str 'Type' cl_abap_char_utilities=>horizontal_tab into temp_str.
    when 2.
    concatenate temp_str 'Type Ref To' cl_abap_char_utilities=>horizontal_tab into temp_str.
    endcase.
    concatenate temp_str x_parameters-type cl_abap_char_utilities=>horizontal_tab x_parameters-parvalue into temp_str.
    it_data = temp_str.
    append it_data.
    clear it_data.
    clear temp_str.
    endloop.
    endform. " GET_INT_METH_PARAMETERS
    *& Form DOWNLOAD_CLASS_OTHERDETAILS
    * Downloading Class Implementation , Types & Macros
    form download_class_otherdetails using p_p_clsname
    p_inctype.
    data : lv_inctype type string,
    l_clsname type seoclskey,
    cl_source type seop_source,
    cl_exsource type seop_source_string,
    x_source type line of seop_source.
    move p_p_clsname to l_clsname.
    case p_inctype.
    when seop_ext_class_locals_imp.
    lv_inctype = 'CLASS IMPLEMENTAION'.
    when seop_incextapp_definition.
    lv_inctype = 'CLASS TYPES'.
    when seop_incextapp_macros.
    lv_inctype = 'CLASS MACROS'.
    endcase.
    call function 'SEO_CLASS_GET_INCLUDE_SOURCE'
    exporting
    clskey = l_clsname
    inctype = p_inctype
    importing
    source = cl_source
    source_expanded = cl_exsource
    exceptions
    _internal_class_not_existing = 1
    not_existing = 2
    others = 3.
    if sy-subrc <> 0.
    it_scr_out-component = lv_inctype.
    it_scr_out-status = 'FAILED'.
    it_scr_out-etype = 'E'.
    append it_scr_out.
    clear it_scr_out.
    else.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    it_data = lv_inctype .
    append it_data.
    clear it_data.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    loop at cl_source into x_source.
    move x_source to it_data.
    append it_data.
    clear it_data.
    endloop.
    it_data = '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'.
    append it_data.
    clear it_data.
    endif.
    endform. " DOWNLOAD_CLASS_OTHERDETAILS
    Regards,
    Anubhav.

  • How to create downloadable pdf report as hyperlink within BSP application

    Hi,
    I'm developing a BSP application using MVC and htmlb extensions on a WAS 6.40. One of the requirements of my webapplication is:
    - the ability to generate a report in pdf format at runtime, using data retrieved from a backend SAP CRM 3.0 system
    and
    - make this report available/downloadable via a hyperlink in the application.
    I am aware of tools like Smartforms and Adobe interactive forms but need some help to get started and choose the right tool.
    regards, Roelof Jan

    Hi,
    we've done that by firstly building a RFC which prints the report to sap-spool:
    call function 'GET_PRINT_PARAMETERS'
          exporting
            expiration     = 1
            immediately    = ' '
            new_list_id    = 'X'
            line_count     = 65
            line_size      = 132
            report         = sy-repid
            no_dialog      = 'X'
          importing
            out_parameters = wf_params
            valid          = valid_flag.
        if sy-subrc ne 0 or valid_flag eq false.
        endif.
        new-page no-heading no-title print on parameters wf_params
                          no dialog .
    ... list processing ...
    new-page print off.
      concatenate programname sy-uname+0(3) into lc_rq2name separated by '_'.
      select * from tsp01 into tsp01_wa
                          where rq2name = lc_rq2name
                          and rqowner   = sy-uname
                          order by rqcretime descending.
        wf_spono = tsp01_wa-rqident.
        exit.
      endselect.
      if sy-subrc ne 0.
        clear wf_spono.
      endif.
    Then convert the spooljob:
      call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
        exporting
          src_spoolid              = wf_spono
          no_dialog                = 'X'
        tables
          pdf                      = witab
        exceptions
          err_no_abap_spooljob     = 1
          err_no_spooljob          = 2
          err_no_permission        = 3
          err_conv_not_possible    = 4
          err_bad_destdevice       = 5
          user_cancelled           = 6
          err_spoolerror           = 7
          err_temseerror           = 8
          err_btcjob_open_failed   = 8
          err_btcjob_submit_failed = 9
          err_btcjob_close_failed  = 10
          others                   = 11.
      if sy-subrc ne 0.
        return.
      endif.
    Delete Spooljob and generate cached response:
      data del_spono type  tsp01_sp0r-rqid_char.
      del_spono = wf_spono.
      call function 'RSPO_R_RDELETE_SPOOLREQ'
        exporting
          spoolid = del_spono.
      if witab is not initial.
        loop at witab into itab .
          translate itab using ' ~'.
          concatenate output itab into output in character mode.
        endloop.
        translate output using '~ ' .
        create object cached_response
               type cl_http_response
               exporting add_c_msg = 1.
        l_pdf_len = strlen( output ).
        cached_response->set_cdata( data   = output
                                    length = l_pdf_len ).
        cached_response->set_header_field( name  = if_http_header_fields=>content_type
                                           value = 'application/pdf' ).
        cached_response->set_status( code = 200 reason = 'OK' ).
        cached_response->server_cache_expire_rel( expires_rel = 180 ).
        data: guid type guid_32,
              display_url type string.
        call function 'GUID_CREATE'
          importing
            ev_guid_32 = guid.
        concatenate runtime->application_url '/' guid '.pdf'
                    into display_url.
        cl_http_server=>server_cache_upload( url      = display_url
                                             response = cached_response ).
        app ?= application.
        app->print_url = display_url.
      endif .
    The display_url has to be used in the normal response-view:
    <script type="text/javascript">
    var param = 'width=700'
          + ',height=550'
          + ',left=0'
          + ',top=0'
          + ',menubar=no'
          + ',location=no'
          + ',resizable=yes'
          + ',status=no';
      window.open('<%= application->print_url%>', 'DRUCK', param ).focus();
    </script>

  • PDF download from BSP application

    hi all,
    With the bellow code i am able to download to PDF from BSP application
    Issue is when i click on the download button waiting popup window is not disappearing even after PDF displayed.
    Please help me to resolve how to stop this waiting popup window.
    response->delete_header_field( name = 'Cache-Control' ).  "#EC NOTEXT
      response->delete_header_field( name = 'Expires' ).        "#EC NOTEXT
      response->delete_header_field( name = 'Pragma' ).         "#EC NOTEXT
    Deactivated because of Note 904314 and Kompression in Kernel
      response->set_compression( options = '4' ).
      response->set_header_field( name  = 'content-type'
                                  value = 'application/pdf' ).
      response->set_header_field(
                         name  = 'cache-control'
                         value = 'max-age=0' ).
        response->set_header_field(
                           name  = 'content-disposition'
                           value = 'attachment; filename=candidate.pdf' ).
      l_pdf_len = XSTRLEN( l_pdf_xstring ).
      response->set_data( data   = l_pdf_xstring
                          length = l_pdf_len ).
      navigation->response_complete( ).
    Any help on this is highly appreciated.
    Thanks,
    Ravi

    May be you can navigate to another page AFTER the response_complete() method and show the message that 'PDF is downloaded successfully'
    or something meanful message. so that it will get a response back from server and 'wait...Processing' message might disappear.
    I'm not sure and didnt try..may be you can give it a try and let us know..
    navigation->response_complete( ).
    navigation->goto_page(....)

  • Download the PDF Form as a attachment when button click in BSP application

    Hi All,
    I have scenario, when button click in the BSP application PDF Form want to download in the IE (like one window open with Open,Save and cancel button).
    I have written this code:
    data: pdf type fpformoutput-pdf.
    < Logic for populate value to pdf field ....
    .>
    response->set_header_field(
                         name  = 'cache-control'
                         value = 'max-age=0' ).
      response->set_header_field(
                         name  = 'content-disposition'
                         value = 'attachment; filename=webforms.pdf' ).
      response->set_data( data   = pdf ).
    Once button is clicked pop up is opened and closed automatically because of browser or adobe reader issue.
    How can I resolve this problem ?
    In the IE i need to change any settings ?
    IE version = 7.0
    Adobe reader = 9.0
    I have tried in the same code with IE = 6.0 and adobe reader 8.1.2 its getting download the pdf form working fine.
    The same think i want in IE 7.0 and adobe reader 9.0, what needs to be done ?
    Regards,
    Boopathi M

    Hello Ravi,
    Best would be to bind the dataSource of the InteractiveForm ui element to the parent node containing the table's data. Then specify a name of a template to be created in the templateSource and hit <enter>. Some popups later, the system will have created a template from the structure of the context. All you need to do now is to drag&drop the data structure inside the template designer to the template itself. This will result in a table. Save, activate and return the Web Dynpro view. Don't forget to unbind the pdfSource and enjoy.
    Best regards,
    Thomas

  • Download Text file to Local drive from BSP Application

    Hi Guys,
    I am new to BSP, and I am doing a BSP application in which i want to download a text file to local drive C: on click of button. For that I am having a data in Internal table and Onclick event, in model class method DO_HANDLE_EVENT i want to download text file to local machine drive.
    Can anybody provide me full code with all data declaration and all?
    Your help would be appriciable. Thanks in Advance.

    Hi Jessy ,
    You can download the file from BSP pages using the method
    CL_BSP_UTILITY=>download.
    Please follow the below mentioned steps.
    1.Convert the text to a text table ie Internal table with a line type char255 or some others.
    2.Convert the text table into a string.
    3.Convert the string to XSTRING.
    4.Download that XSTRING as text file using the method
       CL_BSP_UTILITY=>download.
    Parameters:
    OBJECT_S    - XSTRING data
    CONTENT_TYPE  =  ' application/download'
    CONTENT_DISPOSITION = 'attachment; file=test.txt'
    RESPONSE                   = runtime->server->response
    NAVIGATION                   = navigation
    OBJECT_T
    I dont have system to give a programatical explanation to u.
    If you have any doubt kindly post.
    Reward for every useful solutions..
    Best Regards
    Renga

  • Download of a webform within a BSP application

    Hi SDN members,
    I wrote a ESS BSP application with a 3 step wizard. Within the first step the user can enter some data in some form fields.
    In the second step a webform (SMARTFORM) with the form data is displayed and in the third step the user can save the document.
    Is there any possibility to save the web form as a document when the user saves the document. It would be sufficient to save the webform to the application server and get back a link.
    Later on the webform should be linked as a kind of attachment. This means when the user calls again the saved document a link should be available where the form can be called.
    The webform is called in the following way within my BSP:
    Call the generated function module
      call function l_function_module_name
           exporting
                    archive_index        =
                    archive_parameters   =
                      control_parameters   = ls_control_parameters
                    mail_appl_obj        =
                    mail_recipient       =
                    mail_sender          =
                      output_options       = ls_output_options
                      user_settings        = space
                      customer             = lt_customer
                      bookings             = lt_bookings
                      connections          = lt_connections
           importing
                    document_output_info =
                      job_output_info      = ls_output_data
                    job_output_options   =
           exceptions formatting_error     = 1
                      internal_error       = 2
                      send_error           = 3
                      user_canceled        = 4
                      others               = 5.
      if sy-subrc <> 0.
      error handling
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
      ls_xmloutput = ls_output_data-xmloutput.
      lt_html_raw  = ls_xmloutput-trfresult-content[].
    Fill HTTP request
      response->set_header_field( name = 'content-type'
                                   value = 'text/html; charset=UTF-8').
    SAP Smart Forms returns XML data island in raw data format.
    method 'set_data' of the response object needs the output
    in XSTRING. The next loop convertes the raw table into xstring.
      loop at lt_html_raw into l_xstring.
         concatenate l_html_xstring l_xstring into l_html_xstring
                                                   in byte mode.
      endloop.
      l_xlength = xstrlen( l_html_xstring ).
      response->set_data( data   = l_html_xstring
                          length = l_xlength ).
    Any ideas how to save the form in any way?
    Best regards
    Thomas

    Hi,
    thanks for your answer!
    Let me explain more in detail what I want to do.
    I am calling my BSP application from our SRM system. When the user saves the data which were entered in my BSP application, the data are transferred via OCI (Open Catalog Interface). This is already working.
    The only thing which is missing is the transfer of my webform to the SRM via OCI.
    OCI is waiting for a link to my form. Only then, the SRM can attach a document. See OCI description
    http://www.sdn.sap.com/irj/sdn?rid=/webcontent/uuid/ff03d072-0501-0010-aa88-8018506a2ebe">oci [original link is broken] [original link is broken]
    Therefore I have to download the form to get a link which can be written to the OCI interface. This could also be a temporary link.

  • Download internal table from BSP application to C:\ drive of the user

    Hi,
    How do we download a internal table data from a BSP application to the C:\ drive of the user. Have tried GUI Download, but it doesn't work. Also don't want a pop up to appear while this is happening. The code has to there in 'OnInputProcessing' event.
    Regards,
    Jaison

    Hi Raja,
    I went through few of the blogs and wrote the below code for downloading data. My requirement is that in the InputProcessing event i need to write a subset of data to the users C:\ drive. But even after doing the below change i'm unable to get the requirement done. Can you please tell me as to what i'm missing. I'm new to BSP development and help would be highly appreciated.
    if not it_messages1[] is initial.
      clear wa_messages1.
      loop at it_messages1 into wa_messages1.
       clear temp_string.
       concatenate wa_messages1-PROJECT wa_messages1-FILENAME.......
       into temp_string separated by CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
       concatenate main_string temp_string into main_string separated by
       CL_ABAP_CHAR_UTILITIES=>CR_LF.
      endloop.
    CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
      EXPORTING
        TEXT                 = main_string
        MIMETYPE        = 'APPLICATION/MSEXCEL;charset=utf-16le'
      ENCODING       =
    IMPORTING
       BUFFER         =  xmain_string.
    EXCEPTIONS
      FAILED         = 1
      OTHERS         = 2
    CALL METHOD cl_bsp_utility=>download
    EXPORTING
        object_s = xmain_string
        content_type = 'APPLICATION/MSEXCEL;charset=utf-16le'
        content_disposition = 'attachment;filename=test.xls'
        response = mresponse
        navigation = navigation.
    Edited by: Jaison Yohannan on Jun 3, 2009 2:16 PM

  • Download File from BSP-Application

    Hello !
    i hope i can get some help for my problem.
    from my BSP-Application i want to download an internal table to p:\eigenedateien\bv.txt (always the same filename)
    the internal table ist type table of string.
    i read that gui_download doesn't work in my BSP
    so i went through this weblog 756
    but it is really hard.
    i put some code from the weblog in my application:
    concatenate 'attachment; filename='
    w_para-pwert = p:\eigenedatieen\bv.txt
                w_para-pwert into dl_pathfile.
    Download der Datei
    Create the cached response object that we will insert our content into
    dl_xstring = 'Test'. "nur zum testen
                CREATE OBJECT CACHED_RESPONSE TYPE CL_HTTP_RESPONSE
                       EXPORTING ADD_C_MSG = 1.
    set the data and the headers
                CACHED_RESPONSE->SET_DATA( DL_XSTRING ).
                CACHED_RESPONSE->SET_HEADER_FIELD( NAME  =
                                        IF_HTTP_HEADER_FIELDS=>CONTENT_TYPE
                                                   VALUE = 'text/html' ).
    Set the filename into the response header
           CACHED_RESPONSE->SET_HEADER_FIELD( NAME  = 'Content-Disposition'
                                       VALUE = DL_PATHFILE ).
    Set the Response Status
                CACHED_RESPONSE->SET_STATUS( CODE = 200 REASON = 'OK' ).
    Set the Cache Timeout - 60 seconds - we only need this in the cache
               CACHED_RESPONSE->SERVER_CACHE_EXPIRE_REL( EXPIRES_REL = 60 ).
    Create a unique URL for the object
                CALL FUNCTION 'GUID_CREATE'
                  IMPORTING
                    EV_GUID_32 = GUID.
                CONCATENATE RUNTIME->APPLICATION_URL '/' GUID INTO URL.
    Cache the URL
                CL_HTTP_SERVER=>SERVER_CACHE_UPLOAD( URL      = URL
                                               RESPONSE = CACHED_RESPONSE ).
    Ende Download
    now it should be cached.
    but hot can i start the download to p:\eigenedateien... now?
    thanks very much for your help
    Helmut

    Hi,
    Could you try adding at the end:
    navigation->response_complete( ).
    and/or
    data: guid type guid_32,
          display_url TYPE string.
    call function 'GUID_CREATE'
    importing
    ev_guid_32 = guid.
    concatenate runtime->application_url '/' guid into display_url.
    cl_http_server=>server_cache_upload( url = display_url response = cached_response ).
    Best regards,
    Guillaume
    Message was edited by: Guillaume Garcia

  • Download out of BSP Application

    Hi @ all,
    I built a BSP Application and like to up- and download some files. Upload is no problem, because If got a BSP element for that.
    But how to handle the downloads, because in my opinion all GUI* methods should not work...
    Regards
    Matt

    Hi Matthias,
         I think there is no direct method to download.
         We can write a small code based on the requirement
         What type of the file you need to down load?
         if it is .pdf file you can use the following code
         Generally ( Smart form )
         If it is .xls or .txt file let me know
    You can crate a method and
    Import Parameters are :
    NAVIGATION TYPE REF TO IF_BSP_NAVIGATION
    RESPONSE TYPE REF TO IF_BSP_RESPONSE
    Code is
    data: l_pdf_xstring type xstring,
    lt_lines type table of tline,
    ls_line type tline,
    l_devtype type rspoptype,
    l_pdf_len type i.
    parameters for generated function module
    data: l_function_module_name type rs38l_fnam,
    ls_output_options type ssfcompop,
    ls_control_parameters type ssfctrlop,
    l_function_name type rs38l_fnam,
    ls_output_data type ssfcrescl,
    form_name type tdsfname.
    generated result: HTML with embedded CSS
    data: ls_xmloutput type ssfxmlout,
    lt_html_raw type tsfixml.
    data: l_xstring type xstring, "needed for HTTP response
    l_xlength type i,
    l_html_xstring type xstring.
    form_name = 'ZINVOICE'.
    get name of generated function module
    call function 'SSF_FUNCTION_MODULE_NAME'
    exporting
    formname = form_name
    importing
    fm_name = l_function_module_name
    exceptions
    no_form = 1
    no_function_module = 2
    others = 3.
    if sy-subrc <> 0.
    error handling
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    exit.
    endif.
    activate XSF Output Mode
    get device type from language
    call function 'SSF_GET_DEVICE_TYPE'
    exporting
    i_language = 'E'
    importing
    e_devtype = l_devtype
    exceptions
    no_language = 1
    language_not_installed = 2
    no_devtype_found = 3
    system_error = 4
    others = 5.
    if sy-subrc <> 0.
    error handling
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    set device type in output options
    ls_output_options-tdprinter = l_devtype.
    ls_control_parameters-langu = 'E'.
    ls_control_parameters-no_dialog = 'X'.
    ls_control_parameters-getotf = 'X'.
    CALL FUNCTION l_function_module_name
    EXPORTING
    CONTROL_PARAMETERS = ls_control_parameters
    OUTPUT_OPTIONS = ls_output_options
    USER_SETTINGS = space
    INVOICE_NO = me->I_INVOICE
    FROM_DATE = me->ST_PDF_HEADER-BILL_FROM
    TO_DATE = me->ST_PDF_HEADER-BILL_TO
    INVOICE_COVER = me->ST_PDF_HEADER
    IMPORTING
    JOB_OUTPUT_INFO = ls_output_data
    TABLES
    INVOICE_DETAILS = me->IT_PDF_ITEMS
    EXCEPTIONS
    FORMATTING_ERROR = 1
    INTERNAL_ERROR = 2
    SEND_ERROR = 3
    USER_CANCELED = 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.
    call function 'CONVERT_OTF'
    exporting
    format = 'PDF'
    importing
    bin_filesize = l_pdf_len
    bin_file = l_pdf_xstring " binary file
    tables
    otf = ls_output_data-otfdata
    lines = lt_lines
    exceptions
    err_max_linewidth = 1
    err_format = 2
    err_conv_not_possible = 3
    err_bad_otf = 4
    others = 5.
    if sy-subrc <> 0.
    error handling
    message id sy-msgid type sy-msgty number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    Fill HTTP request
    response->set_header_field( name = 'content-type'
    value = 'application/pdf' ).
    response->delete_header_field(
    name = if_http_header_fields=>cache_control ).
    response->delete_header_field(
    name = if_http_header_fields=>expires ).
    response->delete_header_field(
    name = if_http_header_fields=>pragma ).
    some Browsers have caching problems when loading PDF format
    response->set_header_field(
    name = 'content-disposition'
    value = 'max-age=0' ).
    start PDF viewer either in the Browser or as a separate window
    response->set_header_field(
    name = 'content-disposition'
    value = 'attachment; filename=webforms.pdf' ).
    finally display PDF format in Browser
    l_pdf_len = xstrlen( l_pdf_xstring ).
    response->set_data( data = l_pdf_xstring
    length = l_pdf_len ).
    navigation->response_complete( ).

  • Download and upload bsp application

    Hi All,
    Pl. guide me with my requirement. I have a bsp application in one server and for some reasons the same bsp application is required in another server but these two servers are not in land scape and hence i cannot transport. Is there any way to download the whole application and upload it into the target server. I feel this approach is silly but is there any other way or should i create it again fron the scratch in the new server.Pl. guide me.
    thanks & regards,
    jeeva.

    Hi Jeeva
       Why dont you try the above link given by Raja..
    It works fine .... You will get the sourcecode downloaded in a .bsp extension file for each page....But the only major problem is ... It doesnot talk about anything related to How to upload those files in the application....For that you had to take the help of BASIS ..
    But if your problem get solved by just getting the source code downloaded then try this code...This is the same code that RAJA has linked to...Just paste the code in a report program...and execute it...
    type-pools: SO2.
    types: t_page_list type standard table of o2pagkey.
    parameters: g_appl type O2APPLNAME.
    constants: c_separator_line type string value
    perform main.
    form main.
      data: l_pages type t_page_list,
      l_ref_page type ref to cl_o2_api_pages,
      l_table type o2pageline_table,
      l_folder type string,
      l_lower type string,
      l_filename type string.
      field-symbols: <f_page> type o2pagkey.
    * get local directory path
      call method CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
    * EXPORTING
    * WINDOW_TITLE =
    * INITIAL_FOLDER =
      CHANGING
      SELECTED_FOLDER = l_folder
      EXCEPTIONS
      CNTL_ERROR = 1
      ERROR_NO_GUI = 2
      NOT_SUPPORTED_BY_GUI = 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.
        return.
      ENDIF.
      if l_folder is initial. return. endif.
    * get all pages of selected BSP application
      perform get_all_pages changing l_pages.
    * perform each page
      loop at l_pages assigning <f_page>.
    * load page data
        perform load_page using <f_page>
        changing l_ref_page.
        if l_ref_page is bound.
    * collect the content of the page in an internal table
          perform print using l_ref_page
          changing l_table.
          if not l_table is initial.
            l_lower = <f_page>-pagekey.
            translate l_lower to lower case.
    * determine file path for the page
            concatenate l_folder '' l_lower into l_filename.
    * download the content of the page to file
            perform download using l_filename l_table.
          endif.
        endif.
      endloop.
    endform.                    "main
    form download using p_filename type string
    p_table type standard table.
    * download the content of an internal table to a local file
      call method CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
        EXPORTING
          FILENAME                = p_filename
        CHANGING
          DATA_TAB                = p_table
        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.
    endform.                    "download
    form get_all_pages changing p_pages type t_page_list.
    * get all pages of the application
      select applname pagekey from o2pagdir into table p_pages
      where applname = g_appl and
      pagetype <> so2_controller.
    endform.                    "get_all_pages
    form load_page using p_key type o2pagkey
    changing p_data type ref to cl_o2_api_pages.
    * load the data of one page
      clear p_data.
      call method cl_o2_api_pages=>load_with_access_permission
        EXPORTING
          p_mode    = 'SHOW'
          p_pagekey = p_key
          p_version = 'A' "'I' for inactive version
        IMPORTING
          p_page    = p_data
        EXCEPTIONS
          others    = 1.
    endform.                    "load_page
    form print using p_data type ref to cl_o2_api_pages
    changing p_table type o2pageline_table.
    * collect the content of a page into an internal table
      data: l_attrs type o2pagattr,
      l_params type o2pagpar_tabletype,
      l_source type rswsourcet,
      l_layout type o2pageline_table,
      l_ev_handlers type so2_ev_handler_list,
      l_typtyp(11) type c,
      l_line type string.
      field-symbols: <f_param> type o2pagpars,
      <f_evh_name> type so2_ev_handler_name.
      refresh p_table.
    * get page properties
      CALL METHOD P_DATA->GET_ATTRS
        IMPORTING
          P_ATTRS = l_attrs
        EXCEPTIONS
          others  = 1.
      check l_attrs-pagetype <> so2_controller.
      append c_separator_line to p_table.
      concatenate '*' l_attrs-applname '/' l_attrs-pagekey into l_line.
      append l_line to p_table.
      append c_separator_line to p_table.
      append space to p_table.
    * local types
      if l_attrs-pagetype = so2_full_page.
        CALL METHOD P_DATA->GET_TYPE_SOURCE
          IMPORTING
            P_SOURCE = l_source
          EXCEPTIONS
            others   = 1.
        if not l_source is initial.
          append c_separator_line to p_table.
          append '* local types' to p_table.
          append c_separator_line to p_table.
          append lines of l_source to p_table.
          do 3 times.
            append space to p_table.
          enddo.
        endif.
      endif.
    * page attributes
      if l_attrs-pagetype = so2_full_page or
      l_attrs-pagetype = so2_view_page.
        CALL METHOD P_DATA->GET_PARAMETERS
          IMPORTING
            P_PARAMETERS = l_params
          EXCEPTIONS
            others       = 1.
        if not l_params is initial.
          append c_separator_line to p_table.
          append '* page attributes' to p_table.
          append c_separator_line to p_table.
          loop at l_params assigning <f_param>.
            if <f_param>-typtype = so2_paramtyp_type.
              l_typtyp = 'TYPE'.
            else.
              l_typtyp = 'TYPE REF TO'.
            endif.
            concatenate <f_param>-aliasname l_typtyp
            <f_param>-type into l_line
            separated by space.
            append l_line to p_table.
          endloop.
          do 3 times.
            append space to p_table.
          enddo.
        endif.
      endif.
    * layout
      append c_separator_line to p_table.
      append '* layout' to p_table.
      append c_separator_line to p_table.
      CALL METHOD P_DATA->GET_PAGE
        IMPORTING
          P_CONTENT = l_layout
        EXCEPTIONS
          others    = 1.
      append lines of l_layout to p_table.
      do 3 times.
        append space to p_table.
      enddo.
    * event handler
      if l_attrs-pagetype = so2_full_page.
        CALL METHOD P_DATA->GET_EVENT_HANDLER_LIST
          EXPORTING
            P_WITH_ALL_PREDEFINED = ' '
          IMPORTING
            P_EV_HANDLER_L        = l_ev_handlers
          EXCEPTIONS
            others                = 1.
        loop at l_ev_handlers assigning <f_evh_name>.
          append c_separator_line to p_table.
          concatenate '* eventhandler' <f_evh_name>-name into l_line
          separated by space.
          append l_line to p_table.
          append c_separator_line to p_table.
          clear l_source.
          CALL METHOD P_DATA->GET_EVENT_HANDLER
          EXPORTING
          P_NAME = <f_evh_name>-key
          IMPORTING
          P_SOURCE = l_source
    * P_ATTRS =
          EXCEPTIONS
          others = 1.
          append lines of l_source to p_table.
          do 3 times.
            append space to p_table.
          enddo.
        endloop.
      endif.
    endform.                    "print
    RGDS
    Mithlesh

  • Download a BSP application

    Hi,
    stupid question : is there a way to download a bsp application into a .txt file for instance and upload it in another system like for Abap programs?
    Regards & Happy new year,
    Huy

    Hallo Huy,
    In R/3 systems, the transport system is the best way to move stuff between systems. You can place all the objects you wish onto a transport of copies, export it, and import the transport into the new system. The starting point is transaction SE09. You might need the help/approval of a system administrator, depending on your rights, etc. This is the simplest and best way to do it.
    If you should wish to develop your solution, look at CL_BSP_API_GENERATE. It is an API to create BSP applications.
    You can also look at our own report BSP_EXPORT_CLASSES (transaction SE38) that we use to dump BSP applications into text files. We use it for checking that our SP systems are in sync with our development system.
    brian

  • How to Download displayed output to Excel Using Bsp Application

    Hi Experts,
    please give me some idea because I am New In BSP.
    How to Download displayed output to Excel Using Bsp Application.
    If any sample code please do send me.
    In my condition I am getting data in  2-3 table view formats on one page and i want download that in Excel.
    please help me.
    Regards & Thanks,
    Yogesh

    Hi,
    This is more a question for the BSP forum.
    Anyway, as such it's realy easy since you can use HTML in order to import to Excel. All you need to do is add
    runtime->server->response->set_header_field( name = 'Contnet-Type'
    value = 'application/vnd.ms-excel' ).
    runtime->server->response->delete_header_field( name = 'Cache-Control' ).
    runtime->server->response->delete_header_field( name = 'Expires' ).
    runtime->server->response->delete_header_field( name = 'Pragma' ).
    Also check threads like
    Download BSP data into Excel
    export bsp-table to excel
    Export BSP Table to Excel
    Eddy
    PS. Reward useful answers and earn points yourself

Maybe you are looking for

  • ERREUR : 0xE800000A

    Bonjour, j'ai un iPod touch 32g qui ne date que de quelque mois et qui a déjà un problème. Quand je le branche sur mon pc et que je veux le synchroniser a iTunes sa me met " iTunes n'a pas pu se connecter a cet iPod car une erreur inconnue est surven

  • Is there a way to increase the number of "Open Recent" files that is listed Lightroom 5?

    In previous versions this was unlimited. It allowed me a quick way to view catalogs I have worked on even months ago. There are no options inside Lightroom 5 to adjust this that I can find. So is there a file I can modify in the Lightroom system fold

  • IPod touch 5th generation charger cable

    I've only had  my iPod touch a few days and the lightening pin connector isn't working. I bought it from currys, if I go into the apple store will they give me a new one?

  • Billing payment has been declinded

    hii im trying to download free apps. and its saying my previous billing payment has been declinced please entre another payment method which my bank did decline payments for fraud issues but ive now sorted it out with the bank. and they av took the b

  • Background behind swf shows white

    Hi, When the page for thsi site (http://www.thetrinteam.com/) loads the background behind the flash document is white.  Is there a way to change this so that it matches the page background? Thanks, Chris