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.

Wednesday, 21 October 2020

SAP ABAP Create Text File and Read Text File on Application Server

*&---------------------------------------------------------------------*
*& Report ZTEXTFILE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEXTFILE.

TYPES :
  BEGIN OF T_EKKO,
    EBELN TYPE EBELN,
    BUKRS TYPE EKKO-BUKRS,
    BSART TYPE EKKO-BSART,
    AEDAT TYPE EKKO-AEDAT,
    BEDAT TYPE EKKO-BEDAT,
    LIFNR TYPE EKKO-LIFNR,
    WAERS TYPE EKKO-WAERS,
    ZTERM TYPE EKKO-ZTERM,
    WKURS TYPE EKKO-WKURS,
    ERNAM TYPE EKKO-ERNAM,
  END OF T_EKKO.

DATA :
  LT_EKKO   TYPE T_EKKO   OCCURS WITH HEADER LINE,
  LS_EKKO   TYPE T_EKKO,
  TAB       TYPE VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
  FILE      LIKE RLGRAP-FILENAME,
  RESULT    TYPE STRING,
  V_TMP     TYPE STRING,
  LS_STRING TYPE STRING.

FIELD-SYMBOLS <FS> TYPE ANY.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
*PARAMETERS : P_INCHES(10) TYPE C.
SELECTION-SCREEN COMMENT 1(19TEXT-002.
SELECTION-SCREEN POSITION 20.
PARAMETERS P_RAD1 RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(19TEXT-003.
SELECTION-SCREEN POSITION 20.
PARAMETERS P_RAD2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

  IF P_RAD1 'X'.
    PERFORM F_CREATE_TEXT_FILE.
  ELSEIF P_RAD2 'X'..
    PERFORM F_READ_TEXT_FILE.
  ENDIF.

FORM F_CREATE_TEXT_FILE.
  SELECT INTO CORRESPONDING FIELDS OF TABLE LT_EKKO
    FROM EKKO UP TO 10 ROWS.

  FILE '/usr/sap/upload/ekko2.txt'.
  OPEN DATASET FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
  LOOP AT LT_EKKO.
    CLEARRESULT.
    DO.
      ASSIGN COMPONENT SY-INDEX OF
             STRUCTURE LT_EKKO TO <FS>.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      V_TMP <FS>.
      CONCATENATE RESULT V_TMP TAB INTO RESULT.
    ENDDO.

    TRANSFER RESULT TO FILE.
  ENDLOOP.
  CLOSE DATASET FILE.
  MESSAGE 'Text file created' TYPE 'S' DISPLAY LIKE 'S'.
ENDFORM.

FORM F_READ_TEXT_FILE.
  REFRESH LT_EKKO.
  FILE '/usr/sap/upload/ekko2.txt'.
  OPEN DATASET FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
  IF SY-SUBRC NE 0.
  ELSE.
    DO.
      CLEARLS_STRINGLS_EKKO.
      READ DATASET FILE INTO LS_STRING.
      IF SY-SUBRC NE 0.
        EXIT.
      ELSE.
        SPLIT LS_STRING AT TAB INTO LS_EKKO-EBELN
                                    LS_EKKO-BUKRS
                                    LS_EKKO-BSART.
*        MOVE-CORRESPONDING ls_ekko TO WA_RECORD.
        APPEND LS_EKKO TO LT_EKKO[].
      ENDIF.
    ENDDO.
  ENDIF.
  CLOSE DATASET FILE.

  LOOP AT LT_EKKO.
    WRITE:/     SY-VLINE,
           (10LT_EKKO-EBELNSY-VLINE,
           (10LT_EKKO-BUKRSSY-VLINE,
           (10LT_EKKO-BSARTSY-VLINE.
  ENDLOOP.
ENDFORM.


Selection Screen



output read file



ABAP CDS View Part 10 : Authorization & DCL untuk ABAP CDS

Authorization & DCL di ABAP CDS | Panduan Lengkap (PFCG, @AccessControl, DCL) Authorization & DCL untuk ABAP CDS — Pandua...