cancel
Showing results for 
Search instead for 
Did you mean: 

how to print the error records and success records in bdc

Former Member
0 Kudos

how to print the number of error records and success records in bdc

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

Hi Kiran,

The error and success messages for a record is stored in BDCMSGCOLL table. This table is populated after processing of your CALL TRANSACTION statement.

CALL TRANSACTION TCODE USING BDCDATA MODE 'N'

UPDATE 'A' MESSAGES INTO IT_MSG.

The it_msg internal table will consists of all error and success records information.

Just loop at this internal table with msgtyp as 'S' for success and 'E' for error.

LOOP at it_msg.

if it_msg-msgtyp = 'S'.

CALL FM FORMAT_MESSAGE.

v_succ_record = v_succ_record + 1. "Increment success counter.

endif.

if it_msg-msgtyp = 'E'.

CALL FM FORMAT_MESSAGE.

v_error_record = v_error_record + 1. "Increment error counter.

endif.

endloop.

write:/ v_succ_record. "Contains total no of success records

write:/ v_error_record. "Contains total no of error records

Thanks,

VinaykumarG

Former Member
0 Kudos

hai,

plz refer this program,

Z_130399130271_A

REPORT Z_130399130271_A

NO STANDARD PAGE HEADING LINE-SIZE 325.

*INCLUDE YVALIDATE.

*include bdcrecx1.

INCLUDE YINCLUDE399.

DATA ITAB LIKE TABLE OF FILE_TABLE WITH HEADER LINE.

PARAMETERS: DATASET(132) LOWER CASE.

DATA : RC TYPE I,

ERR(40) TYPE C,

SUCCESSCNT TYPE I VALUE 0,

FAILCOUNT TYPE I VALUE 0.

      • DO NOT CHANGE - the generated data section - DO NOT CHANGE ***

*

  • If it is nessesary to change the data section use the rules:

  • 1.) Each definition of a field exists of two lines

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

    • Generated data section with specific formatting - DO NOT CHANGE ***

************************************************************************

DATA: BEGIN OF RECORD OCCURS 0,

  • data element: LIF16

LIFNR_001(016),

  • data element: KTOKK

KTOKK_002(004),

  • data element: ANRED

ANRED_003(015),

  • data element: NAME1_GP

NAME1_004(035),

  • data element: SORTL

SORTL_005(010),

  • data element: STRAS_GP

STRAS_006(035),

  • data element: PFACH

PFACH_007(010),

  • data element: ORT01_GP

ORT01_008(035),

  • data element: ORT02_GP

ORT02_009(035),

  • data element: LAND1_GP

LAND1_010(003),

  • data element: REGIO

REGIO_011(003),

  • data element: SPRAS

SPRAS_012(002),

  • data element: TELF1

TELF1_013(016),

  • data element: TELF2

TELF2_014(016),

  • data element: BANKS

BANKS_01_015(003),

  • data element: BANKK

BANKL_01_016(015),

  • data element: BANKN

BANKN_01_017(018),

END OF RECORD.

DATA: BEGIN OF ERRORITAB OCCURS 0,

LIFNR_001 LIKE LFA1-LIFNR,

KTOKK_002 LIKE LFA1-KTOKK,

ANRED_003 LIKE LFA1-ANRED,

NAME1_004 LIKE LFA1-NAME1,

SORTL_005 LIKE LFA1-SORTL,

STRAS_006 LIKE LFA1-STRAS,

PFACH_007 LIKE LFA1-PFACH,

ORT01_008 LIKE LFA1-ORT01,

ORT02_009 LIKE LFA1-ORT02,

LAND1_010 LIKE LFA1-LAND1,

REGIO_011 LIKE LFA1-REGIO,

SPRAS_012 LIKE LFA1-SPRAS,

TELF1_013 LIKE LFA1-TELF1,

TELF2_014 LIKE LFA1-TELF2,

BANKS_01_015 LIKE LFBK-BANKS,

BANKL_01_016 LIKE LFBK-BANKL,

BANKN_01_017 LIKE LFBK-BANKN,

ERRORMSG(60) TYPE C,

SERIAL TYPE I VALUE '1',

END OF ERRORITAB.

      • End generated data section ***

*****************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR DATASET.

CALL FUNCTION 'TMP_GUI_FILE_OPEN_DIALOG'

EXPORTING

WINDOW_TITLE = 'select a file '

