Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

duplicate records created from loop

i am trying to create a table using the concept of the function which was created in oracle. when i am trying to put a loop, the new table with related data is getting duplicate on the basis of no of lines present in loop.

STK_ITM_LOC_CURR:

LOAD

    ITM_DEP_CODE AS T_ITM_DEP_CODE,

     IM_INV_NO_LOC AS T_IM_INV_NO_LOC,

     LOC_CODE_ITM_LOC AS T_LOC_CODE_ITM_LOC,

     CURR_QTY_ITM_LOC AS T_CURR_QTY_ITM_LOC

Resident ITM_LOC;

let NumRows= NoOfRows('STK_ITM_LOC_CURR');

FOR P=0 TO $(NumRows)-1;

  LET vDep_code = Peek('T_ITM_DEP_CODE',$(P),'STK_ITM_LOC_CURR');

  LET vIm_inv_no = Peek('T_IM_INV_NO_LOC',$(P),'STK_ITM_LOC_CURR');

  LET vCurr_qty = Peek('T_CURR_QTY_ITM_LOC',$(P),'STK_ITM_LOC_CURR');

  LET vLoc = Peek('T_LOC_CODE_ITM_LOC',$(P),'STK_ITM_LOC_CURR');

  IF LEN('$vCurr_qty')<>0 AND $(vCurr_qty)<>0 then

       STK_UOM_TAB:

            LOAD UOM_DEP_CODE AS T_UOM_DEP_CODE,

            IM_INV_NO_UOM AS T_IM_INV_NO_UOM,

            UOM_CODE_ITEM AS T_UOM_CODE_ITEM,

            UOM_UNITS_ITEM AS T_UOM_UNITS_ITEM

            Resident ITEM_UOM

            Where UOM_DEP_CODE='$(vDep_code)'

            AND IM_INV_NO_UOM=$(vIm_inv_no)

            Order BY UOM_UNITS_ITEM desc ;

            let NumRows_1=NoOfRows('STK_UOM_TAB');

            FOR Q=0 TO $(NumRows_1)-1;

                 LET vUom_code = peek('T_UOM_CODE_ITEM',$(Q),'STK_UOM_TAB');

                 LET vUom_units = peek('T_UOM_UNITS_ITEM',$(Q),'STK_UOM_TAB');

                 if len('$(vUom_units)')<>0 then

                      if ($(vCurr_qty)>=$(vUom_units))then

                           let vCal= div($(vCurr_qty),$(vUom_units));

                           let vRemainder= Mod($(vCurr_qty),$(vUom_units));

                           FINAL_TAB:

                                LOAD '$(vDep_code)' as FINAL_DEP,

                                          '$(vIm_inv_no)' AS FINAL_IMINVNO,

                                          '$(vLoc)' AS FINAL_LOC,

                                          '$(vCurr_qty)' AS FINAL_CURR_QTY,

                                          '$(vUom_code)' AS FINAL_UOM,

                                           '$(vCal)' AS SAMPLE;

                      ELSE

                           let vCal='$(vCurr_qty)';

                           FINAL_TAB:

                                LOAD '$(vDep_code)' as FINAL_DEP,

                                '$(vIm_inv_no)' AS FINAL_IMINVNO,

                                '$(vLoc)' AS FINAL_LOC,

                                '$(vCurr_qty)' AS FINAL_CURR_QTY,

                                '$(vUom_code)' AS FINAL_UOM,

                                   '$(vCal)' AS SAMPLE ;

                           EXIT for;

                       ENDIF;

              ENDIF;

              if $(vRemainder)<>0 then

                 let vCurr_qty='$(vRemainder)';

            else

                 EXIT For ;

            ENDIF;

           NEXT Q;

  ENDIF;

NEXT P;

here what happens is after entering Q loop, data in final tab is repeated for no of rows in Q loop.

pls help

0 Replies