‎2010 Jun 08 9:51 AM
Hi All,
I've a Z program which is giving short dump.
this program is being used from past 5 years. no errors upto now.
But now the program is givin short dump error.
Plz find the error analysis below.
-
Error analysis
-
An arithmetic operation in the current program "ZXXXXXX" attempts
to process a field of type P that contains an invalid
BCD format.
Possible reasons:
1. If the field is part of a field string and its current contents are
hex 20: the field string was deleted with MOVE SPACE ... instead of
CLEAR.
2. The VARYING parameter was incorrectly placed within a DO loop,
e.g. because the TIMES parameter was too large.
Similar for WHILE ... VARY.
3. A FIELD-SYMBOL was incorrectly assigned.
There is no such location in my Z program where the dump analysis says.
What could be the probable cause for the error.
Thank you.
Regards,
Chinna
Moderator message: please use more descriptive subject lines from now on.
Edited by: Thomas Zloch on Jun 8, 2010 12:50 PM
‎2010 Jun 08 11:18 AM
Hi Chinna
This is basically due to the number format. Go to SU3 Go to defaults Tab and check Field * Decimal Notation*
In your program that packed number would have wrongly caught data logged in other format.
E.g: Suppose you are using 123,00.00 fromat and the program fetched 123.00,00 fromat then it would give a dump.
Solution is make the data that field consistent in one fromat.
Check this Table USR01 and its field DCPFM.
USR01 User master record (runtime data)
DCPFM Decimal notation
‎2010 Jun 08 11:18 AM
Hi Chinna
This is basically due to the number format. Go to SU3 Go to defaults Tab and check Field * Decimal Notation*
In your program that packed number would have wrongly caught data logged in other format.
E.g: Suppose you are using 123,00.00 fromat and the program fetched 123.00,00 fromat then it would give a dump.
Solution is make the data that field consistent in one fromat.
Check this Table USR01 and its field DCPFM.
USR01 User master record (runtime data)
DCPFM Decimal notation
‎2010 Jun 10 11:59 AM
Hi Mukesh,
thank you for your help full answer.
you said the problem is with some decimal notation.
but I am not the one who execute the program in PRODUCTION.
any one can execute the program and any time.
How can this be solved then.
Regards,
Chinna
‎2010 Jun 10 1:48 PM
Hi Mukesh,
I guess your right.
How to change the field DCPFM in USR01 table.
Regards,
Chinna
Edited by: Chinna guntur on Jun 10, 2010 6:19 PM
‎2010 Jun 10 4:53 PM
Hi Mukesh,
I changed the filed using SU01.
But it is of no use.
the program is still giving DUMP.
I've tested with different user names also.but no use.
if i test the program in QUALITY & DEVELOPMENT systems it is ok. but PRODUCTION only it is giving DUMP.
i am giving the the example code where it showing is error ARROW.
LOOP AT ITAB1.
..............
...............
LOOP AT ITAB2.
...................
...................
-
> X = X + Y.
ENDLOOP.
ENDLOOP.
Regards,
Chinna
‎2010 Jun 10 5:00 PM
What is the title of the short dump? Does it happen right away or after some time of processing?
How is Y filled? X = X + Y might well lead to a field overflow in systems with growing data (like production).
If not too long, show the entire code snippet inside the loops (using tags please).
Thomas
‎2010 Jun 11 12:51 PM
Hi Thomas,
title of the short Dump is "Packed field contains incorrect BCD format".
here i am giving the exact code for you.
003060 SORT INT1 BY 1-SUBS 1-DK 1-CUST 1-SUPP.
003070 DEBTOT = 0.
003080 ASSTOT = 0.
003090 GLTOT = 0.
003100 TOTTOT = 0.
003110 " grandtot = 0.
003120 LOOP AT INT1.
003130 SELECT SINGLE * FROM KNA1
003140 WHERE KUNNR = INT1-1-CUST.
003150 WRITE: / INT1-1-SUPP, ' ', INT1-1-CUST, ' ', INT1-1-SUBS,
003160 KNA1-NAME1(25),
003170 INT1-1-NETAR, INT1-1-NETAP.
003180 LOOP AT INT2.
003190 IF INT1-1-CUST = INT2-2-CUST AND INT1-1-SUPP = INT2-2-SUPP.
003200 WRITE: /116 INT2-2-GLACC.
003210 WRITE: 123 INT2-2-NETGL.
003220 GLTOT = GLTOT + INT2-2-NETGL.
-
> DKGLTOT = DKGLTOT + INT2-2-NETGL.
003240 ENDIF.
003250 ENDLOOP.
003260 WRITE: 149 INT1-1-TOTBAL.
003270 DEBTOT = DEBTOT + INT1-1-NETAP.
003280 ASSTOT = ASSTOT + INT1-1-NETAR.
003290 TOTTOT = TOTTOT + INT1-1-TOTBAL.
003300 DKDEBTOT = DKDEBTOT + INT1-1-NETAP.
003310 DKASSTOT = DKASSTOT + INT1-1-NETAR.
003320 DKTOTTOT = DKTOTTOT + INT1-1-TOTBAL.
003330 ENDLOOP.
And this code is being working fine from past 9 years.
this is the first time it is giving DUMP.
Regards,
Chinna.
‎2010 Jun 11 3:32 PM
Hi
Problem is in the value of Y.
Check the value of Y.
To test it... Place a debugger at this statement. When you are at that statement change the value of Y to 0.
Then test it.. If it runs fine then we can change the format of the Y or assign Y to some temporary variable and process it.
‎2010 Jun 15 9:48 AM
Hi Mukesh,
here both X & Y values are with same data type of 15 characters with 2 decimal points.
Regards,
Chinna...
‎2010 Jun 15 10:34 AM
Hi
I guess you are retrieving values from a database table, the problem might be because of the values inside the table, this can happen, so check the value of the particular entry where you are getting dump and see. if possible provide the values of DKGLTOT and INT2-2-NETGL.
Thanks and Regards
Chaitanya.A
‎2010 Jun 16 8:56 AM
Hi Chaitanya,
Here I am giving the exact code.
Plz check once.
Data:
GLTOT LIKE GLT0-HSLVT,
TOTTOT LIKE GLT0-HSLVT,
DKDEBTOT LIKE KNC1-UMSAV,
DKGLTOT LIKE GLT0-HSLVT,
DKTOTTOT LIKE GLT0-HSLVT,
DKASSTOT LIKE GLT0-HSLVT.
DATA: BEGIN OF INT1 OCCURS 0,
1-CLIENT LIKE T001-MANDT,
1-CCODE LIKE T001-BUKRS,
1-SUBS LIKE KNA1-KONZS,
1-DK(1) TYPE C,
1-CUST LIKE KNA1-KUNNR,
1-SUPP LIKE LFA1-LIFNR,
1-ADJAP LIKE SKA1-SAKNR,
1-ADJAR LIKE SKA1-SAKNR,
1-NETASS LIKE SKA1-SAKNR,
1-NETDEB LIKE SKA1-SAKNR,
1-NETAP LIKE LFC1-UMSAV,
1-NETAR LIKE KNC1-UMSAV,
1-NETGL LIKE GLT0-HSLVT,
1-TOTBAL LIKE GLT0-HSLVT,
END OF INT1.
DATA: BEGIN OF INT2 OCCURS 0,
2-CLIENT LIKE T001-MANDT,
2-CCODE LIKE T001-BUKRS,
2-GLACC LIKE SKA1-SAKNR,
2-ADJGL LIKE SKA1-SAKNR,
2-CUST LIKE KNA1-KUNNR,
2-SUPP LIKE LFA1-LIFNR,
2-NETGL LIKE GLT0-HSLVT,
END OF INT2.
START-OF-SELECTION.
IF B-CHECK <> ''.
PERFORM MASTERDATA-CHECK.
EXIT.
ENDIF.
LOOP AT INT1.
SELECT SINGLE * FROM KNA1
WHERE KUNNR = INT1-1-CUST.
WRITE: / INT1-1-SUPP, ' ', INT1-1-CUST, ' ', INT1-1-SUBS,
KNA1-NAME1(25),
INT1-1-NETAR, INT1-1-NETAP.
LOOP AT INT2.
IF INT1-1-CUST = INT2-2-CUST AND INT1-1-SUPP = INT2-2-SUPP.
WRITE: /116 INT2-2-GLACC.
WRITE: 123 INT2-2-NETGL.
GLTOT = GLTOT + INT2-2-NETGL.
DKGLTOT = DKGLTOT + INT2-2-NETGL. <<----
"DUMP PLACE"
ENDIF.
ENDLOOP.
WRITE: 149 INT1-1-TOTBAL.
DEBTOT = DEBTOT + INT1-1-NETAP.
ASSTOT = ASSTOT + INT1-1-NETAR.
TOTTOT = TOTTOT + INT1-1-TOTBAL.
DKDEBTOT = DKDEBTOT + INT1-1-NETAP.
DKASSTOT = DKASSTOT + INT1-1-NETAR.
DKTOTTOT = DKTOTTOT + INT1-1-TOTBAL.
ENDLOOP.
FORM MASTERDATA-CHECK.
SELECT * FROM ZFBGD1.
DELETE ZFBGD1.
ENDSELECT.
COMMIT WORK.
ENDFORM.
If i am putting a break point at LOOP AT INT1 statement, and if i execute the program, the program is not taking me to the DEBUGGER and the place where i kept break point. the debugger is not even opened.
its directly giving DUMP.
please help me..
Regards,
Chinna..
Edited by: Chinna guntur on Jun 17, 2010 2:18 PM
‎2010 Jun 21 2:09 PM
‎2010 Jun 21 2:29 PM
>
> Can enyone has any solution for this??
Probably not. You haven't shown how int2 is populated.
Please see [Asking Good Questions in the Forums to get Good Answers|/people/rob.burbank/blog/2010/05/12/asking-good-questions-in-the-forums-to-get-good-answers] before posting again.
Rob
‎2010 Jun 08 11:22 AM
Hi Chinna,
Is the dump occuring in the same system as previously using, is this been upgraded .
Thanks
Vinod
‎2010 Jun 08 11:55 AM
I hardly guess you upgraded from a non unicode system to a unicode system, am i right?
‎2010 Jun 10 11:55 AM
We've not upgraded the system. we are still using 4.6C only....
‎2010 Jun 08 11:56 AM
Chinna,
as this is the z report, you can debug one time complenetly till u get dump, in second attempt u will get to know the cause.
--
Reddy
‎2010 Jun 08 12:35 PM
Didn't the dump printout point to the line where the problem occurred? SAP doesn't make these errors up randomly, the problem exists!
‎2010 Jun 10 11:54 AM
Hi The Dump is showing a place BUT there is no such statements like DO
‎2010 Jun 10 5:12 PM
right at the time when you see the DUMP(after running the code)... click on debugger. it will take you to the debugger and stuck at the line where it has terminated. and see the exacrt values in X and Y
‎2010 Jul 23 12:55 PM
Problem got solved based based on the inputs from mahesh. and i've awarded points too.
thank you all for support.
Regards,
Chinna guntur