on 01-11-2013 7:21 AM
we are getting ABAP dump while generating rules.we are on SP10.
Category ABAP Programming Error | ||||||
Runtime Errors SAPSQL_ARRAY_INSERT_DUPREC | ||||||
| ||||||
ABAP Program CL_GRAC_RULE_ENGINE===========CP | ||||||
Application Component GRC-AC | ||||||
Date and Time 11.01.2013 14:53:27 | ||||||
Short text | ||||||
The ABAP/4 Open SQL array insert results in duplicate database records. | ||||||
What happened? | ||||||
Error in the ABAP Application Program | ||||||
| ||||||
The current ABAP program "CL_GRAC_RULE_ENGINE===========CP" had to be | ||||||
terminated because it has | ||||||
come across a statement that unfortunately cannot be executed. | ||||||
Error analysis | ||||||
An exception occurred that is explained in detail below. | ||||||
The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught | ||||||
in | ||||||
procedure "GENERATE_ACTION_RULES" "(METHOD)", 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: | ||||||
If you use an ABAP/4 Open SQL array insert to insert a record in | ||||||
the database and that record already exists with the same key, | ||||||
this results in a termination. | ||||||
| ||||||
(With an ABAP/4 Open SQL single record insert in the same error | ||||||
situation, processing does not terminate, but SY-SUBRC is set to 4.) | ||||||
Missing RAISING Clause in Interface | ||||||
Program | CL_GRAC_RULE_ENGINE===========CP | |||||
Include | CL_GRAC_RULE_ENGINE===========CM001 | |||||
Row | 1 | |||||
Module type | (METHOD) | |||||
Module Name | GENERATE_ACTION_RULES | |||||
Trigger Location of Exception | ||||||
Program | CL_GRAC_RULE_ENGINE===========CP | |||||
Include | CL_GRAC_RULE_ENGINE===========CM001 | |||||
Row | 846 | |||||
Module type | (METHOD) | |||||
Module Name | GENERATE_ACTION_RULES | |||||
Source Code Extract (Source code has changed) | ||||||
Line | SourceCde | |||||
816 | CLEAR ls_sysrule_psys_key_map. | |||||
817 | READ TABLE lt_sysrule_psys_key_map WITH TABLE KEY syskey = lv_sysrule_psysmap_key | |||||
818 | IF ls_sysrule_psys_key_map IS NOT INITIAL. | |||||
819 | " That means a key was found.. simplet ignore this one.. | |||||
820 | ELSE. | |||||
821 | " key ws not froud.. use this sys to update the sysrule table.. | |||||
822 | ls_sysrule_data-riskid = ls_rg_allrules-riskid. | |||||
823 | ls_sysrule_data-actruleid = ls_rg_allrules-actruleid. | |||||
824 | ls_sysrule_data-active = abap_true. | |||||
825 | ls_sysrule_data-connector = lv_curr_sys. | |||||
826 |
| |||||
827 | INSERT ls_sysrule_data INTO TABLE lt_sysrule_data. | |||||
828 | " put the key into the map as well.. | |||||
829 | ls_sysrule_psys_key_map-syskey = lv_sysrule_psysmap_key. | |||||
830 | ls_sysrule_psys_key_map-seqno = ls_rg_allrules-actruleid. | |||||
831 | INSERT ls_sysrule_psys_key_map INTO TABLE lt_sysrule_psys_key_map. | |||||
832 | ENDIF. | |||||
833 |
| |||||
834 | ENDLOOP. | |||||
835 |
| |||||
836 |
| |||||
837 | ENDIF. " num psys condition. | |||||
838 |
| |||||
839 |
| |||||
840 | ENDLOOP. " Final Rules loop. | |||||
841 |
| |||||
842 | " First clean the Sys Rule Table for this Risk: | |||||
843 | DELETE FROM gracsysrule WHERE riskid = riskid. "#EC * | |||||
844 |
| |||||
845 | " write Sys rules into table: GRACSYSRULE. | |||||
>>>>> | INSERT gracsysrule FROM TABLE lt_sysrule_data. "#EC * | |||||
847 |
| |||||
848 |
| |||||
849 |
| |||||
850 | ELSE. " else the scope is cross system. | |||||
851 |
| |||||
852 | LOOP AT lt_rg_allrules INTO ls_rg_allrules. "#EC CI_NESTED | |||||
853 | CLEAR ls_funact_bean. | |||||
854 | CLEAR lt_funact_array. | |||||
855 | CLEAR ls_funact_map. | |||||
856 | CLEAR lt_funact_map_array. | |||||
857 |
| |||||
858 | IF ls_rg_allrules-numlsys EQ 0. " all psys.. | |||||
859 |
| |||||
860 | LOOP AT ls_rg_allrules-rulerows INTO ls_final_action_rule_row. "#EC CI_NESTED | |||||
861 |
| |||||
862 | IF sy-tabix = 1. | |||||
863 | lv_curr_sys = ls_final_action_rule_row-connector. | |||||
864 | ELSE. | |||||
865 | IF lv_curr_sys <> ls_final_action_rule_row-connector. | |||||
Active Calls/Events | ||||||
| ||||||
Name | ||||||
2 METHOD CL_GRAC_RULE_ENGINE===========CP CL_GRAC_RULE_ENGINE===========CM001 846 | ||||||
CL_GRAC_RULE_ENGINE=>GENERATE_ACTION_RULES | ||||||
1 EVENT GRAC_GENERATE_RULES GRAC_GENERATE_RULES 19 | ||||||
START-OF-SELECTION |
Category ABAP Programming Error | ||||||
Runtime Errors SAPSQL_ARRAY_INSERT_DUPREC | ||||||
| ||||||
ABAP Program CL_GRAC_RULE_ENGINE===========CP | ||||||
Application Component GRC-AC | ||||||
Date and Time 11.01.2013 14:53:27 | ||||||
Short text | ||||||
The ABAP/4 Open SQL array insert results in duplicate database records. | ||||||
What happened? | ||||||
Error in the ABAP Application Program | ||||||
| ||||||
The current ABAP program "CL_GRAC_RULE_ENGINE===========CP" had to be | ||||||
terminated because it has | ||||||
come across a statement that unfortunately cannot be executed. | ||||||
Error analysis | ||||||
An exception occurred that is explained in detail below. | ||||||
The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught | ||||||
in | ||||||
procedure "GENERATE_ACTION_RULES" "(METHOD)", 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: | ||||||
If you use an ABAP/4 Open SQL array insert to insert a record in | ||||||
the database and that record already exists with the same key, | ||||||
this results in a termination. | ||||||
| ||||||
(With an ABAP/4 Open SQL single record insert in the same error | ||||||
situation, processing does not terminate, but SY-SUBRC is set to 4.) | ||||||
Missing RAISING Clause in Interface | ||||||
Program | CL_GRAC_RULE_ENGINE===========CP | |||||
Include | CL_GRAC_RULE_ENGINE===========CM001 | |||||
Row | 1 | |||||
Module type | (METHOD) | |||||
Module Name | GENERATE_ACTION_RULES | |||||
Trigger Location of Exception | ||||||
Program | CL_GRAC_RULE_ENGINE===========CP | |||||
Include | CL_GRAC_RULE_ENGINE===========CM001 | |||||
Row | 846 | |||||
Module type | (METHOD) | |||||
Module Name | GENERATE_ACTION_RULES | |||||
Source Code Extract (Source code has changed) | ||||||
Line | SourceCde | |||||
816 | CLEAR ls_sysrule_psys_key_map. | |||||
817 | READ TABLE lt_sysrule_psys_key_map WITH TABLE KEY syskey = lv_sysrule_psysmap_key | |||||
818 | IF ls_sysrule_psys_key_map IS NOT INITIAL. | |||||
819 | " That means a key was found.. simplet ignore this one.. | |||||
820 | ELSE. | |||||
821 | " key ws not froud.. use this sys to update the sysrule table.. | |||||
822 | ls_sysrule_data-riskid = ls_rg_allrules-riskid. | |||||
823 | ls_sysrule_data-actruleid = ls_rg_allrules-actruleid. | |||||
824 | ls_sysrule_data-active = abap_true. | |||||
825 | ls_sysrule_data-connector = lv_curr_sys. | |||||
826 |
| |||||
827 | INSERT ls_sysrule_data INTO TABLE lt_sysrule_data. | |||||
828 | " put the key into the map as well.. | |||||
829 | ls_sysrule_psys_key_map-syskey = lv_sysrule_psysmap_key. | |||||
830 | ls_sysrule_psys_key_map-seqno = ls_rg_allrules-actruleid. | |||||
831 | INSERT ls_sysrule_psys_key_map INTO TABLE lt_sysrule_psys_key_map. | |||||
832 | ENDIF. | |||||
833 |
| |||||
834 | ENDLOOP. | |||||
835 |
| |||||
836 |
| |||||
837 | ENDIF. " num psys condition. | |||||
838 |
| |||||
839 |
| |||||
840 | ENDLOOP. " Final Rules loop. | |||||
841 |
| |||||
842 | " First clean the Sys Rule Table for this Risk: | |||||
843 | DELETE FROM gracsysrule WHERE riskid = riskid. "#EC * | |||||
844 |
| |||||
845 | " write Sys rules into table: GRACSYSRULE. | |||||
>>>>> | INSERT gracsysrule FROM TABLE lt_sysrule_data. "#EC * | |||||
847 |
| |||||
848 |
| |||||
849 |
| |||||
850 | ELSE. " else the scope is cross system. | |||||
851 |
| |||||
852 | LOOP AT lt_rg_allrules INTO ls_rg_allrules. "#EC CI_NESTED | |||||
853 | CLEAR ls_funact_bean. | |||||
854 | CLEAR lt_funact_array. | |||||
855 | CLEAR ls_funact_map. | |||||
856 | CLEAR lt_funact_map_array. | |||||
857 |
| |||||
858 | IF ls_rg_allrules-numlsys EQ 0. " all psys.. | |||||
859 |
| |||||
860 | LOOP AT ls_rg_allrules-rulerows INTO ls_final_action_rule_row. "#EC CI_NESTED | |||||
861 |
| |||||
862 | IF sy-tabix = 1. | |||||
863 | lv_curr_sys = ls_final_action_rule_row-connector. | |||||
864 | ELSE. | |||||
865 | IF lv_curr_sys <> ls_final_action_rule_row-connector. | |||||
Active Calls/Events | ||||||
| ||||||
Name | ||||||
2 METHOD CL_GRAC_RULE_ENGINE===========CP CL_GRAC_RULE_ENGINE===========CM001 846 | ||||||
CL_GRAC_RULE_ENGINE=>GENERATE_ACTION_RULES | ||||||
1 EVENT GRAC_GENERATE_RULES GRAC_GENERATE_RULES 19 | ||||||
START-OF-SELECTION |
This message was moderated.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.