DEFAULT_EXTENSION = 'TXT'

DEFAULT_FILENAME = 'ASSIGN5.TXT'

  • FILE_FILTER =

  • INIT_DIRECTORY =

  • MULTISELECTION =

  • IMPORTING

  • RC =

TABLES

FILE_TABLE = ITAB

EXCEPTIONS

CNTL_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.

READ TABLE ITAB INDEX 1.

DATASET = ITAB-FILENAME.

WRITE DATASET.

********************************************************************

START-OF-SELECTION.

*perform open_dataset using dataset.

*perform open_group.

DATA T TYPE STRING.

T = DATASET.

IF T EQ ' '.

MESSAGE E110(ZX).

ENDIF.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = T

  • FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = RECORD

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

************************************************************************

LOOP AT RECORD.

CLEAR RC.

CLEAR ERR.

*read dataset dataset into record.

IF SY-SUBRC <> 0. EXIT. ENDIF.

RECORD-KTOKK_002 = '0001'.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'RF02K-LIFNR'

RECORD-LIFNR_001.

PERFORM BDC_FIELD USING 'RF02K-KTOKK'

RECORD-KTOKK_002.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'LFA1-TELX1'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'LFA1-ANRED'

RECORD-ANRED_003.

PERFORM BDC_FIELD USING 'LFA1-NAME1'

RECORD-NAME1_004.

PERFORM BDC_FIELD USING 'LFA1-SORTL'

RECORD-SORTL_005.

PERFORM BDC_FIELD USING 'LFA1-STRAS'

RECORD-STRAS_006.

PERFORM BDC_FIELD USING 'LFA1-PFACH'

RECORD-PFACH_007.

PERFORM BDC_FIELD USING 'LFA1-ORT01'

RECORD-ORT01_008.

PERFORM BDC_FIELD USING 'LFA1-ORT02'

RECORD-ORT02_009.

PERFORM BDC_FIELD USING 'LFA1-LAND1'

RECORD-LAND1_010.

PERFORM BDC_FIELD USING 'LFA1-REGIO'

RECORD-REGIO_011.

PERFORM BDC_FIELD USING 'LFA1-SPRAS'

RECORD-SPRAS_012.

PERFORM BDC_FIELD USING 'LFA1-TELF1'

RECORD-TELF1_013.

PERFORM BDC_FIELD USING 'LFA1-TELF2'

RECORD-TELF2_014.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'LFA1-KUNNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=VW'.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'LFBK-BANKN(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_FIELD USING 'LFBK-BANKS(01)'

RECORD-BANKS_01_015.

PERFORM BDC_FIELD USING 'LFBK-BANKL(01)'

RECORD-BANKL_01_016.

PERFORM BDC_FIELD USING 'LFBK-BANKN(01)'

RECORD-BANKN_01_017.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=UPDA'.

PERFORM BDC_TRANSACTION USING 'XK01' CHANGING ERR RC.

******************************************************************

DATA: SERIAL TYPE I VALUE 1.

IF RC <> 0.

FAILCOUNT = FAILCOUNT + 1.

CLEAR ERRORITAB.

ERRORITAB-SERIAL = SERIAL.

ERRORITAB-LIFNR_001 = RECORD-LIFNR_001.

ERRORITAB-KTOKK_002 = RECORD-KTOKK_002.

ERRORITAB-ANRED_003 = RECORD-ANRED_003.

ERRORITAB-NAME1_004 = RECORD-NAME1_004.

ERRORITAB-SORTL_005 = RECORD-SORTL_005.

ERRORITAB-STRAS_006 = RECORD-STRAS_006.

ERRORITAB-PFACH_007 = RECORD-PFACH_007.

ERRORITAB-ORT01_008 = RECORD-ORT01_008.

ERRORITAB-ORT02_009 = RECORD-ORT02_009.

ERRORITAB-LAND1_010 = RECORD-LAND1_010.

ERRORITAB-REGIO_011 = RECORD-REGIO_011.

ERRORITAB-SPRAS_012 = RECORD-SPRAS_012.

ERRORITAB-TELF1_013 = RECORD-TELF1_013.

ERRORITAB-TELF2_014 = RECORD-TELF2_014.

ERRORITAB-BANKS_01_015 = RECORD-BANKS_01_015.

ERRORITAB-BANKL_01_016 = RECORD-BANKL_01_016.

ERRORITAB-BANKN_01_017 = RECORD-BANKN_01_017.

ERRORITAB-ERRORMSG = ERR.

SERIAL = SERIAL + 1.

APPEND ERRORITAB.

MODIFY RECORD TRANSPORTING KTOKK_002.

DELETE RECORD WHERE KTOKK_002 = '0001'.

ELSE.

SUCCESSCNT = SUCCESSCNT + 1.

ENDIF.

ENDLOOP.

display output********************************************************

SKIP.

FORMAT COLOR 5 INTENSIFIED OFF.

WRITE:/ 'No. of records successfully uploaded: '.

FORMAT COLOR 4 INTENSIFIED OFF.

WRITE: SUCCESSCNT.

Displaying the success table******************************************

IF SUCCESSCNT <> 0.

SKIP.

FORMAT COLOR 4 INTENSIFIED OFF.

WRITE:/ 'Successful Records'.

FORMAT COLOR 7 INTENSIFIED ON.

WRITE:/(261) SY-ULINE,

/ SY-VLINE,

'S.NO', 007 SY-VLINE,

'VENDOR ACC.NUM', 023 SY-VLINE,

'VENDOR ACC GROUP', 041 SY-VLINE,

'TITLE', 048 SY-VLINE,

'VENDOR NAME', 064 SY-VLINE,

'SORT FIELD', 076 SY-VLINE,

'HOUSE NO.& STREET', 101 SY-VLINE,

'PO.BOX NO', 116 SY-VLINE,

'CITY', 129 SY-VLINE,

'DISTRICT', 141 SY-VLINE,

'COUNTRY KEY', 156 SY-VLINE,

'REGION', 166 SY-VLINE,

'LANGUAGE KEY', 180 SY-VLINE,

'TELEPHONE NO 1', 196 SY-VLINE,

'TELEPHONE NO 2', 213 SY-VLINE,

'BANK COUNTRY KEY', 231 SY-VLINE,

'BANK KEY', 241 SY-VLINE,

'BANK ACC.NO', 261 SY-VLINE,

/1(261) SY-ULINE.

FORMAT COLOR 4 INTENSIFIED ON.

SERIAL = 1.

  • SORT RECORD BY LIFNR_001.

LOOP AT RECORD.

WRITE:/ SY-VLINE,

SERIAL LEFT-JUSTIFIED, 007 SY-VLINE,

RECORD-LIFNR_001(016), 023 SY-VLINE,

RECORD-KTOKK_002(004), 041 SY-VLINE,

RECORD-ANRED_003(015), 048 SY-VLINE,

RECORD-NAME1_004(035), 064 SY-VLINE,

RECORD-SORTL_005(010), 076 SY-VLINE,

RECORD-STRAS_006(035), 101 SY-VLINE,

RECORD-PFACH_007(010), 116 SY-VLINE,

RECORD-ORT01_008(035), 129 SY-VLINE,

RECORD-ORT02_009(035), 141 SY-VLINE,

RECORD-LAND1_010(003), 156 SY-VLINE,

RECORD-REGIO_011(003), 166 SY-VLINE,

RECORD-SPRAS_012(002), 180 SY-VLINE,

RECORD-TELF1_013(016), 196 SY-VLINE,

RECORD-TELF2_014(016), 213 SY-VLINE,

RECORD-BANKS_01_015(003), 231 SY-VLINE,

RECORD-BANKL_01_016(015), 241 SY-VLINE,

RECORD-BANKN_01_017(018), 261 SY-VLINE.

WRITE:/(261) SY-ULINE.

SERIAL = SERIAL + 1.

ENDLOOP.

WRITE:/1(261) SY-ULINE.

ENDIF.

**********************************************

SKIP.

FORMAT COLOR 5 INTENSIFIED OFF.

WRITE:/ 'No. of records not uploaded: '.

FORMAT COLOR 4 INTENSIFIED OFF.

WRITE: FAILCOUNT.

*Displaying the error table

*********************************************

IF FAILCOUNT <> 0.

SKIP.

FORMAT COLOR 4 INTENSIFIED OFF.

WRITE:/(320) SY-ULINE,

'Error Records'.

FORMAT COLOR 7 INTENSIFIED ON.

WRITE:/ SY-ULINE, SY-VLINE,

'S.NO', 007 SY-VLINE,

'VENDOR ACC.NUM', 023 SY-VLINE,

'VENDOR ACC GROUP', 041 SY-VLINE,

'TITLE', 048 SY-VLINE,

'VENDOR NAME', 064 SY-VLINE,

'SORT FIELD', 076 SY-VLINE,

'HOUSE NO.& STREET', 101 SY-VLINE,

'PO.BOX NO', 116 SY-VLINE,

'CITY', 129 SY-VLINE,

'DISTRICT', 141 SY-VLINE,

'COUNTRY KEY', 156 SY-VLINE,

'REGION', 166 SY-VLINE,

'LANGUAGE KEY', 180 SY-VLINE,

'TELEPHONE NO 1', 196 SY-VLINE,

'TELEPHONE NO 2', 213 SY-VLINE,

'BANK COUNTRY KEY', 231 SY-VLINE,

'BANK KEY', 241 SY-VLINE,

'BANK ACC.NO', 261 SY-VLINE,

'ERROR MESSAGE', 320 SY-VLINE.

WRITE:/(320) SY-ULINE.

FORMAT COLOR 4 INTENSIFIED ON.

  • SORT ERRORITAB BY LIFNR_001.

LOOP AT ERRORITAB.

WRITE:/ SY-VLINE,

ERRORITAB-SERIAL LEFT-JUSTIFIED, 007 SY-VLINE,

ERRORITAB-LIFNR_001 , 023 SY-VLINE,

ERRORITAB-KTOKK_002, 041 SY-VLINE,

ERRORITAB-ANRED_003, 048 SY-VLINE,

ERRORITAB-NAME1_004, 064 SY-VLINE,

ERRORITAB-SORTL_005, 076 SY-VLINE,

ERRORITAB-STRAS_006, 101 SY-VLINE,

ERRORITAB-PFACH_007, 116 SY-VLINE,

ERRORITAB-ORT01_008, 129 SY-VLINE,

ERRORITAB-ORT02_009, 141 SY-VLINE,

ERRORITAB-LAND1_010, 156 SY-VLINE,

ERRORITAB-REGIO_011, 166 SY-VLINE,

ERRORITAB-SPRAS_012, 180 SY-VLINE,

ERRORITAB-TELF1_013, 196 SY-VLINE,

ERRORITAB-TELF2_014, 213 SY-VLINE,

ERRORITAB-BANKS_01_015, 231 SY-VLINE,

ERRORITAB-BANKL_01_016, 241 SY-VLINE,

ERRORITAB-BANKN_01_017, 261 SY-VLINE,

ERRORITAB-ERRORMSG, 320 SY-VLINE.

WRITE:/(320) SY-ULINE.

ENDLOOP.

WRITE:/ SY-ULINE.

ENDIF.

hope this ll help you..

regards,

prema.A

former_member188685
Active Contributor
0 Kudos

Hi,

CALL TRANSACTION TCODE USING BDCDATA MODE c_mode
UPDATE c_s MESSAGES INTO IT_MSG.

LOOP at it_msg.

if it_msg-msgtyp = 'S'.
"call format_message fm as suggested
endif.

if it_msg-msgtyp = 'E'.
"call format_message FM as suggested
endif.

endloop.

Regards

vijay

Former Member
0 Kudos

HI,

When calling the transaction get the messages in an internal table.

CALL TRANSACTION <tran name> USING i_bdc

MODE v_mode

UPDATE 'S'

MESSAGES INTO ibdcmsgcoll.

Read the message table with

msgtyp = 'E' for error messages

and msgtyp = 'S' for success messages.

Thanks,

Rashmi.

Former Member
0 Kudos

hi,

after the call transaction....

eg:

CALL TRANSACTION 'MM02' USING IT_BDCDATA MODE 'A'

UPDATE 'S'

MESSAGES INTO IT_MESSAGES.

WRITE:/ SY-SUBRC.

PERFORM MESGS.

and

FORM MESGS .

DATA: V_MSG(100) TYPE C.

LOOP AT IT_MESSAGES.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = SY-MSGID

LANG = 'EN'

NO = SY-MSGNO

V1 = SY-MSGV1

V2 = SY-MSGV2

V3 = SY-MSGV3

V4 = SY-MSGV4

IMPORTING

MSG = V_MSG

EXCEPTIONS

NOT_FOUND = 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.

WRITE:/ V_MSG.

ENDLOOP.

ENDFORM.

hope this helps,

priya