Hi experts,I have develop a BDC using call transaction for tcode f-02.While uploading data additional screen appear as coding block .I have made recording using no batch input.
report ZFI_BDC_F02
no standard page heading line-size 255.
*
*start-of-selection.
*include bdcrecx1.
*
*perform open_group.
TYPES : BEGIN OF TY_FINAL,
BLDAT(10) TYPE C,
BLART(2) TYPE C,
BUKRS(4) TYPE C,
BUDAT(10) TYPE C,
WAERS(3) TYPE C,
NEWBS(2) TYPE C,
NEWKO(17) TYPE C,
NEWUM(1) TYPE C,
WRBTR(16) TYPE C,
DMBTR(16) TYPE C,
BUPLA(4) TYPE C,
SECCO(4) TYPE C,
GSBER(4) TYPE C,
ZFBDT(10) TYPE C,
* FIPOS(20) TYPE C,
ZUONR(10) TYPE C,
SGTXT(35) TYPE C,
NEWBS1(3) TYPE C,
NEWKO1(17) TYPE C,
WRBTR1(16) TYPE C,
DMBTR1(16) TYPE C,
BUPLA1(4) TYPE C,
ZUONR1(10) TYPE C,
SGTXT1(35) TYPE C,
NEWBS2(3) TYPE C,
NEWKO2(17) TYPE C,
GSBER1(4) TYPE C,
KOSTL(10) TYPE C,
BUPLA2(4) TYPE C,
VALUT(10) TYPE C,
ZUONR2(10) TYPE C,
SGTXT2(35) TYPE C,
GSBER2(4) TYPE C,
BUPLA3(4) TYPE C,
VALUT1(10) TYPE C,
ZUONR3(10) TYPE C,
SGTXT3(35) TYPE C,
GSBER3(4) TYPE C,
WRBTR_S(16) TYPE C,
DMBTR_S(16) TYPE C,
END OF TY_FINAL.
DATA : WA_FINAL TYPE TY_FINAL,
IT_FINAL TYPE TABLE OF TY_FINAL.
DATA: IT_EXCEL TYPE STANDARD TABLE OF ALSMEX_TABLINE,
W_EXCEL TYPE ALSMEX_TABLINE.
DATA : INDEX TYPE I,
MSG TYPE STRING,
TEMP TYPE STRING,
CNT(2) TYPE N.
FIELD-SYMBOLS: <FS>.
*----------------------------------------------------------------------*
* data definition FOR BDC DATA
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
PARAMETERS:P_PATH LIKE RLGRAP-FILENAME OBLIGATORY,
P_SROW TYPE I OBLIGATORY,
P_EROW TYPE I OBLIGATORY.
SELECTION-SCREEN SKIP 1.
PARAMETERS P_MODE LIKE CTU_PARAMS-DISMODE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BLK.
INITIALIZATION.
P_SROW = 1.
P_EROW = 1.
P_MODE = 'A'.
* At Selection-Screen event
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
FILE_NAME = P_PATH.
START-OF-SELECTION.
PERFORM GET_EXCEL_DATA.
PERFORM CALL_BAPI.
*&---------------------------------------------------------------------*
*& Form GET_EXCEL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_EXCEL_DATA .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_PATH
I_BEGIN_COL = 1
I_BEGIN_ROW = P_SROW
I_END_COL = 33
I_END_ROW = P_EROW
TABLES
INTERN = IT_EXCEL.
IF SY-SUBRC NE 0.
MESSAGE 'Error occur in reading the Excel file' TYPE 'I'.
STOP.
ENDIF.
LOOP AT IT_EXCEL INTO W_EXCEL.
INDEX = W_EXCEL-COL.
ASSIGN COMPONENT INDEX OF STRUCTURE WA_FINAL TO <FS>.
<FS> = W_EXCEL-VALUE.
AT END OF ROW.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDAT.
ENDLOOP.
* it_item[] = it_final[].
ENDFORM. " GET_EXCEL_DATA
*start-of-selection.
*&---------------------------------------------------------------------*
*& Form CALL_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_BAPI .
INDEX = 0.
LOOP AT IT_FINAL INTO WA_FINAL.
INDEX = INDEX + 1.
REFRESH :BDCDATA,MESSTAB.
*include bdcrecx1.
*
*start-of-selection.
*
*perform open_group.
IF WA_FINAL-NEWBS EQ '29' OR WA_FINAL-NEWBS EQ '29I' OR WA_FINAL-NEWBS EQ '29B'.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWUM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BKPF-BLDAT'
'11.02.2016'.
perform bdc_field using 'BKPF-BLART'
'KZ'.
perform bdc_field using 'BKPF-BUKRS'
'EIL'.
perform bdc_field using 'BKPF-BUDAT'
'11.02.2016'.
perform bdc_field using 'BKPF-MONAT'
'11'.
perform bdc_field using 'BKPF-WAERS'
'USD'.
perform bdc_field using 'RF05A-NEWBS'
'29'.
perform bdc_field using 'RF05A-NEWKO'
'20696'.
perform bdc_field using 'RF05A-NEWUM'
'A'.
perform bdc_dynpro using 'SAPMF05A' '0304'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
'5000'.
perform bdc_field using 'BSEG-DMBTR'
'305000'.
perform bdc_field using 'BSEG-BUPLA'
'EIL'.
perform bdc_field using 'BSEG-SECCO'
'EIL'.
perform bdc_field using 'BSEG-GSBER'
'enpl'.
perform bdc_field using 'BSEG-ZFBDT'
'11.02.2016'.
perform bdc_field using 'BSEG-FIPOS'
'ESTER-COMMITMENT'.
perform bdc_field using 'BSEG-ZUONR'
'6059'.
perform bdc_field using 'BSEG-SGTXT'
'Testing'.
perform bdc_field using 'RF05A-NEWBS'
'40'.
perform bdc_field using 'RF05A-NEWKO'
'404012'.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
'10'.
perform bdc_field using 'BSEG-DMBTR'
'506'.
perform bdc_field using 'BSEG-BUPLA'
'EIL'.
perform bdc_field using 'BSEG-ZUONR'
'6059'.
perform bdc_field using 'BSEG-SGTXT'
'Testing'.
perform bdc_field using 'RF05A-NEWBS'
'50'.
perform bdc_field using 'RF05A-NEWKO'
'103601'.
perform bdc_field using 'COBL-GSBER'
'enpl'.
perform bdc_field using 'COBL-KOSTL'
'DE0909'.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-SGTXT'.
perform bdc_field using 'BDC_OKCODE'
'AB'.
perform bdc_field using 'BSEG-WRBTR'
'5,010.00'.
perform bdc_field using 'BSEG-DMBTR'
'305,506.00'.
perform bdc_field using 'BSEG-VALUT'
'11.02.2016'.
perform bdc_field using 'BSEG-ZUONR'
'6059'.
perform bdc_field using 'BSEG-SGTXT'
'Testing'.
perform bdc_field using 'COBL-GSBER'
'corp'.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-AZEI1(06)'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
*perform bdc_transaction using 'F-02'.
*
*perform close_group.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-NEWUM'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT'
WA_FINAL-BLDAT.
PERFORM BDC_FIELD USING 'BKPF-BLART'
WA_FINAL-BLART.
PERFORM BDC_FIELD USING 'BKPF-BUKRS'
WA_FINAL-BUKRS.
PERFORM BDC_FIELD USING 'BKPF-BUDAT'
WA_FINAL-BUDAT.
PERFORM BDC_FIELD USING 'BKPF-MONAT'
''.
PERFORM BDC_FIELD USING 'BKPF-WAERS'
WA_FINAL-WAERS.
PERFORM BDC_FIELD USING 'FS006-DOCID'
'*'.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
WA_FINAL-NEWBS.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_FINAL-NEWKO.
PERFORM BDC_FIELD USING 'RF05A-NEWUM'
WA_FINAL-NEWUM.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0304'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
WA_FINAL-WRBTR.
PERFORM BDC_FIELD USING 'BSEG-DMBTR'
WA_FINAL-DMBTR.
PERFORM BDC_FIELD USING 'BSEG-BUPLA'
WA_FINAL-BUPLA.
PERFORM BDC_FIELD USING 'BSEG-SECCO'
WA_FINAL-SECCO.
PERFORM BDC_FIELD USING 'BSEG-GSBER'
WA_FINAL-GSBER.
PERFORM BDC_FIELD USING 'BSEG-ZFBDT'
WA_FINAL-ZFBDT.
PERFORM BDC_FIELD USING 'BSEG-FIPOS'
'ESTER-COMMITMENT'.
PERFORM BDC_FIELD USING 'BSEG-ZUONR'
WA_FINAL-ZUONR.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
WA_FINAL-SGTXT.
PERFORM BDC_FIELD USING 'RF05A-NEWBS'
WA_FINAL-NEWBS1.
PERFORM BDC_FIELD USING 'RF05A-NEWKO'
WA_FINAL-NEWKO1.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0300'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BS'.
PERFORM BDC_FIELD USING 'BSEG-WRBTR'
WA_FINAL-WRBTR1.
PERFORM BDC_FIELD USING 'BSEG-DMBTR'
WA_FINAL-DMBTR1.
PERFORM BDC_FIELD USING 'BSEG-BUPLA'
''.
PERFORM BDC_FIELD USING 'BSEG-ZUONR'
WA_FINAL-ZUONR1.
PERFORM BDC_FIELD USING 'BSEG-SGTXT'
WA_FINAL-SGTXT1.
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-GSBER'
WA_FINAL-GSBER.
PERFORM BDC_FIELD USING 'COBL-FIPEX'
'ESTER-COMMITMENT'.
PERFORM BDC_FIELD USING 'COBL-FIPOS'
'ESTER-COMMITMENT'.
PERFORM BDC_DYNPRO USING 'SAPMF05A' '0700'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF05A-NEWBS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
ENDIF.
CALL TRANSACTION 'F-02' USING BDCDATA
MODE P_MODE
UPDATE 'A'
MESSAGES INTO MESSTAB.
LOOP AT MESSTAB.
IF MESSTAB-MSGTYP = 'E' OR MESSTAB-MSGTYP = 'S'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = MESSTAB-MSGID
LANG = '-D'
NO = MESSTAB-MSGNR
V1 = MESSTAB-MSGV1
V2 = MESSTAB-MSGV2
V3 = MESSTAB-MSGV3
V4 = MESSTAB-MSGV4
IMPORTING
MSG = MSG
EXCEPTIONS
NOT_FOUND = 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.
WRITE:/9 MSG.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " CALL_BAPI
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD