‎2007 Feb 12 8:12 AM
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......
‎2007 Feb 12 8:38 AM
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.
‎2007 Feb 12 8:59 AM
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