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

Copy data from 4 internal tables

Former Member
0 Likes
637

Hi Experts,

I need to split a database field into 2 separate fields on the frontend and display it in an alv report.

For this i used 4 internal tables. first one for regular fields and rest 3 of them for the split fields.

Now the problem is, if i use 1 loop and insert workarea in it, the second record overwrites the first and if i use 3 internal tables, the looping is improper and it gives me duplicate entries in the report.

delete adjacent duplicate is also not working.

i am pasting the code. kindly help.

thx

&----


*& Report YVENDRALVRPTFINAL

*&

&----


*&

*&

&----


REPORT YVENDRALVRPTFINAL.

TYPE-POOLS: SLIS.

DATA: program LIKE sy-repid.

DATA: fcat TYPE slis_fieldcat_alv.

DATA: fieldcat TYPE TABLE OF slis_fieldcat_alv.

DATA: layout TYPE slis_layout_alv.

Tables: LFA1,

LFB1,

T002T.

DATA: Begin of itab1 occurs 0,

LIFNR LIKE LFA1-LIFNR,

BUKRS LIKE LFB1-BUKRS,

KTOKK LIKE LFA1-KTOKK,

ANRED LIKE LFA1-ANRED,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

  • STRAS LIKE LFA1-STRAS, " HOUSE and STREET NUMBER

  • STRAS1 LIKE LFA1-STRAS," STREET NUMBER

PSTLZ LIKE LFA1-PSTLZ,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

LAND1 LIKE LFA1-LAND1,

SPTXT LIKE T002T-SPTXT,

  • TELF1 LIKE LFA1-TELF1,

  • TELF2 LIKE LFA1-TELF2,

  • TELFX LIKE LFA1-TELFX,

  • TELTX LIKE LFA1-TELTX,

SMTP_SRCH LIKE ADR6-SMTP_SRCH,

STCEG LIKE LFA1-STCEG,

BRSCH LIKE LFA1-BRSCH,

END OF itab1.

DATA: wrkarea1 LIKE LINE OF itab1.

DATA: Begin of itab2 occurs 0,

LIFNR LIKE LFA1-LIFNR,

BUKRS LIKE LFB1-BUKRS,

KTOKK LIKE LFA1-KTOKK,

ANRED LIKE LFA1-ANRED,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

  • STRAS LIKE LFA1-STRAS, " HOUSE and STREET NUMBER

  • STRAS1 LIKE LFA1-STRAS," STREET NUMBER

STR LIKE LFA1-STRAS,

HOU LIKE LFA1-STRAS,

PSTLZ LIKE LFA1-PSTLZ,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

LAND1 LIKE LFA1-LAND1,

SPTXT LIKE T002T-SPTXT,

  • *TELF1 LIKE LFA1-TELF1,

PHONE LIKE LFA1-TELF1,

PHONE_EXT LIKE LFA1-TELF1,

  • *TELFX LIKE LFA1-TELFX,

FAX LIKE LFA1-TELFX,

FAX_EXT LIKE LFA1-TELFX,

  • * TELTX LIKE LFA1-TELTX,

SMTP_SRCH LIKE ADR6-SMTP_SRCH,

STCEG LIKE LFA1-STCEG,

BRSCH LIKE LFA1-BRSCH,

END OF itab2.

DATA: wrkarea2 LIKE LINE OF itab2.

DATA: STREET1 TYPE STRING,

HOUSE1 TYPE STRING,

PHONE1 TYPE STRING,

PHONE_EXT1 TYPE STRING,

FAX1 TYPE STRING,

FAX_EXT1 TYPE STRING.

  • DATA: BEGIN OF ADRDTL,

  • HOU TYPE LFA1-STRAS,

  • STR TYPE LFA1-STRAS,

  • PHONE TYPE LFA1-TELF1,

*PHONE_EXT TYPE LFA1-TELF1,

*FAX TYPE LFA1-TELFX,

*FAX_EXT TYPE LFA1-TELFX,

*END OF ADRDTL.

DATA: BEGIN OF itabhs occurs 0,

HSESTREET LIKE LFA1-STRAS,

END OF itabhs.

DATA: wahs LIKE LINE OF itabhs.

DATA: BEGIN OF itabph occurs 0,

PHONENPHEXT TYPE LFA1-TELF1,

END OF itabph.

DATA: waph LIKE LINE OF itabhs.

DATA: BEGIN OF itabfx occurs 0,

FAXNFAXEXT TYPE LFA1-TELFX,

END OF itabfx.

DATA: wafx LIKE LINE OF itabhs.

  • DATA: THREE LIKE LINE OF itab2,

  • FOUR LIKE LINE OF itab2.

  • DATA: THREE TYPE LFA1-STRAS,

  • FOUR TYPE LFA1-STRAS.

SELECT-OPTIONS vendor FOR LFA1-LIFNR.

*parameter vendor type LFA1-LIFNR.

DATA: wa LIKE LFA1-STRAS,

wa1 LIKE LFA1-STRAS,

wa2 LIKE LFA1-STRAS.

DATA: BEGIN OF itabhsnew occurs 0,

STR LIKE LFA1-STRAS,

HOU LIKE LFA1-STRAS,

END OF itabhsnew.

DATA: wahsnew LIKE LINE OF itabhsnew.

DATA: BEGIN OF itabphnew occurs 0,

PHONE LIKE LFA1-TELF1,

PHONE_EXT LIKE LFA1-TELF1,

END OF itabphnew.

DATA: waphnew LIKE LINE OF itabphnew.

DATA: BEGIN OF itabfxnew occurs 0,

FAX LIKE LFA1-TELFX,

FAX_EXT LIKE LFA1-TELFX,

END OF itabfxnew.

DATA: wafxnew LIKE LINE OF itabfxnew.

START-OF-SELECTION.

SELECT LFA1STRAS FROM LFA1 INTO TABLE itabhs where LFA1LIFNR IN vendor.

LOOP at itabhs into wahs.

SPLIT wahs AT SPACE INTO STREET1 HOUSE1 .

MOVE STREET1 TO wahsnew-STR.

MOVE HOUSE1 TO wahsnew-HOU.

INSERT wahsnew INTO TABLE itabhsnew.

ENDLOOP.

SELECT LFA1TELF1 FROM LFA1 INTO TABLE itabph where LFA1LIFNR IN vendor.

LOOP at itabph into waph.

SPLIT waph AT '-' INTO PHONE1 PHONE_EXT1.

MOVE PHONE1 TO waphnew-PHONE.

MOVE PHONE_EXT1 TO waphnew-PHONE_EXT.

INSERT waphnew INTO TABLE itabphnew.

ENDLOOP.

SELECT LFA1TELFX FROM LFA1 INTO TABLE itabfx where LFA1LIFNR IN vendor.

LOOP at itabfx into wafx.

SPLIT wafx AT '-' INTO FAX1 FAX_EXT1.

MOVE FAX1 TO wafxnew-FAX.

MOVE FAX_EXT1 TO wafxnew-FAX_EXT.

INSERT wafxnew INTO TABLE itabfxnew.

ENDLOOP.

*MOVE STREET1 TO ADRDTL-STR.

*MOVE HOUSE1 TO ADRDTL-HOU.

*MOVE PHONE1 TO ADRDTL-PHONE.

*MOVE PHONE_EXT1 TO ADRDTL-PHONE_EXT.

*MOVE FAX1 TO ADRDTL-FAX.

*MOVE FAX_EXT1 TO ADRDTL-FAX_EXT.

SELECT LFA1LIFNR LFB1BUKRS LFA1KTOKK LFA1ANRED LFA1~NAME1

LFA1SORTL LFA1PSTLZ LFA1ORT01 LFA1REGIO

LFA1~LAND1

T002T~SPTXT

  • LFA1TELF1 LFA1TELF2 LFA1TELFX LFA1TELTX

ADR6~SMTP_SRCH

LFA1STCEG LFA1BRSCH

FROM LFA1

INNER JOIN T002T ON LFA1SPRAS = T002TSPRSL AND T002T~SPRAS = 2

INNER JOIN LFB1 ON LFA1LIFNR = LFB1LIFNR

INNER JOIN ADR6 ON LFA1ADRNR = ADR6ADDRNUMBER

INTO TABLE itab1 WHERE LFB1~LIFNR IN vendor.

LOOP AT itab1 INTO wrkarea1.

MOVE-CORRESPONDING wrkarea1 TO wrkarea2.

*MOVE STREET1 TO wrkarea2-STR.

*MOVE HOUSE1 TO wrkarea2-HOU.

*MOVE PHONE1 TO wrkarea2-PHONE.

*MOVE PHONE_EXT1 TO wrkarea2-PHONE_EXT.

*MOVE FAX1 TO wrkarea2-FAX.

*MOVE FAX_EXT1 TO wrkarea2-FAX_EXT.

*MOVE ADRDTL-STR TO wrkarea2-STR.

*MOVE ADRDTL-HOU TO wrkarea2-HOU.

*MOVE ADRDTL-PHONE TO wrkarea2-PHONE.

*MOVE ADRDTL-PHONE_EXT TO wrkarea2-PHONE_EXT.

*MOVE ADRDTL-FAX TO wrkarea2-FAX.

*MOVE ADRDTL-FAX_EXT TO wrkarea2-FAX_EXT.

*MOVE-CORRESPONDING wahs TO wrkarea2.

*MOVE-CORRESPONDING waph TO wrkarea2.

*MOVE-CORRESPONDING wafx TO wrkarea2.

*MOVE-CORRESPONDING wahsnew TO wrkarea2.

*MOVE-CORRESPONDING waphnew TO wrkarea2.

*MOVE-CORRESPONDING wafxnew TO wrkarea2.

*MOVE itabhsnew TO itab2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabhsnew INTO wahsnew.

MOVE-CORRESPONDING wahsnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabphnew into waphnew.

MOVE-CORRESPONDING waphnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabfxnew into wafxnew.

MOVE-CORRESPONDING wafxnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

*loop at itabhsnew.

*itab2-HOU = itabhsnew-HOU.

*itab2-str = itabhsnew-str.

*append itab2.

*endloop.

*LOOP AT itabhsnew.

*itab2-HOU = itabhsnew-HOU.

*itab2-str = itabhsnew-str.

*append itab2.

*ENDLOOP.

*delete adjacent duplicates FROM itab2 COMPARING HOU STR PHONE PHONE_EXT FAX FAX_EXT.

*LOOP AT itab2.

*INSERT wrkarea2 INTO TABLE itab2.

*endloop.

*WRITE: THREE.

*new-line.

*WRITE: four.

*new-line.

*WRITE: five.

program = SY-REPID.

*PERFORM SELECT.

*loop at itab2.

*write:/ itab2-LIFNR,

  • itab2-BUKRS,

  • itab2-KTOKK,

  • itab2-ANRED,

  • itab2-NAME1,

  • itab2-SORTL,

  • itab2-HOU,

  • itab2-STR,

  • itab2-PSTLZ,

  • itab2-ORT01,

  • itab2-REGIO,

  • itab2-LAND1,

    • itab2-SPTXT,

    • itab2-TELF1,

*itab2-PHONE,

*itab2-PHONE_EXT,

    • itab2-TELF2,

    • itab2-TELFX,

*itab2-FAX,

*itab2-FAX_EXT,

    • itab2-TELTX,

    • itab2-SMTP_SRCH,

  • itab2-STCEG,

  • itab2-BRSCH.

*endloop.

PERFORM CATALOG.

PERFORM LAYOUTMAIN.

PERFORM DISPLAY.

*----


*----


  • LFA1STRAS LFA1STRAS

*FORM SELECT.

  • SELECT LFA1LIFNR LFB1BUKRS LFA1KTOKK LFA1ANRED LFA1~NAME1

  • *LFA1SORTL LFA1PSTLZ LFA1ORT01 LFA1REGIO

  • *LFA1LAND1 T002TSPTXT LFA1TELF1 LFA1TELF2 LFA1TELFX LFA1TELTX

  • *ADR6SMTP_SRCH LFA1STCEG LFA1~BRSCH

  • *FROM LFA1

  • *INNER JOIN T002T ON LFA1SPRAS = T002TSPRSL AND T002T~SPRAS = 2

  • *INNER JOIN LFB1 ON LFA1LIFNR = LFB1LIFNR

  • INNER JOIN ADR6 ON LFA1ADRNR = ADR6ADDRNUMBER

  • *INTO TABLE itab1 WHERE LFA1~LIFNR IN vendor.

*LOOP AT itab2.

*MOVE itab1 TO itab2.

*APPEND itab2.

*MOVE-CORRESPONDING ADRDTL TO itab2.

*APPEND itab2.

*MOVE-CORRESPONDING ADRDTL TO itab2.

*APPEND itab2.

*ENDLOOP.

*LOOP AT itab1 INTO wrkarea1.

*MOVE-CORRESPONDING wrkarea1 TO wrkarea2.

*ENDLOOP.

*MOVE-CORRESPONDING adrdtl TO wrkarea2.

*LOOP AT itab2.

*INSERT wrkarea2 INTO TABLE itab2.

*ENDLOOP.

*ENDFORM.

FORM CATALOG.

fcat-tabname = 'LFA1'.

fcat-fieldname ='LIFNR'.

fcat-seltext_m = 'Vendor Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFB1'.

fcat-fieldname ='BUKRS'.

fcat-seltext_m = 'Company Code'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='KTOKK'.

fcat-seltext_m = 'Account Group'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='ANRED'.

fcat-seltext_m = 'Title'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='NAME1'.

fcat-seltext_m = 'Name'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='SORTL'.

fcat-seltext_m = 'Search Term'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='HOU'.

fcat-seltext_m = 'Street'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='STR'.

fcat-seltext_m = 'House Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PSTLZ'.

fcat-seltext_m = 'Postal Code'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='ORT01'.

fcat-seltext_m = 'City'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='REGIO'.

fcat-seltext_m = 'Region or State'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='LAND1'.

fcat-seltext_m = 'Country'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='SPTXT'.

fcat-seltext_m = 'Language'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PHONE'.

fcat-seltext_m = 'Telephone'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PHONE_EXT'.

fcat-seltext_m = 'Extension'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='FAX'.

fcat-seltext_m = 'Fax Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='FAX_EXT'.

fcat-seltext_m = 'Extension'.

APPEND fcat TO fieldcat.

fcat-tabname = 'ADR6'.

fcat-fieldname ='SMTP_SRCH'.

fcat-seltext_m = 'E-Mail'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='STCEG'.

fcat-seltext_m = 'VAT Registration Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='BRSCH'.

fcat-seltext_m = 'Industry Type'.

APPEND fcat TO fieldcat.

ENDFORM.

FORM LAYOUTMAIN.

layout-zebra = 'X'.

*layout-edit= 'X'.

*layout-zebra = 'X'.

*layout-zebra = 'X'.

ENDFORM.

FORM DISPLAY.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = 'program'

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'VENDOR DETAILS'

  • I_GRID_SETTINGS =

IS_LAYOUT = layout

IT_FIELDCAT = fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = itab2.

  • EXCEPTIONS

  • PROGRAM_ERROR = 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.

ENDFORM.

Hi Experts,

I need to split a database field into 2 separate fields on the frontend and display it in an alv report.

For this i used 4 internal tables. first one for regular fields and rest 3 of them for the split fields.

Now the problem is, if i use 1 loop and insert workarea in it, the second record overwrites the first and if i use 3 internal tables, the looping is improper and it gives me duplicate entries in the report.

delete adjacent duplicate is also not working.

i am pasting the code. kindly help.

thx

&----


*& Report YVENDRALVRPTFINAL

*&

&----


*&

*&

&----


REPORT YVENDRALVRPTFINAL.

TYPE-POOLS: SLIS.

DATA: program LIKE sy-repid.

DATA: fcat TYPE slis_fieldcat_alv.

DATA: fieldcat TYPE TABLE OF slis_fieldcat_alv.

DATA: layout TYPE slis_layout_alv.

Tables: LFA1,

LFB1,

T002T.

DATA: Begin of itab1 occurs 0,

LIFNR LIKE LFA1-LIFNR,

BUKRS LIKE LFB1-BUKRS,

KTOKK LIKE LFA1-KTOKK,

ANRED LIKE LFA1-ANRED,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

  • STRAS LIKE LFA1-STRAS, " HOUSE and STREET NUMBER

  • STRAS1 LIKE LFA1-STRAS," STREET NUMBER

PSTLZ LIKE LFA1-PSTLZ,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

LAND1 LIKE LFA1-LAND1,

SPTXT LIKE T002T-SPTXT,

  • TELF1 LIKE LFA1-TELF1,

  • TELF2 LIKE LFA1-TELF2,

  • TELFX LIKE LFA1-TELFX,

  • TELTX LIKE LFA1-TELTX,

SMTP_SRCH LIKE ADR6-SMTP_SRCH,

STCEG LIKE LFA1-STCEG,

BRSCH LIKE LFA1-BRSCH,

END OF itab1.

DATA: wrkarea1 LIKE LINE OF itab1.

DATA: Begin of itab2 occurs 0,

LIFNR LIKE LFA1-LIFNR,

BUKRS LIKE LFB1-BUKRS,

KTOKK LIKE LFA1-KTOKK,

ANRED LIKE LFA1-ANRED,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

  • STRAS LIKE LFA1-STRAS, " HOUSE and STREET NUMBER

  • STRAS1 LIKE LFA1-STRAS," STREET NUMBER

STR LIKE LFA1-STRAS,

HOU LIKE LFA1-STRAS,

PSTLZ LIKE LFA1-PSTLZ,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

LAND1 LIKE LFA1-LAND1,

SPTXT LIKE T002T-SPTXT,

  • *TELF1 LIKE LFA1-TELF1,

PHONE LIKE LFA1-TELF1,

PHONE_EXT LIKE LFA1-TELF1,

  • *TELFX LIKE LFA1-TELFX,

FAX LIKE LFA1-TELFX,

FAX_EXT LIKE LFA1-TELFX,

  • * TELTX LIKE LFA1-TELTX,

SMTP_SRCH LIKE ADR6-SMTP_SRCH,

STCEG LIKE LFA1-STCEG,

BRSCH LIKE LFA1-BRSCH,

END OF itab2.

DATA: wrkarea2 LIKE LINE OF itab2.

DATA: STREET1 TYPE STRING,

HOUSE1 TYPE STRING,

PHONE1 TYPE STRING,

PHONE_EXT1 TYPE STRING,

FAX1 TYPE STRING,

FAX_EXT1 TYPE STRING.

  • DATA: BEGIN OF ADRDTL,

  • HOU TYPE LFA1-STRAS,

  • STR TYPE LFA1-STRAS,

  • PHONE TYPE LFA1-TELF1,

*PHONE_EXT TYPE LFA1-TELF1,

*FAX TYPE LFA1-TELFX,

*FAX_EXT TYPE LFA1-TELFX,

*END OF ADRDTL.

DATA: BEGIN OF itabhs occurs 0,

HSESTREET LIKE LFA1-STRAS,

END OF itabhs.

DATA: wahs LIKE LINE OF itabhs.

DATA: BEGIN OF itabph occurs 0,

PHONENPHEXT TYPE LFA1-TELF1,

END OF itabph.

DATA: waph LIKE LINE OF itabhs.

DATA: BEGIN OF itabfx occurs 0,

FAXNFAXEXT TYPE LFA1-TELFX,

END OF itabfx.

DATA: wafx LIKE LINE OF itabhs.

  • DATA: THREE LIKE LINE OF itab2,

  • FOUR LIKE LINE OF itab2.

  • DATA: THREE TYPE LFA1-STRAS,

  • FOUR TYPE LFA1-STRAS.

