2008 Jan 14 10:29 AM
hi experts
plse tell me is there any thing wrong in the below logic,i am not getting values to the wa_stko.
SELECT matnr
werks
stlnr
FROM mast
INTO TABLE i_mast
FOR ALL ENTRIES IN i_marc
WHERE matnr = i_marc-matnr AND
stlan = '1' AND
stlal = '01'.
ENDIF .
IF NOT i_mast IS INITIAL.
SELECT stlnr
FROM stko
INTO TABLE i_stko
FOR ALL ENTRIES IN i_mast
WHERE stlnr = i_mast-stlnr AND
datuv IN r_datuv AND "sy-datum to be changed
loekz NE 'X' AND
stlst = '1'.
ENDIF .
LOOP AT i_stko INTO wa_stko .
LOOP AT i_mast INTO wa_mast WHERE stlnr = wa_stko-stlnr.
READ TABLE i_mast INTO wa_mast WITH KEY stlnr = wa_stko-stlnr.
wa_stko-matnr = wa_mast-matnr.
wa_stko-werks = wa_mast-werks.
wa_stko-stlnr = wa_mast-stlnr.
with regads
sermarao
2008 Jan 14 10:45 AM
i have declared the internal table correctly
with regards
sermarao
Hi Sema,
Your requirment is not totally clear.Means according to the code you menytioned you will not get all the values in the wa_stko.Do you want to append all the values of wa_stko to a table?
If so then try the code below-
-
LOOP AT i_stko INTO wa_stko .
LOOP AT i_mast INTO wa_mast WHERE stlnr = wa_stko- stlnr.
wa_stko-matnr = wa_mast-matnr.
wa_stko-werks = wa_mast-werks.
wa_stko-stlnr = wa_mast-stlnr.
APPEND wa_stko TO table.
CLEAR: wa_mast,wa_stko.
ENDLOOP.
ENDLOOP.
2008 Jan 14 10:45 AM
i have declared the internal table correctly
with regards
sermarao
2008 Jan 14 2:28 PM
Hi,
Try the below code. This seems to be working fine.
TYPES : BEGIN OF t_mast ,
matnr TYPE mast-matnr,
werks TYPE mast-werks,
stlnr TYPE mast-stlnr,
END OF t_mast,
BEGIN OF t_stko ,
stlnr TYPE mast-stlnr,
matnr TYPE mast-matnr,
werks TYPE mast-werks,
END OF t_stko.
DATA: i_mast TYPE STANDARD TABLE OF t_mast,
i_stko TYPE STANDARD TABLE OF t_stko,
i_marc TYPE STANDARD TABLE OF marc,
wa_mast TYPE t_mast,
wa_stko TYPE t_stko.
RANGES: r_datuv FOR sy-datum.
SELECT * FROM marc
INTO TABLE i_marc.
SELECT matnr
werks
stlnr
FROM mast
INTO TABLE i_mast
FOR ALL ENTRIES IN i_marc
WHERE matnr = i_marc-matnr AND
stlan = '1' AND
stlal = '01'.
IF NOT i_mast IS INITIAL.
SELECT stlnr
FROM stko
INTO TABLE i_stko
FOR ALL ENTRIES IN i_mast
WHERE stlnr = i_mast-stlnr AND
datuv IN r_datuv AND
loekz NE 'X' AND
stlst = '1'.
IF sy-subrc IS INITIAL.
LOOP AT i_stko INTO wa_stko .
READ TABLE i_mast INTO wa_mast WITH KEY stlnr = wa_stko-stlnr.
IF sy-subrc IS INITIAL.
wa_stko-matnr = wa_mast-matnr.
wa_stko-werks = wa_mast-werks.
wa_stko-stlnr = wa_mast-stlnr.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF .
Reward points if helpful.
2008 Jan 15 4:18 AM
Hi Sema,
Your requirment is not totally clear.Means according to the code you menytioned you will not get all the values in the wa_stko.Do you want to append all the values of wa_stko to a table?
If so then try the code below-
-
LOOP AT i_stko INTO wa_stko .
LOOP AT i_mast INTO wa_mast WHERE stlnr = wa_stko- stlnr.
wa_stko-matnr = wa_mast-matnr.
wa_stko-werks = wa_mast-werks.
wa_stko-stlnr = wa_mast-stlnr.
APPEND wa_stko TO table.
CLEAR: wa_mast,wa_stko.
ENDLOOP.
ENDLOOP.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |