‎2007 Apr 27 8:53 AM
can we use <b>for all entries in statement</b> along with <b>provide endprovide</b> ?
<u>requirement is as :</u>
Retrieval of Relevent Fields from PA0001 Table.
Retrieve Personnel number (PERNR)
Personnel Area (WERKS)
From Table PA0001
on the basis of Personnel number in the selection screen
and Start Date (BEGDA) less than sy-datum
and End Date (ENDA) greater than sy-datum.
Retrieval of Relevent Fields from PA0002 Table.
Retrieve Personnel number (PERNR)
Last name (NACHN)
First name (VORNA)
from table PA0002 on the basis of all entries in IT_PA0001 comparing personnel number (PERNR)
and Start Date (BEGDA) less than sy-datum
and End Date (ENDA) greater than sy-datum.
Put the retrieved value in an internal table
‎2007 Apr 27 9:19 AM
Hi Rippy,
No, you cann't use FOR ALL ENTRIES with PROVIDE END PROVIDE, coz PROVIDE ENDPROVIDE is looping process, just like SELECT ENDSELECT.
And I don't suggest you to use PROVIDE ENDPROVIDE.
You can use FOR ALL ENTRIES, like here:
*get data from PA0001
SELECT PERNR WERKS
INTO TABLE IT_PA0001
FROM PA0001
WHERE PERNR EQ P_PERNR
AND BEGDA < SY-DATUM
AND ENDDA > SY-DATUM.
*get data from PA0002
IF IT_PA0001[] IS NOT INITIAL.
SELECT PERNR NACHN VORNA
INTO TABLE IT_PA0002
FROM PA0002
FOR ALL ENTRIES IN IT_PA0001
WHERE PERNR = IT_PA0001-PERNR
AND BEGDA < SY-DATUM
AND ENDDA > SY-DATUM.
ENDIF.
Regards,
‎2007 Apr 27 9:19 AM
Hi Rippy,
No, you cann't use FOR ALL ENTRIES with PROVIDE END PROVIDE, coz PROVIDE ENDPROVIDE is looping process, just like SELECT ENDSELECT.
And I don't suggest you to use PROVIDE ENDPROVIDE.
You can use FOR ALL ENTRIES, like here:
*get data from PA0001
SELECT PERNR WERKS
INTO TABLE IT_PA0001
FROM PA0001
WHERE PERNR EQ P_PERNR
AND BEGDA < SY-DATUM
AND ENDDA > SY-DATUM.
*get data from PA0002
IF IT_PA0001[] IS NOT INITIAL.
SELECT PERNR NACHN VORNA
INTO TABLE IT_PA0002
FROM PA0002
FOR ALL ENTRIES IN IT_PA0001
WHERE PERNR = IT_PA0001-PERNR
AND BEGDA < SY-DATUM
AND ENDDA > SY-DATUM.
ENDIF.
Regards,
‎2007 Apr 27 11:33 AM