cancel
Showing results for 
Search instead for 
Did you mean: 

BPS Fox error Constant IF_T100_DYN_MSG~MSGV1 does not fit RSPLFOX265

SAPWorkerL
Participant
0 Kudos

We are in the process of upgrading to BW 7.5 and still have the ancient BPS for planning (no, not IP, really BPS). We are getting an ABAP error in a planning function that contains FOX code. However, the code we have written does not call any messages. The message class was changed between 7.5 and 7.4, but how do we fix an ABAP dump that's not anywhere we can see in our code? It does not get the dump in all functions we have, just one in particular so far. Any thoughts are appreciated!

Details of the error message:

Syntax error: Constant IF_T100_DYN_MSG~MSGV1 does not fit

Message no. RSPLFOX265

Diagnosis

The constant is too large or too small. Constants which contain only numbers must fit into a four-byte integer.

Procedure

If you need larger constants, write them in decimal point notation.

Accepted Solutions (0)

Answers (3)

Answers (3)

SAPWorkerL
Participant
0 Kudos

I figured it out - ATRCALCALYR was declared type i instead of calendar year. That must have been ok in BW 7.4, but not 7.5. Thank you for your help!

SAPWorkerL
Participant
0 Kudos

Thank you very much! I think our solution is too old to register in RSPLAN, but I used your debug approach. It looks like the error comes on this statement - IF ATRVALCALYR = '#'. - at position 18. Do you see what is wrong with it? It doesn't look like a reserved word to me.

0 Kudos

Hi Liza,

problem seems to be in UPF_FORMULA_CHECK used in BPS0 to check FOX code, i.e. the wrong contents of a message variable is displayed:

TRY.
CREATE OBJECT l_r_parser.
CALL METHOD l_r_parser->parse_formula_tab
EXPORTING
i_t_forml = lt_forml_long
i_t_fcat = lt_fcat
i_text_funcname = 'UPF_FORMULA_KEYS_CHECK'
i_var_funcname = 'UPF_FORMULA_VARIABLES_CHECK'
IMPORTING
e_t_cline = lt_cline
CHANGING
c_t_forml = et_forml.
CATCH cx_rsplfc_syntax_error INTO l_x_syntax_error.
e_error_line = l_x_syntax_error->error_line.
e_error_pos = l_x_syntax_error->error_pos.

MESSAGE ID l_x_syntax_error->IF_T100_MESSAGE~T100KEY-msgid TYPE 'E' NUMBER l_x_syntax_error->IF_T100_MESSAGE~T100KEY-MSGNO "H2398836
WITH l_x_syntax_error->IF_T100_MESSAGE~T100KEY-attr1 l_x_syntax_error->IF_T100_MESSAGE~T100KEY-attr2
l_x_syntax_error->IF_T100_MESSAGE~T100KEY-attr3 l_x_syntax_error->IF_T100_MESSAGE~T100KEY-attr4

RAISING syntax_error.
ENDTRY.

and there IF_T100_MESSAGE~T100KEY-ATTR1 is used instead of IF_T100_DYN_MSG~MSGV1, etc.

This is why the string IF_T100_DYN_MSG~MSGV1 is used as the message variable in the output instead of the contents of MSGV1.

You can set a break-point in the above exception handling to find the real constant value in l_x_syntax_error->IF_T100_DYN_MSG~MSGV1 that seems to be wrong, also e_error_line, e_error_pos contain the position in the FOX code. This might be a first step to find the problem.

I see that you opened a ticket already, I send this information also to the colleagues.

Remark:

In transaction RSPLAN one will see the correct value in the error message.

Best Regards,

Gregor