Aggregate Query, dan Penggunaan Function pada SAP ABAP

2014 January 22 at 9:15 am Leave a comment

Setelah sekian lama browsing-browsing dari berbagai sumber, akhirnya ketemu juga cara untuk membuat query Aggregate “Sum, Count,….”dan sekaligus penggunaan function dalam suatu query. Ini hasil Report yang diinginkan dalam bentuk summary
Image
Aggregate Query pada pemograman diluar ABAP merupakan hal yang mudah-mudah saja, tapi di SAP ABAP mesti muter-muter dulu cari referensi bagi “newbie” seperti saya, karena jika hanya ngandelin query standard SAP tidak akan bisa.
Trik-nya adalah kita mesti menggunakan yang namanya Native Query “bahasa query bawaan database yang dipakai, misalnya saya pakai database DB2”.


Disini saya coba buat contoh report untuk menghitung berapa banyak, dan berapa Actual Cost tiap bulan dalam kurun tertentu per kategori Maintenance Order pada module SAP-PM.
Tantangannya adalah:

1. Pengkategorian Maintenance Order kedalam Kategori:

  • “PRV”, Preventive (Di system sudah sama)
  • “PRD”, Predictive(Di system sudah sama)
  • “REC”, Reactive(Di system banyak typenya, selain PRV dan PRD)

Saya mengunakan “Maintenance Activity Type(MAT)” dari Maintenance Order, tetapi dengan sedikit trik

(case
when af.ilart <> ‘PRV’ AND af.ilart <> ‘PRD’ THEN ‘REC’ *artinya  selain PRV dan PRD -> REC
else  af.ilart *artinya PRV dan PRD tetap
end)

2. Function mencari bulan untuk suatu date.

Di SAP tanggal disimpan dengan format “YYYYMMDD”, maka untuk mendapatkan bulan kita menggunakan function SUBSTR(aufk.erdat,5,2)

3. Mendapatkan Actual Cost

Maintenance order untuk actual cost dismpan di dalam table “PMCO”, dengan filter

af.aufnr = right(co.objnr,12) AND co.WRTTP = 4

Dibawah ini Program lengkapnya:

Program ini dibuat mengesampingkan kontroversi pendapat mengenai performance

*&———————————————————————*
*& Report  ZBBTEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*REPORT  zbbtest.

data: BEGIN OF wa,
iwerk TYPE afih-iwerk, “Planning Plant
ingpr TYPE afih-ingpr, “PLANNER GROUP
ilart TYPE afih-ilart, “MAT
mnt(4), “Month
jml(4) TYPE p,
acto(8) type p decimals 2,
END OF wa.

WRITE: / ‘PLP  Mnt  MAT PG  Num Ord      Tot Act Cost’. “Ini untuk mencetak Judul Kolom

EXEC SQL PERFORMING loop_output.
SELECT af.iwerk, af.ingpr,
(case
when af.ilart <> ‘PRV’ AND af.ilart <> ‘PRD’ THEN ‘REC’
else  af.ilart
end) as ilart
, SUBSTR(au.erdat,5,2) as mnt, COUNT(distinct au.aufnr) AS jml,
sum(co.wrt00+co.wrt01+co.wrt02+co.wrt03+co.wrt04+co.wrt05+co.wrt06+co.wrt07+co.wrt08+co.wrt09+co.wrt10+co.wrt11+co.wrt12+co.wrt13+co.wrt14+co.wrt15+co.wrt16) as acto
INTO   :wa
FROM   afih as af
INNER JOIN aufk as au ON af.aufnr = au.aufnr
LEFT JOIN pmco as co ON af.aufnr = right(co.objnr,12) AND co.WRTTP = 4
WHERE af.iwerk = 1001
*  AND af.aufnr = ‘000001213289’
AND au.erdat BETWEEN ‘20130101’ and ‘20130330’
GROUP BY af.iwerk, af.ingpr,
*  af.ilart
(case
when af.ilart <> ‘PRV’ AND af.ilart <> ‘PRD’ THEN ‘REC’
else  af.ilart
end)
, SUBSTR(au.erdat,5,2)
ORDER BY af.iwerk, SUBSTR(au.erdat,5,2)
*  , af.ilart
, af.ingpr
ENDEXEC.

*&———————————————————————*
*&      Form  loop_output
*&———————————————————————*
*       Untuk melooping data wa
*———————————————————————-*

FORM loop_output.
WRITE: / wa-iwerk, wa-mnt, wa-ilart, wa-ingpr, wa-jml, wa-acto.
ENDFORM.                    “loop_output

Entry filed under: ABAP, SAP, SAP-PM. Tags: .

Langkah-langkah Merubah direktori datadir MYSQL Apa Istilah Collation Dalam Database?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Categories


%d bloggers like this: