You are on page 1of 24

Selection 1 ( Tampilan Per GR PO)

Tgl PO [EKKO-BEDAT] No PO [EKPO-EBELN] Line PO [EKPO-EBELP]

01/01/2020 1234 1
01/01/2020 1234 2
01/01/2020 1234 2
01/01/2020 1234 3
01/01/2020 1235 1
01/01/2020 1235 1
Selection 2 ( Tampilan Per Inv PO)
Tgl PO [EKKO-BEDAT] No PO [EKPO-EBELN] Line PO [EKPO-EBELP]

01/01/2020 1234 1
01/01/2020 1234 2
01/01/2020 1234 3
01/01/2020 1234 3
01/01/2020 1235 1

SELECT-OPTIONS: s_bedat
s_ebeln
s_bsart
No GR [MATDOC-MBLNR] [MATDOC-ZEILE]
Relasi :
[MATDOC-EBELN] = [EKPO-EBELN] AND
[MATDOC-EBELP] = [EKPO-EBELP]
Note : jika tombol include reverse 'X'
munculkan yg reverse jg, jika tidak hapus item
tercancel dan yg mengcancel

5001 1
5002 1
5002 2
5003 1
5004 1
5004 2

No GR [MATDOC-MBLNR] [MATDOC-ZEILE]
Relasi :
[MATDOC-EBELN] = [EKPO-EBELN] AND
[MATDOC-EBELP] = [EKPO-EBELP]
Note : jika tombol include reverse 'X'
munculkan yg reverse jg, jika tidak hapus item
tercancel dan yg mengcancel

5001 1
5002 1, 2
5003 1
5003 1
5004 1, 2
No Invoice [RSEG-BELNR] [RSEG-BUZEI]
Relasi :
[MATDOC-MBLNR] = [RSEG-LFBNR] AND
[MATDOC-ZEILE] = [RSEG-LFPOS] AND
[MATDOC-MJAHR] = [RSEG-LFGJA]

9123 1
9123 2
9123 2
9123, 9125 3, 1
9124 1
9124 1

No Invoice [RSEG-BELNR] [RSEG-BUZEI]


Relasi :
[MATDOC-MBLNR] = [RSEG-LFBNR] AND
[MATDOC-ZEILE] = [RSEG-LFPOS] AND
[MATDOC-MJAHR] = [RSEG-LFGJA]

9123 1
9123 2
9123 3
9125 1
9124 1
Qty PO [EKPO-MENGE] Qty GR [MATDOC-MENGE] Qty Invoice [RSEG-MENGE]
Note : jika Qty GR < Qty Inv, tampilkan
Qty GR saja

50 50 50
60 40 60(40)
60 20 60(20)
70 70 70(60+10)
20 15 20(15)
20 5 20(5)

Qty PO [EKPO-MENGE] Qty GR [MATDOC-MENGE] Qty Invoice [RSEG-MENGE]


Note : jika Qty GR > Qty Inv,
tampilkan Qty Inv saja

50 50 50
60 60(40 + 20) 60
70 60 60
70 10 10
20 20(15+5) 20
[RSEG-WRBTR]

1,000,000
1,000,000
1,000,000
1,000,000
1,000,000
1,000,000

[RSEG-WRBTR]

1,000,000
1,000,000
1,000,000
1,000,000
1,000,000
Nilai Invoice ( [MATDOC-MENGE] / [RSEG-MENGE] * [RSEG-WRBTR] )

1,000,000
666,667
333,333
1,000,000
750,000
250,000

Nilai Invoice ( [MATDOC-MENGE] / [RSEG-MENGE] * [RSEG-WRBTR] )

1,000,000
1,000,000
1,000,000
1,000,000
1,000,000
DP
READ TABLE it_dp WITH KEY belnr EQ acdoca-belnr
IF sy-subrc = 0
augbltmp = it_dp-augbl
LOOP AT it_dp WHERE augbl = augbltmp AND blart = 'RE'
inv = inv + it_dp-wsl
ENDLOOP
LOOP AT it_dp WHERE augbl = augbltmp AND blart = 'KA'
dp = dp + it_dp-wsl
ENDLOOP
IF inv > 0
persen = dp / inv * 100
dp_value = invoice * persen / 100
ENDIF

DP
SELECT belnr docln gjahr FROM ACDOCA WHERE AWREF EQ [RSEG-BELNR] AND AWITEM EQ [RSEG-BUZEI]
SELECT SUM( wsl ) AS wsl FROM ACDOCA WHERE REBZG EQ [ACDOCA-BELNR] AND
REBZJ EQ [ACDOCA-GJAHR] AND BUZEI EQ [ACDOCA-DOCLN]
DP = [ ACDOCA-WSL]
Kode Vendor [EKKO-LIFNR]

Selection screen : s_ebeln FOR ekko-ebeln

itab
DATA: BEGIN OF it_show OCCURS 0.
DATA: lifnr LIKE ekko-lifnr,
vendor(80) TYPE c,
ebeln LIKE ekko-ebeln,"No PO
ebelp LIKE ekpo-ebelp,"Line PO
ebeln2 LIKE ekpo-ebeln,"No STO
ebelp2 LIKE ekpo-ebelp,"Line STO
belnr5(100) TYPE c,"No Inv
docln LIKE acdoca-docln,"Line Inv
matnr LIKE ekpo-matnr,"Mat Code
txz01 LIKE ekpo-txz01,"Short Text
buzei LIKE ekbe-buzei,
gjahr LIKE ekbe-gjahr,
charg LIKE ekbe-charg,"Batch awal (PO -> GD / TR)
charg2 LIKE ekbe-charg,"Batch Akhir (STO (TR) -> GD)
menge0 LIKE ekpo-menge,"Qty PO
menge LIKE ekpo-menge,"Qty GR PO
menge_del LIKE ekpo-menge,"Qty Mark Comp
menge3 LIKE ekpo-menge,"Qty GI STO
menge2 LIKE ekpo-menge,"Qty GR STO
menge4 LIKE ekpo-menge,"Qty Inv
meins LIKE ekpo-meins,
belnr LIKE ekbe-belnr,"Doc GR PO
belnr2 LIKE ekbe-belnr,"Doc GR STO
belnr3(100) TYPE c,"Doc Inv
lfbnr LIKE ekbe-lfbnr,
elikz LIKE ekpo-elikz,
xblnr(100) TYPE c,
wrbtr LIKE rseg-wrbtr,"Invoice awal
wrbtr2 LIKE rseg-wrbtr,"Invoice GR/Inv
wrbtr3 LIKE acdoca-wsl,"DP
rwcur LIKE acdoca-rwcur,
waers LIKE rbkp-waers,
budat LIKE ekbe-budat."GR PO Posting Date
DATA: END OF it_show.
Nama Vendor [VENDOR CHAR80]
CONCATENATE name1 name2 FROM lfa1 WHERE lifnr = [EKKO-LIFNR]
No PO [EKBE-EBELN]
Line PO [EKBE-EBELP] No STO Line STO
No Inv [RSEG-BELNR] Material Code [EKKO-MATNR] Short Text [EKKO-TXZ01]
Relasi : lfbnr = [EKBE-BELNR] AND
lfpos = [EKBE-BUZEI] AND
lfgja = [EKBE-GJAHR] AND
ebeln = [EKBE-EBELN] AND
ebelp = [EKBE-EBELP] AND
stblg = ''

EKPO EKPO
it_matdoc.
CLEAR:
wa_matdoc.
it_show-
menge3 =
it_matdoc-menge.
>>”GI STO
it_show-
Batch PO Batch STO Qty PO [EKPO-MENGE]
ebeln2 = it_matdoc- Qty GR PO [EKBE-MENGE]
ebeln.>> No STO
it_show-
ebelp2 = it_matdoc-
ebelp.>> Line STO

SELECT
SINGLE ebeln ebelp
menge vbeln_im
vbelp_im

charg mblnr zeile


mjahr
INTO
CORRESPONDING
FIELDS OF
wa_matdoc
FROM
matdoc
WHERE
vbeln_im EQ
it_matdoc-vbeln_im
AND

vbelp_im EQ
it_matdoc-vbelp_im
AND
bwart
EQ '101' AND

cancelled EQ '' AND


ebeln
NE it_show-ebeln
AND

