Scheduling Problem for uploading Data from Flat file to SAP

Hi guys,
I am facing a weared problem in uploading some leave records in z table. The code is working fine if we run it through se38 after selecting the file from a shared location from production server which has all the access rights.
This folder lies in the \usr folder of SAP Production.
I have kept all the Flat files in the shared path "
Tis-mum-iz-s1\migration\SAP-INT\leave\" ...
To give u exact directory structure..
Tis-mum-iz-s1 is the Server Name
usr is the SAP System folder used for uploads and downloads
usr |
...-> Migration |
                  -> SAP-INT |
                             -> leave -> (Flat Files)
Migration folder is shared with all rights.
Obviously, we cannot give shared drive as the variant in the scheduler.
So i use the system path i.e. \usr\sap\tmp\migration\sap-int\leave\ as the variant.
All my other download programs are working fine with this path as a variant...
But my this particular upload program does not work with this path....
I am giving u my code...
TATA INTERACTIVE SYSTEMS (A Division of TATA INDUSTRIES LIMITED)
REPORT      :  ZMIGRATE_ZLEAVE
DESCRIPTION :  To Upload the Leave data. (ZLEAVE)
CREATED BY  :  Abhishek Bachhawat
CREATED ON  :  01.09.2005
CONSULTANT  :  ANAND
REPORT  ZMIGRATE_ZLEAVE.
TABLES: ZLEAVE.
data: begin of wtab,
          MANDT(3),
          ZLVID(8),
          PERNR(8),
          ZSTDT(8),
          ZENDT(8),
          ZDAYS(4),
          AEDAT(8),
          ERDAT(8),
      end of wtab,
      itab like WTAB occurs 0 WITH HEADER LINE.
data: temp like zleave occurs 0 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK file
               WITH FRAME TITLE text-005.
parameters: file like rlgrap-filename Obligatory.
Concatenate File SY-DATUM '_Leave.txt' into File.
SELECTION-SCREEN END OF BLOCK file.
at SELECTION-SCREEN ON VALUE-REQUEST FOR file .
  CALL FUNCTION 'WS_FILENAME_GET'
    IMPORTING
      FILENAME = file.
  IF SY-SUBRC <> 0.
  ENDIF.
start-of-selection.
  if file ne space.
    CALL FUNCTION 'WS_UPLOAD'
      EXPORTING
        FILENAME = FILE
        FILETYPE = 'DAT'
      TABLES
        DATA_TAB = ITAB.
  else.
    message e000(zps) with 'Specify a file'.
  endif.
  SORT ITAB BY ZLVID.
  LOOP AT ITAB.
    REFRESH TEMP.
    CLEAR TEMP.
    TEMP-MANDT = sy-mandt.
    TEMP-ERDAT = SY-DATUM.
    TEMP-ZLVID = ITAB-ZLVID.
    TEMP-PERNR = ITAB-PERNR.
    TEMP-ZSTDT = ITAB-ZSTDT.
    TEMP-ZENDT = ITAB-ZENDT.
    TEMP-ZDAYS = ITAB-ZDAYS.
    TEMP-AEDAT = ITAB-AEDAT.
    TEMP-ERDAT = ITAB-ERDAT.
    APPEND TEMP.
    SELECT SINGLE *
           FROM   ZLEAVE
           WHERE  ZLVID = TEMP-ZLVID
           AND    PERNR = TEMP-PERNR.
    IF SY-SUBRC = 0.
      UPDATE ZLEAVE SET ZSTDT = TEMP-ZSTDT
                        ZENDT = TEMP-ZENDT
                        ZDAYS = TEMP-ZDAYS
                        AEDAT = TEMP-AEDAT
                        ERDAT = TEMP-ERDAT
             WHERE ZLVID = TEMP-ZLVID
             AND   PERNR = TEMP-PERNR.
    ELSE.
      INSERT ZLEAVE FROM TABLE TEMP.
      COMMIT WORK.
    ENDIF.
  ENDLOOP.

Hi,
open dataset file for input in text mode.
check sy-subrc = 0.
while sy-subrc = 0.
  read dataset file into wa.
  if sy-subrc = 0.
  append wa to itab.
  else.
    exit.
  endif.
endwhile.
close dataset file.
regards
Siggi
PS: check also the F1-help for open, read and close statements!

Similar Messages

  • Problem while uploading data from flat file

    hi friends,
    suppose if there are 100 records in flat file , if 20 records uploaded with out any problem and if error occurs while uploading remaing data . is necessary to upload entire data again or else only remaining data should be uploaded?
    i had used call transaction for purchase order application?
    please give me reply  soon its urgent
    thanks & regards
    priya

    Hi Hari,
    you have to upload the remaining data.
    as u have used CT method, do 1 thing trap the error data in runtime & prepare another flat file. next time correct the data in new flat file. & run the DBC program again with this new flat file.
    Reward if useful
    Regards
    ANUPAM

  • How to  upload data from flat file to datastore object in BI 7.0

    Dear friends,
    Please tell me
    step by step process for upload data from flat file to datastore object in BI 7.0
    <removed by moderator>
    please help me
    Thanks,
    D.prabhu
    Edited by: Siegfried Szameitat on Aug 17, 2011 11:40 AM

    Create transformation on thr data source and keep the DSO as the target and load.
    Ravi Thothadri

  • Upload data from flat file to OVKK  using BDC

    Hi All,
    I want to upload data from flat file to OVKK tcode using BDC.
    OVKK is a maintaince view with  a table control.
    So please send me code for uploading data to OVKK through BDC.
    Thanks & Regards,
    Siva.B

    Hi,
    Welcome to SDN!!!!!!!!!!
    Can you see this example for Table control.
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Today this is the second post on the same issue and same Tranx.
    1st try through SHDB and check the code.
    Thanks.
    If this helps you reward with points.

  • Data Source creation for Master Data from Flat File to BW

    Hi,
    I need to upload Master Data from Flat File. Can anybody tell step by step right from begining of creation of DataSource up to Loading into Master Data InfoObject.
    can any body have Document.
    Regards,
    Chakri.

    Hi,
    This is the procedure.
    1. Create m-data with or without attributes.
    2. Create infosource .
        a) with flexible update
             or
        b) with direct update
    3. Create transfer rules and assign tyhe names of m-data and attribute in "Transfer rules" tab and transfer them to communication structure.
    4. Create the flat-file with same stucture as communication structure.
    5. if chosen direct update then create infopackage and assign the name of flat-file and schedule it.
    6. if chosen flexible update the create update rule with assigning name of the infosource and the schedule it by creating infopackage.
    Hope this helps. If still have prob then let me know.
    Follow this link also.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/b2/e50138fede083de10000009b38f8cf/frameset.htm
    Assign points if helpful.
    Vinod.

  • Wrong century for the dates from flat file

    I am in the process of uploading the data from flat file ( aka CSV) into oracle via external table .
    All the dates have the year of 20xx. My understanding was 51-99 will be prefixed with 19 ( such as 1951 - 1999) and 00-50
    will be prefixed with 20 ( such as 2004 ... )
    The column below ( startdate ) is of timestamp .
    Is my understanding wrong ?
    SQL> select startdate , to_date(startdate , 'dd/mm/yyyy' ) newdate from tab;
    NEW_DATE STARTDATE
    09/18/2090 18-SEP-90 12.00.00.000000000 AM
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    PL/SQL Release 11.1.0.7.0 - Production
    CORE 11.1.0.7.0 Production
    TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
    NLSRTL Version 11.1.0.7.0 - Production
    SQL> show parameter nls
    NAME TYPE VALUE
    nls_calendar string
    nls_comp string BINARY
    nls_currency string
    nls_date_format string
    nls_date_language string
    nls_dual_currency string
    nls_iso_currency string
    nls_language string AMERICAN
    nls_length_semantics string BYTE
    nls_nchar_conv_excp string FALSE
    nls_numeric_characters string
    nls_sort string
    nls_territory string AMERICA
    nls_time_format string
    nls_time_tz_format string
    nls_timestamp_format string
    nls_timestamp_tz_format string
    SQL>
    SQL>

    Offense . None taken ...
    I literally typed the sql ( as I did not copy & paste SQL / resultsets ) . I did use to_char in my original sql . I don't want to expose the real table . thats why I was giving the made up test case. If you carefully the SQL and the equivalent result sets ... you would have noticed .
    Here is the SQL used ( of course , I have changed the table name ) ...
    select to_char(startdate , 'mm/dd/yyyy') sdate, startdate from t
    SDATE STARTDATE
    09/18/2090 18-SEP-90 12.00.00.000000 AM
    The flatfile had the value of 091890 as the data .

  • Error when uploading data from Flat file

    I am uplading data from Flat file.
    When I am uploading it gives an error
    An error occurred in record 1 during execution of conversion exit CONVERSION_EXIT_CUNIT_INPUT for field UNIT.
    Can any one help.
    Thanx in Advance.
    Regards,
    Pradeep.

    Hi Pradeep,
    Refer this link:
    CONVERSION_EXIT_CUNIT_INPUT error in flat file load
    Re: Error in Flat files upload
    Also try this - In the transfer structure check the checkbox fo UNIT and retry the load. Hopefully it should be fine.
    Bye
    Dinesh

  • Upload data from flat file

    Is there a way to upload data from a flat file and check of existing records and perform updates and inserts respectively on a table using MERGE as available in Oracle 9i version.
    I don't want to use SQLLOADER utility for this purpose as I will be having existing data which might give exceptions for primary key, etc.
    Is it possible to do this using UTL_FILE utility and use of MERGE statement.
    Any inputs will be highly appreciated.
    Thanks

    This is what i am doing as of today :-
    This process reads the flat file and uploads and updates data into 2 different tables.
    create or replace procedure EPS.GET_DATA(filelocation varchar2,filename varchar2)
    IS
    --declare
    my_file utl_file.file_type;
    -- variables used to parse the input data line ...
    line char(45);
    l_EPCI_CID_ID char(25);
    l_cid number :=0;
    l_EPCI_BILLING_ACCOUNT_ID char(15);
    l_account number :=0;
    l_EPCI_BILLING_COMPANY_CD char(2);
    l_EPCI_SOURCE_SYSTEM_CD char(3);
    -- timing variables ...
    l_start_time date;
    l_end_time date;
    l_difference number;
    l_run_id varchar2(40) := '';
    counter number := 0;
    mrow number :=0;
    oldCustomerCid number :=0 ;
    rowsFound number :=0;
    rowsFoundForCustomer number :=0;
    rowsFound2 number :=0;
    rowsFound3 number :=0;
    mUpdate number :=0;
    cUpdate number :=0;
    cInsert number :=0;
    cSkipped number :=0 ;
    mrowupd number :=0;
    rowsSkipped number :=0;
    begin
    -- Open the input file ....
    begin
    dbms_output.put_line('opening file :'||filename||' from location :'||filelocation);
    my_file := utl_file.fopen(filelocation,filename,'r');
    exception
    when utl_file.invalid_filehandle then
    dbms_output.put_line('invalid_filehandle');
    raise_application_error(-20100,'file error');
    when no_data_found then
    dbms_output.put_line('no data found exception');
    raise_application_error(-20100,'file error');
    when others then
    null;
    end;
    -- Read data and insert it into the table ...
    dbms_output.put_line('program started: now = '|| to_char(sysdate,'HH:MI:SS'));
    l_start_time := sysdate;
    begin
    dbms_output.put_line('looping cursor to search existing groups');
    loop
    utl_file.get_line(my_file,line);
    l_EPCI_CID_ID := substr(line,1,25);
    l_cid := to_number(l_EPCI_CID_ID);
    l_EPCI_BILLING_ACCOUNT_ID := substr(line,26,15);
    l_account :=to_number(l_EPCI_BILLING_ACCOUNT_ID);
    l_EPCI_BILLING_COMPANY_CD := substr(line,41,2);
    l_EPCI_SOURCE_SYSTEM_CD := substr(line,43,3);
    -- Populating Mad.Mad_Customer_Profile table with EPS CID, If CID exists then updating MCP_LAST_INVOICE_LOAD_DT with system date
    if(oldCustomerCid <> l_cid) then
    Select count(*) into rowsFoundForCustomer from MAD.MAD_CUSTOMER_PROFILE WHERE MCP_CID_ID = l_cid ;
    if rowsFoundForCustomer=0 then
    Insert into MAD.MAD_CUSTOMER_PROFILE values(l_cid,sysdate,sysdate,'EBILL');
    cInsert := cInsert+1;
    else
    Update MAD.MAD_CUSTOMER_PROFILE set MCP_LAST_INVOICE_LOAD_DT=SYSDATE,
    MCP_UPDATE_DATE=SYSDATE, MCP_USER_ID='EBILL' where MCP_CID_ID=l_cid;
    cUpdate := cUpdate+1;
    end if;
    else
    cSkipped := cSkipped+1;
    end if ;
    oldCustomerCid := l_cid;
    -- Populating EPS.EPS_CBS_INVOICE_CUSTOMER table with the flat file data.
    select count(*) into rowsFound
    from EPS.EPS_CBS_INVOICE_CUSTOMER
    WHERE EPCI_CID_ID=l_cid and
    to_number(EPCI_BILLING_ACCOUNT_ID)=l_account
    AND rtrim(EPCI_BILLING_COMPANY_CD)=rtrim(l_EPCI_BILLING_COMPANY_CD)
    AND rtrim(EPCI_SOURCE_SYSTEM_CD)=rtrim(l_EPCI_SOURCE_SYSTEM_CD)
    and rtrim(EPCI_ACTIVE_IND)='Y';
    if rowsFound=0 then
    Declare
    Cursor c1 is
    select * from EPS.EPS_CBS_INVOICE_CUSTOMER
    WHERE
    to_number(EPCI_BILLING_ACCOUNT_ID)=l_account
    AND rtrim(EPCI_BILLING_COMPANY_CD)=rtrim(l_EPCI_BILLING_COMPANY_CD)
    AND rtrim(EPCI_SOURCE_SYSTEM_CD)=rtrim(l_EPCI_SOURCE_SYSTEM_CD)
    and EPCI_ACTIVE_IND='Y';
    myRec eps.eps_cbs_invoice_customer%ROWTYPE ;
    Begin
    if not c1%isopen then
    open c1 ;
    end if;
    loop
    fetch c1 into myRec;
    exit When c1%notfound;
    UPDATE EPS.EPS_CBS_INVOICE_CUSTOMER
    SET EPCI_ACTIVE_IND='N',EPCI_UPDATE_DT=SYSDATE,EPCI_UPDATE_USER_ID='EBILL'
    WHERE
                             --EPCI_CID_ID=L_CID and
    TO_NUMBER(EPCI_BILLING_ACCOUNT_ID)=l_account
    AND rtrim(EPCI_BILLING_COMPANY_CD)=rtrim(l_EPCI_BILLING_COMPANY_CD)
    AND rtrim(EPCI_SOURCE_SYSTEM_CD)=rtrim(l_EPCI_SOURCE_SYSTEM_CD);
    mrowupd := mrowupd+1;
    end loop;
    close c1;
    insert into EPS.EPS_CBS_INVOICE_CUSTOMER(EPCI_CID_ID,EPCI_BILLING_ACCOUNT_ID,
    EPCI_BILLING_COMPANY_CD,EPCI_SOURCE_SYSTEM_CD,EPCI_ACTIVE_IND,EPCI_UPDATE_DT,EPCI_UPDATE_USER_ID)
    Values(l_cid,l_EPCI_BILLING_ACCOUNT_ID,l_EPCI_BILLING_COMPANY_CD,l_EPCI_SOURCE_SYSTEM_CD,'Y',SYSDATE,'EBILL');
    mrow := mrow+1;
    end ;
    Else
    rowsSkipped:=rowsSkipped+1;
    END IF;
    end loop;
    Exception
    when no_data_found then
    utl_file.fclose(my_file);
    dbms_output.put_line('Number of lines parsed =');
    when value_error then
    dbms_output.put_line('value error');
    raise_application_error(-20100,'file error');
    when utl_file.invalid_path then
    dbms_output.put_line('invalid path');
    raise_application_error(-20100,'file error');
    when utl_file.invalid_mode then
    dbms_output.put_line('invalid_mode');
    raise_application_error(-20100,'file error');
    when utl_file.invalid_filehandle then
    dbms_output.put_line('invalid_filehandle');
    raise_application_error(-20100,'file error');
    when utl_file.invalid_operation then
    dbms_output.put_line('invalid_operation');
    raise_application_error(-20100,'file error');
    when utl_file.read_error then
    dbms_output.put_line('read_error');
    raise_application_error(-20100,'file error');
    when utl_file.write_error then
    dbms_output.put_line('write_error');
    raise_application_error(-20100,'file error');
    when utl_file.internal_error then
    dbms_output.put_line('internal_error');
    raise_application_error(-20100,'file error');
    WHEN DUP_VAL_ON_INDEX THEN
    dbms_output.put_line('DUPLICATE RECORD FOUND WHILE INSERTING RECORD');
    when others then
    dbms_output.put_line('un-handled');
    raise_application_error(-20100,'file error');
    null;
    end;
    -- Now commit and close the file ...
    COMMIT;
    dbms_output.put_line('program finished: now = '||
    to_char(sysdate,'HH:MI:SS'));
    dbms_output.put_line('Rows Inserted into EPS table :'|| mrow);
    dbms_output.put_line('Rows Updates in EPS table:'|| mrowupd);
    dbms_output.put_line('Rows Skipped :'|| rowsSkipped);
    dbms_output.put_line('Rows Inserted into Customer table :'|| cInsert);
    dbms_output.put_line('Rows Updates in Customer table:'|| cUpdate);
    dbms_output.put_line('Duplicate CID''s Skipped :'|| cSkipped);
    l_end_time := sysdate;
    l_difference := l_end_time - l_start_time;
    utl_file.fclose(my_file);
    end;

  • Problem in loading data from flat file to info object

    Hi experts,
      I am new on bw. I am trying to load data from .csv file to info object. CSV file contains two colums Mat No, Mat Name and are separated by comma and similarly Mat Name is attribute of Mat No in info object. I am doing all steps by following the book but whenever I load data into info object it is loaded in one column. I mean both Mat no and Mat name apears in Mat No column whereas Mat Name column appears empty in info object. I have changed exel file into .csv. Any one can help me sort it out.
    regards

    Hi,
    your flatfile should be in the form of csv ie it does not mean that in a word u seperate it with coma
    create an excel file and say save as in teh file name give the name of your flatfile and in the save as type select CSV(comma delimited) from the drop down list
    and then in this file enter the data as u fill in excel sheet.
    After closing the file right click it and say open with wordpad then the data should appear seperated with a comma.
    Try this and then revert back in case of any doubts.........
    Are u loading data into BI 7.0 or 3.x
    Regards
    Madhavi

  • Upload data from flat file into internal table

    Hi friends,
    I want to upload the data from a flat file into internal table , but the problem is that all the columns in that flat file are seperated by "|" character instead of tabs.
    Plz help me out.........

    HEllo,
    DO like this.
      CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
      FILENAME = LV_FILENAME
      FILETYPE = 'ASC'
      HAS_FIELD_SEPARATOR = 'X'  " Check here
    * HEADER_LENGTH = '1'
    * READ_BY_LINE = 'X'
    * DAT_MODE = ' '
    * CODEPAGE = ' '
    * IGNORE_CERR = ABAP_TRUE
    * REPLACEMENT = '#'
    * CHECK_BOM = ' '
    * IMPORTING
    * FILELENGTH =
    * HEADER =
      TABLES
      DATA_TAB = IT_COJRNL
      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.
    VAsanth

  • Help for loading data from flat file it is an imp for me!!

    Hi All,
    I am working on loading data. I am getting data from Informix as '|' (pipe) delimited.
    Each file consists of 20-25 columns. But I need few columns information only for this load. Thanks in advance for your reply.
    Thanks,
    RM

    go for fixed length loading. refer to some of the sample scripts
    (ref: search for *.ctl in find files )

  • Uploading data from flat file to table control

    HI All,
    I want to upload data to OVKK tcode using BDC. For this I wrote Z program as shown below:
    REPORT ZSD_BDC_OVKK_UPLOAD
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    *INCLUDE bdcrecx1.
    DATA : BEGIN OF T_DUMMY OCCURS 0,
           VAR(100) TYPE C,
           END OF T_DUMMY.
    DATA:  BEGIN OF ITAB OCCURS 0,
           KALSM(10) TYPE C,
    *       KARTV(10) TYPE C,
           VKORG(4) TYPE C,
           VTWEG(2) TYPE C,
           SPART(2) TYPE C,
           KALVG(1) TYPE C,
           KALKS(1) TYPE C,
             KALSM(6) TYPE C,
             KARTV(4) TYPE C,
           END OF ITAB.
    DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
           IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA : v_filename TYPE string.
    PARAMETER : filename LIKE rlgrap-filename OBLIGATORY.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          field_name = filename
        CHANGING
          file_name  = filename.
    START-OF-SELECTION.
      v_filename = filename.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                      = v_filename
          filetype                      = 'ASC'
         has_field_separator           = 'X'
        TABLES
          data_tab                      = T_DUMMY.
    LOOP AT T_DUMMY.
        ITAB-VKORG = T_DUMMY-VAR+0(4).
        ITAB-VTWEG = T_DUMMY-VAR+5(2).
        ITAB-SPART = T_DUMMY-VAR+8(2).
        ITAB-KALVG = T_DUMMY-VAR+11(1).
        ITAB-KALKS = T_DUMMY-VAR+13(1).
        ITAB-KALSM = T_DUMMY-VAR+15(6).
        ITAB-KARTV = T_DUMMY-VAR+22(4).
        APPEND ITAB.
    ENDLOOP.
    DATA: FNAM(20) TYPE C,
          IDX      TYPE C.
        MOVE 1 TO IDX.
    LOOP AT ITAB.
    REFRESH IT_BDCDATA.
        PERFORM bdc_dynpro      USING 'SAPML080Z' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V_T683V-KALSM(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=NEWL'.
        PERFORM bdc_dynpro      USING 'SAPML080Z' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V_T683V-VKORG(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=SAVE'.
        CONCATENATE 'V_T683V-KALSM(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-kalsm.
        CONCATENATE 'V_T683V-KARTV(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-kartv.
        CONCATENATE 'V_T683V-VKORG(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-vkorg.
        CONCATENATE 'V_T683V-VTWEG(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-vtweg.
        CONCATENATE 'V_T683V-SPART(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-spart.
        CONCATENATE 'V_T683V-KALVG(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-kalvg.
        CONCATENATE 'V_T683V-KALKS(' IDX ')' INTO FNAM.
         PERFORM bdc_field       USING FNAM
                                       itab-kalks.
    PERFORM bdc_dynpro      USING 'SAPLSTRD' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'KO008-TRKORR'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=LOCK'.
       PERFORM bdc_field       USING 'KO008-TRKORR'
                                       'D47K919377'.
       PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V_T683V-VKORG(01)'.
       PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
       PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'V_T683V-VKORG(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=SAVE'.
    CALL TRANSACTION 'OVKK' USING IT_BDCDATA
                            MODE  'A'
                           UPDATE 'S'
                         MESSAGES INTO IT_BDCMSGCOLL.
    IDX = IDX + 1  .
    endloop.
    FORM BDC_DYNPRO USING PROG SCR.
      CLEAR IT_BDCDATA.
      IT_BDCDATA-PROGRAM = PROG.
      IT_BDCDATA-DYNPRO  = SCR.
      IT_BDCDATA-DYNBEGIN = 'X'.
      APPEND IT_BDCDATA.
    ENDFORM.
    FORM BDC_FIELD USING FNAM FVAL.
      CLEAR IT_BDCDATA.
      IT_BDCDATA-FNAM = FNAM.
      IT_BDCDATA-FVAL  = FVAL.
      APPEND IT_BDCDATA.
    ENDFORM.
    I checked in debugging mode and found that data is passed to internal table but its not uploading data to OVKK, there no data is displayed.
    Please tell me solution for this.....
    regards,
    ravindra.

    Hi,
    Look at the following link you will find some good example of Table control.
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Here you need to take care to which line of table control you are populating the data.
    Make sure to take care of page down in table control.
    *********Try Call Transaction in MODE 'N'.
    Check your OK_CODE once again.
    Try to give BACk also after saving.
    The Table control is mainly used to update no.of line items at one shot. No need to come BACK for each and every record.
    Try to do recording in SHDB once again and see the changes closely.
    Thanks.
    If this helps you reward with points.
    Message was edited by: KDeepak
    Message was edited by: KDeepak

  • How to upload data from  flat to ztables with in the same client by idocs

    Hi Experts,
                   I have a requirement in IDOCS, I need to create a custom IDOC .I  am working on IDES 4.6c. The reqirement is , there  are ztables with header and item data. say for example Authors and Books. I need to upload data from flat file which is available in presentation  server of the same client, which will updated in ztables by using idocs.  For this i need to do ale settings also. The client is 800. There is no other client available. With in the same client i need to do the above stuff.
                    For this requirement how to approach (step by step) to accomplish.
    Thanks in Advance.
    Regards
    J.S.Varma

    Hi,
      This is the procedure.
    create segments using we31. <b>don't forget to relaese it</b>
    create idoc using above segments using we30 <b>don't forget to relaese it</b>
    create message type using we81
    create function module to upload data using se37
    maintain process code using we42
    create  partner profiles we20.
    In the fm module itself write the code for downloading the data from presentation server by GUI_DOWNLOAD.
      Then update the database tables directly by insrt through other internal table in the same client itself.
    Thanks
    Manju

  • Reading data from flat file Using TEXT_IO

    Dear Gurus
    I already posted this question but this time i need some other changes .....Sorry for that ..
    I am using 10G forms and using TEXT_IO for reading data from flat file ..
    My data is like this :-
    0|BP-V1|20100928|01|1|2430962.89|27|2430962.89|MUR|20100928120106
    9|2430962.89|000111111111|
    1|61304.88|000014104113|
    1|41961.73|000022096086|
    1|38475.65|000023640081|
    1|49749.34|000032133154|
    1|35572.46|000033093377|
    1|246671.01|000042148111|
    Here each column is separated by | . I want to read all the columns and want to do some validation .
    How can i do ?
    Initially my requirement was to read only 2 or 3 columns so i did like this ...
    Procedure Pay_Simulator(lfile_type varchar2,lac_no varchar2,lcur varchar2,lno_item number,ltotal number,ldate date,lpay_purp varchar2,lfile_name varchar2)
    IS
    v_handle utl_file.file_type;
    v_filebuffer varchar2(500);
    line_0_date VARCHAR2 (10);
    line_0_Purp VARCHAR2 (10);
    line_0_count Number;
    line_0_sum number(12,2);
    line_0_ccy Varchar2(3);
    line_9_sum Number(12,2);
    line_9_Acc_no Varchar2(12);
    Line_1_Sum Number(12,2);
    Line_1_tot Number(15,2) := 0;
    Line_1_flag Number := 0;
    lval number;
    lacno varchar2(16);
    v_file varchar2(20);
    v_path varchar2(50);
    Begin
    v_file := mcb_simulator_pkg.GET_FILENAME(lfile_name); -- For the file name
    v_path :=rtrim(regexp_substr( lfile_name , '.*\\' ),'\'); For the Path
    v_path := SUBSTR (lfile_name,0, INSTR (lfile_name, '\', -1));
    v_handle := UTL_FILE.fopen (v_path, v_file, 'r');
    LOOP
    UTL_FILE.get_line (v_handle, v_filebuffer);
    IF SUBSTR (v_filebuffer, 0, 1) = '0' THEN
    SELECT line_0 INTO line_0_date
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_0, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 3;
    SELECT line_0 INTO line_0_Purp
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_0, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 4;
    SELECT line_0 INTO line_0_count
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_0, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 7;
    SELECT line_0 INTO line_0_sum
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_0, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 8;
    SELECT line_0 INTO line_0_ccy
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_0, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 9;
    ELSIF SUBSTR (v_filebuffer, 0, 1) = '9' THEN
    SELECT line_9 INTO line_9_Acc_no
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_9, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 3;
    SELECT line_9 INTO line_9_sum
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_9, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 2;
    ELSIF SUBSTR (v_filebuffer, 0, 1) = '1' THEN
    line_1_flag := line_1_flag+1;
    SELECT line_1 INTO line_1_sum
    FROM (SELECT LTRIM (REGEXP_SUBSTR (v_filebuffer, '[^|]+{1}', 1, LEVEL)) line_1, ROWNUM rn
    FROM DUAL
    CONNECT BY LEVEL <= LENGTH (REGEXP_REPLACE (v_filebuffer, '[^|]*')) + 1)
    WHERE rn = 3;
    Line_1_tot := Line_1_tot + line_1_sum;
    END IF;
    END LOOP;
    DBMS_OUTPUT.put_line (Line_1_tot);
    DBMS_OUTPUT.PUT_LINE (Line_1_flag);
    UTL_FILE.fclose (v_handle);
    END;
    But now how can i do ? Shall i use like this select Statement for all the columns ?

    Sorry for that ..
    As per our requirement ...
    I need to read the flat file and it looks like like this .
    *0|BP-V1|20100928|01|1|2430962.89|9|2430962.89|MUR|20100928120106*
    *9|2430962.89|000111111111|*
    *1|61304.88|000014104113|*
    *1|41961.73|000022096086|*
    *1|38475.65|000023640081|*
    *1|49749.34|000032133154|*
    *1|35572.46|000033093377|*
    *1|246671.01|000042148111|*
    *1|120737.25|000053101979|*
    *1|151898.79|000082139768|*
    *1|84182.34|000082485593|*
    I have to check the file :-
    Validation are 1st line should start from 0 else it should raise an error and insert that error into one table .
    The for 2nd line also same thing ..it should start from 9 else it should raise an error and insert that error into one table .
    Then the 3rd line should start from 1 else it should raise an error and insert that error into one table .
    After that i have to do a validation like i will read the 1st line 2nd column .. It should be like this BP-V1 else raise an error and insert that error to a table . Then i will check the 3rd column which is 20100928 , it should be YYYYMMDD format else same thing ERROR.
    Then like this for all columns i have different validation .......
    Then it will check for the 2nd line 3rd column . this is an account no .1st i will check it should be 12 char else ERROR .Then I will check that what user has imputed in the form.Like for example User putted 111111111 then i will check with this 000111111111 which is there in the 2nd line . I have to add 000 before that Account no which user imputed .
    Then the lines which is starting from 1 , i have to take all the 2nd column for all the lines which is starting from 1 and i have to do a sum . After that i have to compare that sum with the value in the 1st lines ( Starting from 0) 6th column . It should be same else ERROR ...
    Then same way i have to count all the lines which is starting from 1 . Then i have to compare with the 7th column of 1st line . It should be same . Here in this file it should be 9.
    MY CODE IS :-
    Procedure Pay_Simulator(lfile_type varchar2,lac_no varchar2,lcur varchar2,lno_item number,ltotal number,ldate date,lpay_purp varchar2,lfile_name varchar2)
    IS
    v_handle TEXT_IO.file_type;
    v_filebuffer varchar2(500);
    line_0_date VARCHAR2 (10);
    line_0_Purp VARCHAR2 (10);
    line_0_count Number;
    line_0_sum number(12,2);
    line_0_ccy Varchar2(3);
    line_9_sum Number(12,2);
    line_9_Acc_no Varchar2(12);
    Line_1_Sum Number(12,2);
    Line_1_tot Number(15,2) := 0;
    Line_1_flag Number := 0;
    lval number;
    lacno varchar2(16);
    v_file varchar2(20);
    v_path varchar2(50);
    LC$String VARCHAR2(50) ;--:= 'one|two|three|four|five|six|seven' ;
    LC$Token VARCHAR2(100) ;
    i PLS_INTEGER := 2 ;
    lfirst_char number;
    lvalue Varchar2(100) ;
    Begin
    v_file := mcb_simulator_pkg.GET_FILENAME(lfile_name); For the file name
    v_path :=rtrim(regexp_substr( lfile_name , '.*\\' ),'\'); For the Path
    --v_path := SUBSTR (lfile_name,0, INSTR (lfile_name, '\', -1));
    Message(lfile_name);
    v_handle := TEXT_IO.fopen(lfile_name, 'r');
              BEGIN
                        LOOP
                        TEXT_IO.get_line (v_handle, v_filebuffer);
                        lfirst_char := Substr(v_filebuffer,0,1);
                        --Message('First Char '||lfirst_char); 
                                  IF lfirst_char = '0' Then
                                  Loop
                                  LC$Token := mcb_simulator_pkg.Split( v_filebuffer, i , '|') ;
                                  Message('VAL - '||LC$Token);
                                  lvalue := LC$Token;
                                  EXIT WHEN LC$Token IS NULL ;
    i := i + 1 ;
    End Loop;
                                  Else
                                       Insert into MU_SIMULATOR_output_ERR (load_no,ERR_CODE,ERR_DESC) values (9999,'0002','First line should always start with 0');
                                       Forms_DDL('Commit');
                                       raise form_Trigger_failure;
                                  End if ;
                        TEXT_IO.get_line (v_handle, v_filebuffer);
                        lfirst_char := Substr(v_filebuffer,0,1);
                        LC$Token := mcb_simulator_pkg.Split( v_filebuffer, i , '|') ;
                        --Message('Row '||LC$Token);
                             IF lfirst_char = '9' Then
                                  Null;
                             Else
                                  Insert into MU_SIMULATOR_output_ERR (load_no,ERR_CODE,ERR_DESC) values (8888,'0016','Second line should start with 9');
                                  Forms_DDL('Commit');
                                  raise form_Trigger_failure;
                             End IF;
                        LOOP
                        TEXT_IO.get_line (v_handle, v_filebuffer);
                        lfirst_char := Substr(v_filebuffer,0,1);
                        LC$Token := mcb_simulator_pkg.Split( v_filebuffer, i , '|') ;
                        --Message('Row '||LC$Token);
                                  IF lfirst_char = '1' Then
                                  Null;
                                  Else
                                       Insert into MU_SIMULATOR_output_ERR (load_no,ERR_CODE,ERR_DESC) values (7777,'0022','The third line onward should start with 1');
                                       Forms_DDL('Commit');
                                       raise form_Trigger_failure;
                                  End if;
                        END LOOP;
                        --END IF;
                        END LOOP;
              EXCEPTION
                   When No_Data_Found Then
              TEXT_IO.fclose (v_handle);
              END;
    Exception
         When Others Then
         Message('Other error');
    END;
    I am calling the FUNCTION which you gave SPLIT as mcb_simulator_pkg.Split.

  • Ssis - import data from flat file to table (sql server 2012)

    i have create a ssis for importing data from flat file to table in sql server 2012.
    but i got the below error for some column in data flow task.
    error: cannot processed because than one code page (950 and 1252)
    anyone helps~

    Hi,
    The issue occurs because the source flat file uses ANSI/OEM – Tranditional Chinese Big5 encoding. When processing the source file, the flat file connection manager uses code page 950 for the columns. Because SQL Server uses code page to perform conversions
    between non-Unicode data and Unicode data, the data in the code page 950 based input columns cannot be loaded to code page 1252 based destination columns. To resolve the issue, you need to load the data into a SQL Server destination table that includes Unicode
    columns (nchar or nvarchar), and convert the input columns to Unicode columns via Data Conversion or the Advanced Editor for the Flat File Source at the same time.
    Another option that may not be that practical is to create a new database based on the Chinese_Taiwan_Stroke_BIN collation, and load the data to non-Unicode columns directly.
    Reference:
    http://social.technet.microsoft.com/Forums/windows/en-US/f939e3ba-a47e-43b9-88c3-c94bdfb7da58/forum-faq-how-to-fix-the-error-the-column-xx-cannot-be-processed-because-more-than-one-code-page?forum=sqlintegrationservices 
    Regards,
    Mike Yin
    TechNet Community Support

Maybe you are looking for