BSP Code modification
Hello,
I am trying to modify a BSP code in PCUI. I have a PCUI screen with a search in the drop down by customer, name ..etc. I would like to add partner ID instead of customer, what code changes do I have to do?
Any help is appreciated.
Thanks,
-Ram
Hi Kewl,
you don't have to modify the Code. The values of the Quick Search Dropdown could be customizes. In the PC-UI Book on Page 62 you will find:
"The search group does not influence the fields for the fast search (Get queries). The fields for the dropdown list box, displayed in the fast search, are taken from the screen structure of the search area at event INIT. The fields that are not hidden in the field group are ordered alphabetically and displayed automatically at the Get search."
Regards
Gregor
Similar Messages
-
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,
AnshumanHi,
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. -
Code modification...urgent
hi experts,
i am new to enhancement and modifications.
can anybody tell me
1.is the term modification and code modification one and the
same?or different?if so,
2.what is code modification?
3.how do u do code modification?
4.adv. and disadv. of code modifications?
i appreciate if u provide links also.
thanks in advance.Hi
Explicit Enhancement Options
There are two types of explicit enhancement options: Source code enhancements with source code plug-ins and BAdIs:
Explicit enhancement options of the source code enhancement type allow you to insert source code plug-ins. These are lines of code that are executed if the source code enhancement option is inserted in the code with the Enhancement Point command. Source code enhancement options with the Enhancement Section command behave the same, except that the source code plug-in replaces the section in the original code. Therefore, you are not only able to enhance the original code, but can also flag specific code sections (as enhancement sections) so that other developers can replace these sections with other code without making modifications.
Business Add-Ins (BAdIs) are hangers for object plug-ins. A BAdI definition comprises an interface with methods. BAdIs are enhanced by classes that implement the BAdI interface. If you instantiate a BAdI and then call its methods, you can, among other things, specify which method implementations are to be carried out on the basis of filter values. In other words, a BAdI method call is a dynamic method call with a specified interface, for which it is not determined until runtime which method implementations are to take place.
In the case of source code enhancements, the definition and call coincide. You define BAdIs once in the BAdI Builder and can then call them at different points in the various compilation units.
Implicit Enhancement Options
Implicit enhancement options are fixed points in compilation units that is, points that remain intact even if the code is changed. This is important for the following reason: If the location of an enhancement is moved, you have to check manually after an upgrade whether the enhancement is still at the correct point and replace it if necessary. The following are implicit enhancement options at which enhancements can always be inserted:
You can always insert source code plug-ins before the first and the after the last line of includes, methods, reports, and function modules.
You can always add further optional parameters to function modules.
For global classes, there are different permanent, implicit options for enhancements: You can insert additional attributes or methods, and you can add optional parameters to existing methods
Customer-Specific Modification and Enhancement Possibilities
Use
The following documentation provides an overview of the customer-specific modification and enhancement possibilities in the IS-H System. Note that to implement enhancements, you require ABAP programming knowledge.
Features
The IS-H system provides the following technical possibilities for customer-specific modifications and enhancements
Business Add-Ins (BAdIs)
If default code (standard procedure defined by SAP) exists for the BAdI, please note it will be overwritten when you implement the BAdI. You can, if required, re-use the default code in your implementation.
As of SAP NetWeaver 2004, the enhancement concept of the ABAP Workbench (Enhancement Framework) is available for BAdIs. Note that SAP Patient Management contains BAdIs that use the Enhancement Framework as well as the classic BAdIs.
Customer Exits (transaction SMOD)
If SAP delivers sample code for the customer exit, you can access it when implementing the exit by choosing Goto ® Sample Code. You can re-use the sample code using Copy&Paste
User Exits from the IS-H Implementation Guide: Basic Settings ® Configuration/Systems/Events ® Display SAP User Exits.
To implement the IS-H user exits, copy the function module delivered by SAP into a customer-specific function group. The name of the function module delivered by SAP is specified in the table you call in the IS-H Implementation Guide by choosing the path specified to the left here.
Once youve copied the source code, you can modify this copy to meet your needs. Note that you must not modify the interface of your own function module.
Now enter the name youve chosen for the function module in the customer table. You access this table by choosing Basic Settings ® Configuration/Systems/Events ® Configure Customer User Exits.
If it is helpful rewards points.
Regards
Pratap.M -
Problem in SAP standard code modification for FB03
Hi Experts,
I am adding 4custom fields in FB03 tcode by doing a SAP standard code modification in SE51.
The program name is SAPMF05L and screen no. is 302(In some SAP verion, it is 304). This is the screen for document line item of an invoice.
My problem is:
When I add the fields in the screen, in which module will I put logic in the PBO and PAI as I am unable to figure out the German comments and the program structuring.
Also, if anybody can tell me what to write as I am little bit confused about the logic of populating my fields with the values.
FB03 is a display transaction so I have to keep my custom screen fields disabled.
Regards,
Sangeeta.Hi Sangeeta,
For enhancing the screen of this Tcode, first of all search is there any Screen enhancement is provided by SAP or not and in case if it is provided then use that only.
Regards
Jagesh Lakdawala -
Signed classes & preventing code modification
Hi, I've got a generic question concerning preventing code modification.
Suppose I have written some neat code (yeah, that might happen, one never knows ;-)) and I want to bundle it in a JAR AND make sure nobody will modify my code (at least, without a warning).
All right. I make up my JAR, and I sign it. This adds a SIGNER.SF & SIGNER.DSA/.RSA to the JAR.
Yes... but... what prevents another person from:
1. downloading my JAR
2. unjarring my JAR, and retrieving the important .classes
3. eventually, modifying the .class (to make my code silly and ugly for instance ! ;-( ).
4. make again the JAR, and sign it with his own keys
You'll tell me: "Yes, this is possible, but then the code is signed by him, not by you !". Correct... But who will warn the user that has downloaded my code that he's not using "my" code but another one.
I'll have to tell him "check the signature is 0215AB45...". 1/ This is Highly unpractical... 2/ If He's the bad guy, this does not prevent him from modifying my code !
Any solution or interesting thoughts for that topic ?
Thanks,
Axelle.Signing is not intended to prevent modification, java classes can always be decompiled, modified and redistributed. What signing does is allow modification to be detected.
If a user has your public key, he will be able to detect that the (modified) jar was not signed by you, and hence is untrustworthy.
Similarly a java application can detect that a given jar file (or even object, eg: an authentication token) was not signed by you, and hence cannot be trusted. If however the Bad Girl has access to the application code, she can decompile said application code and modify it so that it doesn't care.
If you want to protect your code, you can try obfuscating it (there are various obfuscation tools around, do a search on google), but all this does is make the decompiled code less easy to read (variable names all a1, a2, etc), and won't really stop anyone who is serious about stealing your cool code.
Another option might be to deploy a compiled version (if you are distributing an application to a single platform), but this won't work with applets, loses the portability of java classes, and if the Bad Girl is good enough (and determined enough) it will only slow her down (though probably a fair bit).
The only sure fire way I know of preventing your Java code from being stolen is to not distribute it, which is hardly useful. -
Want to locate field in SRM 4.0 BSP Code
Hi All,
there is a date range in Process Puyrchase Order --> Process Item screen named as Service Period (Confirmed) under Service Timeframe. I clicked on the page and viewed the HTML code. There field name is order.item.edit_pco_model_pt_item_timeframe[2].vper_start. Now can you tell me how to locate this field in BSP code. Currently this field is editable and we want to make it uneditable. BADI BBP_UI_CONTROL_BADI doesn't have any method for PO fields control.
Please help.
Thanks
PrachiHello Siddarth,
Try with screen variant ( SHD0 transaction).
Regards.
Laurent. -
Disable a field in SRM 4.0 BSP Code
Hi All,
there is a date range in Process Puyrchase Order --> Process Item screen named as Service Period (Confirmed) under Service Timeframe. I clicked on the page and viewed the HTML code. There field name is order.item.edit_pco_model_pt_item_timeframe[2].vper_start. Now can you tell me how to locate this field in BSP code. Currently this field is editable and we want to make it uneditable. BADI BBP_UI_CONTROL_BADI doesn't have any method for PO fields control.
Please help.
Thanks
PrachiHello Siddarth,
Try with screen variant ( SHD0 transaction).
Regards.
Laurent. -
Access Global attribute from with the BSP code.
I have an attribute created within the View controller implementation class. The attribute is called GV_COUNT.
Within my BSP code I want to access this global variable, but I'm getting an error when activating the code, having statements like CLEAR GV_COUNT. in my code.
Is there a format that is required. At the moment I just receive an error saying that field GV_COUNT is unknown.
I thought that anything defined in the controller class was available for anything below.
JasonThanks Christian.
Of course the attribute has been made public, and now that you've mentioned 'CONTROLLER' I feel rather foolish, as I should have known this.
Many thanks to yourself and others for the replies.
Regards
Jason -
BSP code to open new page in new window after button click
Hi expert,
I have a requirement to write a BSP code to open new page in new window after button click. I have done the same for opening in same window but not for opening in new window.
Can you please help me out with the code in which the page opens in new window and the menubar & Addressbar is displayed in hide mode.Hi,
To add more with Anubhav...
onClientClick = "javascript:window.open( 'pop.htm' ) "
You can create a pop.htm page, and call the same in another page using the above code.
Refer standard BSP examples, SBSPEXT_HTMLB, SBSPEXT_PHTMLB, SBSPEXT_XHTMLB. You can run the default.htm pages and see what way you want to design your BSP.
Thanks,
Sreekanth -
ABAP Code Modification for Command Tickets
Hi Experts
Modification to processing of Command Orders & Tickets
We require a modification to the processing being performed on sales data originating from the Command Concrete system and potentially from other systems yet to come online (e.g. Reddies Cement plant).
The Sap process involved is
ZINT_INBOUND_POLLING and within that,
ZINT_CSTPORD_ROUTINES.
The problem
Currently there is an assumption that every sales order (and its deliveries) will include a product which is made to order, i.e. for which a production order will be required.
In ZINT_CSTPORD_ROUTINES, a check is made to identify the production order linked to the sales order. If there is no such production order (usually because of the customeru2019s credit status) then processing of the ticket is terminated.
This assumption would fall down if an order was to be raised (in Command) on which there is no concrete material. For example, if we sold a bag of pigment or a screed to a customer. In this case the item would be sold from stock and there would be no need for a production order
The solution
In the routine which checks for the existence of a production order, modify the code as follows:
Inspect each item on the sales order
If (and only if) there is at least one item with a category of u201CZTACu201D then check for a production order, otherwise process the order in the usual manner.
The following Coding of programs are below.
Report: ZINT_INBOUND_POLLING
Description: REDDIES Interfaces: Polling Job for Inbound Interfaces
This report is a general file polling and distribution job for
inbound interfaces. Interfaces are identified by their assigned ID
and type values (refer to table ZINT_ADMIN). The polling job can be
run only for a single interface. This restriction has been implemented
for performance reasons. Dependent interfaces should be set up as
separate, dependent jobs in SM37.
For an interface to be triggered by this report, it must have:
1. Administrative parameters entered in table ZINT_ADMIN.
2. Other parameters (eg. organisational data such as plant or store)
entered in table ZINT_PARAM.
3. An interface-specific function module created in accordance with
the inbound interface template (ZINT_INBOUND_INTERFACE).
4. An interface-specific directory structure. This structure must
be reflected in the directory parameters of table ZINT_ADMIN.
Note that the directory names supplied in ZINT_ADMIN must exactly
match those used for the actual directories.
This job is designed to run as a periodic background job, but can
also be run on-line when required.
On each execution, the program performs the following tasks:
1. Validate all selection parameters.
2. Read interface administration and other parameters.
3. Check the inbound directory to see if there are any new files.
4. If there is a new file.
4.1 Read the data and update the interface log.
4.2 Archive the data and update the interface log.
4.3 Call the interface function module, sending data and parameters.
4.4 Log any messages returned from the function module.
5. Exit.
Please document all changes to this job carefully and clearly. Major
additions to functionality should be put in new, parameterised form
routines wherever possible to sustain maintainablility of the code.
Change History:
Date User Request Description
07/02/2006 EDWG WG1K902600 Original program.
20.07.2007 ROBS Changes to handle error messages better.
report zint_inbound_polling line-size 170
line-count 58(2)
message-id zz
no standard page heading.
Global Data Declarations
include zint_interface_data.
data: begin of tbl_messages occurs 0,
line(132) type c,
end of tbl_messages.
--Field Symbols--
field-symbols: <function>.
--Global Variables--
Selection Screen
--Interface Mode--
RJS Start >>>
selection-screen begin of block b1 with frame title t_mode.
parameters: p_upl radiobutton group p1.
selection-screen skip 1.
select-options: s_intid for zint_intid-zint_id
matchcode object zint_intid,
s_intty for zint_intty-zint_ty
matchcode object zint_intty.
selection-screen uline.
parameters: p_pro radiobutton group p1.
selection-screen skip 1.
RJS End <<<
Interface ID
parameters: p_intid like zint_intid-zint_id
matchcode object zint_intid.
Interface type
parameters: p_intty like zint_intty-zint_ty
matchcode object zint_intty
default 'I'.
IDOC group or set
parameters: p_intis type zint_is.
select-options: s_datum for zint_data-created_on.
selection-screen skip 1.
parameters: p_dlgrp as checkbox default c_false.
data: p_alone(1) type c value 'X'.
selection-screen skip 1.
Interface parameter set and sequence number.
parameters: p_intsi like zint_param-zint_si,
p_intsq type zint_sq default '001' no-display.
selection-screen uline.
parameters: p_apsrv radiobutton group r1,
p_pc radiobutton group r1.
selection-screen skip 1.
parameters: p_nowar as checkbox default c_true.
selection-screen end of block b1.
Event Processing
--IDOC Set Values--
at selection-screen on value-request for p_intis.
Display a selectable list of parameter sets
perform select_idoc_set using p_intid
p_intty
changing p_intis
v_rtcod.
if v_rtcod ne c_noerr.
Problem displaying parameter lists
message i000 with 'Unable to display IDOC set values.'
'Please enter an interface ID and type.'.
endif.
--Parameter Set Values-----
at selection-screen on value-request for p_intsi.
Display a selectable list of parameter sets
perform select_parameter_set using p_intid
p_intty
changing p_intsi
v_rtcod.
if v_rtcod ne c_noerr.
Problem displaying parameter lists
message i000 with 'Unable to display parameter list values.'
'Please enter an interface ID and type.'.
endif.
--Check Interface Admin.---
at selection-screen on: p_intty, p_intid.
perform validate_interface_admin using p_intid
p_intty
changing v_rtcod.
if v_rtcod ne c_noerr.
No administration parameters exist for interface
message e001 with p_intid p_intty.
endif.
--Validate Parameter Set---
at selection-screen on p_intsi.
perform validate_interface_param using p_intid
p_intty
p_intsi
changing v_rtcod.
if v_rtcod ne c_noerr.
Parameter set does not exist for interface
message e002 with p_intsi p_intid p_intty.
endif.
Initialisation
initialization.
perform set_screen_texts.
Start of Selection
start-of-selection.
RJS Start >>>
refresh: tbl_totals, tbl_messages.
UPLOAD INBOUND DATA ---------------------
if p_upl = 'X'.
perform upload_data.
PROCESS NEW or ERRORS -------------------
else. " p_pro = 'X'.
perform process_data.
endif.
RJS End <<<
End of Selection
end-of-selection.
Write the log file to the specified directory
read table t_ibfil index 1.
perform write_log_file tables t_ldata
using s_admin-zint_lg
t_ibfil-filename
p_apsrv
changing v_rtcod.
if v_rtcod ne c_noerr.
Error writing to log file
message i000 with 'Could not write to log file for interface'
s_admin-zint_id '/' s_admin-zint_ty.
endif.
RJS Start >>>
Write out Messages and totals
if p_pro = 'X'. " Processing Data
describe table tbl_messages lines sy-tfill.
if sy-tfill = 0.
write:/ 'Processing Complete. Use ZSTA to analyse'.
else.
loop at tbl_messages.
write:/ tbl_messages-line.
endloop.
endif.
else. " Uploading Data
format color col_total.
uline.
write:/ 'Upload Details:', 132 space.
uline.
format color off.
describe table tbl_totals lines sy-tfill.
if sy-tfill = 0.
write:/ '0 Records Processed'.
endif.
loop at tbl_totals.
write:/ 'Interface ID:', tbl_totals-zint_id,
' Type:', tbl_totals-zint_ty,
' Command Date:', tbl_totals-created_on,
' Records Processed:', tbl_totals-count.
endloop.
uline.
message s999(b1) with 'Data Upload Completed'
'- Please see full Results uing trans ZSTA'.
endif.
RJS End <<<
Form Routines
include zint_interface_routines.
*& Form upload_data
text
form upload_data.
data: lt_admin type standard table of zint_admin with header line.
data: l_message(80) type c.
select * from zint_admin into table lt_admin
where zint_id in s_intid
and zint_ty in s_intty.
loop at lt_admin.
refresh t_idata.
refresh t_ibfil.
Progress Message
concatenate 'Reading Inbound data files in'
lt_admin-zint_ib
into l_message separated by space.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
PERCENTAGE = 0
text = l_message.
Check for a new inbound file and read its data.
perform read_inbound_data tables t_idata
t_ibfil
using lt_admin-zint_ib
p_apsrv
changing v_rtcod.
if v_rtcod ne c_noerr and
v_rtcod ne 7 and " RJS- no files found
lt_admin-zint_ib ne space.
Write an error to the log
perform write_log_entry
tables t_ldata
using 'E'
'ZINT_INBOUND_POLLING'
'READ_INBOUND_DATA'
'Problem reading inbound interface file.'
p_nowar space.
exit.
endif.
Exit if there is no data.
describe table t_idata lines v_fldsz.
check v_fldsz gt 0.
Write inbound data to a database table, for later access
perform write_data tables t_idata
using lt_admin-zint_id
lt_admin-zint_ty
lt_admin-zint_fm
lt_admin-zint_ib.
Move the inbound file to the archive directory
perform archive_inbound_data tables t_ibfil
using p_apsrv
lt_admin-zint_ar
lt_admin-zint_ib
changing v_rtcod.
if v_rtcod ne c_noerr.
Write an error to the log if unable to move file
perform write_log_entry
tables t_ldata
using 'E'
'ZINT_INBOUND_POLLING'
'ARCHIVE_INBOUND_DATA'
'Problem archiving inbound interface file.'
p_nowar space.
endif.
endloop.
endform. "upload_data
*& Form process_data
text
form process_data.
data: lt_idata type standard table of x_idata with header line.
data: s_idata type x_idata,
l_last_status(3) type c.
data: l_message(80) type c,
l_status(3) type c,
l_lines(5) type c,
l_date(10) type c.
Validate input parameters
if p_intid = space
or p_intty = space
or p_intsi = space.
message e999(b1) with 'Mandatory fields must be filled'.
endif.
Read the interface administration parameters
perform get_admin_parameters using p_intid
p_intty
changing s_admin
v_rtcod.
if v_rtcod ne c_noerr.
Write an error to the log
perform write_log_entry
tables t_ldata
using 'E'
'ZINT_INBOUND_POLLING'
'GET_ADMIN_PARAMETERS'
'No admin. parameters for interface. Check ZINT_ADMIN'
p_nowar space.
endif.
Read the other interface parameters (if required)
if p_intsi ne space.
perform get_other_parameters tables t_param
using p_intid
p_intty
p_intsi
changing v_rtcod.
if v_rtcod ne c_noerr.
Write an error to the log
perform write_log_entry
tables t_ldata
using 'E'
'ZINT_INBOUND_POLLING'
'GET_OTHER_PARAMETERS'
'No org. parameters for interface. Check ZINT_ADMIN'
p_nowar space.
endif.
endif.
Read any Error records for reprocessing - if none, read New data
perform read_data tables t_zint_data
changing v_rtcod.
clear l_status.
loop at t_zint_data.
Create subset of all records, per Command Date
at new created_on.
refresh t_idata.
clear l_lines.
endat.
at new key_val.
add 1 to l_lines.
endat.
append t_zint_data-raw_data to t_idata.
Process one date at a time
at end of created_on.
Progress Message:
write t_zint_data-created_on to l_date dd/mm/yyyy.
concatenate 'Processing' l_lines 'records for'
p_intid '/' p_intty '/' p_intsi 'Created:'
l_date
into l_message separated by space.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
text = l_message.
Process the incoming data
assign s_admin-zint_fm to <function>.
call function <function>
exporting
i_zint_id = p_intid
i_zint_ty = p_intty
i_zint_si = p_intsi
i_zint_is = p_intis
i_zint_dl = p_dlgrp
i_zint_as = p_apsrv
i_zint_al = p_alone
i_zint_nw = p_nowar
i_zint_sq = p_intsq
tables
t_zint_mslog = t_ldata
t_zint_idata = t_idata
t_zint_param = t_param
changing
c_zint_rc = v_rtcod
exceptions
no_such_interface = 1
invalid_parameter_set = 2
data_table_empty = 3
invalid_idoc_group = 4.
case sy-subrc.
--No Such Interface--
when 1.
perform write_log_entry
tables t_ldata
using 'E' 'ZINT_INBOUND_POLLING' <function>
'Interface does not exist in ZINT_ADMIN.'
p_nowar space.
--Invalid Parameter Set----
when 2.
perform write_log_entry
tables t_ldata
using 'E' 'ZINT_INBOUND_POLLING' <function>
'Invalid parameter set for interface. Check ZINT_PARAM'
p_nowar space.
--Data Table Empty--
when 3.
perform write_log_entry
tables t_ldata
using 'E' 'ZINT_INBOUND_POLLING' <function>
'No inbound data. Check directory as per ZINT_ADMIN'
p_nowar space.
--Invalid IDOC group--
when 4.
perform write_log_entry
tables t_ldata
using 'E' 'ZINT_INBOUND_POLLING' <function>
'Invalid IDOC group. Check ZINT_ADMIN.'
p_nowar space.
--Others--
when others.
endcase.
Now store messages not related to a specific key
loop at t_ldata into s_ldata where key_val = space.
move s_ldata-messg to tbl_messages-line.
append tbl_messages.
endloop.
refresh t_ldata.
If data for last date had errors, then stop processing further dates
clear l_last_status.
select status from zint_data into l_last_status
where zint_id = p_intid
and zint_ty = p_intty
and key_val = t_zint_data-key_val.
endselect.
if l_last_status = 'ERR'.
concatenate 'Processing Halted - Errors for Date' l_date
into l_message separated by space.
message s999(b1) with 'ZINT_INBOUND_POLLING' <function>
l_message.
exit.
endif.
endat.
endloop.
endform. "process_data
*& Form set_screen_texts
Assign values to the selection screen titles.
form set_screen_texts .
t_mode = 'Run Mode'. " RJS
endform. " set_screen_texts
RJS Start >>>
*& Form write_data
Save the Inbound data to table ZINT_DATA, for later processing
-->PT_IDATA text
-->PV_ID text
-->PV_TY text
-->PV_FM
-->PV_IB
form write_data tables pt_idata structure zint_idata
using pv_id
pv_ty
pv_fm
pv_ib.
data: l_key_val like zint_data-key_val,
l_seq like zint_data-sequence,
l_created_on like zint_data-created_on,
l_counter type i.
data: lt_zint_data type standard table of zint_data with header line.
get time.
clear l_created_on.
refresh lt_zint_data.
loop at pt_idata.
clear lt_zint_data.
lt_zint_data-zint_id = pv_id.
lt_zint_data-zint_ty = pv_ty.
lt_zint_data-status = 'NEW'.
Derive both the "Key" value (KEY_VAL) and the
"Command Data Date" value (CREATED_ON) to store on the Data table
case pv_fm.
when 'ZINT_INBOUND_INTERFACE_CSSORDR'.
if pt_idata-zint_re(2) = '01'.
perform get_command_order_key using pt_idata-zint_re
l_key_val
l_created_on.
endif.
when 'ZINT_INBOUND_INTERFACE_CSTPORD'.
if pt_idata-zint_re(2) = '01'.
perform get_prod_order_key using pt_idata-zint_re
l_key_val
l_created_on.
endif.
when 'ZINT_INBOUND_INTERFACE_CSTGISS'.
perform get_sales_order_key using pt_idata-zint_re
l_key_val.
endcase.
lt_zint_data-created_on = l_created_on.
lt_zint_data-key_val = l_key_val.
lt_zint_data-length = strlen( pt_idata-zint_re ).
lt_zint_data-raw_data = pt_idata-zint_re.
append lt_zint_data.
endloop.
Setup the sequence number for each key value
loop at lt_zint_data.
at new key_val.
clear l_seq.
endat.
add 1 to l_seq.
lt_zint_data-sequence = l_seq.
modify lt_zint_data.
endloop.
Check for existing data with this same key
clear l_counter.
select count(*) from zint_data into l_counter
for all entries in lt_zint_data
where zint_id = lt_zint_data-zint_id
and zint_ty = lt_zint_data-zint_ty
and created_on = lt_zint_data-created_on
and key_val = lt_zint_data-key_val
and sequence = lt_zint_data-sequence.
Found duplicate data?
if l_counter > 0.
Yes: so remove these records from the input table
loop at lt_zint_data.
clear l_counter.
select count(*) from zint_data into l_counter
where zint_id = lt_zint_data-zint_id
and zint_ty = lt_zint_data-zint_ty
and created_on = lt_zint_data-created_on
and key_val = lt_zint_data-key_val
and sequence = lt_zint_data-sequence.
if l_counter > 0.
delete lt_zint_data.
endif.
endloop.
message i999(b1) with 'Data already exists in SAP! Directory:' pv_ib
'Key:' lt_zint_data-key_val.
endif.
Now save whatever is not a duplicate
loop at lt_zint_data.
Store new data records
insert zint_data from lt_zint_data.
and Store totals for reporting
tbl_totals-zint_id = lt_zint_data-zint_id.
tbl_totals-zint_ty = lt_zint_data-zint_ty.
tbl_totals-created_on = lt_zint_data-created_on.
tbl_totals-count = 1.
collect tbl_totals.
endloop.
endform. "write_data
*& Form get_command_order_key
Extract Command Order from raw data
-->L_LINE text
-->L_KEY text
form get_command_order_key using l_line l_key l_date.
data: l_orddate type d,
l_order(12) type n,
l_data(3000) type c,
l_shortorder(5) type n.
l_data = l_line.
perform extract_field(saplzint_csord)
using l_data
changing l_data
l_orddate.
perform extract_field(saplzint_csord)
using l_data
changing l_data
l_order.
l_shortorder = l_order.
if l_order le 9999.
concatenate l_orddate+2(6) '-'
l_shortorder
into l_key.
else.
concatenate l_orddate+2(6)
l_shortorder
into l_key.
endif.
l_date = l_orddate.
endform. "get_command_order_key
*& Form get_prod_order_key
Extract Commant Ticket number from raw data
-->L_LINE text
-->L_KEY text
form get_prod_order_key using l_line l_key l_date.
data: l_ticketdate type d,
l_data(3000) type c,
l_ticket(10) type n.
l_data = l_line.
perform extract_field(saplzint_cstik)
using l_data
changing l_data
l_ticketdate.
perform extract_field(saplzint_cstik)
using l_data
changing l_data
l_ticket.
l_key = l_ticket.
l_date = l_ticketdate.
endform. "get_prod_order_key
*& Form get_sales_order_key
text
-->L_LINE text
-->L_KEY text
form get_sales_order_key using l_line l_key.
l_key = l_line(10).
endform. "get_sales_order_key
*& Form read_data
Read data from custom table
-->PT_ZINT_DATA text
-->P_STATUS text
form read_data tables pt_zint_data structure zint_data
changing p_rtcod.
data: lt_zint_data type standard table of zint_data with header line.
data: l_found_rec(1) type c.
clear p_rtcod.
refresh: pt_zint_data, lt_zint_data.
Read stored data in date/time order
select * from zint_data into table lt_zint_data
where zint_id = p_intid
and zint_ty = p_intty
and status in ('ERR','NEW')
and created_on in s_datum
order by created_on key_val sequence.
Always ensure any existing Error records are re-processed first.
loop at lt_zint_data where status = 'ERR'.
move lt_zint_data to pt_zint_data.
append pt_zint_data.
Store totals for reporting
tbl_totals-zint_id = p_intid.
tbl_totals-zint_ty = p_intty.
tbl_totals-created_on = lt_zint_data-created_on.
tbl_totals-count = 1.
collect tbl_totals.
endloop.
Loop through the NEW records - add to list if no other errors
loop at lt_zint_data where status = 'NEW'.
l_found_rec = 'N'.
loop at pt_zint_data where status = 'ERR'
and created_on <> lt_zint_data-created_on.
l_found_rec = 'Y'.
exit.
endloop.
Found no errors for another date - so add NEW data
if l_found_rec = 'N'.
move lt_zint_data to pt_zint_data.
append pt_zint_data.
Store totals for reporting
tbl_totals-zint_id = p_intid.
tbl_totals-zint_ty = p_intty.
tbl_totals-created_on = lt_zint_data-created_on.
tbl_totals-count = 1.
collect tbl_totals.
endif.
endloop.
endform. "read_data
UNDER THIS THERE IS BELOW PROGRAM
*& Include ZINT_CSTPORD_ROUTINES *
Report: ZINT_CSTPORD_ROUTINES
Description: REDDIES Interfaces: COMMAND-SAP Interface Forms (Tickets)
Routines fpr the COMMAND-SAP production order interface. Note: some
of the code in this file has been directly copied from the original
interface (ZPPU_COMMAND_PRODUCTION, Jason Moore, Extend). This has
been done for two reasons: (1) the code works and (2) to save time.
Change History:
Date User Request Description
13/02/2006 EDWG WG1K902600 Original program.
*& Form process_inbound_data
Create prod. orders from ticket data extracted from the COMMAND
system. Note that large portions of the code in this routine
have been copied from the retired ZPPU_COMMAND_PRODUCTION
interface program. This was done (1) because the old code works
and (2) to save development time.
-->T_ZINT_IDATA Internal table of interface data
-->T_ZINT_PARAM Internal table of interface parameters
-->T_ZINT_MSLOG Internal table of messages
-->P_ZINT_ID Interface ID
-->P_ZINT_TY Inteface type
-->P_ZINT_IS IDOC group for interface
-->P_ZINT_DL Flag: delete IDOC group when complete
-->P_ZINT_AL Flag: run in standalone mode
-->P_ZINT_NW Flag: do not log warning messages
-->P_ZINT_SQ Interface sequence number
<--P_ZINT_RC Return code (<>0=>error)
form process_inbound_data tables t_zint_idata structure zint_idata
t_zint_param structure zint_param
t_zint_mslog structure zint_mslog
using p_zint_id type zint_id
p_zint_ty type zint_ty
p_zint_is type zint_is
p_zint_dl type zint_dl
p_zint_al type zint_al
p_zint_nw type zint_nw
p_zint_sq type zint_sq
changing p_zint_rc type zint_rc.
data: lva_partner(10) type n,
lva_cmdord(12) type n,
lva_prodmat(18) type n,
lva_filemat(18) type n,
lva_prodord(12) type n,
lwa_file type ty_file,
lva_type(2) type c,
lva_satsur type c,
lva_mincart type c,
lva_text(200) type c,
lva_counter type i,
bblines type i,
lva_shortorder(5) type n,
lva_loggr like marc-loggr,
lva_saleord like vbkd-vbeln,
lva_linkindex like sy-tabix,
lva_xabln like likp-xabln,
lva_vbeln like likp-vbeln,
l_vbfa like vbfa,
lva_igmng like caufv-igmng,
lva_gamng like caufv-gamng,
lva_qdiff like caufv-gamng,
lva_ltxa1 like afru-ltxa1,
lva_aufnr like afru-aufnr,
lva_wemng like afpo-wemng,
lva_psmng like afpo-psmng,
lva_rsnum like resb-rsnum,
lva_rspos like resb-rspos,
lHi ,
Modify your code like this .
DATA: YEARS TYPE TFMATAGE,
MONTHS TYPE TFMATAGE.
*declare the variable as type Char
DATA: Y_NUM(4) TYPE c,
M_NUM(2) TYPE c.
IF NOT SOURCE_FIELDS-/BIC/ZDOB IS INITIAL.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
I_DATE_FROM = SOURCE_FIELDS-/BIC/ZDOB
I_DATE_TO = SY-DATUM
I_FLG_SEPARATE = 'X'
IMPORTING
E_MONTHS = MONTHS
E_YEARS = YEARS.
Y_NUM = YEARS.
M_NUM = MONTHS.
CONCATENATE Y_NUM '.' M_NUM INTO RESULT.
This will solve your problem.
MM -
Hi Guys,
Below you find some ABAP code that will get a lot of product and price information. A csv file is then created and put in a folder.
The program exports csv columns like this: ProductID;ProductName;PurchasePrice;Price;PriceVAT;Category;Brand;EAN
The only thing I would want is to adjust the code so that it does exactly the same, but only exports three columns: ProductID;PriceVAT;Stock
I would guess that it's not a very big modification, but my knowledge of ABAP is very low. So I hope you guys can help me out here
Here's the code: [catalog_abap_code|http://www.storylinedesign.be/catalog_abap_code.txt]
Cheers,
Jimmyanyone?
-
Hide the BSP code for the user
HI
we have a requirement, where we need to mask or hide the source code on the BSP pages, or atleast some URLS/hyperlinks within the code.
when a user views the source code, he must not see it in full or atleast hide the URLS within the code.
we have an external environment and just for security reasons, we need it to be done.
do we have a std way of configuration or something ? this is for the standard BSPs generated for CRM functionality.
This is not for custom BSP apps.
thanksI would know of no way to do this properly with SAP tools.
One approach is: You could create your own BSP tag and generate the URLs in there. Then put it on the BSP page. Should not be to much effort.
Nevertheless, the complete HTML code is send to the browser for interpretion. This includes your URLs! Thus when a user views the source code of the WebClient page in Internet Explorer he/she will get the URLs.
The only way I can think of right now, to do this halfway secure, is relaying through the WAS. Create an own webservice, write URLs on your BSP that this service handles.
Just an idea, I have not and will hopefully never have to do this.
cheers Carsten -
BSP code - radiobutton - search button
Hello BSP gurus,
Ok, so far I have this piece of code. The idea is to click on a radiobutton and then click on the search button in order to go to the next screen (the result screen).
Does anyone have an idea how to handle this?
Thanks in advance.
<htmlb:radioButton id = "rad1"
key = "r1"
disabled = "false"
text = "Report 1"
checked = "false"
/>
<htmlb:button id = "search"
text = "Search"
onClick = "onInputProcessing(select)" />Here you go..
<b>To display more than 1 Radiobutton:</b>
<htmlb:radioButtonGroup id = "grp1"
columnCount = "4"
disabled = "false"
mode = "LAYOUT_GROUPING"
selection = "<%= selected %>"
tooltip = "This is my RadioButton Group"
width = "500" >
<htmlb:radioButton id = "rad1"
key = "r1"
tooltip = "This is a radio button1"
text = "search1"
/>
<htmlb:radioButton id = "rad2"
key = "r2"
tooltip = "This is a radio button2"
text = "search2"
checked = "true"
onClick = "click2" />
</htmlb:radioButtonGroup>
<b>To capture selected Radiobutton:</b>
DATA: rbg TYPE REF TO CL_HTMLB_RADIOBUTTONGROUP.
rbg ?= CL_HTMLB_MANAGER=>GET_DATA( request = request id = 'grp1' name = 'grp1' ).
if rbg is not initial.
selected = rbg->selection.
if selected = 'r1'.
navigation->goto_page( 'result_page1.htm');
elseif selected = 'r2'.
navigation->goto_page( 'result_page2.htm');
endif.
endif.
Raja T
<b>* Reward each useful answer</b> -
How to manage code modifications among multiple users using Project.mpt or Global.mpt
Hi,
There is one copy of a Template.mpt file in the shared drive. Users copy this file to their project folder for a specific project and they save it as Project_n.mpp. There is only one Project_n.mpp file per project. So whoever works on the particular project
will always open the same Project_n.mpp file. There is a lot of projects that users work on and each of them has its respective Project1.mpp, Project2.mpp, Pproject3.mpp etc.file.
These files contain modules that are called on the Project Open and some of them on the Project Close. Current code in modules is used to update the project file with data from a database and also to update database with the data from
the project file.
I am looking now into the solution on how to incorporate any future modifications of the modules so that it can be applied to all project files.
If I modify code in any of the modules of the Template.mpt file that is on the Shared drive I am now sure that modifications will apply only to the new projects (when user initiate the Project_n.mpp and starts from the Template.mpt).
But in the case of already created project files (Project1.mpp, Project2.mpp, Project3.mpp) I also want to apply the modified code in modules, but currently when I open them I have the old code.
I tried using Global.mpt file but ran into some issues such as if I move all modules to the global.mpt the functions called from ThisProject/Project Open are ending having errors since they are not defined. Is there any way of specifying
in the project that modules are defined in the Global.mpt.
I also tried to Move modules from Template.mpt file to the Project_n.mpp file on the opening. Before moving modules I deleted them to avoid having to answer to the question "Do you want to replace the file?", but then some modules wouldn't get deleted
right away because functions that are called in the Project.mpp open event are defined in the modules I want to delete. They get deleted at the end of the code execute and that causes issues when code runs again.
I would appreciate any help, suggestion on how to solve this issue. I am open to any proposition in regards how to share modifications among all users and previous and future projects.
Thanks in advance.Well, it certainly sounds like you could use Project Server, rather than standalone Project and MPP files stored on hard drives. This would be a perfect example of why Project Server was developed.
Some of the features that may address your needs are...
Project Server permits the creation of "template" schedules, so that users create new projects from existing Templates on the server. There can be as many as you like - different templates
for different types of schedules. Users have a drop down menu to select which "type" of project they want to create. There are other items that can be associated to the project creation.
Project Server also has workflow, which can perform actions (on the server side, not the desktop) to help manage the Project Management process flow.
Project Server allows many users to access the same copy of the schedule via a check-out (for editing) / check-in mechanism. This ensures that everyone is seeing the current and accurate version of
the schedule.
Project Server allows you to automatically keep "archived" versions of your published schedules for backup / restore purposes.
Project Server stores all project information in a SQL server database which permits you to use standard SQL tools to transfer data in / out.
Finally, Project Server still uses a Global.mpt, which is stored in the database and every user gets an automatic update of that file each time they open a project from the server (they get a local
copy, which updates with any changes) so that all changes to Global MPT are pushed out to all project users.
It sounds like you may benefit from Project Server Online, which is quick and relatively cost effective.
http://office.microsoft.com/en-us/project-server-help/get-started-with-project-online-HA102858793.aspx
Pay close attention to your data transfer needs, this area is getting better, but may or may not meet your requirements.
Finally, work with a Microsoft Partner who has "been there and done that" so you get the most benefit from Project Server.
Hope that helps,
Thanks, Eric S. Pcubed -
Standard code modification with enhacement points..
hi,
i need to modify a couple of my standard programs. I have been suggested to follow this approach.
first get the acces key and go to change mode. then where u want to insert ur code, click on the insert button and get the insert block. Then here I need to have an implicit point !! how do i create that ? where do i associate these enh points to an enhancement spot ??
also, the advantage stated is that tomorrow if i dont need this modifications, i can just simply switch off the enhancement spot ?? or point ?? i am not sure ? any details on that ?
another question is what happens when tomorrow sap changes this standard program. will my enhancement point/spot remian intact ?? what do i do to reapply my changed code as enh points ??
can anyone please throw some more light on all these ??
thks[Enhancement Framework>> |http://wiki.sdn.sap.com/wiki/x/cwXEB]
"another question is what happens when tomorrow sap changes this standard program"
SAP would use some logic, which will make sure they are not spoiling the enhancement points...
rettkomv = xkomv.
perform (^*&*&&*) using xkomv from saplv61a if found. "<< I can only remember this for now..
xkomv = rettkomv.
Maybe you are looking for
-
Problem with Fresh Install of OEL 6.3 x86_64 over old OEL 6.0 x32
Dear Experts, After selecting packages for fresh installation of OEL 6.3 x86_64 over old OEL 6.0 32-bit, it gives me the following warning Some of the packages you have selected for install are missing dependencies. You can exit the installation, go
-
Hi everyone. I've been trying finish my "sudoku" game and i really need some help. So as so far i can save my game to the file but i'm having problem with load them. So maybe i shall above my code: The first method is call when i press load button. (
-
Program to activate trasformation in BI&
Hi All, Could anyone please tell me if there is any standard ABAP program through which we can activate transformations in BI7. Currently i have to reactivate some transformation in Production systems so immediate response would be highly appreciated
-
When I try to play a song iTunes says "Original file could not be found"
I am getting a "!" next to my songs, and the message that the file cannot be used because the original file cannot be found.
-
Restrict corporate user to connect to the BYOD ssid
Dear folks , Can anyone help me out to do the configuration of the ISE to restrict the corporate users to get connected to the BYOD ssid . My devices are - laptops , windows phones , Iphones .. My corporate laptops have certificate installed , i am