Existence of a string1 inside a string2
i have a string called abc inside a string say helloabchello
I want to extract the string abc if the string exists in the given string
Hi try with this one.
create or replace function string_ext (
string1 varchar2,
search varchar2
return varchar2
as
x number;
result varchar2(50);
begin
select length(search) into x from dual;
select substr(string1,instr(string1,search),x) into result from dual;
return result;
end;
Similar Messages
-
Shift string1 by 3 places right.
code ->
data: string1(10) type c value 'abcdefghij',
string2 like string1.
write: / 'Before Manipulations : ',
/ 'string1 = ',string1,
/ 'string2 = ',string2.
string2 = string1.
shift string1.
write : / 'after one shift first letter is gone :-) (leftShift)',
' ', string1.
write : / 'after the shift operation there is a permanent change in',
'the field value of string1'.
shift string1 by 3 places right.
write : / 'after shifting 3 places on the right-', string1,
/ 'DOUBT - only ij has gone, but hij should have gone right ?'.
write : / 'string2 also has same as string1 had initially-', string2.
shift string2 by 3 places right.
write : / 'after shifting 3 places on the right-', string2.
Doubt has been marked in the code itself. This is my first post. Please do explain me concept , in the above code,if i am wrong.It works in STRING2 because you never did an initial shift to the left.
If you did want this to work in the string... you would have to find out the length of the string and then shift on that offset.
data: stlen type i.
shift string2.
stlen = strlen( string2 ).
shift string2+0(stlen) by 3 places right.
Regards,
Rich Heilman -
Execution time calculation issue
Hi,
I have a proceudre which update the tables data and it will capture the execution time for each and every table.
For that i am using below procedure and its giving incorrect values. i.e., its giving end_time<start_time
PFB code(Line nos 25,26,33,73,7679,80 code for exeution time calculation) and output.
1 CREATE OR REPLACE PROCEDURE my_proc
2 IS
3 CURSOR c
4 IS
5 SELECT tablename, TYPE
6 FROM table_list;
7
8 TYPE emp_record IS RECORD (
9 empkey tab1.pkey%TYPE,
10 rid ROWID,
11 ID tab_join.ID%TYPE,
12 dt tab_join.dt%TYPE
13 );
14
15 TYPE emp_type IS TABLE OF emp_record
16 INDEX BY BINARY_INTEGER;
17
18 v_emp emp_type;
19
20 TYPE emp_type_rowid IS TABLE OF ROWID
21 INDEX BY BINARY_INTEGER;
22 tab_no Number:=0;
23 emp_rowid emp_type_rowid;
24 r_cur sys_refcursor;
25 v_start_time TIMESTAMP; /** Added for time calculation*/
26 v_end_time TIMESTAMP; /** Added for time calculation*/
27 string1 VARCHAR2 (1000) := 'SELECT b.empkey, b.ROWID rid, a.id id, a.dt dt FROM emp_base a,';
28 string2 VARCHAR2 (1000) := ' b WHERE a.empkey = b.empkey';
29 rowcnt Number;
30BEGIN
31 FOR c1 IN c
32 LOOP
33 tab_no:=tab_no+1;
34 v_start_time := SYSTIMESTAMP; /** Added for time calculation*/
35 BEGIN
36 string_d := string1 || c1.tablename || string2;
37
38 OPEN r_cur FOR string_d;
39
40 LOOP
41 FETCH r_cur
42 BULK COLLECT INTO v_emp LIMIT 50000;
43
44 IF v_emp.COUNT > 0
45 THEN
46 FOR j IN v_emp.FIRST .. v_emp.LAST
47 LOOP
48 emp_rowid (j) := v_emp (j).rid;
49 END LOOP;
50
51 upd_string := ' UPDATE ' || c1.tablename || ' SET id = ' || v_emp (1).ID || 'WHERE ROWID = :emp_rowid';
52 FORALL i IN emp_rowid.FIRST .. emp_rowid.LAST
53 EXECUTE IMMEDIATE upd_string
54 USING emp_rowid (i);
55 rowcnt := rowcnt + emp_rowid.COUNT;
56 END IF;
57
58 EXIT WHEN v_emp.COUNT < 50000;
59 v_emp.DELETE;
60 emp_rowid.DELETE;
61 END LOOP;
62
63 v_emp.DELETE;
64 emp_rowid.DELETE;
65
66 CLOSE r_cur;
67 EXCEPTION
68 WHEN OTHERS
69 THEN
70 DBMS_OUTPUT.put_line (SQLERRM);
71 END;
72
73 v_end_time := SYSTIMESTAMP; /** Added for time calculation*/
74
75 INSERT INTO exec_time
76 VALUES (tab_no||' '||c1.tablename, v_start_time, v_end_time, v_end_time - v_start_time, rowcnt); /** Added for time calculation*/
77
78 COMMIT;
79 v_start_time := NULL; /** Added for time calculation*/
80 v_end_time := NULL; /** Added for time calculation*/
81 rowcnt := 0;
82 END LOOP;
83END;
Output :
TableName: exec_time
"TABLE_NAME" "START_TIME" "END_TIME" "EXCUTION_TIME" "NO_OF_RECORDS_PROCESSED"
TAB7 5/29/2013 10:52:23.000000 AM 5/29/2013 10:52:24.000000 AM +00 00:00:00.521707 773
TAB5 5/29/2013 10:52:18.000000 AM 5/29/2013 10:52:15.000000 AM -00 00:00:03.381468 56525
TAB6 5/29/2013 10:52:15.000000 AM 5/29/2013 10:52:23.000000 AM +00 00:00:08.624420 49078
TAB2 5/29/2013 10:51:54.000000 AM 5/29/2013 10:51:42.000000 AM -00 00:00:11.932558 529
TAB4 5/29/2013 10:51:47.000000 AM 5/29/2013 10:52:18.000000 AM +00 00:00:31.208966 308670
TAB1 5/29/2013 10:51:45.000000 AM 5/29/2013 10:51:54.000000 AM +00 00:00:09.124238 65921
TAB3 5/29/2013 10:51:42.000000 AM 5/29/2013 10:51:47.000000 AM +00 00:00:04.502432 12118
Issue: I am getting execution time in negitive values because end_time<start_time coming.
Please suggest me how to resolve this.
Thanks.Welcome to the forum!!
Please read {message:id=9360002} from the FAQ to know the list of details (WHAT and HOW) you need to specify when asking a question.
I primarily hate 3 things in your code
1. The way you have used BULK update which is totally unnecessary
2. COMMIT inside LOOP
3. The use of WHEN OTHERS exception.
Your code can be simplified like this
create or replace procedure my_proc
is
v_start_time timestamp;
v_end_time timestamp;
v_rowcnt integer;
begin
for c1 in (
select rownum tab_no
, tablename
, type
from table_list
loop
sql_string := q'[
merge into #tablename# a
using (
select id, dt
from emp_base
) b
on (
a.empkey = b.empkey
when matched then
update set a.id = b.id;
sql_string := replace(sql_string, '#tablename#', c1.tablename);
v_start_time := systimestamp;
execute immediate sql_string;
v_end_time := systimestamp;
v_rowcnt := sql%rowcount;
insert into exec_time
values
c1.tab_no || ' ' || c1.tablename
, v_start_time
, v_end_time
, v_end_time - v_start_time
, v_rowcnt
end loop;
commit;
end; In the INSERT statement on the table EXEC_TIME try to include the column list.
NOTE: The above code is untested. -
Singleton Object With Anonymouse Methods
I'm trying to create a singleton object using a GUI interface. The problem which I'm getting is that I can't find a way to create the object inside an .addActionListener() method while storing it for other .addActionListener() methods.
CreditCard.java
public class CreditCard {
private static CreditCard uniqueInstance = null;
final String creditCardNumber;
String name;
float creditLimit;
float creditBalance;
private CreditCard(String creditCardNumber,String name,float creditLimit) {
this.creditCardNumber = creditCardNumber;
this.name = name;
this.creditLimit = creditLimit;
public static CreditCard getInstance(String creditCardNumber,String name,float creditLimit)
if (uniqueInstance == null)
uniqueInstance = new CreditCard (creditCardNumber, name, creditLimit);
return uniqueInstance;
Here's some code
main class call
CreditCard Student;
JButton enterCardButton = new JButton("Edit Card");
enterCardButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String cCNumber = creditCardNumberField.getText();
String cName = nameField.getText();
String cStringLimit = creditLimitField.getText();
float cLimit = Float.parseFloat(cStringLimit);
Student = CreditCard.getInstance(cCNumber, cName, cLimit);
buttonPanel.add(enterCardButton);Of course the compiler error I get is that you must declare the CreditCard Student to be final. But if i make it final, I cannot create it in the method! I'm stuck :/You do need to call getInstance on a
singleton. The compiler doesn't treat them specially.
So, outside of the singleton itself you need
something like
String ccNumber =
CreditCard.getInstance().getCreditCardNumber();(and it's probably best to define accessor methods
for singleton fields).I actually do this for my other methods, thank you malcolmmc :). But the problem right now is the inablity to create the class using the ActionListener. I'm goign to Paste my whole code segment this time to try to provide a better picture.
* MAIN CLASS
package Project2;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.io.*;
import java.lang.*;
import java.util.*;
public class Project2TestFrame {
// public enum transactionType { LIMIT_CHANGE, CHARGE, PAYMENT}
public static JFrame getTestFrame() {
JFrame testFrame = new JFrame("Project 2 Tester");
// Build the data portion of the frame
final JTextField creditCardNumberField = new JTextField(15);
final JTextField nameField = new JTextField(15);
final JTextField creditLimitField = new JTextField(15);
final JTextField chargeAmountField = new JTextField(15);
JPanel dataPanel = new JPanel();
dataPanel.setLayout(new GridLayout(4,2));
dataPanel.add(new JLabel("Credit Card Number"));
dataPanel.add(creditCardNumberField);
dataPanel.add(new JLabel("Name"));
dataPanel.add(nameField);
dataPanel.add(new JLabel("Credit Limit"));
dataPanel.add(creditLimitField);
dataPanel.add(new JLabel("Charge Amount"));
dataPanel.add(chargeAmountField);
testFrame.add(dataPanel, BorderLayout.CENTER);
// Add the buttons to the frame. Note only the Exit button is
// given here. You should add other buttons.
JPanel southPanel = new JPanel();
southPanel.setLayout(new GridLayout(2,1));
JPanel buttonPanel = new JPanel();
southPanel.add(buttonPanel);
// Add the messageField and
String[] sarray = {"", "", "", "", ""};
DefaultListModel dlm = new DefaultListModel();
dlm.copyInto(sarray);
final JList messageList = new JList(dlm);
final JScrollPane jsp = new JScrollPane(messageList);
southPanel.add(jsp);
testFrame.add(southPanel, BorderLayout.SOUTH);
// Add your buttons here.
//Main Class Instance of CreditCard class.
CreditCard Student;
JButton enterCardButton = new JButton("Edit Card");
enterCardButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String cCNumber = creditCardNumberField.getText();
String cName = nameField.getText();
String cStringLimit = creditLimitField.getText();
float cLimit = Float.parseFloat(cStringLimit);
//***Compile Error** Needs to be final, but if final still complains
Student = CreditCard.getInstance(cCNumber, cName, cLimit);
buttonPanel.add(enterCardButton);
JButton chargeButton = new JButton("Charge Credit Card");
chargeButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
String cStringCharge = chargeAmountField.getText();
float cAmount = Float.parseFloat(cStringCharge);
buttonPanel.add(chargeButton);
JButton paymentButton = new JButton("Payment");
paymentButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
buttonPanel.add(paymentButton);
JButton dummyButton = new JButton("Transactions");
buttonPanel.add(dummyButton);
dummyButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
DefaultListModel messageData = (DefaultListModel)messageList.getModel();
messageData.clear();
messageData.addElement("String1");
messageData.addElement("String2");
messageData.addElement("String3");
JButton exitButton = new JButton("Exit");
buttonPanel.add(exitButton);
exitButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
// Finish and return data.
return testFrame;
* @param args
public static void main(String[] args) {
JFrame p2tf = getTestFrame();
p2tf.pack();
p2tf.setVisible(true);
class Transaction {
public enum transactionType { LIMIT_CHANGE, CHARGE, PAYMENT}
//enum transactionType;
int date;
int amount;
public Transaction(int date, int amount)
//this.transactionType = transactionType;
this.date = date;
this.amount = amount;
* CreditCard.java
* Created on June 21, 2006, 9:27 AM
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
package Project2;
import java.io.*;
import java.lang.*;
import java.util.*;
public class CreditCard {
private static CreditCard uniqueInstance = null;
final String creditCardNumber;
String name;
float creditLimit;
float creditBalance;
ArrayList<String> transactionHistory;
private CreditCard(String creditCardNumber,String name,float creditLimit) {
this.creditCardNumber = creditCardNumber;
this.name = name;
this.creditLimit = creditLimit;
public static CreditCard getInstance(String creditCardNumber,String name,float creditLimit)
if (uniqueInstance == null)
uniqueInstance = new CreditCard (creditCardNumber, name, creditLimit);
return uniqueInstance;
public void setName(String name)
this.name = name;
public String getName()
return this.name;
public String getCreditCardNumber()
return this.creditCardNumber;
public float getCreditLimit()
return this.creditLimit;
public void setCreditLimit(float creditLimit)
this.creditLimit = creditLimit;
public float getAvailableCredit()
return this.creditBalance;
public void addCharge(float chargeAmount)
this.creditBalance -= chargeAmount;
public void paymentReceived(float paymentAmount)
this.creditBalance += paymentAmount;
//public String[] getTransactions()
// return this.transactionHistory.toArray();
class NumberOutOfBoundsException extends Exception {
private int number;
public NumberOutOfBoundsException() {
number = 0;
public NumberOutOfBoundsException(String Message) {
super(Message);
public NumberOutOfBoundsException(int number) {
this.number = number;
public NumberOutOfBoundsException(String Message, int number) {
super(Message);
this.number = number;
public int getNumber() {
return number;
} -
I'm curious about this code... it was asked during an interview by a friend.
String a = "String1";
String b = "String2";
a = a+b;
How many objects are created?
One would want to say 3, but I read in the String docs that concatenation is done using StringBuffer. Then, maybe we can assume that a StringBuffer object (3) is created to perform the concatenation, then StringBuffer.toString() is called (4) to provide var 'a' its concatenated value. So with that the answer would be 4?
What do you think?
ThanksFor this specific problem the following will happen:
a and b are Strings refering to fixed constants.
So what you will get there are two constants objects refering to somewhere fixe din memory.
String objects are immutable - means they cannot be changed.
The line a=a+b is depending where the whole piece of code is executed in I would say - means can the compiler evaluate the whole stuff at compile time or does it have to do it at runtime?
If everything happens inside the same method, then the whoel code should create only two objects refering to static char[]. I.e valid for following code:
public class X {
public String doIt() {
String a = "String1";
String b = "String2";
a = a+b;
return a;
In the example above, only one object is created, refering to "String1String2", because the compiler can eliminate everythign at compile time, no other dependencies are there.
No StringBuffer concat is involved here.
if you place them like that:
public class X {
static String a;
static String b;
static {
a = "String1";
b = "String2";
a = a+b;
Then the compiler will create two objects, one for a="String1String2" and the second for b="String2", no StringBuffer usage is involved.
But if you do the following:
public class X {
String a = "String1";
String b = "String2";
public void doIt() {
a = a+b;
Then inside a you will use one Stringbuffer to concat the two Strings a and b and then you will create out of the Stringbuffer a new String object and assign it to a
The main reason here is that this cannot be evaluated directly by the Compiler anymore, you could call doIt() many times....
If you call the doit function one time then there are the following number of objects are created:
a="String1"
b="String2"
created by the constructor
calling doit():
one StringBuffer object to concat
one String that is assign to a="String1String2"
(Well for JDK 1.1 it is even worser, it will create even more objects, but I guess we are talking baout jdk 1.2 or higher)
If the concat of the strings can be done at compile time, then it will be statically evaluated and assigned, so a new constant object is created inside the pool of constants and then assigned to the String.
This is very efficient and one of the reasons why you should never write code like:
String a = new String("String1");
This will create a constant object inside the constant pool, refering to "String1" then it will create a new String object as 'copy' of this object and assign it to a - so there is one object too much. If you do such things many times, your program will run slower than it could be!
Well hope this makes it a bit more clear?! -
Error: dynamic SELECT command in abap Opensql
Hi!
When I try to run this program, the session terminates, the work process restarts:
DATA:
string1 TYPE STRING,
string2 TYPE STRING,
string3 TYPE STRING,
lt_trkorr TYPE TABLE OF E070-TRKORR.
string1 = 'TRKORR'.
string2 = 'E070'.
string3 = 'TRKORR IN ( SELECT TRKORR FROM e071 )'.
SELECT (string1)
INTO TABLE lt_trkorr
FROM (string2)
WHERE (string3).
However, if I use the static command, it runs fine:
select trkorr
from e070
into table lt_trkorr
where TRKORR IN ( SELECT TRKORR FROM e071 ).
I'm using WAS 6.10.
Thanks and Best Regards,
TamasHi, I'm having the same problem with a dynamic subquery. My query is this:
select PEBELN PEBELP into table i_resultado
from EKPO as P
where (v_wher).
v_wher has the value: EXISTS ( SELECT * FROM EKPO AS P2 WHERE PEBELN = P2EBELN AND P2~EBELP = 30 )
The same query works fine if it is static.
The dump I receive says the following:
"An exception occurred. This exception will be dealt with in more detail
below. The exception, assigned to the class 'CX_SY_DYNAMIC_OSQL_SEMANTICS', was
not caught, which
led to a runtime error. The reason for this exception is:
<b>The SELECT clause was specified in an internal table at runtime.
It contains the field name "EXISTS", but this does not occur in any of
the database tables listed in the FROM clause</b>."
It seems not to recognize the subquery.
Any idea? -
Hello Friends,
I am using ALV Tree to display a report.
In this report for a particular input.2 nodes are cerated.
On clicking on the 2nd node the details for the same are shown .
However on clicking the 1st node , the system automatically logs off closing all the SAP sessions and even the SAP Logon pad.
Suppose i am on executing the program on development server,even the sessions of test server are closed.
Can anyone please help me in this.....
its a bit urgent.
i am attaching my code for reference.
REPORT ZPRPROUTOPERATIONS1 .
tables : mapl,t001w,zroutpromast.
TYPE-POOLS: slis,kkblo.
include <icon>.
data : it_zrouteledtl like zrouteledtl occurs 0 with header line.
data : it_zeledtl type zeledtl occurs 0 with header line.
data : conv_sec(5) type c value '0.036'.
types : begin of it_output2,
Srno like zrouteledtl-srno,
srno1 type p decimals 8,
subgid like zrouteledtl-subgid,
subopn like zrouteledtl-subopn,
movetype type zeledtl-movetype,
DESC type zeledtl-description,
Add_desc like zrouteledtl-DESCRIPTION,
Freq type p decimals 2,
div_freq type p decimals 2,
men type p decimals 2,
offline(3),
CT type p decimals 2,
CW type p decimals 2,
Ideal_ct type p decimals 2,
ideal_cw type p decimals 2,
A_trg type p decimals 2,
b_Trg type p decimals 2,
g_Trg type p decimals 2,
p_Trg type p decimals 2,
m_Trg type p decimals 2,
t_Trg type p decimals 2,
i_Trg type p decimals 2,
Autocycle type p decimals 2,
online_time type p decimals 2,
offline_time type p decimals 2,
online_p_time type p decimals 2,
offline_p_time type p decimals 2,
end of it_output2.
*types : begin of it_output3,
Srno like zrouteledtl-srno,
mop_gid like zroutdetails-MOP_GID,
MOp_opn like zroutdetails-MOP_OPN,
sub_gid like zpromast-subgid,
subopn like zpromast-subopn,
DESC like zpromast-description,
Add_desc like zroutdetails-ADD_INFO,
Freq type p decimals 2,
batch type p decimals 2,
mix type p decimals 2,
offline(3),
CT type p decimals 2,
CW type p decimals 2,
Ideal_ct type p decimals 2,
ideal_cw type p decimals 2,
A_trg type p decimals 2,
b_Trg type p decimals 2,
g_Trg type p decimals 2,
p_Trg type p decimals 2,
m_Trg type p decimals 2,
t_Trg type p decimals 2,
i_Trg type p decimals 2,
Autocycle type p decimals 2,
online_time type p decimals 2,
offline_time type p decimals 2,
online_p_time type p decimals 2,
offline_p_time type p decimals 2,
end of it_output3.
data : it_output type it_output2 occurs 0 with header line,
it_output1 type it_output2 occurs 0 with header line,
it_emptytab type standard table of it_output2 INITIAL SIZE 0.
data : a_trg type f,b_trg type f,g_trg type f,p_trg type f,m_trg type f,t_trg type f,i_trg type f,
autocycle type f,online_p_time type f,offline_p_time type f.
data : ch1 type c,ch2.
DATA: ok_code like sy-ucomm, "OK-Code
save_ok like sy-ucomm.
data : ct_fieldcat type KKBLO_T_FIELDCAT.
*ALV data declarations
DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.
DATA: gd_fieldcat TYPE lvc_t_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv.
*ALVtree data declarations
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA: gd_tree TYPE REF TO cl_gui_alv_tree,
gd_hierarchy_header TYPE treev_hhdr,
gd_report_title TYPE slis_t_listheader,
gd_logo TYPE sdydo_value,
gd_variant TYPE disvariant.
*Create container for alv-tree
DATA: gd_tree_container_name(30) TYPE c,
gd_custom_container TYPE REF TO cl_gui_custom_container.
*data mr_toolbar type ref to cl_gui_toolbar. "Add to top include
selection-screen begin of block start with frame title text-001.
select-options: p_gid for zroutpromast-mop_gid obligatory no-extension no intervals,
p_opn for zroutpromast-mop_opn obligatory no-extension no intervals,
p_werks for t001w-werks obligatory no-extension no intervals.
selection-screen end of block start.
*selection-screen begin of block detail with frame title text-002.
*parameter : radio1 radiobutton group dept default 'X',
radio2 radiobutton group dept.
*selection-screen end of block detail.
include ZTEST_TOOLBAR_EVENT_RECEIVER.
start-of-selection.
ALVtree setup data
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
PERFORM build_report_title USING gd_report_title gd_logo.
PERFORM build_variant.
Display ALVtree report
call screen 100.
*& Form data_retrieval
text
--> p1 text
<-- p2 text
FORM data_retrieval .
select * from zrouteledtl into table it_zrouteledtl where mop_gid in p_gid and
mop_opn in p_opn
and werks in p_werks.
if sy-subrc ne 0.
message i001(0) with 'No Records Found'.
leave program.
endif.
select * from zeledtl into table it_zeledtl for all entries in it_zrouteledtl
where subgid = it_zrouteledtl-subgid
and subopn = it_zrouteledtl-subopn
and werks = it_zrouteledtl-werks.
loop at it_zeledtl.
it_output1-srno = it_zeledtl-srno.
it_output1-srno1 = it_zeledtl-srno.
it_output1-subgid = it_zeledtl-subgid.
it_output1-subopn = it_zeledtl-subopn.
it_output1-movetype = it_zeledtl-movetype.
it_output1-desc = it_zeledtl-DESCRIPTION.
it_output1-freq = it_zeledtl-frequency.
it_output1-div_freq = it_zeledtl-div_freq.
it_output1-men = it_zeledtl-men.
it_output1-offline = it_zeledtl-offline1.
it_output1-ct = it_zeledtl-cy_time * conv_sec.
it_output1-cw = it_zeledtl-wc_time * conv_sec.
it_output1-ideal_ct = it_zeledtl-cy_trg_time * conv_sec.
it_output1-ideal_cw = it_zeledtl-wc_trg_time * conv_sec.
if it_zeledtl-men = 0.
it_output-autocycle = it_zeledtl-cy_time * conv_sec.
endif.
if it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'NO'
and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
case it_zeledtl-movetype.
when 'A'.
if it_zeledtl-SIM_AUTO = 'TRUE'.
ch2 = 0.
else.
ch2 = 1.
endif.
it_output-online_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
when 'C'.
if it_zeledtl-sim5 = 'TRUE'.
ch1 = 0.
else.
ch1 = 1.
endif.
it_output-online_p_time = ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq .
endcase.
elseif it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'YES'
and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
case it_zeledtl-movetype.
when 'A'.
if it_zeledtl-SIM_AUTO = 'TRUE'.
ch2 = 0.
else.
ch2 = 1.
endif.
it_output1-offline_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
when 'C'.
if it_zeledtl-sim5 = 'TRUE'.
ch1 = 0.
else.
ch1 = 1.
endif.
it_output-offline_p_time = ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq .
endcase.
endif.
it_output1-a_trg = it_zeledtl-TARGET_A * conv_sec.
it_output1-b_trg = it_zeledtl-target_B * conv_sec.
it_output1-g_trg = it_zeledtl-TARGET_G * conv_sec.
it_output1-p_trg = it_zeledtl-TARGET_P * conv_sec.
it_output1-M_trg = it_zeledtl-TARGET_M * conv_sec.
it_output1-t_trg = it_zeledtl-TARGET_T * conv_sec.
it_output1-i_trg = it_zeledtl-TARGET_I * conv_sec.
append it_output1.
endloop.
sort it_output1 ascending by subgid subopn srno1.
clear ch1.
loop at it_zrouteledtl.
move-corresponding it_zrouteledtl to it_output.
select single description from zpromast into it_output-desc
where subgid = it_zrouteledtl-subgid and
subopn = it_zrouteledtl-subopn and
werks in p_werks.
it_output-add_desc = it_zrouteledtl-description.
it_output-freq = it_zrouteledtl-frequency.
it_output-div_freq = it_zrouteledtl-div_freq.
it_output-men = it_zrouteledtl-men.
it_output-ct = it_zrouteledtl-cy_time * conv_sec.
it_output-cw = it_zrouteledtl-wc_time * conv_sec.
it_output-ideal_ct = it_zrouteledtl-cy_trg_time * conv_sec.
it_output-ideal_cw = it_zrouteledtl-wc_trg_time * conv_sec.
if it_zrouteledtl-offline1 = '1'.
it_output-offline = 'No'.
else.
it_output-offline = 'Yes'.
endif.
append it_output.
endloop.
loop at it_output.
if it_output-offline = 'Yes'.
ch1 = 0.
else.
ch1 = 1.
endif.
loop at it_output1 where subgid = it_output-subgid and
subopn = it_output-subopn.
a_trg = A_trg + it_output1-A_trg.
b_Trg = b_Trg + it_output1-b_Trg.
g_Trg = g_Trg + it_output1-g_Trg.
p_Trg = p_Trg + it_output1-p_Trg.
m_Trg = m_Trg + it_output1-m_Trg.
t_Trg = t_Trg + it_output1-t_Trg.
i_Trg = i_Trg + it_output1-i_Trg.
autocycle = autocycle + it_output1-Autocycle.
online_p_time = online_p_time + it_output1-online_p_time.
offline_p_time = offline_p_time + it_output1-offline_p_time.
endloop.
it_output-autocycle = ( autocycle * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-a_trg = ( a_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-b_trg = ( b_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-g_trg = ( g_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-p_trg = ( p_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-m_trg = ( m_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-t_trg = ( t_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-i_trg = ( i_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-online_time = ( it_output-ct - it_output-autocycle ) * ch1.
it_output-offline_time = ( it_output-ct - it_output-cw ) + it_output-autocycle.
it_output-online_p_time = ( online_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-offline_p_time = ( offline_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
clear : a_trg,b_trg,g_trg,p_trg,m_trg,t_trg,i_trg,online_p_time,offline_p_time,ch1,ch2,it_zeledtl,
autocycle,online_p_time,offline_p_time,zroutpromast.
modify it_output.
endloop.
ENDFORM. " data_retrieval
*& Form build_fieldcatalog
text
--> p1 text
<-- p2 text
FORM build_fieldcatalog .
Please not there are a number of differences between the structure of
ALVtree fieldcatalogs and ALVgrid fieldcatalogs.
For example the field seltext_m is replace by scrtext_m in ALVtree.
DATA: COL_POS TYPE I VALUE 0.
fieldcatalog-fieldname = 'SRNO'.
fieldcatalog-SCRTEXT_L = 'Sr No.'.
fieldcatalog-SCRTEXT_m = 'Sr No.'.
fieldcatalog-SCRTEXT_s = 'Sr No.'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'SUBGID'. "Field name in itab
fieldcatalog-SCRTEXT_L = 'Sub Opn GID'. "Column text
fieldcatalog-SCRTEXT_m = 'Sub Opn GID'. "Column text
fieldcatalog-SCRTEXT_s = 'Sub Opn GID'. "Column text
fieldcatalog-col_pos = COL_POS. "Column position
fieldcatalog-outputlen = 15. "Column width
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
fieldcatalog-do_sum = 'X'. "Sum Column?
fieldcatalog-no_zero = 'X'. "Don't display if zero
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'SUBOPN'.
fieldcatalog-SCRTEXT_L = 'Sub Opn'.
fieldcatalog-SCRTEXT_m = 'Sub Opn'.
fieldcatalog-SCRTEXT_s = 'Sub Opn'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'MOVETYPE'.
fieldcatalog-SCRTEXT_L = 'Movetype'.
fieldcatalog-SCRTEXT_m = 'Movetype'.
fieldcatalog-SCRTEXT_s = 'Movetype'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'DESC'.
fieldcatalog-SCRTEXT_L = 'Description'.
fieldcatalog-SCRTEXT_m = 'Description'.
fieldcatalog-SCRTEXT_s = 'Description'.
fieldcatalog-outputlen = 600.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ADD_DESC'.
fieldcatalog-SCRTEXT_L = 'Add. Description'.
fieldcatalog-SCRTEXT_m = 'Add. Description'.
fieldcatalog-SCRTEXT_s = 'Add. Description'.
fieldcatalog-outputlen = 100.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'FREQ'.
fieldcatalog-SCRTEXT_L = 'Frequency'.
fieldcatalog-SCRTEXT_m = 'Frequency'.
fieldcatalog-SCRTEXT_s = 'Frequency'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'DIV_FREQ'.
fieldcatalog-SCRTEXT_L = 'Div Freq'.
fieldcatalog-SCRTEXT_m = 'Div Freq'.
fieldcatalog-SCRTEXT_s = 'Div Freq'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'MEN'.
fieldcatalog-SCRTEXT_L = 'Men'.
fieldcatalog-SCRTEXT_m = 'Men'.
fieldcatalog-SCRTEXT_s = 'Men'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'BATCH'.
fieldcatalog-SCRTEXT_L = 'Batch/Div Freq'.
fieldcatalog-SCRTEXT_m = 'Batch/Div Freq'.
fieldcatalog-SCRTEXT_s = 'Batch/Div Freq'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE'.
fieldcatalog-SCRTEXT_L = 'Offline'.
fieldcatalog-SCRTEXT_m = 'Offline'.
fieldcatalog-SCRTEXT_s = 'Offline'.
fieldcatalog-outputlen = 6.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'CT'.
fieldcatalog-SCRTEXT_L = 'Cycle Time'.
fieldcatalog-SCRTEXT_m = 'Cycle Time'.
fieldcatalog-SCRTEXT_s = 'Cycle Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'CW'.
fieldcatalog-SCRTEXT_L = 'Work Content'.
fieldcatalog-SCRTEXT_m = 'Work Content'.
fieldcatalog-SCRTEXT_s = 'Work Content'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'IDEAL_CT'.
fieldcatalog-SCRTEXT_L = 'Ideal CT'.
fieldcatalog-SCRTEXT_m = 'Ideal CT'.
fieldcatalog-SCRTEXT_s = 'Ideal CT'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'IDEAL_CW'.
fieldcatalog-SCRTEXT_L = 'Ideal CW'.
fieldcatalog-SCRTEXT_m = 'Ideal CW'.
fieldcatalog-SCRTEXT_s = 'Ideal CW'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'A_TRG'.
fieldcatalog-SCRTEXT_L = 'Target A'.
fieldcatalog-SCRTEXT_m = 'Target A'.
fieldcatalog-SCRTEXT_s = 'Target A'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'B_TRG'.
fieldcatalog-SCRTEXT_L = 'Target B'.
fieldcatalog-SCRTEXT_m = 'Target B'.
fieldcatalog-SCRTEXT_s = 'Target B'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'G_TRG'.
fieldcatalog-SCRTEXT_L = 'Target G'.
fieldcatalog-SCRTEXT_m = 'Target G'.
fieldcatalog-SCRTEXT_s = 'Target G'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'P_TRG'.
fieldcatalog-SCRTEXT_L = 'Target P'.
fieldcatalog-SCRTEXT_m = 'Target P'.
fieldcatalog-SCRTEXT_s = 'Target P'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'M_TRG'.
fieldcatalog-SCRTEXT_L = 'Target M'.
fieldcatalog-SCRTEXT_m = 'Target M'.
fieldcatalog-SCRTEXT_s = 'Target M'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'T_TRG'.
fieldcatalog-SCRTEXT_L = 'Target T'.
fieldcatalog-SCRTEXT_m = 'Target T'.
fieldcatalog-SCRTEXT_s = 'Target T'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'I_TRG'.
fieldcatalog-SCRTEXT_L = 'Target I'.
fieldcatalog-SCRTEXT_m = 'Target I'.
fieldcatalog-SCRTEXT_s = 'Target I'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'AUTOCYCLE'.
fieldcatalog-SCRTEXT_L = 'AutoCycle'.
fieldcatalog-SCRTEXT_m = 'AutoCycle'.
fieldcatalog-SCRTEXT_s = 'AutoCycle'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ONLINE_TIME'.
fieldcatalog-SCRTEXT_L = 'Online Time'.
fieldcatalog-SCRTEXT_m = 'Online Time'.
fieldcatalog-SCRTEXT_s = 'Online Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE_TIME'.
fieldcatalog-SCRTEXT_L = 'Offline Time'.
fieldcatalog-SCRTEXT_m = 'Offline Time'.
fieldcatalog-SCRTEXT_s = 'Offline Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ONLINE_P_TIME'.
fieldcatalog-SCRTEXT_L = 'Online Process Time'.
fieldcatalog-SCRTEXT_m = 'Online Process Time'.
fieldcatalog-SCRTEXT_s = 'Online Process Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE_P_TIME'.
fieldcatalog-SCRTEXT_L = 'Offline Process Time'.
fieldcatalog-SCRTEXT_m = 'Offline Process Time'.
fieldcatalog-SCRTEXT_s = 'Offline Process Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
ENDFORM. " build_fieldcatalog
*& Form build_layout
text
--> p1 text
<-- p2 text
FORM build_layout .
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
ENDFORM. " build_layout
*& Form build_hierarchy_header
text
<--P_GD_HIERARCHY_HEADER text
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Drill Down For Detail'(022).
p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ''.
ENDFORM. " build_hierarchy_header
*& Form build_report_title
text
-->P_GD_REPORT_TITLE text
-->P_GD_LOGO text
FORM build_report_title using
pt_report_title TYPE slis_t_listheader
pa_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader,
ld_date(10) TYPE c,
string1 type string,string2 type string.
List Heading Line(TYPE H)
concatenate 'Material: ' p_matnr-low into string1 separated by space.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-key = 'MOST Operation'.
concatenate p_gid-low p_opn-low into string2 separated by space.
ls_line-info = string2.
APPEND ls_line TO pt_report_title.
ls_line-typ = 'S'.
ls_line-key = 'Text'.
select single DESCRIPTION from zroutpromast into string1 where mop_gid = p_gid-low
and mop_opn = p_opn-low
and werks = p_werks-low.
ls_line-info = string1.
APPEND ls_line TO pt_report_title.
ls_line-typ = 'S'.
ls_line-key = 'Routing Counter:'.
ls_line-info = counter.
APPEND ls_line TO pt_report_title.
Status Line(TYPE S)
ld_date(2) = sy-datum+6(2).
ld_date+2(1) = '/'.
ld_date3(2) = sy-datum4(2).
ld_date+5(1) = '/'.
ld_date+6(4) = sy-datum(4).
ls_line-typ = 'S'.
ls_line-key = 'Date'.
ls_line-info = ld_date.
APPEND ls_line TO pt_report_title.
Action Line(TYPE A)
CLEAR ls_line.
ls_line-typ = 'A'.
CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO pt_report_title.
ENDFORM. " build_report_title
*& Form build_variant
text
--> p1 text
<-- p2 text
FORM build_variant .
gd_variant-report = sy-repid.
ENDFORM. " build_variant
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR 'ZTITLE'.
IF gd_tree IS INITIAL.
Create ALVtree (must be performed within screen PBO module)
PERFORM create_alvtree_container.
PERFORM create_object_in_container.
PERFORM create_empty_alvtree_control.
perform change_toolbar.
PERFORM create_alvtree_hierarchy.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE USER_COMMAND_0100 INPUT.
case sy-ucomm.
when 'EXIT' or 'BACK' or 'CANC'.
call method gd_tree->free.
leave program.
when others.
call method cl_gui_cfw=>dispatch.
endcase.
clear ok_code.
call method cl_gui_cfw=>flush.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form create_alvtree_container
text
--> p1 text
<-- p2 text
FORM create_alvtree_container .
gd_tree_container_name = 'SCREEN_CONTAINER'.
create object gd_custom_container
exporting
container_name = gd_tree_container_name
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message x208(00) with 'ERROR'.
endif.
ENDFORM. " create_alvtree_container
*& Form create_object_in_container
text
--> p1 text
<-- p2 text
FORM create_object_in_container .
create object gd_tree
exporting
parent = gd_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = ''
no_toolbar = ''
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
if sy-subrc <> 0.
message x208(00) with 'ERROR'.
endif.
ENDFORM. " create_object_in_container
*& Form create_empty_alvtree_control
text
--> p1 text
<-- p2 text
FORM create_empty_alvtree_control .
CLEAR: it_emptytab.
REFRESH: it_emptytab.
CALL METHOD gd_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = gd_hierarchy_header
it_list_commentary = gd_report_title
i_logo = gd_logo
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = gd_variant
CHANGING
it_outtab = it_emptytab "Must be empty
it_fieldcatalog = gd_fieldcat.
ENDFORM. " create_empty_alvtree_control
*& Form create_alvtree_hierarchy
text
--> p1 text
<-- p2 text
FORM create_alvtree_hierarchy .
data: ls_sflight type sflight,
lt_sflight type sflight occurs 0.
data: ld_mop_gid_key type lvc_nkey,
ld_mop_opn_key type lvc_nkey.
loop at it_output.
perform add_ekko_node using it_output
changing ld_mop_gid_key.
loop at it_output1 where subgid eq it_output-subgid
and subopn eq it_output-subopn.
perform add_ekpo_line using it_output1
ld_mop_gid_key
changing ld_mop_opn_key.
endloop.
endloop.
calculate totals
call method gd_tree->update_calculations.
this method must be called to send the data to the frontend
call method gd_tree->frontend_update.
ENDFORM. " create_alvtree_hierarchy
*& Form add_ekko_node
text
-->P_IT_OUTPUT text
-->P_2478 text
<--P_LD_MOP_GID_KEY text
FORM add_ekko_node USING ps_output like it_output
VALUE(p_relate_key)
CHANGING p_node_key.
data: ld_node_text type lvc_value,
ls_sflight type sflight.
data : text128(128).
Set item-layout
concatenate ps_output-subgid ps_output-subopn into text128 separated by space.
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
ls_item_layout-style = cl_gui_column_tree=>style_default.
ld_node_text = text128.
append ls_item_layout to lt_item_layout.
Add node
call method gd_tree->add_node
exporting
i_relat_node_key = p_relate_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = ld_node_text
is_outtab_line = ps_output
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key.
ENDFORM. " add_ekko_node
*& Form add_ekpo_line
text
-->P_IT_OUTPUT1 text
-->P_LD_MOP_GID_KEY text
<--P_LD_MOP_OPN_KEY text
FORM add_ekpo_line USING Ps_OUTPUT1 like it_output1
value(p_relate_key)
CHANGING p_node_key.
data: ld_node_text type lvc_value,
ls_sflight type sflight.
data : text128(128).
concatenate ps_output1-srno ps_output1-movetype into text128 separated by space.
Set item-layout
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
ls_item_layout-style = cl_gui_column_tree=>style_default.
ld_node_text = text128.
append ls_item_layout to lt_item_layout.
Add node
call method gd_tree->add_node
exporting
i_relat_node_key = p_relate_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = ld_node_text
is_outtab_line = ps_output1
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key.
ENDFORM. " add_ekpo_line
*& Form change_toolbar
text
--> p1 text
<-- p2 text
FORM change_toolbar .
get toolbar control
call method gd_tree->get_toolbar_object
importing
er_toolbar = mr_toolbar.
check not mr_toolbar is initial.
add seperator to toolbar
call method mr_toolbar->add_button
exporting
fcode = ''
icon = ''
butn_type = cntb_btype_sep
text = ''
quickinfo = 'This is a Seperator'. "#EC NOTEXT
add Standard Button to toolbar (for Delete Subtree)
call method mr_toolbar->add_button
exporting
fcode = 'EXPORT' "Function code of button
icon = '@49@' "Icon ID (see )
butn_type = cntb_btype_button "Button type
text = '' "Button text
quickinfo = 'Download To Excel'. "Quick info text
add Dropdown Button to toolbar (for Insert Line)
call method mr_toolbar->add_button
exporting
fcode = 'INSERT_LC' "Function code of button
icon = '@17@' "Icon ID (see )
butn_type = cntb_btype_dropdown "Button type
text = '' "Button text
quickinfo = 'Insert Line'. "Quick info text
set event-handler for toolbar-control
data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.
create object toolbar_event_receiver.
set handler toolbar_event_receiver->on_function_selected
for mr_toolbar.
set handler toolbar_event_receiver->on_toolbar_dropdown
for mr_toolbar.
ENDFORM. " change_toolbar
Edited by: Darshan Shah on Jan 2, 2008 1:31 PMGui patch was not available on my pc
-
How to implement "if/then/else" or "case" logic in a Statement Expression?
I need a loop in my test sequence, so I define a Locals.LoopIndex which is of type Number, and I also define a Locals.PromptMessage, which is of type String. Within the loop body, have a statement step, in which I want to assign Locals.PromptMessage different strings according to the value of Locals.LoopIndex. The logic is like this (in suedo code)
case Locals.LoopIndex:
1: Locals.PromptMessage = "string1";
break;
2: Locals.PromptMessage = "string2";
break;
or
if (Locals.LoopIndex == 1)
then Locals.PromptMessage = "string1";
else if (Locals.LoopIndex == 2)
then Locals.PromptMessage = "string2";
How can I implement this in the Statement Expression?
Thanks!You can use the conditional expression (not sure what it is called). Syntax is Locals.variable=(BooleanExpression?ValueIfTrue:ValueIfFalse). To implement your pseudo code it would look like this:
Locals.PromptMessage=(Locals.LoopIndex==1?"string1":"string2")
This means the same as:
If Locals.LoopIndex=1 then
Locals.PromptMessage = "string1"
Else
Locals.PromptMessage = "string2"
End If
Another way to do it is like this, but the first method is preferred:
Locals.LoopIndex==1?(Locals.PromptMessage="string1")Locals.PromptMessage="string2") -- must use parenthesis as shown
This syntax is BooleanExpression?(Statement if BooleanExpression is true)Statement if BooleanExpression is false)
You can nest the expression to create ElseIf conditions:
Locals.PromptMessage=(Locals.LoopIndex==1?"string1"Locals.LoopIndex==2?"string2":"string3"))
This means the same as:
If Locals.LoopIndex=1 then
Locals.PromptMessage = "string1"
ElseIf Locals.LoopIndex=2 then
Locals.PromptMessage = "string2"
Else
Locals.PromptMessage = "string3"
End If
I don't know if there is a limit to the nesting.
Hope this helps.
- tbob
Inventor of the WORM Global -
Hello. Can anyone tell me why this isn't working? I'm trying to use a switch off of a String, so I take the hashcode of it and compare it to the possible input strings. It looks like it should work, it's just comparing intergers, but my compiler always gives me an error "constant expression required". Why is this happenning?
Here is my code:
final int string1 = "hello".hashCode() ;
final int string2 = "goodbye".hashCode() ;
String input ;
switch( input.hashCode() )
case string1 :
// stuff
case string2 :
// stuff
}The compiler always hits the error on the 'case string1:' line. How can it say "i need a constant value" when the value it's using is a final? Isn't that constant enough?final int string1 = "hello".hashCode() ;
final int string2 = "goodbye".hashCode() ;is resolved at run-time.
switch( input.hashCode() )
case string1 :
case string2 :is resolved at compile-time.
so you have to use if..else..endif; however I don't see why you would need hashCode() to compare strings.
Maybe for performance ??? Then you should make sure that using hashCode() is really faster. otherwise you end up with VERY strange code. -
Variable from one class to another
I have a Program that contains a JDesktop Pane, and when the program starts, it creates the "main" window as in JInternal Frame.
When a certain check box is checked, I call an external class that creates and returns a JInternalFrame. What I need to do is have the external class get a Vector from the main class (I pass it in when i create the object), edit the Vector, then return it to the main class. If i try to create a method in the main class like "returnVector()" or whatever to get the vector back to the main class, I get the error of "Non-static variable cannot be referenced from a non-static context". How can I get around that? The NEXT issue is this: I would like to cause the JInternalFrame that is created from the external class (on the JDesktopPane in the main class) to close itself when a button in it is clicked. I'm guess I'd need a Listener somewhere. Would that listener be in the Main class or in the external one. Does this make sense? Any help would be greatly appreciated.Sorry, This might be a bit lengthy, but it works and illustrates my problem. I created it in NetBeans. There are the two classes I'm jusing. The issue is illustrated in the button listener on the 2nd class:
The First:
package javaapplication3;
import java.beans.PropertyVetoException;
import java.util.Vector;
import javax.swing.JInternalFrame;
public class NewJFrame extends javax.swing.JFrame {
Vector <String> TestVector = new Vector <String> (0); //Vector to move around.
public NewJFrame() {
//add some test strings to the Vector
TestVector.add("String1");
TestVector.add("String2");
TestVector.add("String3");
initComponents();
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jDesktopPane1 = new javax.swing.JDesktopPane();
jInternalFrame1 = new javax.swing.JInternalFrame();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jInternalFrame1.getContentPane().setLayout(new java.awt.FlowLayout());
jInternalFrame1.setVisible(true);
jLabel1.setText("This is a VERY simple example");
jInternalFrame1.getContentPane().add(jLabel1);
jButton1.setText("Press this");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonListen(evt);
jInternalFrame1.getContentPane().add(jButton1);
jInternalFrame1.setBounds(10, 10, 350, 120);
jDesktopPane1.add(jInternalFrame1, javax.swing.JLayeredPane.DEFAULT_LAYER);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jDesktopPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jDesktopPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
pack();
}// </editor-fold>
private void ButtonListen(java.awt.event.ActionEvent evt) {
JInternalFrame newFrame;
NewJFrame2 roadframe = new NewJFrame2(TestVector);
newFrame= roadframe.getFrameBack();
newFrame.setVisible(true);
jDesktopPane1.add(newFrame);
try {
newFrame.setSelected(true);
} catch (PropertyVetoException ex) {
ex.printStackTrace();
//created this in hopes of using it to return the vector from NewJFrame2
public void returnVector(Vector<String> vectorAgain){
this.TestVector=vectorAgain;
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}The 2nd:
package javaapplication3;
import java.util.Vector;
import javax.swing.DefaultListModel;
import javax.swing.JInternalFrame;
public class NewJFrame2 extends javax.swing.JFrame {
Vector <String> testVector=new Vector<String>(0);
DefaultListModel model;
public NewJFrame2(Vector <String> TestVector) {
this.testVector=TestVector;
initComponents();
public JInternalFrame getFrameBack(){
return jInternalFrame1;
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jInternalFrame1 = new javax.swing.JInternalFrame();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
model=new DefaultListModel();
for (int a=0; a<testVector.size();a++){
model.addElement(testVector.get(a));
jList1 = jList1=new javax.swing.JList(model);
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jInternalFrame1.setVisible(true);
jLabel1.setText("This is the 2nd class I was referencing I passed TestVector from NewFrame. It Contains:");
jInternalFrame1.getContentPane().add(jLabel1, java.awt.BorderLayout.NORTH);
jLabel2.setText("Now I want to Edit this list here, and then send it back to NewFrame1. The button will attemp.");
jInternalFrame1.getContentPane().add(jLabel2, java.awt.BorderLayout.SOUTH);
jScrollPane1.setViewportView(jList1);
jInternalFrame1.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
jButton1.setText("Return Vector");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ReturnVectorButtonListener(evt);
jInternalFrame1.getContentPane().add(jButton1, java.awt.BorderLayout.EAST);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jInternalFrame1)
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jInternalFrame1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
pack();
}// </editor-fold>
private void ReturnVectorButtonListener(java.awt.event.ActionEvent evt) {
NewJFrame.returnVector(testVector);
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
} -
Validation error corrupts component tree?
I've got a strange problem trying to use validation on input fields.
The basic setup is as follows:
I've got a page divided into two parts with separate h:form tags, the one holding a dataTable with some elements and the other showing the element details in inputFields once an item is selected in the dataTable via a commandLink. A commandButton on the detail side allows you to update the values of the selected item which is being reflected in the dataTable on reload. So far so good.
Here comes the strange part:
All the inputFields are marked required. Now once you leave a field empty and try to submit the form, you get a validation error as expected. BUT if you now select a different element from the dataTable, ONLY the field whose validation formerly failed is being updated, the other fields still show the same value as before. The backing bean method that belongs to the commandLink is being executed, and the underlying data object of the input fields is being set properly, only the values in the component tree aren't updated. This behaviour persists until you enter a valid value in the formerly invalid input field and submit. Debugging shows that as long as at least one field has had validation errors, only the getter of these backing beans properties are being invoked during render response phase, as opposed to the "normal" case where the getters of all the backing beans properties are being called.
For some reason, the render response phase seems to ignore the other components in the component tree when there was some validation error on one or more fields.
Another interesting observation:
This is the behaviour if I don't specify an action attribute in the commandLink selecting an element from the dataTable, as I want to return to the same page again. But if I define a navigation case that brings me to the same page and put that into the action attribute, the problem doesn't occur. Unfortunately this is no option for me, as I'm aiming to do all this with ajax.
I've created a simple example so you can try out yourself:
test.jsp:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<html>
<head>
<title>validator test</title>
</head>
<body>
<f:view>
<h:form id="form1">
<h:dataTable id="table" value="#{bean.datas}" var="data" binding="#{bean.table}" border="1">
<h:column>
<h:commandLink actionListener="#{bean.selectData}" value="#{data.string1}" />
</h:column>
<h:column>
<h:outputText value="#{data.string2}" />
</h:column>
</h:dataTable>
</h:form>
<hr />
<h:form id="form2">
<h:inputText value="#{bean.data.string1}" id="field1" required="true" />
<h:inputText value="#{bean.data.string2}" id="field2" required="true"/>
<h:commandButton value="submit" />
</h:form>
</f:view>
</body>
</html>Bean.java:
needs to be defined in faces-config.xml as bean "bean" with session scope
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.event.ActionEvent;
public class Bean {
private Data data;
private List<Data> datas;
private HtmlDataTable table;
public Bean() {
datas = new ArrayList<Data>();
datas.add(new Data("data1value1","data1value2"));
datas.add(new Data("data2value1",""));
public void selectData(ActionEvent event) {
data = (Data)table.getRowData();
public List<Data> getDatas() {
return datas;
public Data getData() {
return data;
public void setData(Data data) {
this.data = data;
public HtmlDataTable getTable() {
return table;
public void setTable(HtmlDataTable table) {
this.table = table;
public class Data {
private String string1;
private String string2;
public Data(String string1, String string2) {
this.string1 = string1;
this.string2 = string2;
public String getString1() {
return string1;
public void setString1(String value) {
string1 = value;
public String getString2() {
return string2;
public void setString2(String value) {
string2 = value;
}My system setup:
WinXP Professional
JDK 1.6.0-b105
Tomcat 5.5.20 (also tried 6.0.7)
JSF RI 1.1.02_b08 (also tried 1.2_04-b10-p01, different but anyway not expected behaviour with MyFaces 1.1.5)
Thanks for any input,
Harry.Is there noone here who can tell me if this is behavior like specified or if I miss some point?
A possible solution seems to be telling JSF programmatically to rebuild the view root. Does anyone if this is possible? -
Hi,
I had created a FM which i s used to divide the string into 2 parts after specifying the length from where we want to divide and add highfen mark at that point in that string using concatenate function. The problem when i debug the code it is picking up the correct data and when the processing is done the run time error occurs in that FM.
HERE IT IS:-
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_RANGE_OUT_OF_BOUNDS', was not
caught in
procedure "Z_STRING_LENGTH1" "(FUNCTION)", nor was it propagated by a RAISING
clause.
Since the caller of the procedure could not have anticipated that the
exception would occur, the current program is terminated.
The reason for the exception is:
In the running program "SAPLZGROUP_FOR_555", part of a string was about to be
accessed
with an explicitly specified length.
However, this length (20) exceeded the current length of the string
(16).
This kind of access is illegal.
plzz proivde me guidelines for solving this problem.hi.
actually i have to use string insted of character i cannot in sert the length of the offset value.
this the code which i am using right now:-
FUNCTION Z_STRING_LENGTH1.
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_STRING) TYPE STRING
*" VALUE(LENGTH) TYPE I
*" EXPORTING
*" VALUE(E_STRING) TYPE STRING
data: str1 type string,
len type i,
aa type i,
STRING1 type string,
STRING2 type string,
STRING3 type string.
str1 = I_STRING.
LEN = STRLEN( I_STRING ).
AA = LEN - LENGTH.
STRING1 = str1(length).
STRING2 = str1+LENGTH(aa).
concatenate STRING1 '-' STRING2 into STRING3.
e_string = STRING3.
the importt parameters:-
I_STRING TYPE STRING
LENGTH TYPE I
The export parameters :-
E_STRING TYPE STRING
Edited by: ricx .s on May 11, 2009 7:24 AM -
How to get the data type of a variable
Hi
I'm new to java and I'd like to put some variables with different data type into the HashMap. But when I'm going to get the value
of the variable I want to know its data type (int,String,long,float etc.) before I do some processing.
here's my sample code:
//start...
Map m = new HashMap();
String s1 = "String1";
String s2 = "String2";
int i1 = 5;
int i2 = 10;
m.put(1,s1);
m.put(2,i1);
m.put(3,12);
m.put(4,s2);
//end...
when I'm going to retrieve the variable, I'd like to assign it to another variable with the same data type. but the problem is, before
I assign it I must know its data type so that I could not have an error.
thanks in advanceI don't think you will be able to put primitives (ints, floats, etc) in, without wrapping 'em first (java.lang.Integer, java.lang.Float...).
You can get the type with
Object biggles;
// Get biggles
if( biggles instanceof String )
System.out.println( "Biggles is a string, yeah biggles" );or with refection
Class bigglesClass = biggles.getClass();
System.out.println( "Biggles is of type: " + bigglesClass.getName() ); -
How can I make the data persistent when using plist ?
I have a UITableView table1. And when I touch any cell in the table a new UIViewController appears and it have two UITextField's name and description. After entering the data in both the text fields I used the save button to save them. In save method I wrote the code for the data to be stored in plist.
-(void)save:(id)sender
indexOfDataArray = temp;
NSString *string1 = [[NSString alloc]init];
NSString *string2 = [[NSString alloc]init];
string1 = nameField.text;
string2 = descriptionField.text;
NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:string2, string1, nil];
[myArray addObject:myDict];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"VideoData.plist"];
[myArray writeToFile:path atomically:YES];
UIAlertView *alertMesage = [[UIAlertView alloc] initWithTitle: @"Save Alert" message:@"The data entered is saved" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil] ;
[alertMesage show];
[alertMesage release];
[myArray retain];
But the problem is every time I restart my application the data in the plist is deleted. How can I retain the data in the plist name I specified ?I think yes, I am specifying only one file name to store in the path. I understood my where I am wrong.
If I added data in plist for two items(item1 and item2). And again I need to add next two items(item3 and item4) . How can I make item3 and item 4 do not replace item1 and item2 ?
Thank You. -
How to add new line to the file?
Hello,
I will like to print 2 line of string in the following format to the
file:- file.txt
String1
String2
How to print a new line after String1 so that String2 can be written after String1?
- Eugene -Do you mean...
PrintWriter pw=new PrintWriter(new FileOutputStream("file"));
pw.println(string1);
pw.println(string2);
pw.close();
the println puts a new line after string1.
Maybe you are looking for
-
Also, my battery life is at about 2 hours with only Safari and Google Chrome open. I have a 1-year old 13 inch Macbook Pro. I made a different user and the finder worked on there, but I'd like to make it work on my main account since that has all my
-
My external Seagate hard drive won't show up on my iMac
I've had my Seagate external hard drive connected to my iMac for some time now and have been using it for Time Machine Backups.... Recently I noticed the drive would not show up in the finder and backup began to fail because it couldn't find the dri
-
I have a link to an external site located throughout an entire cluster of pages within my website. Is there a Dreamweaver CS5 command that would enable me to modify that link as it appears throughout the entire cluster of pages, simultaneously?
-
Tcode to find all Tcode access by user
What is TCODE to find all the Tcode executed by perticular user in last 24 hrs I try ST03 but i didnt get desired result Plz help
-
New owner of macbook pro wants to transfer to it control and info from pb
Hi there, Wanting to run my new machine exactly with the setup of my old one and using the migration assistant, I have done the target mode with firewire. At the end there was a warning saying some files didn't transfer. (They were music plugins. Is