bstaus_sg = 'A'.
IF sy-subrc
= 0.
it_show-
menge2 =
wa_matdoc-
menge.>> GR STO
it_show-
charg2 =
wa_matdoc-
charg.>> Batch STO
it_show-
belnr2 =
wa_matdoc-
mblnr.>> No
Dokumen GR STO
ELSE.
CLEAR:
it_show-menge2,
it_show-charg2,
it_show-belnr2.
ENDIF.
ENDLOOP.
ENDIF.
Qty Mark Complete Qty GI STO Qty GR STO Qty Invoice [RSEG-MENGE]
IF EKPO-ELIKZ = 'X'
EKPO-MENGE - EKBE-MENGE
ENDIF
Doc GR PO [RSEG-BELNR] Doc GR STO Doc Inv [ACDOCA-BELNR]
Relasi : awref = [RSEG-BELNR] AND
awitem = [RSEG-BUZEI] AND gjahr = [RSEG-GJAHR] AND
rldnr = '0L'
CORRESPONDING
FIELDS OF TABLE
it_acdoca_dp
FROM acdoca
WHERE rldnr
EQ '0L' AND
awref_rev =
'' AND
Reference [BKPF-XBLNR] Nilai Invoice (DPP) DP ( blart EQ
Relasi : belnr = [ACDOCA-BELNR] Qty PO / Qty Inv * [RSEG-WRBTR] 'KA' AND drcrk EQ
'S' OR
blart EQ
'RE' AND drcrk EQ
'H' ) AND
augbl EQ
it_acdoca_tmp-
augbl.
ENDLOOP.
IF
it_acdoca_dp[] IS
NOT INITIAL.
SORT
it_acdoca_dp
ASCENDING BY
belnr blart.
ENDIF.
ENDIF.
________________
________________
________________
_______________
“Hitung DP
IF it_show-
belnr5 IS NOT
INITIAL.>>No
Invoice tidak kosong
CLEAR:
augbltmp, dp, ttl,
persen.
READ
TABLE
it_acdoca_dp WITH
KEY
belnr =
it_show-belnr5.
IF sy-subrc =
0.
augbltmp =
it_acdoca_dp-augbl.
ENDIF.
LOOP AT
it_acdoca_dp
WHERE
augbl EQ augbltmp
AND
blart EQ
'KA'.
dp = dp +
it_acdoca_dp-wsl.
ENDLOOP.
LOOP AT
it_acdoca_dp
WHERE
augbl EQ augbltmp
AND
blart EQ
'RE'.
ttl = ttl +
it_acdoca_dp-wsl.
ENDLOOP.
IF ttl NE 0.
persen =
dp / ttl * 100.
it_show-
rwcur = 'IDR'.
it_show-
wrbtr3 = it_show-
wrbtr2 * persen /
100.
AND
blart EQ
'RE'.
ttl = ttl +
it_acdoca_dp-wsl.
ENDLOOP.
IF ttl NE 0.
persen =
dp / ttl * 100.
it_show-
rwcur = 'IDR'.
it_show-
wrbtr3 = it_show-
wrbtr2 * persen /
100.
ENDIF.
ENDIF.
CORRESPONDING
FIELDS OF TABLE
it_acdoca_dp
FROM acdoca
WHERE rldnr
EQ '0L' AND
awref_rev =
'' AND
Posting Date [EKBE-BUDAT]
( blart EQ
'KA' AND drcrk EQ
'S' OR
blart EQ
'RE' AND drcrk EQ
'H' ) AND
augbl EQ
it_acdoca_tmp-
augbl.
ENDLOOP.
IF
it_acdoca_dp[] IS
NOT INITIAL.
SORT
it_acdoca_dp
ASCENDING BY
belnr blart.
ENDIF.
ENDIF.
________________
________________
________________
_______________
“Hitung DP
IF it_show-
belnr5 IS NOT
INITIAL.>>No
Invoice tidak kosong
CLEAR:
augbltmp, dp, ttl,
persen.
READ
TABLE
it_acdoca_dp WITH
KEY
belnr =
it_show-belnr5.
IF sy-subrc =
0.
augbltmp =
it_acdoca_dp-augbl.
ENDIF.
LOOP AT
it_acdoca_dp
WHERE
augbl EQ augbltmp
AND
blart EQ
'KA'.
dp = dp +
it_acdoca_dp-wsl.
ENDLOOP.
LOOP AT
it_acdoca_dp
WHERE
augbl EQ augbltmp
AND
blart EQ
'RE'.
ttl = ttl +
it_acdoca_dp-wsl.
ENDLOOP.
IF ttl NE 0.
persen =
dp / ttl * 100.
it_show-
rwcur = 'IDR'.
it_show-
wrbtr3 = it_show-
wrbtr2 * persen /
100.
AND
blart EQ
'RE'.
ttl = ttl +
it_acdoca_dp-wsl.
ENDLOOP.
IF ttl NE 0.
persen =
dp / ttl * 100.
it_show-
rwcur = 'IDR'.
it_show-
wrbtr3 = it_show-
wrbtr2 * persen /
100.
ENDIF.
ENDIF.
andre:
Konsep : cek GI material dari STO untuk medapatkan asal PO lalu cek GRnya untuk mendapatkan batch akhir
SELECT ebeln ebelp menge vbeln_im vbelp_im
INTO CORRESPONDING FIELDS OF TABLE it_matdoc
FROM matdoc
WHERE charg EQ it_show-charg AND
bwart EQ '641' AND
cancelled EQ '' AND
ebeln NE it_show-ebeln.
IF sy-subrc = 0.
LOOP AT it_matdoc.
CLEAR: wa_matdoc.
it_show-menge3 = it_matdoc-menge. >>”GI STO
it_show-ebeln2 = it_matdoc-ebeln.>> No STO
it_show-ebelp2 = it_matdoc-ebelp.>> Line STO

