2013 Jun 12 1:24 PM
hi,
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab TRANSPORTING name12.
ENDIF.
ENDLOOP.
But I am unable to get name1.
Regards
kalpana
hi,
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab TRANSPORTING name12.
ENDIF.
ENDLOOP.
But I am unable to get name1.
Regards
kalpana
2013 Jun 12 2:12 PM
Please put a break inside the if and verify that there is a successful call of the select.
Neal
2013 Jun 12 2:16 PM
Hi,
Debug and see whether select is successful or not.
Also i assume itab is an internal table with header line, if not use this
modify <internal table> from <work area> transporting <field>
BR,
Ankit.
2013 Jun 12 2:18 PM
Hi Kalpana,
Use CONVERSION_EXIT_ALPHA_INPUT for Kunnr ... if you have populated it some times it looses its conversion.
BR
2013 Jun 12 3:02 PM
SELECT SINGLE name1 INTO itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
2013 Jun 12 3:54 PM
in the into clause use itan-name12 instead of name12.
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab TRANSPORTING name12.
ENDIF.
ENDLOOP.
2013 Jun 12 4:14 PM
Your code should be like below;
LOOP AT itab WHERE fkart = 'ZIV'.
*Call CONV_EXIT_ALPHA_INPUT if kunag does not have leading zeros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab-kunag
IMPORTING
output = itab-kunag
SELECT SINGLE name1 INTO itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab TRANSPORTING name12.
ENDLOOP.
Hope this helps. To check whether it works, you can always debug and see if the values are getting passed properly.
Regards,
Karthik
2013 Jun 29 10:12 AM
LOOP AT itab .
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO wa_itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab FROM wa_itab TRANSPORTING name12.
ENDIF.
ENDLOOP.
2013 Jun 29 10:56 AM
Hi Kalpana,
Try this code.
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr = itab-kunag.
itab-name1 = name12.
MODIFY itab TRANSPORTING name1.
ENDIF.
ENDLOOP.
2013 Jun 29 12:22 PM
2013 Jul 01 10:20 AM
2013 Jul 01 12:09 PM
Hi Kalpana,
In Debugger mode check the KUNAG value and also check the KNA1 table entry for KUNNR. You might need to remove leading ZERO's or might need to append leading ZERO's w.r.t data in KNA1 table before select statement. Also check the data type of variable 'name12'.
FM: CONVERSION_EXIT_ALPHA_INPUT (to add leading zeros)
FM: CONVERSION_EXIT_ALPHA_OUTPUT(to remove leading zeros)
Try the below code:
DATA: name12 type KNA1-NAME1.
Field-Symbols: <LFS_ITAB> like line of itab.
LOOP AT itab assigning <LFS_ITAB>.
IF <LFS_ITAB>-FKART = 'ZIV'.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr = <LFS_ITAB>-kunag.
IF SY-SUBRC = 0.
<LFS_ITAB>-<your-field-name> = name12.
ENDIF.
ENDIF.
ENDLOOP.
Note: Using select query inside loop will affect your program performance. Fetch appropriate data from KNA1 before doing LOOP and then use READ TABLE inside loop.
Regards,
M Nair
2013 Jul 01 1:38 PM
Hi,
Looping and modifying the same table is not an good coding practice.
Select query inside the loop is not advisable.
Make sure that KUNAG and KUNNR are of same type.
data:itab1 type standard table of kunnr,
watab1 type stnadard table of kunnr.
*Conversion routine for customer
loop at itab where fkart = 'ZIV'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input =itab-kunag
IMPORTING
output = itab-kunag.
endloop.
if itab is not initial.
select name1 from kna1 into itab1
for all entries in itab where kunnr = itab-kunag
and fkart = 'ZIV'.
if sy-subrc eq 0.
loop at itab1 into watab1.
itab-name12 = watab1-name1.
MODIFY itab TRANSPORTING name12.
clear watab, itab.
endloop.
endif.
endif.
2013 Jul 01 2:04 PM
Hi Kalapana,
Try with the following code.
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr = itab-kunag.
if sy-subrc = 0.
itab-name1 = name12.
MODIFY itab TRANSPORTING name1.
endif.
ENDIF.
ENDLOOP.
before modifying the value check sy-subrc otherwise it willl update the null values.
Regards,
Gurunath
2013 Jul 01 7:43 PM
HI Kalpana,
Try with this its always a better practise to mention the index keyword while using modify statement.
LOOP AT itab .
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO wa_itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab FROM wa_itab TRANSPORTING name12 index sy-tabix..
ENDIF.
ENDLOOP.
Regards,
Kotni Srikant
2013 Jul 02 7:00 AM
Kotni Srikant wrote:
HI Kalpana,
Try with this its always a better practise to mention the index keyword while using modify statement.
Not always good practice. What if ITAB was a hashed table?
2015 Jan 16 11:15 AM
Hi Mathew,
I was talking about standard internal tables not about hashed tables as we rarely used hashed table when we have huge amount of data.
Thanks,
Kotni Srikant
2013 Jul 02 8:27 AM
Hii use this
LOOP AT itab where fkart eq 'ZIV'
clear : name12.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input =itab-kunag
IMPORTING
output = itab-kunag.
SELECT SINGLE name1 INTO name12 FROM kna1 WHERE kunnr eq itab-kunag
and spras eq SY-LANGU
MODIFY itab TRANSPORTING name12.
ENDLOOP.
2015 Jan 16 11:50 AM
2015 Jan 16 12:47 PM
hi kalpana,
I think your code should be like this
LOOP AT itab.
IF itab-fkart = 'ZIV'.
SELECT SINGLE name1 INTO itab-name12 FROM kna1 WHERE kunnr = itab-kunag.
MODIFY itab.
ENDIF.
ENDLOOP.
name12 is assumed as workarea field. (itab is considered as internal table as well as workarea)
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |