03-27-2008 10:42 AM
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
03-27-2008 10:58 AM
In debugging program doesn't stop at data declaration part.
Check once again.
don't forget to reward
S@meer
03-27-2008 11:03 AM
03-27-2008 11:33 AM
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