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

Reg: BDC program....

Former Member
0 Likes
438

Wanted some sample BDC programs which checks for failed Idocs with Status = 51 and checks for the particular Purchase Order whether the GR(Goods Receipt) happened or not. If GR is happened then the program should reverse the GR using MBST transaction.

Kindly send some code samples related to this......

2 REPLIES 2
Read only

Former Member
0 Likes
386

Hi,

You can use the standard Report RPR_ABAP_SOURCE_SCAN and search for Programs with 'CALL TRANSACTION' & 'BDC_INSERT' strings.

http://www.sap-img.com/bdc.htm

Please go through the link this is very good to start.

http://www.sappoint.com/abap/bdcconcept.pdf

Regards,

Priyanka.

Read only

Former Member
0 Likes
386

Hi Sudheendra ,

There are two methods for BDC

1. Recording method

2.Session Method

1. Go to shdb transaction , New recording , do the simulation of transactions and use system created program. Following is the sample program for you

---\

report ZTRNG_09_BDC1

no standard page heading line-size 255.

include bdcrecx1.

DATA: bdc_tab LIKE bdcdata

OCCURS 0 WITH HEADER LINE.

  • session LIKE apqi-groupid Value ‘ZTESTK’.

DATA: BEGIN OF itab1 occurs 0,

emp_psno TYPE z007emp-emp_psno,

emp_name TYPE z007emp-emp_name,

END OF itab1.

start-of-selection.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = 'c:\comp09\bdc.txt'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = '#'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

tables

data_tab = itab1

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

perform open_group.

loop at bdc_tab.

perform bdc_dynpro using 'SAPLSETB' '0230'.

perform bdc_field using 'BDC_CURSOR'

'DATABROWSE-TABLENAME'.

perform bdc_field using 'BDC_OKCODE'

'=ANLE'.

perform bdc_field using 'DATABROWSE-TABLENAME'

'Z007EMP'.

perform bdc_dynpro using '/1BCDWB/DBZ007EMP' '0101'.

perform bdc_field using 'BDC_CURSOR'

'Z007EMP-EMP_NAME'.

perform bdc_field using 'BDC_OKCODE'

'=SAVE'.

perform bdc_field using 'Z007EMP-EMP_PSNO'

itab1-emp_psno.

perform bdc_field using 'Z007EMP-EMP_NAME'

itab1-emp_name.

perform bdc_dynpro using '/1BCDWB/DBZ007EMP' '0101'.

perform bdc_field using 'BDC_OKCODE'

'/EBACK'.

perform bdc_field using 'BDC_CURSOR'

'Z007EMP-EMP_PSNO'.

perform bdc_dynpro using 'SAPLSETB' '0230'.

perform bdc_field using 'BDC_OKCODE'

'/EBACK'.

perform bdc_field using 'BDC_CURSOR'

'DATABROWSE-TABLENAME'.

perform bdc_transaction using 'SE16'.

endloop.

perform close_group.

2. For sesion program , you can refer to below program

---\

report ZTRNG_09_BDC_SESSION

no standard page heading line-size 255.

include bdcrecx1.

data : l_t_bdc like bdcdata occurs 0 with header line.

  • session like apki-groupid value 'testneec'.

data : begin of itab1 occurs 0,

emp_psno like z007emp-emp_psno,

emp_name like z007emp-emp_name,

end of itab1.

*data:

data : p_path type string value 'C:\comp09\bdc.txt'.

start-of-selection.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = p_path

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = '#'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

tables

data_tab = itab1

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

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'z_09_session'

  • HOLDDATE = FILLER8

  • KEEP = FILLER1

USER = sy-uname

  • RECORD = FILLER1

  • PROG = SY-CPROG

  • IMPORTING

  • QID =

  • EXCEPTIONS

  • CLIENT_INVALID = 1

  • DESTINATION_INVALID = 2

  • GROUP_INVALID = 3

  • GROUP_IS_LOCKED = 4

  • HOLDDATE_INVALID = 5

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

*loop at itab1.

PERFORM fill_bdc_tab.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'SE16'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

dynprotab = l_t_bdc

  • 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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

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

ENDIF.

*endloop.

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.

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

form fill_BDC_TAB .

REFRESH l_t_bdc.

perform populate_BDC_TAB using:

'1' 'SAPLSETB' '0230',

' ' 'BDC_CURSOR' 'DATABROWSE-TABLENAME',

' ' 'BDC_OKCODE' '=ANLE',

' ' 'DATABROWSE-TABLENAME' 'Z007EMP'.

loop at itab1.

perform populate_bdc_tab using:

'1' '/1BCDWB/DBZ007EMP' '0101',

' ' 'BDC_CURSOR' 'Z007EMP-EMP_NAME',

' ' 'BDC_OKCODE' '=SAVE',

' ' 'Z007EMP-EMP_PSNO' itab1-emp_psno,

' ' 'Z007EMP-EMP_NAME' itab1-emp_name.

ENDLOOP.

perform populate_BDC_TAB using:

'1' '/1BCDWB/DBZ007EMP' '0101',

' ' 'BDC_OKCODE' '/EBACK',

' ' 'BDC_CURSOR' 'Z007EMP-EMP_PSNO'.

perform populate_BDC_TAB using:

'1' 'SAPLSETB' '0230',

' ' 'BDC_OKCODE' '/EBACK',

' ' 'BDC_CURSOR' 'DATABROWSE-TABLENAME'.

endform.

form populate_BDC_TAB using flag

var1

var2.

clear l_t_bdc.

IF flag = '1'.

l_t_bdc-program = var1.

l_t_bdc-dynpro = var2.

l_t_bdc-dynbegin = 'X'.

ELSE.

l_t_bdc-fnam = var1.

l_t_bdc-fval = var2.

ENDIF.

APPEND l_t_bdc.

endform. " populate_BDC_TAB

*perform bdc_transaction using 'SE16'.

*

*perform close_group.

Regards..

Note:----


Reward if useful