Skip to Content
0
Former Member
Apr 29, 2014 at 11:49 AM

bdc f-65

162 Views

Hi experts,

my excel file consist of single header & 2 item records even after uploading 2 items it's moving to 3rd item screen , In debugging process...the loop ends after completion of 2nd item and cursor moves to save and call transaction method, But in BDC the 3rd item screen is displaying though 3rd record is not there (it's calling n+1 item screen) through manually i need to come back and save from it.

FYI .. i am uploading my excel file and code....

TYPES: BEGIN OF TY_HEADER,
BLDAT TYPE BKPF-BLDAT,
BLART TYPE BKPF-BLART,
BUKRS TYPE BKPF-BUKRS,
BUDAT TYPE BKPF-BUDAT,
WAERS TYPE BKPF-WAERS,
NEWBS TYPE RF05V-NEWBS,
NEWKO TYPE RF05V-NEWKO,
WRBTR(50) TYPE C,
KOSTL TYPE COBL-KOSTL,
PRCTR TYPE COBL-PRCTR,
fipex type cobl-fipex,
SGTXT TYPE BSEG-SGTXT,
index1 type c,
END OF TY_HEADER.

TYPES: BEGIN OF TY_ITEM,
NEWBS TYPE RF05V-NEWBS,
NEWKO TYPE RF05V-NEWKO,
WRBTR(50) TYPE C,
KOSTL TYPE COBL-KOSTL,
PRCTR TYPE COBL-PRCTR,
fipex type cobl-fipex,
SGTXT TYPE BSEG-SGTXT,
index1 type c,
END OF TY_ITEM.

DATA: WA_HEADER TYPE TY_HEADER,
IT_HEADER TYPE TABLE OF TY_HEADER.

DATA: WA_ITEM TYPE TY_ITEM,
IT_ITEM TYPE table of TY_ITEM.

Types: BEGIN OF st_FIN,
BLDAT TYPE BKPF-BLDAT,
BLART TYPE BKPF-BLART,
BUKRS TYPE BKPF-BUKRS,
BUDAT TYPE BKPF-BUDAT,
waers type bkpf-waers,
NEWBS TYPE RF05V-NEWBS,
NEWKO TYPE RF05V-Newko,
WRBTR(15) TYPE C,
KOSTL TYPE COBL-KOSTL,
PRCTR TYPE COBL-PRCTR,
sgtxt type bseg-sgtxt,
fipex type cobl-fipex,
index(2) type c,
END OF st_FIN.

data: it_fin type TABLE OF st_fin,
wa_fin TYPE st_fin.

DATA: WA_BDCDATA TYPE BDCDATA,
Wa_STRING TYPE STRING,
IT_BDCDATA TYPE TABLE OF BDCDATA.



data: it_xldata like ALSMEX_TABLINE occurs 0 with HEADER LINE.
data : lv_date(120) type c.

data: ln_date(10) type c.
data: ln_data1(10) type c.

*data: index1(2) type c value 0.
DATA : V_WRBTR(50) TYPE C,
v_prctr(50) type c.

data: it_xldata1 like alsmex_tabline occurs 0 with HEADER LINE.

data: it_xldata2 like alsmex_tabline occurs 0 with header line.


SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-A01.

PARAMETERS: P_FILE TYPE RLGRAP-FILENAME.

SELECTION-SCREEN: END OF BLOCK B1.
*-----------------------------------------------------------*
* AT SELECTION-SCREEN
*-----------------------------------------------------------
*OPENING WINDOW FOR PATH SELECTION.

AT SELECTION-SCREEN ON value-request for P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.

start-OF-SELECTION.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' """"""""final
EXPORTING
FILENAME = p_file
I_BEGIN_COL = '1'
I_BEGIN_ROW = '3'
I_END_COL = '13'
I_END_ROW = '35'
TABLES
INTERN = it_xldata
* EXCEPTIONS
* INCONSISTENT_PARAMETERS = 1
* UPLOAD_OLE = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' """"""""item
EXPORTING
FILENAME = p_file
I_BEGIN_COL = '6'
I_BEGIN_ROW = '4'
I_END_COL = '13'
I_END_ROW = '35'
TABLES
INTERN = it_xldata1
* EXCEPTIONS
* INCONSISTENT_PARAMETERS = 1
* UPLOAD_OLE = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' """"""""header
EXPORTING
FILENAME = p_file
I_BEGIN_COL = '1'
I_BEGIN_ROW = '3'
I_END_COL = '13'
I_END_ROW = '3'
TABLES
INTERN = it_xldata2
* EXCEPTIONS
* INCONSISTENT_PARAMETERS = 1
* UPLOAD_OLE = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.


LOOP AT IT_xldata1 . """"""""item
CASE IT_XLDATA1-COL.
* WHEN 1 .
* WA_ITEM-WAERS = IT_XLDATA-VALUE.
WHEN 1.
WA_ITEM-NEWBS = IT_XLDATA1-VALUE.
WHEN 2.
WA_ITEM-NEWKO = IT_XLDATA1-VALUE.
WHEN 3.
WA_ITEM-WRBTR = IT_XLDATA1-VALUE.
* WHEN 4.
* WA_ITEM-NEWBS = IT_XLDATA-VALUE.
* WHEN 5.
* WA_ITEM-WRBTR = IT_XLDATA-VALUE.
WHEN 4.
WA_ITEM-KOSTL = IT_XLDATA1-VALUE.
WHEN 5.
WA_ITEM-PRCTR = IT_XLDATA1-VALUE.
when 6.
wa_item-fipex = it_xldata1-value.
WHEN 7.
WA_ITEM-SGTXT = IT_XLDATA1-VALUE.
when 8.
WA_ITEM-INDEX1 = IT_XLDATA1-VALUE.
* when 8.
* WA_ITEM-FLAG = IT_XLDATA1-VALUE.

APPEND WA_ITEM TO IT_ITEM.
CLEAR WA_ITEM.

ENDCASE.

ENDLOOP.


loop at it_xldata2. """"""""header
case it_xldata2-col.
when 1.
* wa_fin-BLDAT = it_xldata-value.
lv_date = it_xldata2-value.
CONCATENATE lv_date+6(4) lv_date+3(2) lv_date+0(2) into wa_header-bldat.
when 2.
wa_header-BLART = it_xldata2-value.
when 3.
wa_header-BUKRS = it_xldata2-value.
when 4.
* wa_fin-budat = it_xldata-value.
clear lv_date.
lv_date = it_xldata2-value.
CONCATENATE lv_date+6(4) lv_date+3(2) lv_date+0(2) into wa_header-budat.
when 5.
wa_header-waers = it_xldata2-value.

WHEN 6.
WA_header-NEWBS = IT_XLDATA2-VALUE.
WHEN 7.
WA_header-NEWKO = IT_XLDATA2-VALUE.
when 8.
wa_header-wrbtr = it_xldata2-value.
when 9.
wa_header-kostl = it_xldata2-value.
when 10.
wa_header-prctr = it_xldata2-value.
when 11.
wa_header-fipex = it_xldata2-value.
when 12.
wa_header-sgtxt = it_xldata2-value.
when 13.
wa_header-index1 = it_xldata2-value.

append wa_header to it_header.
clear wa_header.
endcase.
endloop.



loop at it_xldata. """"""""final
case it_xldata-col.
when 1.
* wa_fin-BLDAT = it_xldata-value.
lv_date = it_xldata-value.
CONCATENATE lv_date+6(4) lv_date+3(2) lv_date+0(2) into wa_fin-bldat.
when 2.
wa_fin-BLART = it_xldata-value.
when 3.
wa_fin-BUKRS = it_xldata-value.
when 4.
* wa_fin-budat = it_xldata-value.
clear lv_date.
lv_date = it_xldata-value.
CONCATENATE lv_date+6(4) lv_date+3(2) lv_date+0(2) into wa_fin-budat .
when 5.
wa_fin-waers = it_xldata-value.
when 6.
wa_fin-newbs = it_xldata-value.
when 7.
wa_fin-newko = it_xldata-value.
when 8.
wa_fin-wrbtr = it_xldata-value.
when 9.
wa_fin-kostl = it_xldata-value.
when 10.
wa_fin-prctr = it_xldata-value.
when 11.
wa_fin-sgtxt = it_xldata-value.
when 12.
wa_fin-fipex = it_xldata-value.
when 13.
wa_fin-index = it_xldata-value.
APPEND wa_fin to it_fin.
clear wa_fin.
endcase.
endloop.


* LOOP AT IT_FIN INTO WA_FIN where index ne ''.
loop at it_header into wa_header .
*index1 = index1 + 1.
perform bdc_dynpro using 'SAPLF040' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF05V-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
clear lv_date.
lv_date = wa_header-bldat.
CONCATENATE lv_date+6(2)'.' lv_date+4(2)'.' lv_date+0(4) into ln_date.

perform bdc_field using 'BKPF-BLDAT'
ln_date.
perform bdc_field using 'BKPF-BLART'
WA_header-BLART.
perform bdc_field using 'BKPF-BUKRS'
WA_header-BUKRS.
clear lv_date.
lv_date = wa_header-budat.
CONCATENATE lv_date+6(2)'.' lv_date+4(2)'.' lv_date+0(4) into ln_date.

perform bdc_field using 'BKPF-BUDAT'
ln_date.
perform bdc_field using 'BKPF-MONAT'
'12'.
perform bdc_field using 'BKPF-WAERS'
WA_header-WAERS.
perform bdc_field using 'VBKPF-XBWAE'
'X'.
perform bdc_field using 'FS006-DOCID'
'*'.
perform bdc_field using 'RF05V-NEWBS'
* WA_FIN-NEWBS.
wa_header-newbs.
perform bdc_field using 'RF05V-NEWKO'
* WA_FIN-NEWKO.
wa_header-NEWKO.

perform bdc_dynpro using 'SAPLF040' '0300'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-SGTXT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
* WA_FIN-WRBTR.
WA_header-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
* WA_FIN-SGTXT.
WA_header-SGTXT.
* clear wa_header-newko.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-gsber'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-KOSTL'
* WA_FIN-KOSTL.
WA_header-KOSTL.


perform bdc_field using 'COBL-PRCTR'
** WA_FIN-PRCTR.
WA_header-PRCTR.
perform bdc_field using 'cobl-fipex'
wa_header-fipex.

perform bdc_dynpro using 'SAPLF040' '0300'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-SGTXT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
* WA_FIN-WRBTR.
WA_header-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
* WA_FIN-SGTXT.
WA_header-SGTXT.
* endloop.

****************************** LOOP AT IT_ITEM INTO WA_ITEM.
LOOP AT IT_ITEM INTO WA_ITEM where INDEX1 is not initial.

perform bdc_field using 'DKACB-FMORE'
'X'.
perform bdc_field using 'RF05V-NEWBS'
* WA_FIN-NEWBS.
WA_ITEM-NEWBS. "posting key
perform bdc_field using 'RF05V-NEWKO'
* WA_FIN-NEWKO.
WA_ITEM-NEWKO. "account
perform bdc_field using 'DKACB-FMORE'
'X'.

perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-gsber'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-KOSTL'
* WA_FIN-KOSTL.
WA_ITEM-KOSTL. "cost center
perform bdc_field using 'COBL-PRCTR'
** WA_FIN-PRCTR.
WA_ITEM-PRCTR. "profit center
perform bdc_field using 'cobl-fipex'
wa_item-fipex.

perform bdc_dynpro using 'SAPLF040' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05V-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
* WA_FIN-WRBTR.
WA_ITEM-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
* WA_FIN-SGTXT.
WA_ITEM-SGTXT. " text

perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-gsber'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-KOSTL'
* WA_FIN-KOSTL.
WA_ITEM-KOSTL.

perform bdc_field using 'COBL-PRCTR'
** WA_FIN-PRCTR.
WA_ITEM-PRCTR.

perform bdc_field using 'cobl-fipex'
wa_header-fipex.

perform bdc_dynpro using 'SAPLF040' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05V-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
* WA_FIN-WRBTR.
WA_ITEM-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
* WA_FIN-SGTXT.
WA_ITEM-SGTXT. "text
perform bdc_field using 'RF05V-NEWBS'
* WA_FIN-NEWBS.
WA_ITEM-NEWBS. "posting key
perform bdc_field using 'RF05V-NEWKO'
* WA_FIN-NEWKO.
WA_ITEM-NEWKO. "account
perform bdc_field using 'DKACB-FMORE'
'X'.
* perform bdc_field using 'BDC_OKCODE'
* '=RW'.
* perform bdc_field using 'BDC_OKCODE'
* '=ENTE'.


if wa_item-index1 = 'X'.

clear wa_item-index1.
modify it_item from wa_item.
** EXIT.
endif.

endloop.
perform bdc_dynpro using 'SAPLF040' '0700'.
perform bdc_field using 'BDC_CURSOR'
'BKPF-XBLNR'.

perform bdc_field using 'BDC_OKCODE'
'=BP'.
endloop.
PERFORM CALL_TRANSACTION USING 'F-65'(001).



FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = PROGRAM.
WA_BDCDATA-DYNPRO = DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

FORM BDC_FIELD USING FNAM FVAL.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = FNAM.
WA_BDCDATA-FVAL = FVAL.
APPEND wa_bdcdata TO IT_BDCDATA.

ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form CALL_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0761 text
*----------------------------------------------------------------------*
FORM CALL_TRANSACTION USING VALUE(P_0761).

CALL TRANSACTION P_0761 USING IT_BDCDATA
MODE 'A'
UPDATE 'S'
MESSAGES INTO lt_msgcoll.

ENDFORM. " CALL_TRANSACTION

Attachments

Capture1.PNG (16.5 kB)