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~buzei = '2'
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~buzei = '2'
AND land1 IN so_land
AND c~gjahr IN range
AND c~zuonr IN so_dlkz
AND c~monat IN so_perio.