SELECT SINGLE ebeln ebelp menge vbeln_im vbelp_im


charg mblnr zeile mjahr
INTO CORRESPONDING FIELDS OF wa_matdoc
FROM matdoc
WHERE vbeln_im EQ it_matdoc-vbeln_im AND
vbelp_im EQ it_matdoc-vbelp_im AND
bwart EQ '101' AND
cancelled EQ '' AND
ebeln NE it_show-ebeln AND
bstaus_sg = 'A'.
IF sy-subrc = 0.
it_show-menge2 = wa_matdoc-menge.>> GR STO
it_show-charg2 = wa_matdoc-charg.>> Batch STO
it_show-belnr2 = wa_matdoc-mblnr.>> No Dokumen GR STO
ELSE.
CLEAR: it_show-menge2, it_show-charg2, it_show-belnr2.
ENDIF.
ENDLOOP.
ENDIF.
andre:
patkan batch akhir Konsep : buat table untuk menampung seluruh data DP, cek dokumen clearing dengan repo

“Buat Table DP
s_belnr = 'ICP'.
s_belnr-low = '917*'.
APPEND s_belnr.
CLEAR s_belnr.

SELECT DISTINCT augbl


INTO CORRESPONDING FIELDS OF TABLE it_acdoca_tmp
FROM acdoca
WHERE rldnr EQ '0L' AND
augbl NE '' AND
awref_rev EQ '' AND
belnr IN s_belnr.
IF sy-subrc = 0.
LOOP AT it_acdoca_tmp.
SELECT DISTINCT belnr wsl drcrk blart
ebeln ebelp augbl
APPENDING CORRESPONDING FIELDS OF TABLE it_acdoca_dp
FROM acdoca
WHERE rldnr EQ '0L' AND
awref_rev = '' AND
( blart EQ 'KA' AND drcrk EQ 'S' OR
blart EQ 'RE' AND drcrk EQ 'H' ) AND
augbl EQ it_acdoca_tmp-augbl.
ENDLOOP.
IF it_acdoca_dp[] IS NOT INITIAL.
SORT it_acdoca_dp ASCENDING BY belnr blart.
ENDIF.
ENDIF.
_______________________________________________________________
“Hitung DP
IF it_show-belnr5 IS NOT INITIAL.>>No Invoice tidak kosong
CLEAR: augbltmp, dp, ttl, persen.
READ TABLE it_acdoca_dp WITH KEY
belnr = it_show-belnr5.
IF sy-subrc = 0.
augbltmp = it_acdoca_dp-augbl.
ENDIF.
LOOP AT it_acdoca_dp
WHERE augbl EQ augbltmp AND
blart EQ 'KA'.
dp = dp + it_acdoca_dp-wsl.
ENDLOOP.
LOOP AT it_acdoca_dp
WHERE augbl EQ augbltmp AND
blart EQ 'RE'.
ttl = ttl + it_acdoca_dp-wsl.
ENDLOOP.
IF ttl NE 0.
persen = dp / ttl * 100.
it_show-rwcur = 'IDR'.
it_show-wrbtr3 = it_show-wrbtr2 * persen / 100.
ENDIF.
ENDIF.
, cek dokumen clearing dengan report jika sama berarti invoice mempunyai DP

__________________

You might also like