Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

incorrect values are obtained

Former Member
0 Kudos

hi experts,

               i created a select options in selection screen,when i give matnr1 in select option i am getting  60 records in alv and for matnr 2 40 records in alv,but when i give both matnr1 and matnr2 in multiple selection in select options, i shud get 100 records but i am getting 120 records,can anyone help for me.

thanks in advance,

vinodh.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Please do like this,

LOOP AT P_MATNR.
  MOVE P_MATNR+3(18)-LOW TO IT_TEMP-ZRMAT.


  LOOP AT P_WERKS.
    MOVE P_WERKS+3(4)-LOW TO IT_TEMP-WERKS.
  ENDLOOP.


  APPEND IT_TEMP.
ENDLOOP.

Let me know if this solves your problem.

Regards,

Riju Thomas.

12 REPLIES 12

rosenberg_eitan
Active Contributor
0 Kudos

Hello ,

Please post you code:

The SELECT-OPTIONS and the SQL statments.

Regards.

0 Kudos

hi,

  this is my code,

SELECTION-SCREEN: BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

  SELECT-OPTIONS: P_MATNR FOR MARA-MATNR OBLIGATORY.

  SELECT-OPTIONS: P_WERKS FOR ZPP_PLAN_MATYP-WERKS.

  PARAMETERS: NILTIME TYPE C AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK B01.

LOOP at P_MATNR.

       move P_MATNR+3(18) to IT_temp-zrmat.

       LOOP AT P_WERKS.

         move P_WERKS+3(4) to it_temp-werks.

       ENDLOOP.

       APPEND IT_TEMP.

        endloop.

LOOP AT IT_TEMP INTO WA_TEMP.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

    EXPORTING

      INPUT         = wa_temp-MATL

   IMPORTING

     OUTPUT        = wa_temp-MATL

            .

IF wa_temp-matl IS NOT INITIAL.

    SELECT MATNR

           PLNNR

           PLNAL

           DATUV

           AENNR

           MATNR FROM MAPL INTO TABLE IT_MAPL

                            WHERE WERKS = wa_temp-plant

                              AND MATNR = wa_temp-MATL

                              AND LOEKZ = SPACE

                              AND DATUV < SY-DATUM

                              AND PLNTY = 'N'.

*  ELSE.

*

*    SELECT MATNR

*

*           PLNNR

*           PLNAL

*           DATUV

*           AENNR

*

*            MATNR FROM MAPL INTO TABLE IT_MAPL

*                                    WHERE LOEKZ = SPACE

*                                      AND WERKS = wa_temp-plant

*                                      AND DATUV < SY-DATUM

*                                      AND PLNTY = 'N'.  "#EC CI_NOFIRST

  ENDIF.

  SORT IT_MAPL BY MATNR ASCENDING

                  PLNAL DESCENDING

                  DATUV DESCENDING.

  DELETE ADJACENT DUPLICATES FROM IT_MAPL COMPARING MATNR.

* To enable faster execution

*  CLEAR G_TABIX.

*  LOOP AT IT_MAPL INTO X_MAPL.

*    ADD 1 TO G_TABIX.

*    IF G_TABIX NOT BETWEEN LN_FROM AND LN_TO.

*      DELETE IT_MAPL INDEX SY-TABIX.

*      CONTINUE.

*    ENDIF.

*  ENDLOOP.

  IF IT_MAPL[] IS NOT INITIAL.

* Fetch Planner group VAGRP from PLKO

    SELECT PLNNR

           PLNAL

           DATUV

           VAGRP FROM PLKO INTO TABLE IT_PLKO FOR ALL ENTRIES IN IT_MAPL

                  WHERE PLNTY = 'N'

                    AND PLNNR = IT_MAPL-PLNNR

                    AND PLNAL = IT_MAPL-PLNAL.

    IF SY-SUBRC IS INITIAL.

      SORT IT_PLKO BY PLNNR ASCENDING

                      PLNAL ASCENDING

                      DATUV DESCENDING.

      DELETE ADJACENT DUPLICATES FROM IT_PLKO COMPARING PLNNR PLNAL.

    ENDIF.

* Fetch the Revision level

    SELECT OBJKT

           AENNR

           OBJDT

           REVLV FROM AEOI INTO TABLE IT_AEOI FOR ALL ENTRIES IN IT_MAPL

                    WHERE OBJKT = IT_MAPL-OBJKT

                      AND REVLV NE SPACE

                      AND AETYP = '41'.

    IF SY-SUBRC IS INITIAL.

      SORT IT_AEOI BY MATNR ASCENDING

                      OBJDT DESCENDING

                      AENNR DESCENDING.

      DELETE ADJACENT DUPLICATES FROM IT_AEOI COMPARING MATNR AENNR.

    ENDIF.

    SELECT PLNNR

           PLNAL

           PLNKN FROM PLAS INTO TABLE IT_PLAS FOR ALL ENTRIES IN IT_MAPL

                              WHERE PLNNR = IT_MAPL-PLNNR

                                AND PLNAL = IT_MAPL-PLNAL

                                AND LOEKZ = SPACE.      "#EC CI_NOFIRST

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_PLAS.

    ENDIF.

    SELECT MATNR

           MTART  FROM MARA INTO TABLE IT_MARA FOR ALL ENTRIES IN IT_MAPL

                  WHERE MATNR =  IT_MAPL-MATNR.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_MARA.

    ENDIF.

     SELECT MATNR

           MAKTX  FROM MAKT INTO TABLE IT_MAKT FOR ALL ENTRIES IN IT_MAPL

                  WHERE MATNR =  IT_MAPL-MATNR.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_MAKT.

    ENDIF.

     SELECT MATNR

           WERKS  FROM MARC INTO TABLE IT_MARC FOR ALL ENTRIES IN IT_MAPL

                  WHERE MATNR =  IT_MAPL-MATNR.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_MARC.

    ENDIF.

    SELECT IDNRK

           POTX1  FROM STPO INTO TABLE IT_STPO FOR ALL ENTRIES IN IT_MAPL

                  WHERE IDNRK =  IT_MAPL-MATNR.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_STPO.

    ENDIF.

  ENDIF.

  IF IT_PLAS IS NOT INITIAL.

    REFRESH IT_PLFH.

    SELECT PLNNR

           PLNKN

           PZLFH

           OBJID

           PSNFH FROM PLFH INTO TABLE IT_PLFH FOR ALL ENTRIES IN IT_PLAS

                            WHERE PLNTY = 'N'

                              AND PLNNR = IT_PLAS-PLNNR

                              AND PLNKN = IT_PLAS-PLNKN

                              AND LOEKZ = SPACE.        "#EC CI_NOFIRST

      IF NILTIME IS INITIAL.

    SELECT PLNNR

           PLNKN

           VORNR

           STEUS

           KTSCH

           LTXA1

           DATUV

           VGW01

           VGW02

           ARBID

           USR10

           PLNTY

           TXTSP

           ZAEHL

           SLWID

           SPMUS

           SPLIM

           CKSELKZ FROM PLPO  INTO TABLE IT_PLPO FOR ALL ENTRIES IN IT_PLAS

                    WHERE PLNNR = IT_PLAS-PLNNR AND PLNKN = IT_PLAS-PLNKN AND PLNTY = 'N' AND LOEKZ = ''.

      ELSEIF NILTIME IS NOT INITIAL.

        SELECT PLNNR

           PLNKN

           VORNR

           STEUS

           KTSCH

           LTXA1

           DATUV

           VGW01

           VGW02

           ARBID

           USR10

           PLNTY

           TXTSP

           ZAEHL

           SLWID

           SPMUS

           SPLIM

           CKSELKZ FROM PLPO  INTO TABLE IT_PLPO FOR ALL ENTRIES IN IT_PLAS

                    WHERE PLNNR = IT_PLAS-PLNNR AND PLNKN = IT_PLAS-PLNKN AND PLNTY = 'N' AND LOEKZ = ''

      AND VGW02 <= '0.05'.

          ENDIF.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_PLPO.

    ENDIF.

* To delete multiple operations inside the same wa_temp-matl - BOM structure

    SORT IT_PLPO BY PLNNR ASCENDING

                    PLNKN ASCENDING

                    VORNR ASCENDING

                    DATUV DESCENDING.

    DELETE ADJACENT DUPLICATES FROM IT_PLPO COMPARING PLNKN.

    LOOP AT IT_PLPO INTO X_PLPO.

      IF X_PLPO-USR10 = 'X'.

        X_PLPO-PT = 'T'.

      ELSE.

        X_PLPO-PT = 'P'.

      ENDIF.

      IF X_PLPO-STEUS = 'ZP00'.

        X_PLPO-IND = 'X'.

      ELSE.

        CLEAR X_PLPO-IND.

      ENDIF.

      CONCATENATE X_PLPO-PLNTY X_PLPO-PLNNR X_PLPO-PLNKN  INTO X_PLPO-CON.

      MODIFY IT_PLPO FROM X_PLPO TRANSPORTING PT IND CON.

    ENDLOOP.

  ENDIF.

  IF IT_PLPO IS NOT  INITIAL.

    SELECT OBJEK

           CUOBJ KLART FROM INOB INTO TABLE IT_INOB FOR ALL ENTRIES IN IT_PLPO

                  WHERE OBJEK = IT_PLPO-CON AND  KLART = '018' AND OBTAB = 'PLPO'.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_INOB.

    ENDIF.

    SELECT OBJID

           ARBPL

           STEUS FROM CRHD INTO TABLE IT_CRHD FOR ALL ENTRIES IN IT_PLPO

                  WHERE OBJID = IT_PLPO-ARBID.          "#EC CI_NOFIRST

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_CRHD.

    ENDIF.

  ENDIF.

  IF IT_INOB IS NOT INITIAL.

    SELECT OBJEK

           ATINN

           ATFLV

           ATWRT

           ATZHL FROM AUSP INTO TABLE IT_AUSP FOR ALL ENTRIES IN IT_INOB

                  WHERE OBJEK = IT_INOB-CUOBJ.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH IT_AUSP.

    ENDIF.

    LOOP AT IT_AUSP INTO X_AUSP.

      CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'

        EXPORTING

          I_NUMBER_OF_DIGITS = '0'

          I_FLTP_VALUE       = X_AUSP-ATFLV

        IMPORTING

          E_CHAR_FIELD       = X_AUSP-LV_COUNT.

      CONDENSE X_AUSP-LV_COUNT NO-GAPS.

      IF X_AUSP-LV_COUNT = 0.

        X_AUSP-LV_COUNT = X_AUSP-ATWRT.

      ENDIF.

      MODIFY IT_AUSP FROM X_AUSP TRANSPORTING LV_COUNT.

    ENDLOOP.

    SORT IT_AUSP DESCENDING BY OBJEK ATINN ATZHL.

  ENDIF.

  DELETE ADJACENT DUPLICATES FROM IT_AUSP COMPARING OBJEK ATINN.

  CLEAR G_VTEXT.

  G_SNO = 1.

  LOOP AT IT_AUSP INTO X_AUSP.

    IF X_AUSP-OBJEK =  G_VTEXT.

      ADD 1 TO G_SNO.

    ELSEIF SY-TABIX NE 1.

      G_SNO = 1.

    ENDIF.

    X_AUSP1-OBJEK = X_AUSP-OBJEK.

    X_AUSP1-ATINN = X_AUSP-ATINN.

    X_AUSP1-LV_COUNT = X_AUSP-LV_COUNT.

    X_AUSP1-ATWRT = X_AUSP-ATWRT.

    X_AUSP1-ADZHL = X_AUSP-ATZHL.

    X_AUSP1-ATFLV = X_AUSP-ATFLV.

    X_AUSP1-SLNO = G_SNO.

    APPEND X_AUSP1 TO IT_AUSP1.

    G_VTEXT = X_AUSP1-OBJEK.

  ENDLOOP.

  IF IT_AUSP IS NOT INITIAL.

    SELECT ATINN

           ATNAM FROM CABN INTO TABLE LT_CABNT FOR ALL ENTRIES IN IT_AUSP

                  WHERE ATINN = IT_AUSP-ATINN.

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH LT_CABNT.

    ENDIF.

  ENDIF.

  IF IT_PLFH IS NOT INITIAL.

    SELECT OBJID

           MATNR FROM CRVM_A INTO TABLE LT_CRVM_A FOR ALL ENTRIES IN IT_PLFH

                  WHERE OBJID = IT_PLFH-OBJID.          "#EC CI_NOFIRST

    IF SY-SUBRC IS NOT INITIAL.

      REFRESH LT_CRVM_A.

    ENDIF.

  ENDIF.

  CLEAR: G_VTEXT1,G_VTEXT2.

  G_SNO = 1.

  LOOP AT IT_PLFH INTO X_PLFH.

    G_TABIX = SY-TABIX.

    READ TABLE LT_CRVM_A INTO X_CRVM_A WITH KEY OBJID = X_PLFH-OBJID.

    IF SY-SUBRC EQ 0.

      X_PLFH-MATNR = X_CRVM_A-MATNR.

    ENDIF.

    IF ( X_PLFH-PLNNR =  G_VTEXT1 AND X_PLFH-PLNKN = G_VTEXT2 ).

      ADD 1 TO G_SNO.

    ELSEIF G_TABIX NE 1.

      G_SNO = 1.

    ENDIF.

    X_PLFH-SLNO = G_SNO.

    MODIFY IT_PLFH FROM X_PLFH INDEX G_TABIX.

    G_VTEXT1 = X_PLFH-PLNNR.

    G_VTEXT2 = X_PLFH-PLNKN.

  ENDLOOP.

  CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM+0(4) INTO LV_YEAR1.

  LOOP AT IT_PLPO INTO X_PLPO.

    CLEAR: X_MAPL,X_PLFH,X_CRHD,X_FINAL.

    X_FINAL-PLNNR = X_PLPO-PLNNR.

    X_FINAL-PLNKN = X_PLPO-PLNKN.

    X_FINAL-CLS = '018'.

    X_FINAL-TRADE = 'TRADE'.

    READ TABLE IT_PLAS INTO X_PLAS WITH KEY PLNNR = X_PLPO-PLNNR

                                             PLNKN = X_PLPO-PLNKN.

    IF SY-SUBRC IS INITIAL.

      READ TABLE IT_MAPL INTO X_MAPL WITH KEY PLNNR = X_PLPO-PLNNR

                                               PLNAL = X_PLAS-PLNAL.

      IF SY-SUBRC IS INITIAL.

        X_FINAL-MATNR = X_MAPL-MATNR.

        X_FINAL-STTAG = X_MAPL-DATUV.

        READ TABLE IT_PLKO INTO X_PLKO WITH KEY PLNNR = X_MAPL-PLNNR

                                                PLNAL = X_MAPL-PLNAL.

        IF SY-SUBRC IS INITIAL.

          X_FINAL-VAGRP = X_PLKO-VAGRP.

        ENDIF.

        READ TABLE IT_AEOI INTO X_AEOI WITH KEY MATNR = X_MAPL-OBJKT.

        IF SY-SUBRC IS INITIAL.

          X_FINAL-AREVLV = X_AEOI-REVLV.

          X_FINAL-AENNR  = X_AEOI-AENNR.

        ENDIF.

      ENDIF.

    ENDIF.

    READ TABLE IT_CRHD INTO X_CRHD WITH KEY OBJID = X_PLPO-ARBID.

    IF SY-SUBRC IS INITIAL.

      X_FINAL-ARBPL = X_CRHD-ARBPL.

    ENDIF.

    READ TABLE IT_MARA INTO X_MARA WITH KEY MATNR = X_MAPL-MATNR.

    IF SY-SUBRC IS INITIAL.

      X_FINAL-MTART = X_MARA-MTART.

      X_FINAL-CONC = X_MARA-MATNR.

    ENDIF.

    READ TABLE IT_STPO INTO X_STPO WITH KEY IDNRK = X_MAPL-MATNR.

    IF SY-SUBRC IS INITIAL.

      X_FINAL-POTX1 = X_STPO-POTX1.

    ENDIF.

    READ TABLE IT_MAKT INTO X_MAKT WITH KEY MATNR = X_MAPL-MATNR.

    IF SY-SUBRC = 0.

      X_FINAL-MAKTX = X_MAKT-MAKTX.

    ENDIF.

    READ TABLE IT_MARC INTO X_MARC WITH KEY MATNR = X_MAPL-MATNR.

    IF SY-SUBRC IS INITIAL.

      X_FINAL-WERKS = X_MARC-WERKS.

*      x_final-conc = x_mara-matnr.

    ENDIF.

    IF X_PLPO-STEUS IS NOT INITIAL.

      X_FINAL-STEUS   = X_PLPO-STEUS.

    ELSE.

      READ TABLE IT_CRHD INTO X_CRHD WITH KEY OBJID = X_PLPO-ARBID.

      IF SY-SUBRC IS INITIAL.

        X_FINAL-STEUS = X_CRHD-STEUS.

      ENDIF.

    ENDIF.

    X_FINAL-VORNR   = X_PLPO-VORNR.

    X_FINAL-KTSCH   = X_PLPO-KTSCH.

    X_FINAL-LTXA1   = X_PLPO-LTXA1.

    X_FINAL-VGW01   = X_PLPO-VGW01.

    X_FINAL-VGW02   = X_PLPO-VGW02.

    X_FINAL-SLWID   = X_PLPO-SLWID.

    X_FINAL-USR10   = X_PLPO-USR10.

    X_FINAL-SPMUS   = X_PLPO-SPMUS.

    X_FINAL-SPLIM   = X_PLPO-SPLIM.

    X_FINAL-CKSELKZ = X_PLPO-CKSELKZ.

    READ TABLE IT_INOB INTO X_INOB WITH KEY OBJEK = X_PLPO-CON.

    IF SY-SUBRC IS INITIAL.

      X_FINAL-OBJEK = X_INOB-CUOBJ.

      X_FINAL-KLART = X_INOB-CUOBJ.

    ENDIF.

    X_FINAL-PT = X_PLPO-PT.

    X_FINAL-IND = X_PLPO-IND.

    X_FINAL-G_LINES = X_PLPO-G_LINES.

    IF X_PLPO-TXTSP EQ 'E'.

      CLEAR: X_FINAL-G_LINES, G_NAME.

      CONCATENATE SY-MANDT X_PLPO-PLNTY X_PLPO-PLNNR X_PLPO-PLNKN X_PLPO-ZAEHL INTO G_NAME.

      CALL FUNCTION 'READ_TEXT'

        EXPORTING

          CLIENT                  = SY-MANDT

          ID                      = 'PLPO'

          LANGUAGE                = X_PLPO-TXTSP

          NAME                    = G_NAME

          OBJECT                  = 'ROUTING'

        TABLES

          LINES                   = IT_LINES

        EXCEPTIONS

          ID                      = 1

          LANGUAGE                = 2

          NAME                    = 3

          NOT_FOUND               = 4

          OBJECT                  = 5

          REFERENCE_CHECK         = 6

          WRONG_ACCESS_TO_ARCHIVE = 7

          OTHERS                  = 8.

      IF SY-SUBRC IS INITIAL.

        DELETE IT_LINES INDEX 1.

        LOOP AT IT_LINES INTO X_LINES.

          CONCATENATE X_FINAL-G_LINES X_LINES-TDLINE INTO X_FINAL-G_LINES SEPARATED BY SPACE.

        ENDLOOP.

      ENDIF.

    ENDIF.

    LOOP AT IT_AUSP1 INTO X_AUSP1 WHERE OBJEK = X_FINAL-OBJEK.

      READ TABLE LT_CABNT INTO LW_CABNT WITH KEY ATINN = X_AUSP1-ATINN.

      IF SY-SUBRC IS NOT INITIAL.

        CLEAR: LW_CABNT-ATNAM.

      ENDIF.

      CASE X_AUSP1-SLNO.

        WHEN 1.

          X_FINAL-ATNAM = LW_CABNT-ATNAM.

          X_FINAL-LV_COUNT = X_AUSP1-LV_COUNT.

        WHEN 2.

          X_FINAL-ATNAM1 = LW_CABNT-ATNAM.

          X_FINAL-LV_COUNT1 = X_AUSP1-LV_COUNT.

        WHEN 3.

          X_FINAL-ATNAM2 = LW_CABNT-ATNAM.

          X_FINAL-LV_COUNT2 = X_AUSP1-LV_COUNT.

      ENDCASE.

      CLEAR X_AUSP1.

    ENDLOOP.

    LOOP AT IT_PLFH INTO X_PLFH WHERE PLNNR = X_FINAL-PLNNR AND PLNKN = X_FINAL-PLNKN.

      CASE X_PLFH-SLNO.

        WHEN 1.

          X_FINAL-ITEM1  = X_PLFH-PSNFH.

          X_FINAL-MATNR1 = X_PLFH-MATNR.

        WHEN 2.

          X_FINAL-ITEM2  = X_PLFH-PSNFH.

          X_FINAL-MATNR2 = X_PLFH-MATNR.

        WHEN 3.

          X_FINAL-ITEM3  = X_PLFH-PSNFH.

          X_FINAL-MATNR3 = X_PLFH-MATNR.

      ENDCASE.

    ENDLOOP.

    X_FINAL-inst = wa_temp-INST_DRG.

    X_FINAL-VGW01 = TRUNC( X_FINAL-VGW01 ).

    X_FINAL-VGW03 =  X_FINAL-VGW01.

    X_FINAL-ARBPL1 = X_FINAL-ARBPL+0(4).

    X_FINAL-ARBPL2 = X_FINAL-ARBPL+4(4).

    X_FINAL-SHOP = X_FINAL-ARBPL+0(2).

    APPEND X_FINAL TO IT_FINAL.

