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: 

How to get multiple entries from address table into file ?

former_member342013
Contributor
0 Kudos
1,697

Hi All,

Im not finding the way to get multiple entries from address tables (ADR2 , ADR3 and ADR6) .....


ADR6 table data is as below

ADDRNUMBERPERSNUMBERCONSNUMBEREmail
000106927900010692780021@sdn.com
000106927900010692780032@sdn.com
000106927900010692780043@sdn.com

ADR2 Table is given below

ADDRNUMBERPERSNUMBERCONSNUMBERTel_Number
0001069279000106927800112
00010692790001069278002123

ADR3 Table is given below

ADDRNUMBERPERSNUMBERCONSNUMBERFAX_NUMBER
000106927900010692780011111111
0001069279000106927800222


Now my requirement is as shown below ...... (For respective Partner and address number i need all the data from above tables)

PARTNERTEL_NUMBERFAX_NUMBERSMTP_ADDRADDRNUMBERPARTNER1CONSNUMBER
112111111110692790011830185001
1123221@sdn.com10692790011830185002
1 2@sdn.com10692790011830185003
1 3@sdn.com10692790011830185004



Can anybody help on this issue ? im not getting the logic to do this .

Code is given below

loop at it_final1.

it_final-partner1 = it_final1-partner1.

clear : it_but000.

read table it_but000 with key partner = it_final1-partner2.

if sy-subrc eq 0.

it_final-partner = it_but000-partner.

loop at t_but020.

if sy-subrc eq 0.

it_final-ADDRNUMBER = t_but020-ADDRNUMBER.

endif.

clear : t_adr2, t_adr2-TEL_NUMBER.

**************Issue im facing here - reading only one record***************

read table T_ADR2 with key ADDRNUMBER = t_but020-addrnumber.

if sy-subrc eq 0.

it_final-TEL_NUMBER = t_adr2-TEL_NUMBER .

endif.

clear: t_adr3.

read table T_ADR3 with key ADDRNUMBER = t_but020-addrnumber.

if sy-subrc eq 0.

it_final-FAX_NUMBER = t_adr3-FAX_NUMBER.

endif.

read table T_ADR6 with key ADDRNUMBER = t_but020-addrnumber.

if sy-subrc eq 0.

it_final-SMTP_ADDR = t_adr6-SMTP_ADDR.

************************End of issue ***********************

read table IT_BUT100 with key partner = t_but020-partner.

if sy-subrc eq 0.

it_final-RLTYP = it_but100-RLTYP.

read table t_TB003T with key ROLE = it_but100-rltyp.

*                             and SPRAS = 'EN'.

if sy-subrc eq 0.

  it_final-RELTYP = t_TB003T-RLTXT.

endif.

endif.

append it_final.

endloop.

endif.


4 REPLIES 4

arivazhagan_sivasamy
Active Contributor
0 Kudos
902

Hi Smitha,


If you want to display more than one row in internal table please use loop at statement, instead of read table.

Arivazhagan S

Former Member
0 Kudos
902

Hi,

Use the function module to get the partner address: BAPI_BUPA_ADDRESSES_GET

By the way its very simple!

LOOP AT adr6.

read table ADR2 with key adrnr = adr6-adrnr

                                          persunumber = adr6-adrnr

if sy-subrc = 0.

move fields to final internal table

endif.

read table ADR3 with key adrnr = adr6-adrnr

                                          persunumber = adr6-adrnr

if sy-subrc = 0.

move fields to final internal table

endif.

finally adr6 fields to final internal table.

ENDLOOP.

Former Member
0 Kudos
902

Hi

Can you check with below sample code .

TABLES : ADR2 , ADR3 , ADR6.

TYPES: BEGIN OF TY_ITAB,

       ADDRNUMBER TYPE AD_ADDRNUM,

       PERSNUMBER TYPE AD_PERSNUM,

       CONSNUMBER TYPE AD_CONSNUM,

       TEL_NUMBER TYPE AD_TLNMBR,

       FAX_NUMBER TYPE AD_FXNMBR,

       SMTP_ADDR TYPE AD_SMTPADR,

  END OF TY_ITAB.

