bdc direct input

Upload: debesh-swain

Post on 03-Apr-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 BDC Direct Input

    1/3

    Example on BDC Direct Input Method

    By Debesh Page 1

    The Input file should have fields separated by space. As using the method the table KNA1 is going to be

    updated so the file should contain atleast KUNNR field which is the key field of the table.

    Selection Screen :

    Code:

    *&---------------------------------------------------------------------*

    *& Report YTEST_BDC_DIRECT_METHOD

    *& BDC Direct Input method to update KNA1 from local file

    *&---------------------------------------------------------------------*

    *& By Debesh

    *& Date 07/06/2013

    *&---------------------------------------------------------------------*

    REPORT ytest_bdc_direct_method.

    PARAMETERS : p_path TYPE rlgrap-filename.

    TYPES : BEGIN OF ty_file ,

    str(255),

    END OF ty_file.

    DATA : lt_itab TYPE STANDARD TABLE OF ty_file,

    lt_itab1 TYPE TABLE OF kna1 .

    DATA :ls_itab LIKE LINE OF lt_itab,

    ls_itab1 LIKE LINE OF lt_itab1.

    DATA : lv_file TYPE string,

    ls_path TYPE file_table,

    lt_ftab TYPE filetable,

    lv_rc TYPE i.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.

    CALL METHOD cl_gui_frontend_services=>file_open_dialog

    CHANGING

    file_table = lt_ftab

    rc = lv_rc

    EXCEPTIONS

  • 7/28/2019 BDC Direct Input

    2/3

    Example on BDC Direct Input Method

    By Debesh Page 2

    file_open_dialog_failed = 1

    cntl_error = 2

    error_no_gui = 3

    not_supported_by_gui = 4

    OTHERS = 5.

    IF sy-subrc 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ELSE.

    READ TABLE lt_ftab INTO ls_path INDEX 1.

    IF sy-subrc IS INITIAL.

    p_path = ls_path-filename.

    ENDIF.

    ENDIF.

    START-OF-SELECTION.

    lv_file = p_path.

    CALL FUNCTION 'GUI_UPLOAD'EXPORTING

    filename = lv_file

    filetype = 'ASC'

    TABLES

    data_tab = lt_itab

    EXCEPTIONS

    file_open_error = 1

    file_read_error = 2

    no_batch = 3

    gui_refuse_filetransfer = 4

    invalid_type = 5no_authority = 6

    unknown_error = 7

    bad_data_format = 8

    header_not_allowed = 9

    separator_not_allowed = 10

    header_too_long = 11

    unknown_dp_error = 12

    access_denied = 13

    dp_out_of_memory = 14

    disk_full = 15

    dp_timeout = 16

    OTHERS = 17.

    IF sy-subrc 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    LOOP AT lt_itab INTO ls_itab.

  • 7/28/2019 BDC Direct Input

    3/3

    Example on BDC Direct Input Method

    By Debesh Page 3

    SPLIT ls_itab-str AT ' ' INTO ls_itab1-kunnr ls_itab1-name1

    ls_itab1-ort01

    ls_itab1-land1.

    ls_itab1-mandt = sy-mandt.

    APPEND ls_itab1 TO lt_itab1.

    CLEAR ls_itab1.

    ENDLOOP.

    LOOP AT lt_itab1 INTO ls_itab1.

    INSERT into kna1 values ls_itab1.

    CLEAR ls_itab1.

    IF sy-subrc = 0.

    WRITE :/ 'RECORDS ARE INSERTED INTO KNA1'.

    ELSEIF sy-subrc = 4.

    WRITE :/ 'RECORDS ALREADY EXISTS'.

    ENDIF.

    ENDLOOP.

    Upon successful insertion message gets displayed: