Thursday, December 28, 2006

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.

1 comment:

SHARE Info .... said...

thx info..
thx for your post..

http://career.gunadarma.ac.id