*DELETE ADJACENT DUPLICATES FROM it_final COMPARING ALL FIELDS.

  ENDLOOP.

ENDLOOP.

Former Member
0 Kudos

Hi,

Try with giving same in SE16 directly and check how many records exist for given selection criteria

Thanks
Arun

0 Kudos

hi,

  i checked it its coming total 100 records for both matnr.

0 Kudos

Hi,

You are populating ZRMAT and WERKS but you passing MATL and PLANT to MAPL selection where clause . Check MATL value in run time.

If 120 records are coming than i think same first 60 getting duplicating.

Thanks & Regards,

Arun

former_member184569
Active Contributor
0 Kudos

Can you please try this.

SELECTION-SCREEN: BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

  SELECT-OPTIONS: P_MATNR FOR MARA-MATNR OBLIGATORY.

  SELECT-OPTIONS: P_WERKS FOR ZPP_PLAN_MATYP-WERKS.

  PARAMETERS: NILTIME TYPE C AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK B01.

start of selection.

SELECT MATNR

                 PLNNR

                 PLNAL

                DATUV

                AENNR

               MATNR FROM MAPL INTO TABLE IT_MAPL

                            WHERE WERKS in p_werks

                              AND MATNR in p_matnr

                              AND LOEKZ = SPACE

                              AND DATUV < SY-DATUM

                              AND PLNTY = 'N'.

0 Kudos

hi,

  i have tried this one,but in my code select option i have pass to a internal table in which i have to explore bom components using bom explosion function module and that bom component , i have pass for this select query.

rosenberg_eitan
Active Contributor
0 Kudos
Hi ,

That's a lot of code which does not compile....
Something that caught my attention is this piece of code:
LOOP at P_MATNR.
       move P_MATNR+3(18) to IT_temp-zrmat.
       LOOP AT P_WERKS.
         move P_WERKS+3(4) to it_temp-werks.
       ENDLOOP.
       APPEND IT_TEMP.
        endloop.
so I create a small program with just piece of code.
According to the code the number of entry in IT_TEMP will be the number of entries in p_matnr.
Even if i put multiple entries in p_werks it will only use the last one.
Is that what you want ?

Regards.
My code:
REPORT  y_r_eitan_test_71_02 .

TABLES: marc .

SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_matnr FOR marc-matnr OBLIGATORY.
SELECT-OPTIONS: p_werks FOR marc-werks.
SELECTION-SCREEN: END OF BLOCK b01.

START-OF-SELECTION .
  PERFORM at_start_of_selection .

*----------------------------------------------------------------------*
FORM at_start_of_selection .

  DATA: it_temp TYPE TABLE OF marc  .
  DATA: st_temp LIKE LINE OF it_temp .

  LOOP AT p_matnr.

    MOVE p_matnr-low TO st_temp-matnr .

    LOOP AT p_werks.

      MOVE p_werks-low TO st_temp-werks.

    ENDLOOP.

    APPEND st_temp TO it_temp .

  ENDLOOP .

  BREAK-POINT .

ENDFORM .                    "at_start_of_selection

 

Former Member
0 Kudos

Hi,

Please do like this,

LOOP AT P_MATNR.
  MOVE P_MATNR+3(18)-LOW TO IT_TEMP-ZRMAT.


  LOOP AT P_WERKS.
    MOVE P_WERKS+3(4)-LOW TO IT_TEMP-WERKS.
  ENDLOOP.


  APPEND IT_TEMP.
ENDLOOP.

Let me know if this solves your problem.

Regards,

Riju Thomas.

0 Kudos

Hi,

MOVE P_MATNR+3(18)-LOW TO IT_TEMP-ZRMAT.

Does not compile.

MATNR length is 18 bytes (Standard sap).

So I think that using:

move p_matnr-low to it_temp-zrmat .

is good enough .

Eitan.

Former Member
0 Kudos

hi everybody,

issue is solved,thanks for ur valuable comments.

Former Member
0 Kudos

Hi Vinod,

You can try with,

LOOP AT P_MATNR.
  MOVE P_MATNR+3(18)-LOW TO IT_TEMP-ZRMAT.


  LOOP AT P_WERKS.
    MOVE P_WERKS+3(4)-LOW TO IT_TEMP-WERKS.
  ENDLOOP.


  APPEND IT_TEMP.
ENDLOOP

The best practice is not to write SELECT query within LOOP as part of code optimization. So better use the SELECT-OPTIONS in the select query and fetch data from the database table at once.


SELECTION-SCREEN: BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-001.

  SELECT-OPTIONS: P_MATNR FOR MARA-MATNR OBLIGATORY.

  SELECT-OPTIONS: P_WERKS FOR ZPP_PLAN_MATYP-WERKS.

  PARAMETERS: NILTIME TYPE C AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK B01.

START-OF-SELECTION.

SELECT MATNR

                 PLNNR

                 PLNAL

                DATUV

                AENNR

               MATNR FROM MAPL INTO TABLE IT_MAPL

                            WHERE werks IN p_werks

                                 AND matnr IN p_matnr

                                 AND loekz EQ space

                                 AND datuv LT sy-datum

                                 AND plnty EQ 'N'.

Regards,

Shahanaz.