01-24-2013 12:14 PM
hii expert,
I wrote one FM for selecting entry from table into internal table.
here is my code
FUNCTION Z_TERRITORY.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(SORG) TYPE VKORG
*" REFERENCE(DCHANNEL) TYPE VTWEG
*" REFERENCE(DIVISION) TYPE SPART
*" REFERENCE(ACCGRP) TYPE KTOKD
*" REFERENCE(VALIDON) TYPE SY-DATUM
*" TABLES
*" CUSTOMER STRUCTURE ZSTRUC
*" RESULT STRUCTURE ZRESULT
TABLES : KNVH.
TYPES : BEGIN OF TY_CUST,
VKORG TYPE VKORG,
VTWEG TYPE VTWEG,
SPART TYPE SPART,
KTOKD TYPE KTOKD,
KUNNR TYPE KUNNR,
END OF TY_CUST,
BEGIN OF TY_RESULT,
VKORG TYPE VKORG,
VTWEG TYPE VTWEG,
SPART TYPE SPART,
KUNNR TYPE KUNNR,
HKUNNR TYPE HKUNNR_KH,
DATAB TYPE DATAB,
DATBI TYPE DATBI,
END OF TY_RESULT.
DATA : IT_JOIN TYPE TABLE OF TY_CUST,
IT_RESULT TYPE TABLE OF TY_RESULT.
DATA : WA_CUST TYPE TY_CUST,
WA_RESULT TYPE TY_RESULT.
SELECT A~VKORG A~VTWEG A~SPART A~KUNNR B~KTOKD
INTO CORRESPONDING FIELDS OF TABLE IT_JOIN
FROM KNVV AS A INNER JOIN KNA1 AS B
ON A~KUNNR = B~KUNNR
WHERE A~VKORG = SORG AND
A~VTWEG = DCHANNEL AND
A~SPART = DIVISION AND
B~KTOKD = ACCGRP AND
A~KUNNR = CUSTOMER-CUSTNO.
SELECT KUNNR HKUNNR VKORG VTWEG SPART DATAB DATBI
FROM KNVH
INTO CORRESPONDING FIELDS OF TABLE RESULt[]
FOR ALL ENTRIES IN IT_JOIN
WHERE KUNNR = IT_JOIN-KUNNR AND
DATAB < VALIDON AND
DATBI > VALIDON.
in out put table i get number of entry but not data.
i mean out put of 2nd query is 4 row then i get 4 empty row in out put table.
01-24-2013 12:29 PM
Suggestions :
- Add a CHECK it_join IS NOT INITIAL before the second SELECT.
- I the WHERE clause of the second SELECT, replace the GT/LT (>/<) with GE/LE.
- When you paste code source, switch to advanced editor, select the source and apply Syntax (>>) plain.
Regards,
Raymond
01-24-2013 12:50 PM
Hi Nirgun,
Before 2nd select query please check wether first internal table is initial or not.
This statement is must whenever FOR ALL ENTRIES is used otherwise if IT_JOIN is initial it will take all the entries without considering the WHERE condition
If IT_JOIN IS NOT INITIAL.
SELECT KUNNR HKUNNR VKORG VTWEG SPART DATAB DATBI
FROM KNVH
INTO CORRESPONDING FIELDS OF TABLE RESULt[]
FOR ALL ENTRIES IN IT_JOIN
WHERE KUNNR = IT_JOIN-KUNNR AND
DATAB LT VALIDON AND
DATBI GT VALIDON.
endif.
01-24-2013 2:28 PM
Hi,
use this code.
FUNCTION Z_TERRITORY.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(SORG) TYPE VKORG
*" REFERENCE(DCHANNEL) TYPE VTWEG
*" REFERENCE(DIVISION) TYPE SPART
*" REFERENCE(ACCGRP) TYPE KTOKD
*" REFERENCE(VALIDON) TYPE SY-DATUM
*" TABLES
*" CUSTOMER STRUCTURE ZSTRUC
*" RESULT STRUCTURE ZRESULT
TABLES : KNVH.
TYPES : BEGIN OF TY_CUST,
VKORG TYPE VKORG,
VTWEG TYPE VTWEG,
SPART TYPE SPART,
KTOKD TYPE KTOKD,
KUNNR TYPE KUNNR,
END OF TY_CUST,
BEGIN OF TY_RESULT,
VKORG TYPE VKORG,
VTWEG TYPE VTWEG,
SPART TYPE SPART,
KUNNR TYPE KUNNR,
HKUNNR TYPE HKUNNR_KH,
DATAB TYPE DATAB,
DATBI TYPE DATBI,
END OF TY_RESULT.
DATA : IT_JOIN TYPE TABLE OF TY_CUST,
IT_RESULT TYPE TABLE OF TY_RESULT.
DATA : WA_CUST TYPE TY_CUST,
WA_RESULT TYPE TY_RESULT.
SELECT A~VKORG A~VTWEG A~SPART A~KUNNR B~KTOKD
INTO CORRESPONDING FIELDS OF TABLE IT_JOIN
FROM KNVV AS A INNER JOIN KNA1 AS B
ON A~KUNNR = B~KUNNR
WHERE A~VKORG = SORG AND
A~VTWEG = DCHANNEL AND
A~SPART = DIVISION AND
B~KTOKD = ACCGRP AND
A~KUNNR = CUSTOMER-CUSTNO.
check IT_JOIN IS NOT INITIAL.
SELECT KUNNR HKUNNR VKORG VTWEG SPART DATAB DATBI
FROM KNVH
INTO CORRESPONDING FIELDS OF TABLE RESULt[]
FOR ALL ENTRIES IN IT_JOIN
WHERE KUNNR = IT_JOIN-KUNNR AND
DATAB LE VALIDON AND
DATBI GE VALIDON.
ENDFUNCTION Z_TERRITORY.