‎2007 Jul 27 6:41 PM
Hi Gurus,.
Is it possiblt to have 2 transactions in the same BDC so that one follows the other? i the same BDC? If its possible please tell me how to do it?
Thank you in advance
Regards
Tatenda Chaibva
‎2007 Jul 27 6:56 PM
Hi,
It's not possible, you can't use the same BDC data for two transaction.
You must fill a BDC and call your transaction after you refresh bdc and fill again ....!!
Regards.
Marcelo Ramos
‎2007 Jul 27 7:09 PM
HI,
yes you can call as many transactions as you want from a single BDC program..
steps
fill bdcdata1 table with the data.
call transaction 1.
fill bdcdata2 table with the data for second transaction.
call transaction 2
Like this any number of.
thanks
mahesh
‎2007 Jul 27 8:26 PM
Could i please have some sample code! But looking at this code where would i place it
report ZAST_UPL line-size 255.
data: remaining_life_yrs type p,
remaining_life_periods type p,
days type p,
remainder type p,
useful_life type p,
useful_period type p.
include bdcrecx1.
parameters: pfile type rlgrap-filename.
tables: ankb.
*data: pfile1 type string.
TYPES: begin of t_datatab ,
assets_class(10),
c_code(4),
description(50),
add_description(50),
serial(18),
capitalisation(8),
c_centre(10),
plant(4),
asset_location(10),
amount1(13),
amount2(13),
end of t_datatab.
data: begin of t_datatabfinal occurs 0,
assets_class(10),
c_code(4),
description(50),
add_description(50),
serial(18),
capitalisation(8),
c_centre(10),
plant(4),
asset_location(10),
amount1(13),
amount2(13),
end of t_datatabfinal.
data : assets_class1(4) value '0000',
class_asset(8).
data : date_diff type p, earliest type C, timediff type p.
data : a_new type d, b_new type d.
data : capitalisation type string.
DATA: it_datatab TYPE STANDARD TABLE OF t_datatab,
wa_datatab TYPE t_datatab.
DATA: wa_record TYPE t_datatab,
it_record TYPE STANDARD TABLE OF t_datatab INITIAL SIZE 0.
DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: gd_currentrow TYPE i.
At selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfile.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'PFILE'
IMPORTING
file_name = pfile.
data: itab like ALSMEX_TABLINE occurs 0 with header line.
*pfile1 = pfile.
START-OF-SELECTION.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = pfile
I_BEGIN_COL = '1'
I_BEGIN_ROW = '2' "Column headers not required
I_END_COL = '11'
I_END_ROW = '4'
TABLES
INTERN = itab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
Sort table by rows and colums
SORT itab BY row col.
Get first row retrieved
READ TABLE itab INDEX 1.
Set first row retrieved to current row
gd_currentrow = itab-row.
LOOP AT itab.
Reset values for next row
IF itab-row NE gd_currentrow.
APPEND wa_datatab TO it_record.
CLEAR wa_datatab.
gd_currentrow = itab-row.
ENDIF.
CASE itab-col.
WHEN '0001'.
wa_datatab-assets_class = itab-value.
WHEN '0002'.
wa_datatab-c_code = itab-value.
WHEN '0003'.
wa_datatab-description = itab-value.
WHEN '0004'.
wa_datatab-add_description = itab-value.
WHEN '0005'.
wa_datatab-serial = itab-value.
WHEN '0006'.
wa_datatab-capitalisation = itab-value.
WHEN '0007'.
wa_datatab-c_centre = itab-value.
WHEN '0008'.
wa_datatab-plant = itab-value.
WHEN '0009'.
wa_datatab-asset_location = itab-value.
WHEN '0010'.
wa_datatab-amount1 = itab-value.
WHEN '0011'.
wa_datatab-amount2 = itab-value.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
APPEND wa_datatab TO it_record.
LOOP AT it_record INTO t_datatabfinal.
APPEND t_datatabfinal.
ENDLOOP.
start-of-selection.
refresh bdcdata.
clear bdcdata.
perform open_group.
Loop at t_datatabfinal.
data: stop(1),
date1(8).
stop = `.`.
concatenate: assets_class1 t_datatabfinal-assets_class into class_asset.
concatenate: t_datatabfinal-capitalisation(2) stop t_datatabfinal-capitalisation2(2) stop t_datatabfinal-capitalisation6(2) into date1.
*
select * from ankb where ANLKL = class_asset
and AFABE = '01'
and afasl = 'LINS'.
if sy-subrc = 0 .
useful_life = ankb-NDJAR.
useful_period = ankb-NDPER.
endif.
useful_life = useful_life * 365.
useful_period = useful_period * 30.
*
endselect.
perform bdc_dynpro using 'SAPLAIST' '0105'.
perform bdc_field using 'BDC_CURSOR'
'ANLA-BUKRS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'ANLA-ANLKL' "TOPICK Asset class
t_datatabfinal-assets_class.
'4000'.
perform bdc_field using 'ANLA-BUKRS' "TOPICK Company code
t_datatabfinal-c_code.
'2000'.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=TAB02'.
perform bdc_field using 'ANLA-TXT50' "TOPICK Asset description
t_datatabfinal-description.
'Compaq Evo D3102'.
perform bdc_field using 'ANLA-TXA50' "TOPICK Additional asset description
t_datatabfinal-add_description.
'Desktop Computer'.
perform bdc_field using 'ANLA-SERNR' "TOPICK Serial number
t_datatabfinal-serial.
'V309LB42A259'.
perform bdc_field using 'RA02S-XHIST'
'X'.
perform bdc_field using 'ANLA-AKTIV' "TOPICK Asset capitalization
date1.
'13.10.03'.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'ANLZ-KOSTL'
t_datatabfinal-c_centre.
'203000'.
*
concatenate: t_datatabfinal-capitalisation4(4) t_datatabfinal-capitalisation2(2) t_datatabfinal-capitalisation(2) into capitalisation.
*
a_new = '20070701'. "Date format is YYYYMMDD
b_new = capitalisation. "Date format is YYYYMMDD
*
CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
EXPORTING
date1 = a_NEW
time1 = '000000'
date2 = b_NEW
time2 = '000000'
IMPORTING
DATEDIFF = date_diff
EXCEPTIONS
INVALID_DATETIME = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
****calculation of remaining life in years and periods for the asset***
*
remaining_life_yrs = ( useful_life - date_diff ) div 365.
remainder = ( useful_life - date_diff ) mod 365.
remaining_life_periods = remainder div 30.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=ALTD'.
perform bdc_field using 'BDC_CURSOR'
'ANLZ-STORT'.
perform bdc_field using 'ANLZ-KOSTL' "TOPICK Cost center
t_datatabfinal-c_centre.
'203000'.
perform bdc_field using 'ANLZ-WERKS' "TOPICK Plant
t_datatabfinal-plant.
'2001'.
perform bdc_field using 'ANLZ-STORT' "TOPICK Asset location
t_datatabfinal-asset_location.
'001'.
perform bdc_field using 'ANLZ-FISTL' "TOPICK Funds center
t_datatabfinal-c_centre.
'203000'.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=TAB08'.
perform bdc_field using 'BDC_CURSOR'
'ANLA-LEART'.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'ANLB-NDPER(01)'.
perform bdc_field using 'ANLB-NDJAR(01)'
remaining_life_yrs.
' 13'.
perform bdc_field using 'ANLB-NDPER(01)'
remaining_life_periods.
' 5'.
perform bdc_dynpro using 'SAPLALTD' '1100'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RALT_DYNP_STRUC-ANBTR01(01)'
t_datatabfinal-amount1.
' 450000'.
perform bdc_field using 'RALT_DYNP_STRUC-ANBTR01(06)'
t_datatabfinal-amount2.
' 25000'.
perform bdc_dynpro using 'SAPLALTD' '1100'.
perform bdc_field using 'BDC_CURSOR'
'ANLA-ANLN1'.
perform bdc_field using 'BDC_OKCODE'
'=BUCH'.
perform bdc_transaction using 'AS91'.
*
perform bdc_dynpro using 'SAPLAIST' '0100'.
perform bdc_field using 'BDC_CURSOR'
'ANLA-ANLN1'.
perform bdc_field using 'BDC_OKCODE'
'=D190'.
perform bdc_field using 'ANLA-ANLN1'
'40006'.
perform bdc_field using 'ANLA-ANLN2'
'0'.
perform bdc_field using 'ANLA-BUKRS'
t_datatabfinal-c_code.
'2000'.
perform bdc_dynpro using 'SAPLAIST' '1000'.
perform bdc_field using 'BDC_OKCODE'
'=BUCH'.
perform bdc_field using 'BDC_CURSOR'
'ANLB-AFABG(01)'.
perform bdc_field using 'ANLB-NDJAR(01)'
remaining_life_yrs.
' 1'.
perform bdc_field using 'ANLB-NDPER(01)'
remaining_life_periods.
' 8'.
perform bdc_field using 'ANLB-AFABG(01)'
'01.07.2007'.
perform bdc_transaction using 'AS92'.
endloop.
perform close_group.
Thank you!
‎2007 Jul 27 10:03 PM
hi,
write ur code after perform bdc_transaction using 'AS91'.
and the code does not change it should be same but for a different transaction..
thanks
Mahesh
‎2007 Jul 28 2:08 AM
it is not possiblt to have 2 transactions in the same BDC .
In t_code shdb : At a time only one transcation possiable.