Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Unable to retrieve data

Former Member
0 Likes
2,725

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

19 REPLIES 19
Read only

Former Member
0 Likes
2,693

Please put a break inside the if and verify that there is a successful call of the select.

Neal

Read only

Former Member
0 Likes
2,693

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.

Read only

Former Member
0 Likes
2,693

Hi Kalpana,

Use CONVERSION_EXIT_ALPHA_INPUT for Kunnr ... if you have populated it some times it looses its conversion.

BR

Read only

Former Member
0 Likes
2,693

SELECT SINGLE name1 INTO itab-name12 FROM kna1 WHERE kunnr = itab-kunag.

Read only

former_member188827
Active Contributor
0 Likes
2,693

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.

Read only

Former Member
0 Likes
2,693

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

Read only

Former Member
0 Likes
2,693

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.

Read only

former_member209120
Active Contributor
0 Likes
2,693

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.

Read only

Former Member
0 Likes
2,693

This message was moderated.

Read only

former_member209120
Active Contributor
0 Likes
2,693

Hi Kalpana,

Your problem solved or not?

Regards,

Ramesh.T

Read only

former_member216769
Participant
0 Likes
2,693

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

Read only

Former Member
0 Likes
2,693

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.

Read only

gurunathkumar_dadamu
Active Contributor
0 Likes
2,693

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

Read only

0 Likes
2,693

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

Read only

0 Likes
2,693

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?

Read only

0 Likes
2,693

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

Read only

Former Member
0 Likes
2,693

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.

Read only

Former Member
0 Likes
2,693

Hi,

MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2 ...].

Read only

Former Member
0 Likes
2,693

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)