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
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 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.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |