BDC session's program name
Can anybody tell me the way so that i can find out which program has created the BDC session? I looked into APQI table but the PROGID field is blank. Is there any other way to find out the Program's name of BDC session?
I am able to see here. I do not understand why you are not able to see that.
Ok, try this, In the list of sessions displayed -> <b>double click the session</b> that an error (i.e. <b>Transaction Ended with errors).</b>
Then it will take you to another screen, here you choose the <b>Screens tab</b>.
You can find the program name here.
Regards
Kathirvel
Similar Messages
-
Hi,
Please any body send a sample program for bdc session method.
Thanks,
sreedhar.See the BDC Session method program :
report zmppc011 no standard page heading line-size 120 line-count 55
message-id zz.
pool of form routines
include zmppn001.
Define BDC Table Structure
data: begin of itab_bdc_tab occurs 0.
include structure bdcdata.
data: end of itab_bdc_tab.
Input record layout of Leagcy File
data: begin of itab_xcel occurs 0,
matnr(18) type c,
werks(4) type c,
alnag(2) type c,
verid(4) type c,
text1(40) type c,
bstmi like mkal-bstmi,
bstma like mkal-bstma,
adatu(10) type c,
bdatu(10) type c,
stlal(2) type c,
stlan(1) type c,
serkz(1) type c,
mdv01(8) type c,
elpro(4) type c,
alort(4) type c,
end of itab_xcel.
data: begin of lt_pp04_cache occurs 0,
matnr like itab_xcel-matnr,
werks like itab_xcel-werks,
alnag like itab_xcel-alnag,
plnnr like mapl-plnnr,
arbpl like crhd-arbpl,
ktext like crtx-ktext,
end of lt_pp04_cache.
data: v_ssnnr(4) type n,
v_lines_in_xcel like sy-tabix,
v_ssnname like apqi-groupid,
v_trans_in_ssn type i,
wa_xcel LIKE itab_xcel,
l_tabix like sy-tabix,
v_matnr like rc27m-matnr,
v_plnnr like mapl-plnnr,
v_plnal like mapl-plnal,
v_tcode like sy-tcode value 'C223',
v_plnty like plas-plnty value 'R',
v_objty like crhd-objty value 'A',
v_plpo_steus like plpo-steus value 'PP04',
v_verwe like crhd-verwe value '0007'.
Parameters
selection-screen: skip 3.
selection-screen: begin of block 1 with frame.
parameters: p_name like rlgrap-filename
default 'C:\My Documents\InputFile.txt'
obligatory,
bdc session name prefix
p_bdcpfx(6) default 'ZPVCRT'
obligatory,
number for transction per BDC session
p_trnssn type i
default 2000 obligatory,
retain the BDC session after successfull execution
p_keep like apqi-qerase
default 'X',
user who will be executing BDC session
p_uname like apqi-userid
default sy-uname
obligatory.
selection-screen: end of block 1.
possible entry list (F4 dropdown) for input file name
at selection-screen on value-request for p_name.
*-SELECT FILE FROM USERS LOCAL PC
call function 'WS_FILENAME_GET'
exporting
DEF_FILENAME = ' '
def_path = 'C:\Temp\'
mask = ',.,..'
mode = 'O'
title = 'Select File '(007)
importing
filename = p_name
RC =
exceptions
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
others = 5.
if sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
begin the show
start-of-selection.
read data from input file
perform transfer_xcel_to_itab.
loop at itab_xcel.
hang on to xcel line num
l_tabix = sy-tabix.
each line in the xcel file marks begining of new prod.version defn
if num-of-trnas-in-session = 0, create new BDC session
if v_trans_in_ssn is initial.
perform bdc_session_open.
endif.
begin new bdc script for rtg create trans
fill in bdc-data for prod.version maintenance screens
perform bdc_build_script.
insert the bdc script as a BDC transaction
perform bdc_submit_transaction.
keep track of how many BDC transactions were inserted in the BDC
session
add 1 to v_trans_in_ssn.
if the user-specified num of trans in BDC session is reached OR
if end of input file is reached, close the BDC session
if v_trans_in_ssn = p_trnssn or
l_tabix = v_lines_in_xcel.
perform bdc_session_close.
clear v_trans_in_ssn.
endif.
endloop.
top-of-page.
call function 'Z_HEADER'
EXPORTING
FLEX_TEXT1 =
FLEX_TEXT2 =
FLEX_TEXT3 =
FORM TRANSFER_XCEL_TO_ITAB *
Transfer Xcel Spreadsheet to SAP Internal Table *
form transfer_xcel_to_itab.
Read the tab-delimited file into itab
call function 'WS_UPLOAD'
exporting
filename = p_name
filetype = 'DAT'
IMPORTING
filelength = flength
tables
data_tab = itab_xcel
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
others = 8.
if sy-subrc = 0.
sort the data
sort itab_xcel by matnr werks.
clear v_lines_in_xcel.
if no data in the file - error out
describe table itab_xcel lines v_lines_in_xcel.
if v_lines_in_xcel is initial.
write: / 'No data in input file'.
stop.
endif.
else.
if file upload failed - error out
write: / 'Error reading input file'.
stop.
endif.
endform.
FORM BDC_SESSION_OPEN *
Open BDC Session *
form bdc_session_open.
create bdc session name = prefix-from-selectn-screen + nnnn
add 1 to v_ssnnr.
concatenate p_bdcpfx v_ssnnr into v_ssnname.
open new bdc session
call function 'BDC_OPEN_GROUP'
exporting
client = sy-mandt
group = v_ssnname
keep = p_keep
user = p_uname
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.
endform.
FORM BDC_BUILD_SCRIPT *
Build BDC *
form bdc_build_script.
data: l_arbpl like crhd-arbpl,
l_text1 like mkal-text1,
l_mdv01 like mkal-mdv01,
l_mapl like mapl.
clear bdc-data itab - begin of new bdc transaction
clear itab_bdc_tab.
refresh itab_bdc_tab.
read material cross reference tables to determine sap part#
clear : v_matnr, v_plnnr, v_plnal.
perform read_matnr_cross_ref using itab_xcel-matnr
itab_xcel-werks
changing v_matnr.
determine the version description to use
if itab_xcel-text1 is initial.
l_text1 = itab_xcel-verid.
else.
l_text1 = itab_xcel-text1.
endif.
determine the routing group# and group ctr# to use
perform read_routing .
determine the production line to use
if itab_xcel-mdv01 is initial.
if not provided in the file then:
prod line = work ctr on the last PP04 op of the rtg determined above
perform read_wc_on_last_pp04 using v_plnnr v_plnal
changing l_mdv01.
NOTE: when executing the above form\routine, if v_plnnr is initial
or v_plnal is initial, THEN l_mdv01 will automatically be
returned blank (ie initial)
else.
l_mdv01 = itab_xcel-mdv01.
endif.
build bdc script
perform bdc_build_script_record
fill in initial screen
using: 'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=ENTE',
' ' 'MKAL-WERKS' itab_xcel-werks,
' ' 'MKAL-MATNR' v_matnr,
' ' 'MKAL_ADMIN-DISPO' space,
' ' 'MKAL-PLNNR' space,
' ' 'MKAL_ADMIN-STTAG' space,
' ' 'MKAL-PLNNG' space,
' ' 'MKAL-MDV01' space,
' ' 'MKAL-PLNNM' space,
click create button on initial screen and go to detail screen
'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=CREA',
fill in the detail screen and go back to initial screen
'X' 'SAPLCMFV' '2000',
' ' 'BDC_OKCODE' '=CLOS',
' ' 'MKAL_EXPAND-MATNR' v_matnr,
' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
' ' 'MKAL_EXPAND-TEXT1' l_text1,
' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
' ' 'MKAL_EXPAND-PLTYG' v_plnty,
' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
' ' 'MKAL_EXPAND-ALNAG' v_plnal,
' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
' ' 'MKAL_EXPAND-MDV01' l_mdv01,
' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
save the production version from initial screen
'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=SAVE'.
endform.
FORM BDC_SUBMIT_TRANSACTION *
Submit BDC Session *
form bdc_submit_transaction.
Load BDC script as a trqansction in BDC session
call function 'BDC_INSERT'
exporting
tcode = v_tcode
tables
dynprotab = itab_bdc_tab
exceptions
internal_error = 01
not_open = 02
queue_error = 03
tcode_invalid = 04.
endform.
FORM BDC_BUILD_SCRIPT_RECORD *
form bdc_build_script_record using dynbegin name value.
clear itab_bdc_tab.
if dynbegin = 'X'.
move: name to itab_bdc_tab-program,
value to itab_bdc_tab-dynpro,
'X' to itab_bdc_tab-dynbegin.
else.
move: name to itab_bdc_tab-fnam,
value to itab_bdc_tab-fval.
shift itab_bdc_tab-fval left deleting leading space.
endif.
append itab_bdc_tab.
endform.
FORM BDC_SESSION_CLOSE *
Close BDC Session *
form bdc_session_close.
close the session
call function 'BDC_CLOSE_GROUP'
exceptions
not_open = 1
queue_error = 2
others = 3.
skip 2.
if sy-subrc ne 0.
write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
else.
write : / 'Session created:', v_ssnname,
50 '# of transactions:', v_trans_in_ssn.
endif.
endform.
*& Form read_routing_cache
*FORM read_routing_cache USING pi_matnr
pi_werks
pi_alnag
pi_verid
pi_mdv01.
DATA: BEGIN OF lt_plpo OCCURS 0,
vornr LIKE plpo-vornr,
objty LIKE crhd-objty,
objid LIKE crhd-objid,
arbpl LIKE crhd-arbpl,
END OF lt_plpo,
l_mapl_plnnr LIKE mapl-plnnr.
determine the routing group#
CLEAR lt_pp04_cache.
chk if its in the cache first, if not then get it from MAPL table
and put it in the cache
READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
IF sy-subrc = 0.
do nothing - lt_pp04_cache header line has rtg#
ELSE.
get the routing group # from MAPL
SELECT plnnr INTO l_mapl_plnnr
FROM mapl UP TO 1 ROWS
WHERE matnr = pi_matnr AND
werks = pi_werks AND
plnty = 'R' AND
plnal = pi_alnag AND
loekz = space.
ENDSELECT.
put it in the cache internal table
IF NOT l_mapl_plnnr IS INITIAL.
lt_pp04_cache-matnr = pi_matnr.
lt_pp04_cache-werks = pi_werks.
lt_pp04_cache-alnag = pi_alnag.
lt_pp04_cache-plnnr = l_mapl_plnnr.
APPEND lt_pp04_cache.
ENDIF.
ENDIF.
if the rtg# was determined AND
-- the work center was not determined yet AND
-- work center was really needed for this line in the input file
then
-- read the work center from last PP04 operation on the routing
-- update the cache accordingly
IF NOT lt_pp04_cache-plnnr IS INITIAL AND
lt_pp04_cache-arbpl IS INITIAL AND
( pi_verid IS INITIAL OR
pi_mdv01 IS INITIAL ).
read the last PP04 operation
CLEAR lt_plpo.
REFRESH lt_plpo.
SELECT vornr eobjty eobjid e~arbpl
INTO CORRESPONDING FIELDS OF TABLE lt_plpo
FROM plas AS b
INNER JOIN plpo AS c
ON bplnty = cplnty AND
bplnnr = cplnnr AND
bzaehl = czaehl
INNER JOIN crhd AS e
ON carbid = eobjid
WHERE b~plnty = v_plnty AND
b~plnnr = lt_pp04_cache-plnnr AND
b~plnal = lt_pp04_cache-alnag AND
c~loekz = space AND
c~steus = v_plpo_steus AND
e~objty = v_objty AND
e~werks = lt_pp04_cache-werks AND
e~verwe = v_verwe.
SORT lt_plpo BY vornr DESCENDING.
READ TABLE lt_plpo INDEX 1.
IF NOT lt_plpo-arbpl IS INITIAL.
lt_pp04_cache-arbpl = lt_plpo-arbpl.
read work center description
SELECT SINGLE ktext INTO lt_pp04_cache-ktext
FROM crtx WHERE objty = lt_plpo-objty AND
objid = lt_plpo-objid AND
spras = sy-langu.
the following read will get the index of the correct record to be
updated in the cache
READ TABLE lt_pp04_cache
WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
MODIFY lt_pp04_cache
INDEX sy-tabix
TRANSPORTING arbpl ktext.
ENDIF.
ENDIF.
*ENDFORM. " read_last_pp04_operation_cache
*& Form read_routing
form read_routing.
data: begin of lt_mapl occurs 0,
plnnr like mapl-plnnr,
plnal like mapl-plnal,
end of lt_mapl,
l_arbpl like crhd-arbpl.
get all the rtg# and grp ctr# from MAPL
select plnnr plnal
into corresponding fields of table lt_mapl
from mapl
where matnr = v_matnr and
werks = itab_xcel-werks and
plnty = v_plnty and "Rate Routing
loekz = space. "with del flag = OFF
sort lt_mapl by plnal.
if not itab_xcel-verid is initial.
if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
if itab_xcel-verid = '0001'.
read table lt_mapl index 1.
v_plnnr = lt_mapl-plnnr.
v_plnal = lt_mapl-plnal.
else.
if the verid<>0001 then use the rtg-grp# and grp-ctr# of the routing
whose work center on the last PP04 operation matches the given verid
loop at lt_mapl.
clear l_arbpl.
get the work center from the last PP04 operation
perform read_wc_on_last_pp04 using lt_mapl-plnnr
lt_mapl-plnal
changing l_arbpl.
if itab_xcel-verid = l_arbpl.
v_plnnr = lt_mapl-plnnr.
v_plnal = lt_mapl-plnal.
exit.
endif.
endloop.
endif.
else.
do nothing
endif.
For version IDs that are other then '0000' or 'ZWIP' :--
if itab_xcel-verid NE '0000' and
itab_xcel-verid NE 'ZWIP'.
if routing group# or group counter was not determined, make the
valid-to date 99/99/9999 so that the BDC, on execution, errors out.
if v_plnnr is initial or
v_plnal is initial.
itab_xcel-bdatu = '99/99/9999'.
endif.
endif.
determine the routing group#
CLEAR lt_pp04_cache.
chk if its in the cache first, if not then get it from MAPL table
and put it in the cache
READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
IF sy-subrc = 0.
do nothing - lt_pp04_cache header line has rtg#
ELSE.
get the routing group # from MAPL
put it in the cache internal table
IF NOT l_mapl_plnnr IS INITIAL.
lt_pp04_cache-matnr = pi_matnr.
lt_pp04_cache-werks = pi_werks.
lt_pp04_cache-alnag = pi_alnag.
lt_pp04_cache-plnnr = l_mapl_plnnr.
APPEND lt_pp04_cache.
ENDIF.
ENDIF.
if the rtg# was determined AND
-- the work center was not determined yet AND
-- work center was really needed for this line in the input file
then
-- read the work center from last PP04 operation on the routing
-- update the cache accordingly
IF NOT lt_pp04_cache-plnnr IS INITIAL AND
lt_pp04_cache-arbpl IS INITIAL AND
( pi_verid IS INITIAL OR
pi_mdv01 IS INITIAL ).
read the last PP04 operation
CLEAR lt_plpo.
REFRESH lt_plpo.
SELECT vornr eobjty eobjid e~arbpl
INTO CORRESPONDING FIELDS OF TABLE lt_plpo
FROM plas AS b
INNER JOIN plpo AS c
ON bplnty = cplnty AND
bplnnr = cplnnr AND
bzaehl = czaehl
INNER JOIN crhd AS e
ON carbid = eobjid
WHERE b~plnty = v_plnty AND
b~plnnr = lt_pp04_cache-plnnr AND
b~plnal = lt_pp04_cache-alnag AND
c~loekz = space AND
c~steus = v_plpo_steus AND
e~objty = v_objty AND
e~werks = lt_pp04_cache-werks AND
e~verwe = v_verwe.
SORT lt_plpo BY vornr DESCENDING.
READ TABLE lt_plpo INDEX 1.
IF NOT lt_plpo-arbpl IS INITIAL.
lt_pp04_cache-arbpl = lt_plpo-arbpl.
read work center description
SELECT SINGLE ktext INTO lt_pp04_cache-ktext
FROM crtx WHERE objty = lt_plpo-objty AND
objid = lt_plpo-objid AND
spras = sy-langu.
the following read will get the index of the correct record to be
updated in the cache
READ TABLE lt_pp04_cache
WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
MODIFY lt_pp04_cache
INDEX sy-tabix
TRANSPORTING arbpl ktext.
ENDIF.
ENDIF.
endform. " read_last_pp04_operation_cache
*& Form read_wc_on_last_pp04
form read_wc_on_last_pp04 using pi_plnnr
pi_plnal
changing pe_arbpl.
data: begin of lt_plpo occurs 0,
vornr like plpo-vornr,
objty like crhd-objty,
objid like crhd-objid,
arbpl like crhd-arbpl,
end of lt_plpo.
get all the PP04 operations for the given rtg# & grp-ctr#
select vornr eobjty eobjid e~arbpl
into corresponding fields of table lt_plpo
from plas as b
inner join plpo as c
on bplnty = cplnty and
bplnnr = cplnnr and
bzaehl = czaehl
inner join crhd as e
on carbid = eobjid
where b~plnty = v_plnty and "Rate Routing
b~plnnr = pi_plnnr and
b~plnal = pi_plnal and
c~loekz = space and "Oper Del Flag = OFF
c~steus = v_plpo_steus and "PP04
e~objty = v_objty. "WC Obj Type = 'A'
read the last operation
sort lt_plpo by vornr descending.
read table lt_plpo index 1.
pe_arbpl = lt_plpo-arbpl.
endform. " read_wc_on_last_pp04 -
What is BDC Session & Z-Program
Hi,
Can anyone tell me what is BDC Session & Z-Program ?
RajarshiDear Rajarshi,
BDC (Batch Data Communication) - is one of the methods for uploading the data. You have two options with BDC, namely Session and Call Transaction.
First you would record a particular transaction with SHDB simulating sample transaction entry. Then you would use this recording to create a 'Z' program.
With session method a session will be generated that needs to be processed in Transacton SM35 with Foreground, Background, or Errors only mode. You can view and analyze session log after processing the session.
With call transaction you would specify the mode in the program itself. Hence, no session is generated in SM35 in this case.
please visit the following link for more information:
http://help.sap.com/saphelp_erp2005/helpdata/en/fa/097119543b11d1898e0000e8322d00/frameset.htm
Z programs are custom programs. They could be reports, transactions, scripts, smartforms, BDCs, BAPIs etc. You would develop them if there is no SAP standard program available that meets your requirement.
Reward points if this is helpful.
Regards,
Naveen. -
hi all
I want all BDC Tcodes and Program names in SAP , is there any easy method to see all BDC Tcodes ?
psraothere is no such tcode named for BDC,
BDC is nothing but batch data conversion
it means from the client side they will be having set of data to be uploaded it may be master data or it may be a transactional data
and previously they might be using some other ERP softwares
for uploading datas into SAP
these are the methods followed Direct input method,LSMW,BDC's
BDC has its data table known as BDCDATA it is used for validating the data in the file which we are going to upload into database through a transaction
i.e.., say for example if they are going to upload vendor master data, these datas will be first passed into bdcdata structure and later on after validating it will passed to screen fields of XK01 transaction and after committing it, it will be uploaded into the data base -
Doubt in BDC session method program
hi,
I tried to execute this program..i am getting error in the bolded line..can you give suggestions..
REPORT ZPRABA1.
TABLES:LFA1.
DATA:BEGIN OF IT_ITAB OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
LAND1 LIKE LFA1-LAND1,
NAME1 LIKE LFA1-NAME1,
END OF IT_ITAB.
DATA:BEGIN OF IT_JTAB OCCURS 0,
Error is showing in the below line..that means i have to create new structure or
what?
INCLUDE STRUCTURE BDCDATA.
END OF IT_JTAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
FILENAME = 'C:/praba.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = IT_ITAB[].
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'USER01'
USER = SY-UNAME.
LOOP AT IT_ITAB[] INTO IT_ITAB.
REFRESH IT_JTAB.
PERFORM SUB USING 'YVTRANS' '0100'.
PERFORM SUB1 USING 'LFA1-LIFNR' ITAB-LIFNR,
PERFORM SUB1 USING 'LFA1-LAND1' ITAB-LAND1,
PERFORM SUB1 USING 'LFA1-NAME1' ITAB-NAME.
PERFORM SUB1 USING 'BDC_OKCODE' 'INSERT'.
PERFORM SUB USING 'YSBDC1' '100'.
PERFORM SUB1 USING 'BDC_OKCODE' 'EXIT'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'YSBDC1'
TABLES
DYNPROTAB = IT_JTAB.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
SUBMIT RSBDCSUB VIA SELECTION-SCREEN.
FORM SUB USING A B.
CLEAR IT_JTAB.
IT_JTAB-PROGRAM = A.
IT_JTAB-DYNPRO = B.
IT_JTAB-DYNBEGIN = 'X'.
ENDFORM.
Error message:
unable to interpret 'STRUCTURE'. POSSIBLE causes of error:Incorrect spelling or comma error.hi,
u ahve to pass scrren field values .
FORM sub1 USING VALUE(P_0074)
VALUE(P_0075).
CLEAR it_jtab.
it_jtab-FNAM = P_0074.
it_jtab-FVAL = P_0075.
APPEND it_jtab.
ENDIF.
ENDFORM.
check the sample pg.
REPORT ZSR_BDC_SESSION.
DATA: BEGIN OF ITAB OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
END OF ITAB.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
BDCMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'z:\flatfiles\sr1.txt'
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 = ITAB
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 = 'SR'
HOLDDATE = FILLER8
KEEP = 'X'
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 ITAB.
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'
ITAB-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
ITAB-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
ITAB-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
ITAB-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
ITAB-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
ITAB-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'XK01'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
DYNPROTAB = BDCTAB
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.
*perform bdc_transaction using 'XK01'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
*perform close_group.
*& Form bdc_dynpro
FORM BDC_DYNPRO USING VALUE(P_0069)
VALUE(P_0070).
CLEAR BDCTAB.
BDCTAB-PROGRAM = P_0069.
BDCTAB-DYNPRO = P_0070.
BDCTAB-DYNBEGIN = 'X'.
APPEND BDCTAB.
ENDFORM. " bdc_dynpro
*& Form bdc_field
FORM BDC_FIELD USING VALUE(P_0074)
VALUE(P_0075).
IF P_0075 IS NOT INITIAL.
CLEAR BDCTAB.
BDCTAB-FNAM = P_0074.
BDCTAB-FVAL = P_0075.
APPEND BDCTAB.
ENDIF.
ENDFORM. " bdc_field
if helpful reward points -
To find program name by using session ID or name?
Hi,
I need to find the program name which created the bdc session( SM35) by using the session name or Session ID.How can that be done?
Will that be stored in some table?
Regards,
Pooja.I think if the KEEP = ' ' in BDC_OPEN_GROUP FM, the session gets cleared from SM35, so for that sessions PROGID will be blank.
So in BDC program parameter KEEP = space, PROGID in APQI table will be blank.
correct me if i am wrong. -
Program To Update BDC Session Status in SM35
Existing Process : Currently we create orders using a function module which internally uses BDC Session method for transaction VA01. If the session ran successfully then we check the status and use SAVE_TEXT to upload the long text for the order. But in some cases the order fails. Then the session will be errored out in SM35 and user runs the session manually and fixes the problem and post order. So the text cannot be uploaded now as the user ran the session manually. So I wrote a Z program to run the session using program RSBDCCTU which the runs the session in forground and get the text from memory which I exported to memory while initial transaction and upload it using SAVE_TEXT after the session ran successfully. This program works fine.
Problem : After running my Z program the order is posted and text is uploaded but the session is still in error status in SM35. The standard program RSBDCCTU just runs the session in foreground but does not update the status.
Is there any other way we can do this or any other standard programs available to update the status of the session.
Any help will be appreciated.How are you importing text in the z program, which is exported in the function module? they are totally unrelated internal sessions.
You can as well import text and use SAVE_TEXT using user exit USEREXIT_SAVE_DOCUMENT_PREPARE in include MV45AFZZ after executing the error session in SM35, you don't need a Z program.
Use condition SY-BINPT = 'X' and T180-TRTYP = 'H' in the user exit to process SAVE_TEXT.
Regards
Sridhar -
Hi,
When I use the Session Manager in my DBA tool, I see the sessions for my Raptor login, but they are hard to identify because the Program column is NULL. Is there a reason why Raptor is not setting the Program name at login? Can this be fixed, so that as a DBA I can identify the Raptor Sessions?
thanks
-NielsYes, I logged this the other day
Barry -
How to find the logins,program name and databases for a session id?
I used the following the following query.
select pr.spid ,pr.dbid,pr.program_name,pr.loginame,ss.session_id,ss.host_name,ss.login_time,db.name from master.dbo.sysprocesses pr,sys.dm_exec_sessions ss,sys.databases db
where pr.spid = ss.session_id and pr.dbid = db.database_id
order by ss.login_time desc
Is spid in master.dbo.sysprocesses the same as session_id in sys.dm_exec_sessions and dbid in master.dbo.sysprocesses the same as database_id in sys.databases?
My intention is to get the active sessions with the program name,login Name and database name corresponding to the session?1)Why you included the clause session_id > 50?
Sessions with session_id <= 50 are system processes.
2)Is there any problem with the query I used?
You query was better than Latheesh's. To wit, his query will only show the database for sessions who are actually running something.
On SQL 2005 and SQL 2008, this is the best solution:
SELECT des.session_id, des.[status], des.login_name,
d.name AS database_name, des.program_name
FROM sys.dm_exec_sessions des
JOIN sys.sysprocesses p ON des.session_id = p.spid
LEFT JOIN sys.databases d ON p.dbid = d.database_id
WHERE des.session_id > 50
AND p.ecid =0
ORDER BY des.session_id;
The condition p.ecid = 0 is needed to weed out extra rows when there are parallism in force.
On SQL 2012, you don't need sysprocesses, but this works:
SELECT des.session_id, des.[status], des.login_name,
d.name AS database_name, des.program_name
FROM sys.dm_exec_sessions des
LEFT JOIN sys.databases d ON des.database_id = d.database_id
WHERE des.session_id > 50
ORDER BY des.session_id;
Erland Sommarskog, SQL Server MVP, [email protected] -
BDC session created as i excute I have not passed any file name
Hello Guru's
I have created one BDC
PARAMETERS : readfile LIKE rlgrap-filename DEFAULT
'c:\textfile.txt' LOWER CASE.
on execute I'm passing a new file name & my BDC works fine.
But in case i execute & do not pass any file name & cancel the same a BDC session is generated with zero values.
How to restrict the same. Please guide.hi,
make ur field obligatory..
PARAMETERS : readfile LIKE rlgrap-filename DEFAULT
'c:\textfile.txt' LOWER CASE OBLIGATORY.
and make another check.
after uploading the file to internal table, check whether it contains any value...
IF <tab>[] IS INITIAL.
MESSAGE 'No Data in FILE.' type 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
and if a blank session is generated, go to SM35 and delete that session...
Edited by: Sukriti Saha on Oct 23, 2008 10:39 AM
Edited by: Sukriti Saha on Oct 23, 2008 10:41 AM -
About using rsbdcsub to run BDC session .
Hi all,
I use rsbdcsub to run a bdc session ,
But the job created by the program is always in "ready" status and never run(complete) .
How can I solve the problem?
Thanks
Pole
Message was edited by: gw gwHi Srinivas,
Thanks very much.You understood what I meant exectly.
Because the files provided by the several banks systems are not the same format,so we can not use the report RFEBKA00.And now we are developing the system connecting to the bank system directly,we can get the data from the bank and upload them to the sap system without creating a file.
So we use the FF67 BDC
The program like this:
"it_data" is the internal table containing the data from the bank system.
"l_mnam1" is the session name created by the program.
PERFORM fill_bdcdata USING:
'SAPMF40K' '0110' 'X',
'FEBMKA-FDIS_SEL' 'X' ' ',
'FEBMKA-VARI_START' 'TKL01' ' ',
'FEBMKA-DEBI_MID' 'D' ' ',
'FEBMKA-KRED_MID' 'K' ' ',
'FEBMKA-WVAR_ART' '2' ' ',
'FEBMKA-BUCH_VAL' 'X' ' ',
'BDC_OKCODE' '=ENTE' ' ',
'SAPMF40K' '0102' 'X',
'FEBMKA-BANKL' t012-bankl ' ',
'FEBMKA-BANKN' t012k-bankn ' ',
'FEBMKA-WAERS' 'CNY' ' ',
'FEBMKA-AZNUM' febko-aznum ' ',
'FEBMKA-AZDAT' l_azdat ' ',
'FEBMKA-SSALD' l_esbtr ' ',
'FEBMKA-ESALD' l_ssbtr ' ',
'FEBMKA-BUDTM' l_BUDTM ' ',
'FEBMKA-MNAM1' l_mnam1 ' ',
'BDC_OKCODE' '/00' ' ',
'SAPMF40K' '8000' 'X'.
SORT it_data BY valut.
LOOP AT it_data.
WRITE it_data-kwbtr TO l_kwbtr CURRENCY 'CNY'.
l_zuonr = it_data-zuonr.
PERFORM fill_bdcdata USING:
'FEBMKA-VGMAN(01)' it_data-vgman ' ',
'FEBEP-VALUT(01)' it_data-valut ' ',
'FEBMKA-KWBTR(01)' l_kwbtr ' ',
'FEBMKK-ZUONR_KF(01)' it_data-zuonr ' ',
'FEBMKK-SGTXT_KF(01)' l_zuonr ' ',
'BDC_OKCODE' '=ZINS' ' ',
'SAPMF40K' '8000' 'X'.
AT LAST.
PERFORM fill_bdcdata USING:
'BDC_OKCODE' '=SICH' ' '.
ENDAT.
ENDLOOP.
PERFORM fill_bdcdata USING:
'SAPMF40K' '0102' 'X',
'BDC_OKCODE' '=BUCH' ' ',
'SAPMF40K' '0102' 'X',
'BDC_OKCODE' '/EENDE' ' '.
l_mode = 'N'.
CALL TRANSACTION 'FF67' USING t_bdcdata MODE l_mode
UPDATE 'S'
MESSAGES INTO t_msg_tab.
Thanks again for your help.
Pole -
Hi SAP Gurus,
A program creates 4000 sessions with similar name like 'SESSION_NAME' each having 200 records.This BDC updates same Transaction.
I have a another program with parameter as Session name. With this session name i will get all the QUEUE ID's of 4000 sessions and using this ID i submit RSBDCBTC.
Now the problem is that all the sessions run at the same time .
The consequence was that all session ran on errors because they lock each other.
I have used WAIT UPTO 2 SESONDS..But this doesn't work.
Please suggest how to overcome this problem.
Thanks in Advance.
Regards,
Dinakaran.RHi Dinakaran
use:
SUBMIT rsbdcsub
WITH mappe EQ 'MIG_LISTING' " Session Name
WITH von EQ sy-datum " Starting Interval date
WITH bis EQ sy-datum " Closing Interval Date
WITH z_verarb EQ 'X'
WITH logall EQ 'X' " Log Info
AND RETURN .
here even though session name is same by mentioning the Starting Interval Date and Closing Interval date, we can process the 2 created pool sessions successfully.
Feel free to ask any queries regarding this.
Regards,
Kumar -
Can anybody pls tell me limitations of BDC Session & Call transaction?
hi, Guys, this is srinivas.
How can we deside which method is to(BDC session/ Call transaction)
use to upload data to SAP database?
Can we run Call Transaction in Background?
Which is preferable for bulk data? and Why?
how can we restart Session if any error occurs?
Thanku?Hi,
Hope it helps this......
SAP BDC INTERVIEW QUESTIONS & ANSWERS
1. What is full form of BDC Session?
Batch Data Communication Session.
2. What are the steps in a BDC session?
The first step in a BDC session is to identify the screens of the transaction that the program will process. Next step is to write a program to build the BDC table that will be used to submit the data to SAP. The final step is to submit the BDC table to the system in the batch mode or as a single transaction by the CALL TRANSACTION command.
3. How do you find the information on the current screen?
The information on the current screen can be found by SYSTEM à STATUS command from any menu.
4. How do you save data in BDC tables?
The data in BDC tables is saved by using the field name BDC_OKCODE and field value of /11.
5. What is the last entry in all BDC tables?
In all BDC tables the last entry is to save the data by using the field name BDC_OKCODE and a field value of /11.
6. What is a multiple line field?
A multiple line field is a special kind of field which allows the user to enter multiple lines of data into it.
7. How do you populate data into a multiple line field?
To populate data into a multiple line field, an index is added to the field name to indicate which line is to be populated by the BDC session (Line index).
8. Write the BDC table structure.
BDC table structure
FIELD TYPE DESCRIPTION
Program CHAR (8) Program name of transaction.
DynPro CHAR (4) Screen number of transaction.
DynBegin CHAR (1) Indicator for new screen.
Fnam CHAR (35) Name of database field from screen.
Fval CHAR (80) Value to submit to field.
9. Does the CALL TRANSACTION method allow multiple transactions to be processed by SAP?
No. The CALL TRANSACTION method allows only a single transaction to be processed by SAP.
10. Does the BDC-INSERT function allow multiple transactions to be processed by SAP?
Yes.
11. What is the syntax for CALL TRANSACTION?
CALL TRANSACTION trans .
Three possible entries are there for MODE.
A - Show all screens.
E - Show only screens with errors.
N - Show no screens.
Regards,
V.Balaji
Reward if usefull -
Mass reversal of GL docs created by BDC session
I need to mass reverse GL documents posted in BDC session. I tried to record a BDC for F.80 but there is a problem with dynamic selections (the session name I want to reverse is in dynamic selections). The screen fields in dynamic selections have dynamic names (e.g. %%DYN001) and filling them from BDC does not work. If I replay the record created by SDHC I get the error than the field does not exist on the main program selection screen. How can I pass the session name to the BDC?
Or, is there any alternative (e.g. BAPI/FM for mass reverse that can read the session name too)?
thanks to allHi Jan,
I don't know this object type, so maybe there's a BAPI as you suggest.
If you don't find one, you may pre-fill the LDB selection screen parameters by creating a little custom program, that will call the report behind F-80 using SUBMIT ... WITH FREE-SELECTIONS ... Then you may either create a Z transaction to launch this custom program, or simply use SA38/SE38 if the user is authorized to it in the productive system. Then you'll call this transaction using batch input.
BR
Sandra -
How to Resubmit a BDC session in the background
If it is in call transaction use the mode 'N'
If it is session method use the submit the program rsbdcsub via selection screen .
give ur variant name.
Regards,
Venkat
Edited by: venkat reddy on May 2, 2008 7:14 AM
Maybe you are looking for
-
Error in GR(No item category exists (Table T184L HID V ))
Hi, While doing GR for stock material the below error appears No item category exists (Table T184L HID V ) Please help. Urgent. Points will be rewarded. Regards
-
Emailing photos - what is 'readiris'?
I have read all the threads on emailing photos to windows users with avid interest, as this is my main sticking point with iPhoto. I mainly use my MacBook for photo processing and emailing, and I should add that I am very new to all of this and am on
-
Best wireless router too share Verizon Wireless USB720 connection?
Our connection with Verizon Wireless via USB720 modem on an older Imac keeps dropping because we us that via airport to connect 2 other Macbooks. In research, I guess it's because airport and EVDO share a similar RF. Anyway, I need a wireless router
-
we have two plants belongs to two company code respectively, one material code for both two plants, the problem is one material code may have two valuation class "inter-company raw material" and " third party raw material", by SAP standard, we can on
-
Hi All, I have done a sales report, when i checked in runtime analysis . its performance is like this ABAP 190,816 = 27.2% Database