Skip to main content

SAP ABAP - Put File to FTP Server

Maintain SAPFTP_SERVERS (SM30)




Test Program :











ABAP Code

*&---------------------------------------------------------------------*
*& Report YFTP_PUT_FILE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT yftp_put_file.

TYPES :
  BEGIN OF ty_podata,
    ebeln   TYPE ebeln,
    spr1(1TYPE c"cl_abap_char_utilities=>horizontal_tab,
    ebelp   TYPE ebelp,
    spr2(1TYPE c,
    matnr   TYPE matnr,
    spr3(1TYPE c,
    txz01   TYPE ekpo-txz01,
  END OF ty_podata.

TYPESBEGIN OF text,
         line(120TYPE c,
       END OF text.

DATA :
  lt_podata TYPE TABLE OF ty_podata,
  ls_podata TYPE ty_podata,
  result    TYPE TABLE OF text WITH HEADER LINE.

DATAkey        TYPE VALUE 26101957,
      hdl        TYPE i,
      slen       TYPE i,
      x          TYPE i,
      docid      LIKE sysuuid-c,
      fname      TYPE char30,
      cmd(120),
      error,
*      bTEXT(120) type x,
      bline(120TYPE x.

PARAMETERSuser(30TYPE LOWER CASE,
            pwd(30)  TYPE LOWER CASE,
            host(64TYPE LOWER CASE,
            pasv.
SELECTION-SCREEN SKIP 1.
PARAMETERS:
  p_ebeln TYPE ebeln,
  dest    TYPE rfcdes-rfcdest DEFAULT 'SAPFTPA'.


AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF screen-name 'PWD'.
      screen-invisible '1'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION.
  PERFORM get_data.
  PERFORM put_text_file.

FORM get_data.
  REFRESH lt_podata.
  SELECT ebeln ebelp matnr txz01 FROM ekpo INTO CORRESPONDING FIELDS OF TABLE lt_podata WHERE ebeln p_ebeln.
  LOOP AT lt_podata INTO ls_podata.
    ls_podata-spr1 ls_podata-spr2 ls_podata-spr3 cl_abap_char_utilities=>horizontal_tab.

    MODIFY lt_podata FROM ls_podata
      TRANSPORTING spr1 spr2 spr3
        WHERE ebeln ls_podata-ebeln AND ebelp ls_podata-ebelp.
    CLEAR ls_podata.
  ENDLOOP.
ENDFORM.

FORM put_text_file.
  IF lt_podata IS NOT INITIAL.

    slen strlenpwd ).

    CALL FUNCTION 'HTTP_SCRAMBLE'
      EXPORTING
        source      pwd
        sourcelen   slen
        key         key
      IMPORTING
        destination pwd.

    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        text 'Connect to FTP Server'.

    CALL FUNCTION 'FTP_CONNECT'
      EXPORTING
        user            user
        password        pwd
        host            host
        rfc_destination dest
      IMPORTING
        handle          hdl.

    IF NOT pasv IS INITIAL.
      REFRESH result.

      CALL FUNCTION 'FTP_COMMAND'
        EXPORTING
          handle        hdl
          command       'set passive on'
        TABLES
          data          result
        EXCEPTIONS
          tcpip_error   1
          command_error 2
          data_error    3.

      IF sy-subrc EQ 0.
        WRITE'Set passive mode'.
        SKIP 1.
      ENDIF.

    ENDIF.

    CLEAR fname.
    CONCATENATE p_ebeln '.txt' INTO fname.
    CALL FUNCTION 'FTP_R3_TO_CLIENT'
      EXPORTING
        fname           fname
        rfc_destination dest
*       blob_length     = slen
        character_mode  'X'
      TABLES
*       blob            = bindata.
        text            lt_podata.

    CONCATENATE 'put' fname INTO cmd SEPARATED BY ' '.
    REFRESH result.

    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        text cmd.

    CALL FUNCTION 'FTP_COMMAND'
      EXPORTING
        handle        hdl
        command       cmd
      TABLES
        data          result
      EXCEPTIONS
        tcpip_error   1
        command_error 2
        data_error    3.

    IF sy-subrc NE 0error 1EXITENDIF.

    LOOP AT result.
      WRITE/ result-line.
    ENDLOOP.
    SKIP 1.

* disconnect

    CALL FUNCTION 'FTP_DISCONNECT'
      EXPORTING
        handle hdl.

    CALL FUNCTION 'RFC_CONNECTION_CLOSE'
      EXPORTING
        destination dest
      EXCEPTIONS
        OTHERS      1.
  ENDIF.
ENDFORM.


Comments

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

Pada postingan kali ini saya akan sharing cara membuat CRUD dengan php menggunakan konsep MVC, ok langsung saja buka code editor (saya menggunakan sublime text) dan buat folder baru dengan nama phpmvc didalam folder htdocs kalian dan tambah folder seperti berikut :  Setelah itu kita siapkan database di mysql, buat database dengan nama phpmvc dan tablenya seperti gambar berikut : tambahkan file config.php didalam folder app/config : <?php define('BASEURL', 'http://localhost:8181/phpmvc/public'); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'phpmvc'); kemudian tambahkan 3 file controller didalam folder app/controllers, yaitu Home, About, dan Mahasiswa : Home.php <?php class Home extends Controller { public function index() { $data['nama'] = $this->model('User_model')->getUser()...

Cara Sederhana Multi Insert Data Dengan PHP - MySQL

Pada postingan kali ini saya akan share cara melakukan insert lebih dari satu data dengan menggunaka PHP- Jquery dan MySQL. Pertama buat database di MySQL dan table, disini saya membuat database dengan nama db_latihan dan table dengan nama t_barang dengan struktur table seperti berikut : Setelah membuat database dan table selanjutnya membuat project PHP, project PHP nya saya buat dengan nama multi-insert, lalu didalam folder ini saya membuat dua file yaitu index.php dan insert.php . Source code index.php seperti berikut : <! doctype   html > < html   lang = "en" >    < head >      <!-- Required meta tags -->      < meta   charset = "utf-8" >      < meta   name = "viewport"   content = "width=device-width, initial-scale=1" >      <!-- Bootstrap CSS -->      < link ...

IT Asset Management Dengan PHP MySQL

Pada postingan kali saya akan share sebuah aplikasi IT Asset management yang fungsinya untuk memonitoring semua Asset khusus IT, contohnya : Laptop/komputer , Printer, Router, Hardisk, dll. Dalam aplkasi ini kita bisa mengetahui Asset IT posisinya dimana dan digunakan oleh siapa. untuk data-data yang dibutuhkan antara lain : 1. data kategori asset dalam menu ini kita bisa meng-input jenis2 kategory asset : tambah kategori asset : 2. data department 3. data karyawan 4. data department per karyawan 5. data asset location  6. data satuan asset dan untuk transaksi yang ada dalam aplikasi ini adalah,  1. create asset, pada menu create asset ini kita akan mengalokasikan sebuah asset ke karyawan/personnel tampilannya seperti berikut: setelah klik tombol save akan muncul seperti dibawah : untuk melihat detail asset yang sudah dibuat tadi, kita bisa pilih...