Monday, 18 January 2021

SAP ABAP - Download CDS View


*&---------------------------------------------------------------------*

*& Report Z_DOWNLOAD_CDS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_download_cds.

TYPESBEGIN OF ty_ddddlsrc,
         ddlname TYPE ddddlsrc-ddlname,
         source  TYPE ddddlsrc-source,
       END OF ty_ddddlsrc,

       BEGIN OF ty_dd,
         source TYPE ddddlsrc-source,
       END OF ty_dd.

DATAit_ddddlsrc TYPE STANDARD TABLE OF ty_ddddlsrc,
      it_dd       TYPE STANDARD TABLE OF ty_dd,
      wa          TYPE ty_ddddlsrc,
      wa_dd       TYPE ty_dd.


DATAgv_filename TYPE string,
      gv_filetype TYPE char10.
*&---------------------------------------------------------------------*
""""Selection Screen
*&---------------------------------------------------------------------*

PARAMETERS :
  p_dev    TYPE tadir-devclass,
  filepath LIKE rlgrap-filename MEMORY ID mfolder.

DATA src TYPE ddddlsrc,
       dir TYPE tadir.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR filepath.
  DATAobjFile TYPE REF TO cl_gui_frontend_services.
  DATApickedFolder TYPE string.
  DATAinitialFolder TYPE string.

  IF sy-batch IS INITIAL.
    CREATE OBJECT objFile.

    IF NOT filepath IS INITIAL.
      initialFolder filepath.
    ELSE.
      objFile->get_temp_directoryCHANGING temp_dir initialFolder
                                   EXCEPTIONS cntl_error 1
                                             error_no_gui 2
                                             not_supported_by_gui ).
    ENDIF.

    objFile->directory_browseEXPORTING initial_folder initialFolder
                               CHANGING selected_folder pickedFolder
                               EXCEPTIONS cntl_error 1
                                          error_no_gui 2
                                          not_supported_by_gui ).

    IF sy-subrc 0.
      filepath pickedFolder.
    ELSE.
      WRITE'An error has occured picking a folder'.
    ENDIF.
  ENDIF.

*&---------------------------------------------------------------------*
  """"Start of selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.

  SELECT  d~ddlname
          d~source
          FROM tadir AS JOIN  ddddlsrc AS d
          ON   t~obj_name d~ddlname
          INTO TABLE it_ddddlsrc
          WHERE t~pgmid 'R3TR'
          AND   t~object 'DDLS'
          AND   t~devclass p_dev.

  IF sy-subrc 0.
    WRITE ' File downloaded successfully'.
  ENDIF.

*&---------------------------------------------------------------------*
  """"End of selection
*&---------------------------------------------------------------------*
END-OF-SELECTION.

  LOOP AT it_ddddlsrc INTO wa.
    CONCATENATE filepath '\' wa-ddlname '.txt' INTO gv_filename.
    wa_dd-source wa-source.
    APPEND wa_dd TO it_dd.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              gv_filename
        filetype              'ASC'
        write_field_separator 'X'
      TABLES
        data_tab              it_dd.
    CLEAR gv_filename.
    CLEAR it_dd.
  ENDLOOP.

Wednesday, 16 December 2020

SAP ABAP Move File On Application Server

 REPORT zmove_file.


DATA lv_fname TYPE string,
       lv_line  TYPE string.
DATA lv_fname1 TYPE string.

lv_fname  '/usr/sap/to_be_processed/file01.txt'"Source File
lv_fname1 '/usr/sap/processed/file01.txt'.  "Destination File

OPEN DATASET lv_fname FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc 0.
  OPEN DATASET lv_fname1 FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
  IF sy-subrc 0.
    DO.
      READ DATASET lv_fname INTO lv_line.
      IF sy-subrc 0.
        TRANSFER lv_line TO lv_fname1.
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
    WRITE 'Berhasil'.
  ELSE.
    WRITE 'File tidak bisa dibuka'.
  ENDIF.
  CLOSE DATASET lv_fname1.
  CLOSE DATASET lv_fname.
  DELETE DATASET lv_fname.
ENDIF.



Monday, 16 November 2020

Multi Language Web Application With Ajax - PHP - MySQL

 


Postingan kali ini saya akan share cara sederhana untuk membuat fitur multi-language dengan menggunakan Ajax-PHP-MySQL, Ok Pertama kita buat sebuah table mapping element-element di setiap page, desain tablenya seperti berikut :



pada table t_element diatas akan digunakan untuk menyimpan element-element yang ada di setiap page/halaman website kita, untuk contoh datanya seperti berikut :



Struktur Project Web Application-nya seperti berikut :




Selanjutnya pada project web-nya buat layout seperti berikut :

path : app/views/home/index.php

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title><?= $data['title']; ?></title>
    <link href="<?= BASEURL; ?>/plugins/bootstrap/css/bootstrap.css" rel="stylesheet">
</head>

<body class="">
    <div class="col-sm-4 col-sm-offset-4" style="margin-top:50px;">
        <div class="form-group">
            <label for="nama" id="lblnama">Nama</label>
            <input type="text" name="nama" class="form-control">
        </div>
        <div class="form-group">
            <label for="alamat" id="lblalamat">Alamat</label>
            <input type="text" name="alamat" class="form-control">
        </div>
        <div class="form-group">
            <label for="umur" id="lblumur">Umur</label>
            <input type="number" name="umur" class="form-control">
        </div>

        <div>
            <button type="button" id="btn-id">Indonesia</button>
            <button type="button" id="btn-en">English</button>
            <button type="button" id="btn-ch">Mandarin</button>
            <button type="button" id="btn-ab">Arabic</button>
        </div>
    </div>

    <script src="<?= BASEURL; ?>/plugins/jquery/jquery.min.js"></script>
    <script src="<?= BASEURL; ?>/plugins/bootstrap/js/bootstrap.js"></script>

    <script>
        var base_url = window.location.origin+'/multi-lang';
        $(function(){

            $('#btn-id').on('click'function(){
                changelanguage('home','id');
            });

            $('#btn-en').on('click'function(){
                changelanguage('home','en');
            });

            $('#btn-ch').on('click'function(){
                changelanguage('home','ch');
            });

            $('#btn-ab').on('click'function(){
                changelanguage('home','ab');
            });

            changelanguage('home''id')
            function changelanguage(pagelang){
                $.ajax({
                    url: base_url+'/home/changelanguage/'+page+'/'+lang,
                    type: 'GET',
                    dataType: 'json',
                    cache:false,
                    success: function(result){
                        console.log(result)
                        var component = '';
                        for(var i = 0i < result.lengthi++){
                            component = result[i].elementId;
                            $('#'+component).html(result[i].value);
                        }
                    }
                });
            }
        })
    </script>
</body>
</html>

 


Lalu pada controller Home.php :

<?php

class Home extends Controller {

    public function index()
    {
        $data['title'] = 'Ajax | PHP | MySQL - Multi Language';
        $this->view('home/index'$data);
    }

    public function changelanguage($page, $lang){
        $data = $this->model('Home_model')->changelanguage($page$lang);
        echo json_encode($data);
    }
    
}


Lalu di model Home_model.php

<?php

class Home_model{

    private $db;
    private $table = '';

    public function __construct()
    {
        $this->db = new Database;
    }

    public function changelanguage($page, $lang){
        $this->db->query("SELECT * FROM t_element WHERE page = '$pageand language = '$lang'");
        return $this->db->resultSet();
    }
}


Config.php

<?php

define('BASEURL''http://localhost:8181/multi-lang');

define('DB_HOST''localhost');
define('DB_USER''root');
define('DB_PASS''');
define('DB_NAME''latihan');

pada file config.php ini untuk BASEURL bisa di sesuaikan dengan settingan masing2, karena saya menggunakan port 8181 sehingga BASEURL nya seperti itu.


untuk demonya bisa dilihat DISINI

Full source code bisa di download DISINI

Sekian sharing kali ini semoga bermanfaat Terimakasih.

Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...