Some poor souls in your finance department might use this report for auditing...
This program lists accounting documents that were automatically created from MM, and also lists the MM source documents. It can take several minutes to run, depending on the amount of data in the database, because it has to access (slow) cluster tables.
Accounting Docs Automatically Created from MM
*&---------------------------------------------------------------------*
*& Report ZFIMMDOC *
*& Listing of accounting docs and the material docs from which they *
*& were automatically created. *
*&---------------------------------------------------------------------*
REPORT ZFIMMDOC MESSAGE-ID Z1 LINE-COUNT 65 NO STANDARD PAGE HEADING.
TABLES: BKPF, MSEG, MKPF, T001, BSIM, T001K, MARA, BSEG, SKAT,
MAKT, T156T.
INCLUDE: ZFIMMTOP. "types mymseg_type
PARAMETERS: COMPANYC LIKE BKPF-BUKRS OBLIGATORY, " default '1101',
YEAR LIKE BKPF-GJAHR OBLIGATORY, " default '1998'.
POSTDATE LIKE BKPF-BUDAT OBLIGATORY.
SELECT-OPTIONS: VAL_AREA FOR BSIM-BWKEY NO-DISPLAY,
S_MBLNR FOR MSEG-MBLNR NO-DISPLAY,
S_BELNR FOR BSEG-BELNR NO-DISPLAY.
DATA: MYBUTXT LIKE T001-BUTXT,
LINES TYPE I,
PREVIOUS_BELNR LIKE BKPF-BELNR,
PREVIOUS_AWKEY LIKE BKPF-AWKEY,
MYTXT50 LIKE SKAT-TXT50,
BEGIN OF X001K OCCURS 20.
INCLUDE STRUCTURE T001K.
DATA: END OF X001K.
DATA: BEGIN OF MYBKPF OCCURS 100,
BLART LIKE BKPF-BLART, "doc type
BELNR LIKE BKPF-BELNR, "doc no
WAERS LIKE BKPF-WAERS, "currency key
AWKEY LIKE BKPF-AWKEY,
END OF MYBKPF.
DATA: BEGIN OF MYBSIM OCCURS 500.
INCLUDE TYPE MYBSIM_TYPE.
DATA: END OF MYBSIM.
DATA: BEGIN OF MYBSEG OCCURS 1200,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
BSCHL LIKE BSEG-BSCHL,
HKONT LIKE BSEG-HKONT,
WRBTR LIKE BSEG-WRBTR,
SHKZG LIKE BSEG-SHKZG, "debit/credit
END OF MYBSEG.
DATA: BEGIN OF MYMSEG OCCURS 500.
INCLUDE TYPE MYMSEG_TYPE.
DATA: END OF MYMSEG.
PERFORM GET_BKPF.
PERFORM GET_BSIM.
PERFORM COLLECT_BELNR.
PERFORM GET_BSEG.
PERFORM COLLECT_MBLNR.
PERFORM GET_MSEG.
SORT MYBSIM BY BELNR.
SORT MYMSEG BY MBLNR ZEILE.
SORT MYBSEG BY BELNR BUZEI.
LOOP AT MYBSIM.
IF MYBSIM-SHKZG = 'H'. "negative value
MYBSIM-DMBTR = ( -1 ) * MYBSIM-DMBTR.
ENDIF.
PERFORM WRITE_BSIM_DATA USING MYBSIM.
AT END OF BELNR. "new belnr record: get bseg recs
PERFORM WRITE_BSEG_DATA USING MYBSIM-BELNR.
ENDAT.
AT END OF AWKEY.
PERFORM WRITE_MSEG_DATA USING MYBSIM-AWKEY(10).
ENDAT.
WRITE: SY-ULINE.
ENDLOOP.
WRITE: / 'number of records accessed'.
DESCRIBE TABLE MYBKPF LINES LINES.
WRITE: / 'bkpf:', LINES.
DESCRIBE TABLE MYBSIM LINES LINES.
WRITE: / 'bsim:', LINES.
DESCRIBE TABLE MYMSEG LINES LINES.
WRITE: / 'mseg:', LINES.
DESCRIBE TABLE MYBSEG LINES LINES.
WRITE: / 'bseg:', LINES.
AT SELECTION-SCREEN.
* get company text
SELECT SINGLE BUTXT FROM T001 INTO MYBUTXT
WHERE BUKRS = COMPANYC.
* get valuation areas from company code
REFRESH VAL_AREA. CLEAR VAL_AREA.
SELECT * FROM T001K INTO TABLE X001K
WHERE BUKRS = COMPANYC.
LOOP AT X001K.
VAL_AREA-SIGN = 'I'. VAL_AREA-OPTION = 'EQ'.
VAL_AREA-LOW = X001K-BWKEY.
APPEND VAL_AREA.
ENDLOOP.
READ TABLE VAL_AREA INDEX 1.
TOP-OF-PAGE.
PERFORM WRITE_HEADER.
*&---------------------------------------------------------------------*
*& Form GET_BKPF
*&---------------------------------------------------------------------*
FORM GET_BKPF.
* get bkpf records
* should perform authority check here **
SELECT BLART BELNR WAERS AWKEY
INTO CORRESPONDING FIELDS OF TABLE MYBKPF
FROM BKPF
WHERE BUKRS = COMPANYC AND GJAHR = YEAR AND BUDAT = POSTDATE
ORDER BY BELNR.
ENDFORM. " GET_BKPF
*&---------------------------------------------------------------------*
*& Form GET_BSIM
*----------------------------------------------------------------------*
FORM GET_BSIM.
LOOP AT MYBKPF.
MYBSIM-BLART = MYBKPF-BLART.
MYBSIM-BELNR = MYBKPF-BELNR.
MYBSIM-WAERS = MYBKPF-WAERS.
MYBSIM-AWKEY = MYBKPF-AWKEY.
* should perform authority check here **
* select bsim records using conditions gjahr, bwkey, belnr
SELECT BELNR BUZEI DMBTR MATNR BUDAT MENGE MEINS
INTO CORRESPONDING FIELDS OF MYBSIM
FROM BSIM
WHERE GJAHR = YEAR AND
BELNR = MYBKPF-BELNR AND
BWKEY IN VAL_AREA.
APPEND MYBSIM.
ENDSELECT.
ENDLOOP.
ENDFORM. " GET_BSIM
*&---------------------------------------------------------------------*
*& Form get_bseg
*&---------------------------------------------------------------------*
FORM GET_BSEG.
* should perform authority check here **
* select bseg records using conditions bukrs, belnr, gjahr
SELECT BELNR BUZEI BSCHL HKONT WRBTR SHKZG
INTO CORRESPONDING FIELDS OF TABLE MYBSEG
FROM BSEG
WHERE GJAHR = YEAR AND
BUKRS = COMPANYC AND
BELNR IN S_BELNR.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_MSEG
*&---------------------------------------------------------------------*
FORM GET_MSEG.
* should perform authority check here **
SELECT MBLNR
ZEILE BWART MATNR LGORT MENGE MEINS WAERS SHKZG DMBTR WERKS
KOSTL SOBKZ KZBEW KZZUG KZVBR
INTO CORRESPONDING FIELDS OF TABLE MYMSEG
FROM MSEG
WHERE MJAHR = YEAR AND MBLNR IN S_MBLNR.
WRITE: SY-ULINE.
ENDFORM. " GET_AND_WRITE_MATDOC
*&---------------------------------------------------------------------*
*& Form WRITE_HEADER
*----------------------------------------------------------------------*
FORM WRITE_HEADER.
DATA: MYOPTION(11) TYPE C, MYSIGN(7) TYPE C, "explain select criteria
SELECT_TEXT(60) TYPE C, SELECT_POSITION TYPE I.
WRITE: TEXT-000,
TEXT-001. "company and report header
IF SY-PAGNO = 1. "**** first page
WRITE: / 'Company Code', COMPANYC, MYBUTXT,
'Accounting Year', YEAR, 'Posting Date:', POSTDATE.
ENDIF. "**** first page
WRITE: / 'Generated', SY-DATUM, SY-UZEIT,
'Page', SY-PAGNO, SY-ULINE.
* format for accounting docs
FORMAT COLOR COL_GROUP.
WRITE: / 'DT',
4 'acct doc',
15 'material',
25 'item',
31 'Posted',
42(12) 'Quantity',
'Unit',
61 ' balance'.
FORMAT COLOR OFF.
WRITE: / 'item' UNDER 'item', 30 'Code', 35 'Account',
45 'Description',
61 ' balance'.
* format for material docs
FORMAT COLOR COL_TOTAL.
WRITE: / 'MatrialDoc' UNDER 'acct doc',
'Posted' UNDER 'Posted', 'Entered' UNDER 'Description',
76 ' '.
FORMAT COLOR OFF.
WRITE: /10 'item',
'Material' UNDER 'Material',
25 'Plant',
'Stor' UNDER 'Code',
'Mvmt' UNDER 'Account',
42(12) 'Quantity',
'Unit',
61 ' balance',
/11 'MaterialDesc',
'MovementType' UNDER 'Quantity',
60 'CostCtr'.
WRITE: SY-ULINE.
ENDFORM. " WRITE_HEADER
*&---------------------------------------------------------------------*
*& Form WRITE_MKPF_DATA
*&---------------------------------------------------------------------*
FORM WRITE_MKPF_DATA USING F_MSEG TYPE MYMSEG_TYPE
F_MAKTX LIKE MAKT-MAKTX
F_BTEXT LIKE T156T-BTEXT.
WRITE: / F_MSEG-ZEILE UNDER 'item',
F_MSEG-MATNR UNDER 'material',
F_MSEG-WERKS UNDER 'Plant',
F_MSEG-LGORT UNDER 'Stor',
F_MSEG-BWART UNDER 'Mvmt',
(12)F_MSEG-MENGE UNDER 'Quantity' DECIMALS 2,
F_MSEG-MEINS UNDER 'Unit',
F_MSEG-DMBTR UNDER ' balance'.
WRITE: / F_MAKTX UNDER 'MaterialDesc',
F_BTEXT UNDER 'MovementType',
F_MSEG-KOSTL UNDER 'CostCtr'.
ENDFORM. " WRITE_MKPF_DATA
*&---------------------------------------------------------------------*
*& Form WRITE_MKPF_HEADER
*&---------------------------------------------------------------------*
FORM WRITE_MKPF_HEADER USING P_MBLNR LIKE MKPF-MBLNR.
DATA: MYBUDAT LIKE MKPF-BUDAT, MYCPUDT LIKE MKPF-CPUDT.
SELECT SINGLE BUDAT CPUDT FROM MKPF
INTO (MYBUDAT, MYCPUDT)
WHERE MBLNR = P_MBLNR AND MJAHR = YEAR.
IF SY-SUBRC = 0. "got record
FORMAT COLOR COL_TOTAL.
WRITE: / P_MBLNR UNDER 'acct doc',
MYBUDAT UNDER 'Posted',
MYCPUDT UNDER 'Entered',
76 ' '.
FORMAT COLOR OFF.
ENDIF.
ENDFORM. " WRITE_MKPF_HEADER
*&---------------------------------------------------------------------*
*& Form WRITE_BSIM_DATA
*&---------------------------------------------------------------------*
FORM WRITE_BSIM_DATA USING F_BSIM TYPE MYBSIM_TYPE.
FORMAT COLOR COL_GROUP.
WRITE: / F_BSIM-BLART UNDER 'DT',
F_BSIM-BELNR UNDER 'acct doc',
F_BSIM-MATNR UNDER 'material',
F_BSIM-BUZEI UNDER 'Plant', "item
F_BSIM-BUDAT UNDER 'Posted',
(12)F_BSIM-MENGE UNDER 'Quantity' DECIMALS 2,
F_BSIM-MEINS UNDER 'Unit',
F_BSIM-DMBTR UNDER ' balance' RIGHT-JUSTIFIED.
FORMAT COLOR OFF.
ENDFORM. " WRITE_BSIM_DATA
*&---------------------------------------------------------------------*
*& Form WRITE_BSEG_DATA
*&---------------------------------------------------------------------*
FORM WRITE_BSEG_DATA USING P_BELNR.
LOOP AT MYBSEG WHERE BELNR = P_BELNR.
SELECT SINGLE TXT50 INTO MYTXT50 FROM SKAT
WHERE SPRAS = '1' AND KTOPL = 'HFCA' AND
SAKNR = MYBSEG-HKONT.
IF MYBSEG-SHKZG = 'H'. "negative value
MYBSEG-WRBTR = ( -1 ) * MYBSEG-WRBTR.
ENDIF.
WRITE: / MYBSEG-BUZEI UNDER 'Plant', "item
MYBSEG-BSCHL UNDER 'Code',
MYBSEG-HKONT UNDER 'Account',
MYTXT50 UNDER 'Description',
MYBSEG-WRBTR UNDER ' balance'.
ENDLOOP.
ENDFORM. " WRITE_BSEG_DATA
*&---------------------------------------------------------------------*
*& Form COLLECT_MBLNR
*&---------------------------------------------------------------------*
FORM COLLECT_MBLNR.
SORT MYBSIM BY AWKEY.
S_MBLNR-SIGN = 'I'.
S_MBLNR-OPTION = 'EQ'.
LOOP AT MYBSIM.
AT NEW AWKEY.
S_MBLNR-LOW = MYBSIM-AWKEY(10).
APPEND S_MBLNR.
ENDAT.
ENDLOOP.
READ TABLE S_MBLNR INDEX 1.
ENDFORM. " COLLECT_MBLNR
*&---------------------------------------------------------------------*
*& Form COLLECT_BELNR
*&---------------------------------------------------------------------*
FORM COLLECT_BELNR.
S_BELNR-SIGN = 'I'.
S_BELNR-OPTION = 'EQ'.
SORT MYBSIM BY BELNR.
LOOP AT MYBSIM.
AT NEW BELNR.
S_BELNR-LOW = MYBSIM-BELNR.
APPEND S_BELNR.
ENDAT.
ENDLOOP.
READ TABLE S_BELNR INDEX 1.
ENDFORM. " COLLECT_BELNR
*&---------------------------------------------------------------------*
*& Form WRITE_MSEG_DATA
*&---------------------------------------------------------------------*
FORM WRITE_MSEG_DATA USING P_MBLNR LIKE MSEG-MBLNR.
DATA: MYBTEXT LIKE T156T-BTEXT,
MYMAKTX LIKE MAKT-MAKTX.
PERFORM WRITE_MKPF_HEADER USING P_MBLNR.
LOOP AT MYMSEG WHERE MBLNR = P_MBLNR.
SELECT SINGLE BTEXT INTO MYBTEXT FROM T156T
WHERE SPRAS = '1' AND
BWART = MYMSEG-BWART AND
SOBKZ = MYMSEG-SOBKZ AND
KZBEW = MYMSEG-KZBEW AND
KZZUG = MYMSEG-KZZUG AND
KZVBR = MYMSEG-KZVBR.
SELECT SINGLE MAKTX INTO MYMAKTX FROM MAKT
WHERE SPRAS = '1' AND MATNR = MYMSEG-MATNR.
IF MYMSEG-SHKZG = 'H'.
MYMSEG-DMBTR = ( -1 ) * MYMSEG-DMBTR.
ENDIF.
PERFORM WRITE_MKPF_DATA USING MYMSEG MYMAKTX MYBTEXT.
ENDLOOP.
ENDFORM. " WRITE_MSEG_DATA
* end of ZFIMMDOC program *
* begin of ZFIMMTOP include program *
*----------------------------------------------------------------------*
* INCLUDE ZFIMMTOP *
*----------------------------------------------------------------------*
TYPES: BEGIN OF MYMSEG_TYPE,
MBLNR LIKE MSEG-MBLNR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
WAERS LIKE MSEG-WAERS,
SHKZG LIKE MSEG-SHKZG,
DMBTR LIKE MSEG-DMBTR,
KOSTL LIKE MSEG-KOSTL,
SOBKZ LIKE MSEG-SOBKZ, " for goods movement text
KZBEW LIKE MSEG-KZBEW, " for goods movement text
KZZUG LIKE MSEG-KZZUG, " for goods movement text
KZVBR LIKE MSEG-KZVBR, " for goods movement text
END OF MYMSEG_TYPE.
TYPES: BEGIN OF MYBSIM_TYPE,
BLART LIKE BKPF-BLART, "doc type
BELNR LIKE BKPF-BELNR, "doc no
WAERS LIKE BKPF-WAERS,
AWKEY LIKE BKPF-AWKEY,
BUZEI LIKE BSIM-BUZEI, "doc item
MATNR LIKE BSIM-MATNR,
BUDAT LIKE BSIM-BUDAT,
MENGE LIKE BSIM-MENGE, "quantity
MEINS LIKE BSIM-MEINS, "unit of measure
SHKZG LIKE BSIM-SHKZG, "debit/credit
DMBTR LIKE BSIM-DMBTR, "balance amount
END OF MYBSIM_TYPE.
* end of ZFIMMDOC include *
Friday, November 23, 2007
ABAP PROGRAM OR IMPLEMENTATION : Accounting Docs Automatically Created from MM
Subscribe to:
Post Comments (Atom)
Blog Archive
-
▼
2007
(952)
-
▼
November
(716)
- SAP Paper Documents
- SAP Repository
- SAP R/3 Implementation and Maintenance Tips
- ABAP/4 programming language overview
- The interactive eLearning system for ABAP™
- Helpful System Administration ABAPS
- free download abap programmin pdf book
- examples of real time objects in sap abap(1)
- examples of real time objects in sap abap
- work flow example2
- Workflow tips
- Miscellaneous sap abap faq
- BDC , LSMW, Conversions faq in abap
- Sap Scripts & Smart forms faqs in abap
- performance tuning in abap faqs
- Real Time BDC & LSMW faqs
- Real Time ABAP Internal Tables faqs
- Real Time ABAP Reports faqs
- Real Time questions ..in sap ABAP
- SAP ABAP FAQ (Technical)
- ABAP and Unicode
- ABAP and JavaScript
- ABAP Objects
- ABAP Database Access
- Running ABAP Programs
- ABAP User Dialogs
- The ABAP Programming Language
- Creating and Changing ABAP Programs
- Overview of the Components of Application Programs
- Introduction to ABAP
- ABAP Programming Documentation
- FREE DOWNLOAD ALE, EDI & IDOCS
- Conversion of IDOCs to XML.pdf
- FREE DOWNLOAD IDOC Interface Technology
- FREE DOWNLOAD EDI, IDOC Interface
- FREE DOWNLOAD IDOC BOOK
- FREE DOWNLOAD LSMW - Idoc Inbound Processing
- FREE DOWNLOAD SAP ABAP Idoc Interface
- FREE DOWNLOAD Java for SAP
- FREE DOWNLOAD Java for ABAP Programmers
- FREE DOWNLOAD Java and BAPI technology for EP
- free download Building Web Services with Java and ...
- free download Enable SAP with the power of Javascript
- FREE DOWNLOAD ABAP Training Simulator
- FREE DOWNLOAD SAP Accounting Training Simulators
- free download SAPScripts Made Easy
- CONDENSE
- CONSTANTS
- ABAP Quick Viewer
- sap abap XXL (EXtended Export of Lists)
- Some ABAP/4 Query header line variable
- Understanding SAP Query
- ABAP/4 Query
- ABAP/4 Query Hints and Tips
- SAP Website Links Exchange for ABAP, Basis or Cons...
- sap abap Program for Generate IDoc
- sap abap program for Reads an existing Idoc and di...
- List of ABAP Function modules
- sap abap FTP programming
- sap abap program for Issuing an Unix Command from ...
- sap abap program for RFC call to get Server List
- sap abap program for A SAP Pop-out Calculator
- sap ABAP program for Timers and Auto-refresh
- sap abap program for WS_EXECUTE to called External...
- sap abap programming Execute DOS Command from ABAP...
- To execute a dos command from ABAP
- sap abap program for Make your SAPGUI Disappear an...
- sap abap program for Using Function Modules F4_FIL...
- abp program for How to Restrict the Select Options
- sap abap program for Take Values from Selection-Sc...
- sap abap program for Change Text Into Password
- sap abap program for Function Module for Encryptio...
- sap abap program for FM VRM_SET_VALUE To List Box
- sap abap program for Value Request For Parameter
- sap abap program for Pop a Message to specific SAP...
- ABAP Pop-out box for user confirmation
- sap ABAP program for POP-UP Window
- sap abap program Sample XML Source Code For SAP
- sap abap XML file to word document through SAP
- sap abap program for How to Write Web Reports in SAP
- sap abap conversion Program to Test Line Selection...
- sap abap program for String Handling in ABAP - Rem...
- sap abap program for Split String into two parts a...
- sap abap conversion Program For Printing Prime Number
- sap abap program for How can I get Ascii value of ...
- sap abap program for Figure to Words for India but...
- sap abap conversion program for Print Number Value...
- sap abap conversion program for Insert a special T...
- sap abap program for String Handling in ABAP - Rem...
- sap abap program for Split String into two parts a...
- sap abap conversion Program For Printing Prime Number
- sap abap program for How can I get Ascii value of ...
- sap abap program for Figure to Words for India but...
- sap abap conversion program for Print Number Value...
- sap abap conversion program for Insert a special T...
- sap abap program for Convert SAP Spool List to HTML
- sap program for Convert Month to Word in ABAP
- ABAP function to convert Number to Words
- sap abap program for How to Create Tree Control
- sap abap A sample Tree Programming
-
▼
November
(716)
No comments:
Post a Comment