Skip to main content

SAP ABAP - Get All Files From FTP Server

 







ABAP Code

*&---------------------------------------------------------------------*
*& Report YFTP_PUT_FILE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT yftp_get_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,
      tab        TYPE VALUE cl_abap_char_utilities=>horizontal_tab,
*      bTEXT(120) type x,
      bline(120TYPE x.


DATABEGIN OF mtab_data OCCURS 0,
        line(132TYPE c,
      END OF mtab_data.

DATAwa_data LIKE mtab_data.

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 ftp_open CHANGING hdl.
  PERFORM ftp_command USING hdl:
*          'cd' ''    CHANGING mtab_data[],
          'nlist' ''    CHANGING mtab_data[].

  PERFORM extract_text_files.
  PERFORM ftp_close.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

FORM ftp_open CHANGING pv_handl.
  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'.

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

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF NOT pasv IS INITIAL.
    REFRESH result.

    CALL FUNCTION 'FTP_COMMAND'
      EXPORTING
        handle        pv_handl
        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.

ENDFORM.

FORM ftp_command USING
      pv_handl TYPE i
      pv_comnd TYPE char120
      pv_optns TYPE char120
CHANGING pt_data  TYPE table.

  DATA:
        lv_command TYPE char120.
  FREEpt_data.
  CONCATENATE pv_comnd  pv_optns INTO lv_command
  SEPARATED BY space.
  CALL FUNCTION 'FTP_COMMAND'
    EXPORTING
      handle        pv_handl
      command       lv_command
    TABLES
      data          pt_data
    EXCEPTIONS
      tcpip_error   1
      command_error 2
      data_error    3
      OTHERS        4.
  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.                    " ftp_command


FORM ftp_close.
  CALL FUNCTION 'FTP_DISCONNECT'
    EXPORTING
      handle hdl.

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

FORM extract_text_files.

  DATABEGIN OF itab_tmp OCCURS 1,
          line(600)             ,
        END OF itab_tmp       .

  CLEAR fname.
  REFRESH lt_podata.
  WRITE 'All Text File List'.
  LOOP AT mtab_data WHERE line CS '.txt'.
    WRITE/ mtab_data-line.
    fname mtab_data-line.
    FREE itab_tmp.
    CALL FUNCTION 'FTP_SERVER_TO_R3'
      EXPORTING
        handle         hdl
        fname          mtab_data-line "result-LINE+56(44)
*       fname          = '4000000037.txt' "result-LINE+56(44)
        character_mode 'X'
      TABLES
        text           itab_tmp
      EXCEPTIONS
        tcpip_error    1
        command_error  2
        data_error     3
        OTHERS         4.

    IF sy-subrc 0.
      LOOP AT itab_tmp.
        SPLIT itab_tmp-line AT tab
        INTO  ls_podata-ebeln
        ls_podata-ebelp
        ls_podata-matnr
        ls_podata-txz01.

        APPEND ls_podata TO lt_podata.
        CLEAR itab_tmp.
      ENDLOOP.
    ENDIF.

    CLEAR mtab_data.
  ENDLOOP.
  SKIP 1.

  WRITE 'All Text File Content'.
  ULINE.
  WRITE'PO Number'.
  WRITE12  'Item'.
  WRITE18  'Material'.
  WRITE59 'Description'.
  SORT lt_podata BY ebeln ebelp.
  LOOP AT lt_podata INTO ls_podata.
    WRITE/ ls_podata-ebelnls_podata-ebelpls_podata-matnrls_podata-txz01.
    CLEAR ls_podata.
  ENDLOOP.

*  cl_demo_output=>display( lt_podata ).
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...