2008 Apr 11 5:54 AM
Hi to all,
i have modifed a standard program RFKUML00.in that program 3 satructures r there.i have modified those structures also what we want fields.But now i didnt get the data what i added in that structures.We want the data in the PROFIT CENTER wise what we r giving in the selection screen.we want document number,amount for that document.Please give the idea.
Hi to all,
i have modifed a standard program RFKUML00.in that program 3 satructures r there.i have modified those structures also what we want fields.But now i didnt get the data what i added in that structures.We want the data in the PROFIT CENTER wise what we r giving in the selection screen.we want document number,amount for that document.Please give the idea.
2008 Apr 11 6:00 AM
Hi Geetha,
Check whether you are passing the values in the internal table for the newly added fields in the structure.
May be have a break point before the ALV display and check the internal table values that are getting passed to the ALV.
Thanks,
Arun
2008 Apr 11 6:23 AM
2008 Apr 11 6:28 AM
Then for sure you are not passing values.
You have added some new fields for the display right?
Please pass the values for the fields.
To check that you have passing values correctly
make a break point in the program before ALV display.
Check the internal table that contains the value.
Check whether values are getting populated for the newly added fields of the table.
Thanks,
Arun
2008 Apr 11 8:36 AM
Hi,
Sorry to distrub u,
report Z_FI_RP_VENDOR_BALANCE message-id fr
no standard page heading
line-size 132.
*------ Standard-Rahmentexte für Selektionsbild -
-
INCLUDE rfdbrmac.
*----
*
TABELLEN *
*----
*
TABLES: bhdgd,
bsak,
bsec,
bseg,
bsega,
bsik,
lfa1,
lfb1,
lfc1,
rfpdo,
rfpdo1,
rfpdo2,
rfsdo,
t001,
t005t,
t009.
Changes for ALV Display
TYPE-POOLS: slis.
TABLES: sscrfields.
DATA: gv_repid LIKE sy-repid VALUE sy-repid,
gs_variant TYPE disvariant. "Variant structure
DATA gt_top_of_page TYPE slis_t_listheader.
CONSTANTS: gc_structure1 LIKE cdshw-tabname
VALUE 'zst_FOAP_S_RFKUML00_LIST1',
gc_structure2 LIKE cdshw-tabname
VALUE 'zst_FOAP_S_RFKUML00_LIST2',
gc_formname_top_of_page1 TYPE slis_alv_event-form
VALUE 'TOP_OF_PAGE1',
gc_formname_top_of_page2 TYPE slis_alv_event-form
VALUE 'TOP_OF_PAGE2',
gc_formname_end_of_list TYPE slis_alv_event-form
VALUE 'END_OF_LIST',
gc_formname_top_of_page3 TYPE slis_alv_event-form
VALUE 'TOP_OF_PAGE3',
gc_formname_end_of_list1 TYPE slis_alv_event-form
VALUE 'END_OF_LIST1',
gc_formname_pf_status_set TYPE slis_alv_event-form
VALUE 'PF_STATUS_SET',
gc_handle1 TYPE slis_handl VALUE 'HAN1', "Handle for List1
gc_handle2 TYPE slis_handl VALUE 'HAN2', " Handle for List1
gc_offset TYPE dd03p-outputlen VALUE '10'.
*----
*
VARIABLEN *
*----
*
DATA: bukzaehler TYPE i, "Anzahl Bukr pro Währung im Kred
cpdumsatz LIKE lfc1-um01u,
ph_line(255) TYPE c,
poper LIKE t009b-poper, "Für Fkt. FIRST_DAY_IN_PERIOD_GET
satzart(1) TYPE c, "1= Normale Extrakt,2=CPD-Extrakt
skbez(132) TYPE c, "X = Ausgabefeld für Sako-Bez.
umstz_akont LIKE lfc1-um01u, "Umsatz pro Abstimmkonto
umstz_bukrs LIKE lfc1-um01u, "Umsatz pro Buchungskreis
umstz_land1 LIKE lfc1-um01u, "Umsatz pro Land
umstz_lifnr LIKE lfc1-um01u, "Umsatz pro Kreditor (KonzVers.)
umstz_waers LIKE lfc1-um01u, "Umsatz pro WAERS im Kreditor
umstz_max LIKE lfc1-um01u
VALUE '99999999999999-',
xakont1 TYPE c, "X = 1. Abstimmkonto eines Bukrs
xcpdsa1 TYPE c, "X = Satzart 1 ausgegeben
" ==> auch Satzart 2 ausgeben
xcoltotal TYPE c, "X = Kreditor ausgeben in Farbe
" TOTAL INTENSIFIED OFF
xcpdtop TYPE c, "X = bei TOP OF PAGE die CPD-
" Kontonummer wiederholen
xendsu TYPE c, "X = Endsummierung läuft
xland1 LIKE boole-boole, "X = 1. Land eines Bukrs
xsele TYPE c, "X = Mind. ein Satz selektiert
xnewbuk TYPE c, "X = 1. Satz eines neuen Bukrs
xnewkto TYPE c, "X = 1. Satz eines neuen Kontos
xtopzeile TYPE c. "X = AKONT im TOP-OF-PAGE ausgeb.
*----
*
FELDLEISTEN *
*----
*
*------ Adressinformationen zu CPD -
-
DATA: BEGIN OF cpdinfo,
name1 LIKE bsec-name1,
slsh1(3) TYPE c,
name2 LIKE bsec-name2,
slsh2(3) TYPE c,
stras LIKE bsec-stras,
slsh3(3) TYPE c,
pstlz LIKE bsec-pstlz,
ort01 LIKE bsec-ort01,
slsh4(3) TYPE c,
regio LIKE bsec-regio,
END OF cpdinfo.
*------ Daten, normale Kreditoren (Satzart 1) -
-
DATA: BEGIN OF datn,
waers(5) TYPE c, "Hauswaehrung
umstz(8) TYPE p, "Umsatz pro Kreditor im Bukrs
END OF datn.
*------ Daten aus SKA1 -
-
DATA: BEGIN OF iska1.
INCLUDE STRUCTURE ska1.
DATA: END OF iska1.
*------ Daten aus SKAT -
-
DATA: BEGIN OF iskat.
INCLUDE STRUCTURE skat.
DATA: END OF iskat.
*------ Variable Daten für Mikrofiche-Zeile (Normalversion , Sort 1) ---
DATA: BEGIN OF mifn1,
bukrs LIKE lfb1-bukrs,
akont LIKE lfb1-akont,
lifnr LIKE lfa1-lifnr,
END OF mifn1.
*------ Variable Daten für Mikrofiche-Zeile (Normalversion , Sort 2) ---
DATA: BEGIN OF mifn2,
bukrs LIKE lfb1-bukrs,
lifnr LIKE lfa1-lifnr,
END OF mifn2.
*------ Variable Daten für Mikrofiche-Zeile (Normalversion , Sort 2) ---
DATA: BEGIN OF mifn3,
bukrs LIKE lfb1-bukrs,
umstz(16) TYPE c,
END OF mifn3.
*------ Variable Daten für Mikrofiche-Zeile (Normalversion , Sort 4) ---
DATA: BEGIN OF mifn4,
bukrs LIKE lfb1-bukrs,
land1 LIKE lfa1-land1,
pstlz LIKE lfa1-pstlz,
lifnr LIKE lfa1-lifnr,
END OF mifn4.
*------ Variable Daten für Mikrofiche-Zeile (Konzernversion , Sort 1) --
DATA: BEGIN OF mifk1,
akont LIKE lfb1-akont,
lifnr LIKE lfa1-lifnr,
bukrs LIKE lfb1-bukrs,
END OF mifk1.
*------ Variable Daten für Mikrofiche-Zeile (Konzernversion , Sort 2) --
DATA: BEGIN OF mifk2,
lifnr LIKE lfa1-lifnr,
bukrs LIKE lfb1-bukrs,
END OF mifk2.
*------ Variable Daten für Mikrofiche-Zeile (Konzernversion , Sort 3) --
DATA: BEGIN OF mifk3,
umstz(16) TYPE c,
END OF mifk3.
*------ Variable Daten für Mikrofiche-Zeile (Konzernversion , Sort 4) --
DATA: BEGIN OF mifk4,
land1 LIKE lfa1-land1,
pstlz LIKE lfa1-pstlz,
lifnr LIKE lfa1-lifnr,
bukrs LIKE lfb1-bukrs,
END OF mifk4.
*------ Kopfzeile am Seitenanfang -
-
DATA: BEGIN OF pgheader,
text(18) TYPE c,
' ',
mnlow(2) TYPE c,
' - ',
mnhigh(2) TYPE c,
' ',
year(4) TYPE c,
END OF pgheader.
*----
*
INTERNE TABELLEN *
*----
*
*------ Speichern der relevanten buchungskreisabh. Daten -
-
DATA: BEGIN OF buktab OCCURS 10,
bukrs LIKE t001-bukrs,
waers LIKE t001-waers,
ktopl LIKE t001-ktopl,
tag01 LIKE sy-datum, "Erster Tag der Berichtsmonate
tag99 LIKE sy-datum, "Letzter Tag der Berichtsmonate
END OF buktab.
*------ Speichern der relevanten buchungskreisabh. Daten -
-
DATA: BEGIN OF endsutab OCCURS 10,
waers LIKE t001-waers,
bukrs LIKE t001-bukrs,
umstz LIKE lfc1-um01u,
END OF endsutab.
*------ Zu extrahierende Daten eines Kreditors merken -
-
DATA: BEGIN OF extracttab OCCURS 10,
bukrs LIKE lfb1-bukrs,
akont LIKE lfb1-akont,
waers LIKE datn-waers,
umstz LIKE datn-umstz,
END OF extracttab.
*------ Speicherung des Geschäftsjahres für Funktionsbaustein -
-
*------ 'BUILD_DEFAULT_YEAR' -
-
DATA: BEGIN OF gejahr_tab OCCURS 2,
sign(1) TYPE c,
option(2) TYPE c,
low LIKE lfc1-gjahr,
high LIKE lfc1-gjahr,
END OF gejahr_tab.
*------ Währungssummen pro Konto -
-
DATA: BEGIN OF waerstab OCCURS 3,
waers LIKE t001-waers,
umstz LIKE lfc1-um01u,
END OF waerstab.
ALV
DATA: gt_output1 LIKE zst_foap_s_rfkuml00_list1 OCCURS 100 WITH HEADER LINE.
DATA: gt_output2 LIKE zst_foap_s_rfkuml00_list2 OCCURS 100 WITH HEADER LINE.
DATA: gt_output_header LIKE zst_foap_s_rfkuml00_list1 OCCURS 0
WITH HEADER LINE,
gs_output_header TYPE zst_foap_s_rfkuml00_list1.
DATA: ls_output_header TYPE zst_foap_s_rfkuml00_list1.
DATA: gt_output_item LIKE zst_foap_s_rfkuml00_list3 OCCURS 0
WITH HEADER LINE,
gs_output_item TYPE zst_foap_s_rfkuml00_list3.
DATA: g_tabname_header TYPE slis_tabname VALUE 'GT_OUTPUT_HEADER'.
DATA: g_tabname_item TYPE slis_tabname VALUE 'GT_OUTPUT_ITEM'.
DATA:it_faglflexa like FAGLflexa OCCURS 0 WITH HEADER LINE.
DATA:it_bsik like bsik occurs 0 with header line.
CONSTANTS: gc_str1 TYPE dd02l-tabname VALUE 'ZST_FOAP_S_RFKUML00_LIST1',
gc_str2 TYPE dd02l-tabname VALUE 'ZST_FOAP_S_RFKUML00_LIST3'.
*DATA:bsik-prctr like bsik-prctr.
DATA:begin of temp occurs 0,
belnr like bseg-belnr,
buzei like bseg-buzei,
prctr like bseg-prctr,
dmbtr like bseg-dmbtr,
end of temp.
*----
*
PARAMETER UND SELECT-OPTIONS *
*----
*
begin_of_block 1.
SELECT-OPTIONS:
b_period FOR rfpdo2-kumlbper "Berichtsmonate
NO-EXTENSION,
kt_umstz FOR rfsdo-kumlumst, "Umsatz des Kontos
p_prctr for bsik-prctr.
end_of_block 1.
begin_of_block 2.
PARAMETERS:
konzvers LIKE rfpdo-ksldkonz, "Konzernversion
kt_sort LIKE rfpdo2-kumlsort "Kontensortierung
DEFAULT '1' " 1=AKONT ; 2=LIFNR ; 3=Umsatz(abst.)
no-display,
vd_stufe LIKE rfpdo-dsldvdst "Verdichtungsstufe
DEFAULT '0' no-display,
p_NSUM like rfpdo3-ALLGnsum,
gejahr LIKE t009b-bdatj, "Geschäftsjahr
cpd_info LIKE rfpdo-dsldcpda, "CPD-Daten ausgeben
kt_ums0 LIKE rfpdo2-kumlums0, "Konten ohne Umsatz?
title LIKE rfpdo1-allgline, "Zusatzueberschrift
listsep LIKE rfpdo-allglsep, "Listseparation
mikfiche LIKE rfpdo-allgmikf, "Mikrofiche-Information
xumrechn LIKE rfpdo2-kumlxumr. "Währungsumrechnung durchführen
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(30) text-sl1 for field er_waers.
PARAMETERS: er_waers LIKE rfpdo2-kumlwaer,
er_kurst LIKE rfpdo2-kumlkrtp DEFAULT 'M',
er_datum LIKE rfpdo2-kumlkrdt DEFAULT sy-datum.
SELECTION-SCREEN END OF LINE.
*ALV
SELECTION-SCREEN:
header
BEGIN OF LINE,
COMMENT 1(20) text-003,
COMMENT pos_low(20) text-005 FOR FIELD p_vari,
END OF LINE.
Selection Parameter for Layout for Customer List
SELECTION-SCREEN BEGIN OF LINE.
description
SELECTION-SCREEN: COMMENT (30) text-006
FOR FIELD p_vari,
POSITION pos_low.
variant field
PARAMETERS p_vari LIKE disvariant-variant.
push button
SELECTION-SCREEN: PUSHBUTTON 55(15) text-002
USER-COMMAND com1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
description
SELECTION-SCREEN: COMMENT (30) text-007
FOR FIELD p_vari2,
POSITION pos_low.
variant field
PARAMETERS p_vari2 LIKE disvariant-variant. "#EC *
push button
SELECTION-SCREEN: PUSHBUTTON 55(15) text-002
USER-COMMAND com2.
SELECTION-SCREEN END OF LINE.
end_of_block 2.
*----
*
FELDGRUPPEN *
*----
*
FIELD-GROUPS: header,
daten,
cpddaten.
INSERT lfa1-lifnr
lfb1-bukrs
bsik-belnr
bsik-buzei
p_prctr
bsik-dmbtr
lfb1-akont
datn-waers
datn-umstz
lfa1-land1
lfa1-pstlz
satzart
bsec-empfg
umstz_lifnr
INTO header.
INSERT lfa1-name1
lfa1-stras
lfa1-ort01
lfa1-regio
lfa1-xcpdk
INTO daten.
INSERT bsec-name1 "CPD Name 1
bsec-name2 "CPD Name 2
bsec-land1
bsec-stras "CPD Strasse
bsec-pstlz "CPD Postleitzahl
bsec-ort01 "CPD Ort
bsec-regio
bsega-dmshb "CPD Beträge, die den Umsatz betreffen
INTO cpddaten.
*----
*
INITIALIZATION *
*----
*
INITIALIZATION.
*------ Titel für Standardfenster auf Selektionsbild holen -
-
get_frame_title: 1,2.
*------ Geschäftsjahr vorschlagen -
-
CALL FUNCTION 'BUILD_DEFAULT_YEAR'
TABLES
xgjahr = gejahr_tab.
gejahr = gejahr_tab-low.
*------ Berichtsmonate vorschlagen: 1 bis 16 -
-
CALL FUNCTION 'BUILD_DEFAULT_PERIOD'
TABLES
xmonat = b_period.
*----
*
AT SELECTION-SCREEN *
*----
*
*--Begin Of Insertion By C5053257 For ALV Display--
*
ALV designer
Get the F4 values for the parameter for report layout variant
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM reuse_alv_get_variant USING gv_repid
gc_handle1
CHANGING p_vari.
Check for the existence of layout variant, if input by user
AT SELECTION-SCREEN ON p_vari.
PERFORM variant_existence_check USING gc_handle1
CHANGING p_vari.
IF sscrfields-ucomm = 'COM1'.
gs_variant-handle = gc_handle1.
PERFORM set_output_layout TABLES gt_output1
USING gv_repid.
clear gt_output1.
refresh gt_output1.
ENDIF.
Get the F4 values for the parameter for report layout variant
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari2.
PERFORM reuse_alv_get_variant USING gv_repid
gc_handle2
CHANGING p_vari2.
Check for the existence of layout variant, if input by user
AT SELECTION-SCREEN ON p_vari2.
PERFORM variant_existence_check USING gc_handle2
CHANGING p_vari2.
IF sscrfields-ucomm = 'COM2'.
gs_variant-handle = gc_handle2.
PERFORM set_output_layout_hierseq TABLES gt_output_header
gt_output_item.
clear gt_output_header.
refresh gt_output_header.
clear gt_output_item.
refresh gt_output_item.
ENDIF.
*------ Kontensortierung: Eingabe im erlaubten Intervall? -
-
AT SELECTION-SCREEN ON kt_sort.
IF kt_sort >= '1' AND kt_sort <= '4'. "#EC PORTABLE
"Richtige Eingabe
ELSE.
MESSAGE e112.
ENDIF.
*------ Verdichtungsstufe: Eingabe im erlaubten Intervall? -
-
AT SELECTION-SCREEN ON vd_stufe.
IF vd_stufe >= '0' AND vd_stufe <= '3'. "#EC PORTABLE
"Richtige Eingabe
ELSE.
MESSAGE e106.
ENDIF.
*------ Berichtsmonate: Eingabe im erlaubten Intervall (01 bis 16)? -
-
AT SELECTION-SCREEN ON b_period.
CALL FUNCTION 'BUILD_DEFAULT_PERIOD'
TABLES
xmonat = b_period.
*------ CPD-Daten werden nur bei Verdichtungsstufe 0 ausgegeben -
-
AT SELECTION-SCREEN.
IF cpd_info <> space.
IF vd_stufe = '0'.
cpd_info = 'X'.
ELSE.
SET CURSOR FIELD 'CPD_INFO'.
MESSAGE e108.
ENDIF.
ENDIF.
*------ Bei Konzernversion und Sortierung 3 muß Umrechnung in -
-
*------ Ergebniswährung durchgeführt werden -
-
IF konzvers = 'X'
AND kt_sort = '3'
AND xumrechn = space.
MESSAGE e293.
ENDIF.
*------ Bei Umrechnung in ErgWährung müssen die Angaben gepflegt sein --
IF xumrechn = 'X'.
IF er_waers IS INITIAL
OR er_kurst IS INITIAL
OR er_datum IS INITIAL.
SET CURSOR FIELD er_waers.
MESSAGE e294.
ENDIF.
ENDIF.
*----
*
START-OF-SELECTION *
*----
*
START-OF-SELECTION.
*------ Kopfzeile am Seitenanfang zusammenfügen -
-
pgheader-text = text-hd1.
pgheader-mnlow = b_period-low.
pgheader-mnhigh = b_period-high.
pgheader-year = gejahr.
if VD_STUFE ne '0'.
VD_STUFE = '0'.
endif.
if kt_sort ne '1'.
kt_sort = '1'.
endif.
temp-prctr = p_prctr.
*----
*
GET LFA1 *
*----
*
GET lfa1.
CLEAR umstz_lifnr.
CLEAR extracttab.
REFRESH extracttab.
*----
*
GET LFB1 *
*----
*
GET lfb1.
*------ Feldleiste DATN initialisieren -
-
CLEAR datn.
*------ Felder von DATN aus BUKTAB füllen -
-
IF buktab-bukrs <> lfb1-bukrs.
LOOP AT buktab WHERE bukrs = lfb1-bukrs.
EXIT.
ENDLOOP.
*------ Eintrag in BUKTAB hinzufügen -
-
IF sy-subrc <> 0.
SELECT SINGLE * FROM t001 WHERE bukrs = lfb1-bukrs.
IF sy-subrc <> 0.
MESSAGE a101 WITH lfb1-bukrs.
ENDIF.
MOVE-CORRESPONDING t001 TO buktab.
*------ Ersten Kalendertag der Berichtsmonate ermitteln -
-
IF cpd_info = 'X'.
poper = b_period-low.
CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = gejahr "Geschaeftsjahr
i_periv = t001-periv "Version der Periodenermittlung
i_poper = poper "Erste Berichtsperiode
IMPORTING
e_date = buktab-tag01
EXCEPTIONS
input_false = 1
t009_notfound = 1
t009b_notfound = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'A' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
CLEAR buktab-tag01.
ENDIF.
*------ Letzten Kalendertag der Berichtsmonate ermitteln -
-
IF cpd_info = 'X'.
IF t009-periv <> t001-periv.
SELECT SINGLE * FROM t009 WHERE periv = t001-periv.
IF sy-subrc <> 0.
MESSAGE a295 WITH t001-periv t001-bukrs.
ENDIF.
ENDIF.
poper = t009-anzbp + t009-anzsp.
IF b_period-high < poper. "#EC PORTABLE
poper = b_period-high.
ENDIF.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = gejahr "Geschaeftsjahr
i_periv = t001-periv "Version der Periodenermittlung
i_poper = poper "Letzte Berichtsperiode
IMPORTING
e_date = buktab-tag99
EXCEPTIONS
input_false = 1
t009_notfound = 1
t009b_notfound = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'A' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
CLEAR buktab-tag99.
ENDIF.
APPEND buktab.
ENDIF.
ENDIF.
IF xumrechn = 'X'.
datn-waers = er_waers.
ELSE.
datn-waers = buktab-waers.
ENDIF.
*----
*
GET LFC1 *
*----
*
GET lfc1.
CHECK lfc1-gjahr = gejahr.
*------ Umsatz innerhalb der Berichtsmonate ermitteln -
-
ADD lfc1-um01u THEN lfc1-um02u UNTIL lfc1-um16u
GIVING datn-umstz
ACCORDING TO b_period.
*------ Umrechnung in Ergebniswährung durchführen -
-
IF xumrechn = 'X'.
IF buktab-waers <> er_waers.
IF NOT datn-umstz IS INITIAL.
CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
EXPORTING
date = er_datum
foreign_currency = er_waers
local_amount = datn-umstz
local_currency = buktab-waers
type_of_rate = er_kurst
IMPORTING
foreign_amount = datn-umstz
EXCEPTIONS
no_rate_found = 1
overflow = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'A' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
datn-waers = er_waers.
ENDIF.
ENDIF.
*----
*
GET LFB1 LATE *
*----
*
GET lfb1 LATE.
*------ Gesamtumsatz pro Kreditor ermitteln -
-
*------ (Konzernversion in Ergebniswährung) -
-
IF konzvers = 'X'
AND xumrechn = 'X'.
umstz_lifnr = umstz_lifnr + datn-umstz.
*------ Kontenumsatz pro Bukrs im selektierten Bereich? -
-
*------ (Normalversion, Konzernversion in Hauswährung) -
-
ELSE.
CHECK ( NOT kt_ums0 IS INITIAL OR NOT datn-umstz IS INITIAL )
AND ( datn-umstz IN kt_umstz ).
ENDIF.
*------ Satz in Extrakttabelle schreiben -
-
PERFORM extracttab_fuellen.
*----
*
GET LFA1 LATE *
*----
*
GET lfa1 LATE.
PERFORM extracttab_in_extract.
*----
*
END-OF-SELECTION *
*----
*
END-OF-SELECTION.
*------ Felder füllen für Batch-Heading -
-
bhdgd-inifl = '0'.
CLEAR bhdgd-bukrs.
bhdgd-lines = sy-linsz.
bhdgd-uname = sy-uname.
bhdgd-repid = sy-repid.
bhdgd-line1 = sy-title.
bhdgd-line2 = title.
bhdgd-miffl = mikfiche.
bhdgd-separ = listsep.
bhdgd-domai = 'BUKRS'.
bhdgd-werte = '0000'.
*------ Umsatzhöhe für Ausgabe Mikrofiche auf maximalen Wert -
-
IF konzvers = 'X'
AND kt_sort = '3'.
WRITE umstz_max CURRENCY er_waers TO mifk3-umstz.
ENDIF.
*------ PH-Zeile für Endsummierung füllen und zentrieren -
-
ph_line(35) = text-t20.
*------ Extrakt sortieren -
-
PERFORM extrakt_sortieren.
*------ Verarbeitung des Extrakts -
-
LOOP.
*-- AT FIRST -
-
IF kt_sort = '1'.
xtopzeile = 'X'.
ENDIF.
*----
*
Normalversion *
*----
*
IF konzvers = space.
*-- AT NEW LFB1-BUKRS -
-
AT NEW lfb1-bukrs.
xakont1 = 'X'.
xland1 = 'X'.
xnewbuk = 'X'.
CLEAR umstz_bukrs.
bhdgd-bukrs = lfb1-bukrs.
bhdgd-werte = lfb1-bukrs.
PERFORM new-section(rsbtchh0).
ENDAT.
*-- AT NEW LFB1-AKONT -
-
AT NEW lfb1-akont.
CLEAR umstz_akont.
ENDAT.
*-- AT NEW LFA1-LAND1 -
-
AT NEW lfa1-land1.
CLEAR umstz_land1.
ENDAT.
*-- AT NEW LFA1-LIFNR -
-
AT NEW lfa1-lifnr.
CLEAR xcpdsa1.
ENDAT.
*-- AT NEW BSEC-EMPFG -
-
AT NEW bsec-empfg.
CLEAR cpdumsatz.
ENDAT.
*-- AT DATEN -
-
AT daten.
CHECK satzart = '1'.
xtopzeile = 'X'.
*------ Tabelle ENDSUTAB aufaddieren -
-
endsutab-waers = datn-waers.
endsutab-bukrs = lfb1-bukrs.
endsutab-umstz = datn-umstz.
COLLECT endsutab.
*------ Summe pro Abstimmkonto aufaddieren -
-
umstz_akont = umstz_akont + datn-umstz.
*------ Summe pro Land aufaddieren -
-
umstz_land1 = umstz_land1 + datn-umstz.
*------ Summe pro Buchungskreis aufaddieren -
-
umstz_bukrs = umstz_bukrs + datn-umstz.
*------ Ausgabe der Daten pro Kreditor -
-
CASE kt_sort.
WHEN '1'.
PERFORM daten_ausgeben_n1.
WHEN '2' OR '3'.
PERFORM daten_ausgeben_n23.
WHEN '4'.
PERFORM daten_ausgeben_n4.
ENDCASE.
*------ Flag setzen, ob CPD-Daten ausgegeben werden sollen -
-
IF cpd_info = 'X'
AND lfa1-xcpdk = 'X'.
xcpdtop = 'X'. "bei TOP OF PAGE CPD-KotNr wiederholen
xcpdsa1 = 'X'. "Satzart 1 ausgegeben -> Satzart 2
"kann auch ausgegeben werden
ENDIF.
ENDAT.
*-- AT CPDDATEN -
-
AT cpddaten.
CHECK satzart = '2'.
cpdumsatz = cpdumsatz + bsega-dmshb.
ENDAT.
*-- AT END OF BSEC-EMPFG -
-
AT END OF bsec-empfg.
IF xcpdsa1 = 'X'.
PERFORM cpddaten_ausgeben_n.
ENDIF.
ENDAT.
*-- AT END OF LFA1-LIFNR -
-
AT END OF lfa1-lifnr.
CLEAR xcpdtop.
IF cpd_info = 'X'.
ENDIF.
ENDAT.
*-- AT END OF LFB1-AKONT -
-
AT END OF lfb1-akont.
PERFORM akont_summe_n1.
ENDAT.
*-- AT END OF LFA1-LAND1 -
-
AT END OF lfa1-land1.
PERFORM land_summe_n4.
ENDAT.
*-- AT END OF LFB1-BUKRS -
-
AT END OF lfb1-bukrs.
xtopzeile = space.
CASE kt_sort.
WHEN '1'.
PERFORM bukrs_summe_n1.
WHEN '2' OR '3'.
PERFORM bukrs_summe_n23.
WHEN '4'.
PERFORM bukrs_summe_n4.
ENDCASE.
ENDAT.
*----
*
Konzernversion *
*----
*
ELSE.
*-- AT NEW LFB1-AKONT -
-
AT NEW lfb1-akont.
CLEAR waerstab.
REFRESH waerstab.
ENDAT.
*-- AT NEW LFA1-LAND1 -
-
AT NEW lfa1-land1.
CLEAR waerstab.
REFRESH waerstab.
ENDAT.
*-- AT NEW LFA1-LIFNR -
-
AT NEW lfa1-lifnr.
xnewkto = 'X'.
ENDAT.
*-- AT NEW DATN-WAERS -
-
AT NEW datn-waers.
CLEAR umstz_waers.
CLEAR bukzaehler.
ENDAT.
*-- AT NEW LFB1-BUKRS -
-
AT NEW lfb1-bukrs.
CLEAR xcpdsa1.
ENDAT.
*-- AT NEW BSEC-EMPFG -
-
AT NEW bsec-empfg.
CLEAR cpdumsatz.
ENDAT.
*-- AT DATEN -
-
AT daten.
CHECK satzart = '1'.
*------ Tabelle ENDSUTAB aufaddieren -
-
endsutab-waers = datn-waers.
endsutab-bukrs = lfb1-bukrs.
endsutab-umstz = datn-umstz.
COLLECT endsutab.
*------ Summe pro Währung aufaddieren -
-
umstz_waers = umstz_waers + datn-umstz.
*------ Tabelle WAERSTAB aufaddieren -
-
waerstab-waers = datn-waers.
waerstab-umstz = datn-umstz.
COLLECT waerstab.
*------ Daten pro Kreditor ausgeben -
-
xtopzeile = 'X'.
bukzaehler = bukzaehler + 1.
CASE kt_sort.
WHEN '1'.
PERFORM daten_ausgeben_k1.
WHEN '2' OR '3'.
PERFORM daten_ausgeben_k23.
WHEN '4'.
PERFORM daten_ausgeben_k4.
ENDCASE.
*------ Flag setzen, ob CPD-Daten ausgegeben werden sollen -
-
IF cpd_info = 'X'
AND lfa1-xcpdk = 'X'.
xcpdtop = 'X'. "bei TOP OF PAGE CPD-KotNr wiederholen
xcpdsa1 = 'X'. "Satzart 1 ausgegeben -> Satzart 2
"kann auch ausgegeben werden
ENDIF.
ENDAT.
*-- AT CPDDATEN -
-
AT cpddaten.
CHECK satzart = '2'.
cpdumsatz = cpdumsatz + bsega-dmshb.
ENDAT.
*-- AT END OF BSEC-EMPFG -
-
AT END OF bsec-empfg.
IF xcpdsa1 = 'X'.
PERFORM cpddaten_ausgeben_k.
ENDIF.
ENDAT.
*-- AT END OF DATN-WAERS -
-
AT END OF datn-waers.
CASE kt_sort.
WHEN '1'.
PERFORM waers_summe_k1.
WHEN '2'.
PERFORM waers_summe_k23.
WHEN '3'.
PERFORM waers_summe_k23.
WHEN '4'.
PERFORM waers_summe_k4.
ENDCASE.
ENDAT.
*-- AT END OF LFA1-LIFNR -
-
AT END OF lfa1-lifnr.
CLEAR xcpdtop.
ENDAT.
*-- AT END OF LFB1-AKONT -
-
AT END OF lfb1-akont.
PERFORM akont_summe_k1.
ENDAT.
*-- AT END OF LFA1-LAND1 -
-
AT END OF lfa1-land1.
PERFORM land_summe_k4.
ENDAT.
ENDIF. "IF KONZVERS = SPACE
*-- AT LAST (für alle Sortierungen bzw. Versionen gleich) -
-
AT LAST.
CLEAR bhdgd-bukrs.
CLEAR bhdgd-werte.
PERFORM new-section(rsbtchh0).
PERFORM endsutab_ausgeben.
ENDAT.
IF vd_stufe = 0.
APPEND gt_output1.
ENDIF.
ENDLOOP.
if p_nsum is initial.
IF cpd_info <> 'X'.
PERFORM sort_itab_list1.
PERFORM display_alv_list1.
ELSE.
PERFORM output_hierseq_alv.
ENDIF.
else.
perFORM display_alv_list2 .
endif.
*----
*
TOP-OF-PAGE *
*----
*
TOP-OF-PAGE.
CASE kt_sort.
WHEN '1'.
PERFORM akont_ausgeben.
*------ ... Sortierung 4: Land ausgeben
WHEN '4'.
PERFORM land_ausgeben.
WHEN OTHERS.
"Nichts tun
ENDCASE.
*------ Bei der Ausgabe von CPD Daten wird auf jeder neuen Seite die ---
*------ CPD-Kontonummer und ggf. die Kontobezeichnung ausgegeben ---
IF xcpdtop = 'X'.
PERFORM cpdtopofpage.
ENDIF.
*----
*
FORM AKONT_AUSGEBEN *
*----
*
Abstimmkonto mit Bezeichnung ausgeben *
*----
*
FORM akont_ausgeben.
*------ Ausgabe nur bei Sortierung 1 (nach Abstimmkonto) -
-
CHECK kt_sort = '1'.
*------ Ausgabe nur bei bestimmten Verdichtungsstufen -
-
CHECK ( konzvers = ' ' AND vd_stufe = '0' )
OR ( konzvers = 'X' AND vd_stufe <= '2' ). "#EC PORTABLE
*------ Ausgabe nicht bei Endsummierungsblatt -
-
CHECK xtopzeile = 'X'.
*------ Abstimmkonto mit Bezeichnung ausgeben -
-
IF buktab-bukrs <> lfb1-bukrs.
LOOP AT buktab WHERE bukrs = lfb1-bukrs.
EXIT.
ENDLOOP.
ENDIF.
CALL FUNCTION 'READ_SKA1'
EXPORTING
xktopl = buktab-ktopl
xsaknr = lfb1-akont
IMPORTING
xska1 = iska1
xskat = iskat
EXCEPTIONS
key_incomplete = 1
not_found = 1
not_authorized = 2.
IF sy-subrc = 0.
IF iskat-txt50 = space.
skbez = iskat-txt20.
ELSE.
skbez = iskat-txt50.
ENDIF.
ELSE.
CLEAR skbez.
ENDIF.
ENDFORM. "AKONT_AUSGEBEN
*----
*
FORM AKONT_SUMME_K1 *
*----
*
Summe pro Abstimmkonto ausgeben (Konzernversion, Sortierung 1) *
*----
*
FORM akont_summe_k1.
CHECK vd_stufe = '2'. "#EC PORTABLE
SORT waerstab BY waers.
LOOP AT waerstab.
MOVE lfb1-akont TO gt_output1-akont.
MOVE waerstab-waers TO gt_output1-currency.
MOVE waerstab-umstz TO gt_output1-umstz.
APPEND gt_output1.
ENDLOOP.
ENDFORM. "AKONT_SUMME_K1
*----
*
FORM AKONT_SUMME_N1 *
*----
*
Summe pro Abstimmkonto ausgeben (Normalversion, Sortierung 1) *
*----
*
FORM akont_summe_n1.
CHECK vd_stufe = '1'.
MOVE : lfb1-bukrs TO gt_output1-bukrs.
MOVE: lfb1-akont TO gt_output1-akont.
MOVE : datn-waers TO gt_output1-currency,
umstz_akont TO gt_output1-umstz.
APPEND gt_output1.
ENDFORM. "AKONT_SUMME_N1
*----
*
FORM BUKRS_SUMME_N1 *
*----
*
Buchungskreissumme ausgeben (Normalversion, Sortierung 1) *
*----
*
FORM bukrs_summe_n1.
CHECK vd_stufe = '2'.
MOVE: lfb1-bukrs TO gt_output1-bukrs.
MOVE: datn-waers TO gt_output1-currency,
umstz_bukrs TO gt_output1-umstz.
APPEND gt_output1.
ENDFORM. "BUKRS_SUMME_N1
*----
*
FORM BUKRS_SUMME_N23 *
*----
*
Buchungskreissumme ausgeben (Normalversion, Sortierung 2 und 3) *
*----
*
FORM bukrs_summe_n23.
CHECK vd_stufe = '1'.
MOVE: lfb1-bukrs TO gt_output1-bukrs,
datn-waers TO gt_output1-currency,
umstz_bukrs TO gt_output1-umstz.
APPEND gt_output1.
ENDFORM. "BUKRS_SUMME_N23
*----
*
Form CPD_TO_EXTRACT *
*----
*
CPD-Sätze in den Extrakt stellen *
*----
*
FORM cpd_to_extract.
CHECK bsik-xcpdd = 'X'.
*------ Belegsegment nachlesen -
-
SELECT SINGLE * FROM bseg WHERE bukrs = bsik-bukrs
AND belnr = bsik-belnr
AND gjahr = bsik-gjahr
AND buzei = bsik-buzei
AND prctr in p_prctr.
CHECK bseg-xcpdd = 'X'. "CPD-Daten?
CHECK bseg-xumsw = 'X'. "Beleg umsatzwirksam?
IF bseg-shkzg = 'S'.
bsega-dmshb = bseg-dmbtr.
ELSE.
bsega-dmshb = bseg-dmbtr * -1.
ENDIF.
*------ Belegsegment CPD-Daten nachlesen -
-
SELECT SINGLE * FROM bsec WHERE bukrs = bseg-bukrs
AND belnr = bseg-belnr
AND gjahr = bseg-gjahr
AND buzei = bseg-buzei.
*------ Umrechnung in Ergebniswährung durchführen -
-
IF xumrechn = 'X'.
IF buktab-waers <> er_waers.
IF NOT bsega-dmshb IS INITIAL.
CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
EXPORTING
date = er_datum
foreign_currency = er_waers
local_amount = bsega-dmshb
local_currency = buktab-waers
type_of_rate = er_kurst
IMPORTING
foreign_amount = bsega-dmshb
EXCEPTIONS
no_rate_found = 1
overflow = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'A' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
datn-waers = er_waers.
ENDIF.
ENDIF.
*------ Satz der Satzart 2 (CPDDATEN) in Extrakt schreiben -
-
EXTRACT cpddaten.
ENDFORM. "CPD_TO_EXTRACT
*----
*
FORM CPDDATEN_AUSGEBEN_K *
*----
*
CPD-Daten für einen Einmalkreditor ausgeben (Konzernversion) *
*----
*
FORM cpddaten_ausgeben_k.
*------ Ausgabe nur, wenn Umsatz ungleich 0 ist -
-
CHECK cpdumsatz <> 0.
*------ CPD-Information in CPDINFO füllen und Leerstellen entfernen -
-
PERFORM cpdinfo_fuellen.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
MOVE bsec-name1 TO gs_output_item-name.
MOVE bsec-land1 TO gs_output_item-land1.
MOVE bsec-ort01 TO gs_output_item-ort01.
MOVE bsec-stras TO gs_output_item-street.
MOVE bsec-pstlz TO gs_output_item-pstlz.
MOVE bsec-regio TO gs_output_item-regio.
MOVE datn-waers TO gs_output_item-currency.
MOVE cpdumsatz TO gs_output_item-umstz.
MOVE bsec-empfg TO gs_output_item-empfg.
APPEND gs_output_item TO gt_output_item.
CLEAR gs_output_item.
ENDFORM. "CPDDATEN_AUSGEBEN_K
*----
*
FORM CPDDATEN_AUSGEBEN_N *
*----
*
CPD-Daten für einen Einmalkreditor ausgeben (Normalversion) *
*----
*
FORM cpddaten_ausgeben_n.
*------ Ausgabe nur, wenn Umsatz ungleich 0 ist -
-
CHECK cpdumsatz <> 0.
*------ CPD-Information in CPDINFO füllen und Leerstellen entfernen -
-
PERFORM cpdinfo_fuellen.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE bsik-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
MOVE bsec-name1 TO gs_output_item-name.
MOVE bsec-land1 TO gs_output_item-land1.
MOVE bsec-ort01 TO gs_output_item-ort01.
MOVE bsec-stras TO gs_output_item-street.
MOVE bsec-pstlz TO gs_output_item-pstlz.
MOVE bsec-regio TO gs_output_item-regio.
MOVE datn-waers TO gs_output_item-currency.
MOVE cpdumsatz TO gs_output_item-umstz.
MOVE bsec-empfg TO gs_output_item-empfg.
APPEND gs_output_item TO gt_output_item.
CLEAR gs_output_item.
ENDFORM. "CPDDATEN_AUSGEBEN_N
*----
*
FORM CPDINFO_FUELLEN *
*----
*
Feldleiste CPDINFO mit den Adressdaten füllen *
*----
*
FORM cpdinfo_fuellen.
CLEAR cpdinfo.
MOVE-CORRESPONDING bsec TO cpdinfo.
IF NOT cpdinfo-name2 IS INITIAL.
cpdinfo-slsh1 = ' / '.
ENDIF.
IF NOT cpdinfo-stras IS INITIAL.
cpdinfo-slsh2 = ' / '.
ENDIF.
IF ( NOT cpdinfo-pstlz IS INITIAL )
OR ( NOT cpdinfo-ort01 IS INITIAL ).
cpdinfo-slsh3 = ' / '.
ENDIF.
IF NOT cpdinfo-regio IS INITIAL.
cpdinfo-slsh4 = ' / '.
ENDIF.
CONDENSE cpdinfo.
ENDFORM. "CPDINFO_FUELLEN
*----
*
FORM CPDTOPOFPAGE *
*----
*
Bei der Ausgabe von CPD Daten wird auf jeder neuen Seite die *
CPD-Kontonummer und ggf. die Kontobezeichnung ausgegeben *
*----
*
FORM cpdtopofpage.
CHECK vd_stufe = '0'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
ENDFORM. "CPDTOPOFPAGE
*----
*
FORM DATEN_AUSGEBEN_K1 *
*----
*
Datensatz ausgeben (Konzernversion, Sortierung 1) *
*----
*
FORM daten_ausgeben_k1.
CHECK vd_stufe = '0'.
IF xnewkto = 'X'
OR ( cpd_info = 'X' AND lfa1-xcpdk = 'X' ).
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr
prctr = p_prctr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
lfb1-bukrs TO gt_output1-bukrs,
datn-umstz TO gt_output1-umstz.
MOVE : lfb1-akont TO gt_output1-akont.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_K1
*----
*
FORM DATEN_AUSGEBEN_K23 *
*----
*
Datensatz ausgeben (Konzernversion, Sortierung 2 und 3) *
*----
*
FORM daten_ausgeben_k23.
CHECK vd_stufe = '0'.
IF xnewkto = 'X'
OR ( cpd_info = 'X' AND lfa1-xcpdk = 'X' ).
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr
prctr = p_prctr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
lfb1-bukrs TO gt_output1-bukrs,
datn-umstz TO gt_output1-umstz.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_K23
*----
*
FORM DATEN_AUSGEBEN_N1 *
*----
*
Datensatz ausgeben (Normalversion, Sortierung 1) *
*----
*
FORM daten_ausgeben_n1.
CHECK vd_stufe = '0'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr
prctr = p_prctr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
datn-umstz TO gt_output1-umstz.
MOVE: lfb1-akont TO gt_output1-akont,
lfb1-bukrs TO gt_output1-bukrs.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_N1
*----
*
FORM DATEN_AUSGEBEN_N23 *
*----
*
Datensatz ausgeben (Normalversion, Sortierung 2 und 3) *
*----
*
FORM daten_ausgeben_n23.
CHECK vd_stufe = '0'.
IF xnewbuk = 'X'.
MOVE: lfb1-bukrs TO gt_output1-bukrs.
CLEAR xnewbuk.
ENDIF.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr
prctr = p_prctr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-buzei.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
datn-umstz TO gt_output1-umstz.
MOVE: lfb1-akont TO gt_output1-akont.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_N23
*----
*
FORM ENDSUTAB_AUSGEBEN *
*----
*
Absummierung über alle Buchungskreise ausgeben *
*----
*
FORM endsutab_ausgeben.
CLEAR xtopzeile.
xendsu = 'X'.
SORT endsutab BY waers bukrs.
LOOP AT endsutab.
MOVE: endsutab-waers TO gt_output2-currency,
endsutab-bukrs TO gt_output2-bukrs,
endsutab-umstz TO gt_output2-umstz.
APPEND gt_output2.
ENDLOOP.
SORT gt_output2 BY currency bukrs.
ENDFORM. "ENDSUTAB_AUSGEBEN
*----
*
FORM EXTRAKT_SORTIEREN *
*----
*
Extrakt aufgrund der Angabe bei den Parametern KT_SORT und *
KONZVERS sortieren *
*----
*
FORM extrakt_sortieren.
*------ Sortierung nach Abstimmkonto -
-
CASE kt_sort.
WHEN '1'.
IF konzvers = space.
SORT BY lfb1-bukrs lfb1-akont lfa1-lifnr satzart bsec-empfg.
ELSE.
SORT BY lfb1-akont lfa1-lifnr datn-waers lfb1-bukrs satzart
bsec-empfg.
ENDIF.
*------ Sortierung nach Kreditornummer -
-
WHEN '2'.
IF konzvers = space.
SORT BY lfb1-bukrs lfa1-lifnr satzart bsec-empfg.
ELSE.
SORT BY lfa1-lifnr datn-waers lfb1-bukrs satzart bsec-empfg.
ENDIF.
*------ Sortierung nach Umsatzhöhe -
-
WHEN '3'.
IF konzvers = space.
SORT BY lfb1-bukrs datn-umstz lfa1-lifnr satzart bsec-empfg.
ELSE.
SORT BY umstz_lifnr lfa1-lifnr datn-waers lfb1-bukrs satzart
bsec-empfg.
ENDIF.
*------ Sortierung nach Land/Postleitzahl -
-
WHEN '4'.
IF konzvers = space.
SORT BY lfb1-bukrs lfa1-land1 lfa1-pstlz
lfa1-lifnr satzart bsec-empfg.
ELSE.
SORT BY lfa1-land1 lfa1-pstlz lfa1-lifnr datn-waers
lfb1-bukrs satzart bsec-empfg.
ENDIF.
ENDCASE.
ENDFORM. "EXTRAKT_SORTIEREN
*----
*
FORM EXTRACTTAB_FUELLEN *
*----
*
EXTRACTTAB mit den normalen Umsätzen zu einem Kreditor füllen *
*----
*
FORM extracttab_fuellen.
extracttab-bukrs = lfb1-bukrs.
extracttab-akont = lfb1-akont.
extracttab-waers = datn-waers.
extracttab-umstz = datn-umstz.
APPEND extracttab.
ENDFORM. "EXTRACTTAB_FUELLEN
*----
*
FORM EXTRACTTAB_IN_EXTRACT *
*----
*
Daten zu einem Kreditor in den Extrakt stellen *
*----
*
FORM extracttab_in_extract.
*------ Gesamtumsatz prüfen, ob in selektiertem Bereich -
-
*------ (Konzernversion in Ergebniswährung) -
-
IF konzvers = 'X'
AND xumrechn = 'X'.
CHECK ( NOT kt_ums0 IS INITIAL OR NOT umstz_lifnr IS INITIAL )
AND ( umstz_lifnr IN kt_umstz ).
ENDIF.
*------ Daten zu einem Kreditor in den Extrakt schreiben -
-
LOOP AT extracttab.
satzart = '1'.
lfb1-bukrs = extracttab-bukrs.
lfb1-akont = extracttab-akont.
datn-waers = extracttab-waers.
datn-umstz = extracttab-umstz.
EXTRACT daten.
xsele = 'X'.
*------ CPD-Daten einlesen, falls erforderlich -
-
CHECK: cpd_info = 'X', "CPD-Infos gewünscht ?
lfa1-xcpdk = 'X'. "Ist Konto ein CPD-Konto ?
satzart = '2'.
*------ BUKTAB nachlesen -
-
IF lfb1-bukrs <> buktab-bukrs.
LOOP AT buktab WHERE bukrs = lfb1-bukrs.
EXIT.
ENDLOOP.
ENDIF.
IF sy-subrc <> 0.
MESSAGE a080(fc) WITH '1' lfb1-bukrs.
ENDIF.
SELECT * FROM FAGLFLEXA into IT_FAGLFLEXA where rbukrs = lfb1-bukrs
AND prctr in p_prctr.
*------ BSIK-Sätze in Extrakt einstellen -
-
SELECT * FROM bsik into bsik WHERE bukrs = it_faglflexa-rbukrs
AND lifnr = lfa1-lifnr
AND umsks = space
AND umskz = space
AND gjahr = it_faglflexa-gjahr
AND buzei = it_faglflexa-buzei
AND budat = it_faglflexa-budat
AND monat IN b_period
AND prctr in p_prctr
ORDER BY PRIMARY KEY.
move-corresponding it_bsik to bsik.
PERFORM cpd_to_extract.
ENDSELECT.
endselect.
*------ BSAK-Sätze in Extrakt einstellen -
-
SELECT * FROM bsak INTO bsak WHERE bukrs = lfb1-bukrs
AND lifnr = lfa1-lifnr
AND umsks = space
AND umskz = space
AND gjahr = gejahr
AND monat IN b_period
ORDER BY PRIMARY KEY.
move-corresponding bsak to bsik.
PERFORM cpd_to_extract.
ENDSELECT.
ENDLOOP.
ENDFORM. "EXTRACTTAB_IN_EXTRACT
*----
*
FORM KREDITOR_AUSGEBEN *
*----
*
Kreditornummer und Adresse ausgeben (Normal- und Konzernversion) *
*----
*
FORM kreditor_ausgeben USING xcolortotal LIKE xcoltotal.
*------ Normalversion -
-
*------ ... Sortierung 1 -
-
IF konzvers = space.
CASE kt_sort.
WHEN '1'.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
*------ ... Sortierung 2 und 3 -
-
WHEN '2' OR '3'.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
*------ ... Sortierung 4 -
-
WHEN '4'.
IF cpd_info = 'X'.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-pstlz TO gt_output1-pstlz,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-lifnr TO gt_output1-lifnr,
lfa1-name1 TO gt_output1-name,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-land1 TO gt_output1-land1,
lfa1-regio TO gt_output1-regio.
ENDIF.
ENDCASE.
*------ Konzernversion -
-
*------ ... Sortierung 1 -
-
ELSE.
CASE kt_sort.
WHEN '1'.
IF xcolortotal = space.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
ELSE.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
ENDIF.
*------ ... Sortierung 2 und 3 -
-
WHEN '2' OR '3'.
IF xcolortotal = space.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
ELSE.
IF cpd_info = 'X'.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-lifnr TO gt_output1-lifnr,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-name1 TO gt_output1-name,
lfa1-land1 TO gt_output1-land1,
lfa1-pstlz TO gt_output1-pstlz,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-regio TO gt_output1-regio.
ENDIF.
ENDIF.
*------ ... Sortierung 4 -
-
WHEN '4'.
IF xcolortotal = space.
IF cpd_info = 'X'.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-pstlz TO gt_output1-pstlz,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-lifnr TO gt_output1-lifnr,
lfa1-name1 TO gt_output1-name,
lfa1-ort01 TO gt_output1-ort01,
lfa1-regio TO gt_output1-regio,
lfa1-stras TO gt_output1-street,
lfa1-land1 TO gt_output1-land1.
ENDIF.
ELSE.
IF cpd_info = 'X'.
MOVE lfa1-pstlz TO gs_output_header-pstlz.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfa1-name1 TO gs_output_header-name.
MOVE lfa1-land1 TO gs_output_header-land1.
MOVE lfa1-ort01 TO gs_output_header-ort01.
MOVE lfa1-stras TO gs_output_header-street.
MOVE lfa1-regio TO gs_output_header-regio.
ELSE.
MOVE: lfa1-pstlz TO gt_output1-pstlz,
bsik-belnr TO gt_output1-belnr,
bsik-buzei TO gt_output1-buzei,
bsik-dmbtr TO gt_output1-dmshb,
temp-prctr TO gt_output1-prctr,
lfa1-lifnr TO gt_output1-lifnr,
lfa1-name1 TO gt_output1-name,
lfa1-ort01 TO gt_output1-ort01,
lfa1-stras TO gt_output1-street,
lfa1-land1 TO gt_output1-land1,
lfa1-regio TO gt_output1-regio.
ENDIF.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "KREDITOR_AUSGEBEN
*----
*
FORM MIKROFICHE *
*----
*
Variablen Teil der Mikrofiche-Zeile bestimmen *
*----
*
FORM mikrofiche USING zeitpunkt TYPE c.
*------ Nur durchführen, wenn Mikrofiche gewünscht -
-
CHECK mikfiche = 'X'.
*------ Normalversion -
-
*------ ... Sortierung 1 -
-
CASE konzvers.
WHEN space.
CASE kt_sort.
WHEN '1'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifn1-bukrs = lfb1-bukrs.
mifn1-akont = lfb1-akont.
mifn1-lifnr = lfa1-lifnr.
bhdgd-grpin = mifn1.
WHEN 'AT_END_OF_LFB1-AKONT'.
CLEAR mifn1-lifnr.
WHEN 'AT_END_OF_LFB1-BUKRS'.
CLEAR mifn1-akont.
WHEN 'AT_LAST'.
CLEAR mifn1.
ENDCASE.
bhdgd-grpin = mifn1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifn2-bukrs = lfb1-bukrs.
mifn2-lifnr = lfa1-lifnr.
WHEN 'AT_END_OF_LFB1-BUKRS'.
CLEAR mifn2-lifnr.
WHEN 'AT_LAST'.
CLEAR mifn2.
ENDCASE.
bhdgd-grpin = mifn2.
*------ ... Sortierung 3 -
-
WHEN '3'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifn3-bukrs = lfb1-bukrs.
WRITE datn-umstz CURRENCY datn-waers TO mifn3-umstz.
WHEN 'AT_END_OF_LFB1-BUKRS'.
CLEAR mifn3-umstz.
WHEN 'AT_LAST'.
CLEAR mifn3.
ENDCASE.
bhdgd-grpin = mifn3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifn4-bukrs = lfb1-bukrs.
mifn4-land1 = lfa1-land1.
mifn4-pstlz = lfa1-pstlz.
mifn4-lifnr = lfa1-lifnr.
WHEN 'AT_END_OF_LFA1-LAND1'.
CLEAR mifn4-lifnr.
CLEAR mifn4-pstlz.
WHEN 'AT_END_OF_LFB1-BUKRS'.
CLEAR mifn4-land1.
WHEN 'AT_LAST'.
CLEAR mifn4.
ENDCASE.
bhdgd-grpin = mifn4.
ENDCASE.
*------ Konzernversion -
-
*------ ... Sortierung 1 -
-
WHEN OTHERS.
CASE kt_sort.
WHEN '1'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifk1-akont = lfb1-akont.
mifk1-lifnr = lfa1-lifnr.
mifk1-bukrs = lfb1-bukrs.
WHEN 'AT_END_OF_LFA1-LIFNR'.
CLEAR mifk1-bukrs.
WHEN 'AT_END_OF_LFB1-AKONT'.
CLEAR mifk1-lifnr.
WHEN 'AT_LAST'.
CLEAR mifk1.
ENDCASE.
bhdgd-grpin = mifk1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifk2-lifnr = lfa1-lifnr.
mifk2-bukrs = lfb1-bukrs.
WHEN 'AT_END_OF_LFA1-LIFNR'.
CLEAR mifk2-bukrs.
WHEN 'AT_LAST'.
CLEAR mifk2.
ENDCASE.
bhdgd-grpin = mifk2.
*------ ... Sortierung 3 -
-
WHEN '3'.
CASE zeitpunkt.
WHEN 'AT_END_OF_DATN-WAERS'.
WRITE umstz_waers CURRENCY er_waers TO mifk3-umstz.
WHEN 'AT_LAST'.
CLEAR mifk3.
ENDCASE.
bhdgd-grpin = mifk3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE zeitpunkt.
WHEN 'AT_DATEN'.
mifk4-land1 = lfa1-land1.
mifk4-pstlz = lfa1-pstlz.
mifk4-lifnr = lfa1-lifnr.
mifk4-bukrs = lfb1-bukrs.
WHEN 'AT_END_OF_LFA1-LIFNR'.
CLEAR mifk4-bukrs.
WHEN 'AT_END_OF_LFA1-LAND1'.
CLEAR mifk4-lifnr.
CLEAR mifk4-pstlz.
WHEN 'AT_LAST'.
CLEAR mifk4.
ENDCASE.
bhdgd-grpin = mifk4.
ENDCASE.
ENDCASE.
ENDFORM. "MIKROFICHE
*----
*
FORM WAERS_SUMME_K1 *
*----
*
Währungssumme ausgeben (Konzernversion, Sortierung 1) *
*----
*
FORM waers_summe_k1.
IF vd_stufe = '1'.
IF xnewkto = 'X'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
MOVE:
lfb1-akont TO gt_output1-akont,
datn-waers TO gt_output1-currency,
umstz_waers TO gt_output1-umstz.
APPEND gt_output1.
ENDIF.
ENDFORM. "WAERS_SUMME_K1
*----
*
FORM WAERS_SUMME_K23 *
*----
*
Währungssumme ausgeben (Konzernversion, Sortierung 2 und 3) *
*----
*
FORM waers_summe_k23.
IF vd_stufe = '1'.
IF xnewkto = 'X'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
MOVE:
datn-waers TO gt_output1-currency,
umstz_waers TO gt_output1-umstz.
APPEND gt_output1.
ENDIF.
ENDFORM. "WAERS_SUMME_K23
*----
*
Form LAND_AUSGEBEN *
*----
*
Land mit Bezeichnung ausgeben *
*----
*
FORM land_ausgeben.
DATA: lv_text(40) TYPE c.
*------ Ausgabe nur bei Sortierung 4 (nach Land/Postleitzahl) -
-
CHECK kt_sort = '4'.
*------ Ausgabe nur bei bestimmten Verdichtungsstufen -
-
CHECK ( konzvers = ' ' AND vd_stufe = '0' )
OR ( konzvers = 'X' AND vd_stufe <= '2' ). "#EC PORTABLE
*------ Ausgabe nicht bei Endsummierungsblatt -
-
CHECK xtopzeile = 'X'.
*------ T005T (Texttabelle zum Land) selektieren -
-
IF lfa1-land1 IS INITIAL.
lv_text = text-ln1.
ELSE.
IF sy-langu <> t005t-spras
OR lfa1-land1 <> t005t-land1.
SELECT SINGLE * FROM t005t WHERE spras = sy-langu
AND land1 = lfa1-land1.
IF sy-subrc = 0.
lv_text = t005t-landx.
ELSE.
lv_text = text-ln2.
ENDIF.
ENDIF.
ENDIF.
*------ ... Normalversion -
-
IF konzvers = space.
MOVE: lfa1-land1 TO gt_output1-land1.
ENDIF.
ENDFORM. "LAND_AUSGEBEN
*----
*
FORM DATEN_AUSGEBEN_N4 *
*----
*
Datensatz ausgeben (Normalversion, Sortierung 4) *
*----
*
FORM daten_ausgeben_n4.
CHECK vd_stufe = '0'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr
prctr = p_prctr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-prctr.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
datn-umstz TO gt_output1-umstz.
MOVE: lfb1-bukrs TO gt_output1-bukrs,
lfb1-akont TO gt_output1-akont.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_N4
*----
*
Form LAND_SUMME_N4 *
*----
*
Summe pro Land ausgeben (Normalversion, Sortierung 4) *
*----
*
FORM land_summe_n4.
CHECK vd_stufe = '1'.
MOVE : lfb1-bukrs TO gt_output1-bukrs.
MOVE : lfa1-land1 TO gt_output1-land1.
MOVE: datn-waers TO gt_output1-currency,
umstz_land1 TO gt_output1-umstz.
APPEND gt_output1.
ENDFORM. "LAND_SUMME_N4
*----
*
Form BUKRS_SUMME_N4 *
*----
*
Buchungskreissumme ausgeben (Normalversion, Sortierung 4) *
*----
*
FORM bukrs_summe_n4.
CHECK vd_stufe = '2'.
MOVE: lfb1-bukrs TO gt_output1-bukrs.
MOVE: datn-waers TO gt_output1-currency,
umstz_bukrs TO gt_output1-umstz.
APPEND gt_output1.
ENDFORM. "BUKRS_SUMME_N4
*----
*
Form DATEN_AUSGEBEN_K4 *
*----
*
Datensatz ausgeben (Konzernversion, Sortierung 4) *
*----
*
FORM daten_ausgeben_k4.
*------ Nur bei Verdichtungsstufe 0 durchführen -
-
CHECK vd_stufe = '0'.
IF xnewkto = 'X'
OR ( cpd_info = 'X' AND lfa1-xcpdk = 'X' ).
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
IF cpd_info = 'X'.
READ TABLE gt_output_header INTO ls_output_header
WITH KEY bukrs = lfb1-bukrs
akont = lfb1-akont
lifnr = lfa1-lifnr.
IF sy-subrc <> 0.
MOVE lfa1-lifnr TO gs_output_header-lifnr.
MOVE lfb1-bukrs TO gs_output_header-bukrs.
MOVE bsik-belnr TO gs_output_header-belnr.
MOVE bsik-buzei TO gs_output_header-buzei.
MOVE temp-prctr TO gs_output_header-prctr.
MOVE bsik-dmbtr TO gs_output_header-dmshb.
MOVE lfb1-akont TO gs_output_header-akont.
MOVE datn-waers TO gs_output_header-currency.
MOVE datn-umstz TO gs_output_header-umstz.
APPEND gs_output_header TO gt_output_header.
CLEAR gs_output_header.
MOVE lfb1-bukrs TO gs_output_item-bukrs.
MOVE lfb1-akont TO gs_output_item-akont.
MOVE lfa1-lifnr TO gs_output_item-lifnr.
MOVE bsik-belnr TO gs_output_item-belnr.
MOVE bsik-buzei TO gs_output_item-buzei.
MOVE temp-prctr TO gs_output_item-prctr.
MOVE bsik-dmbtr TO gs_output_item-dmshb.
ENDIF.
ELSE.
MOVE: datn-waers TO gt_output1-currency,
lfb1-bukrs TO gt_output1-bukrs,
datn-umstz TO gt_output1-umstz.
ENDIF.
ENDFORM. "DATEN_AUSGEBEN_K4
*----
*
Form WAERS_SUMME_K4 *
*----
*
Währungssumme ausgeben (Konzernversion, Sortierung 4) *
*----
*
FORM waers_summe_k4.
*------ Währungssumme ausgeben (VD_STUFE '1') -
-
IF vd_stufe = '1'.
IF xnewkto = 'X'.
CLEAR xcoltotal.
PERFORM kreditor_ausgeben USING xcoltotal.
CLEAR xnewkto.
ENDIF.
MOVE:
lfa1-land1 TO gt_output1-land1,
datn-waers TO gt_output1-currency,
umstz_waers TO gt_output1-umstz.
APPEND gt_output1.
ENDIF.
ENDFORM. "WAERS_SUMME_K4
*----
*
Form LAND_SUMME_K4 *
*----
*
Summe pro Land ausgeben (Konzernversion, Sortierung 4) *
*----
*
FORM land_summe_k4.
CHECK vd_stufe = '2'. "#EC PORTABLE
SORT waerstab BY waers.
LOOP AT waerstab.
MOVE lfa1-land1 TO gt_output1-land1.
MOVE waerstab-waers TO gt_output1-currency.
MOVE waerstab-umstz TO gt_output1-umstz.
APPEND gt_output1.
ENDLOOP.
ENDFORM. "LAND_SUMME_K4
*&----
*
*& Form DISPLAY_ALV_LIST1
*&----
*
FORM display_alv_list1 .
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
lt_events TYPE slis_t_event,
lt_sort TYPE slis_t_sortinfo_alv.
Subroutine for building the events Internal Table.
PERFORM eventtab_build_alv USING '1'
CHANGING lt_events.
Subroutine for building the layout.
PERFORM layout_build_alv USING '1'
CHANGING ls_layout.
*build fieldcatalog table
PERFORM fieldcat_build USING '1'
CHANGING lt_fieldcat.
*build Sort Table
PERFORM build_it_sort USING '1'
CHANGING lt_sort.
To Populate GS_VARIENT
gs_variant-variant = p_vari.
gs_variant-report = gv_repid.
gs_variant-handle = gc_handle1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = ls_layout
it_sort = lt_sort
it_fieldcat = lt_fieldcat
i_save = 'A'
is_variant = gs_variant
it_events = lt_events
TABLES
t_outtab = gt_output1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_LIST1
*&----
*
*& Form display_alv_list_list2
*&----
*
FORM display_alv_list2 .
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
lt_events TYPE slis_t_event,
lt_sort TYPE slis_t_sortinfo_alv.
DATA: lv_counter TYPE i.
Subroutine for building the events Internal Table.
PERFORM eventtab_build_alv USING '2'
CHANGING lt_events.
Subroutine for building the layout.
PERFORM layout_build_alv USING '2'
CHANGING ls_layout.
*build fieldcatalog table
PERFORM fieldcat_build USING '2'
CHANGING lt_fieldcat.
*build Sort Table
PERFORM build_it_sort USING '2'
CHANGING lt_sort.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = ls_layout
it_sort = lt_sort
it_fieldcat = lt_fieldcat
i_save = 'A'
it_events = lt_events
TABLES
t_outtab = gt_output2
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " display_alv_grid_list2
*&----
*
*& Form eventtab_build_alv
*&----
*
text
*----
*
<--P_LT_EVENTS text
*----
*
FORM eventtab_build_alv USING xv_counter TYPE i
CHANGING xt_eventstab TYPE slis_t_event.
DATA: ls_eventstab TYPE slis_alv_event.
Getting the Events of the ALV List Display
CLEAR : xt_eventstab .
REFRESH: xt_eventstab.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = xt_eventstab
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF xv_counter = '1'.
READ TABLE xt_eventstab INTO ls_eventstab WITH
KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_top_of_page1.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'TOP_OF_PAGE'.
READ TABLE xt_eventstab INTO ls_eventstab WITH
KEY name = slis_ev_pf_status_set .
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_pf_status_set.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'PF_STATUS_SET'.
READ TABLE xt_eventstab INTO ls_eventstab WITH
KEY name = 'END_OF_LIST'.
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_end_of_list.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'END_OF_LIST'.
ELSEIF xv_counter = '2'.
READ TABLE xt_eventstab INTO ls_eventstab WITH
KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_top_of_page2.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'TOP_OF_PAGE'.
ENDIF.
ENDFORM. " eventtab_build_alv
*&----
*
*& Form layout_build_alv
*&----
*
text
*----
*
<--P_LS_LAYOUT text
*----
*
FORM layout_build_alv USING xv_counter TYPE i
CHANGING xs_layout TYPE slis_layout_alv.
xs_layout-zebra = 'X'. "Orig report has this effect
xs_layout-no_totalline = 'X'.
IF xv_counter = 1.
xs_layout-list_append = 'Y'.
ELSE.
xs_layout-list_append = 'X'.
ENDIF.
ENDFORM. " layout_build_alv
*&----
*
*& Form fieldcat_build
*&----
*
text
*----
*
<--P_LT_FIELDCAT text
*----
*
**************************************************************
BEGIN OF CHANGE BY C5053264
**************************************************************
FORM fieldcat_build USING xv_counter TYPE i
CHANGING xt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
IF xv_counter = '1'. "To dispaly First List
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' "#EC *
EXPORTING
i_program_name = gv_repid
i_structure_name = gc_structure1
CHANGING
ct_fieldcat = xt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT xt_fieldcat INTO ls_fieldcat.
IF konzvers NE 'X'.
IF kt_sort = '1'.
CASE ls_fieldcat-fieldname.
WHEN 'AKONT'.
ls_fieldcat-col_pos = '1'.
ENDCASE.
ELSEIF kt_sort = '2' OR kt_sort = '3'.
CASE ls_fieldcat-fieldname.
WHEN 'LIFNR'.
ls_fieldcat-col_pos = '1'.
WHEN 'NAME'.
ls_fieldcat-col_pos = '2'.
WHEN 'AKONT'.
ls_fieldcat-tech = 'x'.
ENDCASE.
ELSEIF kt_sort = '4'.
CASE ls_fieldcat-fieldname.
WHEN 'LAND1'.
ls_fieldcat-col_pos = '1'.
ENDCASE.
ENDIF.
ELSE . "IF KONZVERS ne 'X'.
CASE kt_sort.
WHEN '1'.
IF ls_fieldcat-fieldname = 'AKONT'.
ls_fieldcat-col_pos = 0.
ENDIF.
WHEN '2' OR '3'.
IF ls_fieldcat-fieldname = 'LIFNR'.
ls_fieldcat-col_pos = 0.
ENDIF.
WHEN '4'.
IF ls_fieldcat-fieldname = 'LAND1'.
ls_fieldcat-col_pos = 0.
ENDIF.
ENDCASE.
ENDIF. "IF KONZVERS ne 'X'.
IF ls_fieldcat-fieldname = 'CPDUMSATZ'.
ls_fieldcat-tech = 'X'.
ENDIF.
ls_fieldcat-do_sum = 'X'.
MODIFY xt_fieldcat FROM ls_fieldcat TRANSPORTING fieldname do_sum
col_pos tech.
ENDLOOP.
ELSEIF xv_counter = '2'. " To Display 2nd List
CLEAR : xt_fieldcat.
REFRESH: xt_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' "#EC *
EXPORTING
i_program_name = gv_repid
i_structure_name = gc_structure2
CHANGING
ct_fieldcat = xt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT xt_fieldcat INTO ls_fieldcat.
ls_fieldcat-do_sum = 'X'.
MODIFY xt_fieldcat FROM ls_fieldcat TRANSPORTING do_sum fieldname..
ENDLOOP.
ENDIF. "IF ELSEIF xv_counter = '1'/xv_counter = '2'.
ENDFORM. "fieldcat_build
*&----
*
*& Form build_it_sort
*&----
*
text
*----
*
<--P_LT_SORT text
*----
*
FORM build_it_sort USING ls_counter
CHANGING xt_sort TYPE slis_t_sortinfo_alv.
DATA: ls_sort TYPE slis_sortinfo_alv.
CASE ls_counter.
WHEN '1'.
IF konzvers = 'X'.
ls_sort-spos = '1'.
ls_sort-fieldname = 'AKONT'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '2'.
ls_sort-fieldname = 'LIFNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '3'.
ls_sort-fieldname = 'BELNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '4'.
ls_sort-fieldname = 'CURRENCY'.
ls_sort-up = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '5'.
ls_sort-fieldname = 'BUKRS'.
ls_sort-up = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
CASE kt_sort.
WHEN '1'.
WHEN '2' OR '3'.
ls_sort-fieldname = 'LIFNR'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
WHEN '4'.
ls_sort-fieldname = 'BELNR'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
WHEN '5'.
ls_sort-fieldname = 'LAND1'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
ENDCASE.
ELSE. "If KONZVERS eq = 'X'.
ls_sort-spos = '1'.
ls_sort-fieldname = 'BUKRS'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '2'.
ls_sort-fieldname = 'AKONT'.
ls_sort-group = '*'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '3'.
ls_sort-fieldname = 'LIFNR'.
ls_sort-up = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '4'.
ls_sort-fieldname = 'BELNR'.
ls_sort-up = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ENDIF. "If KONZVERS eq = 'X'.
WHEN '2'.
ls_sort-fieldname = 'CURRENCY'.
ls_sort-subtot = 'X'.
ls_sort-up = 'X'.
APPEND ls_sort TO xt_sort.
ENDCASE.
ENDFORM. " BUILD_IT_SORT
*----
*
*& Form top_of_page1
*&----
*
text
*----
*
FORM top_of_page1.
DATA : ls_layout TYPE slis_layout_alv.
DATA: lv_width TYPE i.
DATA: ls_line TYPE slis_listheader.
Print Microfiche lines only if user has selected the option
IF mikfiche ='X'.
handle microfische line
PERFORM fill_microfisch.
ENDIF. "IF MIKFICHE EQ GC_X.
CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
IMPORTING
es_layout = ls_layout
e_width = lv_width
EXCEPTIONS
no_infos = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
bhdgd-lines = lv_width.
else.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Get the current Company Code and fill in the Batch Heading
MOVE gt_output1-bukrs TO bhdgd-bukrs.
MOVE bhdgd-bukrs TO bhdgd-werte.
CALL FUNCTION 'FAGL_BATCH_HEADING_PERFORM'
EXPORTING
is_bhdgd = bhdgd.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = pgheader.
APPEND ls_line TO gt_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_top_of_page.
REFRESH gt_top_of_page.
ENDFORM. "TOP_OF_PAGE1
*&----
*
*& Form top_of_page2
*&----
*
text
*----
*
FORM top_of_page2.
DATA: lt_listheadings TYPE slis_t_listheader.
DATA: ls_listheadings TYPE slis_listheader.
DATA: ls_line TYPE slis_listheader,
ls_layout TYPE slis_layout_alv,
ls_width TYPE int4.
DATA lv_text(255).
MOVE ph_line TO lv_text.
bhdgd-inifl = '0'.
CLEAR bhdgd-bukrs.
bhdgd-lines = sy-linsz.
bhdgd-uname = sy-uname.
bhdgd-repid = sy-repid.
bhdgd-line1 = sy-title.
bhdgd-line2 = title.
bhdgd-miffl = mikfiche.
bhdgd-separ = listsep.
bhdgd-domai = 'BUKRS'.
bhdgd-werte = '0000'.
*print batch heading
CALL FUNCTION 'FAGL_BATCH_HEADING_PERFORM'
EXPORTING
is_bhdgd = bhdgd.
PERFORM batch_comment_build1 CHANGING gt_top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_top_of_page.
REFRESH gt_top_of_page.
ENDFORM. "TOP_OF_PAGE2
*----
*
FORM FOR BATCH_COMMENT_BUILD1 *
*----
*
FORM batch_comment_build1 CHANGING
xt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
DATA lv_text(255).
MOVE ph_line TO lv_text.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = lv_text.
APPEND ls_line TO xt_top_of_page.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = pgheader.
APPEND ls_line TO xt_top_of_page.
ENDFORM. " BATCH_COMMENT_BUILD
*&----
*
*& FORM END_OF_LIST
*&----
*
FORM end_of_list. "#EC CALLED
*output the second list.
PERFORM display_alv_list2.
ENDFORM. "end_of_list_list
*&----
*
*& Form SORT_ITAB_LIST1
*&----
*
text
*----
*
FORM sort_itab_list1 .
CHECK konzvers = 'X'.
IF kt_sort = '1'.
SORT gt_output1 BY akont.
ELSEIF kt_sort = '2'.
SORT gt_output1 BY lifnr.
ELSEIF kt_sort = '3'.
SORT gt_output1 BY lifnr umstz.
ELSEIF kt_sort = '4'.
SORT gt_output1 BY land1.
ENDIF.
ENDFORM. "sort_itab_list1
*&----
*
*& Form PF_STATUS_SET.
*&----
*
For append list no PF Status is require so this form has to be kept
balnk.
FORM pf_status_set USING rt_extab TYPE slis_t_extab.
ENDFORM. "PF_STATUS_SET
*&----
*
*& Form fill_microfisch
*&----
*
FORM fill_microfisch .
CASE konzvers.
WHEN space.
CASE kt_sort.
WHEN '1'.
CASE vd_stufe.
WHEN '0'.
mifn1-bukrs = gt_output1-bukrs.
mifn1-akont = gt_output1-akont.
mifn1-lifnr = gt_output1-lifnr.
bhdgd-grpin = mifn1.
WHEN '1'.
mifn1-bukrs = gt_output1-bukrs.
mifn1-akont = gt_output1-akont.
CLEAR mifn1-lifnr.
WHEN '2'.
mifn1-bukrs = gt_output1-bukrs.
WHEN '3'.
CLEAR mifn1.
ENDCASE.
bhdgd-grpin = mifn1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE vd_stufe.
WHEN '0'.
mifn2-bukrs = gt_output1-bukrs.
mifn2-lifnr = gt_output1-lifnr.
WHEN '1'.
mifn2-bukrs = gt_output1-bukrs.
CLEAR mifn2-lifnr.
WHEN '2'.
CLEAR mifn2.
ENDCASE.
bhdgd-grpin = mifn2.
*------ ... Sortierung 3 -
-
WHEN '3'.
CASE vd_stufe.
WHEN '0'.
mifn3-bukrs = gt_output1-bukrs.
mifn3-umstz = gt_output1-umstz.
WHEN '1'.
mifn3-bukrs = gt_output1-bukrs.
CLEAR mifn3-umstz.
WHEN '2'.
CLEAR mifn3.
ENDCASE.
bhdgd-grpin = mifn3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE vd_stufe.
WHEN '0'.
mifn4-bukrs = gt_output1-bukrs.
mifn4-land1 = gt_output1-land1.
mifn4-pstlz = gt_output1-pstlz.
mifn4-lifnr = gt_output1-lifnr.
WHEN '1'.
mifn4-bukrs = gt_output1-bukrs.
mifn4-land1 = gt_output1-land1.
CLEAR mifn4-lifnr..
CLEAR mifn4-pstlz.
WHEN '2'.
mifn4-bukrs = gt_output1-bukrs.
CLEAR mifn4-land1.
WHEN '3'.
CLEAR mifn4.
ENDCASE.
bhdgd-grpin = mifn4.
ENDCASE.
*------ Konzernversion -
-
*------ ... Sortierung 1----
-
WHEN OTHERS.
CASE kt_sort.
WHEN '1'.
CASE vd_stufe.
WHEN '0'.
mifk1-akont = gt_output1-akont.
mifk1-lifnr = gt_output1-lifnr.
mifk1-bukrs = gt_output1-bukrs.
WHEN '1'.
mifk1-akont = gt_output1-akont.
mifk1-lifnr = gt_output1-lifnr.
mifk1-bukrs = gt_output1-bukrs.
clear mifk1-bukrs.
WHEN '2'.
mifk1-akont = gt_output1-akont.
CLEAR mifk1-lifnr.
WHEN '3'.
CLEAR mifk1.
ENDCASE.
bhdgd-grpin = mifk1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE vd_stufe.
WHEN '0'.
mifk2-lifnr = gt_output1-lifnr.
mifk2-bukrs = gt_output1-bukrs.
WHEN '1'.
mifk2-lifnr = gt_output1-lifnr.
mifk2-bukrs = gt_output1-bukrs.
clear mifk2-bukrs.
WHEN '2'.
CLEAR mifk2.
ENDCASE.
bhdgd-grpin = mifk2.
**------ ... Sortierung 3 -
-
WHEN '3'.
CASE vd_stufe.
WHEN '0'.
mifk3-umstz = gt_output1-umstz.
WHEN '1'.
mifk3-umstz = gt_output1-umstz .
ENDCASE.
bhdgd-grpin = mifk3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE vd_stufe.
WHEN '0'.
mifk4-land1 = gt_output1-land1.
mifk4-pstlz = gt_output1-pstlz.
mifk4-lifnr = gt_output1-lifnr.
mifk4-bukrs = gt_output1-bukrs.
WHEN '1'.
mifk4-land1 = gt_output1-land1.
mifk4-pstlz = gt_output1-pstlz.
mifk4-lifnr = gt_output1-lifnr.
clear mifk4-bukrs.
WHEN '2'.
CLEAR mifk4-lifnr.
CLEAR mifk4-pstlz.
WHEN '3'.
CLEAR mifk4.
ENDCASE.
bhdgd-grpin = mifk4.
ENDCASE.
ENDCASE.
ENDFORM. " fill_microfisch
*&----
*
*& Form reuse_alv_get_variant
*&----
*
To get the list of variants in popup when F4 help is requested
*----
*
-->IV_REPID Report Name
-->IV_HANDLE Handle for Variant
<--IV_VARIANT Variant Name (selection parameter)
*----
*
FORM reuse_alv_get_variant
USING value(iv_repid) TYPE sy-repid
value(iv_handle) TYPE slis_handl
CHANGING iv_variant TYPE disvariant-variant.
DATA: lv_exit(1) TYPE c,
ls_variant TYPE disvariant. " Structure for Variant
MOVE: iv_variant TO ls_variant-variant,
iv_handle TO ls_variant-handle,
iv_repid TO ls_variant-report.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = ls_variant
i_save = 'A'
IMPORTING
e_exit = lv_exit
es_variant = ls_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF lv_exit = space.
MOVE ls_variant-variant TO iv_variant.
ENDIF.
ENDFORM. " reuse_alv_get_variant
*&----
*
*& Form variant_existence_check
*&----
*
Check for the existence of the variant as entered in the
parameter for layout variant selection
*----
*
-->IV_HANDLE Handle for Variant
<--IV_VARIANT Variant Name (selection parameter)
*----
*
FORM variant_existence_check
USING value(iv_handle) TYPE slis_handl
CHANGING iv_variant TYPE disvariant-variant.
DATA: ls_variant TYPE disvariant.
In case if any value is entered in the parameter for layout variant
then check whether the variant exists
IF NOT iv_variant IS INITIAL.
MOVE: iv_variant TO ls_variant-variant,
iv_handle TO ls_variant-handle,
gv_repid TO ls_variant-report.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = ls_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " variant_existence_check
*&----
*
*& Form set_output_layout
*&----
*
To Display the report output in ALV list
*----
*
-->IT_OUTTAB Internal table for data output
-->IV_REPID Variable containing the Report ID
*----
*
FORM set_output_layout
TABLES it_outtab STRUCTURE zst_foap_s_rfkuml00_list1 "#EC *
USING iv_repid TYPE syrepid.
DATA: ls_outtab LIKE zst_foap_s_rfkuml00_list1 OCCURS 100 WITH HEADER LINE.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
lt_events TYPE slis_t_event,
lt_sort TYPE slis_t_sortinfo_alv.
Setting the counter to 1 i.e. first list. In case if FI MESSAGES will
be output in ALV, the layout will have to be set using this counter
Fill output internal tables with dummy data ..
REFRESH it_outtab. CLEAR it_outtab.
DO 3 TIMES.
CALL FUNCTION 'INITIALIZE_STRUCTURE'
EXPORTING
i_n_fill = 0
i_i_fill = 0
CHANGING
c_workarea = ls_outtab.
APPEND ls_outtab TO it_outtab.
ENDDO.
Subroutine for building the events Internal Table.
PERFORM eventtab_build_alv USING '1'
CHANGING lt_events.
Subroutine for building the layout.
PERFORM layout_build_alv USING '1'
CHANGING ls_layout.
CLEAR ls_layout-list_append .
*build fieldcatalog table
PERFORM fieldcat_build USING '1'
CHANGING lt_fieldcat.
*build Sort Table
PERFORM build_it_sort USING '1'
CHANGING lt_sort.
To Populate GS_VARIENT
gs_variant-variant = p_vari.
gs_variant-report = gv_repid.
gs_variant-handle = gc_handle1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = ls_layout
it_sort = lt_sort
it_fieldcat = lt_fieldcat
i_save = 'A'
is_variant = gs_variant
TABLES
t_outtab = gt_output1
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH gt_output1. CLEAR gt_output1.
ENDFORM. " DISPLAY_ALV_LIST1
*&----
*
*& Form set_output_layout_hierseq
*&----
*
To Display the report output in HIERARCHICAL ALV list
*----
*
FORM set_output_layout_hierseq
TABLES it_output_header STRUCTURE zst_foap_s_rfkuml00_list1
it_output_item STRUCTURE zst_foap_s_rfkuml00_list3.
DATA: ls_output_header TYPE zst_foap_s_rfkuml00_list1,
ls_output_item TYPE zst_foap_s_rfkuml00_list3,
lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_layout TYPE slis_layout_alv,
ls_keyinfo TYPE slis_keyinfo_alv.
Fill output internal tables with dummy data ..
REFRESH it_output_header .
REFRESH it_output_item.
CALL FUNCTION 'INITIALIZE_STRUCTURE'
EXPORTING
i_n_fill = 0
i_i_fill = 0
CHANGING
c_workarea = ls_output_header.
APPEND ls_output_header TO it_output_header.
DO 2 TIMES.
CALL FUNCTION 'INITIALIZE_STRUCTURE'
EXPORTING
i_n_fill = 0
i_i_fill = 0
CHANGING
c_workarea = ls_output_item.
APPEND ls_output_item TO it_output_item.
ENDDO.
BUILD THE FIELDCATALOG
PERFORM fieldcat_build_alv CHANGING lt_fieldcat.
PERFORM sort_info_build_alv CHANGING lt_sort.
BUILD THE KEYINFO FOR THE ALV
PERFORM keyinfo_build CHANGING ls_keyinfo.
ls_layout-group_change_edit = 'X'.
ls_layout-no_vline = 'X'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = ls_layout
it_fieldcat = lt_fieldcat[]
i_save = 'A'
is_variant = gs_variant
it_sort = lt_sort
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = ls_keyinfo
TABLES
t_outtab_header = it_output_header
t_outtab_item = it_output_item
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "SET_OUTPUT_LAYOUT_HIERSEQ
*&----
*
*& Form output_hierseq_alv
*&----
*
To Display the report output in HIERARCHICAL ALV list
*----
*
FORM output_hierseq_alv.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
lt_events TYPE slis_t_event,
ls_layout TYPE slis_layout_alv,
ls_print TYPE slis_print_alv,
ls_keyinfo TYPE slis_keyinfo_alv.
BUILD THE EVENT TABLE
PERFORM eventtab_build_alv1 CHANGING lt_events.
BUILD THE FIELDCATALOG
PERFORM fieldcat_build_alv CHANGING lt_fieldcat.
BUILD THE LAYOUT
PERFORM layout_build_alv USING '1'
CHANGING ls_layout.
BUILD THE KEYINFO FOR THE ALV
PERFORM keyinfo_build CHANGING ls_keyinfo.
PERFORM sort_info_build_alv CHANGING lt_sort.
gs_variant-variant = p_vari2.
gs_variant-report = gv_repid.
gs_variant-handle = gc_handle2.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = ls_layout
it_fieldcat = lt_fieldcat[]
i_save = 'A'
it_events = lt_events
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = ls_keyinfo
it_sort = lt_sort
is_variant = gs_variant
TABLES
t_outtab_header = gt_output_header
t_outtab_item = gt_output_item
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " OUTPUT_HIERSEQ_ALV
*&----
-
*& Form FIELDCAT_BUILD_ALV
*&----
-
Subroutine to add Header and Item Field catalog to the
Hierarchical sequential ALV
*----
-
<--XT_FCAT
*----
-
Used global variables: GV_REPID
**----
-
FORM fieldcat_build_alv CHANGING xt_fcat TYPE slis_t_fieldcat_alv.
FIELD-SYMBOLS : -tech = 'X'.
ENDCASE.
ENDCASE.
ENDLOOP.
ENDFORM. "FIELDCAT_BUILD_ALV
*&----
*
*& Form KEYINFO_BUILD
*&----
*
text
*----
*
<--P_LS_KEYINFO text
*----
*
FORM keyinfo_build CHANGING p_ls_keyinfo TYPE slis_keyinfo_alv.
p_ls_keyinfo-header01 = 'BUKRS'.
p_ls_keyinfo-item01 = 'BUKRS'.
p_ls_keyinfo-header02 = 'AKONT'.
p_ls_keyinfo-item02 = 'AKONT'.
p_ls_keyinfo-header03 = 'LIFNR'.
p_ls_keyinfo-item03 = 'LIFNR'.
ENDFORM. " KEYINFO_BUILD
*&----
-
*& Form SORT_INFO_BUILD_ALV
*&----
*
Sort the field on the basis Sort Sequence eneterd by user
*----
*
<->XT_SORT Table that will contain the sort information
*----
*
FORM sort_info_build_alv CHANGING xt_sort TYPE slis_t_sortinfo_alv.
DATA : ls_sort TYPE slis_sortinfo_alv.
CASE kt_sort.
WHEN '1'.
IF konzvers = space.
ls_sort-spos = '1'.
ls_sort-fieldname = 'BUKRS'.
ls_sort-tabname = 'GT_OUTPUT_HEADER'.
ls_sort-up = 'X'.
ls_sort-group = '*'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ls_sort-spos = '2'.
ls_sort-fieldname = 'AKONT'.
ls_sort-tabname = 'GT_OUTPUT_HEADER'.
ls_sort-up = 'X'.
ls_sort-group = '*'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO xt_sort.
CLEAR ls_sort.
ENDIF.
ENDCASE.
ENDFORM. " SORT_INFO_BUILD_ALV
*&----
*
*& Form eventtab_build_alv
*&----
*
FORM eventtab_build_alv1 CHANGING xt_eventstab TYPE slis_t_event.
DATA: ls_eventstab TYPE slis_alv_event.
Getting the Events of the ALV List Display
CLEAR : xt_eventstab .
REFRESH: xt_eventstab.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = xt_eventstab
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE xt_eventstab INTO ls_eventstab WITH
KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_top_of_page3.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'TOP_OF_PAGE'.
READ TABLE xt_eventstab INTO ls_eventstab
WITH KEY name = 'END_OF_LIST'.
IF sy-subrc = 0.
ls_eventstab-form = gc_formname_end_of_list1.
ENDIF.
MODIFY xt_eventstab FROM ls_eventstab TRANSPORTING form
WHERE name = 'END_OF_LIST'.
ENDFORM. "EVENTTAB_BUILD_ALV1
*&----
*
*& FORM END_OF_LIST1
*&----
*
FORM end_of_list1. "#EC CALLED
*output the second list.
PERFORM display_alv_list2.
ENDFORM. "end_of_list_list
*&----
*
*& Form TOP_OF_PAGE3
*&----
*
text
*----
*
FORM top_of_page3.
DATA : ls_layout TYPE slis_layout_alv.
DATA: lv_width TYPE i.
Print Microfiche lines only if user has selected the option
IF mikfiche ='X'.
handle microfische line
PERFORM fill_microfisch_alv.
ENDIF. "IF MIKFICHE EQ GC_X.
CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
IMPORTING
es_layout = ls_layout
e_width = lv_width
EXCEPTIONS
no_infos = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
bhdgd-lines = lv_width.
ENDIF.
Get the current Company Code and fill in the Batch Heading
MOVE gt_output_header-bukrs TO bhdgd-bukrs.
MOVE bhdgd-bukrs TO bhdgd-werte.
CALL FUNCTION 'FAGL_BATCH_HEADING_PERFORM'
EXPORTING
is_bhdgd = bhdgd.
ENDFORM. "TOP_OF_PAGE3
*----
*
FORM FOR BATCH_COMMENT_BUILD2 *
*----
*
FORM batch_comment_build2 CHANGING
xt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
DATA lv_text(255).
MOVE ph_line TO lv_text.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = space.
APPEND ls_line TO xt_top_of_page.
ENDFORM. " BATCH_COMMENT_BUILD
*----
-
*FORM fill_microfisch_alv
*----
-
FORM fill_microfisch_alv .
CASE konzvers.
WHEN space.
CASE kt_sort.
WHEN '1'.
CASE vd_stufe.
WHEN '0'.
mifn1-bukrs = gt_output_header-bukrs.
mifn1-akont = gt_output_header-akont.
mifn1-lifnr = gt_output_header-lifnr.
bhdgd-grpin = mifn1.
WHEN '1'.
mifn1-bukrs = gt_output_header-bukrs.
mifn1-akont = gt_output_header-akont.
CLEAR mifn1-lifnr.
WHEN '2'.
mifn1-bukrs = gt_output_header-bukrs.
WHEN '3'.
CLEAR mifn1.
ENDCASE.
bhdgd-grpin = mifn1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE vd_stufe.
WHEN '0'.
mifn2-bukrs = gt_output_header-bukrs.
mifn2-lifnr = gt_output_header-lifnr.
WHEN '1'.
mifn2-bukrs = gt_output_header-bukrs.
CLEAR mifn2-lifnr.
WHEN '2'.
CLEAR mifn2.
ENDCASE.
bhdgd-grpin = mifn2.
*------ ... Sortierung 3 -
-
WHEN '3'.
CASE vd_stufe.
WHEN '0'.
mifn3-bukrs = gt_output_header-bukrs.
mifn3-umstz = gt_output_header-umstz.
WHEN '1'.
mifn3-bukrs = gt_output_header-bukrs.
CLEAR mifn3-umstz.
WHEN '2'.
CLEAR mifn3.
ENDCASE.
bhdgd-grpin = mifn3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE vd_stufe.
WHEN '0'.
mifn4-bukrs = gt_output_header-bukrs.
mifn4-land1 = gt_output_header-land1.
mifn4-pstlz = gt_output_header-pstlz.
mifn4-lifnr = gt_output_header-lifnr.
WHEN '1'.
mifn4-bukrs = gt_output_header-bukrs.
mifn4-land1 = gt_output_header-land1.
CLEAR mifn4-lifnr..
CLEAR mifn4-pstlz.
WHEN '2'.
mifn4-bukrs = gt_output_header-bukrs.
CLEAR mifn4-land1.
WHEN '3'.
CLEAR mifn4.
ENDCASE.
bhdgd-grpin = mifn4.
ENDCASE.
*------ Konzernversion -
-
*------ ... Sortierung 1----
-
WHEN OTHERS.
CASE kt_sort.
WHEN '1'.
CASE vd_stufe.
WHEN '0'.
mifk1-akont = gt_output_header-akont.
mifk1-lifnr = gt_output_header-lifnr.
mifk1-bukrs = gt_output_header-bukrs.
WHEN '1'.
mifk1-akont = gt_output_header-akont.
mifk1-lifnr = gt_output_header-lifnr.
mifk1-bukrs = gt_output_header-bukrs.
WHEN '2'.
mifk1-akont = gt_output_header-akont.
CLEAR mifk1-lifnr.
WHEN '3'.
CLEAR mifk1.
ENDCASE.
bhdgd-grpin = mifk1.
*------ ... Sortierung 2 -
-
WHEN '2'.
CASE vd_stufe.
WHEN '0'.
mifk2-lifnr = gt_output_header-lifnr.
mifk2-bukrs = gt_output_header-bukrs.
WHEN '1'.
mifk2-lifnr = gt_output_header-lifnr.
mifk2-bukrs = gt_output_header-bukrs.
WHEN '2'.
CLEAR mifk2.
ENDCASE.
bhdgd-grpin = mifk2.
**------ ... Sortierung 3 -
-
WHEN '3'.
CASE vd_stufe.
WHEN '0'.
mifk3-umstz = gt_output_header-umstz.
WHEN '1'.
mifk3-umstz = gt_output_header-umstz .
ENDCASE.
bhdgd-grpin = mifk3.
*------ ... Sortierung 4 -
-
WHEN '4'.
CASE vd_stufe.
WHEN '0'.
mifk4-land1 = gt_output_header-land1.
mifk4-pstlz = gt_output_header-pstlz.
mifk4-lifnr = gt_output_header-lifnr.
mifk4-bukrs = gt_output_header-bukrs.
WHEN '1'.
mifk4-land1 = gt_output_header-land1.
mifk4-pstlz = gt_output_header-pstlz.
mifk4-lifnr = gt_output_header-lifnr.
WHEN '2'.
CLEAR mifk4-lifnr.
CLEAR mifk4-pstlz.
WHEN '3'.
CLEAR mifk4.
ENDCASE.
bhdgd-grpin = mifk4.
ENDCASE.
ENDCASE.
ENDFORM. " fill_microfisch_alv
This is program what i have changed.We want data of doc.no and amount in LC.Give me the ideas.
2016 Jul 13 9:22 AM