5 Char - 1Char Coding
Hi SDN BI/ABAPer's,
Can anyone please help this Dumbman in coding.
I want to concatenate 5 fields coming from datasource to one in <b>Transformation</b>.
<b>ZCUSTKEY(17)</b> is the Char I created with length = Sum of lengths of 5
<u><b>Below are the 5 Chars</b></u>
<b>CURTYPE</b>-Currency type-CHAR-2-<b>0CURTYPE</b>
<b>RVERS</b>-Version-CHAR-3-<b>0VERSION</b>
<b>RMVCT</b>-TransactnType- CHAR-3-<b>0MOVE_TYPE</b>
<b>ACTIV</b>-Transaction-CHAR-4-<b>0FG_BUSTR</b>
<b>AWTYP</b>-Ref. Transaction-CHAR-5-<b>0FI_AWTYP</b>
*Req - > DSO needs 20 keys - > ZCUSTKEY will concatinte 5 keys
Thank you Coders!!
Message was edited by:
Jr Roberto
Message was edited by:
Jr Roberto
hi,
i have done this type of coding. but i don have system right now, so cant tell u exact. but go thru this link.
<a href="http://help.sap.com/saphelp_nw70/helpdata/en/e3/732c42be6fde2ce10000000a1550b0/frameset.htm">http://help.sap.com/saphelp_nw70/helpdata/en/e3/732c42be6fde2ce10000000a1550b0/frameset.htm</a>
i think it ll help u a lot.
regards,
Purvang
Similar Messages
-
Hi there,
I have a problem regarding the coding of FDF files. Here's what I'm doing: I copy and paste text from Word into a HTML Form in Firefox. Firefox encodes special chars as &#xyz; Now I generate a fdf file from the form fields. In these files, the Firefox HTML-Encoded special chars are coded as above and therefore printed exactly like that in the latter PDF file.
Now I started to copy the Word Text directly into the PDF Form, exporting the FDF and looking at the coding of the special chars. But it neither seems to be ISO, UTF-8 nor Windows or any other well-known coding.
Can anybody help me out and tell me, which format is used for encoding of FDF files?
Thanks a lot
MichaelMaybe it matches the font's encoding as specified in the PDF. That
would make sense, because then no translation is needed on loading the
PDF.
Aandi Inston -
Hi All,
Is there any function module to find, whether the
given year is a Leap year or not? Please tell me.
Thanks in advance.
Thanks&Regards,
Siri.hi srilatha
I'm not sure if sap delivers such a function module but writing one yourself should be quite easy.
Posibility one: implement the correct algorithm
leap years are years which can be divided by 4 (e.g. 2004) but are no centuries (e.g. 1900). But years which can be devided by 400 are leap years although they are centuries (e.g. 2000 was a leap year).
Posibility two: try the following (bases on the fact that sap can calculates the leap years correct in the date datatype)
- define a function module
- importing parameter iv_year (NUMC 4)
- exporting parameter ef_leap_year (CHAR 1)
- coding
data:
lv_date like sy-datum value '00000228'.
lv_date(4) = iv_year. " set the year to the date
ADD 1 TO lv_date. " calculate the next day
IF lv_date+4(4) EQ '0229'. " get the MMDD part of date
ef_leap_year = 'X'. " yes it is a leap year
ELSE.
ef_leap_year = ''. " no it is not a leap year
ENDIF.
or check this one
FM DATE_CHECK_PLAUSIBILITY will check if a date is valid. You can either use this FM to check 28.02.xxxx for a given year, or copy the piece of coding which checks for a leap year.
You can use FM NUMBER_OF_DAYS_PER_MONTH_GET by passing '02' as month and YEAR.
Regards,
naveen -
How to validate numbers in char field.
Hello all,
I have one database column with char data type. This field should allow insert only
numbers [ zero to nine] and plus symbol .. how to validate this?
Pls help me..
I.m using oracle 9i database. So it does not allow REG-EXP and WITH methods.. So give some
sql coding to do thisAs this forum is for issues with the SQL Developer tool, you'll probably get more answers in the SQL And PL/SQL forum.
Regards,
K. -
Convert jstring to char array or int array
Hi all, please help with the following code. I've tested this code with hard coded char array and it works. Now I have to get the char array from parameter "param1" which is passed from Java.
The following code compiled with error message:
error C2223: left of '->GetStringUTFChars' must point to struct/union
JNIEXPORT void JNICALL Java_DongleSet_DongleWrite(JNIEnv *env,jobject obj,jstring param1){
char HaspBuffer[500]=(char)env->GetStringUTFChars(param1,NULL);
int Service=MEMOHASP_WRITEBLOCK;
int SeedCode=300;
int LptNum=0;
int Pass1=pass1;
int Pass2=pass2;
int p1=0;
int p2=12;
int p3=0;
int p4=(int)HaspBuffer;
hasp(Service,SeedCode,LptNum,Pass1,Pass2,&p1,&p2,&p3,&p4);
I've tried this:char HaspBuffer[500]=env->GetStringUTFChars(param1,NULL);
And this:char HaspBuffer[500]=(*env)->GetStringUTFChars(param1,NULL);
All give me errors.
Please help.char * HaspBuffer=(*env)->GetStringUTFChars(param1,NULL); When writing pure C, you have to supply the JNIEnv as first arg to every JNIEnv function pointer.char * HaspBuffer=(*env)->GetStringUTFChars(env, param1, NULL);Look here: http://developer.java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring.html
-
How to use model clause without hard coding the values in it?
Query
select acct_no,
gl_code,
CASE
WHEN entry_type_label IN ('Earned Revenue') THEN
'Earned Revenue'
ELSE
'Deferred Revenue Credit'
END AS entry_type_label,
CASE
WHEN entry_type_label IN ('Opening Balance') THEN
'Opening Balance'
WHEN entry_type_label IN ('Deferred Revenue Credit') THEN
'Invoice Amount'
WHEN entry_type_label IN ('Earned Revenue') THEN
'Earned Revenue'
WHEN entry_type_label IN ('Closing Balance') THEN
'Closing Balance'
ELSE
'Deferred Revenue Credit'
END AS label,
entry_type_no,
orig_chg_start_date,
period_no,
-amt as amt
from revrec_test
WHERE acct_no = 1788562
AND entry_type_no IN (2, 4) model dimension by(acct_no,
gl_code,
entry_type_label,
entry_type_no,
orig_chg_start_date,
period_no) measures(amt) rules upsert
all(amt 1788562,
'UNEARNED-10011561',
'Opening Balance',
2,
'02-OCT-17 08.30.00 AM',
190 = 0,
amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
190 = amt 1788562,
'UNEARNED-10011561',
'Deferred Revenue Credit',
2,
'02-OCT-17 08.30.00 AM',
190 - amt 1788562,
'EARNED-10011561',
'Earned Revenue',
4,
'02-OCT-17 08.30.00 AM',
190,
amt 1788562,
'UNEARNED-10011561',
'Opening Balance',
2,
'02-OCT-17 08.30.00 AM',
191 = amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
190,
amt 1788562,
'UNEARNED-10011561',
'Deferred Revenue Credit',
2,
'02-OCT-17 08.30.00 AM',
191 = 0,
amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
191 =
(amt 1788562, 'UNEARNED-10011561', 'Opening Balance', 2,
'02-OCT-17 08.30.00 AM', 191 + amt 1788562, 'UNEARNED-10011561',
'Deferred Revenue Credit', 2, '02-OCT-17 08.30.00 AM', 191) - amt
1788562,
'EARNED-10011561',
'Earned Revenue',
4,
'02-OCT-17 08.30.00 AM',
191,
amt 1788562,
'UNEARNED-10011561',
'Opening Balance',
2,
'02-OCT-17 08.30.00 AM',
192 = amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
191,
amt 1788562,
'UNEARNED-10011561',
'Deferred Revenue Credit',
2,
'02-OCT-17 08.30.00 AM',
192 = 0,
amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
192 =
(amt 1788562, 'UNEARNED-10011561', 'Opening Balance', 2,
'02-OCT-17 08.30.00 AM', 192 + amt 1788562, 'UNEARNED-10011561',
'Deferred Revenue Credit', 2, '02-OCT-17 08.30.00 AM', 192) - amt
1788562,
'EARNED-10011561',
'Earned Revenue',
4,
'02-OCT-17 08.30.00 AM',
192,
amt 1788562,
'UNEARNED-10011561',
'Opening Balance',
2,
'02-OCT-17 08.30.00 AM',
193 = amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
192,
amt 1788562,
'UNEARNED-10011561',
'Deferred Revenue Credit',
2,
'02-OCT-17 08.30.00 AM',
193 = 0,
amt 1788562,
'UNEARNED-10011561',
'Closing Balance',
2,
'02-OCT-17 08.30.00 AM',
193 =
(amt 1788562, 'UNEARNED-10011561', 'Opening Balance', 2,
'02-OCT-17 08.30.00 AM', 193 + amt 1788562, 'UNEARNED-10011561',
'Deferred Revenue Credit', 2, '02-OCT-17 08.30.00 AM', 193) - amt
1788562,
'EARNED-10011561',
'Earned Revenue',
4,
'02-OCT-17 08.30.00 AM',
193)
ORDER BY period_no, entry_type_no;
The above query works fine. But i have hard coded the values. I want to do the same operation for different account number which is going to have different periodic no. How can I achieve it?
Thanks in advance.Create Statement
CREATE TABLE table_one(
ACCT_NO NUMBER(38),
GL_CODE VARCHAR2(300),
ENTRY_TYPE_LABEL CHAR(50),
ENTRY_TYPE_NO NUMBER,
ORIG_CHG_START_DATE TIMESTAMP(0) WITH LOCAL TIME ZONE,
ORIG_CHG_END_DATE TIMESTAMP(0) WITH LOCAL TIME ZONE,
PERIOD_NO NUMBER(38),
AMT NUMBER(38,10)
Insert Statement
INSERT ALL
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'U-11561','Deferred Revenue Debit',3,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',100,13.87)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'E-11561','Earned Revenue',4,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',102,-14.83)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'E-11561','Earned Revenue',4,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',101,-14.35)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'E-11561','Earned Revenue',4,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',100,-13.87)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'U-11561','Deferred Revenue Debit',3,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',103,0.95)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'U-11561','Deferred Revenue Debit',3,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',102,14.83)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'U-11561','Deferred Revenue Debit',3,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',101,14.35)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'E-11561','Earned Revenue',4,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',103,-0.95)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1001,'U-11561','Deferred Revenue Credit',2,'02-OCT-17 08.30.00 AM','01-JAN-18 01.30.00 PM',100,-44)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,44.91)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Accounts Receivable',1,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',104,60)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,3.93)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,11.75)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,6.86)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,-7.82)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,-23.47)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,-13.69)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,-6.86)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,7.82)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,23.47)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,13.69)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',104,-9.13)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,-44.91)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,-44.91)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,-35.91)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,-3.93)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,44.91)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',104,9.13)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Earned Revenue',4,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',106,-11.75)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Credit',2,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,38.48)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Credit',2,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,-19.24)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Credit',2,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',104,-60)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Accounts Receivable',1,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,38.48)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Accounts Receivable',1,'20-DEC-13 09.30.00 AM','16-FEB-14 09.30.00 AM',105,19.24)
INTO table_one(acct_no, gl_code, entry_type_label, entry_type_no, orig_chg_start_date, orig_chg_end_date, period_no, amt) VALUES(1002,'Recurring Flat Fees COA Code','Deferred Revenue Debit',3,'17-NOV-13 09.30.00 AM','16-FEB-14 09.30.00 AM',107,35.91)
SELECT * FROM dual;
Expected Result
S.NO
ACCT_NO
GL_CODE
ENTRY_TYPE_LABEL
ENTRY_TYPE_NO
ORIG_CHG_START_DATE
PERIOD_NO
AMT
DESCRIPTION
1
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
100
0
Opening Account
2
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
100
44
Invoice
3
1001
E-11561
Earned Revenue
4
02-OCT-17 08.30.00 AM
100
13.87
Invoice Paid
4
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
100
30.13
Closing Account
5
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
101
30.13
Opening Account
6
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
101
0
Invoice
7
1001
E-11561
Earned Revenue
4
02-OCT-17 08.30.00 AM
101
14.35
Invoice Paid
8
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
101
15.78
Closing Account
9
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
102
15.78
Opening Account
10
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
102
0
Invoice
11
1001
E-11561
Earned Revenue
4
02-OCT-17 08.30.00 AM
102
14.83
Invoice Paid
12
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
102
0.95
Closing Account
13
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
103
0.95
Opening Account
14
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
103
0
Invoice
15
1001
E-11561
Earned Revenue
4
02-OCT-17 08.30.00 AM
103
0.95
Invoice Paid
16
1001
U-11561
Deferred Revenue Credit
2
02-OCT-17 08.30.00 AM
103
0
Closing Account
Description
We must start opening account as zero and end with closing account as zero by doing manipulation with invoice and invoice paid.
Process
Initial Stage
Subsequent stage
Opening Account
0
(=closing Account)
Invoice
max value of account no which has entry type no 2
0
Invoice Paid
taken from the field amount which has entry type no 4
taken from the field amount which has entry type no 4
Closing Account
(=[opening account + invoice] - invoice paid)
(=[opening account + invoice] - invoice paid)
Note
1) Each account may have different periodic no.
2) Some account may have more than 4 distinct period no and less than 4 distinct periodic no.
3) Description column from expected result is not an part of table. It is been added for easier understanding. -
Convert Char (##) to P
Hi experts
I have to convert a char-variable to a p-variable.
The char-variable contains "##" (HEX = 001C).
Normaly it should be "1" and not '##'. Because when I put a "1" to the P-variable, I get the same hex-value like in the char.
When I say p-variable = char-variable, I get a dumpt CONVT_NO_NUMBER.
So, how can I convert the char-variable to the p-variable.
Thx in advance.
ChristianHi Christian,
The problem here lies in interpretation.
The same sequence of bytes (or bits) doesn't always mean the same. In your case 001C hex value is something different for character variable and means something other for p-var. It is the system who interprets this byte sequence.
With p var the system parses each byte as sequence of two digits (BCD - byte coded decimal). This means if we have such declaration
data p_var(2) type p value 12.
Its hex representation is 012C . 1 - is stored in memory on 4 bits (half a byte), 2 - is stored as 4 bits too. C - stands for sign of this variable (half a byte), 0 - is just added in front (half a byte). In total its 2 bytes.
If p_var was -12 then its hex would be 012D .
In contrary your c_var with hex 001C is UTF-16 representation of special character 1C which in [ASCII table|http://ascii-table.com] is not a printable one. That's why it is displayed to you as ##
What is more it doens't really make sense to convert p_var to c_var or vice versa, as system treats these two variables in totally different manner. It only make sense to take the integer representation of c_var . This is similar to saying: "please find this character in current code page or in Unicode and give me its position in this table (its integer value)".
So you can perform such conversion
data i_var type i.
data c_var type c value 'A'
i_var = c_var.
"i_var = 65
Only then you could map this i_var to your p_var but it really doens't make sense as the sytem would write it like 065C - p_var = 65
Hope you get the difference and will not persist on conversion b/w those two incompatible types
Regards
Marcin -
Convert char to ascii code and vice versa
HI
Is there any function module to convert char to ascii code and vice versa.
Thanks in advanceHi,
be careful if you have unicode running in your system. URL_ASCII_CODE_GET is platform-dependent so it will return the internal HERX representation of the character in your system - which is hopefully and in most cases ASCII.
Under unicode, we use double-byte characters here. I tried this function and the result CHAR_CODE is '00' regardless what character I specify for TRANS_CHAR. But the coding is so simple I corrected resultig in this sample code:
[P]
convert p_form to ASCII (internal) representation
DATA:
l_ofs TYPE syfdpos,
l_len TYPE sy-linsz,
l_ascii TYPE i.
FIELD-SYMBOLS:
<x> TYPE x.
l_len = STRLEN( p_ascii ).
DO l_len TIMES.
l_ofs = sy-index - 1.
ASSIGN p_ascii+l_ofs(1) TO <x> CASTING.
l_ascii = <x>.
WRITE: l_ascii.
ENDDO.
[/P]
Here, for each character of string p_ascii, the internal (ASCII) representation is determined and written to the output list.
Regards,
Clemens -
Requirement of VBA coding faced in the real time??
Can anyone explain some of the senarios for Transfer Rules, Update Rules and Start Routines and what was your approach for it.
Hi chandran,
go through thes links for details
transfer routine
Date key figure: Convert DATS format to DEC format
Date Conversion in Flat File
Transfer Routine ABAP
conversion exit
Date Conversion
Problem with conversion char to numc in transference rules
conversion routine..?
start routine in transfer rules
Look up to load master data
excluding
Start Routine in Transfer Rules
Sample code in Update Rule to restrict data selection?
Append Datapak - transfer start routine
Excluding Blank field in Infopackage Filter
Trans Routine ABAP help ..
update routine
How to call a function in Update Rules to reverse a key figure sign
Need Sample Code for Update Rules
Date calculation
Difference between data in PSA and Data in Infocube
No RETURNCODE <> 0 allowed in update routines in transfer mode
the diffrerece between DEC and (yyyymmdd) 8 char in Time defination
Access master data in update rules
Date key figure: Convert DATS format to DEC format
start routine in update rules
Is it possible to read a third ODS in update rules between two ODS?
update rule coding while loading data from ODS to CUBE
Start Routine in Update Rules to populate additional fields from ODS
Coding in Update Rules accessing a Z-Table
Start routine
Thanks
@jay -
Urgent: Doubt in coding a logic
Hi Experts,
I have a doubt in coding a logic . The bussiness requirement is that i have to capture a string of alphabets and check for particular alphabet in particular position and then process the rest of the logic.
the logic is given below , can anyone suggest me coding for this logic .Its very urgent . points will be rewarded.
Logic:
If 1st letter is D then
If 3rd letter of DPVERSION is:
A --> Asia (like DPA0202)
C --> EMEA (like DPC0111)
L --> Latin America LA (like DPL0502)
N --> North America NA (like DPN0408)
W --> EMEA (like DPW0207)
D then
if 4th letter is:
A --> Asia (no example yet)
C --> EMEA (no example yet)
L --> Latin America LA (no example yet)
N --> North America NA (like DPDN01TH)
W --> EMEA (like DPDW09TH)
End If
End If
Else if 1st letter is X then:
If 2nd letter of DPVERSION is:
A --> Asia (no example yet)
C --> EMEA (XEHC_RTF)
L --> Latin America LA (no example yet)
N --> North America NA (XNFAB_RTF)
W --> EMEA (no example yet)
End If
End If
Thanks in advance
KumaranHi, I think you can adopt offset logic.
assign character value to a variable like string+2(3) = char
then use case statement
case char
when 'A'
write ASIA
when--
End case.
Like this u can approach .
Hope this helps
Regards
Pavan -
Best practice of coding optional prompts
Post Author: maddyforums
CA Forum: WebIntelligence Reporting
I have a report that has 35 optional prompts for which I want to pass default values if the user doesnu2019t enter any values. This report was originally designed using BO 6.5 and has to be redesigned in WebI XI R2. The main concern of the data modeling team is:
To avoid hard coding of the default values for these optional prompts as this kind of coding will result in messing up the code when a report has too many prompts and might cause performance issues. During scheduling they want to run some scripts to pass the default values to the prompts but the issue is when the report is manually refreshed. They want us to find out whether we can pass the default values to the prompts without hardcoding this logic in the universe/ report for the manual refresh.
Ex:
SELECT -
FROM -
WHERE ( dbo.BDS_BDS_TEST_TABLE.PAID_DT <= case when ltrim(rtrim(@variable('To Date (MM/DD/CCYY) (Optional)'))) is null then dateadd(ss,-1, convert(datetime,convert(varchar, datepart(mm, getdate()))'/01/'convert(char(4), datepart(yy, getdate())),101))
else convert(datetime, ltrim(rtrim(@variable('To Date (MM/DD/CCYY) (Optional)'))), 101) end )
One of the team members has suggested the use of separate data providers for the prompt responses (A data provider that stores all the default prompt values) and uses the data provider functions to pass the values to the prompts. Please let me know whether this kind of approach works. What is the general coding approach for designing these kind of reports with lots of prompts? Please advice.Hi Ian,
There will be some guidelines in the new documentation, which is currently not yet available.
Here some very short tipps:
- Use an assistance class for each component, which should hold the current data and where you can place central methods. Placing methods in external classes is better than putting them into the component controller, because there is less overhead and more functionality (e.g. optional parameters and exceptions).
- Hold your current data in the assistance class and only put them into the context if needed (e.g. via supply functions).
- Call your business logic from the assistance class during event handling. Then you have the opportunity to do navigation or not depending on the output of the business logic.
- You could use any other class for this purpose, but the assistance class is easier, because it is instantiated by the framework and you can access it via wd_assist-> instead of wd_this->my_class-> .
- Do not create a model component, because this is just overhead and no advantage. In earlier states of the WD project, we thought, a model component would be a good idea, but we changed our minds
- Use context mapping, where it is needed, e.g. if you use the same context in different views.
- It is quite well to call the assistance class from the views.
- Be careful, if you store any references to component parts in your assistance class. Some references may change during runtime, especially those of context nodes placed in a deep hierarchy.
Hope this helps, and more tipps will follow in the documentation or weblogs.
Ciao, Regina -
Urgent ABAP Coding!!
Hi
We have to set paramenters for a characteristic called as ABC class which are like..[A] > 30M
> 10M to 30M
[C] > 5M to 10M
[D] > 1M to 5M
[E] > 70K to 1M
[F] > 3K to 70K
[G] < = 3K
R
Restricting a Keyfigure based on the char.ABC
Actually this has been created by Analysis process Designer...this ABC classification..
Now we have to do some testing with line item number ,so we have created a ODS & i have to write routine for it..
Pls tell whether Start or end routine has to be used.
Tell the coding to be followed.
Pls help me..I am a new to BW & also zero in ABAP..
Thanx in advance whomever revert me ASAP.
RajRaj,
What is the outcome you are trying to achieve?
Before you start to invest time in Start Routines there are many inbuilt functionalities that you can perfom in the update rules themselves.
Regards
Ben -
Comparing char in a string to strings in a txt file
Hi guys, i am dveloping a scrabble application for a project in jvava. Currently, i am trying to work on coding a computer player to play against a human, ive finished all the game logic nd 2 human players can successfully play on the same system.
My problem is when coming up with the AI logic, i am faced with the problem of how to compare the computer player's letters to the dictionary txt file in order to find the possible words he can play.
For example, the PC player has the letters A,B,E,G,T,F in his rack, it searches the dictionary and finds words that also contain these characters, so it would return words like AT, BAT, GATE, etc. I have already looke up the Jumble algorithm, but i dont really understand it(im still quite new to java).
I already have a ditionary class which i put the code below.
What i want to do now is just to come up with a simple method that takes a string, and compares the chars, and find words that match the char and return them but i dont knw hw to come about it.
import java.util.Scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.io.*;
public class Dictionary
ArrayList<String> dictionary;
public Dictionary() throws IOException
dictionary = new ArrayList<String>();
public void readInDictionaryWords() throws IOException
File dictionaryFile = new File("c:/data/dict.txt"); // declare the file
if( ! dictionaryFile.exists()) {
System.out.println("*** Error *** \n" +
"Your dictionary file has the wrong name or is " +
"in the wrong directory. \n" +
"Aborting program...\n\n");
System.exit( -1); // Terminate the program
Scanner inputFile = new Scanner( dictionaryFile);
while( inputFile.hasNext()) {
dictionary.add( inputFile.nextLine().toUpperCase() );
public boolean wordExists( String wordToLookup)
if( dictionary.contains( wordToLookup)) {
return true; // words was found in dictionary
else {
return false; // word was not found in dictionary
return"";
}Loops...
You take the first
then second
then third
and etc
You take the first 2
the next 2
the next 2
etc
all the way through n characters
once you have gone through this, then you have to do all possible combinations of characters of 2 through n.
Here is an implementation of N choose k for k up to 7:
public class Junk {
public Junk(){
public void choose1(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
System.out.println("("+s.charAt(i)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose2(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose3(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
for(int k=j+1; k<s.length(); k++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+", "+s.charAt(k)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose4(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
for(int k=j+1; k<s.length(); k++){
for(int l=k+1; l<s.length(); l++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+", "+s.charAt(k)+", "+s.charAt(l)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose5(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
for(int k=j+1; k<s.length(); k++){
for(int l=k+1; l<s.length(); l++){
for(int m=l+1; m<s.length(); m++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+", "+s.charAt(k)+", "+s.charAt(l)+", "+s.charAt(m)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose6(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
for(int k=j+1; k<s.length(); k++){
for(int l=k+1; l<s.length(); l++){
for(int m=l+1; m<s.length(); m++){
for(int n=m+1;n<s.length(); n++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+", "+s.charAt(k)+", "+s.charAt(l)+", "+s.charAt(m)+", "+s.charAt(n)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public void choose7(String s){
int lCount=0;
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
for(int k=j+1; k<s.length(); k++){
for(int l=k+1; l<s.length(); l++){
for(int m=l+1; m<s.length(); m++){
for(int n=m+1; n<s.length(); n++){
for(int o=n+1; o<s.length(); o++){
System.out.println("("+s.charAt(i)+", "+s.charAt(j)+", "+s.charAt(k)+", "+s.charAt(l)+", "+s.charAt(m)+", "+s.charAt(n)+", "+s.charAt(o)+")");
lCount++;
System.out.println("Distinct Combinations: "+lCount);
public static void main(String[] args) {
Junk j = new Junk();
j.choose7("1234567");
}I'll leave it to you to integerate the algos into your app appropriately. -
How to changing char. values and create new lines in C_TH_DATA
Hi experts,
we need to distribute the cost of some sender costcenters to the corresponding receiver costcenters.
We have already created a DSO and maintained this with the sender and receiver costcenter. We use this lookup table later in the execute method of our created planning function type to take the sender costcenter and distribute this to the corresponding receiver costcenters.
I've already implemented an IP planning function based on planning function type for this process.
At the end when I debug the method I see that this works fine. I give you an example:
I have in my lookup table the following record:
sender costcenter receiver costcenter distribution percent
4711 4712 75
4711 4713 25
Based on those records in the lookup table I've to distribute the cost of sender costcenter to the receiver costcenters.
Just imagine I would get this record from c_th_data:
sender costcenter costelement value
4711 3000111 100
I have to have the following result after running the exit planning function:
costcenter costelement value
4711 3000111 100 -> without changing
4711 8000111 -100
4712 8000111 75
4713 8000111 25
When I debug the exit function I see in the execute method that c_th_data will be filled correctly. I see exactly the records that I want to see.
But once the function is finished I don't see this result. I also checked the conversation
Changing Char Value in IP C_TH_DATA
but I can't understand what happens after my coding yet.
Can anyone help me or give me an advice what could be the problem here?
Thank you all in advance for your support.
Kind regards,
AliHi Ali,
The planning function generates the records in delta mode. I am explaining the concept taking your example only:
Records in cube before running PF:
sender costcenter receiver costcenter distribution percent
4711 4712 75
4711 4713 25
sender costcenter costelement value
4711 3000111 100
4712 3000111 100
4713 3000111 100
The records that you need to generate from code(Previous ones need to be changed):
sender costcenter costelement value
4711 3000111 000
4712 3000111 175
4713 3000111 125
**Please note that you dont need to generate any corrections(delta records), you only need to generate the final values in the records and the PF will generate the delta's on its own. Also in this case you should see 3 Records Read, 0 Deleted, 3 Changed.
Please let me know if you need any more clarification,
Thanks,
Puneet -
CLOB to VARCHAR2 conversion and limit of 8192 chars
Hello, I have the folowing code which works on Oracle 10g SE but does not on XE:
DECLARE
d1 varchar2(32000);
BEGIN
d1 := to_char(substr(MY_FUNC_RETURNING_CLOB, 1, 8192));
END;This ends with "ORA-06502: PL/SQL: numeric or value error." Only CLOBs shorter then 8192 works... (well the SUBSTR function is there just because of testing the maximum length of CLOB that does not fail).
Is this my mistake, a bug in XE or some XE limitation (using UTF-8 version of XE)?
Thanks for any hints!Well, it seem that conversion between CLOB and VARCHAR is done within UCS4 or something... Function MY_FUNC_RETURNING_CLOB returns SQL query (for subsequent EXECUTE IMMEDIATE command) and contains only ASCII characters and therefore should be 1char=1byte in UTF-8? I did a following workaround, which works pretty well for me (CLOBs are about 16000 chars long in my case)
DECLARE
d1 varchar2(32000);
c1 varchar2(32000);
c2 varchar2(32000);
c3 varchar2(32000);
c4 varchar2(32000);
BEGIN
c1 :=to_char(substr(MY_FUNC_RETURNING_CLOB, 0*8192, 8191));
c2 :=to_char(substr(MY_FUNC_RETURNING_CLOB, 1*8192, 8191));
c3 :=to_char(substr(MY_FUNC_RETURNING_CLOB, 2*8192, 8191));
c4 :=to_char(substr(MY_FUNC_RETURNING_CLOB, 3*8192, 8191));
d1 := c1 || c2 || c3 || c4;
END;
Maybe you are looking for
-
Hi all, Have recently setup a server with Windows Server 2008 Standard Edition (non R2). The Web server and Application server roles have been added. Installed Java RE 1.5 After installing Jrun4 + Updater 7 on the system and setup a new Jrun server w
-
Conso_type on groups dimension
Hi experts, Do anybody knows what is the use of the porpety "Conso_type" of the Groups dimension for? If i execute the "Legal Consolidation" package we get next error: RUN_LOGIC:Elimination not found for consolidation type * in Group dimension. Faile
-
Hi gang, I have a MacPro with Apple's RAID card. I have 4 x 1TB drives installed, one as the boot disk and the other 3 in a RAID 5 array. I was thinking about swapping the 3 RAID drives for 1.5 TB drives. Can the Apple RAID card handle this? I am ima
-
Confused, need help regarding a MPG audio file
I have some video and the sound is not that good however I used my Marantz recorder using a CF card. The quality if very good on the card. The file is 1003.MPG around 250 MB. I have imported my video into Imovie and I thought I could just drag or imp
-
How to transfer movies stored on computer to ipad
can i transfer movies that are stored in my desktop to i pad2.....is there any way to do this...................