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

BDC programming using Batch input Session.

Former Member
0 Likes
579

Hello Experts.

I'm an ABAP beginner. I've benn practicing BDC programming using Batch input Session

at the moment.

This is the program that upload Local file which has plural records, and put the records into a Session.

These are the records.

413459,KIM EI HWAN121 ,19810607,MIADONG1234

423459,KIM EI HWAN122 ,19810607,MIADONG1235

433459,KIM EI HWAN123 ,19810607,MIADONG1236

443459,KIM EI HWAN124 ,19810607,MIADONG1237

453459,KIM EI HWAN125 ,19810607,MIADONG1238

463459,KIM EI HWAN126 ,19810607,MIADONG1239

I succeeded making Session.

However, for some reaseon, every record in the Session has got the same, value which is the first record.

Why is this happening? And How can I correct the code below?

REPORT ZBCUSER002_BATCH NO STANDARD PAGE HEADING

LINE-SIZE 255

MESSAGE-ID ZBATCH.

= Types definition ===================================================

TYPES: BEGIN OF TYP_LOCAL, "For Local file upload

RECORD(200) TYPE C,

END OF TYP_LOCAL.

= Internal table definition ==============================================

DATA: BEGIN OF BDC_TAB OCCURS 0. "BDCDATA itab

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDC_TAB.

DATA: BEGIN OF MESSAGE_BDC OCCURS 0. "Message itab

INCLUDE STRUCTURE BDCMSGCOLL.

DATA: END OF MESSAGE_BDC.

DATA: TBL_LOCAL TYPE STANDARD TABLE OF TYP_LOCAL, "Local file itab

F_TBL TYPE FILETABLE. "FILETABLE fot local

= Structure table definition =========================================

DATA: STR_F_TBL LIKE LINE OF F_TBL, "FILETABLE structure

STR_LOCAL TYPE TYP_LOCAL. "Local file structure

= Variable definition ================================================

DATA: LV_RC TYPE I, "Method parameter

ENUMBER TYPE ZT601-ENUMBER, "Employee number

NAME TYPE ZT601-NAME, "Employee name

BIRTH TYPE ZT601-BIRTH, "Birthday

HOMETOWN TYPE ZT601-HOMETOWN, "Hometown

SYSVAL TYPE SY-SUBRC. "System valuible

= Constants definition ===============================================

CONSTANTS: TBL_NAME(10) TYPE C VALUE 'ZT601'. "Table name ZT601

= Parameters definition ==============================================

PARAMETERS: F_NAME TYPE RLGRAP-FILENAME OBLIGATORY, "File path

EXECMODE(1) TYPE C. "Execute mode

----


  • INITIALIZATION

----


*----- Initialize all valuables, structures and internal tables

CLEAR: LV_RC,

STR_F_TBL,

STR_LOCAL,

ENUMBER,

NAME,

BIRTH,

HOMETOWN.

REFRESH: F_TBL,

TBL_LOCAL.

----


  • AT SELECTION-SCREEN

----


*----- When the button next to Parameter 'F_NAME',

*----- File dialog open.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR F_NAME.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

WINDOW_TITLE = 'SELECT FILE'

DEFAULT_FILENAME = '*.TXT'

CHANGING

FILE_TABLE = F_TBL

RC = LV_RC

EXCEPTIONS

FILE_OPEN_DIALOG_FAILED = 1

CNTL_ERROR = 2

OTHERS = 3

.

*----- system valiable check.

*----- If done properly,

*----- Put the path into the File path parameter

IF SY-SUBRC = 0.

READ TABLE F_TBL INTO STR_F_TBL INDEX 1.

F_NAME = STR_F_TBL.

*----- If not done properly, show message

*----- An error occured while getting file path then end program

ELSE.

MESSAGE E000.

ENDIF.

*----- Execute code can only be A or N.

AT SELECTION-SCREEN ON EXECMODE.

IF EXECMODE <> 'A' AND EXECMODE <> 'N'.

MESSAGE E001.

ENDIF.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

*----- Upload Local file of file path parameter.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = F_NAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = TBL_LOCAL

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

OTHERS = 6.

*----- System valiable check.

*----- If not done properly, show an error message

*----- An error occured while uploading local file then end program

IF SY-SUBRC <> 0.

MESSAGE E002.

ENDIF.

PERFORM BDC_OPEN.

*----- Loop Internal table

LOOP AT TBL_LOCAL INTO STR_LOCAL.

*----- Spilt the file record and put them into each valiable.

SPLIT STR_LOCAL AT ',' INTO ENUMBER

NAME

BIRTH

HOMETOWN.

*----- Data check Function module

CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

EXPORTING

DATE = BIRTH

EXCEPTIONS

PLAUSIBILITY_CHECK_FAILED = 1

OTHERS = 2.

*----- When error occurs while checking date, show an error message.

*----- (&1) is not date

IF SY-SUBRC <> 0.

MESSAGE E003 WITH BIRTH.

ENDIF.

*-- The first screen of SE11

*----- Screen number 0102 of program id SAPMSRD0

PERFORM BDC_DYNPRO USING 'SAPMSRD0' '0102'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RSRD1-TBMA_VAL'. "Field on Cursor

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SHOW'. "Display button

PERFORM BDC_FIELD USING 'RSRD1-TBMA'

'X'.

PERFORM BDC_FIELD USING 'RSRD1-TBMA_VAL'

TBL_NAME. "ZT601

*-- Table definition screen

*----- Screen number 2000 of program id SAPLSD02

PERFORM BDC_DYNPRO USING 'SAPLSD02' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'DD02D-TABCLTEXT'. "Field on Cursor

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=TDED'. "Create entry

PERFORM BDC_FIELD USING 'BDC_SUBSCR'

'SAPLSD02'.

PERFORM BDC_FIELD USING 'BDC_SUBSCR'

'SAPLSED5'.

*-- Data input screen

*----- Screen number 0101 of program /1BCDWB/DBZT601

PERFORM BDC_DYNPRO USING '/1BCDWB/DBZT601' '0101'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'ZT601-CRUSER'. "Field on Cursor

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=SAVE'. "Save

PERFORM BDC_FIELD USING 'ZT601-MANDT'

SY-MANDT. "Client

PERFORM BDC_FIELD USING 'ZT601-ENUMBER'

ENUMBER. "Employee number

PERFORM BDC_FIELD USING 'ZT601-NAME'

NAME. "Employee name

PERFORM BDC_FIELD USING 'ZT601-BIRTH'

BIRTH. "Birthday

PERFORM BDC_FIELD USING 'ZT601-HOMETOWN'

HOMETOWN. "Hometown

PERFORM BDC_FIELD USING 'ZT601-CRDATE'

SY-DATUM. "System date

PERFORM BDC_FIELD USING 'ZT601-CRTIME'

SY-UZEIT. "System time

PERFORM BDC_FIELD USING 'ZT601-CRUSER'

SY-UNAME. "System user

*-- Data input screen (After input)

*----- Screen number 0101 of program /1BCDWB/DBZT601

PERFORM BDC_DYNPRO USING '/1BCDWB/DBZT601' '0101'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/EBACK'. "Back

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'ZT601-CRUSER'. "Field on Cursor

*-- Table definition screen]

*----- Screen number 2000 of program SAPLSD02

PERFORM BDC_DYNPRO USING 'SAPLSD02' '2000'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'DD02D-TABCLTEXT'. "Field on Cursor

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=WB_BACK'. "Back

*-- The first screen of SE11

*----- Screen number 0102 of program SAPMSRD0

PERFORM BDC_DYNPRO USING 'SAPMSRD0' '0102'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RSRD1-TBMA_VAL'. "Field on Cursor

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BACK'.

PERFORM BDC_FIELD USING 'RSRD1-TBMA'

'X'.

PERFORM BDC_FIELD USING 'RSRD1-TBMA_VAL'

TBL_NAME.

PERFORM BDC_INSERT.

ENDLOOP.

PERFORM BDC_CLOSE.

----


  • FORM BDC_DYNPRO *

----


  • Put Program-Id, Dynpro screen number, Start point

  • into DBCDATA

----


  • --> PROGRAM *

  • --> DYNPRO *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDC_TAB.

BDC_TAB-PROGRAM = PROGRAM.

BDC_TAB-DYNPRO = DYNPRO.

BDC_TAB-DYNBEGIN = 'X'.

APPEND BDC_TAB.

ENDFORM.

----


  • FORM BDC_FIELD *

----


  • Put Field Name and Value into BDCDATA

----


  • --> FNAM *

  • --> FVAL *

----


FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDC_TAB.

BDC_TAB-FNAM = FNAM.

BDC_TAB-FVAL = FVAL.

APPEND BDC_TAB.

ENDFORM.

----


  • FORM bdc_process *

----


  • ........ *

----


FORM BDC_OPEN.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'Testsession'

KEEP = 'X'

USER = SY-UNAME.

IF SY-SUBRC <> 0.

MESSAGE E006 WITH SY-SUBRC.

ENDIF.

ENDFORM.

----


  • FORM bdc_insert *

----


  • ........ *

----


FORM BDC_INSERT.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'SE11'

TABLES

DYNPROTAB = BDC_TAB

EXCEPTIONS

INTERNAL_ERROR = 1

NOT_OPEN = 2

QUEUE_ERROR = 3

TCODE_INVALID = 4

PRINTING_INVALID = 5

POSTING_INVALID = 6

OTHERS = 7.

IF SY-SUBRC <> 0.

MESSAGE E007 WITH SY-SUBRC.

ENDIF.

CLEAR: BDC_TAB.

ENDFORM.

----


  • FORM bdc_close *

----


  • ........ *

----


FORM BDC_CLOSE.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE E008 WITH SY-SUBRC.

ENDIF.

ENDFORM.

1 REPLY 1
Read only

Former Member
0 Likes
523

God I forgot to refresh Internal table after putting record into Session.

Now I'm done.

You guys be careful too.