TYPES : BEGIN OF TY_FINAL,

        PARTNER TYPE SY-TABIX,

        ADDRNUMBER TYPE AD_ADDRNUM,

        PERSNUMBER TYPE AD_PERSNUM,

        CONSNUMBER TYPE AD_CONSNUM,

        TEL_NUMBER TYPE AD_TLNMBR,

        FAX_NUMBER TYPE AD_FXNMBR,

        SMTP_ADDR TYPE AD_SMTPADR,

  END OF TY_FINAL.

DATA : ITAB TYPE STANDARD TABLE OF TY_ITAB ,

       WA TYPE TY_ITAB,

       IFINAL TYPE STANDARD TABLE OF TY_FINAL ,

       WA_FINAL TYPE TY_FINAL.

DATA : INC TYPE SY-TABIX,

       FLAG TYPE C.

SELECT-OPTIONS : S_ADDNUM FOR ADR3-ADDRNUMBER .

SELECT ADR2~ADDRNUMBER

       ADR2~PERSNUMBER

       ADR2~CONSNUMBER

       ADR2~TEL_NUMBER

       ADR3~FAX_NUMBER

       ADR6~SMTP_ADDR

      INTO CORRESPONDING FIELDS OF TABLE ITAB

    FROM ( ADR2

           INNER JOIN ADR3

           ON  ADR3~ADDRNUMBER = ADR2~ADDRNUMBER

           AND ADR3~CONSNUMBER = ADR2~CONSNUMBER

           AND ADR3~DATE_FROM = ADR2~DATE_FROM

           AND ADR3~PERSNUMBER = ADR2~PERSNUMBER

           INNER JOIN ADR6

           ON  ADR6~ADDRNUMBER = ADR3~ADDRNUMBER

           AND ADR6~CONSNUMBER = ADR3~CONSNUMBER

           AND ADR6~DATE_FROM = ADR3~DATE_FROM

           AND ADR6~PERSNUMBER = ADR3~PERSNUMBER )

         WHERE ADR2~ADDRNUMBER IN S_ADDNUM                " Change as per your requirement

         ORDER BY ADR2~ADDRNUMBER .

LOOP AT ITAB INTO WA .

ON CHANGE OF WA-ADDRNUMBER.

    INC = INC + 1.

    WA_FINAL-ADDRNUMBER = WA-ADDRNUMBER .

    WA_FINAL-PERSNUMBER = WA-PERSNUMBER .

    WA_FINAL-CONSNUMBER = WA-CONSNUMBER .

    WA_FINAL-TEL_NUMBER = WA-TEL_NUMBER .

    WA_FINAL-FAX_NUMBER = WA-FAX_NUMBER .

    WA_FINAL-SMTP_ADDR =  WA-SMTP_ADDR .

    WA_FINAL-PARTNER = INC .

    APPEND WA_FINAL TO IFINAL .

    CLEAR : WA , WA_FINAL .

    FLAG = 'X'.

  ENDON.

   IF FLAG <> 'X'.

    MOVE-CORRESPONDING WA TO WA_FINAL .

    WA_FINAL-PARTNER = INC .

    APPEND WA_FINAL TO IFINAL .

    CLEAR : WA_FINAL , WA.

ENDIF.

CLEAR : FLAG.

ENDLOOP.

LOOP AT IFINAL INTO WA_FINAL.

  WRITE : / WA_FINAL-PARTNER ,'|', WA_FINAL-ADDRNUMBER , '|' , WA_FINAL-PERSNUMBER ,'|', WA_FINAL-CONSNUMBER ,'|',WA_FINAL-TEL_NUMBER ,'|',WA_FINAL-FAX_NUMBER,'|', WA_FINAL-SMTP_ADDR .

  CLEAR : WA_FINAL.

ENDLOOP.

Regard's

Smruti

former_member342013
Contributor
0 Kudos
902

Thank u all for the replies ....

I have used Do and End Do .. which resolved my problem .. Inner join will not help on this ......

Regards

smitha