01-30-2007 11:36 AM
Hi friends
i have developed the mm report, inbound delivery and gr status,
in report output i got one record instead of many records
give me a solutions for that one
FORM SELECT_DATA.
SELECT AVBELN ABLDAT ALIFNR CNAME1 ALIFEX BMATNR BMATKL BLFIMG BMEINS BWERKS BARKTX BVGBEL BVGPOS BPOSNR
INTO CORRESPONDING FIELDS OF TABLE IT_LIKP_IDEL
FROM LIKP AS A
INNER JOIN LIPS AS B ON AVBELN = BVBELN
INNER JOIN LFA1 AS C ON ALIFNR = CLIFNR
WHERE B~WERKS IN S_WERKS
AND B~MATNR IN S_MATNR
AND B~MATKL IN S_MATKL
AND A~LIFNR IN S_LIFNR
AND A~BLDAT IN S_BLDAT.
READ TABLE IT_LIKP_IDEL INDEX 1.
IF SY-SUBRC = 0.
SELECT BELNR EBELN BUDAT BUZEI LFPOS LFBNR BWART EBELP FROM EKBE INTO CORRESPONDING FIELDS OF TABLE IT_EKBE_IDEL
FOR ALL ENTRIES IN IT_LIKP_IDEL
WHERE EBELN = IT_LIKP_IDEL-VGBEL
AND EBELP = IT_LIKP_IDEL-VGPOS+1(5) AND
( BWART = '101' OR BWART = '102' OR BWART = '103').
.
ENDIF.
ENDFORM. "SELECT_DATA
****************************************************************
FORM TO APPEND DATA INTO MAIN INTERNAL TABLE
*
****************************************************************
DATA : G_DATE(10) TYPE C,
G_DATE1(10) TYPE C.
&----
*& Form MAIN_DATA
&----
text
----
FORM MAIN_DATA.
LOOP AT IT_EKBE_IDEL WHERE BWART = '102'.
MOVE-CORRESPONDING IT_EKBE_IDEL TO IT_EKBE_IDEL1.
APPEND IT_EKBE_IDEL1.
DELETE IT_EKBE_IDEL .
ENDLOOP.
LOOP AT IT_EKBE_IDEL.
READ TABLE IT_EKBE_IDEL1 WITH KEY LFBNR = IT_EKBE_IDEL-BELNR LFPOS = IT_EKBE_IDEL-BUZEI.
IF SY-SUBRC = 0.
DELETE IT_EKBE_IDEL.
ENDIF.
ENDLOOP.
LOOP AT IT_LIKP_IDEL WHERE VGBEL = IT_EKBE_IDEL-EBELN AND VGPOS+1(5) = IT_EKBE_IDEL-EBELP.
IT_FINAL_IDEL-VBELN = IT_LIKP_IDEL-VBELN.
CONCATENATE IT_LIKP_IDEL-BLDAT6(2) IT_LIKP_IDEL-BLDAT4(2) IT_LIKP_IDEL-BLDAT+0(4)
INTO G_DATE SEPARATED BY '.'.
IT_FINAL_IDEL-BLDAT = G_DATE.
IT_FINAL_IDEL-LIFNR = IT_LIKP_IDEL-LIFNR.
IT_FINAL_IDEL-NAME1 = IT_LIKP_IDEL-NAME1.
IT_FINAL_IDEL-LIFEX = IT_LIKP_IDEL-LIFEX.
IT_FINAL_IDEL-MATNR = IT_LIKP_IDEL-MATNR.
IT_FINAL_IDEL-ARKTX = IT_LIKP_IDEL-ARKTX.
IT_FINAL_IDEL-LFIMG = IT_LIKP_IDEL-LFIMG.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
INPUT = IT_LIKP_IDEL-MEINS
LANGUAGE = SY-LANGU
IMPORTING
LONG_TEXT =
OUTPUT = IT_LIKP_IDEL-MEINS
SHORT_TEXT =
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IT_FINAL_IDEL-MEINS = IT_LIKP_IDEL-MEINS.
LOOP AT IT_EKBE_IDEL WHERE EBELN = IT_LIKP_IDEL-VGBEL AND EBELP = IT_LIKP_IDEL-VGPOS+1(5).
IT_FINAL_IDEL-BELNR = IT_EKBE_IDEL-BELNR.
CONCATENATE IT_EKBE_IDEL-BUDAT6(2) IT_EKBE_IDEL-BUDAT4(2) IT_EKBE_IDEL-BUDAT+0(4)
INTO G_DATE1 SEPARATED BY '.'.
IT_FINAL_IDEL-BUDAT = G_DATE1.
IT_FINAL_IDEL-PTGR = IT_EKBE_IDEL-BUDAT - IT_LIKP_IDEL-BLDAT.
APPEND IT_FINAL_IDEL.
ENDLOOP.
CLEAR: IT_FINAL_IDEL, IT_LIKP_IDEL, IT_EKBE_IDEL.
ENDLOOP.
ENDFORM. "MAIN_DATA
Regards
ds
01-30-2007 11:41 AM
hi
1.en u r using the INNED join... if the ALL THE TABLES CONTAINS THE entry then only u get the record... first
goto se16-->get select the records for the first table the, using this entrie check whether the entries are there in the 2nd and 3rd table also.... i thisk there is only 1 match in u r databese...
if it is the problem then use LEFT OUTER JOIN.
01-30-2007 11:47 AM
In form MAIN_DATA write statement APPEND IT_FINAL_IDEL. outside the loop of table IT_EKBE_IDEL.