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

Batch Input Session for Errors

Former Member
0 Likes
845

Hello

I'm running a Batch Input (in a FM) and I want to create a session for records with errors. In case of error (output parameter of the FM subrc NE 0) I send it to that session for later running.

Can you explain how do I do this? Thanks!

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
794

Cmon! This is urgent, please help me...

5 REPLIES 5
Read only

Former Member
0 Likes
794

hi,

In Batch input session errors are handled seperately in LOG.

Read only

Former Member
0 Likes
794

In LOG? Can you explain better?

Read only

Former Member
0 Likes
795

Cmon! This is urgent, please help me...

Read only

Former Member
0 Likes
794

hi,

Look at the sample program

REPORT Z_BDC_CUSTOMER_R07

NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE Z_CUSTOMER_BDC_R02.

*-----AT SELECTION-SCREEN

AT SELECTION-SCREEN.

IF SY-UCOMM = 'ONLI'.

*-----group and user must be filled to create a session

IF SESSION = 'X' AND

GROUP = SPACE OR USER = SPACE.

MESSAGE E613(MS).

ENDIF.

*----Presentation File name should be entered

IF SESSION = 'X' AND RB_PRE = 'X'

AND P_FILE = '' .

MESSAGE E004(ZROJA).

ELSEIF CTU = 'X' AND RB_PRE = 'X'

AND P_FILE = '' .

MESSAGE E004(ZROJA).

ENDIF.

*----Application File name should be entered

IF SESSION = 'X' AND RB_APP = 'X'

AND P_FILE_A = '' .

MESSAGE E004(ZROJA).

ELSEIF CTU = 'X' AND RB_APP = 'X'

AND P_FILE_A = '' .

MESSAGE E004(ZROJA).

ENDIF.

ENDIF.

*-----AT SELECTION-SCREEN OUTPUT

AT SELECTION-SCREEN OUTPUT.

*----When file from Presentation server is selected

IF RB_PRE = 'X'.

*----To make the application server inactive

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'AAA'.

SCREEN-ACTIVE = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSE.

*----When file from Presentation server is selected

RB_APP = 'X'.

*----To make the application server inactive

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'BBB'.

SCREEN-ACTIVE = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

*

*-----AT SELECTION-SCREEN ON VALUE-REQUEST

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_A.

CALL FUNCTION 'F4_DXFILENAME_TOPRECURSION'

EXPORTING

I_LOCATION_FLAG = 'A'

I_SERVER = ' '

FILEOPERATION = 'R'

IMPORTING

O_PATH = P_FILE_A

EXCEPTIONS

RFC_ERROR = 1

ERROR_WITH_GUI = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

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

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

ENDIF.

*-----AT SELECTION-SCREEN ON VALUE-REQUEST

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

*-----Function module for value-request

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = ' '

IMPORTING

FILE_NAME = V_FILE_NAME.

*----Assigning the flatfile to parameter

P_FILE = V_FILE_NAME.

*-----START-OF-SELECTION

START-OF-SELECTION.

DATA: FILENAME TYPE STRING.

*----When file from Presentation Server is selected

IF RB_PRE = 'X'.

FILENAME = P_FILE.

*-----Function module to upload data from the presentation server

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = FILENAME

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = IT_KNA1

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.

ELSE.

*----Upload the File from Application Server

OPEN DATASET P_FILE_A FOR INPUT IN TEXT MODE ENCODING DEFAULT.

*-----to display an error if the file is not in application server

IF SY-SUBRC NE 0.

MESSAGE E006(ZROJA).

ELSE.

DO.

READ DATASET P_FILE_A INTO X_KNA1.

IF SY-SUBRC EQ 0.

APPEND X_KNA1 TO IT_KNA1.

ELSE.

EXIT.

ENDIF.

ENDDO.

ENDIF.

CLOSE DATASET P_FILE_A.

ENDIF.

*-----To open a batchinput session

IF SESSION = 'X'.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = GROUP

KEEP = KEEP

USER = USER

PROG = SY-CPROG

EXCEPTIONS

CLIENT_INVALID = 1

DESTINATION_INVALID = 2

GROUP_INVALID = 3

GROUP_IS_LOCKED = 4

INTERNAL_ERROR = 6

QUEUE_ERROR = 7

RUNNING = 8

SYSTEM_LOCK_ERROR = 9

USER_INVALID = 10

OTHERS = 11.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDIF.

*-----Filling the BDCDATA using the Internal Table

LOOP AT IT_KNA1 INTO X_KNA1.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02D-KTOKD'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'RF02D-KUNNR'

X_KNA1-KUNNR.

PERFORM BDC_FIELD USING 'RF02D-KTOKD'

X_KNA1-KTOKD.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0110'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'KNA1-SPRAS'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'KNA1-NAME1'

X_KNA1-NAME1.

PERFORM BDC_FIELD USING 'KNA1-SORTL'

X_KNA1-SORTL.

PERFORM BDC_FIELD USING 'KNA1-ORT01'

X_KNA1-ORT01.

PERFORM BDC_FIELD USING 'KNA1-PSTLZ'

X_KNA1-PSTLZ.

PERFORM BDC_FIELD USING 'KNA1-LAND1'

X_KNA1-LAND1.

PERFORM BDC_FIELD USING 'KNA1-SPRAS'

X_KNA1-SPRAS.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0120'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'KNA1-LZONE'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'KNA1-LZONE'

X_KNA1-LZONE.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0125'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'KNA1-NIELS'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0130'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'KNBK-BANKS(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0340'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02D-KUNNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0370'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02D-KUNNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_FIELD USING 'KNA1-CIVVE'

'X'.

PERFORM BDC_DYNPRO USING 'SAPMF02D' '0360'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'KNVK-NAMEV(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

*----If Session is selected

IF SESSION = 'X'.

*----To insert data into batch input session

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'XD01'

TABLES

DYNPROTAB = IT_BDCDATA.

REFRESH IT_BDCDATA.

AT LAST.

SKIP.

WRITE:/ TEXT-001.

ENDAT.

ELSE.

*----Calling the transaction

CALL TRANSACTION 'XD01' USING IT_BDCDATA

MODE CTUMODE

UPDATE CUPDATE

MESSAGES INTO IT_BDCMSGCOLL.

CLEAR IT_BDCDATA.

REFRESH IT_BDCDATA.

ENDIF.

ENDLOOP.

*----If Session is Selected

IF SESSION = 'X'.

*----To close the session

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDIF.

*-----END-OF-SELECTION

END-OF-SELECTION.

*----To display the success messages

LOOP AT IT_BDCMSGCOLL INTO X_BDCMSGCOLL WHERE MSGTYP = 'S' .

*-----If Message Type Differs

ON CHANGE OF X_BDCMSGCOLL-MSGTYP.

WRITE:/ TEXT-002.

SKIP.

ULINE (58).

WRITE:/01 SY-VLINE,02 TEXT-003,

14 SY-VLINE,15 TEXT-004,

21 SY-VLINE,22 TEXT-005,

35 SY-VLINE,36 TEXT-006,

58 SY-VLINE,/01 SY-ULINE(58).

ENDON.

WRITE:/01 SY-VLINE,02 X_BDCMSGCOLL-MSGTYP,

14 SY-VLINE,15 X_BDCMSGCOLL-TCODE,

21 SY-VLINE,22 X_BDCMSGCOLL-MSGV1,

35 SY-VLINE,36 TEXT-007,

58 SY-VLINE,/01 SY-ULINE(58).

ENDLOOP.

SKIP 2.

*----To display the error messages

LOOP AT IT_BDCMSGCOLL INTO X_BDCMSGCOLL WHERE MSGTYP = 'E'.

*-----If Message Type Differs

ON CHANGE OF X_BDCMSGCOLL-MSGTYP.

WRITE:/ TEXT-008.

SKIP.

ULINE (58).

WRITE:/01 SY-VLINE,02 TEXT-003,

14 SY-VLINE,15 TEXT-004,

21 SY-VLINE,22 TEXT-005,

35 SY-VLINE,36 TEXT-006,

58 SY-VLINE,/01 SY-ULINE(58).

ENDON.

WRITE:/01 SY-VLINE,02 X_BDCMSGCOLL-MSGTYP,

14 SY-VLINE,15 X_BDCMSGCOLL-TCODE,

21 SY-VLINE,22 X_BDCMSGCOLL-MSGV1,

35 SY-VLINE,36 'Customer Already Exits',

58 SY-VLINE,/01 SY-ULINE(58).

ENDLOOP.

*-----FORM fill_bdcdata

FORM FILL_BDCDATA USING L_DYNPRO TYPE ANY

L_FNAME TYPE ANY

L_FVALUE TYPE ANY.

CLEAR X_BDCDATA.

IF L_DYNPRO = 'X'.

X_BDCDATA-DYNBEGIN = 'X'.

X_BDCDATA-PROGRAM = L_FNAME.

X_BDCDATA-DYNPRO = L_FVALUE.

ELSE.

X_BDCDATA-FNAM = L_FNAME.

X_BDCDATA-FVAL = L_FVALUE.

ENDIF.

APPEND X_BDCDATA TO IT_BDCDATA.

ENDFORM. "BDC_FIELD

*-----Start new screen

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROGRAM.

IT_BDCDATA-DYNPRO = DYNPRO.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM. "BDC_DYNPRO

*-----Insert field

FORM BDC_FIELD USING FNAM FVAL.

IF FVAL <> SPACE.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDIF.

ENDFORM. "BDC_FIELD

Read only

Former Member
0 Likes
794

Hi,

Check these threads,

Regards,

Omkar.