2009 May 25 1:39 PM
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.
2009 May 25 2:25 PM
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.
2009 May 25 2:35 PM
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.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |