Input validations using bsp code
hai all,
i want to check user input whether he/she entered correct values r not, i know how to do using javascript.
but i need to do the same without using javascript.. is there any way
leoiz
No, this was not a joke, but it would be possible theoretically.
Doing a quick search on Google got me this nice link:
http://www.permadi.com/tutorial/flashjscommand/
It shows an example of Flash interacting with JavaScript, hence proving the possibility.
As for really using Flash/ActionScript for input validation ...
If you are thinking about just including a little Flash-Validation for input fields - why do it with Flash if you can use JavaScript?
And if your page is a Flash-Page anyway, well, you would not have to go back to HTML input fields, as you work within your Flash applet.
Maybe you have a specific situation I didn't think of yet.
Max
Similar Messages
-
Using transaction code KEAI for CO-PA to FI validation
I wanted to see if anyone has experience using transaction code KEAI (Analysis of Value Flow FI-COPA). I know there is also transaction code KEAT for SD to CO-PA to FI validation. However for our needs KEAI seems a bit more user friendly. I have not really found any documenation on KEAI online or in SAP help. The program for this transaction code is RKE_RECONCILIATION_FI. Does anyone know the key difference between KEAI and KEAT. Any input you have would be appreciated.
KEAI is analyzes all value flows to CO-PA as against KEAT which deals with Transfer of Billing Documents.
The reconciliation covers all record types - A to I and Z (PA postings only)
You can restrict the report for components like - billing, CO objects, FI Docs
You can see the result by all documents, documents only with delta, documents only with delta to CO-PA
You can display summarized report if required and expand.
The output shows delta in detailed columns like - Account / Source Document / PA Value Field, FI Value, Document Value, PA Relevant Value, CO-PA Value, FI Doc. Delta, PA Doc Delta, Crcy.
The report is collapsible - company code > account > Document > Value Field -
Validation when posting a document using T. Code FB50 or F-02
Dear Experts
Please let me know on how to validate when posting a Cross Company Transaction using T. Codes FB50 or F-02. The requirement is to restrict Branches (each Branch is a Company Code in SAP) to post any Cross Company documents by selecting HO Company Code in Line Item, system has to stop the User by giving Error Message.
We can't control this using User level Authorizations because, here the Authorization is provided to the Users to post the Transactions using T. Codes FB50 and F-02.
To restrict this, I created a Validation as below:
Prerequisite:
BKPF-TCODE = 'FB50' OR BKPF-TCODE = 'F-02' AND
BKPF-BUKRS = 'Br. Company Code' AND
BSEG-BUKRS = 'HO Company Code'
Check:
FALSE
Message:
You Can't post Cross Company Transactions using T.Code FB50 or F-02
And I activated the above Validation in OB28 for HO and Branch Company Codes. But the Validation is not working properly. Can anybody help me on how to proceed further in this regard please.Hi,
I haven't tried to use a transaction code for Validation purpose. Instead, I have used document type as prerequisite and then check:
BKPF-BUKRS = 'Br. Company Code' AND
BSEG-BUKRS = 'HO Company Code'
If the condition is met, it displays an error (per the message in validation) while completing the line item details on posting a document.
Please let me know if that helps. If not, I can try to replicate your scenario and let you know if there is anything missing.
Thanks,
Ashish -
How to change System Key Board Default input language(registry entry) using c# code
Hi All
Please help me to write a small console application which helps to change keyBoard default input language in registry using c# code (Manually we can change as follows: Control Panel\All Control Panel Items\Region and Language\ KeyBoards and languages\Change
KeyBoards\Default Input Language)
Note: once system rebooted, English language should not be selected by default. Previously selected language has to be retained after system rebootingHi
Avatar
Would you mind letting us know the result of the suggestion?
I temporarily mark
cedric’s last response as an answer. You can unmark
it if they provide no help.
Best regards,
Kristin
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Validating Input characteristics using other characteristics value in PI sh
Hi,
I am currently working with PI sheet, the requirement is to validate the input characteristics using some other characteristics values, like
Char Name | Value | Input |
Acids | 2-3 | 2.5 |
CONC | 10-40 | 20 |
in this case consider the characteristic value from character Value to validate Input.
Please suggest.
Anmol.Hi,
I got the solution clossing the threat, by using variables in PI sheet to create validation formula.
Thanks,
Anmol -
Not able to run validation using validation.xml & validator-rules.xml
Hello Friends,
I am not able to run validation using validation.xml & validator-rules.xml.
Entire code in running prefectly but no error messages are prompted.
Following is my code:
File Name : struts-config.xml
<struts-config>
<!-- Form Beans Configuration -->
<form-beans>
<form-bean name="searchForm"
type="com.solversa.SearchForm"/>
</form-beans>
<!-- Global Forwards Configuration -->
<global-forwards>
<forward name="search" path="/search.jsp"/>
</global-forwards>
<!-- Action Mappings Configuration -->
<action-mappings>
<action path="/search"
type="com.solversa.SearchAction"
name="searchForm"
scope="request"
validate="true"
input="/search.jsp">
</action>
</action-mappings>
<!-- Message Resources Configuration -->
<message-resources
parameter="ApplicationResources"/>
<!-- Validator Configuration -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
<br> File Name : <b> validation.xml </b>
<form-validation>
<formset>
<form name="searchForm">
<field property="name" depends="minlength">
<arg key="label.search.name" position = "0"/>
<arg1 name="minlength" key="${var:minlength}" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="ssNum" depends="mask">
<arg0 key="label.search.ssNum"/>
<var>
<var-name>mask</var-name>
<var-value>^\d{3}-\d{2}-\d{4}$</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
<br> File Name : <b> SearchForm.java </b>
package com.jamesholmes.minihr;
import java.util.List;
import org.apache.struts.validator.ValidatorForm;
public class SearchForm extends ValidatorForm
private String name = null;
private String ssNum = null;
private List results = null;
public void setName(String name) {
this.name = name;
public String getName() {
return name;
public void setSsNum(String ssNum) {
this.ssNum = ssNum;
public String getSsNum() {
return ssNum;
public void setResults(List results) {
this.results = results;
public List getResults() {
return results;
<br> File Name : <b> SearchAction.java </b>
package com.jamesholmes.minihr;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public final class SearchAction extends Action
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
EmployeeSearchService service = new EmployeeSearchService();
ArrayList results;
SearchForm searchForm = (SearchForm) form;
// Perform employee search based on what criteria was entered.
String name = searchForm.getName();
if (name != null && name.trim().length() > 0) {
results = service.searchByName(name);
} else {
results = service.searchBySsNum(searchForm.getSsNum().trim());
// Place search results in SearchForm for access by JSP.
searchForm.setResults(results);
// Forward control to this Action's input page.
return mapping.getInputForward();
<br> File Name : <b> EmployeeSearchService.java </b>
package com.jamesholmes.minihr;
import java.util.ArrayList;
public class EmployeeSearchService
/* Hard-coded sample data. Normally this would come from a real data
source such as a database. */
private static Employee[] employees =
new Employee("Bob Davidson", "123-45-6789"),
new Employee("Mary Williams", "987-65-4321"),
new Employee("Jim Smith", "111-11-1111"),
new Employee("Beverly Harris", "222-22-2222"),
new Employee("Thomas Frank", "333-33-3333"),
new Employee("Jim Davidson", "444-44-4444")
// Search for employees by name.
public ArrayList searchByName(String name) {
ArrayList resultList = new ArrayList();
for (int i = 0; i < employees.length; i++) {
if (employees.getName().toUpperCase().indexOf(name.toUpperCase()) != -1) {
resultList.add(employees[i]);
return resultList;
// Search for employee by social security number.
public ArrayList searchBySsNum(String ssNum) {
ArrayList resultList = new ArrayList();
for (int i = 0; i < employees.length; i++) {
if (employees[i].getSsNum().equals(ssNum)) {
resultList.add(employees[i]);
return resultList;
<br> File Name : <b> Employee.java </b>
package com.solversa;
public class Employee
private String name;
private String ssNum;
public Employee(String name, String ssNum) {
this.name = name;
this.ssNum = ssNum;
public void setName(String name) {
this.name = name;
public String getName() {
return name;
public void setSsNum(String ssNum) {
this.ssNum = ssNum;
public String getSsNum() {
return ssNum;
Pls help me out.
Not able to prompt errors.Hello Friends,
I am not able to run validation using
validation.xml & validator-rules.xml.
Entire code in running prefectly but no error
messages are prompted.
Following is my code:
File Name : struts-config.xml
<struts-config>
<!-- Form Beans Configuration -->
<form-beans>
<form-bean name="searchForm"
type="com.solversa.SearchForm"/>
ans>
<!-- Global Forwards Configuration -->
<global-forwards>
<forward name="search" path="/search.jsp"/>
global-forwards>
<!-- Action Mappings Configuration -->
<action-mappings>
<action path="/search"
type="com.solversa.SearchAction"
name="searchForm"
scope="request"
validate="true"
input="/search.jsp">
tion>
</action-mappings>
<!-- Message Resources Configuration -->
<message-resources
parameter="ApplicationResources"/>
<!-- Validator Configuration -->
<plug-in
className="org.apache.struts.validator.ValidatorPlugI
">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
>
</struts-config>
<br> File Name : <b> validation.xml </b>
<form-validation>
<formset>
<form name="searchForm">
<field property="name" depends="minlength">
<arg key="label.search.name" position = "0"/>
<arg1 name="minlength" key="${var:minlength}"
resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
<field property="ssNum" depends="mask">
<arg0 key="label.search.ssNum"/>
<var>
<var-name>mask</var-name>
<var-value>^\d{3}-\d{2}-\d{4}$</var-value>
</var>
</field>
/form>
</formset>
form-validation>
<br> File Name : <b> SearchForm.java </b>
package com.jamesholmes.minihr;
import java.util.List;
import org.apache.struts.validator.ValidatorForm;
public class SearchForm extends ValidatorForm
private String name = null;
private String ssNum = null;
private List results = null;
public void setName(String name) {
this.name = name;
public String getName() {
return name;
public void setSsNum(String ssNum) {
this.ssNum = ssNum;
public String getSsNum() {
return ssNum;
public void setResults(List results) {
this.results = results;
public List getResults() {
return results;
<br> File Name : <b> SearchAction.java </b>
package com.jamesholmes.minihr;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public final class SearchAction extends Action
public ActionForward execute(ActionMapping
mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
EmployeeSearchService service = new
EmployeeSearchService();
ArrayList results;
SearchForm searchForm = (SearchForm) form;
// Perform employee search based on what criteria
was entered.
String name = searchForm.getName();
if (name != null && name.trim().length() > 0) {
results = service.searchByName(name);
else {
results =
service.searchBySsNum(searchForm.getSsNum().trim());
// Place search results in SearchForm for access
by JSP.
searchForm.setResults(results);
// Forward control to this Action's input page.
return mapping.getInputForward();
<br> File Name : <b> EmployeeSearchService.java </b>
package com.jamesholmes.minihr;
import java.util.ArrayList;
public class EmployeeSearchService
/* Hard-coded sample data. Normally this would come
from a real data
source such as a database. */
ivate static Employee[] employees =
new Employee("Bob Davidson", "123-45-6789"),
new Employee("Mary Williams", "987-65-4321"),
new Employee("Jim Smith", "111-11-1111"),
new Employee("Beverly Harris", "222-22-2222"),
new Employee("Thomas Frank", "333-33-3333"),
new Employee("Jim Davidson", "444-44-4444")
// Search for employees by name.
public ArrayList searchByName(String name) {
ArrayList resultList = new ArrayList();
for (int i = 0; i < employees.length; i++) {
if
(employees.getName().toUpperCase().indexOf(name.toU
pperCase()) != -1) {
resultList.add(employees[i]);
return resultList;
// Search for employee by social security number.
public ArrayList searchBySsNum(String ssNum) {
ArrayList resultList = new ArrayList();
for (int i = 0; i < employees.length; i++) {
if (employees[i].getSsNum().equals(ssNum)) {
resultList.add(employees[i]);
return resultList;
<br> File Name : <b> Employee.java </b>
package com.solversa;
public class Employee
private String name;
private String ssNum;
public Employee(String name, String ssNum) {
this.name = name;
this.ssNum = ssNum;
public void setName(String name) {
this.name = name;
public String getName() {
return name;
public void setSsNum(String ssNum) {
this.ssNum = ssNum;
public String getSsNum() {
return ssNum;
Pls help me out.
Not able to prompt errors.
Hi,
Your error message are not displaying because u does not made Message-Resoucrce property file (Resource Bundle) when you make it .
give it entry in
struts-config.xml
<message-resources parameter="ApplicationResources" />
and
define key and corresponding error message to key in this ApplicationResources i.e
#Error Resources
label.search.ssNum=Plz Enter correct ssNum -
How to change InputField background color using Java Code
Hi,
In my application use will enter some set of Cost Centers in a table and submits request.
In return i will get a list of invalid cost centers which i need to display in a table with input field
In that table all cost centers will displayed, but invalid cost centers should be highlighted or background color should some other color. like red or yellow.
Is it possible using java code to change a input field color.
Please help me.
ThanksHi,
declare a error message in message pool and declare a method say "checkCostCenters " and in this method, u can check whether it is a valid cost center .. if it is invalid cost center , then throw the erro message using the below code :
wdComponentAPI.getMessageManager().reportContextAttributeMessage(
inputfieldattibutePointer, IMessageProgramPlanComp.ur error message,
new Object[] );
for getting pointer and label use the below code:
IWDAttributePointer inputfieldPointer = URNODEELEMENTElement
.getAttributePointer(URNODEELEMENT.ATTRIBUTENAME);
String inputfieldLabel = wdContext.nodeURVALUENODE.getNodeInfo()
.getAttribute(URNODELEMENT.ATTRIBUTE).getSimpleType()
.getFieldLabel();
hope it helps..
Thanks and Regards -
Date and Time Input Validation
Anyone know a good way to validate date and time that a user is entering on the screen. Our users want to enter AM and PM time vs. Military time.
Also, since Input fields don't have an "onBlur" command, what are other companies using in java script.What type of DATE/TIME validation are you looking for?
If you want to validate the format you could simply set the type to date/time and enable the dovalidate attribute to "TRUE".
for getting onBlur, onChange, etc for your input field you can use bsp:findandreplace.
<%
tmp_string =`<input onBlur="javascript:yourjsfunction();"`.
%>
<bsp:findAndReplace find = "<input"
replace = "<%= tmp_string %>" >
<htmlb:inputField id = "myInputField2"
value = "12345"
alignment = "left" />
</bsp:findAndReplace>
(courtesy Ulli Hoffmann)
Hope this helps.
Regards
Raja -
Picture uopload in the solution manager using BSP
Hi Everybody I am trying to upload a employee pictures for the each user in the Solution manager using BSP. I have got some coding form the help but its not working. Kindly direct me the way I can go for the upload.
Please help me out.
With best regards,
SuneethaHi Thank you very much for your answer.
I am using for the file upload code is
<%@page language="abap"%>
<%@extension name="htmlb" prefix="htmlb"%>
<htmlb:content design="design2003">
<htmlb:page title = " ">
<htmlb:form>
<html>
<body>
<h2> Form with File Upload and Download </h2>
Choose a file for upload. The file will be echoed to your browser if you
select the checkbox below.
<form method="POST" enctype="multipart/form-data">
<table border=1 width="100%">
<tr>
<td> <input type=checkbox name="doEcho"> </td>
<td> <input type=checkbox name="doEcho" value="X"> (select for echo)
</tr>
<tr>
<td> <input type=file name="echoFile"> </td>
</tr>
<tr>
height = "45".
width = "45".
<td> <input type=submit name="onInputProcessing(upload)" value="Submit"> </td>
</tr>
</table>
</form>
</body>
</html>
</htmlb:form>
</htmlb:page>
</htmlb:content>
Can I use this along with oninput processing that u have given.
With Best regards,
Suneetha -
[solved][C] input validation with strtod()
I'm using strtod() in an RPN implementation, and I'm working on input validation. As per strtod(3), I've written the following conditional to catch input overflow.
errno = 0;
op1 = strtod(token, &endPtr);
if ((errno == ERANGE && (op1 == HUGE_VALF || op1 == HUGE_VALL)) || (errno != 0 && op1 == 0)) {
printf("Error: Input overflow.\n");
clearstack();
return 1;
Except that when I enter something that would definitely overflow, this conditional is never entered. Furthermore, errno is never set. What am I missing?
A link to the full code can be found here
Last edited by falconindy (2010-04-13 17:49:15)tavianator wrote:
Well the first wrong thing I see is that you should really test if fabs(op1) is HUGE_VAL{F,L}.
The second thing is, why so complicated a test? errno != 0 should be all you need.
Fair enough. This is the first time I'm really dealing with floating point ops in C.
tavianator wrote:The third thing is, if errno is really not being set, are you sure you're really overflowing? doubles go up to about
1.8e308 on most arches.
Huh... wouldn't an unsigned double be, at most, 2^128 - 1 and more likely 2^64 - 1? I'm dealing with signed, so its then half that. Sure enough, sizeof(double) returns 8.
Also, this is what made me think I'm hitting overflow.
> 111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1 *
= 111111111111111105547424803279259724863245197668615715838829352563602489955831513088.000
>
Hmm. If I go even further, I eventually do hit an overflow error. However, that still leaves me a little baffled as to the results above. Is this a result of the decimal precision inherent in a double? -
Could not found any usage key in the work center WC001(Use T-CODE CR02)?
my question:
(1) I have created one Work Center WC001 and one Plant HJW1.
(2) I have created one Routing with T-CODE CA01.
(3) Then I use T-CODE CA02 to change this Routing.
(4) When I enter the Head details screen,I click the Operations button to enter the Operations Overview screen.
(5) In the Operations Overview screen list,I input the Work Center WC001 and the Plant HJW1 at the first line and press enter.Then the sap raise error message like below.
(6) The question was: I could not found any usage key in the work center WC001(Use T-CODE CR02)! Could any one tell me the answer or give me some advice to resolve the problem?Thank you so much.
error message:
Work center WC001 plant HJW1 does not exist for task list type N
Message no. CR084
Diagnosis
You want to allocate the work center WC001 to a task list of the type N . However this work center is not intended to be used in a task list of the type N.
Procedure
The usage of a work center in task lists is restricted via the usage key. You define this key in work center customizing and allocate to it those task list types in which a work center with this usage key can be used.
Proceed as follows:
Check the usage key for the work center WC001 in work center maintenance.
If necessary change the usage key in the work center or change the allocation of task list types to the usage key in customizing or
allocate to the task list a work center which is valid for use in a task list of the type N.Hi
1) Check what task list usage key you entered for the work center in the basic data . If it is 009 then the work center can be used in all task list type.
2) If you have defined and used any other usage key , ensure that for this key , the routing type N is allowed in OP45.
Regards,
Ramasamy -
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. -
Validations using OB28 is not working for GL posting using FB01
Hi Experts,
Validations using OB28 for posting using FB01 is not working.
My requirement is after entering a line items and click post validations should be triggerd.
i want to block a posting based on document type.
i have maintained as below..
Prerequisite.
( BKPF-TCODE = 'FB50' OR BKPF-TCODE = 'FB01' ) AND (
BKPF-BUKRS = '1000' OR BKPF-BUKRS = '0001' OR
BKPF-BUKRS = '0002' ) AND BKPF-BLART = 'XX'.
check.
Used userexit to check sy-ucomm = 'BU' (for posting).
entries are maintained in OB28 for relevant company codes.
it is working for FB50 but not FB01.
same thing i tried to maintain at header level as well as item level. but it is working only for FB50 but for FB01.
Please help me.
Regards.
Venu.Hi Venu,
Go to GGB0 and expand the navigation till you reach the validation name of line item level and choose menu item *Validation -> Simulate.
Here you can enter the inputs, those you are entering while doing FB01 and execute it.
Then in the results, you will have the log for each step of your total validation of line item level.
Check , whether your questioned STEP's pre requisite is met and check is not fullfilled.
Accordingly you can make the changes to the STEP.
This info may help you.
Regards,
Srinivas -
Hi,
I'm pretty new to Sharepoint and wanted to ask a question to see if it can actually do what we need it to do.
We would have a top Site within a collection and under this we would have 400 sites for different sections of the business (External) Lots of teams create documents for all these sites and use the Code of the site in each document so we know what business
site its going to. For example 67890_BusinessReportMay.docx We know this document should be heading to site 67890
We have lots of services sending data to these 400 business sites. If we were to do them manually it would take most of our time to go to each site and upload the documents, even if we could do all the sites documents in 1 multiple upload. We still have
to go to each site to do it
Is there an easy answer to this? At present I have folders to match each of the 400 Sharepoint Sites and I use an Integration Services package to move all the documents into these 400 Matching folders. I do this using the Code at the start of each file name.
If it doesn't have a code its put into an error folder and reported back on.
Then I want something to automatically go through each of these folders and load them into the Sharepoint Sites document libraries.
OR
Say you have 600 files all going to the 500 sites on Sharepoint in one folder. The File contains meta data regarding the Sites Code. Using this you can split the files and automatically pull them across to the Sharepoint Sites without having to go
into each Sharepoint Site?
I'm thinking that you cant do this and I'm hoping I'm wrong. Any help would be greatly appreciated.
DebbieHi Debbie,
According to your description, my understanding is that you want to move the documents to different sites based on the code in the name of the files.
I recommend to create workflow and set the workflow to start when an item is created to achieve this goal.
As there is no built-in action which can move the documents cross site, we need to use the custom activity 'Copy List Item Extended' which need to be downloaded from
http://spdactivities.codeplex.com/.
Please per the steps in the link below to deploy the custom activity to SharePoint:
http://social.technet.microsoft.com/Forums/en-US/82609160-152f-461a-9a19-0e996f5a309b/sharepoint-2010-archiving-the-files-from-one-document-library-to-another-document-library-in
After that, we can create a workflow to meet the need.
Here is the detailed steps to create the workflow:
Create a column in single line of text type(called NO for example) in the library where the documents are uploaded, and input value manually in the column to store the code when uploading the documents. (We can also use workflow to extract the code from
the name of the documents if the codes are always 5 numbers.)
Create a workflow associated with the library and set the workflow to start when an item is created.
Select If current item field equals value, change the settings to be If Current Item: NO equals 67890.
Select Copy List Item Extended, change the settings to be Copy item in Current Item to list at site 67890 URL.
Select Delete Item, change the settings to be Delete Item in Current Item.
Create other conditions from step 3 to step 5 to copy the documents to different sites and delete current documents.
Best regards.
Thanks
Victoria Xia
TechNet Community Support -
How do I do validation using SDK.
How do I do validation using SDK.
We have created different warehouses for the client business operations.
For eg:
1. Inspection Stores
2. Rejection Stores
3. Main Stores
In Goods Return & A/P Credit Memo, other than RejectionStores is
selected, we want to generate a warning message.
How do I do this through SDK.
I need the code sample for the following activity:
1. Reading the data available at each row of the current form (Goods
Return/ A/P Credit memo)
2. Validate the data with a paricular warehouse
3. Generate warning message.
I could not find any samples related to this.There is a method called MessageBox for the Application object. Have a look at
the documentation, everything is there.
Maybe you are looking for
-
Is there a way to programmatically assign the "Submitted By" id number to a WebApp Item?
I have two web apps that I want to link to one another. Can I programmatically assign the submitted_by value to it. Is this possible?
-
Where is the dads.conf for Apex
I have installed 11.0.2 on windows 32bit. I have installed the APEX software. I can get to the instace admin pages using the URL http://localhost:8080/apex But I cannot find the dads.conf on my c drive .. I did a search on the whole drive. From what
-
Delivery Date for PR in Sales Order
Dear All, We have a case where Sales order will trigger a Purchase requisition when the Material is non-stock. But when looking at the Delivery date for the Purchase Requisition in the Sales order, the delivery date is always the creation date, which
-
High Quality Wide Screen for YouTube - PLEASE HELP!
I am using a Panasonic PV-GS400 camera in wide-screen mode (this is another topic, but the camera still outputs 720 x 480 video, my understanding is that it is called "anamorphic wide screen"). I had figured out some settings to get my videos to appe
-
I am getting this error while testing the proxy service with oracle/wss_username_token_service_policy [OSB Security - OWSM:387256]Invalid CSF Key 'newuser' set for override 'csf-key'. This CSF Key does not exist in the Credential Store. Can anyone he