Skip to Content
0
Jul 27, 2007 at 01:05 PM

unable to create batch input

83 Views

could the error generated be because of the file?? the code is as follows:

a<u>sset upload</u>

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 = '1' "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 'BDC_CURSOR'

  • 'ANLA-AKTIV'.

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 'BDC_CURSOR'

  • 'ANLZ-KOSTL'.

perform bdc_field using 'ANLZ-KOSTL'

t_datatabfinal-c_centre.

  • '203000'.

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-GSBER' "TOPICK Business area

  • t_datatabfinal-bus_area.

  • 'B008'.

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 'SAPLALTD' '1100'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'RALT_DYNP_STRUC-ANBTR01(06)'.

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

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