SELECT-OPTIONS vendor FOR LFA1-LIFNR.

*parameter vendor type LFA1-LIFNR.

DATA: wa LIKE LFA1-STRAS,

wa1 LIKE LFA1-STRAS,

wa2 LIKE LFA1-STRAS.

DATA: BEGIN OF itabhsnew occurs 0,

STR LIKE LFA1-STRAS,

HOU LIKE LFA1-STRAS,

END OF itabhsnew.

DATA: wahsnew LIKE LINE OF itabhsnew.

DATA: BEGIN OF itabphnew occurs 0,

PHONE LIKE LFA1-TELF1,

PHONE_EXT LIKE LFA1-TELF1,

END OF itabphnew.

DATA: waphnew LIKE LINE OF itabphnew.

DATA: BEGIN OF itabfxnew occurs 0,

FAX LIKE LFA1-TELFX,

FAX_EXT LIKE LFA1-TELFX,

END OF itabfxnew.

DATA: wafxnew LIKE LINE OF itabfxnew.

START-OF-SELECTION.

SELECT LFA1STRAS FROM LFA1 INTO TABLE itabhs where LFA1LIFNR IN vendor.

LOOP at itabhs into wahs.

SPLIT wahs AT SPACE INTO STREET1 HOUSE1 .

MOVE STREET1 TO wahsnew-STR.

MOVE HOUSE1 TO wahsnew-HOU.

INSERT wahsnew INTO TABLE itabhsnew.

ENDLOOP.

SELECT LFA1TELF1 FROM LFA1 INTO TABLE itabph where LFA1LIFNR IN vendor.

LOOP at itabph into waph.

SPLIT waph AT '-' INTO PHONE1 PHONE_EXT1.

MOVE PHONE1 TO waphnew-PHONE.

MOVE PHONE_EXT1 TO waphnew-PHONE_EXT.

INSERT waphnew INTO TABLE itabphnew.

ENDLOOP.

SELECT LFA1TELFX FROM LFA1 INTO TABLE itabfx where LFA1LIFNR IN vendor.

LOOP at itabfx into wafx.

SPLIT wafx AT '-' INTO FAX1 FAX_EXT1.

MOVE FAX1 TO wafxnew-FAX.

MOVE FAX_EXT1 TO wafxnew-FAX_EXT.

INSERT wafxnew INTO TABLE itabfxnew.

ENDLOOP.

*MOVE STREET1 TO ADRDTL-STR.

*MOVE HOUSE1 TO ADRDTL-HOU.

*MOVE PHONE1 TO ADRDTL-PHONE.

*MOVE PHONE_EXT1 TO ADRDTL-PHONE_EXT.

*MOVE FAX1 TO ADRDTL-FAX.

*MOVE FAX_EXT1 TO ADRDTL-FAX_EXT.

SELECT LFA1LIFNR LFB1BUKRS LFA1KTOKK LFA1ANRED LFA1~NAME1

LFA1SORTL LFA1PSTLZ LFA1ORT01 LFA1REGIO

LFA1~LAND1

T002T~SPTXT

  • LFA1TELF1 LFA1TELF2 LFA1TELFX LFA1TELTX

ADR6~SMTP_SRCH

LFA1STCEG LFA1BRSCH

FROM LFA1

INNER JOIN T002T ON LFA1SPRAS = T002TSPRSL AND T002T~SPRAS = 2

INNER JOIN LFB1 ON LFA1LIFNR = LFB1LIFNR

INNER JOIN ADR6 ON LFA1ADRNR = ADR6ADDRNUMBER

INTO TABLE itab1 WHERE LFB1~LIFNR IN vendor.

LOOP AT itab1 INTO wrkarea1.

MOVE-CORRESPONDING wrkarea1 TO wrkarea2.

*MOVE STREET1 TO wrkarea2-STR.

*MOVE HOUSE1 TO wrkarea2-HOU.

*MOVE PHONE1 TO wrkarea2-PHONE.

