cancel
Showing results for 
Search instead for 
Did you mean: 

Planning Functions fails due of data slice (no PE Error Text).

former_member187400
Active Contributor
0 Kudos

Hi All - 

I am working on BW 7.5 SP02,  and AO 2.3.  I have FOX,  and EXIT AMDP planning function,  and data slice. 

If data slice is active,  I encountered an error if I run planning function for both FOX,  and AMDP Exit planning functions. 

Both planning functions run successfully if I deactivate/remove  the data slice in RSPLAN. 

Both planning functions encounter errors if data slice is deactivated in runtime via ABAP Logic. 

The error messages are captured in below & I also captured the ST22 Log in this message. 

a)  LCL_CHECK_COLLECTOR~EXECUTE_CHECK-01-

b)  Screen capture below

Could I kindly please ask your help to advise how to resolve this issue?

fyi,  I have already had a look to both below SAP Notes,  but apparently it can't be implemented to our system. 

2125814 - BW-IP PAK: "merging multi value dicts is not implemented" in index server trace

2069393 - BW-IP (PAK): Error in PAK after saving planning data


Many thanks, 

Daniel

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Hi Daniel,

operations to be executed in HANA (via PAK) are put into a queue and the real execution is triggered on demand. If something failed it is not clear to detect the element in queue that caused the problem. One option to find out something is to follow the instructions you have already posted here in the screen shot, i.e. check the HANA indexserver traces and search for 'ple_'.

Another option is to set some debug parameters: in transaction SU3 set:

RSPLS_HDB_CHECK = HDB_IMMEDIATE

and

RSPLS_HDB_PE_TRACE = Y


The above parameters lead to sequential execution of the steps in the queue and fill some log information.


Then run the planning function using RSPLAN, you might stop in the debugger here: class CL_RSR_PE_ADAPTER, method LOG_CALL:

...

if p_s_trex_rc-return_code <> 0 or p_s_trex_rc-subrc <> 0.

       check cl_rsr_pe_adapter=>sp_unit_test_mode = abap_false.

       " An error occured in function module TREX_EXT_PE_...

       " You may want to take a look at:

       "   the current PE-Session      :  l_s_log-pe_session

       "   the name of the PE-operation:  l_s_log-method

       "   the PE error message        :  l_s_log-text

       "   the callstack               :  l_t_callstack

       break-point.                                         "#EC NOBREAK

     endif.

...

Check the contents of the variable l_s_log-text and l_t_callstack. The latter contains the checks performed by the system.

Regards,

Gregor

former_member187400
Active Contributor
0 Kudos

Gregor Dieckmann wrote:

Hi Daniel,

operations to be executed in HANA (via PAK) are put into a queue and the real execution is triggered on demand. If something failed it is not clear to detect the element in queue that caused the problem. One option to find out something is to follow the instructions you have already posted here in the screen shot, i.e. check the HANA indexserver traces and search for 'ple_'.

Another option is to set some debug parameters: in transaction SU3 set:

RSPLS_HDB_CHECK = HDB_IMMEDIATE

and

RSPLS_HDB_PE_TRACE = Y


The above parameters lead to sequential execution of the steps in the queue and fill some log information.


Then run the planning function using RSPLAN, you might stop in the debugger here: class CL_RSR_PE_ADAPTER, method LOG_CALL:

...

if p_s_trex_rc-return_code <> 0 or p_s_trex_rc-subrc <> 0.

       check cl_rsr_pe_adapter=>sp_unit_test_mode = abap_false.

       " An error occured in function module TREX_EXT_PE_...

       " You may want to take a look at:

       "   the current PE-Session      :  l_s_log-pe_session

       "   the name of the PE-operation:  l_s_log-method

       "   the PE error message        :  l_s_log-text

       "   the callstack               :  l_t_callstack

       break-point.                                         "#EC NOBREAK

     endif.

...

Check the contents of the variable l_s_log-text and l_t_callstack. The latter contains the checks performed by the system.

Regards,

Gregor

Hello Gregor - Many thanks for your feedback. I will revert back to you.

Cheers,

Daniel.

former_member187400
Active Contributor
0 Kudos

Hello Gregor -

I debugged class CL_RSR_PE_ADAPTER, method LOG_CALL.

I found these below

a) I can find the Sequences what Methods have been executed,

b) L_S_LOG-TEXT = EXECUTE_CHECK, when it reached the external break-point.

Could I kindly please ask your advice what it means?

Does it mean that it has an issue when it run EXECUTE_CHECK method?

Kindly please ask your help, or pointer on this issue.

and appreciate it much,

Many thanks,

Daniel

0 Kudos

Hi Daniel,

what is the contents of l_t_callstack? It may happen that you cannot get more information about the issue from the ABAP layer. As mentioned above you should in addition check the HANA indexserver traces and search for 'ple_'. right after you stop in the debugger.

Regards,

Gregor

former_member187400
Active Contributor
0 Kudos

Hi Gregor -

Thanks a lot for this one.

I query to this table.

SELECT * FROM m_tracefile_contents

WHERE FILE_NAME = 'indexserver_303.195.trc';

I downloaded, and search PLE_*

I can find this error message:

}[56/-1] 2016-06-15 03:47:31.727115 e pleRtCustPop     ple_sqlscript_cppop.cpp(00569) : PleSqlscriptPop: Ptime Error ( 305 ) while executing \"CALL \"SAPABAP1\".\"ZCL_RSPLS_DS_ABAP_002C=>HANA_DS\"( \"SAPABAP1\".\"_SYS_CE_cv025_sqlscript_MappingNode_popid_514_5755ED4C5C3DAEDDE10000000AD60C1C_1194\", \"E_VIEW\" => ? )\": single-row query returns more than one row:  [305] \"SAPABAP1\".\"ZCL_RSPLS_DS_ABAP_002C=>HANA_DS\": line 13 col 5 (at pos 339): [305] (range 3) single-row query returns more than one row exception: single-row query returns more than one row\n[119124]{320515}[56/-1] 2016-06-15 03:47:31.728243 e Executor         PlanExecutor.cpp(00858) : plan plan7419209@sapwwp:30003 failed with rc 34051

E_VIEW\" => ? )\": single-row query returns more than one row:  [

This E_VIEW table is filled up in our data slice.

My understanding is from this error, we cannot have duplicate data, isn't ?

Is my understanding correct?

I attached the my SQL Script below, and I suspect it's due of UNION ALL.

Do you know if SQL has a command to make distinct like ABAP : DELETE ADJACENT ... COMPARING... ??

Kindly please ask your feedback,

Many thanks,

Daniel

