cancel
Showing results for 
Search instead for 
Did you mean: 

How to solve [2620] executor: plan operation failed;ceVerticalUnionPop::executePop:?

alexander_stettler
Participant
10,673

Hello,

I'm trying to implement an AMDP field routine but when I execute the DTP the DTP is running into an error: column store error: search table error: [2620] executor: plan operation failed;ceVerticalUnionPop::executePop: the input ... ADSO DPP02_A02 000 E RS_EXCEPTION column store error: search table error: [2620] executor: plan operation failed;ceVerticalUnionPop::executePop: the input ... 20.180.307.103.703,8218510

Does anyone of you knows what this message is saying?

The corresponding AMDP looks like the following:

  types:
    begin of TN_S_IN1,
       DF_PLNQUNT type /BI0/OIDF_PLNQUNT, " InfoObject: 0DF_PLNQUNT
       MATERIAL type /BI0/OIMATERIAL, " InfoObject: 0MATERIAL
       PLANT type /BI0/OIPLANT, " InfoObject: 0PLANT
       RECORD type C length 56,
       SQL__PROCEDURE__SOURCE__RECORD type C length 56,
    end of TN_S_IN1 .
  ...
  types:
    begin of TN_S_OUT1,
       /BIC/XPP02PVAL type /BIC/OIXPP02PVAL, " InfoObject: XPP02PVAL
       RECORD type C length 56,
       SQL__PROCEDURE__SOURCE__RECORD type C length 56,
    end of TN_S_OUT1 .
METHOD PROCEDURE BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY using /BIC/AWMM01W0100 /BI0/PPLANT.
    outtab = SELECT COALESCE ( mbew."PRICE_STD" / mbew."PRICE_UNIT" * inTab."DF_PLNQUNT", 0) as "/BIC/XPP02PVAL",
                    inTab.RECORD,
                    inTab.SQL__PROCEDURE__SOURCE__RECORD
               FROM :intab as inTab
               left outer join ( SELECT mb."MATERIAL",
                                        pl."PLANT",
                                        mb."PRICE_STD",
                                        mb."PRICE_UNIT",
                                        mb."CURRENCY",
                                        MAX(mb."FISCPER")
                                  FROM "/BIC/AWMM01W0100" as mb
                                  inner join "/BI0/PPLANT" as pl on pl."COMP_CODE" = mb."COMP_CODE"
                                  where pl."OBJVERS"  = 'A'
                                  group by mb.MATERIAL, pl."PLANT", mb.PRICE_STD, mb.PRICE_UNIT, mb.CURRENCY
                                ) as mbew on inTab."MATERIAL"   = mbew."MATERIAL"
                                         and inTab."PLANT"      = mbew."PLANT";

  errortab = select '' as "ERROR_TEXT" ,
                    '' as "SQL__PROCEDURE__SOURCE__RECORD"
             from dummy
             where dummy <> 'X';
ENDMETHOD.

If I set a break point and execute the AMDP, everything is looking fine => outtab is showing some data in the table preview within the debuger.


Accepted Solutions (1)

Accepted Solutions (1)

alexander_stettler
Participant

I've found a solution for the issue:

Transaction SM21 was showing the following log entry:

Datenbankfehler 2048 beim EXE aufgetreten
column store error: search table error: [2620] executor: plan operation failed;ceVerticalUnionPop::executePop: the input column 0BASE_UOM has a length (1972) shorter than expected (4663).

That indicates that the issue occur after the AMDP. But the root cause was indeed the result of the AMDP. After checking the entries on INTAB (117 entries) and OUTTAB (273 entries) it was clear that the issue is related to a SELECT statement that selects duplicate entries...
After adapting the SQL Script, the issue don't occur.

Nevertheless the error message is a little bit confusing! 😉

Former Member
0 Kudos

What was the change in the code you applied? Do INTAB and OUTTAB need to have the same amount of entries?

I have a similar issue (OUTTAB has less entries than INTAB), but the code was working fine for several months. Must have been a SAP note which changed the behaviour.

Answers (2)

Answers (2)

wzeller1
Explorer
0 Kudos

We had the same error message "[2620] executor: plan operation failed;ceVerticalUnionPop::executePop" and solved it. The complete error message (found in SM21, because DTP process monitor trimed the error message) was"[...] the input columns 0CURRENCY and ZCUS_TYPE have different sizes: 1191106 and 1191103". With that and the "VerticalUnionPop" we found the cause of error. We had a very simple Left Join in field routine to lookup masterdata. We know the recommendation from Torsten Kessler

"9.1.7.3 Recommendations regarding AMDP field routines

We do not recommend to use field routine to implement complex logic like reading additional data or implement complex business logic." source

but we didn't thought, that our simple Left Join falls into the "complex logic" category. The curious thing is, when the error occurs we retry the DTP some minutes later and we get no error. We can't explain that behavior.

Final solution and recommendation for us (and maybe others): avoid any Join in AMDP field routine and use standard transfer rules (for instance "Masterdata lookup")

0 Kudos

Fixed this one as well. thanks to your help btw.

My problem was due to a bad configured join condition.

LEFT OUTER JOIN "/BIC/PABRACKET" as d

ON d."/BIC/ASIILOB2" = i."/BIC/ASIILOB1"

AND d."/BIC/AVERZBVAN" <= i."/BIC/AVERZBTOT"

AND d."/BIC/AVERZBTOT" > i."/BIC/AVERZBTOT"

The last ">" used to be a ">=" that created more (double) entries than allowed.