*MOVE PHONE_EXT1 TO wrkarea2-PHONE_EXT.

*MOVE FAX1 TO wrkarea2-FAX.

*MOVE FAX_EXT1 TO wrkarea2-FAX_EXT.

*MOVE ADRDTL-STR TO wrkarea2-STR.

*MOVE ADRDTL-HOU TO wrkarea2-HOU.

*MOVE ADRDTL-PHONE TO wrkarea2-PHONE.

*MOVE ADRDTL-PHONE_EXT TO wrkarea2-PHONE_EXT.

*MOVE ADRDTL-FAX TO wrkarea2-FAX.

*MOVE ADRDTL-FAX_EXT TO wrkarea2-FAX_EXT.

*MOVE-CORRESPONDING wahs TO wrkarea2.

*MOVE-CORRESPONDING waph TO wrkarea2.

*MOVE-CORRESPONDING wafx TO wrkarea2.

*MOVE-CORRESPONDING wahsnew TO wrkarea2.

*MOVE-CORRESPONDING waphnew TO wrkarea2.

*MOVE-CORRESPONDING wafxnew TO wrkarea2.

*MOVE itabhsnew TO itab2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabhsnew INTO wahsnew.

MOVE-CORRESPONDING wahsnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabphnew into waphnew.

MOVE-CORRESPONDING waphnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

LOOP AT itabfxnew into wafxnew.

MOVE-CORRESPONDING wafxnew TO wrkarea2.

INSERT wrkarea2 INTO TABLE itab2.

ENDLOOP.

*loop at itabhsnew.

*itab2-HOU = itabhsnew-HOU.

*itab2-str = itabhsnew-str.

*append itab2.

*endloop.

*LOOP AT itabhsnew.

*itab2-HOU = itabhsnew-HOU.

*itab2-str = itabhsnew-str.

*append itab2.

*ENDLOOP.

*delete adjacent duplicates FROM itab2 COMPARING HOU STR PHONE PHONE_EXT FAX FAX_EXT.

*LOOP AT itab2.

*INSERT wrkarea2 INTO TABLE itab2.

*endloop.

*WRITE: THREE.

*new-line.

*WRITE: four.

*new-line.

*WRITE: five.

program = SY-REPID.

*PERFORM SELECT.

*loop at itab2.

*write:/ itab2-LIFNR,

  • itab2-BUKRS,

  • itab2-KTOKK,

  • itab2-ANRED,

  • itab2-NAME1,

  • itab2-SORTL,

  • itab2-HOU,

  • itab2-STR,

  • itab2-PSTLZ,

  • itab2-ORT01,

  • itab2-REGIO,

  • itab2-LAND1,

    • itab2-SPTXT,

    • itab2-TELF1,

*itab2-PHONE,

*itab2-PHONE_EXT,

    • itab2-TELF2,

    • itab2-TELFX,

*itab2-FAX,

*itab2-FAX_EXT,

    • itab2-TELTX,

    • itab2-SMTP_SRCH,

  • itab2-STCEG,

  • itab2-BRSCH.

*endloop.

PERFORM CATALOG.

PERFORM LAYOUTMAIN.

PERFORM DISPLAY.

*----


*----


  • LFA1STRAS LFA1STRAS

*FORM SELECT.

  • SELECT LFA1LIFNR LFB1BUKRS LFA1KTOKK LFA1ANRED LFA1~NAME1

  • *LFA1SORTL LFA1PSTLZ LFA1ORT01 LFA1REGIO

  • *LFA1LAND1 T002TSPTXT LFA1TELF1 LFA1TELF2 LFA1TELFX LFA1TELTX

  • *ADR6SMTP_SRCH LFA1STCEG LFA1~BRSCH

  • *FROM LFA1

  • *INNER JOIN T002T ON LFA1SPRAS = T002TSPRSL AND T002T~SPRAS = 2

  • *INNER JOIN LFB1 ON LFA1LIFNR = LFB1LIFNR

  • INNER JOIN ADR6 ON LFA1ADRNR = ADR6ADDRNUMBER

  • *INTO TABLE itab1 WHERE LFA1~LIFNR IN vendor.

*LOOP AT itab2.

*MOVE itab1 TO itab2.

*APPEND itab2.

*MOVE-CORRESPONDING ADRDTL TO itab2.

*APPEND itab2.

*MOVE-CORRESPONDING ADRDTL TO itab2.

*APPEND itab2.

*ENDLOOP.

*LOOP AT itab1 INTO wrkarea1.

*MOVE-CORRESPONDING wrkarea1 TO wrkarea2.

*ENDLOOP.

*MOVE-CORRESPONDING adrdtl TO wrkarea2.

*LOOP AT itab2.

*INSERT wrkarea2 INTO TABLE itab2.

*ENDLOOP.

*ENDFORM.

FORM CATALOG.

fcat-tabname = 'LFA1'.

fcat-fieldname ='LIFNR'.

fcat-seltext_m = 'Vendor Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFB1'.

fcat-fieldname ='BUKRS'.

fcat-seltext_m = 'Company Code'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='KTOKK'.

fcat-seltext_m = 'Account Group'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='ANRED'.

fcat-seltext_m = 'Title'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='NAME1'.

fcat-seltext_m = 'Name'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='SORTL'.

fcat-seltext_m = 'Search Term'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='HOU'.

fcat-seltext_m = 'Street'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='STR'.

fcat-seltext_m = 'House Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PSTLZ'.

fcat-seltext_m = 'Postal Code'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='ORT01'.

fcat-seltext_m = 'City'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='REGIO'.

fcat-seltext_m = 'Region or State'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='LAND1'.

fcat-seltext_m = 'Country'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='SPTXT'.

fcat-seltext_m = 'Language'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PHONE'.

fcat-seltext_m = 'Telephone'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='PHONE_EXT'.

fcat-seltext_m = 'Extension'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='FAX'.

fcat-seltext_m = 'Fax Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='FAX_EXT'.

fcat-seltext_m = 'Extension'.

APPEND fcat TO fieldcat.

fcat-tabname = 'ADR6'.

fcat-fieldname ='SMTP_SRCH'.

fcat-seltext_m = 'E-Mail'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='STCEG'.

fcat-seltext_m = 'VAT Registration Number'.

APPEND fcat TO fieldcat.

fcat-tabname = 'LFA1'.

fcat-fieldname ='BRSCH'.

fcat-seltext_m = 'Industry Type'.

APPEND fcat TO fieldcat.

ENDFORM.

FORM LAYOUTMAIN.

layout-zebra = 'X'.

*layout-edit= 'X'.

*layout-zebra = 'X'.

*layout-zebra = 'X'.

ENDFORM.

FORM DISPLAY.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = 'program'

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'VENDOR DETAILS'

  • I_GRID_SETTINGS =

IS_LAYOUT = layout

IT_FIELDCAT = fieldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = itab2.

  • EXCEPTIONS

  • PROGRAM_ERROR = 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.

ENDFORM.

2 REPLIES 2
Read only

Former Member
0 Likes
536

Fetch all your required data in your table say ITAB .

you can have two extra columns in the same table for the split fields.

You can midifuy the table by looping on the same final table . Use field symbols

for reference

Loop at itab assigning <fs_data>.

***split say column address into street addresss and city ,,the two columns*

<fs_data>-street = <fs_data>-address+(10).

<fs_data>-city = <fs_data>-+11(5).

endloop.

Read only

Former Member
0 Likes
536

HI,

" By taking two internal table
LOOP AT ITAB.
  IT_FINAL-FIELD1 = ITAB-FIELD(10).
  IT_FINAL-FIELD2 = ITAB-FIELD+10(10).
  APPEND IT_FINAL.
  CLEAR IT_FINAL.
ENDLOOP.

" By taking one internal table
LOOP AT ITAB.
  ITAB-FIELD2 = ITAB-FIELD1(10).
  ITAB-FIELD3 = ITAB-FIELD1+10(10).
  MODIFY ITAB INDEX SY_TABIX.
ENDLOOP.