Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV report

geetha_k
Active Participant
0 Likes
874

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.

5 REPLIES 5
Read only

Former Member
0 Likes
803

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

Read only

0 Likes
803

Hi,

Header of those items r coming.But data is not coming.

Read only

0 Likes
803

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

Read only

0 Likes
803

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.

Read only

0 Likes
803

This message was moderated.