Application Development 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: 

Module pool program.

Former Member
0 Kudos

I have to change a z module pool program to have row colors according to the values.

It cosists of the inlude file ZRM07MLDD WHERE ALL THE DATA DEFINITIONS HAVE MADE.

The include consists of the statement .....

Report RM07MLDB No Standard Page Heading Message-ID M7 Line-Size 150.

When i debug the module pool program it displays the selection screen ...takes input from the user....

and the event START-OF-SELECTION it should go to the include file mentioned above but it comes out to the SE80 screen......

please tell me wats rong in the code .....

regards,

Archana

3 REPLIES 3

Former Member
0 Kudos

In debugging program doesn't stop at data declaration part.

Check once again.

don't forget to reward

S@meer

abapdeveloper20
Contributor
0 Kudos

for checking can u paste ur code out here ??

0 Kudos

please see the code below i am also pasting the include files after the code

************************************************************************

  • REPORT RM07MLBD (Transaktionscode MB5B) *

************************************************************************

  • Anzeige der Materialbestände in einem Zeitintervall *

************************************************************************

  • Der Report gliedert sich im wesentlichen in folgende Verarbeitungs- *

  • blöcke: *

  • 1) Definition des Einstiegsbildes und Vorbelegung einzelner *

  • Selektionsfelder, sowie Prüfung der eingegebenen Selektions- *

  • parameter und Berechtigungsprüfung *

  • 2) Lesen der aktuellen Bestandswerte *

  • 3) Lesen und Verarbeiten der Materialbelege *

  • 4) Berechnung der Bestandswerte zu den vorgegebenen Datümern *

  • 5) Ausgabe der Bestände und Materialbelege *

************************************************************************

  • This program is a modification of standard SAP program RM07MLBD *

  • Transaction code MB5B

  • Modifications Done By :- Sunil Patil

  • Start On :- 27/05/2002

  • Finish On :- 29/05/2002

  • Functional Consultant :- Satyen Deokule *

  • Client :- Seafood Products Ltd., Nigeria *

  • Implementation Partner: Covansys (India) Pvt Limited

************************************************************************

INCLUDE: zrm07mldd, " reportspezifische Datendefinitionen

zrm07grid, " Gitternetz, Formatierung, Farbgebung

zrm07mlbp. " reporteigene Parameter

                                                • HAUPTPROGRAMM *********************************

  • DATA STATEMENT ADDED BY ARCHANA BELOW

**DATA: IT_BELEGTAB TYPE TABLE OF BELEGTAB.

*

DATA: FS_FARBE LIKE LINE OF BELEGE-FARBE.

*----


F4-Hilfe für Reportvariante -


*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

PERFORM f4_for_variant.

*----


Vorbelegung des Datums -


*

INITIALIZATION.

PERFORM initialisierung.

*----


Prüfung der eingegebenen Selektionsparameter, -


*

*----


Berechtigungsprüfung -


*

AT SELECTION-SCREEN.

PERFORM eingaben_pruefen.

PERFORM organisation.

PERFORM berechtigung_pruefen.

*----


Datenselektion -


*

START-OF-SELECTION.

PERFORM aktuelle_bestaende.

PERFORM tabellen_lesen.

PERFORM belegselektion.

*----


Datenausgabe----


*

END-OF-SELECTION.

PERFORM summen_bilden.

PERFORM bestaende_berechnen.

PERFORM listumfang.

PERFORM feldkatalog_aufbauen USING fieldcat[].

PERFORM bestaende_ausgeben.

CLEAR: imseg, ibsim, bestand.

  • Aus dieser Unterroutine heraus werden implizit, d.h. in der Schleife

  • über alle selektierten Bestände, die zugehörigen Materialbelege

  • aufgerufen.

  • Die Bestände werden zum Anfangs- und Enddatum als Summen zu

  • folgendem Schlüssel, der im Listkopf geführt wird, ausgegeben:

  • Buchungskreis bzw. Werk, Material, Charge. Nicht-chargenpflichtige

  • Materialien werden auf Materialebene angezeigt.

  • Es folgt jeweils eine Liste mit den einzelnen Belegpositionen.

                                              • Ende HAUPTPROGRAMM *****************************

                                                  • FORMROUTINEN *********************************

*&----


*

*& Form INITIALISIERUNG

*&----


*

  • Vorbelegung des Datums *

*----


*

FORM initialisierung.

repid = sy-repid.

variant_save = 'A'.

CLEAR variante.

variante-report = repid.

  • Default-Variante holen:

def_variante = variante.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = variant_save

CHANGING

cs_variant = def_variante

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

p_vari = def_variante-variant.

ENDIF.

print-no_print_listinfos = 'X'.

ENDFORM. " INITIALISIERUNG

*&----


*

*& Form EINGABEN_PRUEFEN

*&----


*

  • Prüfung der Eingaben auf dem Selektionsbild *

*----


*

FORM eingaben_pruefen.

CALL FUNCTION 'MMIM_ENTRYCHECK_MAIN'

TABLES

it_matnr = matnr

it_werks = werks

it_lgort = lgort

it_bwart = bwart

it_bukrs = bukrs.

  • Die Selektionseingaben Buchungskreis und Werk werden hierarchisch

  • verstanden, d.h. es werden nur Werke innerhalb der angegebenen

  • Buchungskreise selektiert.

  • Lagerort-/Chargenbestand: Da die Werksbezeichnung eindeutig ist,

  • finden alle Selektionen auf Werksebene bzw. - falls mindestens ein

  • Lagerort eingegeben wurde - auf der Ebene der eingegebenen Lagerorte

  • statt. Die Ausgabe erfolgt auf Werksebene des Materials / der Charge.

  • Bewerteter Bestand: Die Ausgabe erfolgt auf Bewertungskreisebene,

  • d.h. je nach Einstellung in der Tabelle TCURM auf Werks- oder

  • Buchungskreisebene.

  • Feststellen, ob der Bewertungskreis auf Buchungskreis- oder

  • Werksebene liegt:

  • tcurm-bwkrs_cus = 1 => Bewertungskreis auf Werksebene,

  • tcurm-bwkrs_cus = 3 => Bewertungskreis auf Buchungskreisebene.

SELECT bwkrs_cus FROM tcurm INTO curm. ENDSELECT.

IF xchar = ' ' AND NOT charg-low IS INITIAL.

xchar = 'X'.

ENDIF.

IF sbbst = 'X' AND sobkz IS INITIAL.

MESSAGE e286.

  • Bitte ein Sonderbestandskennzeichen eingeben.

ELSEIF sbbst = ' ' AND NOT sobkz IS INITIAL.

CLEAR sobkz.

MESSAGE w287.

  • Sonderbestandskennzeichen wird zurückgesetzt.

ENDIF.

IF bwbst = 'X' AND NOT charg IS INITIAL

OR bwbst = 'X' AND NOT xchar IS INITIAL.

CLEAR charg. REFRESH charg.

MESSAGE w285.

  • Charge wird zurückgesetzt.

ENDIF.

IF bwbst = 'X' AND NOT lgort IS INITIAL.

CLEAR lgort. REFRESH lgort.

MESSAGE w284.

  • Lagerort wird zurückgesetzt.

ENDIF.

IF bwbst = 'X' AND NOT bwart IS INITIAL.

CLEAR bwart. REFRESH bwart.

MESSAGE w298.

  • Bewegungsart wird zurückgesetzt

ENDIF.

IF bwbst = ' ' AND NOT bwtar IS INITIAL.

CLEAR bwtar. REFRESH bwtar.

MESSAGE w288.

  • Bewertungsart wird zurückgesetzt.

ENDIF.

IF xvbst = 'X' AND xnvbst = 'X'.

MESSAGE e291.

  • Entweder veränderte oder nicht veränderte Bestände wählen.

ENDIF.

  • The function "no cancellations" is not possible for valuated stock

IF NOSTO = 'X' AND BWBST = 'X'. "204463

MESSAGE E151(E1) WITH 'VALUATED_STOCK' 'NO_CANCELLATIONS'. "204463

ENDIF. "204463

IF NOT p_vari IS INITIAL.

MOVE variante TO def_variante.

MOVE p_vari TO def_variante-variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

i_save = variant_save

CHANGING

cs_variant = def_variante.

variante = def_variante.

ELSE.

CLEAR variante.

variante-report = repid.

ENDIF.

ENDFORM. " EINGABEN_PRÜFEN

*&----


*

*& Form ORGANISATION

*&----


*

  • Abbildung der Organisationsstruktur: *

  • Buchungskreis, Bewertungskreis, Werk, Lagerort *

*----


*

FORM organisation.

SELECT * FROM t001 INTO CORRESPONDING FIELDS OF TABLE it001

WHERE bukrs IN bukrs.

IF sy-subrc NE 0.

MESSAGE e282.

  • Buchungskreis nicht vorhanden.

ENDIF.

IF curm = '1'.

SELECT * FROM t001k INTO CORRESPONDING FIELDS OF TABLE it001k

WHERE bukrs IN bukrs

AND bwkey IN werks.

ELSEIF curm = '3'.

SELECT * FROM t001k INTO CORRESPONDING FIELDS OF TABLE it001k

WHERE bukrs IN bukrs.

ENDIF.

IF werks IS INITIAL.

SELECT * FROM t001w INTO CORRESPONDING FIELDS OF TABLE it001w

FOR ALL ENTRIES IN it001k WHERE bwkey = it001k-bwkey

AND werks IN werks.

ELSEIF NOT werks IS INITIAL.

SELECT * FROM t001w INTO CORRESPONDING FIELDS OF TABLE it001w

WHERE werks IN werks.

LOOP AT it001w.

READ TABLE it001k WITH KEY bwkey = it001w-bwkey.

IF sy-subrc NE 0.

MESSAGE w283 WITH it001w-werks.

  • Werk & nicht in Buchungskreis vorhanden.

DELETE it001w.

ENDIF.

ENDLOOP.

ENDIF.

SELECT * FROM t001l INTO CORRESPONDING FIELDS OF TABLE it001l

FOR ALL ENTRIES IN it001w WHERE werks = it001w-werks

AND lgort IN lgort.

IF sy-subrc NE 0.

MESSAGE e292 WITH lgort.

  • Eingegebener Lagerort nicht in Selektion vorhanden.

ENDIF.

  • Hier wird nicht auf alle eingegebenen Lagerorte geprüft, sondern nur

  • ob mindestens ein Lagerort zu den vorgegebenen Werken bzw. Buchungs-

  • kreisen vorhanden ist.

count = 0.

REFRESH organ. "note 139378

LOOP AT it001.

LOOP AT it001k WHERE bukrs = it001-bukrs.

LOOP AT it001w WHERE bwkey = it001k-bwkey.

LOOP AT it001l WHERE werks = it001w-werks.

organ-lgort = it001l-lgort.

organ-werks = it001w-werks.

organ-name1 = it001w-name1.

organ-bukrs = it001-bukrs.

organ-waers = it001-waers.

IF curm = '1'.

organ-bwkey = organ-werks.

ELSEIF curm = '3'.

organ-bwkey = organ-bukrs.

ENDIF.

APPEND organ.

count = count + 1.

ENDLOOP.

ENDLOOP.

ENDLOOP.

ENDLOOP.

IF count = 0.

MESSAGE e281.

  • Kein Eintrag zur Selektion Buchungskreis Werk Lagerort vorhanden

ENDIF.

FREE it001. REFRESH it001.

FREE it001k. REFRESH it001k.

FREE it001w. REFRESH it001w.

FREE it001l. REFRESH it001l.

ENDFORM. " ORGANISATION

*&----


*

*& Form BERECHTIGUNG_PRUEFEN

*&----


*

  • Berechtigungsprüfung auf Werksebene *

*----


*

FORM berechtigung_pruefen.

LOOP AT organ.

AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'

ID 'ACTVT' FIELD actvt03

ID 'WERKS' FIELD organ-werks.

IF sy-subrc NE 0.

MESSAGE w120 WITH organ-werks.

  • Sie haben keine Berechtigung für diesen Vorgang in Werk &.

DELETE organ.

ENDIF.

ENDLOOP.

ENDFORM. " BERECHTIGUNG_PRUEFEN

*&----


*

*& Form AKTUELLE_BESTAENDE

*&----


*

  • Ermittlung der aktuellen eigenen Bestände,

  • d.h. der bewerteten Bestände und des Retourensperrbestandes,

  • auf Lagerortebene und auf Material- bzw. Chargenebene;

  • folgende Sonderbestände können gesondert ausgewiesen werden:

  • Lohnbearbeitung ( Sonderbestandskennzeichen O )

  • Kundenkonsignation ( " V, W, M )

  • Lieferantenkonsignation ( " K )

  • Projektbestand ( " Q )

  • Kundenauftragsbestand ( " E )

*----


*

FORM aktuelle_bestaende.

*----


bewerteter Bestand -


*

IF bwbst = 'X'.

DATA: BEGIN OF k3 OCCURS 0,

bwkey LIKE mbew-bwkey,

END OF k3.

REFRESH k3.

LOOP AT organ.

k3-bwkey = organ-bwkey.

COLLECT k3.

ENDLOOP.

IF NOT bwtar IS INITIAL.

SELECT * FROM mbew INTO CORRESPONDING FIELDS OF TABLE imbew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar IN bwtar.

SELECT * FROM ebew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar IN bwtar.

MOVE-CORRESPONDING ebew TO imbew.

COLLECT imbew.

ENDSELECT.

SELECT * FROM qbew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar IN bwtar.

MOVE-CORRESPONDING qbew TO imbew.

COLLECT imbew.

ENDSELECT.

ELSEIF bwtar IS INITIAL.

SELECT * FROM mbew INTO CORRESPONDING FIELDS OF TABLE imbew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar = space.

SELECT * FROM ebew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar = space.

MOVE-CORRESPONDING ebew TO imbew.

COLLECT imbew.

ENDSELECT.

SELECT * FROM qbew

FOR ALL ENTRIES IN k3 WHERE bwkey = k3-bwkey

AND matnr IN matnr

AND bwtar = space.

MOVE-CORRESPONDING qbew TO imbew.

COLLECT imbew.

ENDSELECT.

ENDIF.

READ TABLE imbew INDEX 1.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

*----


eigener Bestand auf Lagerortebene -


*

*----


... auf Materialebene -


*

ELSEIF lgbst = 'X'.

IF xchar = ' '.

SELECT * FROM mard INTO CORRESPONDING FIELDS OF TABLE imard

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND lgort = organ-lgort

AND matnr IN matnr.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

IF NOT charg-low IS INITIAL OR NOT charg-high IS INITIAL.

CLEAR charg.

MESSAGE w285.

  • Charge wird zurückgesetzt.

ENDIF.

*----


... auf Chargenebene -


*

ELSEIF xchar = 'X'.

SELECT * FROM mchb INTO CORRESPONDING FIELDS OF TABLE imchb

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND lgort = organ-lgort

AND matnr IN matnr

AND charg IN charg.

IF sy-subrc NE 0.

MESSAGE s821 WITH matnr werks lgort.

  • Keine Chargen zu Material & in Werk & Lagerort & vorhanden.

PERFORM anforderungsbild.

ENDIF.

ENDIF.

  • Anmerkung: Summe MCHB über alle Chargen

  • = Summe MARD über alle Lagerorte

*----


SONDERBESTÄNDE -


*

  • Bemerkung: Im Gegensatz zu den anderen Sonderbeständen existieren

  • der Lohnbearbeitungs- und Kundenkonsignationsbestand

  • nur auf Werksebene.

*----


Sonderbestand Lohnbearbeitung -


*

ELSEIF sbbst = 'X'.

IF sobkz = 'O'.

SELECT * FROM mslb INTO CORRESPONDING FIELDS OF TABLE xmslb

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND matnr IN matnr

AND charg IN charg

AND sobkz = 'O'.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

SORT xmslb.

LOOP AT xmslb.

MOVE-CORRESPONDING xmslb TO imslb.

COLLECT imslb.

ENDLOOP.

FREE xmslb. REFRESH xmslb.

IF xchar = ' '.

LOOP AT imslb.

MOVE-CORRESPONDING imslb TO imslbx.

COLLECT imslbx.

ENDLOOP.

SORT imslbx.

ELSEIF xchar = 'X'.

LOOP AT imslb.

CHECK imslb-charg IS INITIAL.

DELETE imslb.

ENDLOOP.

ENDIF.

*----


Sonderbestand Kundenkonsignation -


*

ELSEIF sobkz = 'V' OR sobkz = 'W'.

SELECT * FROM msku INTO CORRESPONDING FIELDS OF TABLE xmsku

FOR ALL ENTRIES IN organ WHERE werks EQ organ-werks

AND matnr IN matnr

AND charg IN charg

AND sobkz EQ sobkz.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

SORT xmsku.

LOOP AT xmsku.

MOVE-CORRESPONDING xmsku TO imsku.

COLLECT imsku.

ENDLOOP.

FREE xmsku. REFRESH xmsku.

IF xchar = ' '.

LOOP AT imsku.

MOVE-CORRESPONDING imsku TO imskux.

COLLECT imskux.

ENDLOOP.

SORT imskux.

ELSEIF xchar = 'X'.

LOOP AT imsku.

CHECK imsku-charg IS INITIAL.

DELETE imsku.

ENDLOOP.

ENDIF.

IF sy-subrc NE 0.

MESSAGE s042.

  • Charge ist nicht vorhanden.

PERFORM anforderungsbild.

ENDIF.

*----


Sonderbestand Lieferantenkonsignation -


*

ELSEIF sobkz = 'K' OR sobkz = 'M'.

SELECT * FROM mkol INTO CORRESPONDING FIELDS OF TABLE xmkol

FOR ALL ENTRIES IN organ WHERE werks EQ organ-werks

AND lgort EQ organ-lgort

AND matnr IN matnr

AND charg IN charg

AND sobkz EQ sobkz.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

SORT xmkol.

LOOP AT xmkol.

MOVE-CORRESPONDING xmkol TO imkol.

COLLECT imkol.

ENDLOOP.

FREE xmkol. REFRESH xmkol.

IF xchar = ' '.

LOOP AT imkol.

MOVE-CORRESPONDING imkol TO imkolx.

COLLECT imkolx.

ENDLOOP.

SORT imkolx.

ELSEIF xchar = 'X'.

LOOP AT imkol.

CHECK imkol-charg IS INITIAL.

DELETE imkol.

ENDLOOP.

ENDIF.

IF sy-subrc NE 0.

MESSAGE s042.

  • Charge ist nicht vorhanden.

PERFORM anforderungsbild.

ENDIF.

*----


Projektbestand -


*

ELSEIF sobkz = 'Q'.

SELECT * FROM mspr INTO CORRESPONDING FIELDS OF TABLE xmspr

FOR ALL ENTRIES IN organ WHERE werks EQ organ-werks

AND lgort EQ organ-lgort

AND matnr IN matnr

AND charg IN charg

AND sobkz EQ sobkz.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

SORT xmspr.

LOOP AT xmspr.

MOVE-CORRESPONDING xmspr TO imspr.

COLLECT imspr.

ENDLOOP.

FREE xmspr. REFRESH xmspr.

IF xchar = ' '.

LOOP AT imspr.

MOVE-CORRESPONDING imspr TO imsprx.

COLLECT imsprx.

ENDLOOP.

SORT imsprx.

ELSEIF xchar = 'X'.

LOOP AT imspr.

CHECK imspr-charg IS INITIAL.

DELETE imspr.

ENDLOOP.

ENDIF.

*----


Kundenauftragsbestand -


*

ELSEIF sobkz = 'E'.

SELECT * FROM mska INTO CORRESPONDING FIELDS OF TABLE xmska

FOR ALL ENTRIES IN organ WHERE werks EQ organ-werks

AND lgort EQ organ-lgort

AND matnr IN matnr

AND charg IN charg

AND sobkz EQ sobkz.

IF sy-subrc NE 0.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

SORT xmska.

LOOP AT xmska.

MOVE-CORRESPONDING xmska TO imska.

COLLECT imska.

ENDLOOP.

FREE xmska. REFRESH xmska.

IF xchar = ' '.

LOOP AT imska.

MOVE-CORRESPONDING imska TO imskax.

COLLECT imskax.

ENDLOOP.

SORT imskax.

ELSEIF xchar = 'X'.

LOOP AT imska.

CHECK imska-charg IS INITIAL.

DELETE imska.

ENDLOOP.

ENDIF.

ELSE.

MESSAGE s290.

  • Angegebener Sonderbestand nicht vorhanden.

PERFORM anforderungsbild.

ENDIF.

ENDIF.

ENDFORM. " AKTUELLE_BESTAENDE

*&----


*

*& Form TABELLEN_LESEN

*&----


*

  • Lesen der Materialkurztexte (Tabelle MAKT), *

  • der Mengeneinheiten (Tabelle MARA) und *

  • Mengen- und Wertfortschreibung zum Material (Tabelle T134M) *

  • (Letzteres ist zum Aussortieren der unbewerteten bzw. *

  • kontierten Warenbewegungen notwendig) *

*----


*

FORM tabellen_lesen.

IF bwbst = 'X'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imbew WHERE matnr = imbew-matnr

AND spras = sy-langu.

SELECT matnr meins mtart

FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imbew WHERE matnr = imbew-matnr.

ELSEIF lgbst = 'X'.

IF xchar = ' '.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imard WHERE matnr = imard-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imard WHERE matnr = imard-matnr.

ELSEIF xchar = 'X'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imchb WHERE matnr = imchb-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imchb WHERE matnr = imchb-matnr.

ENDIF.

ELSEIF sbbst = 'X'.

IF sobkz = 'O'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imslb WHERE matnr = imslb-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imslb WHERE matnr = imslb-matnr.

ELSEIF sobkz = 'V' OR sobkz = 'W'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imsku WHERE matnr = imsku-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imsku WHERE matnr = imsku-matnr.

ELSEIF sobkz = 'K' OR sobkz = 'M'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imkol WHERE matnr = imkol-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imkol WHERE matnr = imkol-matnr.

ELSEIF sobkz = 'Q'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imspr WHERE matnr = imspr-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imspr WHERE matnr = imspr-matnr.

ELSEIF sobkz = 'E'.

SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE imakt

FOR ALL ENTRIES IN imska WHERE matnr = imska-matnr

AND spras = sy-langu.

SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE imara

FOR ALL ENTRIES IN imska WHERE matnr = imska-matnr.

ENDIF.

ENDIF.

DATA: BEGIN OF k1 OCCURS 0,

mtart LIKE t134m-mtart,

END OF k1.

REFRESH k1.

LOOP AT imara.

k1-mtart = imara-mtart.

COLLECT k1.

ENDLOOP.

SELECT * FROM t134m INTO CORRESPONDING FIELDS OF TABLE it134m

FOR ALL ENTRIES IN k1 WHERE mtart = k1-mtart

AND bwkey IN bukrs

OR bwkey IN werks.

LOOP AT it134m.

READ TABLE organ WITH KEY bwkey = it134m-bwkey.

IF sy-subrc NE 0.

DELETE it134m.

ENDIF.

ENDLOOP.

  • To find postings with valuation string, but without relevance for

  • the valuated stock, Big-G recommended this logic:

  • Take lines from MSEG where for the combination BUSTW/XAUTO=XBGBB

  • there is an entry in T156W with key BSX.

SELECT bustw xbgbb FROM t156w

INTO CORRESPONDING FIELDS OF TABLE it156w

WHERE vorsl = 'BSX'.

SORT it156w BY bustw xbgbb.

DELETE ADJACENT DUPLICATES FROM it156w.

DELETE it156w WHERE bustw = space.

ENDFORM. " TABELLEN_LESEN

*&----


*

*& Form UNBEWERTET_WEG

*&----


*

  • Löschen der unbewerteten Materialien aus der internen *

  • Tabelle IMBEW

*----


*

FORM unbewertet_weg.

SORT: imara BY matnr, it134m BY bwkey mtart.

LOOP AT imbew.

READ TABLE imara WITH KEY matnr = imbew-matnr BINARY SEARCH.

READ TABLE it134m WITH KEY bwkey = imbew-bwkey

mtart = imara-mtart BINARY SEARCH.

IF sy-subrc NE 0.

  • message ...

DELETE imbew.

ELSE.

IF it134m-wertu = ' '.

DELETE imbew.

ENDIF.

ENDIF.

ENDLOOP.

DESCRIBE TABLE imbew LINES index_0.

ENDFORM. " UNBEWERTET_WEG

*&----


*

*& Form MAT_KOPF_LESEN *

*&----


*

  • Lesen der Materialbelegköpfe mit Buchungsdatum *

  • zwischen 'datum-low' und Gegenwart *

*----


*

FORM mat_kopf_lesen.

  • Es werden alle Materialbelegköpfe aus der Tabelle V_MMIM_MKP (View

  • auf Tabelle MKPF) auf Mandantenebene gelesen, deren Buchungsdatum

  • größer oder gleich der unteren Datumsschranke ist.

SELECT * FROM mkpf INTO CORRESPONDING FIELDS OF TABLE imkpf

WHERE budat >= datum-low.

DESCRIBE TABLE imkpf LINES index_1.

ENDFORM. " MAT_KOPF_LESEN

*&----


*

*& Form MAT_BELEGE_DAZULESEN

*&----


*

  • Materialbelege zu den Materialbelegköpfen lesen *

*----


*

FORM mat_belege_dazulesen.

IF bwbst = 'X'.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN imkpf WHERE mblnr = imkpf-mblnr

AND mjahr = imkpf-mjahr

AND werks IN werks

AND matnr IN matnr

AND bwtar IN bwtar

AND bwart IN bwart

AND ( xwoff = space OR "174094

xwoff is null ) "306038

AND ( sobkz = ' ' OR

sobkz = 'O' OR

sobkz = 'W' OR

sobkz = 'V' OR

kzbws = 'M' OR

kzbws = 'A' ).

ELSEIF lgbst = 'X'.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN imkpf WHERE mblnr = imkpf-mblnr

AND mjahr = imkpf-mjahr

AND werks IN werks

AND lgort IN lgort

AND lgort NE ' '

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = ' '.

ELSEIF sbbst = 'X'.

IF sobkz = 'O' OR sobkz = 'V' OR sobkz = 'W'.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN imkpf WHERE mblnr = imkpf-mblnr

AND mjahr = imkpf-mjahr

AND werks IN werks

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = sobkz.

ELSE.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN imkpf WHERE mblnr = imkpf-mblnr

AND mjahr = imkpf-mjahr

AND werks IN werks

AND lgort IN lgort

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = sobkz.

ENDIF.

ENDIF.

IF bwbst = ' '.

LOOP AT imseg.

IF sobkz = 'O' OR sobkz = 'V' OR sobkz = 'W'.

READ TABLE organ WITH KEY werks = imseg-werks.

ELSE.

READ TABLE organ WITH KEY werks = imseg-werks

lgort = imseg-lgort.

ENDIF.

IF sy-subrc NE 0.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " MAT_BELEGE_DAZULESEN

*&----


*

*& Form MAT_BELEGE_LESEN

*&----


*

  • Lesen der Materialbelege *

*----


*

FORM mat_belege_lesen.

IF lgbst = 'X'.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND lgort = organ-lgort

  • An dieser Stelle werden alle Bestände vernachlässigt, die nicht auf

  • Lagerortebene vorhanden sind. Das bedeutet, daß der Transitbestand,

  • der Umlagerungsbestand auf Werksebene und der WE-Sperrbestand nicht

  • berücksichtigt werden, der Retourensperrbestand hingegen mitgezählt

  • wird.

AND lgort NE ' '

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = ' '.

ELSEIF bwbst = 'X'.

RANGES: r_werks FOR mseg-werks. "144845

REFRESH r_werks. "144845

r_werks-sign = 'I'. "144845

r_werks-option = 'EQ'. "144845

LOOP AT organ. "144845

r_werks-low = organ-werks. "144845

COLLECT r_werks. "144845

ENDLOOP. "144845

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

WHERE werks IN r_werks

AND matnr IN matnr

AND bwtar IN bwtar

AND bwart IN bwart

AND ( xwoff = space OR "174094

xwoff is null ) "306038

AND ( sobkz = ' ' OR

sobkz = 'O' OR

sobkz = 'W' OR

sobkz = 'V' OR

kzbws = 'M' OR

kzbws = 'A' ).

ELSEIF sbbst = 'X'.

IF sobkz = 'O' OR sobkz = 'V' OR sobkz = 'W'.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = sobkz.

ELSE.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE imseg

FOR ALL ENTRIES IN organ WHERE werks = organ-werks

AND lgort = organ-lgort

AND matnr IN matnr

AND charg IN charg

AND bwart IN bwart

AND sobkz = sobkz.

ENDIF.

ENDIF.

IF bwbst = ' '.

LOOP AT imseg.

IF sobkz = 'O' OR sobkz = 'V' OR sobkz = 'W'.

READ TABLE organ WITH KEY werks = imseg-werks.

ELSE.

READ TABLE organ WITH KEY werks = imseg-werks

lgort = imseg-lgort.

ENDIF.

IF sy-subrc NE 0.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

DESCRIBE TABLE imseg LINES index_1.

ENDFORM. " MAT_BELEGE_LESEN

*&----


*

*& Form MAT_KOPF_DAZULESEN

*&----


*

  • Belegköpfe zu den Materialbelegen lesen *

*----


*

FORM mat_kopf_dazulesen.

SELECT mblnr mjahr budat vgart usnam cpudt cputm blart "146202

FROM mkpf INTO CORRESPONDING FIELDS OF TABLE imkpf "146202

FOR ALL ENTRIES IN imseg WHERE mblnr = imseg-mblnr

AND mjahr = imseg-mjahr

AND budat >= datum-low.

ENDFORM. " MAT_KOPF_DAZULESEN

*&----


*

*& Form BESONDERE_MAT_BELEGE

*&----


*

  • weitere Materialbelege zum bewerteten Bestand *

*----


*

FORM besondere_mat_belege_1.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE xmseg

FOR ALL ENTRIES IN imkpf WHERE mblnr = imkpf-mblnr

AND mjahr = imkpf-mjahr

AND werks IN werks

AND matnr IN matnr

AND charg IN charg

AND bwtar IN bwtar

AND bwart IN bwart

AND ( sobkz = 'O' OR

sobkz = 'V' OR

sobkz = 'W' OR

sobkz = 'M' ).

LOOP AT xmseg.

MOVE-CORRESPONDING xmseg TO imseg.

APPEND imseg.

ENDLOOP.

CLEAR xmseg.

FREE xmseg. REFRESH xmseg.

LOOP AT imseg.

IF sobkz = 'O' OR sobkz = 'V' OR sobkz = 'W'.

READ TABLE organ WITH KEY werks = imseg-werks.

ELSE.

READ TABLE organ WITH KEY werks = imseg-werks

lgort = imseg-lgort.

ENDIF.

IF sy-subrc NE 0.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDFORM. " BESONDERE_MAT_BELEGE

*&----


*

*& Form FI_BELEGE_LESEN *

*&----


*

  • Lesen der Buchhaltungsbelege *

*----


*

  • Beim Erfassen der Werte ist es notwendig, die Buchhaltungsbelege *

  • zum Material zu lesen, um abweichende Werte zwischen Wareneingang *

  • und Rechnungseingang sowie Nachbelastungen zu berücksichtigen. *

*----


*

FORM fi_belege_lesen.

  • Not related to note 184465, but a significant performance issue

  • if ORGAN is large due to many plants/storage locations.

DATA: BEGIN OF t_bwkey OCCURS 0, "184465

bwkey LIKE bsim-bwkey, "184465

END OF t_bwkey. "184465

LOOP AT organ. "184465

t_bwkey-bwkey = organ-bwkey. "184465

COLLECT t_bwkey. "184465

ENDLOOP. "184465

READ TABLE t_bwkey INDEX 1. "184465

CHECK sy-subrc = 0. "184465

SELECT * FROM bsim INTO CORRESPONDING FIELDS OF TABLE ibsim "184465

FOR ALL ENTRIES IN t_bwkey WHERE bwkey = t_bwkey-bwkey

AND matnr IN matnr

AND bwtar IN bwtar

AND budat >= datum-low.

CLEAR ibsim. " P30K160185

LOOP AT ibsim. " P30K160185

ON CHANGE OF ibsim-bwkey. " P30K160185

READ TABLE organ WITH KEY bwkey = ibsim-bwkey. " P30K160185

ENDON. " P30K160185

MOVE organ-bukrs TO ibsim-bukrs. " P30K160185

MODIFY ibsim. " P30K160185

ENDLOOP. " P30K160185

ENDFORM. " FI_BELEGE_LESEN

*&----


*

*& Form FI_KOPF_DAZULESEN

*&----


*

  • Lesen des Buchhaltungsbelegkopfes *

*----


*

FORM fi_kopf_dazulesen.

SELECT * FROM bkpf INTO CORRESPONDING FIELDS OF TABLE ibkpf

FOR ALL ENTRIES IN ibsim WHERE bukrs = ibsim-bukrs

AND belnr = ibsim-belnr

AND gjahr = ibsim-gjahr.

ENDFORM. " FI_KOPF_DAZULESEN

*&----


*

*& Form KOPF_IN_MAT_BELEG

*&----


*

  • Buchungsdatum und Erfassungsdatum werden in die

  • Materialbelege geschrieben;

  • außerdem werden diejenigen Materialbelege aussortiert,

  • die vor 'datum-low' gebucht wurden

*----


*

FORM kopf_in_mat_beleg.

SORT imkpf BY mblnr mjahr. "144845

LOOP AT imseg.

READ TABLE imkpf WITH KEY mblnr = imseg-mblnr

mjahr = imseg-mjahr

BINARY SEARCH. "144845

IF sy-subrc = 0.

MOVE-CORRESPONDING imkpf TO imseg.

MODIFY imseg.

ELSE.

DELETE imseg.

ENDIF.

ENDLOOP.

FREE imkpf. "144845

ENDFORM. " KOPF_IN_MAT_BELEG

*&----


*

*& Form BELEGE_SORTIEREN

*&----


*

  • Die Materialbelege werden anhand des Buchungsdatums sortiert.

  • Die Materialbelege mit Buchungsdatum zwischen 'datum-high'

  • und dem aktuellen Datum werden in der internen Tabelle IMSWEG

  • gesammelt, während die Materialbelege mit Buchungsdatum

  • zwischen 'datum-low' und 'datum-high' in der internen Tabelle

  • IMSEG verbleiben.

*----


*

FORM belege_sortieren.

aktdat = sy-datlo + 30.

IF NOT ( datum-high IS INITIAL OR datum-high > aktdat ).

LOOP AT imseg WHERE budat > datum-high. "144845

MOVE-CORRESPONDING imseg TO imsweg.

APPEND imsweg.

DELETE imseg.

ENDLOOP.

ENDIF.

DESCRIBE TABLE imsweg LINES index_2.

ENDFORM. " BELEGE_SORTIEREN

*&----


*

*& Form KONTIERT_AUSSORTIEREN

*&----


*

  • Aussortierung der kontierten Belegpositionen, *

  • da diese Mengen nicht bestandsrelevant sind *

*----


*

FORM kontiert_aussortieren.

LOOP AT imseg WHERE kzvbr <> space AND "144845

( kzbew = 'B' OR kzbew = 'F' ). "144845

READ TABLE imara WITH KEY matnr = imseg-matnr.

READ TABLE it134m WITH KEY mtart = imara-mtart.

IF NOT it134m-mengu IS INITIAL AND NOT it134m-wertu IS INITIAL.

  • Die Felder 'mengu' und 'wertu' (Mengen- bzw. Wertfortschreibung)

  • sind ab Release 3.0 D auch in die Tabelle MSEG aufgenommen.

  • Die Einträge in der Tabelle T134M stellen nach wie vor die generelle

  • Einstellung dar; auf Positionsebene sind jedoch Abänderungen möglich,

  • die anhand der Einträge in der Tabelle MSEG nachverfolgt werden

  • können.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDFORM. " KONTIERT_AUSSORTIEREN

*&----


*

*& Form BEWEGUNGSARTEN_LESEN

*&----


*

  • Lesen der Tabellen zur Bewegungsart *

*----


*

FORM bewegungsarten_lesen.

DATA: BEGIN OF k2 OCCURS 0,

bwart LIKE st156s-bwart,

END OF k2.

REFRESH k2.

LOOP AT imseg.

k2-bwart = imseg-bwart.

COLLECT k2.

ENDLOOP.

  • Read data for movement type from new tables T156SY/C/Q

DATA: t_st156s LIKE st156s OCCURS 0 WITH HEADER LINE.

REFRESH it156.

LOOP AT k2.

REFRESH t_st156s.

CALL FUNCTION 'MB_CONTROL_MOVETYPE_GET'

EXPORTING

i_bwart = k2-bwart

TABLES

te_st156s_tab = t_st156s

EXCEPTIONS

inconsistent_entries = 1

no_entries_found = 2

OTHERS = 3.

IF sy-subrc = 0. "311588

LOOP AT t_st156s.

MOVE-CORRESPONDING t_st156s TO it156.

APPEND it156.

ENDLOOP.

ENDIF.

ENDLOOP.

  • SELECT * FROM T156S INTO CORRESPONDING FIELDS OF TABLE IT156

  • FOR ALL ENTRIES IN K2 WHERE BWART EQ K2-BWART.

SORT it156 BY bwart wertu mengu sobkz kzbew kzzug kzvbr.

SELECT * FROM t156m INTO CORRESPONDING FIELDS OF TABLE it156x

FOR ALL ENTRIES IN it156 WHERE bustm EQ it156-bustm.

  • if not nosto is initial.

  • select bwart xstbw

  • from t156 into corresponding fields of table it156y

  • for all entries in imseg where bwart eq imseg-bwart.

  • endif.

LOOP AT it156.

CLEAR it156-lbbsa.

READ TABLE it156x WITH KEY bustm = it156-bustm.

it156-lbbsa = it156x-lbbsa.

  • if not nosto is initial.

  • read table it156y with key bwart = it156-bwart.

  • move it156y-xstbw to it156-xstbw.

  • endif.

MODIFY it156.

ENDLOOP.

DATA: rc TYPE i. "147374

LOOP AT imseg.

IF NOT nosto IS INITIAL AND

NOT ( imseg-smbln IS INITIAL OR imseg-smblp IS INITIAL ).

MOVE-CORRESPONDING imseg TO storno.

APPEND storno.

DELETE imseg.

CONTINUE.

ENDIF.

READ TABLE it156 WITH KEY bwart = imseg-bwart

wertu = imseg-wertu

mengu = imseg-mengu

sobkz = imseg-sobkz

kzbew = imseg-kzbew

kzzug = imseg-kzzug

kzvbr = imseg-kzvbr BINARY SEARCH.

rc = sy-subrc. "147374

IF imseg-bustm = space AND imseg-bustw = space AND rc = 0. "147374

imseg-bustw = it156-bustw. "147374

imseg-bustm = it156-bustm.

ENDIF. "147374

IF rc = 0. "147374

imseg-lbbsa = it156-lbbsa.

IF NOT it156-bwagr IS INITIAL.

imseg-bwagr = it156-bwagr.

ELSE.

imseg-bwagr = 'REST'.

ENDIF.

ELSE.

imseg-bwagr = 'REST'. "311588

ENDIF. "147374

MODIFY imseg.

ENDLOOP.

ENDFORM. " BEWEGUNGSARTEN_LESEN

*&----


*

*& Form BELEGE_ERGAENZEN (engl. enrich documents)

*&----


*

  • Material documents and FI documents from BSIM are merged together.

  • Complications:

  • - A material document can have more than one FI document.

  • - There are FI documents without material documnts

  • - There are material documents without FI documents

  • - The document type is customizeable

  • - There is no link from the materia document position to

  • the FI document entry in BSIM (except URZEILE, but this

  • can be filled incorrectly)

*----


*

FORM belege_ergaenzen. "Version from note 204872

  • This table contains the like from material document to FI document

  • (only header level) via AWKEY in BKPF.

DATA: BEGIN OF keytab OCCURS 0,

bukrs LIKE bkpf-bukrs,

belnr LIKE bkpf-belnr,

gjahr LIKE bkpf-gjahr,

awkey LIKE bkpf-awkey,

blart LIKE bkpf-blart,

budat LIKE bkpf-budat,

accessed TYPE c,

END OF keytab.

  • Structure to separate AWKEY into MBLNR/MJAHR in a clean way.

DATA: BEGIN OF matkey,

mblnr LIKE mkpf-mblnr,

mjahr LIKE mkpf-mjahr,

END OF matkey.

  • Eliminate material documents with valuation string, but without

  • relevance to the valuated stock. IT156W contains all valuation

  • strings with posting key BSX. XBGBB says: "I am an accrural posting".

  • For more details please ask Big-G.

LOOP AT imseg.

READ TABLE it156w WITH KEY bustw = imseg-bustw

xbgbb = imseg-xauto

TRANSPORTING NO FIELDS

BINARY SEARCH.

IF sy-subrc <> 0.

DELETE imseg.

ENDIF.

ENDLOOP.

  • For all available FI documents from BSIM, read the header data

  • from BKPF to get the link to the originating material document.

READ TABLE ibsim INDEX 1.

IF sy-subrc = 0.

SELECT bukrs belnr gjahr awkey blart budat

FROM bkpf

INTO CORRESPONDING FIELDS OF TABLE keytab

FOR ALL ENTRIES IN ibsim WHERE bukrs = ibsim-bukrs

AND belnr = ibsim-belnr

AND gjahr = ibsim-gjahr

AND awtyp = 'MKPF'.

SORT keytab BY awkey blart budat.

ENDIF.

  • For each material document, write the number of the created

  • FI document into IMSEG. If there are more than one FI document,

  • the one with the same BLART and the same posting date is chosen.

  • BLART alone is not sufficient as the document type of the

  • revaluation document is customizeable (T158-BLAUM).

  • If a document as been found to have an entry in KEYTAB, this

  • entry is marked as "accessed". So later on the FI document is

  • known to be already in the list via this material document.

LOOP AT imseg.

matkey-mblnr = imseg-mblnr.

matkey-mjahr = imseg-mjahr.

READ TABLE keytab WITH KEY awkey = matkey

blart = imseg-blart

budat = imseg-budat

BINARY SEARCH.

IF sy-subrc = 0.

keytab-accessed = 'X'.

MODIFY keytab INDEX sy-tabix.

imseg-belnr = keytab-belnr.

imseg-gjahr = keytab-gjahr.

MODIFY imseg.

ENDIF.

ENDLOOP.

  • Append FI-documents without material documents (price change,

  • invoice, revaluation document, ...).

  • To find these, we try to locate the document in KEYTAB. If is is

  • contained here and has been accessed, it is already covered.

CLEAR imseg.

SORT organ BY bwkey.

SORT ibsim BY bwkey matnr shkzg DESCENDING.

SORT keytab BY bukrs belnr gjahr blart budat.

LOOP AT ibsim.

READ TABLE keytab WITH KEY bukrs = ibsim-bukrs

belnr = ibsim-belnr

gjahr = ibsim-gjahr

blart = ibsim-blart

budat = ibsim-budat

BINARY SEARCH

TRANSPORTING accessed awkey.

IF sy-subrc = 0.

  • If the document has already been accessed when looping

  • over the material documents --> skip.

CHECK keytab-accessed IS INITIAL.

ENDIF.

  • These documents have only posted value to MBEW/EBEW/QBEW

CLEAR ibsim-menge.

MOVE-CORRESPONDING ibsim TO imseg.

READ TABLE organ WITH KEY bwkey = ibsim-bwkey BINARY SEARCH.

imseg-werks = organ-werks.

imseg-waers = organ-waers.

APPEND imseg.

ENDLOOP.

FREE ibsim.

  • INDEX_3 is evaluated after returning from this routine.

  • This programming style is...(censored)

DESCRIBE TABLE imseg LINES index_3.

ENDFORM. "Version from note 204872

*&----


*

*& Form SUMMEN_BILDEN

*&----


*

  • Bestandssummen zur Berechnung der Bestände *

  • zu 'datum-low' und 'datum-high' *

*----


*

FORM summen_bilden.

  • Some explanatory words on the strategy of material

  • counting/valuation:

  • ======================================================

  • 1) Stock overview (no valuation):

  • The material document is accepted, if is has not been created

  • automatically or if it is not related to movements out of

  • the stock. For example, if a stock transfer is posted, the

  • system creates a material document with two lines: Out of

  • the old stock (accepted) and into the transfer stock (rejected,

  • because the material is not yet visible in the target location).

  • When the movement into the stock is posted, this is accepted.

  • 2) Valuated stock:

  • a) Movements within a single plant (MA05, MA06 =

  • movement types 313-316) are ignored.

  • b) The moving of material out of a plant (303/304)

  • is counted and valuated in the emitting plant and

  • the target plant. The moving in

  • (305/306) is ignored, because

  • the valuated stock appears in the target at the

  • very moment of leaving the emitter.

  • c) Material documents without valuation string are ignored.

*----


Summen von 'datum-high' bis Gegenwart -


*

IF NOT index_2 IS INITIAL.

IF bwbst = ' '.

IF xchar = ' '.

SORT imsweg BY werks matnr shkzg. "auf Materialebene

LOOP AT imsweg.

IF ( imsweg-xauto IS INITIAL ) OR

( imsweg-bustm <> 'MA02' AND imsweg-bustm <> 'MA05' ).

MOVE-CORRESPONDING imsweg TO weg_mat.

COLLECT weg_mat.

ELSE.

DELETE imsweg.

ENDIF.

ENDLOOP.

ELSEIF xchar = 'X'.

SORT imsweg BY werks matnr charg shkzg. "auf Chargenebene

LOOP AT imsweg.

IF ( imsweg-xauto IS INITIAL ) OR

( imsweg-bustm <> 'MA02' AND imsweg-bustm <> 'MA05' ).

MOVE-CORRESPONDING imsweg TO weg_char.

COLLECT weg_char.

ELSE.

DELETE imsweg.

ENDIF.

ENDLOOP.

ENDIF.

ELSEIF bwbst = 'X'.

SORT imsweg BY werks matnr shkzg.

LOOP AT imsweg.

MOVE-CORRESPONDING imsweg TO mat_weg.

COLLECT mat_weg.

ENDLOOP.

LOOP AT mat_weg.

IF curm = '1'.

mat_weg-bwkey = mat_weg-werks.

ELSEIF curm = '3'.

READ TABLE organ WITH KEY werks = mat_weg-werks.

mat_weg-bwkey = organ-bwkey.

ENDIF.

MODIFY mat_weg.

ENDLOOP.

IF curm = '3'.

SORT mat_weg BY bwkey matnr shkzg.

LOOP AT mat_weg.

MOVE-CORRESPONDING mat_weg TO mat_weg_buk.

COLLECT mat_weg_buk.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

*----


Summen von 'datum-low' bis 'datum-high' -


*

IF bwbst = ' '.

IF xchar = ' '. "auf Materialebene

SORT imseg BY werks matnr shkzg DESCENDING.

LOOP AT imseg.

IF ( imseg-xauto IS INITIAL ) OR

( imseg-bustm <> 'MA02' AND imseg-bustm <> 'MA05' ).

MOVE-CORRESPONDING imseg TO sum_mat.

COLLECT sum_mat.

ELSE.

DELETE imseg.

ENDIF.

ENDLOOP.

ELSEIF xchar = 'X'. "auf Chargenebene

SORT imseg BY werks matnr charg shkzg DESCENDING.

LOOP AT imseg.

IF ( imseg-xauto IS INITIAL ) OR

( imseg-bustm <> 'MA02' AND imseg-bustm <> 'MA05' ).

MOVE-CORRESPONDING imseg TO sum_char.

COLLECT sum_char.

ELSE.

DELETE imseg.

ENDIF.

ENDLOOP.

ENDIF.

ELSEIF bwbst = 'X'.

SORT imseg BY werks matnr shkzg DESCENDING.

LOOP AT imseg.

MOVE-CORRESPONDING imseg TO mat_sum.

COLLECT mat_sum.

ENDLOOP.

LOOP AT mat_sum.

IF curm = '1'.

mat_sum-bwkey = mat_sum-werks.

ELSEIF curm = '3'.

READ TABLE organ WITH KEY werks = mat_sum-werks.

mat_sum-bwkey = organ-bwkey.

ENDIF.

MODIFY mat_sum.

ENDLOOP.

IF curm = '3'. "Materialbelege auf Buchungskreisebene

SORT mat_sum BY bwkey matnr shkzg DESCENDING.

LOOP AT mat_sum.

MOVE-CORRESPONDING mat_sum TO mat_sum_buk.

COLLECT mat_sum_buk.

ENDLOOP.

ENDIF.

SORT ibsim BY bwkey matnr shkzg DESCENDING. "Buchhaltungsbelege

LOOP AT ibsim.

MOVE-CORRESPONDING ibsim TO fi_sum.

COLLECT fi_sum.

IF ibsim-blart = 'RE' OR

ibsim-blart = 'RN' OR

ibsim-blart = 'PR'.

MOVE-CORRESPONDING ibsim TO fi_nach.

COLLECT fi_nach.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " SUMMEN_BILDEN

*&----


*

*& Form BESTAENDE_BERECHNEN

*&----


*

  • Berechnung der Bestände zu 'datum-high' und 'datum-low' *

*----


*

FORM bestaende_berechnen.

SORT imara BY matnr. "144845

SORT organ BY bwkey. "144845

*----


Bestände zu 'datum-high' -


*

IF bwbst = 'X'.

SORT mat_weg BY bwkey matnr shkzg. "144845

SORT mat_weg_buk BY bwkey matnr shkzg. "144845

LOOP AT imbew.

CLEAR: mat_weg, mat_weg_buk. "184465

MOVE-CORRESPONDING imbew TO bestand.

IF curm = '1'.

READ TABLE mat_weg WITH KEY bwkey = imbew-bwkey

matnr = imbew-matnr

shkzg = 'S' BINARY SEARCH.

bestand-endmenge = imbew-lbkum - mat_weg-menge.

bestand-endwert = imbew-salk3 - mat_weg-dmbtr. "184465

ELSEIF curm = '3'.

READ TABLE mat_weg_buk WITH KEY bwkey = imbew-bwkey

matnr = imbew-matnr

shkzg = 'S' BINARY SEARCH.

bestand-endmenge = imbew-lbkum - mat_weg_buk-menge.

bestand-endwert = imbew-salk3 - mat_weg_buk-dmbtr. "184465

ENDIF. "184465

CLEAR: mat_weg, mat_weg_buk. "184465

IF curm = '1'.

READ TABLE mat_weg WITH KEY bwkey = imbew-bwkey

matnr = imbew-matnr

shkzg = 'H' BINARY SEARCH.

bestand-endmenge = bestand-endmenge + mat_weg-menge.

bestand-endwert = bestand-endwert + mat_weg-dmbtr. "184465

ELSEIF curm = '3'.

READ TABLE mat_weg_buk WITH KEY bwkey = imbew-bwkey

matnr = imbew-matnr

shkzg = 'H' BINARY SEARCH.

bestand-endmenge = bestand-endmenge + mat_weg_buk-menge.

bestand-endwert = bestand-endwert + mat_weg_buk-dmbtr. "184465

ENDIF.

READ TABLE imara WITH KEY matnr = bestand-matnr BINARY SEARCH.

MOVE imara-meins TO bestand-meins.

READ TABLE organ WITH KEY bwkey = bestand-bwkey BINARY SEARCH.

MOVE organ-waers TO bestand-waers.

COLLECT bestand.

ENDLOOP.

ELSEIF lgbst = 'X'.

*----


... auf Materialebene -


*

IF xchar = ' '.

LOOP AT imard.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imard TO bestand.

  • In 'bestand' wird über die Lagerorte summiert.

READ TABLE weg_mat WITH KEY werks = imard-werks

lgort = imard-lgort " P30K140665

matnr = imard-matnr

shkzg = 'S'.

bestand-endmenge = imard-labst + imard-insme + imard-speme

+ imard-einme + imard-retme

- weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imard-werks

lgort = imard-lgort " P30K140665

matnr = imard-matnr

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

*----


... auf Chargenebene -


*

ELSEIF xchar = 'X'.

LOOP AT imchb.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imchb TO bestand.

READ TABLE weg_char WITH KEY werks = imchb-werks

lgort = imchb-lgort " P30K140665

matnr = imchb-matnr

charg = imchb-charg

shkzg = 'S'.

bestand-endmenge = imchb-clabs + imchb-cinsm + imchb-cspem

+ imchb-ceinm + imchb-cretm

- weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imchb-werks

lgort = imchb-lgort " P30K140665

matnr = imchb-matnr

charg = imchb-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

*----


Sonderbestände -


*

ELSEIF sbbst = 'X'.

IF sobkz = 'O'.

IF xchar = ' '.

LOOP AT imslbx.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imslbx TO bestand.

READ TABLE weg_mat WITH KEY werks = imslbx-werks

matnr = imslbx-matnr

shkzg = 'S'.

bestand-endmenge = imslbx-lblab + imslbx-lbins + imslbx-lbein

- weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imslbx-werks

matnr = imslbx-matnr

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT imslb.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imslb TO bestand.

READ TABLE weg_char WITH KEY werks = imslb-werks

matnr = imslb-matnr

charg = imslb-charg

shkzg = 'S'.

bestand-endmenge = imslb-lblab + imslb-lbins + imslb-lbein

- weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imslb-werks

matnr = imslb-matnr

charg = imslb-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'V' OR sobkz = 'W'.

IF xchar = ' '.

LOOP AT imskux.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imskux TO bestand.

READ TABLE weg_mat WITH KEY werks = imskux-werks

matnr = imskux-matnr

shkzg = 'S'.

bestand-endmenge = imskux-kulab + imskux-kuins + imskux-kuein

- weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imskux-werks

matnr = imskux-matnr

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT imsku.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imsku TO bestand.

READ TABLE weg_char WITH KEY werks = imsku-werks

matnr = imsku-matnr

charg = imsku-charg

shkzg = 'S'.

bestand-endmenge = imsku-kulab + imsku-kuins + imsku-kuein

- weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imsku-werks

matnr = imsku-matnr

charg = imsku-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'K' OR sobkz = 'M'.

IF xchar = ' '.

LOOP AT imkolx.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imkolx TO bestand.

READ TABLE weg_mat WITH KEY werks = imkolx-werks

matnr = imkolx-matnr

lgort = imkolx-lgort

shkzg = 'S'.

bestand-endmenge = imkolx-slabs + imkolx-sinsm + imkolx-seinm

+ imkolx-sspem - weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imkolx-werks

matnr = imkolx-matnr

lgort = imkolx-lgort

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT imkol.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imkol TO bestand.

READ TABLE weg_char WITH KEY werks = imkol-werks

matnr = imkol-matnr

lgort = imkol-lgort

charg = imkol-charg

shkzg = 'S'.

bestand-endmenge = imkol-slabs + imkol-sinsm + imkol-seinm

+ imkol-sspem - weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imkol-werks

matnr = imkol-matnr

lgort = imkol-lgort

charg = imkol-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'Q'.

IF xchar = ' '.

LOOP AT imsprx.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imsprx TO bestand.

READ TABLE weg_mat WITH KEY werks = imsprx-werks

matnr = imsprx-matnr

lgort = imsprx-lgort

shkzg = 'S'.

bestand-endmenge = imsprx-prlab + imsprx-prins + imsprx-prspe

+ imsprx-prein - weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imsprx-werks

matnr = imsprx-matnr

lgort = imsprx-lgort

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT imspr.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imspr TO bestand.

READ TABLE weg_char WITH KEY werks = imspr-werks

matnr = imspr-matnr

lgort = imspr-lgort

charg = imspr-charg

shkzg = 'S'.

bestand-endmenge = imspr-prlab + imspr-prins + imspr-prspe

+ imspr-prein - weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imspr-werks

matnr = imspr-matnr

lgort = imspr-lgort

charg = imspr-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'E'.

IF xchar = ' '.

LOOP AT imskax.

CLEAR weg_mat-menge.

MOVE-CORRESPONDING imskax TO bestand.

READ TABLE weg_mat WITH KEY werks = imskax-werks

matnr = imskax-matnr

lgort = imskax-lgort

shkzg = 'S'.

bestand-endmenge = imskax-kalab + imskax-kains + imskax-kaspe

+ imskax-kaein - weg_mat-menge.

CLEAR weg_mat-menge.

READ TABLE weg_mat WITH KEY werks = imskax-werks

matnr = imskax-matnr

lgort = imskax-lgort

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_mat-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT imska.

CLEAR weg_char-menge.

MOVE-CORRESPONDING imska TO bestand.

READ TABLE weg_char WITH KEY werks = imska-werks

matnr = imska-matnr

lgort = imska-lgort

charg = imska-charg

shkzg = 'S'.

bestand-endmenge = imska-kalab + imska-kains + imska-kaspe

+ imska-kaein - weg_char-menge.

CLEAR weg_char-menge.

READ TABLE weg_char WITH KEY werks = imska-werks

matnr = imska-matnr

lgort = imska-lgort

charg = imska-charg

shkzg = 'H'.

bestand-endmenge = bestand-endmenge + weg_char-menge.

READ TABLE imara WITH KEY matnr = bestand-matnr.

MOVE imara-meins TO bestand-meins.

COLLECT bestand.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

*----


Bestände zu 'datum-low' -


*

IF bwbst = 'X'.

SORT mat_sum BY bwkey matnr shkzg. "144845

SORT mat_sum_buk BY bwkey matnr shkzg. "144845

LOOP AT bestand.

CLEAR: mat_sum, mat_sum_buk. "184465

IF curm = '1'.

READ TABLE mat_sum WITH KEY bwkey = bestand-bwkey

matnr = bestand-matnr

shkzg = 'S' BINARY SEARCH.

MOVE mat_sum-menge TO bestand-soll.

MOVE mat_sum-dmbtr TO bestand-sollwert. "184465

ELSEIF curm = '3'.

READ TABLE mat_sum_buk WITH KEY bwkey = bestand-bwkey

matnr = bestand-matnr

shkzg = 'S' BINARY SEARCH.

MOVE mat_sum_buk-menge TO bestand-soll.

MOVE mat_sum_buk-dmbtr TO bestand-sollwert. "184465

ENDIF.

CLEAR: mat_sum, mat_sum_buk. "184465

IF curm = '1'.

READ TABLE mat_sum WITH KEY bwkey = bestand-bwkey

matnr = bestand-matnr

shkzg = 'H' BINARY SEARCH.

MOVE mat_sum-menge TO bestand-haben.

MOVE mat_sum-dmbtr TO bestand-habenwert. "184465

ELSEIF curm = '3'.

READ TABLE mat_sum_buk WITH KEY bwkey = bestand-bwkey

matnr = bestand-matnr

shkzg = 'H' BINARY SEARCH.

MOVE mat_sum_buk-menge TO bestand-haben.

MOVE mat_sum_buk-dmbtr TO bestand-habenwert. "184465

ENDIF.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

bestand-anfwert = bestand-endwert - bestand-sollwert

+ bestand-habenwert.

MODIFY bestand.

ENDLOOP.

*----


... auf Materialebene -


*

ELSEIF lgbst = 'X'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

*----


... auf Chargenebene -


*

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_char-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_char-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

*----


Sonderbestände -


*

ELSEIF sbbst = 'X'.

IF sobkz = 'O'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'V' OR sobkz = 'W'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_char-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_char-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'K'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_char-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_char-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'Q'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_char-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_char-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

ELSEIF sobkz = 'E'.

IF xchar = ' '.

LOOP AT bestand.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'S'.

MOVE sum_mat-menge TO bestand-soll.

CLEAR sum_mat-menge.

READ TABLE sum_mat WITH KEY werks = bestand-werks

matnr = bestand-matnr

shkzg = 'H'.

MOVE sum_mat-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ELSEIF xchar = 'X'.

LOOP AT bestand.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'S'.

MOVE sum_char-menge TO bestand-soll.

CLEAR sum_char-menge.

READ TABLE sum_char WITH KEY werks = bestand-werks

matnr = bestand-matnr

charg = bestand-charg

shkzg = 'H'.

MOVE sum_char-menge TO bestand-haben.

bestand-anfmenge = bestand-endmenge - bestand-soll

+ bestand-haben.

MODIFY bestand.

ENDLOOP.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " BESTAENDE_BERECHNEN

*&----


*

*& Form BESTAENDE_AUSGEBEN

*&----


*

  • Ausgabe der Bestände zu 'datum-low' und 'datum-high' *

  • und der Zu- und Abgänge in diesem Zeitintervall *

  • für den Lagerort-/Chargen- und den Sonderbestand *

  • bzw. für den bewerteten Bestand *

*----


*

FORM bestaende_ausgeben.

IF bwbst IS INITIAL.

SORT bestand BY matnr werks.

**>>>>>>>>>>>>>>>>>>>> Start of insertion >>>>>>>>>>>

*********For Header data following Lines are inserted

***Purpose :- convert qty & Unit into Alternate unit

***Modified By Sunil

    • Date 27/05/2002

****************************************************

data: u1 like marm-umrez,

u2 like marm-umren.

loop at bestand.

if bestand-meins ne aunit.

select single * from marm

where matnr = bestand-matnr and

meinh = aunit.

u1 = marm-umrez.

u2 = marm-umren.

if u1 ne u2.

if u1 > u2.

bestand-endmenge_alt = bestand-endmenge / u1.

bestand-anfmenge_ALT = bestand-anfmenge / u1.

bestand-SOLL_ALT = bestand-SOLL / u1.

bestand-HABEN_ALT = bestand-HABEN / u1.

else.

bestand-endmenge_alt = bestand-endmenge * u1.

bestand-anfmenge_ALT = bestand-anfmenge * u1.

bestand-SOLL_ALT = bestand-SOLL * u1.

bestand-HABEN_ALT = bestand-HABEN * u1.

endif.

endif.

BEstand-meins_ALT = AUNIT.

MODIFY BESTAND.

endif.

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BEstand-matnr

  • meins_imp = BEstand-meins

  • unit_new_imp = aunit

  • unit_old_imp = BEstand-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*bestand-endmenge_ALT = qty1.

*

                              • convert ANFMENGE ****************

*clear: qty,qty1.

*

*qty = bestand-anfmenge.

*

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BEstand-matnr

  • meins_imp = BEstand-meins

  • unit_new_imp = aunit

  • unit_old_imp = BEstand-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*bestand-anfmenge_ALT = qty1.

                            • convert SOLL ****************

*clear: qty,qty1.

*

*qty = bestand-SOLL.

*

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BEstand-matnr

  • meins_imp = BEstand-meins

  • unit_new_imp = aunit

  • unit_old_imp = BEstand-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*bestand-SOLL_ALT = qty1.

*

                              • convert SOLL ****************

*clear: qty,qty1.

*

*qty = bestand-HABEN.

*

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BEstand-matnr

  • meins_imp = BEstand-meins

  • unit_new_imp = aunit

  • unit_old_imp = BEstand-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*bestand-HABEN_ALT = qty1.

*

*******************************************

*BEstand-meins_ALT = AUNIT.

*MODIFY BESTAND.

*ENDIF.

ENDLOOP.

**>>>>>>>>>>>>>>>>>>>>> END OF INSERTION >>>>>>>>>>>>>>

ELSEIF NOT bwbst IS INITIAL.

SORT bestand BY matnr bwkey.

ENDIF.

IF xsum IS INITIAL.

READ TABLE bestand INDEX 1.

MOVE-CORRESPONDING bestand TO bestand1.

APPEND bestand1.

CLEAR belege. REFRESH belege.

IF bwbst IS INITIAL.

LOOP AT imseg WHERE matnr = bestand-matnr

AND werks = bestand-werks.

CHECK xchar IS INITIAL OR imseg-charg = bestand-charg.

MOVE-CORRESPONDING imseg TO belege1.

APPEND belege1.

ENDLOOP.

ELSEIF NOT bwbst IS INITIAL.

SORT organ BY werks. "184465

LOOP AT imseg WHERE matnr = bestand-matnr. "184465

READ TABLE organ WITH KEY werks = imseg-werks BINARY SEARCH.

CHECK organ-bwkey = bestand-bwkey. "184465

MOVE-CORRESPONDING imseg TO belege1.

APPEND belege1.

ENDLOOP.

ENDIF.

SORT belege1 BY budat mblnr zeile.

  • PERFORM farbinfo1.

events-name = 'TOP_OF_PAGE'.

events-form = 'UEBERSCHRIFT1'.

APPEND events.

events-name = 'END_OF_LIST'.

events-form = 'LISTE'.

APPEND events.

PERFORM listausgabe1.

ELSEIF NOT xsum IS INITIAL.

CLEAR belege. REFRESH belege.

LOOP AT bestand.

PERFORM ueberschrift.

ENDLOOP.

ENDIF.

ENDFORM. " BESTAENDE_AUSGEBEN

*----


*

  • FORM ANFORDERUNGSBILD *

*----


*

  • Rücksprung zum Anforderungsbild *

*----


*

FORM anforderungsbild.

IF NOT sy-calld IS INITIAL.

LEAVE.

ELSE.

LEAVE TO TRANSACTION sy-tcode.

ENDIF.

ENDFORM. " ANFORDERUNGSBILD

*&----


*

*& Form BESONDERE_MAT_BELEGE_2

*&----


*

  • text *

*----


*

FORM besondere_mat_belege_2.

SELECT * FROM mseg INTO CORRESPONDING FIELDS OF TABLE xmseg

WHERE werks IN werks

AND lgort IN lgort

AND matnr IN matnr

AND ( sobkz = 'O' OR

sobkz = 'V' OR

sobkz = 'W' OR

sobkz = 'M' ).

LOOP AT xmseg.

MOVE-CORRESPONDING xmseg TO imseg.

APPEND imseg.

ENDLOOP.

CLEAR xmseg.

FREE xmseg. REFRESH xmseg.

DESCRIBE TABLE imseg LINES index_1.

ENDFORM. " BESONDERE_MAT_BELEGE_2

*&----


*

*& Form FI_BELEGE_DAZULESEN

*&----


*

  • Lesen der Buchhaltungsbelege *

*----


*

FORM fi_belege_dazulesen.

RANGES: r_bwkey FOR bsim-bwkey. "144845

REFRESH r_bwkey. "144845

r_bwkey-sign = 'I'. "144845

r_bwkey-option = 'EQ'. "144845

LOOP AT organ. "144845

r_bwkey-low = organ-bwkey. "144845

COLLECT r_bwkey. "144845

ENDLOOP. "144845

SELECT * FROM bsim INTO CORRESPONDING FIELDS OF TABLE ibsim

WHERE bwkey IN r_bwkey

AND matnr IN matnr

AND bwtar IN bwtar

AND budat >= datum-low.

SORT organ BY bwkey.

LOOP AT ibsim.

ON CHANGE OF ibsim-bwkey.

READ TABLE organ WITH KEY bwkey = ibsim-bwkey BINARY SEARCH.

ENDON.

MOVE organ-bukrs TO ibsim-bukrs.

MODIFY ibsim.

ENDLOOP.

ENDFORM. " FI_BELEGE_DAZULESEN

*&----


*

*& Form F4_FOR_VARIANT

*&----


*

  • F4-Hilfe für Reportvariante *

*----


*

FORM f4_for_variant.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = variante

i_save = variant_save

  • it_default_fieldcat =

IMPORTING

e_exit = variant_exit

es_variant = def_variante

EXCEPTIONS

not_found = 2.

IF sy-subrc = 2.

MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

IF variant_exit = space.

p_vari = def_variante-variant.

ENDIF.

ENDIF.

ENDFORM. " F4_FOR_VARIANT

*&----


*

*& Form BELEGSELEKTION

*&----


*

  • text

*----


*

FORM belegselektion.

  • If no date is given at all, the range is set to the maximum

  • extend (1.1.0000 - 31.12.9999).

  • If only datum-low is set, it is interpreted as the day for

  • which the analysis is wanted --> datum-high is filled up.

IF datum-low IS INITIAL.

datum-low = '00000101'.

IF datum-high IS INITIAL.

datum-high = '99991231'.

ENDIF.

ELSE.

IF datum-high IS INITIAL.

datum-high = datum-low.

ENDIF.

ENDIF.

MOVE: datum-low(4) TO jahrlow,

datum-low+4(2) TO monatlow,

datum-low+6(2) TO taglow,

datum-high(4) TO jahrhigh,

datum-high+4(2) TO monathigh,

datum-high+6(2) TO taghigh.

SET TITLEBAR 'MAN'

WITH taglow monatlow jahrlow taghigh monathigh jahrhigh.

IF bwbst = 'X'.

PERFORM unbewertet_weg.

IF index_0 IS INITIAL.

MESSAGE s289.

  • Kein Material in Selektion vorhanden.

PERFORM anforderungsbild.

ENDIF.

ENDIF.

  • Wenn kein Material eingegeben wird, werden die Materialbelege über

  • das Buchungsdatum, d.h. zunächst über die Belegköpfe eingelesen.

  • Sobald jedoch mindestens ein Material vorgegeben wird, werden zur

  • Verbesserung der Performance die Materialbelege vor den Materialbeleg-

  • köpfen gelesen.

IF matnr IS INITIAL.

*----


Materialbelegköpfe lesen aus der Tabelle MKPF -


*

PERFORM mat_kopf_lesen. "Selektion über Buchungsdatum

IF index_1 IS INITIAL.

MESSAGE s842.

  • Zu den vorgegebenen Daten ist kein Materialbeleg vorhanden.

PERFORM anforderungsbild.

ENDIF.

*------- Lesen der Materialbelegpositionen aus der Tabelle MSEG -


*

PERFORM mat_belege_dazulesen.

IF bwbst = 'X'.

PERFORM fi_belege_dazulesen.

ENDIF.

ELSEIF NOT matnr IS INITIAL.

PERFORM mat_belege_lesen.

IF bwbst = 'X'.

IF index_1 IS INITIAL.

MESSAGE s842.

  • Zu den vorgegebenen Daten ist kein Materialbeleg vorhanden.

ENDIF.

PERFORM fi_belege_lesen.

ENDIF.

IF index_1 IS INITIAL.

MESSAGE s842.

  • Zu den vorgegebenen Daten ist kein Materialbeleg vorhanden.

ELSEIF NOT index_1 IS INITIAL.

PERFORM mat_kopf_dazulesen.

ENDIF.

ENDIF.

IF NOT index_1 IS INITIAL.

PERFORM kopf_in_mat_beleg.

IF sbbst IS INITIAL.

PERFORM kontiert_aussortieren.

ENDIF.

PERFORM bewegungsarten_lesen.

IF NOT nosto IS INITIAL.

PERFORM storno.

ENDIF.

IF bwbst = 'X'.

PERFORM belege_ergaenzen.

IF index_3 IS INITIAL.

MESSAGE s842.

  • Zu den vorgegebenen Daten ist kein Materialbeleg vorhanden.

PERFORM anforderungsbild.

ENDIF.

ENDIF.

PERFORM belege_sortieren.

ENDIF.

ENDFORM. " BELEGSELEKTION

*&----


*

*& Form USER_COMMAND *

*&----


*

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

TYPES: BEGIN OF ty_s_sel,

mblnr LIKE imseg-mblnr,

mjahr LIKE imseg-mjahr,

zeile LIKE imseg-zeile,

bukrs LIKE imseg-bukrs,

belnr LIKE imseg-belnr,

gjahr LIKE imseg-gjahr,

END OF ty_s_sel,

ty_t_sel TYPE ty_s_sel OCCURS 0.

DATA: l_value(10) TYPE n,

ls_sel TYPE ty_s_sel,

lt_sel TYPE ty_t_sel,

l_lines LIKE sy-tabix,

ls_fc TYPE slis_fieldcat_alv,

lt_fc TYPE slis_t_fieldcat_alv,

ls_selfield TYPE slis_selfield,

l_fi_doc.

  • Unfortunately the output list of this report consists

  • of several ALVs, one started at the end-event of the other.

  • This abstrucse programming style was chosen to create a list

  • layout similar to the one in release 3.1. Now this causes a severe

  • problem: When selecting a line, we do not know which ALV (and there-

  • for which line in table IMSEG) has been selected. We can only use

  • the value of the selected field to access the data-table.

  • In case of ambiguities, a popup has to be transmitted where the

  • user has to reselect the document he wants to see. This is

  • difficult to understand, if you do not know the problems of

  • programming ABAP.

  • This is a nice example of unnecessarily copying old crap.

CASE r_ucomm.

WHEN '9PBP'.

  • Get line of IMSEG which "look" like the one selected

l_value = rs_selfield-value.

CHECK NOT l_value IS INITIAL. "204872

IF rs_selfield-sel_tab_field = 'BELEGE-MBLNR' OR

rs_selfield-sel_tab_field = 'BELEGE1-MBLNR'.

LOOP AT imseg WHERE mblnr = l_value.

ls_sel-mblnr = imseg-mblnr.

ls_sel-mjahr = imseg-mjahr.

ls_sel-zeile = imseg-zeile.

COLLECT ls_sel INTO lt_sel.

ENDLOOP.

ELSEIF rs_selfield-sel_tab_field = 'BELEGE-BELNR' OR

rs_selfield-sel_tab_field = 'BELEGE1-BELNR'.

l_fi_doc = 'X'.

LOOP AT imseg WHERE belnr = l_value.

ls_sel-belnr = imseg-belnr.

ls_sel-gjahr = imseg-gjahr.

ls_sel-bukrs = imseg-bukrs.

COLLECT ls_sel INTO lt_sel.

ENDLOOP.

ENDIF.

SORT lt_sel BY mjahr mblnr zeile bukrs belnr gjahr.

  • Read first line. If L_LINES = 1, LS_SEL is filled properly.

READ TABLE lt_sel INTO ls_sel INDEX 1.

DESCRIBE TABLE lt_sel LINES l_lines.

  • If no line found, the cursor was not on a useful value.

IF l_lines = 0.

MESSAGE s270.

EXIT.

ENDIF.

  • If more than one line found, it gets difficult. We send a popup

  • where the user may select a single line.

IF l_lines > 1.

  • Create fieldcatalog

DEFINE fc_add.

ls_fc-fieldname = &1.

ls_fc-ref_tabname = &2.

ls_fc-ref_fieldname = &3.

append ls_fc to lt_fc.

END-OF-DEFINITION.

CLEAR ls_sel.

IF l_fi_doc IS INITIAL.

fc_add 'MBLNR' 'MKPF' 'MBLNR'.

fc_add 'MJAHR' 'MKPF' 'MJAHR'.

fc_add 'ZEILE' 'MSEG' 'ZEILE'.

ELSE.

fc_add 'BUKRS' 'BKPF' 'BUKRS'.

fc_add 'BELNR' 'BKPF' 'BELNR'.

fc_add 'GJAHR' 'BKPF' 'GJAHR'.

ENDIF.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

i_zebra = 'X'

i_tabname = 'LT_SEL'

it_fieldcat = lt_fc

IMPORTING

es_selfield = ls_selfield

TABLES

t_outtab = lt_sel.

  • Read table with the unique index.

READ TABLE lt_sel INTO ls_sel INDEX ls_selfield-tabindex.

IF sy-subrc <> 0.

EXIT.

ENDIF.

ENDIF.

  • Now call the corresponding application. LS_SEL is always filled

  • correctly.

IF l_fi_doc IS INITIAL.

SET PARAMETER ID 'MBN' FIELD ls_sel-mblnr.

SET PARAMETER ID 'POS' FIELD ls_sel-zeile.

SET PARAMETER ID 'MJA' FIELD ls_sel-mjahr.

CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.

ELSE.

SET PARAMETER ID 'BLN' FIELD ls_sel-belnr.

SET PARAMETER ID 'BUK' FIELD ls_sel-bukrs.

SET PARAMETER ID 'GJR' FIELD ls_sel-gjahr.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM. " USER_COMMAND

*&----


*

*& Form LISTAUSGABE

*&----


*

  • text

*----


*

FORM listausgabe.

data: u1 like marm-umren,

u2 like marm-umrez.

loop at belege.

if belege-meins ne aunit.

select single * from marm

where matnr = belege-matnr and

meinh = aunit.

u1 = marm-umrez.

u2 = marm-umren.

if u1 ne u2.

if u1 > u2.

belege-zmenge = belege-menge / u1.

else.

belege-zmenge = belege-menge * u1.

endif.

endif.

else.

belege-zmenge = belege-menge.

endif.

*qty = belege-menge.

*

*

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BELEGE-matnr

  • meins_imp = BELEGE-meins

  • unit_new_imp = aunit

  • unit_old_imp = BELEGE-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*belege-zmenge = qty1.

belege-zmeins = Aunit.

IF BELEGE-BWART = '601' OR BELEGE-BWART = '602' OR

BELEGE-BWART = '651' OR BELEGE-BWART = '453'.

SELECT SINGLE XBLNR INTO BELEGE-XBLNR FROM MKPF

WHERE MBLNR = BELEGE-MBLNR.

data: tvgbel like lips-vgbel.

select single vgbel into tvgbel from lips

where vbeln = belege-xblnr and

matnr = belege-matnr.

select single bstkd into belege-zbstkd from vbkd

where vbeln = tvgbel.

select single name1 into belege-name1 from Kna1

where kunnr = belege-kunnr.

ENDIF.

modify belege.

endloop.

*this code is inserted by archana

LOOP AT BELEGE.

IF BELEGE-BWART < 0.

FS_FARBE-COLOR-COL = 5 .

FS_FARBE-NOKEYCOL = 'X'.

ELSE.

FS_FARBE-COLOR-COL = 6 .

FS_FARBE-NOKEYCOL = 'X'.

ENDIF.

APPEND FS_FARBE TO BELEGE-FARBE.

MODIFY BELEGE TRANSPORTING FARBE.

ENDLOOP.

LAYOUT-INFO_FIELDNAME = 'COLOR'.

*LAYOUT-COLTAB_FIELDNAME = 'FARBE'.

layout-coltab_fieldname = 'FARBE'.

layout-f2code = '9PBP'.

IF NOT bwbst IS INITIAL.

layout-min_linesize = '92'.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

i_callback_program = repid

i_callback_pf_status_set = 'STATUS'

i_callback_user_command = 'USER_COMMAND'

  • I_STRUCTURE_NAME =

is_layout = layout

it_fieldcat = fieldcat[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

it_sort = sorttab[]

it_filter = filttab[]

  • IS_SEL_HIDE =

i_default = 'X'

  • i_save = 'A' "note 311825

  • is_variant = variante "note 311825

it_events = events[]

it_event_exit = event_exit[]

is_print = print

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • e_exit_caused_by_caller = 'X'

  • es_exit_caused_by_user = 'X'

TABLES

t_outtab = belege.

  • exceptions

  • program_error = 1

  • others = 2.

ENDFORM. " LISTAUSGABE

*&----


*

*& Form FELDKATALOG_AUFBAUEN

*&----


*

  • text

*----


*

  • -->P_FIELDCAT[] text *

*----


*

FORM feldkatalog_aufbauen USING p_fieldcat TYPE slis_t_fieldcat_alv.

DATA: fieldcat TYPE slis_fieldcat_alv.

  • nur Positionsfelder:

CLEAR fieldcat.

fieldcat-fieldname = 'LGORT'. " Lagerort

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '1'.

fieldcat-sp_group = 'O'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BWART'. " Bewegungsart

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '2'.

fieldcat-sp_group = 'M'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SOBKZ'. " Sonderbestandskennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '3'.

fieldcat-sp_group = 'B'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MBLNR'. " Nummer des Materialbelegs

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-col_pos = '4'.

fieldcat-sp_group = 'O'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ZEILE'. " Position im Materialbeleg

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '5'.

fieldcat-sp_group = 'O'.

APPEND fieldcat TO p_fieldcat.

IF bwbst = 'X'.

CLEAR fieldcat.

fieldcat-fieldname = 'BELNR'. " Nummer Buchhaltungsbeleg

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'BSIM'.

fieldcat-col_pos = '6'.

fieldcat-sp_group = 'O'.

APPEND fieldcat TO p_fieldcat.

  • clear fieldcat.

  • fieldcat-fieldname = 'BUZEI'. " Zeile innerhalb

  • fieldcat-tabname = 'BELEGE'. " Buchhaltungsbeleg

  • fieldcat-ref_tabname = 'BSIM'.

  • fieldcat-col_pos = '7'.

  • fieldcat-sp_group = 'O'.

  • append fieldcat to p_fieldcat.

ENDIF.

CLEAR fieldcat.

fieldcat-fieldname = 'BUDAT'. " Buchungsdatum im Beleg

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-col_pos = '7'.

fieldcat-sp_group = 'D'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MENGE'. " Menge

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'MEINS'.

fieldcat-col_pos = '8'.

fieldcat-sp_group = 'M'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MEINS'. " Basismengeneinheit

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '9'.

fieldcat-sp_group = 'M'.

APPEND fieldcat TO p_fieldcat.

IF NOT bwbst IS INITIAL.

CLEAR fieldcat.

fieldcat-fieldname = 'DMBTR'. "

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'BSIM'.

fieldcat-cfieldname = 'WAERS'.

fieldcat-col_pos = '10'.

fieldcat-sp_group = 'M'.

APPEND fieldcat TO p_fieldcat.

ENDIF. "note 201670

CLEAR fieldcat.

fieldcat-fieldname = 'WAERS'. "

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'T001'.

fieldcat-col_pos = '13'.

fieldcat-sp_group = 'M'.

APPEND fieldcat TO p_fieldcat.

************************************************************************

          • START OF ADDITION

          • Lines are added by Sunil for alternate UOM

CLEAR fieldcat.

fieldcat-fieldname = 'ZMENGE'. "

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'MEINS'.

fieldcat-col_pos = '11'.

fieldcat-sp_group = 'M'.

fieldcat-seltext_l = 'Qty In Alt Unit'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ZMEINS'. "

fieldcat-tabname = 'BELEGE'.

  • fieldcat-ref_tabname = 'T001'.

fieldcat-col_pos = '12'.

fieldcat-sp_group = 'M'.

fieldcat-seltext_l = 'Alt Unit'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'XBLNR'. "

fieldcat-tabname = 'BELEGE'.

  • fieldcat-ref_tabname = 'T001'.

fieldcat-col_pos = '14'.

fieldcat-sp_group = 'M'.

fieldcat-seltext_l = 'Delivery No'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'NAME1'. " Kontonummer des Kunden

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'kna1'.

fieldcat-col_pos = '16'.

fieldcat-sp_group = 'M'.

fieldcat-seltext_l = 'Customer Name'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ZBSTKD'. " Vorgangsart

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'VBKD'.

fieldcat-sp_group = 'M'.

fieldcat-seltext_l = 'PO in SO'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

************************************************************************

*************END OF ADDITION

*

  • CLEAR fieldcat.

  • fieldcat-fieldname = 'WEMPF'. " Warenempfänger

  • fieldcat-tabname = 'BELEGE'.

  • fieldcat-ref_tabname = 'MSEG'.

  • fieldcat-col_pos = '14'.

  • fieldcat-sp_group = 'M'.

  • fieldcat-no_out = 'X'.

*

  • In der Standardvariante nicht angezeigte Felder:

CLEAR fieldcat.

fieldcat-fieldname = 'MJAHR'. " Materialbelegjahr

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-sp_group = 'D'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

  • CLEAR fieldcat. "note 201670

  • fieldcat-fieldname = 'GJAHR'. " Materialbelegjahr

  • fieldcat-tabname = 'BELEGE'.

  • fieldcat-ref_tabname = 'BSIM'.

  • fieldcat-sp_group = 'D'.

  • fieldcat-no_out = 'X'.

  • APPEND fieldcat TO p_fieldcat. "note 201670

CLEAR fieldcat.

fieldcat-fieldname = 'VGART'. " Vorgangsart

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'USNAM'. " Name des Benutzers

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'CPUDT'. " Tag der Erfassung

fieldcat-tabname = 'BELEGE'. " des Materialbeleges

fieldcat-ref_tabname = 'MKPF'.

fieldcat-sp_group = 'D'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'CPUTM'. " Uhrzeit der Erfassung

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MKPF'.

fieldcat-sp_group = 'D'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'CHARG'. " Chargennummer

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'INSMK'. " Bestandsart

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'LIFNR'. " Kontonummer

fieldcat-tabname = 'BELEGE'. " des Lieferanten

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KUNNR'. " Kontonummer des Kunden

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-col_pos = '15'.

fieldcat-sp_group = 'V'.

  • fieldcat-no_out = ''.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KDAUF'. " Kundenauftragsnummer

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'V'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KDPOS'. " Positionsnummer

fieldcat-tabname = 'BELEGE'. " im Kundenauftrag

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'V'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KDEIN'. " Einteilung Kundenauftrag

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'F'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SHKZG'. " Soll-/Haben-Kennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BWTAR'. " Bewertungsart

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ERFMG'. " Menge in

fieldcat-tabname = 'BELEGE'. " Erfassungsmengeneinheit

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'ERFME'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ERFME'. " Erfassungsmengeneinheit

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BPMNG'. " Menge in

fieldcat-tabname = 'BELEGE'. " Bestellpreismengeneinheit

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'BPRME'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BPRME'. " Bestellpreismengeneinheit

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'EBELN'. " Bestellnummer

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'EBELP'. " Positionsnummer

fieldcat-tabname = 'BELEGE'. " des Einkaufsbelegs

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SJAHR'. " Materialbelegjahr

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'D'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SMBLN'. " Nummer des Materialbelegs

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SMBLP'. " Position im Materialbeleg

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ELIKZ'. " Endlieferungskennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SGTXT'. " Positionstext

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WEMPF'. " Warenempfänger

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

  • fieldcat-col_pos = '15'.

fieldcat-sp_group = 'V'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ABLAD'. " Abladestelle

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'V'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'GSBER'. " Geschäftsbereich

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PARGB'. " Geschäftsbereich

fieldcat-tabname = 'BELEGE'. " des Geschäftspartners

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PARBU'. " Verrechnender

fieldcat-tabname = 'BELEGE'. " Buchungskreis

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KOSTL'. " Kostenstelle

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'AUFNR'. " Auftragsnummer

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'ANLN1'. " Anlagen-Hauptnummer

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'GJAHR'. " Geschäftsjahr

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'D'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BUKRS'. " Buchungskreis

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'RSNUM'. " Nummer der Reservierung/

fieldcat-tabname = 'BELEGE'. " des Sekundärbedarfs

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'RSPOS'. " Positionsnummer der

fieldcat-tabname = 'BELEGE'. " Reservierung /

fieldcat-ref_tabname = 'MSEG'. " des Sekundärbedarfs

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZEAR'. " Kennzeichen: Endausfassung

fieldcat-tabname = 'BELEGE'. " der Reservierung

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMMAT'. " Empfangendes/Abgebendes

fieldcat-tabname = 'BELEGE'. " Material

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMWRK'. " Empfangendes/Abgebendes

fieldcat-tabname = 'BELEGE'. " Werk

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMLGO'. " Empfangender/Abgebender

fieldcat-tabname = 'BELEGE'. " Lagerort

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMCHA'. " Empfangende/Abgebende

fieldcat-tabname = 'BELEGE'. " Charge

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMBAR'. " Bewertungsart der

fieldcat-tabname = 'BELEGE'. " Umlagercharge

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMSOK'. " Sonderbestandskennzeichen

fieldcat-tabname = 'BELEGE'. " der Umlagerung

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZBEW'. " Bewegungskennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZVBR'. " Kennzeichen:

fieldcat-tabname = 'BELEGE'. " Verbrauchsbuchung

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZZUG'. " Zugangskennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WEUNB'. " Kennzeichen Wareneingang

fieldcat-tabname = 'BELEGE'. " unbewertet

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'GRUND'. " Kennzeichen: Grund

fieldcat-tabname = 'BELEGE'. " der Bewegung

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KSTRG'. " Kostenträger

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PAOBJNR'. " Nummer für

fieldcat-tabname = 'BELEGE'. " Ergebnisobjekte (CO-PA)

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PRCTR'. " Profit Center

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PS_PSP_PNR'. " Projektstrukturplanelement

fieldcat-tabname = 'BELEGE'. " (PSP-Element)

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'NPLNR'. " Netzplannummer

fieldcat-tabname = 'BELEGE'. " für Kontierung

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'AUFPL'. " Plannummer zu Vorgängen

fieldcat-tabname = 'BELEGE'. " im Auftrag

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'AUFPS'. " Nummer der

fieldcat-tabname = 'BELEGE'. " Auftragsposition

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'K'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BSTMG'. " Wareneingangsmenge

fieldcat-tabname = 'BELEGE'. " in Bestellmengeneinheit

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'BSTME'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BSTME'. " Bestellmengeneinheit

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'E'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'EXBWR'. " Extern eingegebener

fieldcat-tabname = 'BELEGE'. " Buchungsbetrag in

fieldcat-ref_tabname = 'MSEG'. " Hauswährung

fieldcat-cfieldname = 'WAERS'. "note 201670

fieldcat-sp_group = 'S'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'VKWRT'. " Wert zu Verkaufspreisen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-cfieldname = 'WAERS'. "note 201670

fieldcat-sp_group = 'V'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'VFDAT'. " Verfallsdatum oder

fieldcat-tabname = 'BELEGE'. " Mindesthaltbarkeitsdatum

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'EXVKW'. " Extern eingegebener

fieldcat-tabname = 'BELEGE'. " Verkaufswert in

fieldcat-ref_tabname = 'MSEG'. " Hauswährung

fieldcat-cfieldname = 'WAERS'. "note 201670

fieldcat-sp_group = 'S'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'PPRCTR'. " Partner-Profit Center

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'O'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MATBF'. " Material, auf dem der

fieldcat-tabname = 'BELEGE'. " Bestand geführt wird

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'UMMAB'. " Empfangendes/Abgebendes

fieldcat-tabname = 'BELEGE'. " Material

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BUSTM'. " Buchungsstring für Mengen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BUSTW'. " Buchungsstring für Werte

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'MENGU'. " Kennzeichen: Mengenfort-

fieldcat-tabname = 'BELEGE'. " schreibung im

fieldcat-ref_tabname = 'MSEG'. " Materialstammsatz

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'WERTU'. " Kennzeichen: Wertfort-

fieldcat-tabname = 'BELEGE'. " schreibung im

fieldcat-ref_tabname = 'MSEG'. " Materialstammsatz

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'LBKUM'. " Gesamter bewerteter

fieldcat-tabname = 'BELEGE'. " Bestand

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'MEINS'. "note 201670

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'SALK3'. " Wert des gesamten

fieldcat-tabname = 'BELEGE'. " bewerteten Bestandes

fieldcat-ref_tabname = 'MSEG'.

fieldcat-cfieldname = 'WAERS'. "note 201670

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'VPRSV'. " Preissteuerungskennzeichen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'S'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'VKWRA'. " Wert zu Verkaufspreisen

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'MSEG'.

fieldcat-cfieldname = 'WAERS'. "note 201670

fieldcat-sp_group = 'S'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'LSMNG'. " Menge in Mengeneinheit

fieldcat-tabname = 'BELEGE'. " aus Lieferschein

fieldcat-ref_tabname = 'MSEG'.

fieldcat-qfieldname = 'LSMEH'. "note 201670

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'LSMEH'. " Mengeneinheit aus

fieldcat-tabname = 'BELEGE'. " Lieferschein

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'KZBWS'. " Kennzeichen Bewertung

fieldcat-tabname = 'BELEGE'. " Sonderbestand

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'B'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'URZEI'. " Ursprungszeile im

fieldcat-tabname = 'BELEGE'. " Materialbeleg

fieldcat-ref_tabname = 'MSEG'.

fieldcat-sp_group = 'S'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

CLEAR fieldcat.

fieldcat-fieldname = 'BWAGR'. "

fieldcat-tabname = 'BELEGE'.

fieldcat-ref_tabname = 'T156Q'.

fieldcat-sp_group = 'M'.

fieldcat-no_out = 'X'.

APPEND fieldcat TO p_fieldcat.

  • Gruppendefinitionen Positionsfelder

gruppen-sp_group = 'M'.

gruppen-text = text-050.

APPEND gruppen.

gruppen-sp_group = 'B'.

gruppen-text = text-051.

APPEND gruppen.

gruppen-sp_group = 'D'.

gruppen-text = text-052.

APPEND gruppen.

gruppen-sp_group = 'O'.

gruppen-text = text-053.

APPEND gruppen.

gruppen-sp_group = 'K'.

gruppen-text = text-054.

APPEND gruppen.

gruppen-sp_group = 'E'.

gruppen-text = text-055.

APPEND gruppen.

gruppen-sp_group = 'V'.

gruppen-text = text-056.

APPEND gruppen.

gruppen-sp_group = 'F'.

gruppen-text = text-057.

APPEND gruppen.

gruppen-sp_group = 'S'.

gruppen-text = text-058.

APPEND gruppen.

layout-group_buttons = ' '.

ENDFORM. " FELDKATALOG_AUFBAUEN

*&----


*

*& Form UEBERSCHRIFT

*&----


*

  • text

*----


*

FORM ueberschrift.

IF bwbst = ' '.

PERFORM open_grid USING 78 0 'X'. "78

WRITE 2 text-020.

PERFORM set_format USING 0 space space.

WRITE 16 bestand-werks.

READ TABLE organ WITH KEY werks = bestand-werks.

WRITE 24 organ-name1.

PERFORM next_row USING 0 'X'.

WRITE 2 text-021.

PERFORM set_format USING 0 space space.

WRITE 16 bestand-matnr.

PERFORM next_row USING 0 'X'.

WRITE 2 text-022.

READ TABLE imakt WITH KEY matnr = bestand-matnr.

IF NOT sy-subrc IS INITIAL.

CLEAR imakt-maktx.

ENDIF.

PERFORM set_format USING 0 space space.

WRITE 16 imakt-maktx.

IF xchar = 'X'.

PERFORM next_row USING 0 'X'.

WRITE 2 text-023.

PERFORM set_format USING 0 space space.

WRITE 16 bestand-charg.

ENDIF.

ELSEIF bwbst = 'X'.

PERFORM open_grid USING 92 0 'X'. "92

WRITE 2 text-025.

PERFORM set_format USING 0 space space.

WRITE 19 bestand-bwkey.

READ TABLE organ WITH KEY bwkey = bestand-bwkey.

PERFORM next_row USING 0 'X'.

WRITE 2 text-021.

PERFORM set_format USING 0 space space.

WRITE 19 bestand-matnr.

HIDE: bestand-matnr, bestand-bwkey.

PERFORM next_row USING 0 'X'.

WRITE 2 text-022.

READ TABLE imakt WITH KEY matnr = bestand-matnr.

PERFORM set_format USING 0 space space.

WRITE 19 imakt-maktx.

ENDIF.

PERFORM close_grid.

PERFORM summensegment.

ENDFORM. " UEBERSCHRIFT

*&----


*

*& Form UEBERSCHRIFT1

*&----


*

  • text

*----


*

FORM ueberschrift1.

IF bwbst = ' '.

PERFORM open_grid USING 78 0 'X'. "78

WRITE 2 text-020.

PERFORM set_format USING 0 space space.

WRITE 16 bestand1-werks.

READ TABLE organ WITH KEY werks = bestand1-werks.

WRITE 24 organ-name1.

PERFORM next_row USING 0 'X'.

WRITE 2 text-021.

PERFORM set_format USING 0 space space.

WRITE 16 bestand1-matnr.

PERFORM next_row USING 0 'X'.

WRITE 2 text-022.

READ TABLE imakt WITH KEY matnr = bestand1-matnr.

PERFORM set_format USING 0 space space.

WRITE 16 imakt-maktx.

IF xchar = 'X'.

PERFORM next_row USING 0 'X'.

WRITE 2 text-023.

PERFORM set_format USING 0 space space.

WRITE 16 bestand1-charg.

ENDIF.

ELSEIF bwbst = 'X'.

PERFORM open_grid USING 92 0 'X'. "92

WRITE 2 text-025.

PERFORM set_format USING 0 space space.

WRITE 19 bestand1-bwkey.

READ TABLE organ WITH KEY bwkey = bestand1-bwkey.

PERFORM next_row USING 0 'X'.

WRITE 2 text-021.

PERFORM set_format USING 0 space space.

WRITE 19 bestand1-matnr.

HIDE: bestand1-matnr, bestand1-bwkey.

PERFORM next_row USING 0 'X'.

WRITE 2 text-022.

READ TABLE imakt WITH KEY matnr = bestand1-matnr.

PERFORM set_format USING 0 space space.

WRITE 19 imakt-maktx.

ENDIF.

PERFORM close_grid.

PERFORM summensegment1.

ENDFORM. " UEBERSCHRIFT1

*&----


*

*& Form SUMMENSEGMENT

*&----


*

  • text

*----


*

FORM summensegment.

IF bwbst IS INITIAL.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-007, 16 datum-low,

  • Text-007: Bestand zum

30 bestand-anfmenge " Anfangsbestand

UNIT bestand-meins,

48 bestand-meins, " Mengeneinheit

72 bestand-anfmenge_ALT " Anfangsbestand

UNIT bestand-meins_ALT,

90 bestand-meins_ALT. " Mengeneinheit

PERFORM next_row USING 3 ' '.

WRITE: 6 text-005, 30 bestand-soll

  • Text-005: Summe der Zugänge

UNIT bestand-meins,

48 bestand-meins,

72 bestand-SOLL_ALT " Anfangsbestand

UNIT bestand-meins_ALT,

90 bestand-meins_ALT. " Mengeneinheit

PERFORM next_row USING 3 ' '.

WRITE: 6 text-006, 30 bestand-haben

  • Text-006: Summe der Abgänge

UNIT bestand-meins,

48 bestand-meins,

72 bestand-HABEN_ALT " Anfangsbestand

UNIT bestand-meins_ALT,

90 bestand-meins_ALT. " Mengeneinheit

PERFORM next_row USING 3 ' '.

WRITE: 2 text-007, 16 datum-high,

  • Text-007: Bestand zum

30 bestand-endmenge " Endbestand

UNIT bestand-meins,

48 bestand-meins,

72 bestand-ENDMenge_ALT " Anfangsbestand

UNIT bestand-meins_ALT,

90 bestand-meins_ALT. " Mengeneinheit

ELSEIF NOT bwbst IS INITIAL.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-008, 22 datum-low, "Bestand/Wert zum ...

41 bestand-anfmenge "Anfangsbestand

UNIT bestand-meins,

60 bestand-meins, "Mengeneinheit

68 bestand-anfwert "Anfangswert

CURRENCY bestand-waers,

87 bestand-waers.

PERFORM next_row USING 3 ' '.

WRITE: 6 text-030, 38 bestand-soll "Summe/Wert der Zugänge

UNIT bestand-meins,

56 bestand-meins,

63 bestand-sollwert

CURRENCY bestand-waers,

82 bestand-waers.

PERFORM next_row USING 3 ' '.

WRITE: 6 text-031, 38 bestand-haben"Summe/Wert der Abgänge

UNIT bestand-meins,

56 bestand-meins,

63 bestand-habenwert

CURRENCY bestand-waers,

82 bestand-waers.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-008, 22 datum-high,

41 bestand-endmenge "Endbestand

UNIT bestand-meins,

60 bestand-meins,

68 bestand-endwert "Endwert

CURRENCY bestand-waers,

87 bestand-waers.

ENDIF.

ENDFORM. " SUMMENSEGMENT

*&----


*

*& Form SUMMENSEGMENT1

*&----


*

  • text

*----


*

FORM summensegment1.

IF bwbst IS INITIAL.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-007, 16 datum-low,

  • Text-007: Bestand zum

30 bestand1-anfmenge " Anfangsbestand

UNIT bestand1-meins,

48 bestand1-meins, " Mengeneinheit

72 bestand1-anfmenge_ALT " Anfangsbestand

UNIT bestand1-meins_ALT,

92 bestand1-meins_ALT. " Mengeneinheit

PERFORM next_row USING 3 ' '.

WRITE: 6 text-005, 30 bestand-soll

  • Text-005: Summe der Zugänge

UNIT bestand1-meins,

48 bestand1-meins,

72 bestand1-SOLL_ALT " Anfangsbestand

UNIT bestand1-meins_ALT,

92 bestand1-meins_ALT. " Mengeneinheit

  • WRITE: 6 text-005, 39 bestand1-soll

    • Text-005: Summe der Zugänge

  • UNIT bestand1-meins,

  • 57 bestand1-meins.

PERFORM next_row USING 3 ' '.

WRITE: 6 text-006, 30 bestand1-haben

  • Text-006: Summe der Abgänge

UNIT bestand1-meins,

48 bestand1-meins,

72 bestand1-HABEN_ALT " Anfangsbestand

UNIT bestand1-meins_ALT,

92 bestand1-meins_ALT. " Mengeneinheit

*

  • WRITE: 6 text-006, 39 bestand1-haben

    • Text-006: Summe der Abgänge

  • UNIT bestand1-meins,

  • 57 bestand1-meins.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-007, 16 datum-high,

  • Text-007: Bestand zum

30 bestand-endmenge " Endbestand

UNIT bestand-meins,

48 bestand-meins,

72 bestand-ENDMenge_ALT " Anfangsbestand

UNIT bestand-meins_ALT,

92 bestand-meins_ALT. " Mengeneinheit

  • WRITE: 2 text-007, 26 datum-high,

    • Text-007: Bestand zum

  • 55 bestand1-endmenge " Endbestand

  • UNIT bestand1-meins,

  • 74 bestand1-meins.

ELSEIF NOT bwbst IS INITIAL.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-008, 22 datum-low, "Bestand/Wert zum ...

41 bestand1-anfmenge "Anfangsbestand

UNIT bestand1-meins,

60 bestand1-meins, "Mengeneinheit

68 bestand1-anfwert "Anfangswert

CURRENCY bestand1-waers,

87 bestand1-waers.

PERFORM next_row USING 3 ' '.

WRITE: 6 text-030, 38 bestand1-soll"Summe/Wert der Zugänge

UNIT bestand1-meins,

56 bestand1-meins,

63 bestand1-sollwert

CURRENCY bestand1-waers,

82 bestand1-waers.

PERFORM next_row USING 3 ' '.

WRITE: 6 text-031, 38 bestand1-haben "Summe/Wert der Abgänge

UNIT bestand1-meins,

56 bestand1-meins,

63 bestand1-habenwert

CURRENCY bestand1-waers,

82 bestand1-waers.

PERFORM next_row USING 3 ' '.

WRITE: 2 text-008, 22 datum-high,

41 bestand1-endmenge "Endbestand

UNIT bestand1-meins,

60 bestand1-meins,

68 bestand1-endwert "Endwert

CURRENCY bestand1-waers,

87 bestand1-waers.

ENDIF.

ENDFORM. " SUMMENSEGMENT1

*&----


*

*& Form LISTE

*&----


*

  • text

*----


*

FORM liste.

SORT organ BY werks."184465

LOOP AT bestand FROM 2.

CLEAR belege. REFRESH belege.

IF bwbst IS INITIAL.

LOOP AT imseg WHERE matnr = bestand-matnr

AND werks = bestand-werks.

CHECK xchar IS INITIAL OR imseg-charg = bestand-charg.

MOVE-CORRESPONDING imseg TO belege.

APPEND belege.

ENDLOOP.

ELSEIF NOT bwbst IS INITIAL.

LOOP AT imseg WHERE matnr = bestand-matnr. "184465

READ TABLE organ WITH KEY werks = imseg-werks BINARY SEARCH.

CHECK organ-bwkey = bestand-bwkey. "184465

MOVE-CORRESPONDING imseg TO belege.

APPEND belege.

ENDLOOP.

ENDIF.

SORT belege BY budat mblnr zeile.

******************************************************************************************************************

  • THE CODE IS WRITTEN BY Archana Waghchoure on 25th March 2008.

  • PERFORM farbinfo.

    • WA_BELEGTAB-INFO_FIELDNAME = 'COLOUR'.

  • THE ABOVE PERFORM STATEMENT WAS COMMENTED BEFORE I JUST UNCOMMENTED IT.

******************************************************************************************************************

CLEAR events. REFRESH events.

events-name = 'TOP_OF_PAGE'.

events-form = 'UEBERSCHRIFT'.

APPEND events.

CLEAR sorttab. REFRESH sorttab.

CLEAR filttab. REFRESH filttab.

CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'

IMPORTING

  • es_layout = layout

et_fieldcat = fieldcat[]

et_sort = sorttab[]

et_filter = filttab[]

  • ES_LIST_SCROLL =

  • ES_VARIANT =

EXCEPTIONS

no_infos = 1

program_error = 2

OTHERS = 3.

layout-list_append = 'X'.

PERFORM listausgabe.

ENDLOOP.

ENDFORM. " LISTE

*&----


*

*& Form PF_STATUS_SET

*&----


*

FORM status USING extab.

  • if bwbst = 'X'.

  • set pf-status 'BEWERTET' excluding extab.

  • else.

SET PF-STATUS 'STANDARD' EXCLUDING extab.

  • endif.

ENDFORM. " STATUS

*&----


*

*& Form LISTUMFANG

*&----


*

  • Prüfung gegen Listumfangsparameter auf Selektionsbild

*----


*

FORM listumfang.

LOOP AT bestand.

IF xonul = 'X'

AND ( bestand-endmenge = 0 AND bestand-anfmenge = 0 ).

DELETE bestand.

CONTINUE.

ENDIF.

IF xvbst = 'X' AND bestand-soll = bestand-haben.

DELETE bestand.

CONTINUE.

ENDIF.

IF xnvbst = 'X' AND bestand-soll NE bestand-haben.

DELETE bestand.

CONTINUE.

ENDIF.

ENDLOOP.

ENDFORM. " LISTUMFANG

*&----


*

*& Form FARBINFO

*&----


*

  • Farbinformationen für die Listfelder

*----


*

  • FORM farbinfo.

*

  • DATA: fx1(36) VALUE 'MENGE MEINS DMBTR WAERS ERFMG ERFME '.

  • DATA: fx2(36) VALUE 'BPMNG BPRME BSTMG BSTME EXBWR VKWRT '.

  • DATA: fx3(36) VALUE 'EXVKW VKWRA LSMNG LSMEH SHKZG $$$$$ '.

  • DATA: var(36), name(20), type.

  • FIELD-SYMBOLS: <f>.

  • LOOP AT belege.

  • REFRESH color. CLEAR color.

  • DO VARYING var FROM fx1 NEXT fx1+6.

  • IF var(1) = '$'. EXIT. ENDIF.

  • CONCATENATE 'BELEGE-' var(5) INTO name.

  • ASSIGN (name) TO <f>.

  • color-fieldname = var.

  • color-color-int = 0.

  • IF belege-shkzg = 'H'.

  • DESCRIBE FIELD <f> TYPE type.

  • IF type <> 'C'. <f> = 0 - <f>. ENDIF.

  • color-color-col = '6'.

  • APPEND color.

  • ELSEIF belege-shkzg = 'S'.

  • color-color-col = '5'.

  • APPEND color.

  • ENDIF.

  • ENDDO.

  • belege-farbe = color[].

  • MODIFY belege.

  • ENDLOOP.

*

*ENDFORM. " FARBINFO

*&----


*

*& Form LISTAUSGABE1

*&----


*

  • text

*----


*

FORM listausgabe1.

data: u1 like marm-umrez,

u2 like marm-umren.

loop at belege1.

if belege1-meins ne aunit.

select single * from marm

where matnr = belege1-matnr and

meinh = aunit.

u1 = marm-umrez.

u2 = marm-umren.

if u1 ne u2.

if u1 > u2.

belege1-zmenge = belege1-menge / u1.

else.

belege1-zmenge = belege1-menge * u1.

endif.

endif.

else.

belege1-zmenge = belege1-menge.

endif.

*qty = belege1-menge.

*

*

*CALL FUNCTION 'CF_UT_UNIT_CONVERSION'

  • EXPORTING

  • matnr_imp = BELEGE1-matnr

  • meins_imp = BELEGE1-meins

  • unit_new_imp = aunit

  • unit_old_imp = BELEGE1-meins

  • value_old_imp = qty

  • IMPORTING

  • value_new_exp = qty1

  • EXCEPTIONS

  • overflow = 1

  • OTHERS = 2.

*

*belege1-zmenge = qty1.

belege1-zmeins = Aunit.

IF BELEGE1-BWART = '601' OR BELEGE1-BWART = '602' OR

BELEGE1-BWART = '651' OR BELEGE1-BWART = '453'.

SELECT SINGLE XBLNR INTO BELEGE1-XBLNR FROM MKPF

WHERE MBLNR = BELEGE1-MBLNR.

data: tvgbel like lips-vgbel.

select single vgbel into tvgbel from lips

where vbeln = belege1-xblnr and

matnr = belege1-matnr.

select single bstkd into belege1-zbstkd from vbkd

where vbeln = tvgbel.

select single name1 into belege1-name1 from Kna1

where kunnr = belege1-kunnr.

ENDIF.

modify belege1.

endloop.

layout-coltab_fieldname = 'FARBE'.

layout-f2code = '9PBP'.

IF NOT bwbst IS INITIAL.

layout-min_linesize = '92'.

ENDIF.

extab-fcode = '&XPA'.

APPEND extab.

extab-fcode = '&OMP'.

APPEND extab.

event_exit-ucomm = '&XP1'.

event_exit-before = 'X'.

APPEND event_exit.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

i_callback_program = repid

i_callback_pf_status_set = 'STATUS'

i_callback_user_command = 'USER_COMMAND'

  • I_STRUCTURE_NAME =

is_layout = layout

it_fieldcat = fieldcat[]

  • IT_EXCLUDING =

it_special_groups = gruppen[]

it_sort = sorttab[]

it_filter = filttab[]

  • IS_SEL_HIDE =

i_default = 'X'

i_save = 'A'

is_variant = variante

it_events = events[]

it_event_exit = event_exit[]

is_print = print

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • e_exit_caused_by_caller = 'X'

  • es_exit_caused_by_user = 'X'

TABLES

t_outtab = belege1.

  • exceptions

  • program_error = 1

  • others = 2.

ENDFORM. " LISTAUSGABE1

*&----


*

*& Form FARBINFO1

*&----


*

  • text

*----


*

  • FORM farbinfo1.

  • DATA: fx1(36) VALUE 'MENGE MEINS DMBTR WAERS ERFMG ERFME '.

  • DATA: fx2(36) VALUE 'BPMNG BPRME BSTMG BSTME EXBWR VKWRT '.

  • DATA: fx3(36) VALUE 'EXVKW VKWRA LSMNG LSMEH SHKZG $$$$$ '.

  • DATA: var(36), name(20), type.

  • FIELD-SYMBOLS: <f>.

  • LOOP AT belege1.

  • REFRESH color. CLEAR color.

  • DO VARYING var FROM fx1 NEXT fx1+6.

  • IF var(1) = '$'. EXIT. ENDIF.

  • CONCATENATE 'BELEGE1-' var(5) INTO name.

  • ASSIGN (name) TO <f>.

  • color-fieldname = var.

  • color-color-int = 0.

  • IF belege1-shkzg = 'H'.

  • DESCRIBE FIELD <f> TYPE type.

  • IF type <> 'C'. <f> = 0 - <f>. ENDIF.

  • color-color-col = '6'.

  • APPEND color.

  • ELSEIF belege1-shkzg = 'S'.

  • color-color-col = '5'.

  • APPEND color.

  • ENDIF.

  • ENDDO.

  • belege1-farbe = color[].

  • MODIFY belege1.

  • ENDLOOP.

  • ENDFORM. " FARBINFO1

*&----


*

*& Form STORNO

*&----


*

  • Stronobewegungen vernachlässigen

*----


*

FORM storno.

LOOP AT storno.

DELETE IMSEG WHERE MBLNR = STORNO-SMBLN "204463

AND MJAHR = STORNO-SJAHR "204463

AND ZEILE = STORNO-SMBLP. "204463

ENDLOOP.

ENDFORM. " STORNO

*&----


*

*& Form FARBINFO

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

                            • THIS CODE BELOW WRITTEN IS FOR THE PERFORM 25TH MARCH 2008****************

*

*FORM FARBINFO .

*

**LOOP AT IT_BELEGTAB INTO BELEGE.

*

*LOOP AT BELEGE.

*

*

*IF BELEGE-BWART .

*----


*

  • FORM OPEN_GRID *

*----


*

  • Mit dieser Formroutine wird eine Box mit der übergebenen Breite *

  • geöffnet. Es werden bereits die vertikalen Linien rechts und links *

  • für die erste Zeile innerhalb der Box geschrieben. *

  • Der nachfolgende Text muß ohne Zeilenvorschub ausgegeben werden. *

*----


*

  • --> LOCLINE : Breite des Rahmens *

  • --> LOCCOLOR : Farbe (numerisch 0 - 7) *

  • --> LOCINTEN : Schalter für INTENSIFIED-Darstellung *

*----


*

FORM OPEN_GRID USING LOCLINE LOCCOLOR LOCINTEN.

FORMAT INVERSE OFF.

LINE = LOCLINE - 2.

SINT = LOCINTEN.

ASSIGN SY-ULINE(LINE) TO NO-GAP, SY-ULINE(1).

PERFORM NEXT_ROW USING LOCCOLOR SINT.

ENDFORM.

*----


*

  • FORM SEP_GRID *

*----


*

  • Eine bereits geöffnete Box wird unterteilt. *

  • Der nachfolgende Text muß ohne Zeilenvorschub ausgegeben werden. *

*----


*

  • --> LOCCOLOR : Farbe (numerisch 0 - 7) *

  • --> LOCINTEN : Schalter für INTENSIFIED-Darstellung *

*----


*

FORM SEP_GRID USING LOCCOLOR LOCINTEN.

WRITE:/ SY-VLINE NO-GAP, NO-GAP, SY-VLINE.

ENDFORM.

*----


*

  • FORM CLOSE_GRID *

*----


*

  • Die Box wird geschlossen.

*----


*

FORM CLOSE_GRID.

WRITE:/ SY-ULINE(1) NO-GAP, NO-GAP, SY-ULINE(1).

SCOL = 0.

ENDFORM.

*----


*

  • FORM NEXT_ROW *

*----


*

  • Innerhalb einer Box wird eine weitere Zeile zum beschreiben *

  • vorbereitet. *

  • Der nachfolgende Text muß ohne Zeilenvorschub ausgegeben werden. *

*----


*

  • --> LOCCOLOR : Farbe (numerisch 0 - 7) *

  • --> LOCINTEN : Schalter für INTENSIFIED-Darstellung *

*----


*

FORM NEXT_ROW USING LOCCOLOR LOCINTEN.

SCOL = LOCCOLOR.

SINT = LOCINTEN.

PERFORM SET_COLOR.

WRITE:/ SY-VLINE NO-GAP, NO-GAP, SY-VLINE.

POSITION 1.

ENDFORM.

*----


*

  • FORM SET_COLOR *

*----


*

  • Die Farbe wird gemäß der Farbvariablen und Intensität eingestellt *

*----


*

FORM SET_COLOR.

CASE SCOL.

WHEN 0.

FORMAT COLOR COL_BACKGROUND.

WHEN 1.

FORMAT COLOR COL_HEADING.

WHEN 2.

FORMAT COLOR COL_NORMAL.

WHEN 3.

FORMAT COLOR COL_TOTAL.

WHEN 4.

FORMAT COLOR COL_KEY.

WHEN 5.

FORMAT COLOR COL_POSITIVE.

WHEN 6.

FORMAT COLOR COL_NEGATIVE.

WHEN 7.

FORMAT COLOR COL_GROUP.

WHEN OTHERS.

FORMAT COLOR COL_BACKGROUND.

ENDCASE.

IF SINT IS INITIAL.

FORMAT INTENSIFIED OFF.

ELSE.

FORMAT INTENSIFIED ON.

ENDIF.

ENDFORM.

*----


*

  • FORM SET_FORMAT *

*----


*

  • Die Formatabgabe werden gesetzt *

*----


*

  • --> LOCCOLOR : Farbe (numerisch 0 - 7) *

  • --> LOCINTEN : Schalter für INTENSIFIED-Darstellung *

  • --> LOCINVER : Schalter für INVERSE-Darstellung *

*----


*

FORM SET_FORMAT USING LOCCOLOR LOCINTEN LOCINVER.

CASE LOCCOLOR.

WHEN 0.

FORMAT COLOR COL_BACKGROUND.

WHEN 1.

FORMAT COLOR COL_HEADING.

WHEN 2.

FORMAT COLOR COL_NORMAL.

WHEN 3.

FORMAT COLOR COL_TOTAL.

WHEN 4.

FORMAT COLOR COL_KEY.

WHEN 5.

FORMAT COLOR COL_POSITIVE.

WHEN 6.

FORMAT COLOR COL_NEGATIVE.

WHEN 7.

FORMAT COLOR COL_GROUP.

WHEN OTHERS.

FORMAT COLOR COL_BACKGROUND.

ENDCASE.

IF LOCINTEN IS INITIAL.

FORMAT INTENSIFIED OFF.

ELSE.

FORMAT INTENSIFIED ON.

ENDIF.

IF LOCINVER IS INITIAL.

FORMAT INVERSE OFF.

ELSE.

FORMAT INVERSE ON.

ENDIF.

ENDFORM.

*&----


*

*& Form NEXT_ROW_NS

*&----


*

  • Innerhalb einer Box wird eine weitere Zeile zum beschreiben *

  • vorbereitet. Die Zeile wird nicht mitgescrollt! *

  • Der nachfolgende Text muß ohne Zeilenvorschub ausgegeben werden. *

*----


*

  • --> LOCCOLOR : Farbe (numerisch 0 - 7) *

  • --> LOCINTEN : Schalter für INTENSIFIED-Darstellung *

*----


*

FORM NEXT_ROW_NS USING LOCCOLOR LOCINTEN.

SCOL = LOCCOLOR.

SINT = LOCINTEN.

PERFORM SET_COLOR.

NEW-LINE NO-SCROLLING.

WRITE: SY-VLINE NO-GAP, NO-GAP, SY-VLINE.

POSITION 1.

ENDFORM.

*----


*

  • INCLUDE RM07MLBP *

*----


*

  • Selektionsoptionen und Parameter *

  • für das Selektionsbild des Reports RM07MLBD *

*----


*

SELECTION-SCREEN BEGIN OF BLOCK LISTUMFANG WITH FRAME TITLE TEXT-001.

  • Text-001: Listumfang

SELECT-OPTIONS: MATNR FOR MARD-MATNR MEMORY ID MAT

MATCHCODE OBJECT MAT1,

BUKRS FOR T001-BUKRS MEMORY ID BUK,

WERKS FOR T001W-WERKS MEMORY ID WRK,

LGORT FOR T001L-LGORT,

CHARG FOR MCHB-CHARG,

BWTAR FOR MBEW-BWTAR,

BWART FOR MSEG-BWART.

PARAMETERS SOBKZ LIKE MSEG-SOBKZ.

SELECTION-SCREEN SKIP.

SELECT-OPTIONS: DATUM FOR MKPF-BUDAT NO-EXTENSION.

  • Datumsintervall für Selektion

SELECTION-SCREEN END OF BLOCK LISTUMFANG.

SELECTION-SCREEN BEGIN OF BLOCK AUOM WITH FRAME TITLE TEXT-059.

PARAMETERS: AUNIT LIKE MSEG-MEINS DEFAULT 'KAR'.

SELECTION-SCREEN END OF BLOCK AUOM.

SELECTION-SCREEN BEGIN OF BLOCK BESTANDSART

WITH FRAME TITLE TEXT-002.

  • Text-002: Bestandsart

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS LGBST LIKE AM07M-LGBST RADIOBUTTON GROUP BART DEFAULT 'X'.

SELECTION-SCREEN POSITION 1.

SELECTION-SCREEN COMMENT 4(50) TEXT-010 FOR FIELD LGBST.

  • Text-010: Lagerort-/Chargenbestand

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS BWBST LIKE AM07M-BWBST RADIOBUTTON GROUP BART.

SELECTION-SCREEN POSITION 1.

SELECTION-SCREEN COMMENT 4(50) TEXT-011 FOR FIELD BWBST.

  • Text-011: bewerteter Bestand

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS SBBST LIKE AM07M-SBBST RADIOBUTTON GROUP BART.

SELECTION-SCREEN POSITION 1.

SELECTION-SCREEN COMMENT 4(50) TEXT-012 FOR FIELD SBBST.

  • Text-012: Sonderbestand

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK BESTANDSART.

SELECTION-SCREEN BEGIN OF BLOCK EINSTELLUNGEN

WITH FRAME TITLE TEXT-003.

  • Text-003: Listumfang

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS XCHAR LIKE AM07M-XCHRG.

SELECTION-SCREEN COMMENT 4(50) TEXT-015 FOR FIELD XCHAR.

  • Text-015: nur chargenpflichtige Materialien

  • Das Kennzeichen 'xchar' bestimmt die Art der Listausgabe entweder

  • auf Material- oder Chargenebene.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS XONUL LIKE AM07M-XONUL.

SELECTION-SCREEN COMMENT 4(50) TEXT-016 FOR FIELD XONUL.

  • Text-016: keine Nullbestände

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS XVBST LIKE AM07M-XVBST.

SELECTION-SCREEN COMMENT 4(50) TEXT-017 FOR FIELD XVBST.

  • Text-017: nur veränderte Bestände

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS XNVBST LIKE AM07M-XNVBS.

SELECTION-SCREEN COMMENT 4(50) TEXT-018 FOR FIELD XNVBST.

  • Text-018: nur nicht veränderte Bestände

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS XSUM LIKE AM07M-XSUM.

SELECTION-SCREEN COMMENT 4(50) TEXT-019 FOR FIELD XSUM.

  • Text-019: nur Summen

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.

PARAMETERS NOSTO LIKE AM07M-NOSTO.

SELECTION-SCREEN COMMENT 4(50) TEXT-026 FOR FIELD NOSTO.

  • Text-020: keine Stornobewegungen

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK EINSTELLUNGEN.

SELECTION-SCREEN BEGIN OF BLOCK LISTE WITH FRAME TITLE TEXT-040.

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN END OF BLOCK LISTE.

*----


*

  • INCLUDE RM07DTOP zu Report RM07MLBD *

*----


*

REPORT RM07MLBD NO STANDARD PAGE HEADING MESSAGE-ID M7 LINE-SIZE 150.

*----


DATENTYPEN -


*

TYPE-POOLS: IMREP, " Typen Bestandsführungsreporting

SLIS. " Typen Listviewer

TYPES: BEGIN OF MSEG_TYP.

INCLUDE TYPE IMREP_MATBELEG_TYP.

TYPES: AWSYS LIKE MKPF-AWSYS,

blart like mkpf-blart, "146202

BELNR LIKE BSIM-BELNR,

ZMENGE LIKE MSEG-MENGE,

ZMEINS LIKE MSEG-MEINS,

zbstkd like vbkd-bstkd,

  • dmbtr LIKE bsim-dmbtr,

  • waers LIKE mseg-waers,

LBBSA LIKE T156M-LBBSA,

XAUTO LIKE MSEG-XAUTO,

BWAGR LIKE sT156S-BWAGR.

TYPES: END OF MSEG_TYP.

TYPES: BEGIN OF BELEGTAB.

INCLUDE TYPE MSEG_TYP.

TYPES: FARBE TYPE SLIS_T_SPECIALCOL_ALV.

TYPES: END OF BELEGTAB.

  • Typen für Sonderbestände:

TYPES: BEGIN OF MSLB_TYP,

WERKS LIKE MSLB-WERKS,

MATNR LIKE MSLB-MATNR,

SOBKZ LIKE MSLB-SOBKZ,

LBLAB LIKE MSLB-LBLAB,

LBINS LIKE MSLB-LBINS,

LBEIN LIKE MSLB-LBEIN.

TYPES: END OF MSLB_TYP.

TYPES: BEGIN OF CMSLB_TYP.

INCLUDE TYPE MSLB_TYP.

TYPES: CHARG LIKE MSLB-CHARG.

TYPES: END OF CMSLB_TYP.

TYPES: BEGIN OF MSKU_TYP,

WERKS LIKE MSKU-WERKS,

MATNR LIKE MSKU-MATNR,

SOBKZ LIKE MSKU-SOBKZ,

KULAB LIKE MSKU-KULAB,

KUINS LIKE MSKU-KUINS,

KUEIN LIKE MSKU-KUEIN.

TYPES: END OF MSKU_TYP.

TYPES: BEGIN OF CMSKU_TYP.

INCLUDE TYPE MSKU_TYP.

TYPES: CHARG LIKE MSKU-CHARG.

TYPES: END OF CMSKU_TYP.

TYPES: BEGIN OF MSPR_TYP,

WERKS LIKE MSPR-WERKS,

LGORT LIKE MSPR-LGORT,

MATNR LIKE MSPR-MATNR,

SOBKZ LIKE MSPR-SOBKZ,

PRLAB LIKE MSPR-PRLAB,

PRINS LIKE MSPR-PRINS,

PRSPE LIKE MSPR-PRSPE,

PREIN LIKE MSPR-PREIN.

TYPES: END OF MSPR_TYP.

TYPES: BEGIN OF CMSPR_TYP.

INCLUDE TYPE MSPR_TYP.

TYPES: CHARG LIKE MSPR-CHARG.

TYPES: END OF CMSPR_TYP.

TYPES: BEGIN OF MKOL_TYP,

WERKS LIKE MKOL-WERKS,

LGORT LIKE MKOL-LGORT,

MATNR LIKE MKOL-MATNR,

SOBKZ LIKE MKOL-SOBKZ,

SLABS LIKE MKOL-SLABS,

SINSM LIKE MKOL-SINSM,

SEINM LIKE MKOL-SEINM,

SSPEM LIKE MKOL-SSPEM.

TYPES: END OF MKOL_TYP.

TYPES: BEGIN OF CMKOL_TYP.

INCLUDE TYPE MKOL_TYP.

TYPES: CHARG LIKE MKOL-CHARG.

TYPES: END OF CMKOL_TYP.

TYPES: BEGIN OF MSKA_TYP,

WERKS LIKE MSKA-WERKS,

LGORT LIKE MSKA-LGORT,

MATNR LIKE MSKA-MATNR,

SOBKZ LIKE MSKA-SOBKZ,

KALAB LIKE MSKA-KALAB,

KAINS LIKE MSKA-KAINS,

KASPE LIKE MSKA-KASPE,

KAEIN LIKE MSKA-KAEIN.

TYPES: END OF MSKA_TYP.

TYPES: BEGIN OF CMSKA_TYP.

INCLUDE TYPE MSKA_TYP.

TYPES: CHARG LIKE MSKA-CHARG.

TYPES: END OF CMSKA_TYP.

*----


TABELLEN -


*

TABLES: BKPF, "Buchhaltungsbelegkopf

BSIM, "Buchhaltungsbelege

MAKT, "Materialkurztext

MARA, "allg. zum Material

MARD, "Materialbestände auf Lagerortebene

MCHB, "Chargenbestände auf Lagerortebene

mcha,

MBEW, "Bewertungssegment

EBEW, "bewerteter Sonderbestand 'E'

QBEW, "bewerteter Sonderbestand 'Q'

MKOL, "Sonderbestand Lieferantenkonsignation

MKPF, "Materialbelegköpfe

MSEG, "Materialbelege

MSKA, "Auftragsbestand

MSKU, "Sonderbestand Kundenkonsignation

MSLB, "Sonderbestand Lohnbearbeitung

MSPR, "Projektbestand

RPGRI, "Texttabelle Gruppierung Bewegungsarten

T001, "Prüftabelle Buchungskreise

T001K, "Prüftabelle Bewertungskreise

T001W, "Prüftabelle Werke

T001L, "Prüftabelle Lagerorte

T134M, "Prüftabelle Materialart

T156M, "Mengenstrings

sT156S, "Bewegungsarten

TCURM, "Bewertungskreisebene

ACCHD,

MARM,

lips,

vbkd.

*----


DATENDEKLARATIONEN -


*

DATA: IT001 TYPE IMREP_T001_TYP OCCURS 0 WITH HEADER LINE.

DATA: IT001K TYPE IMREP_T001K_TYP OCCURS 0 WITH HEADER LINE.

DATA: IT001W TYPE IMREP_T001W_TYP OCCURS 0 WITH HEADER LINE.

DATA: IT001L TYPE IMREP_T001L_TYP OCCURS 0 WITH HEADER LINE.

DATA: ORGAN TYPE IMREP_ORGAN_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSEG TYPE MSEG_TYP OCCURS 0 WITH HEADER LINE.

DATA: XMSEG TYPE MSEG_TYP OCCURS 0 WITH HEADER LINE.

DATA: HEADER TYPE IMREP_MATHEADER_TYP OCCURS 0 WITH HEADER LINE.

DATA: BELEGE TYPE BELEGTAB OCCURS 0 WITH HEADER LINE.

DATA: BELEGE1 TYPE BELEGTAB OCCURS 0 WITH HEADER LINE.

*----


Prüftabellen -


*

DATA: BEGIN OF IT134M OCCURS 100,

BWKEY LIKE T134M-BWKEY,

MTART LIKE T134M-MTART,

MENGU LIKE T134M-MENGU,

WERTU LIKE T134M-WERTU,

END OF IT134M.

DATA: BEGIN OF IT156 OCCURS 100,

BWART LIKE sT156S-BWART,

XSTBW LIKE T156-XSTBW,

WERTU LIKE sT156S-WERTU,

MENGU LIKE sT156S-MENGU,

SOBKZ LIKE sT156S-SOBKZ,

KZBEW LIKE sT156S-KZBEW,

KZZUG LIKE sT156S-KZZUG,

KZVBR LIKE sT156S-KZVBR,

BUSTM LIKE sT156S-BUSTM,

bustw like mseg-bustw, "147374

LBBSA LIKE T156M-LBBSA,

BWAGR like st156s-BWAGR,

END OF IT156.

data: begin of it156w occurs 100, "149448

bustw like t156w-bustw, "149448

xbgbb like t156w-xbgbb, "149448

end of it156w. "149448

DATA: BEGIN OF IT156X OCCURS 100,

BUSTM LIKE sT156S-BUSTM,

LBBSA LIKE T156M-LBBSA,

END OF IT156X.

DATA: BEGIN OF IT156Y OCCURS 100,

BWART LIKE T156-BWART,

XSTBW LIKE T156-XSTBW,

END OF IT156Y.

*----


übergeordnete Materialtabellen -


*

DATA IMAKT LIKE MAKT OCCURS 1000 WITH HEADER LINE.

DATA: BEGIN OF IMARA OCCURS 100,

MATNR LIKE MARA-MATNR,

MEINS LIKE MARA-MEINS,

MTART LIKE MARA-MTART,

END OF IMARA.

DATA: BEGIN OF IMBEW OCCURS 100, "bewerteter Bestand

BWKEY LIKE MBEW-BWKEY,

MATNR LIKE MBEW-MATNR,

BWTAR LIKE MBEW-BWTAR,

LBKUM LIKE MBEW-LBKUM,

SALK3 LIKE MBEW-SALK3,

VPRSV LIKE MBEW-VPRSV,

VERPR LIKE MBEW-VERPR,

STPRS LIKE MBEW-STPRS,

END OF IMBEW.

*----


Materialtabellen auf Lagerortebene -


*

DATA: BEGIN OF IMARD OCCURS 100, "aktueller Materialbestand

WERKS LIKE MARD-WERKS, "Werk

MATNR LIKE MARD-MATNR, "Material

LGORT LIKE MARD-LGORT, "Lagerort

LABST LIKE MARD-LABST, "frei verwendbarer Bestand

UMLME LIKE MARD-UMLME, "Umlagerungsbestand

INSME LIKE MARD-INSME, "Qualitätsprüfbestand

EINME LIKE MARD-EINME, "nicht frei verwendbarer Bestand

SPEME LIKE MARD-SPEME, "gesperrter Bestand

RETME LIKE MARD-RETME, "gesperrter Bestand

KLABS LIKE MARD-KLABS, "frei verw. Konsignationsbestand

LBKUM LIKE MBEW-LBKUM, "bewerteter Bestand

SALK3 LIKE MBEW-SALK3, "Bestandswert

WAERS LIKE T001-WAERS, "Währungseinheit

END OF IMARD.

DATA: BEGIN OF IMCHB OCCURS 100, "aktueller Chargenbestand

WERKS LIKE MCHB-WERKS,

MATNR LIKE MCHB-MATNR,

LGORT LIKE MCHB-LGORT,

CHARG LIKE MCHB-CHARG,

CLABS LIKE MCHB-CLABS, "frei verwendbarer Chargenbestand

CUMLM LIKE MCHB-CUMLM, "Umlagerungsbestand

CINSM LIKE MCHB-CINSM, "Qualitätsprüfbestand

CEINM LIKE MCHB-CEINM, "nicht frei verwendbarer Bestand

CSPEM LIKE MCHB-CSPEM, "gesperrter Bestand

CRETM LIKE MCHB-CRETM, "gesperrter Bestand

END OF IMCHB.

*----


Sonderbestände -


*

DATA: XMSLB TYPE CMSLB_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSLB TYPE CMSLB_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSLBX TYPE MSLB_TYP OCCURS 0 WITH HEADER LINE.

DATA: XMSKU TYPE CMSKU_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSKU TYPE CMSKU_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSKUX TYPE MSKU_TYP OCCURS 0 WITH HEADER LINE.

DATA: XMSPR TYPE CMSPR_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSPR TYPE CMSPR_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSPRX TYPE MSPR_TYP OCCURS 0 WITH HEADER LINE.

DATA: XMKOL TYPE CMKOL_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMKOL TYPE CMKOL_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMKOLX TYPE MKOL_TYP OCCURS 0 WITH HEADER LINE.

DATA: XMSKA TYPE CMSKA_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSKA TYPE CMSKA_TYP OCCURS 0 WITH HEADER LINE.

DATA: IMSKAX TYPE MSKA_TYP OCCURS 0 WITH HEADER LINE.

*----


Materialbelege -


*

DATA: BEGIN OF IMKPF OCCURS 0.

INCLUDE STRUCTURE MKPF.

DATA: END OF IMKPF.

DATA: BEGIN OF IMSWEG OCCURS 1000,

MBLNR LIKE MSEG-MBLNR,

MJAHR LIKE MSEG-MJAHR,

ZEILE LIKE MSEG-ZEILE,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

BWTAR LIKE MSEG-BWTAR,

WERKS LIKE MSEG-WERKS,

LGORT LIKE MSEG-LGORT,

SOBKZ LIKE MSEG-SOBKZ,

BWART LIKE MSEG-BWART,

SHKZG LIKE MSEG-SHKZG,

XAUTO LIKE MSEG-XAUTO,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

DMBUM LIKE MSEG-DMBUM,

BUSTM LIKE MSEG-BUSTM,

bustw like mseg-bustw, "147374

END OF IMSWEG.

DATA: BEGIN OF IBSIM OCCURS 1000, "Buchhaltungsbelege

BUKRS LIKE BKPF-BUKRS, " P30K160185

BWKEY LIKE BSIM-BWKEY,

  • werks like mseg-werks,

MATNR LIKE BSIM-MATNR,

BWTAR LIKE BSIM-BWTAR,

BELNR LIKE BSIM-BELNR,

GJAHR LIKE BSIM-GJAHR,

SHKZG LIKE BSIM-SHKZG,

MENGE LIKE BSIM-MENGE,

MEINS LIKE BSIM-MEINS,

DMBTR LIKE BSIM-DMBTR,

  • waers like t001-waers,

BUDAT LIKE BSIM-BUDAT,

BLART LIKE BSIM-BLART,

  • cpudt like bkpf-cpudt,

  • cputm like bkpf-cputm,

END OF IBSIM.

DATA: BEGIN OF IBKPF OCCURS 1000,

BUKRS LIKE BKPF-BUKRS, " P30K160185

BELNR LIKE BKPF-BELNR,

GJAHR LIKE BKPF-GJAHR,

BUDAT LIKE BKPF-BUDAT,

BLART LIKE BKPF-BLART,

CPUDT LIKE BKPF-CPUDT,

CPUTM LIKE BKPF-CPUTM,

END OF IBKPF.

DATA: BEGIN OF IBSWEG OCCURS 1000,

BELNR LIKE BSEG-BELNR,

GJAHR LIKE BSEG-GJAHR,

DMBTR LIKE BSEG-DMBTR,

SHKZG LIKE BSEG-SHKZG,

BEWAR LIKE BSEG-BEWAR,

BZDAT LIKE BSEG-BZDAT,

MATNR LIKE BSEG-MATNR,

WERKS LIKE BSEG-WERKS,

BWKEY LIKE BSEG-BWKEY,

MENGE LIKE BSEG-MENGE,

MEINS LIKE BSEG-MEINS,

BWTAR LIKE BSEG-BWTAR,

EBELN LIKE BSEG-EBELN,

ELIKZ LIKE BSEG-ELIKZ,

VPRSV LIKE BSEG-VPRSV,

PEINH LIKE BSEG-PEINH,

NPREI LIKE BSEG-NPREI,

TBTKZ LIKE BSEG-TBTKZ,

BUSTW LIKE BSEG-BUSTW,

END OF IBSWEG.

DATA: BEGIN OF STORNO OCCURS 0,

MBLNR LIKE MSEG-MBLNR,

MJAHR LIKE MSEG-MJAHR,

ZEILE LIKE MSEG-ZEILE,

SMBLN LIKE MSEG-SMBLN,

SJAHR LIKE MSEG-SJAHR,

SMBLP LIKE MSEG-SMBLP,

END OF STORNO.

*----


Summations- und Bestandstabellen -


*

DATA: BEGIN OF BESTAND OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

endmenge like mard-labst, "Bestand zu 'datum-high'

anfmenge like mard-labst, "Bestand zu 'datum-low'

MEINS LIKE MARA-MEINS, "Mengeneinheit

ENDWERT LIKE MBEW-SALK3, "Wert zu 'datum-high'

ANFWERT LIKE MBEW-SALK3, "Wert zu 'datum-low'

SOLL LIKE MSEG-MENGE,

HABEN LIKE MSEG-MENGE,

SOLLWERT LIKE MBEW-SALK3,

HABENWERT LIKE MBEW-SALK3,

WAERS LIKE T001-WAERS, "Währungsschlüssel

ENDmenge_ALT like mard-labst, "Bestand zu 'datum-high'

anfmenge_ALT like mard-labst, "Bestand zu 'datum-low'

MEINS_ALT LIKE MARA-MEINS, "Mengeneinheit

SOLL_ALT LIKE MSEG-MENGE,

HABEN_ALT LIKE MSEG-MENGE,

END OF BESTAND.

DATA: BEGIN OF BESTAND1 OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

endmenge like mard-labst, "Bestand zu 'datum-high'

anfmenge like mard-labst, "Bestand zu 'datum-low'

MEINS LIKE MARA-MEINS, "Mengeneinheit

ENDWERT LIKE MBEW-SALK3, "Wert zu 'datum-high'

ANFWERT LIKE MBEW-SALK3, "Wert zu 'datum-low'

SOLL LIKE MSEG-MENGE,

HABEN LIKE MSEG-MENGE,

SOLLWERT LIKE MBEW-SALK3,

HABENWERT LIKE MBEW-SALK3,

WAERS LIKE T001-WAERS, "Währungsschlüssel

ENDmenge_ALT like mard-labst, "Bestand zu 'datum-high'

anfmenge_ALT like mard-labst, "Bestand zu 'datum-low'

MEINS_ALT LIKE MARA-MEINS, "Mengeneinheit

SOLL_ALT LIKE MSEG-MENGE,

HABEN_ALT LIKE MSEG-MENGE,

END OF BESTAND1.

DATA: BEGIN OF SUM_MAT OCCURS 100,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

  • dmbtr like mseg-dmbtr,

  • waers like mseg-waers,

END OF SUM_MAT.

data: begin of sum_BWAGR occurs 100,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

  • dmbtr like mseg-dmbtr,

  • waers like mseg-waers,

BWAGR like st156s-BWAGR,

end of sum_BWAGR.

DATA: BEGIN OF SUM_CHAR OCCURS 100,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

  • dmbtr like mseg-dmbtr,

  • waers like mseg-waers,

END OF SUM_CHAR.

data: begin of sum_BWAGR_char occurs 100,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

  • dmbtr like mseg-dmbtr,

  • waers like mseg-waers,

BWAGR like st156s-BWAGR,

end of sum_BWAGR_char.

DATA: BEGIN OF WEG_MAT OCCURS 100,

WERKS LIKE MSEG-WERKS,

LGORT LIKE MSEG-LGORT, " P30K140665

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

  • dmbtr like mseg-dmbtr,

END OF WEG_MAT.

DATA: BEGIN OF WEG_CHAR OCCURS 100,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

LGORT LIKE MSEG-LGORT, " P30K140665

CHARG LIKE MSEG-CHARG,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

  • dmbtr like mseg-dmbtr,

END OF WEG_CHAR.

DATA: BEGIN OF MAT_SUM OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

WAERS LIKE MSEG-WAERS,

END OF MAT_SUM.

data: begin of mat_sum_BWAGR occurs 100,

BWKEY LIKE MBEW-BWKEY,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

WAERS LIKE MSEG-WAERS,

BWAGR like st156s-BWAGR,

end of mat_sum_BWAGR.

DATA: BEGIN OF MAT_SUM_BUK OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

WAERS LIKE MSEG-WAERS,

END OF MAT_SUM_BUK.

data: begin of mat_sum_BWAGR_buk occurs 100,

BWKEY LIKE MBEW-BWKEY,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

WAERS LIKE MSEG-WAERS,

BWAGR like st156s-BWAGR,

end of mat_sum_BWAGR_buk.

DATA: BEGIN OF MAT_WEG OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

WERKS LIKE MSEG-WERKS,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

DMBTR LIKE MSEG-DMBTR,

END OF MAT_WEG.

DATA: BEGIN OF MAT_WEG_BUK OCCURS 100,

BWKEY LIKE MBEW-BWKEY,

MATNR LIKE MSEG-MATNR,

SHKZG LIKE MSEG-SHKZG,

MENGE LIKE MSEG-MENGE,

DMBTR LIKE MSEG-DMBTR,

END OF MAT_WEG_BUK.

DATA: BEGIN OF FI_SUM OCCURS 100,

BWKEY LIKE BSIM-BWKEY,

MATNR LIKE BSIM-MATNR,

SHKZG LIKE BSIM-SHKZG,

MENGE LIKE BSIM-MENGE,

DMBTR LIKE BSIM-DMBTR,

END OF FI_SUM.

DATA: BEGIN OF FI_NACH OCCURS 100,

BWKEY LIKE BSIM-BWKEY,

MATNR LIKE BSIM-MATNR,

SHKZG LIKE BSIM-SHKZG,

MENGE LIKE BSIM-MENGE,

DMBTR LIKE BSIM-DMBTR,

END OF FI_NACH.

DATA: BEGIN OF FI_WEG OCCURS 100,

BWKEY LIKE BSIM-BWKEY,

MATNR LIKE BSIM-MATNR,

SHKZG LIKE BSIM-SHKZG,

MENGE LIKE BSIM-MENGE,

DMBTR LIKE BSIM-DMBTR,

END OF FI_WEG.

*----


Feldleisten -


*

DATA: BEGIN OF LEISTE,

WERKS LIKE MSEG-WERKS,

BWKEY LIKE MBEW-BWKEY,

MATNR LIKE MSEG-MATNR,

CHARG LIKE MSEG-CHARG,

END OF LEISTE.

*----


Hilfsfelder -


*

DATA: CURM LIKE TCURM-BWKRS_CUS,

BUKR LIKE T001-BUKRS,

BWKR LIKE T001K-BWKEY,

WERK LIKE T001W-WERKS,

NAME LIKE T001W-NAME1,

LORT LIKE T001L-LGORT,

WAER LIKE T001-WAERS,

INDEX_0 LIKE SY-TABIX,

INDEX_1 LIKE SY-TABIX,

INDEX_2 LIKE SY-TABIX,

INDEX_3 LIKE SY-TABIX,

AKTDAT LIKE SY-DATLO,

SORTFIELD(30),

MATERIAL(30),

PAGENO LIKE SYST-PAGNO,

COUNT TYPE I,

ZWSUM LIKE MSEG-MENGE,

ZWBTR LIKE MSEG-DMBTR,

NACH_MENGE LIKE MSEG-MENGE, " Nachbelastungen

NACH_DMBTR LIKE MSEG-DMBTR,

new_BWAGR like st156s-BWAGR,

old_BWAGR like st156s-BWAGR,

LEER(1) TYPE C,

COUNTER LIKE SY-TABIX,

INHALT(10) TYPE N.

DATA: JAHRLOW(4) TYPE C,

MONATLOW(2) TYPE C,

TAGLOW(2) TYPE C,

JAHRHIGH(4) TYPE C,

MONATHIGH(2) TYPE C,

TAGHIGH(2) TYPE C.

  • zur Berechtigungsprüfung:

DATA ACTVT03 LIKE TACT-ACTVT VALUE '03'. "anzeigen

*----


Feldsymbole -


*

FIELD-SYMBOLS: .

*----


FELDER FÜR LISTVIEWER -


*

DATA: REPID LIKE SY-REPID.

DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: XHEADER TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

DATA: KEYINFO TYPE SLIS_KEYINFO_ALV.

DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.

DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.

DATA: EVENT_EXIT TYPE SLIS_T_EVENT_EXIT WITH HEADER LINE.

DATA: SORTTAB TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

DATA: FILTTAB TYPE SLIS_T_FILTER_ALV WITH HEADER LINE.

DATA: EXTAB TYPE SLIS_T_EXTAB WITH HEADER LINE.

DATA: PRINT TYPE SLIS_PRINT_ALV.

  • Listanzeigevarianten

DATA: VARIANTE LIKE DISVARIANT, " Anzeigevariante

DEF_VARIANTE LIKE DISVARIANT, " Defaultvariante

VARIANT_EXIT(1) TYPE C,

VARIANT_SAVE(1) TYPE C,

VARIANT_DEF(1) TYPE C.

  • Gruppen Positionsfelder

DATA: GRUPPEN TYPE SLIS_T_SP_GROUP_ALV WITH HEADER LINE.

reg,

archana