10-06-2013 5:23 PM
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.
10-07-2013 6:07 AM
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.
10-06-2013 5:38 PM
Hello ,
Please post you code:
The SELECT-OPTIONS and the SQL statments.
Regards.
10-06-2013 8:17 PM
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.
10-06-2013 7:40 PM
Hi,
Try with giving same in SE16 directly and check how many records exist for given selection criteria
Thanks
Arun
10-06-2013 8:18 PM
10-07-2013 6:42 AM
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
10-06-2013 8:36 PM
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'.
10-06-2013 8:44 PM
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.
10-07-2013 4:46 AM
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
10-07-2013 6:07 AM
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.
10-07-2013 6:21 AM
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.
10-07-2013 2:10 PM
10-10-2013 5:36 AM
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.