Appendix:

  itab_1 =

        SELECT t1."/BIC/YXPBPEID" AS "/BIC/YXPBPEID",

               t1."/BIC/YXPEVNPPM" AS "/BIC/YXPEVNPPM",

               t1."/BIC/YXBPEACCT" AS "/BIC/YXBPEACCT",

               t1."/BIC/YXCHRTACC" AS "/BIC/YXCHRTACC",

               t1."/BIC/YXPVERS" AS "/BIC/YXPVERS",

               t1."CALQUART1" AS "CALQUART1",

               t1."FISCPER3" AS "FISCPER3",

               t1."FISCVARNT" AS "FISCVARNT",

               t1."FISCYEAR" AS "FISCYEAR",

               t1."/BIC/YXINPWRB" AS "/BIC/YXINPWRB"

          FROM :I_VIEW t1

          INNER JOIN "ZCL_RSPLS_DS_ABAP_002C=>/BIC/AYXPPMD6200#covw" t2

          ON t1."/BIC/YXPEVNPPM"  = t2."/BIC/YXPEVNPPM" AND

             t1."/BIC/YXPVERS" = t2."/BIC/YXPVERS" AND

             t1."/BIC/YXINPWRB" = t2."/BIC/YXINPWRB"

          WHERE ( t1."FISCYEAR" = :LV_BASEYR AND t1."FISCPER3" > t2."/BIC/YXPMCNT" ) OR

                ( t1."FISCYEAR" = ( :LV_BASEYR + 1 ) AND ( "FISCPER3" + 1 ) > t2."/BIC/YXPMCNT" ) ;

     itab_2 =

        SELECT t1."/BIC/YXPBPEID" AS "/BIC/YXPBPEID",

               t1."/BIC/YXPEVNPPM" AS "/BIC/YXPEVNPPM",

               t1."/BIC/YXBPEACCT" AS "/BIC/YXBPEACCT",

               t1."/BIC/YXCHRTACC" AS "/BIC/YXCHRTACC",

               t1."/BIC/YXPVERS" AS "/BIC/YXPVERS",

               t1."CALQUART1" AS "CALQUART1",

               t1."FISCPER3" AS "FISCPER3",

               t1."FISCVARNT" AS "FISCVARNT",

               t1."FISCYEAR" AS "FISCYEAR",

               t1."/BIC/YXINPWRB" AS "/BIC/YXINPWRB"

          FROM :I_VIEW t1

          INNER JOIN "ZCL_RSPLS_DS_ABAP_002C=>/BIC/AYXPPMD6200#covw" t2

          ON t1."/BIC/YXPEVNPPM"  = t2."/BIC/YXPEVNPPM" AND

             t1."/BIC/YXPVERS" = t2."/BIC/YXPVERS" AND

             t1."/BIC/YXINPWRB" = t2."/BIC/YXINPWRB"

          WHERE ( t1."FISCYEAR" = :LV_BASEYR AND t1."FISCPER3" > t2."/BIC/YXPQCNT" ) OR

                ( t1."FISCYEAR" = ( :LV_BASEYR + 1 ) AND ( "FISCPER3" + 1 ) > t2."/BIC/YXPQCNT" ) ;

     itab_3 =

        SELECT t1."/BIC/YXPBPEID" AS "/BIC/YXPBPEID",

               t1."/BIC/YXPEVNPPM" AS "/BIC/YXPEVNPPM",

               t1."/BIC/YXBPEACCT" AS "/BIC/YXBPEACCT",

               t1."/BIC/YXCHRTACC" AS "/BIC/YXCHRTACC",

               t1."/BIC/YXPVERS" AS "/BIC/YXPVERS",

               t1."CALQUART1" AS "CALQUART1",

               t1."FISCPER3" AS "FISCPER3",

               t1."FISCVARNT" AS "FISCVARNT",

               t1."FISCYEAR" AS "FISCYEAR",

               t1."/BIC/YXINPWRB" AS "/BIC/YXINPWRB"

          FROM :I_VIEW t1

          INNER JOIN "ZCL_RSPLS_DS_ABAP_002C=>/BIC/AYXPPMD6200#covw" t2

          ON t1."/BIC/YXPEVNPPM"  = t2."/BIC/YXPEVNPPM" AND

             t1."/BIC/YXPVERS" = t2."/BIC/YXPVERS" AND

             t1."/BIC/YXINPWRB" = t2."/BIC/YXINPWRB"

          WHERE ( t1."FISCYEAR" > ( :LV_BASEYR + 2 + t2."/BIC/YXPYCNT" ) ) ;

    e_view =

      select * from :ITAB_1

      UNION ALL

      select * from :ITAB_2

      UNION ALL

      select * from :ITAB_3;

0 Kudos

Hi Daniel,

one option is to make your ITAB_1 disjoint by construction. If this is not easy or possible try to use UNION DISTINCT instead of UNION ALL.

Regards,

Gregor

former_member187400
Active Contributor
0 Kudos

Gregor Dieckmann wrote:

Hi Daniel,

one option is to make your ITAB_1 disjoint by construction. If this is not easy or possible try to use UNION DISTINCT instead of UNION ALL.

Regards,

Gregor

Many thanks Gregor. I will try, and revert back to you.

Cheers,

Daniel

former_member187400
Active Contributor
0 Kudos

Hello Gregor -

I think my suspect is wrong.

The culprit is this SQL

   SELECT "/BIC/YXPBASEYR" AS "YXPBASEYR" INTO lv_baseyr

     FROM "/BIC/PYXPEVNPPM"

     WHERE "/BIC/YXPEVNPPM" IN ( SELECT "/BIC/YXPEVNPPM" FROM :i_view );

Apparently from the SELECT Query, it comes back with more than 1 record.

I have used keyword TOP 1, but it's not supported .

Do you have any thought what SQL Query Command can only return 1 record?

Many thanks,

Daniel

0 Kudos

Hi Daniel,

check the HANA SQL reference; I think SELECT ... INTO supports a <limit> you can set to 1.

Regards,

Gregor

former_member187400
Active Contributor
0 Kudos

Hi Gregor -

Many thanks. I would test and revert back to you.

Many thanks,

former_member187400
Active Contributor
0 Kudos

You're awesome, Gregor.

Many thanks,

Answers (0)