Feb 8, 2011

BDC for MB1B

Hi Just copy the required Program to own Z Program
TYPE-POOLS: truxs.
DATA: zmode TYPE  c.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS : mode_a      RADIOBUTTON    GROUP  r1,
             mode_n      RADIOBUTTON    GROUP  r1.

PARAMETERS: p_ifile TYPE rlgrap-filename.
PARAMETERS: p_ofile TYPE string.

SELECTION-SCREEN END OF BLOCK b1.

INCLUDE zbdcrec.

DATA: BEGIN OF it_src_upload OCCURS 0,
        rectyp(1)  TYPE c,      " Header / Item Indicator
        bldat(10)  TYPE c,      " Document Date
        budat(10)   TYPE c,      " Posting Date
        bktxt(25)  TYPE c,      " Doc. Header Text
        bwartwa(3) TYPE c,      " Movement Type
        werks(4)   TYPE c,      " Plant
        lgort(4)   TYPE c,      " Storage Location
        sobkz(1)   TYPE c,      " Special Stock
        matnr(18)  TYPE c,      " Material
        erfmg(13)  TYPE c,      " Quantity
        ERFME(3)   TYPE c,      "Unit of Entry
        charg(10)  TYPE c,      " Batch
        exbwr(13)  TYPE c,      " Amount
        lifnr(10)  TYPE c,      " Vendor
        kunnr(10)  TYPE c,      " Customer
        UMMAT(18)  TYPE C,      "MATERIAL (RECEIVINF/ISSUING)
        UMLGO(4)   TYPE C,      "ISSUING/RECEIVING STOR LOC
      END OF it_src_upload.

DATA: BEGIN OF it_header OCCURS 0,
        rectyp(1)  TYPE c,      " Header / Item Indicator
        hcount(5)  TYPE c,      " Counter
        bldat(10)   TYPE c,      " Document Date
        budat(10)   TYPE c,      " Posting Date
        bktxt(25)  TYPE c,      " Doc. Header Text
        bwartwa(3) TYPE c,      " Movement Type
        werks(4)   TYPE c,      " Plant
        lgort(4)   TYPE c,      " Storage Location
        sobkz(1)   TYPE c,      " Special Stock
      END OF it_header.

DATA: BEGIN OF it_item OCCURS 0,
        rectyp(1)  TYPE c,      " Header / Item Indicator
        hcount(5)  TYPE c,      " Counter
        matnr(18)  TYPE c,      " Material
        erfmg(13)  TYPE c,      " Quantity
        ERFME(3)   TYPE c,      " Unit of Entry
        charg(10)  TYPE c,      " Batch
        exbwr(13)  TYPE c,      " Amount
        lifnr(10)  TYPE c,      " Vendor
        kunnr(10)  TYPE c,      " Customer
        UMMAT(18)  TYPE C,      "MATERIAL (RECEIVINF/ISSUING)
        UMLGO(4)   TYPE C,      "ISSUING/RECEIVING STOR LOC
        UMCHA(10)  TYPE C,      " issueing receiving valuation
        END OF it_item.

DATA: it_item_nex LIKE it_item.

DATA: BEGIN OF it_err OCCURS 0,
        rectyp(1)  TYPE c,      " Header / Item Indicator
        bldat(10)   TYPE c,      " Document Date
        budat(10)   TYPE c,      " Posting Date
        bktxt(25)  TYPE c,      " Doc. Header Text
        bwartwa(3) TYPE c,      " Movement Type
        werks(4)   TYPE c,      " Plant
        lgort(4)   TYPE c,      " Storage Location
        matnr(18)  TYPE c,      " Material
        erfmg(13)  TYPE c,      " Quantity
        ERFME(3)   TYPE c,      " Unit of Entry
        charg(10)  TYPE c,      " Batch
        exbwr(13)  TYPE c,      " Amount
        error(255) TYPE c,     " Error Message Text
      END OF it_err.

DATA: it_raw TYPE truxs_t_text_data.
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.


DATA: v_total    TYPE i.
DATA: v_txt  TYPE char80.
DATA: v_correct  TYPE i.
DATA: v_error    TYPE i.
DATA: v_cnt TYPE i.

CONSTANTS: c_headertype(1) TYPE c VALUE 'H',
           c_itemtype(1)   TYPE c VALUE 'I'.

*---------------------------------------------------------------------*
*-- At Selection Screen
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ifile.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mode     = 'O'
    IMPORTING
      filename = p_ifile
    EXCEPTIONS
      OTHERS   = 1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ofile.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mode     = 'O'
    IMPORTING
      filename = p_ofile
    EXCEPTIONS
      OTHERS   = 1.


START-OF-SELECTION.
  IF p_ofile IS INITIAL.
    CONCATENATE p_ifile '_err' sy-datum sy-uzeit '.xls' INTO p_ofile.
  ENDIF.
  PERFORM data_upload.

  IF mode_a EQ 'X'.
    zmode = 'A'.
  ELSEIF mode_n EQ 'X'.
    zmode = 'N'.
  ENDIF.

  PERFORM filter_data.
  PERFORM populate_data.
  PERFORM write_status.

*&---------------------------------------------------------------------*
*&      Form  DATA_UPLOAD
*&---------------------------------------------------------------------*
FORM data_upload.

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_field_seperator    = 'X'
      i_line_header        = 'X'
      i_tab_raw_data       = it_raw
      i_filename           = p_ifile
    TABLES
      i_tab_converted_data = it_src_upload
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.

  IF sy-subrc <> 0.
    MESSAGE 'Error while uploading file' TYPE 'E'.
  ENDIF.

ENDFORM.                               " DATA_UPLOAD

*&amp;---------------------------------------------------------------------*
*&amp;      Form  FILTER_DATA
*&amp;---------------------------------------------------------------------*
FORM filter_data.

* Filtering the Header and Item data
  DATA: c_hcount TYPE i.
*BREAK-POINT.
  LOOP AT it_src_upload.
    TRANSLATE it_src_upload TO UPPER CASE.
    MODIFY it_src_upload.
    IF it_src_upload-rectyp = c_headertype.
      c_hcount = c_hcount + 1.
      it_header-hcount = c_hcount.
      MOVE-CORRESPONDING it_src_upload TO it_header.
      APPEND it_header.
    ELSEIF it_src_upload-rectyp = c_itemtype .
      it_item-hcount = c_hcount.
      MOVE-CORRESPONDING it_src_upload TO it_item.
      APPEND it_item.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "filter_data

*&amp;---------------------------------------------------------------------*
*&amp;      Form  POPULATE_DATA
*&amp;---------------------------------------------------------------------*
FORM populate_data.
*BREAK-POINT.
  LOOP AT it_header.
    PERFORM bdc_dynpro      USING 'SAPMM07M'
                                  '0400'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=NPE'.

* Document Date
    PERFORM bdc_field       USING 'MKPF-BLDAT'
                                  it_header-bldat.
* Posting Date
    PERFORM bdc_field       USING 'MKPF-BUDAT'
                                  it_header-budat.
* Document Header Text
    PERFORM bdc_field       USING 'MKPF-BKTXT'
                                  it_header-bktxt.
* Movement Type
    PERFORM bdc_field       USING 'RM07M-BWARTWA'
                                  it_header-bwartwa.
* Plant
    PERFORM bdc_field       USING 'RM07M-WERKS'
                                  it_header-werks.
* Storage Location
    PERFORM bdc_field       USING 'RM07M-LGORT'
                                  it_header-lgort.
* Special Stock
    PERFORM bdc_field       USING 'RM07M-SOBKZ'
                                  it_header-sobkz.

    PERFORM bdc_field       USING 'XFULL'
                                  'X'.

    PERFORM bdc_field       USING 'RM07M-WVERS2'
                                   'X'.

    LOOP AT it_item WHERE hcount = it_header-hcount.

      v_cnt = sy-tabix + 1.

      PERFORM bdc_dynpro      USING 'SAPMM07M'
                                    '0410'.

* Set the OK Code according to the number of records
      CLEAR it_item_nex.
      READ TABLE it_item INDEX v_cnt INTO it_item_nex.
      IF sy-subrc = 0.
        IF it_item_nex-hcount = it_header-hcount.
* If not the last record then OK Code has to be to go to New Item
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=NPE'.
        ELSE.
* If last record of the document then OK Code has to be to SAVE
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=BU'.
        ENDIF.
      ELSE.
* If last record then OK Code has to be to SAVE
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=BU'.
      ENDIF.

* Material
      PERFORM bdc_field       USING 'MSEG-MATNR'
                                    it_item-matnr.
* Quantity
      PERFORM bdc_field       USING 'MSEG-ERFMG'
                                    it_item-erfmg.
* Unit Of Entry
      PERFORM bdc_field       USING 'MSEG-ERFME'
                                    it_item-ERFME.
* Batch
      PERFORM bdc_field       USING 'MSEG-CHARG'
                                    it_item-charg.

*      IF it_header-sobkz = ' '.
* Amount
        PERFORM bdc_field       USING 'MSEG-EXBWR'
                                      it_item-exbwr.
*      ENDIF.

        PERFORM bdc_field       USING 'MSEG-UMMAT'
                                      it_item-UMMAT.

        PERFORM bdc_field       USING 'MSEG-UMWRK'
                                      it_header-WERKS.

        PERFORM bdc_field       USING 'MSEG-UMLGO'
                                      it_item-UMLGO.

        PERFORM bdc_field       USING 'MSEG-UMCHA'
                                      it_item-UMCHA.

      CASE it_header-sobkz.
        WHEN 'O'.
* Vendor
          PERFORM bdc_field       USING 'MSEG-LIFNR'
                                        it_item-lifnr.
        WHEN 'W'.
* Customer
          PERFORM bdc_field       USING 'MSEGK-KUNNR'
                                        it_item-kunnr.
      ENDCASE.


      PERFORM bdc_dynpro      USING 'SAPLKACB'
                                    '0002'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTE'.
    ENDLOOP.

    CALL TRANSACTION 'MB1B' USING bdcdata MODE zmode UPDATE 'S'.

    IF sy-subrc <> 0.
      CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
        EXPORTING
          langu = sy-langu
          msgid = sy-msgid
          msgno = sy-msgno
          msgv1 = sy-msgv1
          msgv2 = sy-msgv2
          msgv3 = sy-msgv3
          msgv4 = sy-msgv4
        IMPORTING
          text  = v_txt.

      MOVE-CORRESPONDING it_header TO it_err.
      v_error = v_error + 1.
      it_err-error = v_txt.
      APPEND it_err.
      CLEAR it_err.
      CLEAR v_txt.

      LOOP AT it_item WHERE hcount = it_item-hcount.
        MOVE-CORRESPONDING it_item TO it_err.
        APPEND it_err.
        CLEAR: it_err.
      ENDLOOP.
    ELSE.
      v_correct = v_correct + 1.
    ENDIF.

    CLEAR: bdcdata.
    REFRESH: bdcdata.

  ENDLOOP.

ENDFORM.                    "


*&---------------------------------------------------------------------*
*&      Form  WRITE_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM write_status .

  v_total = v_error + v_correct.
  SKIP 2.
  WRITE:/ '-----------Status Log-----------' COLOR 6.
  SKIP 2.
  WRITE:/ 'Total Number of Records   :', v_total COLOR 1.
  WRITE:/ 'Total Updated Records     :', v_correct COLOR 3.
  WRITE:/ 'Total Not Updated Records :', v_error COLOR 6.

  IF NOT it_err[] IS INITIAL.
    WRITE:/ 'Error Log file', p_ofile, 'saved.'.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = p_ofile
        filetype              = 'ASC'
        append                = 'X'
        write_field_separator = 'X'
      TABLES
        data_tab              = it_err.

    IF sy-subrc <> 0.
      WRITE:/ 'Error creating log file'.
    ENDIF.
  ENDIF.
ENDFORM.                    " WRITE_STATUS



USE EXCEL FILE TO UPLOAD DATA.
HEADER MARKED WITH H
ITEM MARKED WITH I
IN THE VERY FIRST COLUMN OF EXCEL

Read Different Worksheets of Excel


HI this is function Module.

FUNCTION zexcel_lectura_libro .
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     VALUE(FILENAME) LIKE  RLGRAP-FILENAME
*"     VALUE(I_BEGIN_COL) TYPE  I
*"     VALUE(I_BEGIN_ROW) TYPE  I
*"     VALUE(I_END_COL) TYPE  I
*"     VALUE(I_END_ROW) TYPE  I
*"  TABLES
*"      INTERN_SALIDA STRUCTURE  ZALSMEX_TABLINE
*"  EXCEPTIONS
*"      INCONSISTENT_PARAMETERS
*"      UPLOAD_OLE
*"----------------------------------------------------------------------


* Variables Locales
  DATA: l_excel               TYPE ole2_object,
        l_libro               TYPE ole2_object,
        l_hoja                TYPE ole2_object,
        l_cont                TYPE i,
        l_celli               TYPE ole2_object,
        l_cellf               TYPE ole2_object,
        l_cell                TYPE ole2_object,
        lt_tabla              TYPE TABLE OF ty_s_senderline.

  DATA: ld_separator          TYPE  c.

  DATA: ld_rc                 TYPE i.

  DATA: intern                LIKE alsmex_tabline OCCURS 0
                                                  WITH HEADER LINE.

  DATA: lf_pestania(50).



* Se verifica que las filas y columnas sean coherentes
  IF i_begin_row > i_end_row.
    RAISE inconsistent_parameters.
  ENDIF.
  IF i_begin_col > i_end_col.
    RAISE inconsistent_parameters.
  ENDIF.


* Abrimos el Excel
  IF l_excel-header = space OR l_excel-handle = -1.
    CREATE OBJECT l_excel 'Excel.Application'.
  ENDIF.
  CALL METHOD OF l_excel 'Workbooks' = l_libro.
  CALL METHOD OF l_libro 'Open'
    EXPORTING
    #1 = filename.


* Se identifica el separador de campos
  CLASS cl_abap_char_utilities DEFINITION LOAD.
  ld_separator = cl_abap_char_utilities=>horizontal_tab.


* Recorremos las Hojas del Excel
  DO.

*-- Incrementamos el Contador para ir de hoja en hoja
    ADD 1 TO l_cont.

*-- Limpiamos los objetos
    FREE OBJECT: l_cell, l_celli, l_cellf, l_hoja.
    CLEAR lt_tabla[].

*-- Leemos la Hoja
    CALL METHOD OF l_excel 'Worksheets' = l_hoja
      EXPORTING
      #1 = l_cont.

*-- Si no existe la hoja Salimos del Bucle
    IF NOT sy-subrc IS INITIAL.
      EXIT.
    ENDIF.

*   Tomamos el nombre de la pestaсa
    GET PROPERTY OF l_hoja 'NAME' = lf_pestania.
    COMMIT WORK AND WAIT.


*-- Recogemos la Primera Celda
    CALL METHOD OF l_hoja 'Cells' = l_celli
      EXPORTING
      #1 = i_begin_row
      #2 = i_begin_col.
    COMMIT WORK AND WAIT.


*-- Recogemos la Ultima Celda
    CALL METHOD OF l_hoja 'Cells' = l_cellf
      EXPORTING
      #1 = i_end_row
      #2 = i_end_col.
    COMMIT WORK AND WAIT.

*-- Recogemos las celdas comprendidas entre la Primera y la Ultima
*-- y lo copiamos a la memoria intermedia
    CALL METHOD OF l_hoja 'RANGE' = l_cell
      EXPORTING

Call Transaction in ALV LIST/GRID

TYPE-POOLS: slis.
tables: rseg.

DATA: begin of TAB_ARSEG occurs 0.
INCLUDE STRUCTURE RSEG.
DATA: END OF TAB_ARSEG.
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv.
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'.

START-OF-SELECTION.
select * from rseg into table tab_arseg .

