Hi everyone,
I have done the code for upload the freight rate for TK11. It shows some error and I dont know where my logic went wrong. Can someone please help me in this.Below is my code.
report Z_UPLOAD_MFR
no standard page heading line-size 255.
**Input Path
*PARAMETERS: p_file TYPE rlgrap-filename. " File Path
* Structure Decleration
DATA :
BEGIN OF fs_field,
ROUTE TYPE KOMG-ROUTE, "description field in the excel file.
END OF fs_field.
*Internal table declaration
DATA:
t_field LIKE TABLE OF fs_field,
t_bdcdata LIKE TABLE OF bdcdata.
DATA:
fs_bdcdata LIKE LINE OF t_bdcdata, "Structure type of bdcdata
w_str TYPE string.
DATA:
wa_path TYPE string ,
wa_error TYPE string,
wa_cnt TYPE i,
w_mode TYPE c,
wa_cnt1(2) TYPE n,
it_output type table of ty_s_error,
wa_output like line of it_output.
* 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.
TYPES:
fs_struct(4096) TYPE c OCCURS 0 .
DATA:
w_struct TYPE fs_struct.
* Uploading excel file.
call function 'GUI_UPLOAD'
exporting
filename = 'C:\File.txt' "File path to upload the data
has_field_separator = 'X' "Field separator
* I_LINE_HEADER =
i_tab_raw_data = w_struct
i_filename = p_file
tables
data_tab = t_field "Table with the fields which are required to call the transaction
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_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. " IF SY_SUBRC = 0
**** CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
**** EXPORTING
**** i_field_seperator = 'X'
***** I_LINE_HEADER =
**** i_tab_raw_data = w_struct
**** i_filename = p_file
**** TABLES
**** i_tab_converted_data = t_field
**** EXCEPTIONS
**** conversion_failed = 1
**** OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM open_group .
LOOP AT t_field INTO fs_field.
REFRESH: t_bdcdata.
CLEAR : fs_bdcdata.
PERFORM populate_bdcdata.
PERFORM insert_data.
ENDLOOP. " LOOP AT t_f..
*Function to close BDC group.
PERFORM close_group.
*&---------------------------------------------------------------------*
*& Form open_group
*&---------------------------------------------------------------------*
* Function to open BDC
*----------------------------------------------------------------------*
FORM open_group.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
* CLIENT = SY-MANDT
* DEST = FILLER8
group = 'YH1610'
* HOLDDATE = FILLER8
keep = 'X'
user = sy-uname
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = '%'
* DATFM = '%'
* IMPORTING
* QID =
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE :/ 'Group Open' .
ENDIF. " IF sy-subrc <>
ENDFORM. " Open_group
*&---------------------------------------------------------------------*
*& Form POPULATE_BDCDATA
*&---------------------------------------------------------------------*
* Function to populate data
*----------------------------------------------------------------------*
FORM populate_bdcdata.
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RV13A-KSCHL'
'ZI01'.
perform bdc_dynpro using 'SAPLV14A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV130-SELKZ(01)'.
perform bdc_field using 'BDC_OKCODE'
'=WEIT'.
perform bdc_dynpro using 'SAPMV13A' '1913'.
LOOP AT it_record INTO wa_record.
perform bdc_field using 'BDC_CURSOR'
'KOMG-TDLNR'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'KOMG-TPLST'
'Z100'.
perform bdc_field using 'KOMG-TDLNR'
'L0161-01'.
perform bdc_dynpro using 'SAPMV13A' '1913'.
perform bdc_field using 'BDC_OKCODE'
'/EBAC'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-TDLNR'.
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_OKCODE'
'/EBA0' '=POST'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
ENDLOOP.
endform.
*&---------------------------------------------------------------------*
*& Form FILL_BDC_DATA
*&---------------------------------------------------------------------*
* Function to populate data
*----------------------------------------------------------------------*
* -->VALUE(P_PROGRAM) Program name
* -->VALUE(P_DYNPRO) screen no
* -->VALUE(P_BEGIN) screen start
* -->VALUE(P_FIELD) field name
* -->VALUE(P_VALUE) field value
*----------------------------------------------------------------------*
FORM fill_bdc_data USING value(p_program)
value(p_dynpro)
value(p_begin)
value(p_field)
value(p_value).
CLEAR fs_bdcdata.
IF p_begin = 'X'.
*" Screen Values.
fs_bdcdata-program = p_program. " program name
fs_bdcdata-dynpro = p_dynpro. " screen no
fs_bdcdata-dynbegin = p_begin. " screen start
APPEND fs_bdcdata TO t_bdcdata.
ELSE.
*" Filed Values.
CLEAR fs_bdcdata.
fs_bdcdata-fnam = p_field. " Field name
fs_bdcdata-fval = p_value. " Field value
CONDENSE fs_bdcdata-fval.
APPEND fs_bdcdata TO t_bdcdata.
ENDIF. " IF P_BEGIN = 'X'
ENDFORM. " FILL_BDC_DATA
*&---------------------------------------------------------------------*
*& Form INSERT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM insert_data .
*Data decleration
DATA:
t_msg TYPE TABLE OF bdcmsgcoll, " Collecting messages
w_msg TYPE bdcmsgcoll,
w_msg1(51).
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'TK11'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
dynprotab = t_bdcdata
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7
.
IF sy-subrc <> 0.
* Error Found
WRITE : / 'DATA Not INSERTED'(002).
ELSE.
WRITE : / 'DATA INSERTED'(003).
ENDIF . " IF sy-subr
ENDFORM. " INSERT_DATA
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
* Function to close BDC group
*----------------------------------------------------------------------*
FORM close_group .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'UNABLE TO CLOSE BDC SESSION !' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF. " IF sy-subrc ..
WRITE : / 'CLOSED SESSION'.
ENDFORM. " CLOSE_GROUP
Thanks,
Misha.