Code: Alles auswählen.
SELECT a~lifnr a~land1 c~hkont c~belnr c~zuonr c~blart c~bukrs c~monat
c~gjahr c~shkzg c~wrbtr c~buzei
INTO CORRESPONDING FIELDS OF TABLE itab_sumla
FROM ( ( lfa1 AS a
INNER JOIN bsik AS b
ON a~lifnr = b~lifnr )
INNER JOIN bsis AS c
ON b~belnr = c~belnr )
WHERE c~bukrs IN ('1001')
AND c~blart IN ('A1', 'A2', 'A3')
AND c~bschl in ('50', '40')
AND land1 IN so_land
AND c~gjahr IN range
AND c~zuonr IN so_dlkz
AND c~monat IN so_perio.
SELECT a~lifnr a~land1 c~hkont c~belnr c~zuonr c~blart c~bukrs c~monat
c~gjahr c~shkzg c~wrbtr c~buzei
APPENDING CORRESPONDING FIELDS OF TABLE itab_sumla
FROM ( ( lfa1 AS a
INNER JOIN bsak AS b
ON a~lifnr = b~lifnr )
INNER JOIN bsas AS c
ON b~belnr = c~belnr )
WHERE c~bukrs IN ('1001')
AND c~blart IN ('A1', 'A2', 'A3')
and c~bschl in ('50', '40')
AND land1 IN so_land
AND c~gjahr IN range
AND c~zuonr IN so_dlkz
AND c~monat IN so_perio.
Code: Alles auswählen.
WHERE c~bukrs IN ('1001')
Code: Alles auswählen.
WHERE c~bukrs = '1001'
Code: Alles auswählen.
TYPE-POOLS slis.
TABLES: lfa1, bseg, bkpf, bsik, bsak, zdlkz_t, bsis, bsas.
DATA: BEGIN OF itab_sumla OCCURS 10,
lifnr LIKE lfa1-lifnr,
land1 LIKE lfa1-land1,
diekz LIKE bsak-diekz,
belnr LIKE bsak-belnr,
zuonr LIKE bsak-zuonr,
blart LIKE bsak-blart,
bukrs LIKE bsak-bukrs,
monat LIKE bsak-monat,
gjahr LIKE bsak-gjahr,
shkzg LIKE bsak-shkzg,
bschl LIKE bsak-bschl,
dmbtr LIKE bsak-dmbtr,
wrbtr LIKE bsak-wrbtr,
hkont LIKE bsak-hkont,
zdlkz LIKE zdlkz_t-zdlkz,
bezeichnung LIKE zdlkz_t-bezeichnung,
soha TYPE p DECIMALS 2,
soll TYPE p DECIMALS 2,
haben TYPE p DECIMALS 2,
zahler TYPE i,
END OF itab_sumla.
* Zweite interne Tabelle für "READ" - Spalten Vergleich
DATA: BEGIN OF itab_zdlkz_t OCCURS 10,
zdlkz LIKE zdlkz_t-zdlkz,
bezeichnung LIKE zdlkz_t-bezeichnung,
END OF itab_zdlkz_t.
DATA: wa_soha LIKE LINE OF itab_sumla,
wa_zdlkz LIKE LINE OF itab_zdlkz_t.
DATA: my_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
wa_fieldcat LIKE LINE OF my_fieldcat,
repid TYPE sy-repid.
SELECT-OPTIONS: so_land FOR lfa1-land1,
so_perio FOR bkpf-monat.
PARAMETERS pa_gj LIKE bseg-gjahr.
* Wertehilfe für so_dlkz in SE11 definiert mit ZMYSEARCH
SELECT-OPTIONS: so_dlkz FOR zdlkz_t-zdlkz MATCHCODE OBJECT zmysearch.
* damit die Selektion Geschäftsjahr funktioniert, wenn kein Wert
* eingegeben wird
RANGES: range FOR bseg-gjahr.
IF NOT pa_gj IS INITIAL.
range-sign = 'I'.
range-option = 'EQ'.
range-low = pa_gj.
APPEND range.
ELSE.
REFRESH range.
ENDIF.
START-OF-SELECTION.
*##################
* GUI-Titel anlegen
SET TITLEBAR 'T_SOHA'.
SELECT zdlkz bezeichnung
FROM zdlkz_t INTO CORRESPONDING FIELDS OF TABLE itab_zdlkz_t
WHERE zdlkz IN so_dlkz.
IF sy-subrc <> 0.
MESSAGE i003(/sapdmc/lsmw_glo_030).
* Bitte tragen Sie einen gültigen Wert ein.
EXIT.
ENDIF.
* neuer Select auf Hauptbuch!!!
SELECT a~lifnr a~land1 c~hkont c~belnr c~zuonr c~blart c~bukrs c~monat
c~gjahr c~shkzg c~wrbtr c~buzei
INTO CORRESPONDING FIELDS OF TABLE itab_sumla
FROM ( ( lfa1 AS a
INNER JOIN bsik AS b
ON a~lifnr = b~lifnr )
INNER JOIN bsis AS c
ON b~belnr = c~belnr )
WHERE c~bukrs IN ('1001')
AND c~blart IN ('A1', 'A2', 'A3')
AND c~bschl in ('50', '40')
AND land1 IN so_land
AND c~gjahr IN range
AND c~zuonr IN so_dlkz
AND c~monat IN so_perio.
SELECT a~lifnr a~land1 c~hkont c~belnr c~zuonr c~blart c~bukrs c~monat
c~gjahr c~shkzg c~wrbtr c~buzei
APPENDING CORRESPONDING FIELDS OF TABLE itab_sumla
FROM ( ( lfa1 AS a
INNER JOIN bsak AS b
ON a~lifnr = b~lifnr )
INNER JOIN bsas AS c
ON b~belnr = c~belnr )
WHERE c~bukrs IN ('1001')
AND c~blart IN ('A1', 'A2', 'A3')
and c~bschl in ('50', '40')
AND land1 IN so_land
AND c~gjahr IN range
AND c~zuonr IN so_dlkz
AND c~monat IN so_perio.
Code: Alles auswählen.
START-OF-SELECTION.
SELECT aubel vbeln vgbel werks VKBUR VKGRP ERDAT FROM vbrp INTO
(ausg-aubel, ausg-vbeln, ausg-vgbel,
ausg-werks, ausg-VKBUR, ausg-VKGRP,
ausg-ERDAT)
WHERE aubel IN s_aubel
AND vbeln IN s_vbeln
AND vgbel IN s_vgbel
AND werks IN s_werks
AND VKBUR IN s_VKBUR
AND VKGRP IN s_vkgrp.
SELECT vgbel vbeln zzsatznr ernam FROM ZLIANZ INTO (ausg-zvgbel,
ausg-zvbeln, ausg-zzsatznr, ausg-ernam)
WHERE vgbel = ausg-aubel
AND vbeln = ausg-vgbel.
SELECT PS_PSP_PNR FROM VBAP INTO ausg-PSP_PNR
where PS_PSP_PNR in s_PSPPN
AND VBELN = ausg-aubel.
ausg-gv_sum = 0.
SELECT zztypz zzent zzsort FROM zlianzw INTO (ausg-zztypz,
ausg-zzent, ausg-zzsort)
WHERE zzsatznr = ausg-zzsatznr
AND zztypz = 'GV'.
ausg-gv_sum = ausg-gv_sum + ausg-zzent.
ENDSELECT.
ENDSELECT.
APPEND AUSG.
ENDSELECT.
CLEAR AUSG.
ENDSELECT.
DELETE ausg WHERE zzsatznr IS INITIAL.
DELETE ADJACENT DUPLICATES FROM AUSG COMPARING vbeln zvbeln.
SORT AUSG BY aubel ASCENDING vgbel ASCENDING.
PERFORM get_data.
*&--------------------------------------------------------------------*
*& Form get_data
*&--------------------------------------------------------------------*
FORM get_data.
Loop at ausg INTO ausg_wa.
SELECT SINGLE * FROM vbak
WHERE vbeln = ausg_wa-aubel.
If vbak-ZZSUMME <= 0.
CONTINUE.
ENDIF.
If vbak-ZZANZTYP1 = 'A'.
h_diff = vbak-ZZSUMME.
Else.
h_diff = vbak-ZZSUMME / 100 * vbak-NETWR.
Endif.
LOOP at ausg WHERE aubel = ausg_wa-aubel.
ausg-diff = h_diff - ausg-gv_sum.
SELECT SINGLE * from ZLIANZW
where zzsatznr = ausg-zzsatznr
AND zztypz = 'GW'.
ausg-gw_sum = ZLIANZW-zzent.
MODIFY ausg TRANSPORTING gw_sum.
h_diff = ausg-diff.
MODIFY ausg TRANSPORTING diff.
DELETE ADJACENT DUPLICATES FROM AUSG COMPARING vbeln zvbeln.
Endloop.
Endloop.
PERFORM alv_layout.
PERFORM alv_fieldcatalog.
PERFORM do_alv.
ENDFORM. " get_data
Code: Alles auswählen.
LOOP AT ausg INTO ausg_wa.
h_tabix = sy-tabix + 1.
LOOP AT ausg FROM h_tabix WHERE vgbel = ausg_wa-vgbel.
ausg-gv_sum = 0.
MODIFY ausg TRANSPORTING gv_sum.
ENDLOOP.
ENDLOOP.
LOOP AT ausg INTO ausg_wa.
h_tabix = sy-tabix + 1.
LOOP AT ausg FROM h_tabix WHERE vgbel = ausg_wa-vgbel.
ausg-gw_sum = 0.
MODIFY ausg TRANSPORTING gw_sum.
ENDLOOP.
ENDLOOP.