Detect "end of file" while send n numbers files over a socket?

Hi!
I�m trying to find a way to detect "end of file" while send n numbers files over a socket.
What i'm looking for is how to detect on the client side when the file i�m sending is downloaded.
Here is the example i�m working on.
Client side.
import java.io.*;
import java.net.*;
public class fileTransfer {
    private InputStream fromServer;
    public fileTransfer(String fileName) throws FileNotFoundException, IOException {
        Socket socket = new Socket("localhost", 2006);
        fromServer = socket.getInputStream();
        for(int i=0; i<10; i++)
            receive(new File(i+fileName));
    private void receive(File uploadedFile) throws FileNotFoundException, IOException {
        uploadedFile.createNewFile();
        FileOutputStream toFile = new FileOutputStream(uploadedFile);
        byte[] buffer = new byte[4096];
        int bytesRead = 0;
        while ((bytesRead = fromServer.read(buffer)) != -1) {
            toFile.write(buffer, 0, bytesRead);
    public static void main(String[] args) {
        try {
            new fileTransfer("testa.jpg");
        } catch (Exception ex) {ex.printStackTrace();}
}Server side.
import java.io.*;
import java.net.*;
public class fileTransferSend {
    Socket serv = null;
    OutputStream toClient;
    public fileTransferSend(String fileName) throws FileNotFoundException, IOException {
        StartServer();       
        for(int i =0; i<10; i++)
            send(new File(fileName));
    public void StartServer() throws IOException {
        ServerSocket ssocket = new ServerSocket(2006);
        System.out.println("Waiting for incomming");
        serv = ssocket.accept();
        System.out.println("incomming");
        toClient = serv.getOutputStream();
    private void send(File f) throws FileNotFoundException, IOException {
        if(f.exists() && f.canRead()) {
            FileInputStream fromFile = new FileInputStream(f);
            try {
                byte[] buffer = new byte[4096]; // 4K
                int bytesRead = 0;
                System.out.println("sending: "+f.getName());
                while ((bytesRead = fromFile.read(buffer)) != -1) {
                    toClient.flush();
                    toClient.write(buffer, 0, bytesRead);
            finally {
                //toClient.close();
                fromFile.close();
        } else {
            System.out.println("no files");
    public static void main(String[] args) {
        try {
            new fileTransferSend("test.jpg");
        }catch(Exception e) {e.printStackTrace();}
I know that the client never reads -1 becuase i doesn�t close the stream.
Is there anyway to tell the client that the file is downloaded?

A common (and easy) TCP/IP protocol is to send length, followed by data.
Because TCP/IP is a stream-oriented protocol, a receiver can never absolutely determine where the first packet ends and the second packet begins. So it is common to send the length of the packet, followed by the packet itself.
In your case, you could send length of file, followed by file data. It should be fairly easy to obtain file length and send that as a 32-bit (or 64-bit value). Here is an idea (not code) for the receiver:
receive (4) // where 4 = number bytes to receive
unsigned length = convert 4 bytes to unsigned integer
while (length != 0)
n = receive ( length ) // where n = number bytes actually received, and length = number bytes desired
Or, you can use the concept of an "Escape" character in the stream. Arbitrarily choose an ESCAPE character of 0x1B (although it could be any 8-bit value). When the receiver detects an ESCAPE char, the next character can be either control or data. So for end of file you might send 0x1B 0x00. If the byte to be sent is 0x1B, then send 0x1B 0x1B. The receiver would look something like this:
b = read one byte from stream
if (b == 0x1B)
b = read one byte from stream
if (b == 0x00) then end of file
else place b in buffer
else
place b in buffer
Later.

Similar Messages

  • TS3899 I am unable to attach any files while sending mail

    Please tell me how to attach any word or pic or audio file while sending a mail using MAIL in my iphone 4.

    Step 1
    Remove "MacKeeper" as follows. First, back up all data.
    "MacKeeper" has only one useful feature: it deletes itself.
    Note: These instructions apply to the version of the product that I downloaded and tested in early 2012. I can't be sure that they apply to other versions.
    IMPORTANT: "MacKeeper" has what the developer calls an “encryption” feature. In my tests, I didn't try to verify what this feature really does. If you used it to “encrypt” any of your files, “decrypt” them before you uninstall, or (preferably) restore the files from backups made before they were “encrypted.” As the developer is not trustworthy, you should assume that the "decrypted" files are corrupt unless proven otherwise.
    In the Finder, select
    Go ▹ Applications
    from the menu bar, or press the key combination shift-command-A. The "MacKeeper" application is in the folder that opens. Quit it if it's running, then drag it to the Trash. You'll be prompted for your login password. Click the Uninstall MacKeeper button in the dialog that appears. All the functional components of the software will be deleted. Reboot.
    ☞ Quit MacKeeper before dragging it to the Trash.
    ☞ Don't empty the Trash. Let MacKeeper delete itself.
    ☞ Don't try to drag the MacKeeper Dock icon to the Trash.
    Step 2
    From the Safari menu bar, select
    Safari ▹ Preferences... ▹ Privacy ▹ Remove All Website Data
    and confirm. Test.

  • How can I send a Numbers file to someone who has excel

    how can I send a Numbers file to someone who has excel

    Save/Export the file as an excel worksheet.

  • My mac is converting Word and Excel files into Pages and Numbers files when I click to open them (or download and open them) from an email. I do I get this to stop? It's really aggravating.

    My mac is converting Word and Excel files into Pages and Numbers files when I click to open them from an email. Downloading them and opening them doesn't help. How do I make this stop? I don't use iLife and don't want to; my clients are using Office and it's easier for me, except when I have to copy and paste everything they send me from an iLife file back to Word and Excel. Help!!! It's like Apple has become Microsoft, forcing us to use their apps.

    Do you have Word & Excel installed, if yes, navigate in the finder to an example of each, right click and select 'Get Info' scroll down to 'Open With' and select the appropriate program, check the box that says 'Change All'

  • Appending multiple *.csv files while retaining the original file name in the first column

    Hi guys it's been awhile.
    I'm trying to append multiple *.csv files while retaining the original file name in the first column, the actual data set is about 40 files.
    file a.csv contains:
    1, line one in a.csv
    2, line two in a.csv
    file b.csv contains:
    1, line one in b.csv
    2, line two in b.csv
    output.csv result is this:
    I would like this:
    a.csv, 1, line one in a.csv
    a.csv, 2, line two in a.csv
    b.csv, 1, line one in b.csv
    b.csv, 2, line two in b.csv
    Any suggestions to speed up my hobbling attempts would be aprieciated
    Thanks,
    -SS
    Solved!
    Go to Solution.

    What you could do is given in the attachment.
    Started with 2 files :
    a.csv
    copy of a.csv
    Both with data :
    1;1.123
    2;2.234
    3;3.345
    Output :
    a.csv;1;1.123
    a.csv;2;2.234
    a.csv;3;3.345
    Copy of a.csv;1;1.123
    Copy of a.csv;2;2.234
    Copy of a.csv;3;3.345
    If you have more questions, just shoot
    Kind regards,
    - Bjorn -
    Have fun using LabVIEW... and if you like my answer, please pay me back in Kudo's
    LabVIEW 5.1 - LabVIEW 2012
    Attachments:
    AppendingCSV.JPG ‏73 KB

  • "Empty document Found" error while sending a text file

    Below is the error I'm getting while I'm trying to send a txt file using a fiel adapter.
    Channel FILE_TLE_Sender_SalesOrder_CC: Converted complete file content to XML format.
    Channel FILE_TLE_Sender_SalesOrder_CC: Empty document found - proceed without sending message.
    File "/data/TLE/XS1/inbound/850/Test_SalesOrder_3064_12-15-10.txt" deleted after processing.
    On the Communication Channel this is what I have:
    Recordset Name: DOCUMENT_ROOT
    Recordset Structure: DOC_HEADER,1,PO_HEADER,1,TAX,,FREIGHT,,SPECIAL_SHIP,,DOCUMENT_NOTE,,SHIP_TO_ADDRESS,,PRODUCT,,LINE_SHIP,,LINE_ITEM_NOTE,,ASSOC_LINE,,ORDER_MEMO,,DOC_TRAILER,1
    Key Field Name: keyfield
    DOC_HEADER.fieldNames    Value: keyfield,Source_System,Source_SUB_System,Source_Doc_Type,Source_Doc_Gen_Date,Source_Doc_Gen_Time,Source_Company,Source_Division,Source_Party_ID,Source_Ship_Location,Source_Sell_Location,Event_Name,Application_Program_File,Application_Program_Name,Destination_System,Destination_SUB_System,Destination_DOC_Type,Destination_Company,Destination_Division,Destination_Party_ID,Destination_Ship_Location,Destination_Sell_Location,Interchange_Control_Number,Group_Control_Number,Document_Control_Number,Date_Translated,Time_Translated,Primary_Key
    DOC_HEADER.fieldFixedLengths  Value: 30,30,30,30,10,4,30,15,30,20,20,8,30,30,30,30,30,30,15,30,20,20,10,10,10,10,4,30
    DOC_HEADER.keyFieldValue        Value: DOC_HEADER
    DOC_HEADER.lastFieldsOptional       Value: YES
    DOC_HEADER.endSeparator           Value: 'nl'
    Then I have same pattern for PO_HEADER, TAX and so on....
    Can someone tell me why this error is happening?  I'm using the same exact parameters in another XI environment and there's no error there.

    > Channel FILE_TLE_Sender_SalesOrder_CC: Empty document found - proceed without sending message.
    > Can someone tell me why this error is happening? 
    Maybe your source file is empty?
    This is exact what the error message says.

  • Error opening the PDF file while sending the PDF as an attachment

    Hi All,
      I am sending a PDF as an attachment in the mail. I am using the code pasted on 'Jul 28, 2006 8:59 AM' subject OTF Format of Purchase Order in email unreadable.
      My problem is when I open the attachment in SOST or in the mail, I get the error message "Adobe could not open *.PDF because it is either not a supported file type or because the file type has been corrupted."
      Please let me know if anybody has faced such an issue.
    The code is found below.
    FORM MAIL_OBJECT                                              *
          This routine receives OTF data. OTF data is converted to PDF
          format and send to the Partner's email address
    FORM mail_object TABLES otf_data STRUCTURE itcoo .
      DATA: pdf_size TYPE i,                             " PDF Size
            pdf_itab_size TYPE i,                        " Attachment size
            mailtxt_size TYPE i,                         " Text in mail size
            l_vbeln LIKE vbdka-vbeln.                    " Order Doc
      DATA:
      it_mailtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,    " Mail Text
      it_pdf TYPE TABLE OF tline WITH HEADER LINE,           " OTF output
      it_mailpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE, " Dist details
      it_mailhead LIKE solisti1   OCCURS  1 WITH HEADER LINE," Header data
      it_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,   " Rec List
      it_pdfdata LIKE solix OCCURS 0 WITH HEADER LINE.  " Attachment data
      DATA: it_doc_att LIKE sodocchgi1.                 " Attri of new doc
      DATA: BEGIN OF it_pdfout OCCURS 0,                " PDF in 255 length
               tline TYPE char255,
            END OF it_pdfout.
    Sales doc and Customer
      DATA: BEGIN OF i_vbeln OCCURS 0,
              vbeln LIKE vbpa-vbeln,       " Sales Document
              adrnr LIKE vbpa-adrnr,       " Customer
            END   OF i_vbeln.
    Sender Address no and SMTP address
      DATA: BEGIN OF i_addrs OCCURS 0,
              addrnumber LIKE adr6-smtp_addr,
              smtp_addr  LIKE adr6-smtp_addr,
            END   OF i_addrs.
    Convert OTF to PDF
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format       = 'PDF'
        IMPORTING
          bin_filesize = pdf_size
        TABLES
          otf          = otf_data
          lines        = it_pdf.
    Make each line 255 characters
      CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
        TABLES
          content_in  = it_pdf
          content_out = it_pdfout.
    Create the PDF File
      CLEAR it_pdfdata.
      REFRESH it_pdfdata.
    it_pdfdata[] = it_pdfout[].
      LOOP AT it_pdfout.
        MOVE it_pdfout-tline TO it_pdfdata-line.
        APPEND it_pdfdata.
        CLEAR it_pdfdata.
      ENDLOOP.
      DESCRIBE TABLE it_pdfdata LINES pdf_itab_size.
    Text in the mail.
      it_mailtxt-line  = 'ORDER ACKNOWLEDGEMENT'.
      APPEND it_mailtxt.
      it_mailtxt-line  = ' This is a test mail,  Line Number--1'.
      APPEND it_mailtxt.
      it_mailtxt-line = ' This is a test mail,  Line Number--2' &
                        ' This is a test mail,  Line Number--2'.
      APPEND it_mailtxt.
      it_mailtxt-line = ' This is a test mail,  Line Number--3' &
                        ' This is a test mail,  Line Number--3' &
                        ' This is a test mail,  Line Number--3'.
      APPEND it_mailtxt.
      it_mailtxt-line = ' This is a test mail,  Line Number--4' &
                        ' This is a test mail,  Line Number--4' &
                        ' This is a test mail,  Line Number--4' &
                        ' This is a test mail,  Line Number--4'.
      APPEND it_mailtxt.
      it_mailtxt-line = ' This is a test mail,  Line Number--5' &
                        ' This is a test mail,  Line Number--5' &
                        ' This is a test mail,  Line Number--5' &
                        ' This is a test mail,  Line Number--5' &
                        ' This is a test mail,  Line Number--5'.
      APPEND it_mailtxt.
      DESCRIBE TABLE it_mailtxt LINES mailtxt_size.
    Document Number for Output
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          input  = vbdka-vbeln
        IMPORTING
          output = l_vbeln.
    Attributes of new doc
      CONCATENATE 'Order' space 'Acknowledgement' space l_vbeln
                  INTO it_doc_att-obj_descr SEPARATED BY space.
      it_doc_att-sensitivty = 'F'.
      it_doc_att-doc_size   = mailtxt_size * 255.
    Create Pack to text in mail body.
      CLEAR it_mailpack-transf_bin.
      it_mailpack-head_start   = 1.
      it_mailpack-head_num     = 0.
      it_mailpack-body_start   = 1.
      it_mailpack-body_num     = mailtxt_size.
      it_mailpack-doc_type     = 'RAW'.
      APPEND it_mailpack.
    Create Pack to PDF Attach.
      it_mailpack-transf_bin   = 'X'.
      it_mailpack-head_start   = 1.
      it_mailpack-head_num     = 1.
      it_mailpack-body_start   = 1.
      it_mailpack-body_num     = pdf_itab_size.
      it_mailpack-doc_type     = 'PDF'.
      CONCATENATE l_vbeln '.pdf' INTO it_mailpack-obj_name.
      CONCATENATE 'Order Ack' space l_vbeln INTO it_mailpack-obj_descr.
      it_mailpack-doc_size     = pdf_itab_size * 255.
      APPEND it_mailpack.
    *Get email addresses based on Sales document.
      SELECT vbeln adrnr INTO TABLE i_vbeln
             FROM vbpa
             WHERE vbeln = vbdka-vbeln AND
                   parvw = nast-parvw.
      IF NOT i_vbeln[] IS INITIAL.
        SELECT addrnumber smtp_addr INTO TABLE i_addrs
               FROM adr6 FOR ALL ENTRIES IN i_vbeln
               WHERE addrnumber =  i_vbeln-adrnr AND
                     smtp_addr NE space.
      ENDIF.
      IF i_addrs[] IS NOT INITIAL.
        LOOP AT i_addrs.
          it_reclist-receiver   = i_addrs-smtp_addr.
          it_reclist-express    = 'X'.
          it_reclist-rec_type   = 'U'.
          it_reclist-notif_del  = 'X'. " request delivery notification
          it_reclist-notif_ndel = 'X'. " request not delivered notification
          APPEND it_reclist.
          CLEAR: i_addrs.
        ENDLOOP.
      ENDIF.
    Call FM to send email
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data              = it_doc_att
          put_in_outbox              = 'X'
        TABLES
          packing_list               = it_mailpack
          object_header              = it_mailhead
          contents_txt               = it_mailtxt
          contents_hex               = it_pdfdata
          receivers                  = it_reclist
        EXCEPTIONS
          too_many_receivers         = 1
          document_not_sent          = 2
          document_type_not_exist    = 3
          operation_no_authorizationfiltered= 4
          parameter_error            = 5
          x_error                    = 6
          enqueue_error              = 7
          OTHERS                     = 8.
      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.                    " MAIL_OBJECT
    Regards,
    Ajith

    Hi Ajith !!
    Please refer this link :
    http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm
    Here a spool output is converted into PDF and then sent as an email.
    I think instead of using FM to change the width, try the logic mentioned in the link.
    Also instead of FM CONVERT_TO_OTF use :
    1. CONVERT_OTFSPOOLJOB_2_PDF
    I hope this should solve the problem.
    I had referred the same program from the link and it worked absolutely fine. Also check the adobe acrobat version, i guess old version doesnt support SAP, though not very sure.
    Best regards,
    Prashant

  • Problem while sending IDOC to File Senario

    Hi Experts
        I am having problem while sending the Idoc from SAP R/3 to File
       I have done all the setting in SAP as well in XI but while pushing IDOC
       I am getting error in the transaction sm58 in SAP R/3
      " <b>The service for the client 300(My SAP R/3 client) is not present in Integration
      Directory</b>"
    I can any one explain me what to done on this....all the connections are fine
    Waiting for Response
    Adv points and thanx
    Rakesh

    Reason and Prerequisites
    You send IDocs from system ABC to the exchange infrastructure (XI) of system XIZ, and error messages are issued in system ABC (Transaction SM58) for the IDOC_INBOUND_ASYNCHRONOUS function module.
    This note proposes solutions for the following error messages:
    a) No service for system SAPABC client 123 in the integration directory
    b) Transaction IDX1: Port SAPABC, client 123, RFC destination
    c) ::000
    d) NO_EXEC_PERMISSION: "USER" "Business_System"
    e) IDoc adapter inbound: Error error ...
    Solution
    a) Error message: No service for system SAPABC client 123 in the integration directory
    Solution:
    You send IDocs from system ABC to XI. In the control record of the IDoc, the SNDPOR field contains the value "SAPABC". The client of the sending system is determined by the MANDT field of the control record. The system ID and client are then used to determine a service without party of the type (business-system/business-service):
    Business system
    Activities in the System Landscape Directory (SLD)(Create technical system):
    Create a technical system for system ABC in the SLD, and create the client for this. Do not forget to assign an "ALE logical system" (for example, "ABCCLNT123") to this technical system.
    SLD (Business system):
    You can now explicitly assign a business system to this client.
    For more details, refer to the SLD documentation.
    Activities in system ABC (self-registration in the SLD):
    Alternatively, you can register the system in the SLD in system ABC with Transaction RZ70. You will find detailed information about the SLD registration of systems on the SAP Service Marketplace for the "Exchange Infrastructure" in the document "Exchange_Installation_Guide.pdf".
    In system ABC, you can check your configuration with TransactionSLDCHECK.
    Activities in Integration Directory (import business system from SLD):
    You will find the business systems under Services Without Party in the Integration Services. In the Service menu, you will find the system identifiers, the client, and the corresponding ALE logical system under "Objects"->"Adapter-specific identifiers".
    Use the Import/Update button to copy the data from the SLD, to create business systems, or to update their identifiers.
    Business service
    Activities in the Integration Builder directory:
    You want to create a service without party that is not part of your system infrastructure and is therefore not maintained in the SLD.
    In the Integration Builder directory, you will find the "Business-Services" under Services Without Party. In the Service menu, you will find the system identifiers, the client, and the corresponding ALE logical system under "Objects"->"Adapter-specific identifiers".
    Activate the change list in Integration Directory.
    In system ABC, you can restart the incorrect entry from Transaction SM58 .
    b) Error message: Transaction IDX1: Port SAPABC, client 123, RFC destination
    Solution:
    The Integration Server tries to load the IDoc metadata from the sending system. The IDoc schemas from the Integration Repository cannot be used because they are release-dependent.
    The sending system is determined by the value of the "SNDPOR" field from the IDoc control record (for example, "SAPABC").
    Activities in the central XI system:
    In Transaction IDX1, you can assign an RFC destination to the sending system (for example, "SAPABC"). This must be created beforehand in Transaction SM59.
    Note that the IDoc metadata is cross-client data. In Transaction IDX1, only one entry must be maintained for each system. Only the lowest client is used by the runtime for Idoc metadata retrieval with RFC.
    Ensure that only SAPABC and not "SAPABC_123" is entered in the port name.
    c) Error message: "::000"
    Solution:
    This error occurs if the central XI system tries to load the IDoc metadata from the sending system by RFC.
    There may be several different reasons for the failure of the metadata import, the error is not transferred in full by tRFC completely, and this results in the error message above.
    User cannot log onto sending system
    User/password/client is not correct or the user is logged due to too many failed logons.
    Activities in sender system ABC:
    Transaction SM21 contains entries for failed logons.
    Activities in the central XI system:
    Determine the sending port from the IDoc control record of the IDoc. If the ID of the sending system has the value "ABC", the value of the sending port is "SAPABC". You will find the RFC destination used for the "SAPABC" sending port with the lowest client in Transaction IDX1. In Transaction SM59, you will find the RFC destination containing the maintained logon data .
    User does not have the required authorizations
    Activities in the sender system ABC:
    In Transaction SM21, you will find entries relating to authorization problems and more exact details.
    Contact your system administrator and, if necessary, assign the user the required roles in user administration.
    IDoctyp/Cimtyp cannot be loaded
    Activities in sender system ABC:
    In the sender system, you can check your IDoc types in Transaction WE30 (IDoc type editor)  Take note not only of the errors, but also of the warnings.
    The most common errors are:
    - IDoc type or segments not released
    - Segments that no longer exist are listed in the IDoc type
    - Data elements that do not exist in the DDIC are assigned to fields
      in the segment.
    Contact your system administrator and correct these errors in the IDoc type.
    d) Error message: NO_EXEC_PERMISSION: "User" "Business_System"
    Solution:
    You created a list of users in the directory who are authorized to use the "Business_System". The user in the error message is not on the list.
    Alternatively, the same error is used if you have created a sender agreement with a channel of the IDoc type for the "Business_System" and the interface used. The user in the error message is not contained in the list of all authorized users defined there.
    e) Error message: IDoc adapter inbound: Error error
    Solution:
    You send IDocs to the central XI system, where they are received by the IDoc adapter. The IDocs are converted into IDoc XML, and a corresponding XI message is generated and transferred to the XI Runtime Engine. The Engine tries to read its own business system from the "Exchange Profile". If the Exchange Profile is currently unavailable, the message is not processed and it is returned to the sending system with an error message.
    Regard's
    Prabhakar.....

  • How is it possible, that a pdf file turns into a psd file while sending with mail

    I have send a pdf file as attachment with mail. the file shows correctly as pdf file. but when the file arrived at the addressed location it turned into a psd file. in addition it seems there is a problem sending png and ai files. once those files have arrived through mail I am getting the feedback, that the files are are not scalable, they are fuzzy or completely messed up.
    has anyone an idea, where the problem comes from?
    thanks for response
    angelika

    Hello,
    toddisalive wrote:
    Additionally, I have found an AppleWorks file that could be the script, but it is ZERO bytes in size, and Pages won't even open it, saying that it is not a valid AppleWorks file.
    if the size of this file is really ZERO bytes, either the original file contained an empty data fork and a resource fork which was stored elsewhere (*) or the file is too damaged to retrieve anything. Moreover, as AppleWorks never generates file with empty data fork, at least to my knowledge, ....
    Concerning the Movie Magic ScreenWriter files, the application seems to exist for Yosemite http://www.write-bros.com/movie-magic-screenwriter.html ( but it seems "expensive"  and I do not know if it accepts to import old files )....
    (*) maybe in .TOTO or __MACOSX/.TOTO if the filename is TOTO

  • File Adapter - Reading 2 files from sender and one file to receiver

    All - I am looking for a best solution for reading two files from sender and generating one file to the receiver.
    Here is the scenario
    Sender file s - A is a master file. B is a detail file; B will have a one to many records for each record of File A.. that is the relation ship between 2 files..  I am looking for a better solution to
    Example
    Input:
    File A will have a record like "summary1 ABC 1234"
    File B will have a record like "Detailfor Summary1 CDF 8679"
    Output:
    File C shall have a record "consolidatedofSummary&Detail ABC 1234 8679"
    1) read records of master row and detail row from these 2 files
    2) do the mapping to the receiver output format which it is creating for records with some harcoded values and based on the values from master and detail rows of sender file
    if I can accomblish reading sender files and do the mapping to the receiver , assume that mapping to the receiver format would not be cumbersome.
    please help me...
    Thanks

    Hi Gopal,
    Ur approach to the interface is perfect.... Go ahead.
    For selecting multiple files in source use Advanced Selection for files.. and specify the directory paths and also the file name shema...
    This will fetch the 2 files into the integration engine... then u map the 2 source files to one target file(2:1 mapping).
    Specify accordingly the receiver side FCC and test it end to end...
    If u face any prblm post here... some1 will help u out..
    Babu

  • Title from previous Numbers file printing on new Numbers file

    I have a Numbers 3.2 file that was originally created by duplicating another Numbers file in a previous version of Numbers. When I print this newer file, the title of the other file prints above each table in the file, though this title does not show above each table while I’m working on it, and I can’t find a way to get access to the title. Adding a “Table Name” does not change this situation.
    Any ideas how I can get access to this title? Thanks!
    And why can’t I upload images to illustrate the problem? I’ve tried both jpg and pdf - the “insert image” button remains grayed out after I select the file to upload.

    Hi prismalight,
    Wayne Contello has written a User Tip on how to post a screen shot.
    https://discussions.apple.com/docs/DOC-6591
    If 'Insert Image' is greyed out, Close the Insert Box (red cross on the top right) click on the camera icon again. Camera icon sometimes needs a wake-up call, but works the second time.
    Remove any personal details before taking the screen shot.
    Regards,
    Ian.

