Friday, December 29, 2006

PHP - MySQL 5

Saat ini PHP (Pre Hypertext Processor atau Personal Home Page Tool - http://www.php.net/) telah mengeluarkan versi 5, demikian juga dengan MySQL (http://www.mysql.com/), yang merupakan pasangan sejatinya :-), juga telah mengeluarkan versi MySQL terbarunya yaitu versi 5.

Dalam melakukan pemrograman PHP - MySQL, terkadang kita menemui kesulitan saat melakukan koneksi ke MySQL terbaru yaitu versi 5. Koneksi ke MySQL 5 tidak semudah koneksi ke MySQL versi sebelumnya, yang cukup dengan menginstall keduanya, lantas membuat test kode koneksi seperti :



Tetapi jika menggunakan MySQL versi 5 ini, test koneksi seperti diatas tidak akan berjalan mulus, ini disebabkan oleh tipe enkripsi User Database Password dari MySQL 5 yang berbeda dengan MySQL sebelumnya.

Agar test koneksi diatas bisa berjalan baik, terlebih dahulu kita harus mengubah tipe enkripsi User Database Password dari MySQL 5, caranya adalah :
  1. Jika kita menggunakan Microsoft Operating System, maka kita harus masuk ke command prompt, kemudian masuk ke Program Files/MySQL/bin, login kedalam mysql dengan menuliskan command: mysql -u NamaUser -p, kemudian masukan Password MySQL nya, setelah berhasil login ke MySQL, lakukan perintah SQL ini:
    mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newPasswordAnda') WHERE Host = 'some_host' AND User = 'some_user';
    mysql> FLUSH PRIVILEGES;
  2. Jika anda menggunakan Unix Like Operating System, carilah dimana directory tempat MySQL berada, kemudian lakukan hal yang sama.

Thursday, December 28, 2006

Pemrograman PHP - Oracle

PHP (http://www.php.net/) sering didefinisikan sebagai Pre Hypertext Processor atau Personal Home Page Tool, adalah sebuah bahasa pemrograman web yang sangat familiar untuk para web master. Begitu banyak situs yang menggunakan PHP sebagai bahasa pemrograman utamanya.

PHP kerap identik dengan MySQL (http://www.mysql.com/), yaitu sebuah database server yang opensource. Namun tidak jarang juga MySQL ternyata kurang mampu meng-handle data yang sedemikian besar & kompleks, oleh sebab itulah PHP memiliki kemampuan untuk berkomnikasi dengan database lain selain MySQL, diantaranya Oracle (http://www.oracle.com/).

Oracle adalah sebuah set aplikasi database yang mampu meng-handle data yang sangat besar & kompleks, kabarnya microsoft.com pun menggunakan oracle sebagai sistem manajemen data mereka (tidak ada referensi mengenai hal ini, hanya sebuah gosip!).

Berikut adalah beberapa tahapan yang harus dilakukan jika ingin meng-komunikasikan PHP & Oracle:
  1. Tentunya kita harus meng-install Oracle Server.
  2. Di Laptop atau PC yang akan dipakai untuk developement, install Oracle Client.
  3. Install Apache Webserver
  4. Install & Configure PHP
Kemudian buat sebuah code untuk melakukan test koneksi dengan PHP ke Oracle:



Eksekusi program ini, jika koneksi telah berhasil, ya.. tinggal coding saja :-) tetapi jika result nya error, hal yang bisa kita lakukan adalah:
  1. Pastikan anda meng-install Oracle Client di tempat anda mengeksekusi code tadi.
  2. Cek Apache error log, kemudian cek apache conf & php ini anda, pastikan tidak ada error di error log apache, lakukan eliminasi/perbaikan untuk semua error yang anda dapati di Apache error log
  3. Lebih lengkapnya, baca manual di http://www.php.net/
Sample Query data ke Oracle dengan PHP:



Untuk interface oracle nya, kita bisa menggunakan software yang seperti TOAD (http://www.toadsoft.com/) atau sejenisnya.

ABAP Programming

Advanced Business Application Programming atau lebih dikenal dengan ABAP, sebuah bahasa pemprograman 4GL yang dikembangan di SAP (terutama SAP/R3), SAP adalah sebuah paket software untuk ERP (Enterprise Resources Planning), sebuah integrated sistem yang dipakai oleh banyak perusahaan besar.

Modul yang terdapat di ABAP cukup lengkap, tetapi pemakaiannya sangat bergantung pada aplikasi SAP itu sendiri, apakah SAP itu menerapkan sistem FI (Financial Module), CO (Controlling Module), MM (Material Management Module), HR (Human Resources), etc.

ABAP bisa dipakai disana untuk membuat berbagai aplikasi reporting, otomatisasi, bahkan modifikasi module - module SAP itu sendiri...ini semua bisa dilakukan ABAP.

SAP mempunyai sistem database sendiri, yang dikenal dengan istilah SAPDB yang mempunyai SQL tersendiri yang disebut Open SQL, dan ABAP bisa berkomunikasi dengan baik dengan sistem penyimpanan data ala SAP ini.

Dalam perkembangannya SAP tidak menghilangkan ABAP, walaupun menambahkan bahasa yang cukup familiar untuk digunakan para programmer yaitu Java Server Pages.

Lebih lengkap mengenai ABAP bisa dilihat di http://www.erpgenie.com/abap/ atau http://sapgenie.blogspot.com/

Sample Code :
Header Program :

*$--------------------------------------------------------*$
*$ PROGRAM NAME : CONTOH001 *$
*$ PROGRAMMER : Aku *$
*$ DATE : 28.12.2007 *$
*$ OBJECTIVE : Maintenance Order Settlement Report *$
*$-------------------------------------------------------*$

Format report yang diinginkan:

REPORT CONTOH001 NO STANDARD PAGE
HEADINGLINE-SIZE 125.

Deklarasi Tabel (Dari SAPDB) Yang akan Digunakan:

TABLES:
AUFK, COBRB, CAUFVD, COSP, COSS, AFKO, COEP, AFIH.

Deklarasi Variabel :

DATA:
TGL(2) TYPE N, BLN(2) TYPE N, THN(4) TYPE N, DAY LIKE SY-DATUM, TGLJDL(36).

Deklarasi Internal Table:

DATA:
BEGIN OF INTAB OCCURS 0,
INGPR LIKE AFIH-INGPR,
ERNAM LIKE AUFK-ERNAM,
AUFNR LIKE AUFK-AUFNR,
OBJNR LIKE AUFK-OBJNR,
AUART LIKE AUFK-AUART,
ERDAT LIKE AUFK-ERDAT,
END OF INTAB.

Main Code:
Selection Screen:

SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_AUART FOR CAUFVD-AUART OBLIGATORY,
S_INGPR FOR CAUFVD-INGPR OBLIGATORY,
S_ERNAM FOR CAUFVD-ERNAM,
S_ERDAT FOR CAUFVD-ERDAT OBLIGATORY NO-EXTENSION,
S_AUFNR FOR CAUFVD-AUFNR MATCHCODE OBJECT ORDP.
SELECTION-SCREEN SKIP 1.
PARAMETERS: P_DIFFER AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLOCK1.

Main Code:
Initialization:

INITIALIZATION.
MOVE 'ZM01' TO S_AUART-LOW.
APPEND S_AUART.
MOVE SY-DATUM+4(2) TO BLN.
MOVE SY-DATUM+6(2) TO TGL.
MOVE SY-DATUM+0(4) TO THN.

Main Code:
Query & Reporting Activity:

START-OF-SELECTION.
SELECT * FROM AFIH
WHERE INGPR IN S_INGPR
AND AUFNR IN S_AUFNR.
INTAB-INGPR = AFIH-INGPR.
INTAB-AUFNR = AFIH-AUFNR.
APPEND INTAB.
CLEAR INTAB.
ENDSELECT.

LOOP AT INTAB.
SELECT BDMNG ENMNG POSTP BDTER FROM RESB
INTO (INTAB2-MENGE, INTAB2-DENMNG, INTAB2-POSTP, INTAB2-TMP_THN)
WHERE AUFNR = INTAB-AUFNR.
INTAB2-AUFNR = INTAB-AUFNR.
INTAB2-INGPR = INTAB-INGPR.
INTAB2-GJAHR = INTAB2-TMP_THN+0(4).
APPEND INTAB2.
ENDSELECT.
ENDLOOP.

Main Code:
Print Result:

PERFORM TITLE.
PERFORM HEADER.
SORT ALL BY INGPR ERNAM AUFNR.

FORM HEADER.
ULINE AT /0(125).
FORMAT COLOR COL_HEADING ON.
WRITE:
/1 SY-VLINE,
2 Text-004,
5 SY-VLINE,
7 TEXT-005,
18 SY-VLINE,
21 TEXT-006,
31 SY-VLINE,
34 TEXT-007,
42 SY-VLINE,
43 TEXT-012,
46 SY-VLINE,
54 TEXT-008,
68 SY-VLINE,
74 TEXT-009,
90 SY-VLINE,
94 TEXT-010,
106 SY-VLINE,
111 TEXT-011,
125 SY-VLINE.

FORMAT COLOR COL_HEADING OFF.
ULINE AT /0(125).
ENDFORM.

FORM TITLE.
CONCATENATE S_ERDAT-LOW+6(2) '.' S_ERDAT-LOW+4(2) INTO TGLJDL.
CONCATENATE TGLJDL '.' S_ERDAT-LOW+0(4) INTO TGLJDL.
CONCATENATE 'CREATED ON :' TGLJDL INTO TGLJDL SEPARATED BY SPACE.
IF NOT S_ERDAT-HIGH IS INITIAL.
CONCATENATE TGLJDL '-' S_ERDAT-HIGH+6(2) INTO TGLJDL SEPARATED BYSPACE.
CONCATENATE TGLJDL '.' S_ERDAT-HIGH+4(2) INTO TGLJDL.
CONCATENATE TGLJDL '.' S_ERDAT-HIGH+0(4) INTO TGLJDL.ENDIF.
WRITE: /(125) 'REPORT SETTLEMENT MAINTENANCE ORDER' CENTERED.
SKIP 1.WRITE: /(125) TGLJDL CENTERED.
SKIP 2.
ENDFORM.

*Catatan: Code ini tidak lengkap & tidak akan berjalan jika di eksekusi, hanya sebagai sample saja.