Application Development 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: 

problem in linking tables: lfa1 and adrc.

Former Member
0 Kudos

hi all,

i couldnt find out wat the mistake in this progarm .can anyone pl tel me where i did mistake.

Actualy the requirement i, display the full address of vendor by using lifnr.

REPORT YTESTPROG2.

tables: lfa1,adrc.

parameters: KD_LIFNR type lfa1-lifnr.

DATA: BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

ANRED LIKE LFA1-ANRED,

NAME1 LIKE LFA1-NAME1,

NAME2 LIKE LFA1-NAME2,

NAME3 LIKE LFA1-NAME3,

NAME4 LIKE LFA1-NAME4,

stras like lfa1-stras,

ADRNR like lfa1-ADRNR,

ORT01 LIKE LFA1-ORT01,

ORT02 LIKE LFA1-ORT02,

PSTLZ LIKE LFA1-PSTLZ,

ADDRNUMBER LIKE ADRC-ADDRNUMBER,

HOUSE_NUM1 LIKE ADRC-HOUSE_NUM1,

  • STR_SUPPL1 like adrc-STR_SUPPL1,

STREET2 LIKE ADRC-STR_SUPPL1,

STREET3 LIKE ADRC-STR_SUPPL2,

STREET4 LIKE ADRC-STR_SUPPL3,

STREET5 LIKE ADRC-LOCATION,

REGION LIKE ADRC-REGION,

COUNTRY LIKE ADRC-COUNTRY,

end of itab.

SELECT LIFNR ANRED NAME1 NAME2 NAME3 NAME4 stras ort01 adrnr

ORT02 PSTLZ FROM LFA1"ADRCREGION ADRCCOUNTRY

INTO CORRESPONDING FIELDS OF TABLE ITAB

"FROM LFA1 "INNER JOIN ADRC

"LFA1ADRNR = ADRCADDRNUMBER

WHERE LIFNR eq KD_LIFNR.

select single adrc~STR_SUPPL1

"adrcSTR_SUPPL2 adrcSTR_SUPPL3 adrc~LOCATION

into itab-street2 from lfa1

inner join adrc on

lfa1adrnr = adrcaddrnumber

WHERE lfa1~lifnr = kd_lifnr.

loop at itab.

write:/ itab-lifnr,itab-ANRED,itab-NAME1,itab-ORT01,itab-ort02,itab-pstlz,itab-ADRNR,

itab-STREET2.

endloop.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Using same code, you have to use endselect and modify statement. See code below :


SELECT LIFNR ANRED NAME1 NAME2 NAME3 NAME4 stras ort01 adrnr
ORT02 PSTLZ FROM LFA1"ADRC~REGION ADRC~COUNTRY
INTO CORRESPONDING FIELDS OF TABLE ITAB
"FROM LFA1 "INNER JOIN ADRC
"LFA1~ADRNR = ADRC~ADDRNUMBER
WHERE LIFNR eq KD_LIFNR.

select single adrc~STR_SUPPL1
"adrc~STR_SUPPL2 adrc~STR_SUPPL3 adrc~LOCATION
into itab-street2 from lfa1
inner join adrc on
lfa1~adrnr = adrc~addrnumber
WHERE lfa1~lifnr = kd_lifnr.

modify itab. "New code added 
endselect. "New code added.
loop at itab.
write:/ itab-lifnr,itab-ANRED,itab-NAME1,itab-ORT01,itab-ort02,itab-pstlz,itab-ADRNR,
itab-STREET2.
endloop.

Thanks,

Sriram Ponna.

4 REPLIES 4

Former Member
0 Kudos

Hi Ranga,

The code should be quite simple actually. A simple demo is below:


TABLES: lfa1, adrc.

PARAMETERS: p_lifnr TYPE lfa1-lifnr.

DATA: BEGIN OF itab OCCURS 0,
      lifnr TYPE lfa1-lifnr,
      name1 TYPE adrc-name1,
      city1 TYPE adrc-city1,
      END OF itab.

SELECT a~lifnr b~name1 b~city1

FROM lfa1 AS a INNER JOIN adrc AS b
ON a~adrnr EQ b~addrnumber
INTO TABLE itab
WHERE a~lifnr EQ p_lifnr.

IF sy-subrc EQ 0.
  LOOP AT itab.
    WRITE:/ itab-lifnr, itab-name1 , itab-city1.
  ENDLOOP.
ENDIF.

You can add the extra fields you need into itab and the SELECT query.

Cheers,

Aditya

Former Member
0 Kudos

Hi,

Using same code, you have to use endselect and modify statement. See code below :


SELECT LIFNR ANRED NAME1 NAME2 NAME3 NAME4 stras ort01 adrnr
ORT02 PSTLZ FROM LFA1"ADRC~REGION ADRC~COUNTRY
INTO CORRESPONDING FIELDS OF TABLE ITAB
"FROM LFA1 "INNER JOIN ADRC
"LFA1~ADRNR = ADRC~ADDRNUMBER
WHERE LIFNR eq KD_LIFNR.

select single adrc~STR_SUPPL1
"adrc~STR_SUPPL2 adrc~STR_SUPPL3 adrc~LOCATION
into itab-street2 from lfa1
inner join adrc on
lfa1~adrnr = adrc~addrnumber
WHERE lfa1~lifnr = kd_lifnr.

modify itab. "New code added 
endselect. "New code added.
loop at itab.
write:/ itab-lifnr,itab-ANRED,itab-NAME1,itab-ORT01,itab-ort02,itab-pstlz,itab-ADRNR,
itab-STREET2.
endloop.

Thanks,

Sriram Ponna.

0 Kudos

hi Sriram Ponna,

Thanks for ur reply.i tried as u said.but i got a run time error.the error is table_illegal_statement.

if possible can u tel y this error is coming pl.Thanks for u great help.

Regds,

Ranganyahi.

0 Kudos

Try as below:


PARAMETERS: p_lifnr TYPE lifnr.

TYPES: BEGIN OF ty_ven_data,
        lifnr LIKE lfa1-lifnr,
        anred LIKE lfa1-anred,
        name1 LIKE lfa1-name1,
        name2 LIKE lfa1-name2,
        name3 LIKE lfa1-name3,
        name4 LIKE lfa1-name4,
        stras LIKE lfa1-stras,
        adrnr LIKE lfa1-adrnr,
        ort01 LIKE lfa1-ort01,
        ort02 LIKE lfa1-ort02,
        pstlz LIKE lfa1-pstlz,
        addrnumber LIKE adrc-addrnumber,
        house_num1 LIKE adrc-house_num1,
        str_suppl1 LIKE adrc-str_suppl1,
*        str_suppl2 LIKE ADRC-STR_SUPPL1,
        str_suppl2 LIKE adrc-str_suppl2,
        str_suppl3 LIKE adrc-str_suppl3,
        location LIKE adrc-location,
        region LIKE adrc-region,
        country LIKE adrc-country,
       END OF ty_ven_data.

DATA: i_ven_data TYPE TABLE OF ty_ven_data,
      wa_ven_data TYPE ty_ven_data.

START-OF-SELECTION.

  SELECT a~lifnr a~anred a~name1 a~name2 a~name3 a~name4
         a~stras a~adrnr a~ort01 a~ort02 a~pstlz
         b~addrnumber b~house_num1 b~str_suppl1 b~str_suppl2
         b~str_suppl3 b~location b~region b~country
         INTO TABLE i_ven_data
         FROM lfa1 AS a
         INNER JOIN adrc AS b
         ON a~adrnr = b~addrnumber
         WHERE a~lifnr = p_lifnr.

Regards

Eswar