  • XI File Adapter sending/receiving zip files

    Can the XI File Adapter create a zip file to send outbound from XI and/or can it also translate a zip file inbound into XI?

    Hi Kirk.
    What you can do is use the OS command option on the adapter in order to unzip the file after the File\FTP adapter completes its file transfer to the specified path.One of my colleagues used a freeware zip app. that excepts an os command actions.
    I know it works for file receiver but not sure about the sender. check SAP Note 801926 for more sender adapter parameters.
    Regards
    Nimrod Gisis

  • Issue while sending a zipped file from ABAP to JAVA layer

    Hi All,
    I have a requirement wherein i have to zip a xml file in abap, convert it to base64 encoded string and send it to JAVA layer.
    I'm using the class CL_ABAP_ZIP for zipping the xml string and FM "SCMS_BASE64_ENCODE_STR" to convert the zipped data to base64 encoded string.
    But on the JAVA layer we get an exception while unzipping this data.
    Has anybody come across a similar situtation.
    Please help.
    Regards,
    Ankit Agrawal

    Example
    REPORT  Z_PAP_UP_ZIP_DL.
    DATA: L_ZIPPER TYPE REF TO cl_abap_zip.
    DATA: FILEX type XSTRING.
    DATA: FILENAME type string.
    DATA: PATH type string.
    DATA: zip type xstring.
    DATA: FILE_N_TAB type FILETABLE.
    DATA: FULL_PATH type string.
    DATA: FILE_LENGTH type i.
    DATA: FILE_TAB type w3mimetabtype.
    DATA: WA_INT type int4.
    DATA: PATH_TABLE TYPE TABLE of char1024.
    "    Load the file
    "Which file to upload
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
      CHANGING
        FILE_TABLE              = FILE_N_TAB
        RC                      = WA_INT
    "load the (first) file from the frontend the user has selected.
    LOOP at FILE_N_TAB into FULL_PATH.
    "get the file
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
         EXPORTING
           FILENAME                = FULL_PATH
           FILETYPE                = 'BIN'
        IMPORTING
          FILELENGTH              = FILE_LENGTH
        CHANGING
          DATA_TAB                = file_tab.
        exit.
    endloop.
    "create xstring from table
    CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
      EXPORTING
        INPUT_LENGTH       = FILE_LENGTH
      IMPORTING
        BUFFER             = FILEX
      TABLES
        BINARY_TAB         = file_tab
    "get the name of the file. we take entry after the last '\' ...windows.
    SPLIT FULL_PATH AT '\' INTO TABLE PATH_TABLE.
    DESCRIBE TABLE PATH_TABLE LINES WA_INT.
    READ TABLE PATH_TABLE INTO FILENAME INDEX WA_INT.

  • Attaching File While Sending Mail

    Dear All,
                I want to send mail through sap for that i have used function module 'SO_NEW_DOCUMENT_SEND_API1'. Can anybode tell me how can i attach file in this mail.
    Regards,
    Mayank

    hi check this..
    REPORT  ZMAIL.
    TABLES: ekko.
    PARAMETERS: p_email   TYPE somlreci1-receiver .(give email here)
    TYPES: BEGIN OF t_ekpo,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
    END OF t_ekpo.
    DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
          wa_ekpo TYPE t_ekpo.
    TYPES: BEGIN OF t_charekpo,
      ebeln(10) TYPE c,
      ebelp(5)  TYPE c,
      aedat(8)  TYPE c,
      matnr(18) TYPE c,
    END OF t_charekpo.
    DATA: wa_charekpo TYPE t_charekpo.
    DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data LIKE sodocchgi1,
            gd_error    TYPE sy-subrc,
            gd_reciever TYPE sy-subrc.
    *START_OF_SELECTION
    START-OF-SELECTION.
      Retrieve sample data from table ekpo
      PERFORM data_retrieval.
      Populate table with detaisl to be entered into .xls file
      PERFORM build_xls_data_table.
    *END-OF-SELECTION
    END-OF-SELECTION.
    Populate message body text
      perform populate_email_message_body.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_message
                                          it_attach
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'XLS'
                                          'filename'
                                 changing gd_error
                                          gd_reciever.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
      PERFORM initiate_mail_execute_program.
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp aedat matnr
       UP TO 10 ROWS
        FROM ekpo
        INTO TABLE it_ekpo.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  BUILD_XLS_DATA_TABLE
          Build data table for .xls document
    FORM build_xls_data_table.
      data: ld_store(50) type c.  "Leading zeros
      CONSTANTS: con_cret(5) TYPE c VALUE '0D',  "OK for non Unicode
                 con_tab(5) TYPE c VALUE '09'.   "OK for non Unicode
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    *class cl_abap_char_utilities definition load.
    *constants:
       con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
       con_cret type c value cl_abap_char_utilities=>CR_LF.
      CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR' INTO it_attach SEPARATED BY con_tab.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      LOOP AT it_ekpo INTO wa_charekpo.
    *Modification to retain leading zeros
      inserts code for excell REPLACE command into ld_store
      =REPLACE("00100",1,5,"00100")
        concatenate '=REPLACE("' wa_charekpo-ebelp '",1,5,"'
                                 wa_charekpo-ebelp '")' into ld_store .
      concatenate ld_store into .xls file instead of actual value(ebelp)
        CONCATENATE wa_charekpo-ebeln ld_store  wa_charekpo-aedat wa_charekpo-matnr  INTO it_attach SEPARATED BY con_tab.
        CONCATENATE con_cret it_attach  INTO it_attach.
        APPEND  it_attach.
      ENDLOOP.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables pit_message
                                              pit_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = pit_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    form populate_email_message_body.
      REFRESH it_message.
      it_message = 'Please find attached a list test ekpo records'.
      APPEND it_message.
    endform.                    " POPULATE_EMAIL_MESSAGE_BODY
    regards,
    venkat

  • Need to insert 'end of line' while writing to a file

    I am writing strings to a file using FileWriter, but have a problem writing each string on a new line.
    Here is a sample of my Code
    FileWriter MyFileWriter = new FileWriter(ToFile);
    while (NotDone){
    MyFileWriter.write(MyListModel.getElementAt(OrderListIndex) +"\n");
    OrderFileWriter.close();
    As the result, in my new file all strings appear on the same line with a weird character at the end representing new line.
    Any suggestions on how to write each string on a new line?
                   

    I am sorry.. what i gave was not the line seperator charecter....
    You can use either
    String sep=System.getProperty("line.separator");
    MyFileWriter.write(MyListModel.getElementAt(OrderListIndex) +sep);or use a PrintWriter
    PrintWriter MyFileWriter = new PrintWriter(new BufferedWriter(new FileWriter(ToFile)));
    //FileWriter MyFileWriter = new FileWriter(ToFile);
    while (NotDone){
    MyFileWriter.write(MyListModel.getElementAt(OrderListIndex));
    MyFileWriter.newLine()
    }Hope it helped

Maybe you are looking for