END-OF-SELECTION.
perform build_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_buffer_active = space
i_callback_program = sy-repid
I_CALLBACK_USER_COMMAND = c_user_command
IT_FIELDCAT = T_FIELDCAT[]
TABLES
T_OUTTAB = TAB_ARSEG .

**&------------------------------------------------------------------
**& Form USER_COMMAND
**&------------------------------------------------------------------
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM
I_SELFIELD TYPE SLIS_SELFIELD.

DATA: F_SUBRC LIKE SY-SUBRC,
s_arseg like tab_arseg.
READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg.

CASE F_UCOMM.
WHEN '&IC1'.
CASE i_SELFIELD-SEL_TAB_FIELD.
WHEN 'TAB_ARSEG-BELNR'.
CHECK NOT S_ARSEG-BELNR IS INITIAL.
SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR.
SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR.
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.

**&------------------------------------------------------------------
**& Form build_fieldcat
**&------------------------------------------------------------------
FORM build_fieldcat .
DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR FIELDCAT.
FIELDCAT-FIELDNAME = 'BELNR'.
FIELDCAT-TABNAME = 'TAB_ARSEG'.
FIELDCAT-REF_TABNAME = 'RSEG'.
FIELDCAT-REF_FIELDNAME = 'BELNR'.
fieldcat-hotspot = 'X'.
FIELDCAT-COL_POS = 1.
APPEND FIELDCAT TO t_fieldcat.

CLEAR FIELDCAT.
FIELDCAT-FIELDNAME = 'GJAHR'.
FIELDCAT-TABNAME = 'TAB_ARSEG'.
FIELDCAT-REF_TABNAME = 'RSEG'.
FIELDCAT-REF_FIELDNAME = 'GJAHR'.
FIELDCAT-COL_POS = 2.
APPEND FIELDCAT TO t_fieldcat.

ENDFORM. " build_fieldcat

Adding of Adding Of Date, Week, Month & Year To A Date

*Please create 1 Z Program and paste the below Code.

DATA :I_DATE LIKE SY-DATUM,
DATE LIKE SY-DATUM .
*--here if I_IPRKZ = space it is in days
* if I_IPRKZ = 1 it is in weeks
* if I_IPRKZ = 2 it is in months
* if I_IPRKZ = 3 it is in years
*--here i_ time will display the no of weeks or months or yeas
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
I_IDATE = SY-DATUM "Original date
I_TIME = '4'
I_IPRKZ = ' '
IMPORTING
O_IDATE = date ."new date

WRITE:/ DATE .

Download Data Into Excel using OLE Automation


Please create 1 Z Program with any name and paste the code below....


* this report demonstrates how to send some ABAP data to an 
* EXCEL sheet using OLE automation. 
INCLUDE OLE2INCL. 
* handles for OLE objects 
DATA: H_EXCEL TYPE OLE2_OBJECT,        " Excel object 
      H_MAPL TYPE OLE2_OBJECT,         " list of workbooks 
      H_MAP TYPE OLE2_OBJECT,          " workbook 
      H_ZL TYPE OLE2_OBJECT,           " cell 
      H_F TYPE OLE2_OBJECT.            " font 
TABLES: SPFLI. 
DATA  H TYPE I. 
* table of flights 
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE. 








*&---------------------------------------------------------------------* 
*&   Event START-OF-SELECTION 
*&---------------------------------------------------------------------* 
START-OF-SELECTION. 
* read flights 
  SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS. 
* display header 
  ULINE (61). 
  WRITE: /     SY-VLINE NO-GAP, 
          (3)  'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, 
          (4)  'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, 
          (20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, 
          (20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, 
          (8)  'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP. 
  ULINE /(61). 
* display flights 
  LOOP AT IT_SPFLI. 
  WRITE: / SY-VLINE NO-GAP, 
           IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP, 
           IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, 
           IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, 
           IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, 
           IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP. 
  ENDLOOP. 
  ULINE /(61). 
* tell user what is going on 
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
     EXPORTING 
*           PERCENTAGE = 0 
           TEXT       = TEXT-007 
       EXCEPTIONS 
            OTHERS     = 1. 
* start Excel 
  CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'. 
*  PERFORM ERR_HDL. 


  SET PROPERTY OF H_EXCEL  'Visible' = 1. 
*  CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls' 
. 


*  PERFORM ERR_HDL. 
* tell user what is going on 
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
     EXPORTING 
*           PERCENTAGE = 0 
           TEXT       = TEXT-008 
       EXCEPTIONS 
            OTHERS     = 1. 
* get list of workbooks, initially empty 
  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. 
  PERFORM ERR_HDL. 
* add a new workbook 
  CALL METHOD OF H_MAPL 'Add' = H_MAP. 
  PERFORM ERR_HDL. 
* tell user what is going on 
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
     EXPORTING 
*           PERCENTAGE = 0 
           TEXT       = TEXT-009 
       EXCEPTIONS 
            OTHERS     = 1. 
* output column headings to active Excel sheet 
  PERFORM FILL_CELL USING 1 1 1 'Carrier Id'(001). 
  PERFORM FILL_CELL USING 1 2 0 'Connect Id'(002). 
  PERFORM FILL_CELL USING 1 3 1 'City From'(003). 
  PERFORM FILL_CELL USING 1 4 1 'City To'(004). 
  PERFORM FILL_CELL USING 1 5 1 'Dept Time'(005). 
  LOOP AT IT_SPFLI. 
* copy flights to active EXCEL sheet 
    H = SY-TABIX + 1. 
    PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. 
    PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. 
    PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. 
    PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. 
    PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. 
  ENDLOOP. 


* changes by Kishore  - start 
*  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. 
  CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2. 


  PERFORM ERR_HDL. 
* add a new workbook 
  CALL METHOD OF H_MAPL 'Add' = H_MAP  EXPORTING #1 = 2. 
  PERFORM ERR_HDL. 
* tell user what is going on 
  SET PROPERTY OF H_MAP 'NAME' = 'COPY'. 
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
     EXPORTING 
*           PERCENTAGE = 0 
           TEXT       = TEXT-009 
       EXCEPTIONS 
            OTHERS     = 1. 
* output column headings to active Excel sheet 
  PERFORM FILL_CELL USING 1 1 1 'Carrier ID'(001). 
  PERFORM FILL_CELL USING 1 2 0 'Connection ID'(002). 
  PERFORM FILL_CELL USING 1 3 1 'City From'(003). 
  PERFORM FILL_CELL USING 1 4 1 'City To'(004). 
  PERFORM FILL_CELL USING 1 5 1 'Dept Time'(005). 
  LOOP AT IT_SPFLI. 
* copy flights to active EXCEL sheet 
    H = SY-TABIX + 1. 
    PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. 
    PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. 
    PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. 
    PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. 
    PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. 
  ENDLOOP. 
* changes by Kishore  - end 
* disconnect from Excel 
*      CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING  #1 = 'C:\SKV.XLS'. 


  FREE OBJECT H_EXCEL. 
  PERFORM ERR_HDL. 
*---------------------------------------------------------------------* 
*       FORM FILL_CELL                                                * 
*---------------------------------------------------------------------* 
*       sets cell at coordinates i,j to value val boldtype bold       * 
*---------------------------------------------------------------------* 
FORM FILL_CELL USING I J BOLD VAL. 
  CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J. 
  PERFORM ERR_HDL. 
  SET PROPERTY OF H_ZL 'Value' = VAL . 
  PERFORM ERR_HDL. 
  GET PROPERTY OF H_ZL 'Font' = H_F. 
  PERFORM ERR_HDL. 
  SET PROPERTY OF H_F 'Bold' = BOLD . 
  PERFORM ERR_HDL. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  ERR_HDL 
*&---------------------------------------------------------------------* 
*       outputs OLE error if any                                       * 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM ERR_HDL. 
IF SY-SUBRC <> 0. 
  WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC. 
  STOP. 
ENDIF. 
ENDFORM.                    " ERR_HDL 

Hi All

Welcome to new SAP TUTORIAL site