Hi Vikash ,
Try this code for XK01 Table Control.
*include for dispaying icons in error log
INCLUDE <icon>.
*Declaration of structures
*Structure of the file to be uploaded
TYPES:BEGIN OF x_struct,
bukrs TYPE rf02k-bukrs, "Company Code
ekorg TYPE rf02k-ekorg, "Purchasing Organization
ktokk TYPE rf02k-ktokk, "Vendor account group
title_medi TYPE sza1_d0100-title_medi, "Title text
name1 TYPE addr1_data-name1, "Name 1
name2 TYPE addr1_data-name2, "Name 2
name3 TYPE addr1_data-name3, "Name 3
name4 TYPE addr1_data-name4, "Name 4
sort1 TYPE addr1_data-sort1, "Search Term 1
street TYPE addr1_data-street, "Street
house_num1 TYPE addr1_data-house_num1, "House Number
post_code1 TYPE addr1_data-post_code1, "City postal code
city1 TYPE addr1_data-city1, "City
country TYPE addr1_data-country, "Country Key
region TYPE addr1_data-region, "Region (State, Province, County)
po_box TYPE addr1_data-po_box, "PO Box
post_code2 TYPE addr1_data-post_code2, "PO Box postal code
post_code3 TYPE addr1_data-post_code3, "Company postal code (for large customers)
END OF x_struct.
*Structure to capture the messages
TYPES: BEGIN OF x_messages,
msgtyp(1) TYPE c,
bukrs TYPE rf02k-bukrs, "Company Code
ekorg TYPE rf02k-ekorg, "Purchasing Organization
ktokk TYPE rf02k-ktokk, "Vendor account group
message(120) TYPE c,
END OF x_messages.
DATA: it_messages TYPE STANDARD TABLE OF x_messages,
wa_messages TYPE x_messages.
*Internal table and work area which has same structure as file
DATA:it_file TYPE STANDARD TABLE OF x_struct.
DATA:wa_file TYPE x_struct.
*internal table for BDC
DATA: it_bdcdata TYPE STANDARD TABLE OF bdcdata.
DATA: wa_bdcdata TYPE bdcdata.
*Internal table for capturing messages
DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll,
wa_msgtab TYPE bdcmsgcoll.
DATA:it_excel TYPE STANDARD TABLE OF alsmex_tabline,
wa_excel TYPE alsmex_tabline.
DATA: x_ctuprms TYPE ctu_params.
DATA:con(50) TYPE c.
DATA:con1(50) TYPE c.
*selection screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*Enter file name on presentation server
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*subroutine for F4 help
PERFORM browse.
START-OF-SELECTION.
*subroutine to upload the file
PERFORM upload.
*subroutine for display parameters
PERFORM fill_params.
*subroutine to fill BDC internal table
PERFORM transact.
&----
*& Form fill_params
&----
text
----
--> p1 text
<-- p2 text
----
FORM fill_params .
x_ctuprms-dismode = 'N'.
x_ctuprms-updmode = 'A'.
x_ctuprms-defsize = 'X'.
ENDFORM. " fill_params
&----
*& Form bdc_dynpro
&----
text
----
-->P_0367 text
-->P_0368 text
----
FORM bdc_dynpro USING program dynpro. "#EC *
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
&----
text
----
-->P_0447 text
-->P_0448 text
----
FORM bdc_field USING fnam fval. "#EC *
CLEAR wa_bdcdata.
wa_bdcdata-fnam = fnam.
wa_bdcdata-fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM. " bdc_field
&----
*& Form collect_messages
&----
text
----
--> p1 text
<-- p2 text
----
FORM collect_messages .
DATA: w_msg(100).
LOOP AT it_msgtab INTO wa_msgtab.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = wa_msgtab-msgid
lang = wa_msgtab-msgspra
no = wa_msgtab-msgnr
v1 = wa_msgtab-msgv1
v2 = wa_msgtab-msgv2
v3 = wa_msgtab-msgv3
IMPORTING
msg = w_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.
CONDENSE w_msg.
CLEAR wa_messages.
wa_messages-msgtyp = wa_msgtab-msgtyp.
wa_messages-message = w_msg.
wa_messages-bukrs = wa_file-bukrs .
wa_messages-ekorg = wa_file-ekorg.
wa_messages-ktokk = wa_file-ktokk.
APPEND wa_messages TO it_messages .
ENDLOOP.
REFRESH it_msgtab.
ENDFORM. " collect_messages
&----
*& Form write_messages
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_messages .
LOOP AT it_messages INTO wa_messages .
WRITE:/1 sy-vline.
IF wa_messages-msgtyp = 'S'.
WRITE: 5 icon_green_light.
ELSEIF wa_messages-msgtyp = 'E'.
WRITE: 5 icon_red_light.
ELSEIF wa_messages-msgtyp = 'W'.
WRITE: 5 icon_yellow_light.
ENDIF.
WRITE: 15 sy-vline.
WRITE : 16 wa_messages-bukrs .
WRITE: 30 sy-vline.
WRITE : 32 wa_messages-ekorg .
WRITE: 48 sy-vline.
WRITE : 49 wa_messages-message .
WRITE: 170 sy-vline.
WRITE:/1 sy-vline.
ULINE 1(180).
ENDLOOP.
ENDFORM. " write_messages
&----
*& Form browse
&----
text
----
--> p1 text
<-- p2 text
----
FORM browse .
*Function which enables the user to browse the files on hard disk
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
static = 'X'
CHANGING
file_name = p_file
EXCEPTIONS
mask_too_long = 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.
ENDFORM. " browse
&----
*& Form upload
&----
text
----
--> p1 text
<-- p2 text
----
FORM upload .
*Function to upload excel file
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 8
i_end_col = 18
i_end_row = 9999
TABLES
intern = it_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR wa_file.
*Read the file row-wise
LOOP AT it_excel INTO wa_excel.
CASE wa_excel-col .
*Read Company Code
WHEN '1'.
wa_file-bukrs = wa_excel-value.
*Read Purchasing Organization
WHEN '2'.
wa_file-ekorg = wa_excel-value.
*Read Vendor account group
WHEN '3'.
wa_file-ktokk = wa_excel-value.
*Read Title
WHEN '4'.
wa_file-title_medi = wa_excel-value.
*Read Name 1
WHEN '5'.
wa_file-name1 = wa_excel-value.
*Read Name 2
WHEN '6'.
wa_file-name2 = wa_excel-value.
*Read Name 3
WHEN '7'.
wa_file-name3 = wa_excel-value.
*Read Name 4
WHEN '8'.
wa_file-name4 = wa_excel-value.
*Read Search Term 1
WHEN '9'.
IF STRLEN( wa_excel-value ) = 1.
CONCATENATE '00' wa_excel-value INTO con.
wa_file-sort1 = con.
ELSEIF STRLEN( wa_excel-value ) = 2.
CONCATENATE '0' wa_excel-value INTO con1.
wa_file-sort1 = con1.
ELSE.
wa_file-sort1 = wa_excel-value.
ENDIF.
*Read Street
WHEN '10'.
wa_file-street = wa_excel-value.
*Read house no
WHEN '11'.
wa_file-house_num1 = wa_excel-value.
*Read city postal code
WHEN '12'.
wa_file-post_code1 = wa_excel-value.
*Read city
WHEN '13'.
wa_file-city1 = wa_excel-value.
*Read country
WHEN '14'.
wa_file-country = wa_excel-value.
*Read Region (State, Province, County)
WHEN '15'.
wa_file-region = wa_excel-value.
*Read PO Box
WHEN '16'.
wa_file-po_box = wa_excel-value.
*Read PO Box postal code
WHEN '17'.
wa_file-post_code2 = wa_excel-value.
*Read Company postal code (for large customers)
WHEN '18'.
wa_file-post_code3 = wa_excel-value.
ENDCASE.
AT END OF row.
CONDENSE:wa_file-bukrs,wa_file-ekorg,wa_file-ktokk,wa_file-title_medi,
wa_file-name1,wa_file-name2,wa_file-name3,wa_file-name4,
wa_file-sort1,wa_file-street,wa_file-house_num1,
wa_file-post_code1,wa_file-city1,wa_file-country,wa_file-region,
wa_file-po_box,wa_file-post_code2,wa_file-post_code3.
APPEND wa_file TO it_file.
CLEAR wa_file.
ENDAT .
ENDLOOP.
ENDFORM. " upload
&----
*& Form transact
&----
text
----
--> p1 text
<-- p2 text
----
FORM transact .
LOOP AT it_file INTO wa_file.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-BUKRS'
wa_file-bukrs.
PERFORM bdc_field USING 'RF02K-EKORG'
wa_file-ekorg.
PERFORM bdc_field USING 'RF02K-KTOKK'
wa_file-ktokk.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-REGIO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PF03'.
PERFORM bdc_field USING 'LFA1-ANRED'
wa_file-title_medi.
PERFORM bdc_field USING 'LFA1-NAME1'
wa_file-name1.
PERFORM bdc_field USING 'LFA1-NAME2'
wa_file-name2.
PERFORM bdc_field USING 'LFA1-NAME3'
wa_file-name3.
PERFORM bdc_field USING 'LFA1-NAME4'
wa_file-name4.
PERFORM bdc_field USING 'LFA1-SORTL'
wa_file-sort1.
PERFORM bdc_field USING 'LFA1-STRAS'
wa_file-street.
PERFORM bdc_field USING 'LFA1-PFORT'
wa_file-house_num1.
PERFORM bdc_field USING 'LFA1-ORT01'
wa_file-post_code1.
PERFORM bdc_field USING 'LFA1-ORT02'
wa_file-city1.
PERFORM bdc_field USING 'LFA1-LAND1'
wa_file-country.
PERFORM bdc_field USING 'LFA1-REGIO'
wa_file-region.
PERFORM bdc_field USING 'LFA1-PFACH'
wa_file-po_box.
PERFORM bdc_field USING 'LFA1-PSTL2'
wa_file-post_code2.
PERFORM bdc_field USING 'LFA1-PSTLZ'
wa_file-post_code2.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'XK01'
USING it_bdcdata
OPTIONS FROM x_ctuprms
MESSAGES INTO it_msgtab.
REFRESH it_bdcdata.
PERFORM collect_messages.
CLEAR wa_file.
ENDLOOP.
PERFORM write_messages.
ENDFORM. " transact
Regards ,
satish