Report for LiveCache size
Hi everybody,
is there a report that provides me with the LiveCache size?
Thank you in advance for your help.
Kind regards
Mitch
Hello Mitch
May be this thread will give some insight on Livecache Sizing and maintenance.
Reduce Livecache Database size
Also based on my old notes, following are key considerations while calculating Livecache Size. This has to be for every planning area which exist in your APO system
Number of Characteristic Combinations
Number of Keyfigures in Planning horizon
Number of Periods in planning horizon
Number of Keyfigures in Historical horizon
Number of Periods in Historical horizon
Total Number of Keyfigures in the entire horizon
Total Number of periods in the entire horizon
Number of planning versions in Infocube
Number of planning versions in livecache
Hope this will help.
Thank you
Satish Waghmare
Similar Messages
-
Report for download sizes?
Hi,
I realise that when viewing each file in DW there is a download size/time info panel at the bottom of the page, but I'm looking to generate a report of the download size for each page of my website so I can evaluate and compare at a glance. Is this possible ?
Many thanks in advanceI'm not aware of anything that would give you results for all your pages at once, but you could check each page here:
http://analyze.websiteoptimization.com
If you use Firefox and have the Web Development toolbar, it's part of the toolbar and very easy to look up each page as you go.
http://chrispederick.com/work/web-developer/
Nadia
Adobe® Community Expert : Dreamweaver
Unique CSS Templates |Tutorials |SEO Articles
http://www.DreamweaverResources.com
Book: Ultimate CSS Reference
http://www.sitepoint.com/launch/005dfd4/3/133
http://twitter.com/nadiap -
Unable to generate report for size of KM folder
hi all,
i want to generate report for size of folder in KM.I am havingthe following roles content admin,content management,system admin,home, are these roles sufficent to generate report or any roles are needed?
And other issue is after going into Content management role I am clicking reports workset but I am unable to see "Folder Size Calculation" option, any full access are needed to see it.
I am following help.sap link plz don't send it ,give me any other Material.
After starting the Km report in Resource Statistics its showing size as zero.
help me in sloving this issue.
thanks in advance,
AravindYou could find all KM reports to the given navigation
try all these paths...I am unable to findout your issue definitely permission related
System Administration -> System Configuration -> Knowledge Management -> Content Management -> Related Topics -> CM Repository Reports
Content Administration -> KM Content -> Toolbox -> Reports
Content Management -> Reports
Regards
Koti -
Report page scaling/zoom for paper size and field width?
Are there ways to design a report, or programmatically set a report to dynamically resize based on factors such as paper size (A4 vs. Letter vs. Legal), orientation (portrait vs. landscape), and field width (e.g fields grow and shrink based on data)? We are looking at ways to dynamically choose paper size and scale. This would be similar to how Excel files can adjust for printing depending on paper, and PDF files can zoom in/out for paper size.
Thanks,
KyleWe don't want to add fields dynamically at runtime. Instead we want to automatically resize fields at runtime to properly fit data on the page. Currently with our 400 reports, data fields have gotten longer over the years so important data is being truncated. We'd like it if fields could properly grow/shrink/scale so that the data is always valid. We'd like it if the user flips from portrait to landscape, the field widths automatically grow to use the entire page. Or, if a user goes from Letter to A4, pagination still works properly and the fields get slightly wider to fit the A4 standard.
What we don't want is to have a version of the report for portrait Letter, portrait A4, portrait Legal, landscape Letter, landscape A4, landscape Legal, etc. It would be a support nightmare.
I don't know if it is possible, but I'm hoping it is. Thanks for the help.
Kyle -
Crystal Reports for Enterprise - SQL Command - Array Fetch Size
We're attempting to migrate a report created in Crystal Reports 2013 Support Pack 3 Version 14.1.3.1257 to...
Crystal Reports for Enterprise Version 14.1.3.1300 Build: 2013 Support Pack 3 Patch 1
The originating report is successfully connecting and returning data from MySQL through the MySQL ODBC 3.51 Driver (3.51.30.00), using a SQL Command
When opening up this report in CR for E and running the report against the same database and the same version of database driver, we get the following Crystal Reports error:
Crystal Reports
A problem was encountered
The following error has occurred while trying to retrieve the data:
Error on Fetch : Largevarchar and Largevarbinary data cannot retrieved as variable-length data if the array fetch size is not set to 1.
Please check with your System Administrator that the data source is correctly configured.
How would we check and where would we adjust the array fetch size within Crystal Report for Enterprise?
Thank youHi Vitaly,
I had not yet tried creating a new report based on the query, within CR for E, but I did now upon your request\suggestion. Yes, it fails as well with a brand new report..same new error as above: "Non Supported Datatype"
I've pasted the SQL we are using below. I just tried running this exact query natively through MyPHPAdmin, and also creating a brand new report with Crystal Reports 2013 against the same ODBC driver that I am trying to use within CR for E. In both cases the query was accepted and ran successfully.
Driver info:
MySQL ODBC 3.51 Driver - Version 3.51.30.00
I have also tried 2 newer versions of the driver:
MySQL ODBC 5.3 ANSI - Version 5.03.02.00
MySQL ODBC 5.3 Unicode - Version 5.03.02.00
...where I also configure each within the Information Design Tool so that the "Array Fetch Size"= 1
I receive the same "Non Supported Datatype" error for these drivers as well. The MySQL server version is: 5.1.73-0ubuntu0.10.04.1-log
Protocol Version: 10
MySQL charset: UTF-8
Here is the query:
SELECT ft.seq_id, ft.ticket_date, ft.posttotal,
wl.name as current_approval_level,
TIMESTAMPDIFF(DAY,ft.ticket_date,NOW()) AS Days_Since_TicketDate,
TIMESTAMPDIFF(DAY,ft.date_created,NOW()) AS Days_Since_Created,
TIMESTAMPDIFF(DAY,wph.workflow_date,NOW()) AS Days_Waiting_Your_Approval,
ft.internal_comments
FROM ticket AS ft
LEFT JOIN unit AS unit ON (ft.unit_id = unit.id)
LEFT JOIN unit_district AS udist ON (udist.unit_id = unit.id AND (udist.effective_date IS NULL OR udist.effective_date = 0 OR udist.effective_date <= ft.ticket_date)
AND (udist.expiry_date IS NULL OR udist.expiry_date = 0 OR udist.expiry_date >= ft.ticket_date))
LEFT JOIN workflow_document_process_map AS wdpm ON (ft.id = wdpm.document_id AND wdpm.document_type_id = 1)
LEFT JOIN workflow_process AS wp ON (wp.id = wdpm.workflow_process_id)
LEFT JOIN workflow_rule AS wr ON (wp.workflow_schema_id = wr.workflow_schema_id AND wp.workflow_level_id = wr.workflow_level_id AND wr.workflow_activity_id = 2 AND (wr.effective_date IS NULL OR wr.effective_date = 0 OR wr.effective_date <= ft.ticket_date) AND (wr.expiry_date IS NULL OR wr.expiry_date = 0 OR wr.expiry_date >= ft.ticket_date))
LEFT JOIN workflow_rule AS wr2 ON (wp.workflow_schema_id = wr2.workflow_schema_id AND wp.workflow_level_id = wr2.workflow_level_id AND wr2.workflow_activity_id = 4 AND (wr2.effective_date IS NULL OR wr2.effective_date = 0 OR wr2.effective_date <= ft.ticket_date) AND (wr2.expiry_date IS NULL OR wr2.expiry_date = 0 OR wr2.expiry_date >= ft.ticket_date))
LEFT JOIN workflow_process_history AS wph ON (wph.workflow_process_id = wp.id)
LEFT JOIN ticket_attachment AS ftattach ON (ft.id = ftattach.ticket_id AND ftattach.attachment_type_id = 2)
LEFT JOIN person AS p ON (ft.supervisor_id = p.id)
LEFT JOIN person AS p2 ON (ft.head_office_contact_id = p2.id AND (p2.effective_date IS NULL OR p2.effective_date = 0 OR p2.effective_date <= ft.ticket_date)
AND (p2.expiry_date IS NULL OR p2.expiry_date = 0 OR p2.expiry_date >= ft.ticket_date))
LEFT JOIN person AS p3 ON (ft.sales_person_id = p3.id)
LEFT JOIN person_company_sales AS pcs ON (p2.id = pcs.client_person_id AND pcs.company_id = ft.client_company_id)
LEFT JOIN person AS p4 ON (ft.created_by = p4.id)
LEFT JOIN person AS p5 ON (ft.well_site_supervisor_id = p5.id)
LEFT JOIN division AS d ON (ft.division_id = d.id)
LEFT JOIN district AS dist1 ON (ft.district_id = dist1.id)
LEFT JOIN district AS dist2 ON (udist.district_id = dist2.id)
LEFT JOIN company AS c ON (ft.client_company_id = c.id)
LEFT JOIN province AS prov ON (ft.job_province_id = prov.id)
LEFT JOIN ticket_attachment AS ftattach2 ON (ft.id = ftattach2.ticket_id AND ftattach2.attachment_type_id != 2)
LEFT JOIN locale_currency AS lc ON (lc.id = ft.locale_currency_id)
LEFT JOIN operation_type AS ot ON (ot.id = ft.operation_type_id)
LEFT JOIN incident AS i ON (i.ticket_id = ft.id)
LEFT JOIN invoice_type AS it ON (it.id = ft.invoice_type_id)
LEFT JOIN workflow_level AS wl ON (wl.id = wp.workflow_level_id)
LEFT JOIN company AS dist1_company ON (dist1_company.id = dist1.internal_company_id)
WHERE 1
AND ( pcs.sales_person_id = 2113 AND pcs.effective_date <= ft.ticket_date AND ( pcs.expiry_date >= ft.ticket_date OR pcs.expiry_date = '0000-00-00 00:00:00' OR pcs.expiry_date IS NULL) )
AND ft.closed_flag <> 1 AND (wr2.id IS NOT NULL OR wr2.id != 0)
AND ft.commit_flag = 1
AND ft.dispatch_status = 0
AND dist1_company.country_id = 1
AND wr2.role_id = 2
GROUP BY ft.id
ORDER BY ticket_date ASC, ft.id ASC
Thanks you for your help. -
SCCM Report for Software Updates that show the required update and its size
Hello-
I created multiple windows update deployments, but was looking to view a report that shows me the update name (like the KB and MS) along with the size of the update.
Does anyone know if there's a pre-made report? If not, does anyone know of a good query to get this info?
Thanks!
AndrewYes, I know this is an old post, I’m just trying to clean them up.
There is no pre-canned report for this. Yes a report can be written to collect this inform but keep in mind that a SU mind have several versions aka 1 for Winxp, 1 for Vista, 1 for Win2k3, 1 for Win2k3 Sp1, etc. if you are trying aggregate
the data it will take a bit of fancy SQL/SSRS work to get this done. BTW Getting the size of the KB also take a bit of work.
http://www.enhansoft.com/ -
Advice needed for Jasper Reports - Unacceptable File Size
Hi,
we are attempting to use Jasper Reports for online reporting. However, we have found that the filesize for generated reports in HTML formats are simply unacceptable. For example, a Jasper Report of 5000 records is 20MB in size! The download of such files simply takes too long. The reason we believe is due to the image rendering for 'white spaces'. Would greatly appreciate any advice on how to eradicate this problem.Have you tried posting this question at jasper forum:
http://jasperreports.sourceforge.net/community.html
http://sourceforge.net/forum/?group_id=36382 -
Material Stock Report for tcode MB5B
Hello Expert
I have a SAP report for stock posting date with T-Code as MB5B and
the report name is RM07MLBD.
When I enter Material no, plant code , Movement type (101) and selection
dates for a month, The report is displaying but not break by Movement type instead it is showing all the movement type....?
Can anyone have idea about this
REPORT RM07MLBD NO STANDARD PAGE HEADING MESSAGE-ID M7 LINE-SIZE 95.
REPORT RM07MLBD (Transaktionscode MB5B) *
correction June 2004 MM "n747306
wrong the assignment of the MM and FI documents for data "n747306
constellation : n MM doc items --> 1 FI doc item "n747306
ABAP-Preprocessor removed "n599218 A
- this version is for release 4.6C and higher "n599218 A
- process database table OBEW always "n599218 A
- IS-OIL specific functions : "n599218 A
- define IS-OIL workings fields "n599218 A
- transport and process these fields only when "n599218 A
structure MSEG comprise these fields "n599218 A
Improvements : Dec. 2003 MM "n599218
- print the page numbers "n599218
"n599218
- send warnings and error messages only when report is "n599218
launched / advoid warnings when user changes entries on "n599218
the selection screen "n599218
- send warning M7 689 when user does not restrict the "n599218
database in dialog or print mode "n599218
- send warning M7 393 when user deletes the initial "n599218
display variant "n599218
"n599218
- allow to process the fields MAT_KDAUF, MAT_KDPOS, and "n599218
MAT_PSPNR from release 4.5B and higher "n599218
"n599218
- show the current activity and the progress "n599218
"n599218
- error message 'programmfehler' improved "n599218
"n599218
- new categories for scope of list "n599218
"n599218
- use function module for database commit for the update "n599218
of the parameters in table ESDUS. This allows to record "n599218
this transaction for a batch input session using "n599218
transaction SHDB "n599218
"n599218
- reset the entries for plant when valuation level is "n599218
is company code and mode is valuated stock "n599218
"n599218
- enable this report to run in the webreporting mode "n599218
Dec. 2002 MM "n571473
the definition of the selection screen moved from include "n571473
RM07MLBP into this report "n571473
Sept 2002 MM "n555246
log function tax auditor "n555246
note 547170 : August 2002 MM "n547170
- representation of tied empties improved "n547170
active this function automatically in retail systems "n547170
- FORM routines without preprocessor commands and without "n547170
text elements moved to the new include reports "n547170
RM07MLBD_FORM_01and RM07MLBD_FORM_02 "n547170
- the function module FI_CHECK_DATE of note 486477 will "n547170
be processed when it exists "n547170
- function and documentation of parameter XONUL improved "n547170
- display MM documents with MIGO or MB03 depending from "n547170
the release "n547170
- get and save the parameters per user in dialog mode "n547170
only in release >= 4.6 "n547170
the following items were improved with note 497992 "n497992
- wrong results when remaining BSIM entries contain "n497992
an other quantity unit as material master MEINS "n497992
- improve check FI summarization "n497992
- the messages M7 390, M7 391, and M7 392 "n497992
- definition of field g_f_repid for all releases "n497992
- incomplete key for access of internal table IT134M "n497992
causes wrong plant selection "n497992
- the function "no reversal movement" did not surpress "n497992
the original movements; fields "SJAHR" was moved from "n497992
from report RM07MLBD_CUST_FIELDS to RM07MLBD "n497992
- process valuated subcontractor stock from database "n497992
table OBEW if it exists "n497992
- if FI summarization is active process warning M7 390 "n497992
for stock type = valuated stock "n497992
- the user wants to restrict the movement type : process "n497992
warning M7 391 "n497992
- the user wants to surpress the reversal movements : "n497992
process warning M7 392 "n497992
- consider special gain/loss-handling of IS-OIL "n497992
- automatic insert of field WAERS currency key into the "n497992
field catalogue : "n497992
- at least one ref. field is active -> WAERS active "n497992
- all reference fields are hidden -> WAERS hidden "n497992
- the length of sum fields for values was increased "n497992
- customizing for the selection of remaining BSIM entries "n497992
- customizing for the processing of tied empties "n497992
separate time depending authorization for tax auditor "n486477
additional fields are displayed in wrong format "n480130
report RM07MLBD and its includes improved Nov 2001 "n451923
- merging FI doc number into table G_T_MSEG_LEAN improved "n451923
- handling of the short texts improved "n451923
- some types and data definitions -> include RM07MLDD "n451923
error for split valuation and valuated special stock "n450764
process 'goods receipt/issue slip' as hidden field "n450596
error at start date : material without stock has value "n443935
wrong results for docs with customer consignment "W" "n435403
error during data selection for plants "n433765
report RM07MLBD and its includes improved May 10th, 2001 "n400992
!!! IMPORTANT : DO NOT CHANGE OR DELETE THE COMMENT LINES !!! *
- consider the material number during looking for FI documents
- field "g_cust_color" in include report "RM07MLBD_CUST_FIELDS"
allows the customer to activate or inactivate the colors in the
lines with the documents.
- error during calcuation of start stock for special stock "M"
- valuted stocks required : no documents found ? continue and
process empty document table
- the length of sum fields for quantities has been increased
to advoid decimal overflow
- table ORGAN is replaced by G_T_ORGAN
- it is filled by the following ways :
- at process time at selection screen if the
user wants the selection via cc or plant
- otherwise after the database selection of the stock
tables
- it contains less data fields
- it contains all entries twice, for binary search
with plant or valuation area
- selection of databases MKPF and MSEG in one SELECT
command with an inner JOIN
- authority checks after the database selections
- result of database selection from the both database tables
MSEG and MKPF in working table G_F_MSEG_LEAN instead of
the tables IMSEG and IMKPF
- the number of processed data fields was reduced
- the user has the possibility to increase the number of
the processed fields deleting the '*' in the types-command
in include report RM07MLBD_CUST_FIELDS
- the creation of the field catalog for the ALV considers
only the fields of structure G_S_MSEG_LEAN
- the new table G_T_BELEG contains the results for the ALV.
the number of fields of table G_T_BELEG corresponds with
the number of fields of table G_T_MSEG_LEAN.
- the functions "define breakdown" and "choose" are inactivated
in the menue, because they are are not carried out correctly
in all blocks of the list
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 *
*eject
*# APP_CALL_DECLARE TEST
this definitions depend on the release
TYPE-POOLS: IMREP, " Typen Bestandsführungsreporting
SLIS. " Typen Listviewer
for the selection of the reversal movements only in release >=45B
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.
include: rm07mldd, " reportspezifische Datendefinitionen
rm07grid. " Gitternetz, Formatierung, Farbgebung
INCLUDE RM07APP1. "ABAP-PREPROCESSOR "TEST
"n571473
define the selection screen here "n571473
"n571473
SELECTION-SCREEN BEGIN OF BLOCK Database-selection
WITH FRAME TITLE TEXT-001.
Text-001: Datenbankabgrenzungen
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 Database-selection.
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 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 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 COMMENT 4(50) TEXT-012 FOR FIELD SBBST.
Text-012: Sonderbestand
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BESTANDSART.
improved definition of parameters for scope of list "n599218
SELECTION-SCREEN BEGIN OF BLOCK listumfang
with frame title text-003. "Listumfang
the following 3 parameters became obsolete do not use "n599218
anymor. They are still here to inform the user about "n599218
that he is using old variants or SUBMIT commands "n599218
PARAMETERS : "n599218
XONUL LIKE AM07M-XONUL no-display, "n599218
XVBST LIKE AM07M-XVBST no-display, "n599218
XNVBST LIKE AM07M-XNVBS no-display. "n599218
7 new categories for the scope of list "n599218
"n599218
cat. I docs I stock on I I stock on I Parameter "n599218
I I start date I I end date I "n599218
---+--+--------++------+-------- "n599218
1 I yes I = zero I = I = zero I pa_wdzer "n599218
2 I yes I = zero I <> I <> zero I pa_wdzew "n599218
3 I yes I <> zero I <> I = zero I pa_wdwiz "n599218
4 I yes I <> zero I <> I <> zero I pa_wdwuw "n599218
5 I yes I <> zero I = I <> zero I pa_wdwew "n599218
I I I I I "n599218
6 I no I = zero I = I = zero I pa_ndzer "n599218
7 I no I <> zero I = I <> zero I pa_ndsto "n599218
"n599218
definition of the pushbutton : show or hide the following "n599218
parameters for the scope of list "n599218
SELECTION-SCREEN PUSHBUTTON /1(20) PB_LIU "n599218
USER-COMMAND LIU. "n599218
"n599218
text line : materials with movements "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN COMMENT 1(55) TEXT-072 "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start = zero = end = zero "n599218
1 I yes I = zero I = I = zero I pa_wdzer "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_wdzer LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
text-083 : no opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) text-083 "n599218
FOR FIELD pa_wdzer "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start = zero = end <> zero "n599218
2 I yes I = zero I <> I <> zero I pa_wdzew "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_wdzew LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
text-084 : no opening stock ; with closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) text-084 "n599218
FOR FIELD pa_wdzew "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start stock <> 0 / end stock = 0 "n599218
3 I yes I <> zero I <> I = zero I pa_wdwiz "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_wdwiz LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
text-085 : with opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) text-085 "n599218
FOR FIELD pa_wdwiz "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / with start and end stocks / different "n599218
4 I yes I <> zero I <> I <> zero I pa_wdwuw "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_wdwuw LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
with opening stock ; with closing stock ; changed "n599218
SELECTION-SCREEN COMMENT 5(70) text-086 "n599218
FOR FIELD pa_wdwuw "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / with start and end stock / equal "n599218
5 I yes I <> zero I = I <> zero I pa_wdwew "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_wdwew LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
with opening stock ; with closing stock ; non-changed "n599218
SELECTION-SCREEN COMMENT 5(70) text-087 "n599218
FOR FIELD pa_wdwew "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
text line : materials without movements "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN COMMENT 1(55) TEXT-073 "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
materials without movements / stocks = zero "n599218
6 I no I = zero I = I = zero I pa_ndzer "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_ndzer LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
text-083 : no opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) text-083 "n599218
FOR FIELD pa_ndzer "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
materials without movements / with start or end stock "n599218
7 I no I <> zero I = I <> zero I pa_ndsto "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : pa_ndsto LIKE AM07M-MB5B_XONUL "n599218
modif id liu. "n599218
with opening stock ; with closing stock ; non-changed "n599218
SELECTION-SCREEN COMMENT 5(70) text-087 "n599218
FOR FIELD pa_ndsto "n599218
modif id liu. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
SELECTION-SCREEN END OF BLOCK listumfang.
SELECTION-SCREEN BEGIN OF BLOCK EINSTELLUNGEN
WITH FRAME TITLE TEXT-068. "Settings
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 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.
the function "No reversal movements" is only "n571473
available from relaese 4.5B and higher "n571473
( TEXT-026 : No reversal movements ) "n571473
SELECTION-SCREEN BEGIN OF LINE. "n571473
SELECTION-SCREEN POSITION 1. "n571473
PARAMETERS NOSTO LIKE AM07M-NOSTO. "n571473
SELECTION-SCREEN COMMENT 4(50) TEXT-026 "n571473
FOR FIELD NOSTO. "n571473
SELECTION-SCREEN END OF LINE. "n571473
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.
*eject
new data definitions
working fields for reading structures from DDIC "n599218 A
and check whether IS-OIL is active "n599218 A
types : stab_x031l type standard table of x031l "n599218 A
with default key. "n599218 A
"n599218 A
data : g_s_x031l type x031l, "n599218 A
g_t_x031l type stab_x031l. "n599218 A
"n599218 A
data : g_f_dcobjdef-name like dcobjdef-name, "n599218 A
g_flag_is_oil_active(01) type c, "n599218 A
g_cnt_is_oil type i. "n599218 A
contains the a structure with the max. number of fields of
the database table MSEG, but those lines are comment lines
with a '*'. The customer can achtivate those lines.
The activated fields will be selected from the database table
and are hidden in the list. With the settings in the display
variant the can be shown.
INCLUDE RM07MLBD_CUST_FIELDS.
common types structure for working tables
a) g_t_mseg_lean results form database selection
b) g_t_beleg data table for ALV
TYPES : BEGIN OF STYPE_MSEG_LEAN,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
VGART LIKE MKPF-VGART,
BLART LIKE MKPF-BLART,
BUDAT LIKE MKPF-BUDAT,
CPUDT LIKE MKPF-CPUDT,
CPUTM LIKE MKPF-CPUTM,
USNAM LIKE MKPF-USNAM,
process 'goods receipt/issue slip' as hidden field "n450596
XABLN LIKE MKPF-XABLN, "n450596
LBBSA LIKE T156M-LBBSA,
BWAGR LIKE T156S-BWAGR,
BUKRS LIKE T001-BUKRS,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
WAERS LIKE MSEG-WAERS,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
WERKS LIKE MSEG-WERKS,
LGORT LIKE MSEG-LGORT,
CHARG LIKE MSEG-CHARG,
BWTAR LIKE MSEG-BWTAR,
KZVBR LIKE MSEG-KZVBR,
KZBEW LIKE MSEG-KZBEW,
SOBKZ LIKE MSEG-SOBKZ,
KZZUG LIKE MSEG-KZZUG,
BUSTM LIKE MSEG-BUSTM,
BUSTW LIKE MSEG-BUSTW,
MENGU LIKE MSEG-MENGU,
WERTU LIKE MSEG-WERTU,
SHKZG LIKE MSEG-SHKZG,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
DMBTR LIKE MSEG-DMBTR,
DMBUM LIKE MSEG-DMBUM,
XAUTO LIKE MSEG-XAUTO,
KZBWS LIKE MSEG-KZBWS,
special flag for retail "n497992
retail(01) type c, "n497992
define the fields for the IO-OIL specific functions "n599218 A
mseg-oiglcalc CHAR 1 "n599218 A
mseg-oiglsku QUAN 13 "n599218 A
oiglcalc(01) type c, "n599218 A
oiglsku(07) type p decimals 3, "n599218 A
insmk like mseg-insmk, "n599218 A
the following fields are used for the selection of
the reversal movements
SMBLN LIKE MSEG-SMBLN, " No. doc
SJAHR LIKE MSEG-SJAHR, " Year "n497992
SMBLP LIKE MSEG-SMBLP. " Item in doc
additional fields : the user has the possibility to activate
these fields in the following include report
INCLUDE TYPE STYPE_MB5B_ADD.
TYPES : END OF STYPE_MSEG_LEAN.
TYPES: STAB_MSEG_LEAN TYPE STANDARD TABLE OF STYPE_MSEG_LEAN
WITH KEY MBLNR MJAHR.
data tables with the results for the ALV
TYPES : BEGIN OF STYPE_BELEGE.
INCLUDE TYPE STYPE_MSEG_LEAN.
TYPES : FARBE TYPE SLIS_T_SPECIALCOL_ALV.
TYPES : END OF STYPE_BELEGE.
TYPES : STAB_BELEGE TYPE STANDARD TABLE OF STYPE_BELEGE
WITH KEY BUDAT MBLNR ZEILE.
DATA : G_T_BELEGE TYPE STAB_BELEGE WITH HEADER LINE,
G_T_BELEGE1 TYPE STAB_BELEGE WITH HEADER LINE.
global working areas data from MSEG and MKPF
FIELD-SYMBOLS : TYPE STYPE_MSEG_LEAN.
DATA : G_S_MSEG_LEAN TYPE STYPE_MSEG_LEAN,
G_S_MSEG_UPDATE TYPE STYPE_MSEG_LEAN, "n443935
G_T_MSEG_LEAN TYPE STAB_MSEG_LEAN.
working table for the control break "n451923
types : begin of stype_mseg_work. "n451923
include type stype_mseg_lean. "n451923
types : tabix like sy-tabix, "n451923
end of stype_mseg_work, "n451923
"n451923
stab_mseg_work type standard table of "n451923
stype_mseg_work "n451923
with default key. "n451923
"n451923
data : g_t_mseg_work type stab_mseg_work, "n443935
g_s_mseg_work type stype_mseg_work. "n443935
working table for the requested field name from MSEG and MKPF
TYPES: BEGIN OF STYPE_FIELDS,
FIELDNAME TYPE NAME_FELD,
END OF STYPE_FIELDS.
TYPES: STAB_FIELDS TYPE STANDARD TABLE OF STYPE_FIELDS
WITH KEY FIELDNAME.
DATA: G_T_MSEG_FIELDS TYPE STAB_FIELDS,
G_S_MSEG_FIELDS TYPE STYPE_FIELDS.
working table for the requested numeric fields of MSEG
types : begin of stype_color_fields,
FIELDNAME TYPE NAME_FELD,
type(01) type c,
end of stype_color_fields,
stab_color_fields type standard table of
stype_color_fields
with default key.
data: g_t_color_fields type stab_color_fields
with header line.
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
define the fields for the IO-OIL specific functions "n599218 A
mseg-oiglcalc CHAR 1 "n599218 A
mseg-oiglsku QUAN 13 "n599218 A
oiglcalc(01) type c, "n599218 A
oiglsku(07) type p decimals 3, "n599218 A
insmk like mseg-insmk, "n599218 A
END OF IMSWEG.
User settings for the checkboxes "n547170
DATA: oref_settings TYPE REF TO cl_mmim_userdefaults. "n547170
*eject
HAUPTPROGRAMM *********************************
F4-Hilfe für Reportvariante -
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
"n599218
INITIALIZATION "n599218
"n599218
"n599218
pay attentions : this process time will not be processed "n599218
in the webreporting mode "n599218
INITIALIZATION.
PERFORM APP_PROCESS USING 'ME'. "TEST
PERFORM initialisierung.
get the parameters from the last run "n547170
perform esdus_get_parameters. "n547170
set flag when INITILIZATION is processed
move 'X' to g_flag_initialization.
"n599218
AT SELECTION-SCREEN "n599218
"n599218
Prüfung der eingegebenen Selektionsparameter, -
Berechtigungsprüfung -
AT SELECTION-SCREEN.
the following 3 parameters XONUL, XVBST, and XNVBST "n599218
became obsolete; send error when they should be filled. "n599218
This could be possible if the user works with old "n599218
selection variants or this report is launched by a "n599218
SUBMIT command "n599218
if XONUL is initial and "n599218
XVBST is initial and "n599218
XNVBST is initial. "n599218
ok, the old parameters are empty "n599218
else. "n599218
text-088 : note 599218 : obsolete parameter used "n599218
MESSAGE E895 with text-088. "n599218
endif.
did the user hit the pushbutton "Category" ? "n599218
case SSCRFIELDS-UCOMM. "n599218
when 'LIU '. "n599218
yes, the pushbutton "Category" was hit "n599218
IF g_flag_status_liu = C_HIDE. "n599218
show the 7 parameters on the selection srceen "n599218
MOVE C_SHOW TO g_flag_status_liu. "n599218
ELSE. "n599218
hide the 7 paramaters "n599218
MOVE C_HIDE TO g_flag_status_liu. "n599218
ENDIF. "n599218
ENDcase. "n599218
"n599218
go on only if the user wants to launch this report "n599218
check : sy-ucomm = 'ONLI' or "n599218
sy-ucomm = 'PRIN' or "n599218
sy-ucomm = 'SJOB'. "n599218
PERFORM eingaben_pruefen.
check whether FI summarization is active and other "n547170
restrictions could deliver wrong results "n547170
perform f0800_check_restrictions. "n547170
- the user wants to surpress the reversal movements : "n497992
process warning M7 392 "n497992
IF NOT NOSTO IS INITIAL. "n497992
emerge warning ? "n497992
CALL FUNCTION 'ME_CHECK_T160M' "n497992
EXPORTING "n497992
I_ARBGB = 'M7' "n497992
I_MSGNR = '392' "n497992
EXCEPTIONSPlease read the KBA document 2012912 - Changeablility of the field "material group" in purchasing documents
It clearly says that material group can't be changed in case you will use material master in purchase order.
So, it is clear that you can't use different material group for material master in purchase order.
For stock report, system will only show you the material group which is assigned to the material master (MARA-MATKL). System will not look into the purchase order section (like EKPO). -
Reconcillation report for controlling
My requirement as follows.
this is a report for developing reconcillation statement for a company.
i created program as per requirement it is not executing becasuse of COEP table taking much time for executing.
any body have reconcillation report with sourcode kindly forward me.
TECHNICAL SPECIFICATIONS FOR RECONCILIATION REPORT
SELECTION SCREEN:
COMPANY CODE: T001-BUKRS
FISCAL YEAR : BKPF-GJAHR
PERIOD : BKPF-MONAT
OUTPUT FORMAT:
PARTICULARS AMOUNT
A TOTAL OF FI P/L ACCOUNTS
B LESS: TOTAL OF FI P/L ACCOUNTS NOT FLOWN TO CO (including VVGK values)
C TOTAL OF FI P/L ACCOUNTS FLOWN TO CO
D TOTAL OF COST VOLUME (MAT+ FEK+MGK+WVK)
E LESS : TOTAL OF RECONCILIATION ITEMS (ITEMS APPEARING ONLY IN CO - FOR E.G. ED,CC ETC)
F (D) (E)
RECONCILIATION -
( C ) = ( F )
START OF FIELD A
TABLE : SKB1 (G/L Account Master Table)
INPUT : BUKRS (Company Code)
SAKNR - NUMBER RANGE 4* (G/L Account No.)
OUTPUT : SAKNR (G/L Account No)
Result : This step will provide a list of Expenses G/L Accounts
TABLE : GLT0 (G/L Account Balances table)
INPUT : BUKRS (Company Code)
SAKNR - NUMBER RANGE 4*) (G/L Account No.)
DRCRK = S (Debit / Credit Indicator)
RYEAR = GJAHR (Fiscal year)
OUTPUT : HSL0*( * -PERIOD ENTERED IN SELECTION) [G/L Account Balance Amount field in the Table]
SORT AND SUM SAKNR WISE WHILE DISPLAYING IN THE REPORT
Result : This step will provide balances for the list of the expenses G/L accounts fetched from table SKB1 for the company code, fiscal year and period mentioned in the selection screen
LIST OF EXPS. G/L ACCOUNTS WITH VALUES AND THEIR TOTAL LIST A
TOTAL OF ABOVE LIST = FIELD A
The List Is To Be Displayed In The Report On Double-Clicking On The Total (Field A)
END OF FIELD A----
START OF FIELD B
TABLE : SETLEAF (Table for values in a group)
INPUT : SETCLASS = 0102 (Code for Cost Element groups)
SETNAME = FIXED, VARIABLE (Cost Element group names)
OUTPUT : VALFROM, VALTO (Cost Element from & to)
Result : This step will provide a list of cost elements within the cost element groups Fixed and Variable
TABLE : COSP (Cost Accounting postings)
INPUT : GJAHR (Fiscal year)
KSTAR = VALFROM TO VALTO SETLEAF (Cost Elements range)
VRGNG = COIN (CO Business transaction type)
BEKNZ = D (Debit / Credit indicator)
OUTPUT : KSTAR (Cost Element), WKG0( -PERIOD ENTERED IN SELECTION) [Amount field in the table]
Result : This step will provide a list of Cost Centre values used for calculating Activity rate and Overheard rates)
LIST OF COST ELEMENTS WITH VALUES AND THEIR TOTAL LIST B
COMPARE LIST A WITH LIST B FIND RECORDS THAT DONT MATCH
MAKE A LIST OF UNMATCHED RECORDS (FOUND ONLY IN LIST A) AND THEIR TOTALS LIST C
TABLE : SETLEAF (Table for values in a group)
INPUT : SETCLASS = 0101 (Code for Cost Centre groups)
SETNAME = JL-VVGK (Cost Centre group name)
OUTPUT : VALFROM ( COST CENTRE)
Result : This will provide a list of Cost centers in the JL-VVGK cost element group
TABLE : COSP (Cost Accounting Postings)
INPUT : OBJNR = CONCATENATE KSKBX TO SETLEAF- VALFROM WITH SPACE, (OBJNR = Object Number)
GJAHR (Fiscal year)
VRGNG = COIN (CO Business transaction type)
OUTPUT : WKG0( -PERIOD ENTERED IN SELECTION) [Amount field in the table]
Result : This will provide a list of Cost centers values in the in the JL-VVGK cost element group
LIST OF VVGK COST CENTRES WITH VALUES AND ITS TOTAL LIST D
ADD LIST C WITH LIST D THE TOTAL OF WHICH IS EQUAL TO FIELD B
Result : This will provide the costs which are not used to apply Activity Rates and Overhead Rates on the products
The Lists (List C & D) are To Be Displayed In The Report On Double-Clicking On The Total (Field B)
END OF FIELD B----
START OF FIELD C
SUBTRACT FIELD B FROM FIELD A WHICH IS EQUAL TO FIELD C (NO LINE ITEMS REQUIRED)
END OF FIELD C----
START OF FIELD D
TABLE : AUFK (Header table for Orders)
INPUT : KOKRS = KBX (Controlling Area)
BUKRS = SELECTION SCREEN (Company Code)
AUART = RM01 (Order Type)
OUTPUT : OBJNR (Object Number)
Result : This will provide a list Product Cost Collector Numbers
MAT :
TABLE : COSP (Cost Accounting Postings)
INPUT : OBJNR-AUFK (Object number fetched from AUFK table)
GJAHR = SELECTION SCREEN (fiscal year)
WRTTP = 4 (Value type for Actuals)
KSTAR = 41261 TO 41265 (Cost elements range)
BEKNZ = D (Debit / Credit indicator)
OUTPUT : KSTAR (Cost Element), WTG00X (Amount field in the table), OBJNR CONCATENATE (Object Number)
Result : This will provide the MAT costs applied to the products through Product Cost Collectors - MATLIST
FEK :
TABLE : COEP (Cost Accounting Postings)
INPUT : KOKRS = KBX (Controlling Area)
PERIO = SELECTION SCREEN (Period)
OBJNR-AUFK (Object Number fetched from AUFK table)
GJAHR = SELECTION SCREEN (Fiscal year)
KSTAR = 430001 TO 430010 (Cost Elements range)
BUKRS = SELECTION SCREEN (Company Code)
OUTPUT : KSTAR (Cost Element), WTGBTR (Amount field), OBJNR CONCATENATE (Object number)
Result : This will provide the FEK costs applied to the products through Product Cost Collectors - FEKLIST
MGK :
TABLE : COEP (Cost Accounting Postings)
INPUT : KOKRS = KBX (Controlling Area)
PERIO = SELECTION SCREEN (Period)
OBJNR-AUFK (Object Number fetched from AUFK table)
GJAHR = SELECTION SCREEN (Fiscal year)
KSTAR = 410001 (Cost Element)
BUKRS = SELECTION SCREEN (Company Code)
OUTPUT : KSTAR (Cost Element), WTGBTR (Amount field), OBJNR CONCATENATE (Object Number)
Result : This will provide the MGK costs applied to the products through Product Cost Collectors - MGKLIST
WVK :
TABLE : COEP (Cost Accounting postings)
INPUT : KOKRS = KBX (Controlling Area)
PERIO = SELECTION SCREEN (Period)
OBJNR-AUFK (Object Number fetched from AUFK table)
GJAHR = SELECTION SCREEN (Fiscal year)
KSTAR = 410015 (Cost Element)
BUKRS = SELECTION SCREEN (Company Code)
OUTPUT : KSTAR (Cost Element), WTGBTR (Amount field), OBJNR CONCATENATE (Object Number)
Result : This will provide the WVK costs applied to the products through Product Cost Collectors - WVKLIST
TOTAL OF MAT WTG00X, FEK - WTGBTR, MGK - WTGBTR, WVK WTGBTR = FIELD D
The Lists are (MATLIST, FEKLIST, MGKLIST, WVKLIST) To Be Displayed categorically In The Report On Double-Clicking On The Total (Field D)
END OF FIELD D----
START OF FIELD E
TABLE : COSS (Cost Accounting Postings)
INPUT : KOKRS = KBX (Controlling Area)
GJAHR = SELECTION SCREEN (Fiscal year)
WRTTP = 4 (Value type for Actuals)
KSTAR = 44951 TO 44958 (Cost Elements range)
VRGNG = COIN, RKU1, RKU3, (CO Business transaction type)
BEKNZ = D (Debit / Credit Indicator)
OUTPUT : KSTAR (Cost Element), WTG00X (Amount field)
Result : This will provide the costs posted only through Controlling (not FI, MM, SD, PP) which are used to calculate Activity rates and Overhead rates applied to the product EDCCLIST
The EDCCLIST Is To Be Displayed In The Report On Double-Clicking On The Total (Field E)
END OF FIELD E----
START OF FIELD F
SUBTRACT FIELD D FROM FIELD E WHICH IS EQUAL TO FIELD F (NO LINE ITEMS REQUIRED)
END OF FIELD F----
I have return code like as follows.
*& Report ZCO_RECONCILIATION_REPORT *
REPORT zco_reconciliation_report NO STANDARD PAGE HEADING
LINE-COUNT 60 LINE-SIZE 180.
TABLES : t001.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_bukrs LIKE t001-bukrs MEMORY ID buk ,
p_year LIKE glt0-ryear MEMORY ID gjh ,
p_period LIKE bkpf-monat .
SELECTION-SCREEN END OF BLOCK b1 .
DATA : BEGIN OF it_skb1 OCCURS 0,
saknr LIKE skb1-saknr ,
END OF it_skb1.
DATA : BEGIN OF it_glt0 OCCURS 0,
racct LIKE glt0-racct ,
hsl01 LIKE glt0-hsl01,
END OF it_glt0.
DATA : BEGIN OF it_glt0_sum OCCURS 0,
racct LIKE glt0-racct ,
hsl01 LIKE glt0-hsl01,
END OF it_glt0_sum.
DATA : BEGIN OF it_setb1 OCCURS 0,
valfrom LIKE cosp-kstar, " setleaf-valfrom,
valto LIKE setleaf-valto,
END OF it_setb1.
DATA : BEGIN OF it_setb2 OCCURS 0,
valfrom LIKE setleaf-valfrom,
objnr LIKE coss-objnr,
END OF it_setb2.
DATA : BEGIN OF it_setd OCCURS 0,
valfrom LIKE setleaf-valfrom,
objnr LIKE coss-objnr,
END OF it_setd.
DATA : BEGIN OF it_sete OCCURS 0,
valfrom LIKE setleaf-valfrom,
objnr LIKE coss-objnr,
END OF it_sete.
DATA : BEGIN OF it_cospb OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cospb.
DATA : BEGIN OF it_cossb OCCURS 0,
objnr LIKE coss-objnr,
kstar LIKE coss-kstar,
wkg001 LIKE coss-wkg001,
END OF it_cossb.
DATA : BEGIN OF it_bkpf OCCURS 0,
belnr LIKE bkpf-belnr,
END OF it_bkpf.
DATA : BEGIN OF it_cossd1 OCCURS 0,
objnr LIKE coss-objnr,
belnr LIKE bseg-belnr,
wkg001 LIKE coss-wkg001,
END OF it_cossd1.
DATA : BEGIN OF it_cossd2 OCCURS 0,
objnr LIKE coss-objnr,
kstar LIKE coss-kstar,
wkg001 LIKE coss-wkg001,
END OF it_cossd2.
DATA : BEGIN OF it_cosse OCCURS 0,
objnr LIKE coss-objnr,
kstar LIKE coss-kstar,
wkg001 LIKE coss-wkg001,
END OF it_cosse.
dATA : itab_period TYPE string .
DATA : BEGIN OF it_cospb_sum OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cospb_sum.
DATA : BEGIN OF it_cossb_sum OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cossb_sum.
DATA : BEGIN OF it_cossd1_sum OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cossd1_sum.
DATA : BEGIN OF it_cossd2_sum OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cossd2_sum.
DATA : BEGIN OF it_cosse_sum OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_cosse_sum.
DATA : BEGIN OF it_unmatch OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_unmatch.
DATA : BEGIN OF it_merge OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_merge.
DATA : BEGIN OF it_merged OCCURS 0,
kstar LIKE cosp-kstar,
wkg001 LIKE cosp-wkg001,
END OF it_merged.
DATA : BEGIN OF it_field OCCURS 0,
fielda TYPE p DECIMALS 2,
fieldb TYPE p DECIMALS 2,
fieldc TYPE p DECIMALS 2,
fieldd TYPE p DECIMALS 2,
fielde TYPE p DECIMALS 2,
fieldf TYPE p DECIMALS 2,
END OF it_field.
DATA : v_fielda TYPE p DECIMALS 2,
v_fieldb TYPE p DECIMALS 2,
v_fieldc TYPE p DECIMALS 2,
v_fieldd TYPE p DECIMALS 2,
v_fielde TYPE p DECIMALS 2,
v_fieldf TYPE p DECIMALS 2,
v_objnr LIKE coss-objnr,
v_kstar LIKE cosp-kstar,
v_field(1).
yr(4),
mon(2),
day(2),
v_date LIKE sy-datum,
v_date1 LIKE sy-datum,
flag1 TYPE c ,
flag2 TYPE c ,
flag3 TYPE c ,
flag4 TYPE c,
flag5 TYPE c.
data : begin of iaufk occurs 0 ,
objnr like aufk-objnr,
end of iaufk .
DATA : BEGIN OF IFEK OCCURS 0 ,
KSTAR LIKE COEP-KSTAR,
WTGBTR LIKE COEP-WTGBTR,
OBJNR LIKE COEP-OBJNR,
END OF IFEK.
DATA : BEGIN OF IMAT OCCURS 0 ,
KSTAR LIKE COSP-KSTAR,
WTG001 LIKE COSP-WTG001,
WTG002 LIKE COSP-WTG002,
WTG003 LIKE COSP-WTG003,
WTG004 LIKE COSP-WTG004,
WTG005 LIKE COSP-WTG005,
WTG006 LIKE COSP-WTG006,
WTG007 LIKE COSP-WTG007,
WTG008 LIKE COSP-WTG008,
WTG009 LIKE COSP-WTG009,
WTG010 LIKE COSP-WTG010,
WTG011 LIKE COSP-WTG011,
WTG012 LIKE COSP-WTG012,
WTG013 LIKE COSP-WTG013,
WTG014 LIKE COSP-WTG014,
WTG015 LIKE COSP-WTG015,
WTG016 LIKE COSP-WTG016,
OBJNR LIKE COSP-OBJNR,
END OF IMAT.
data : begin of imgk occurs 0 ,
kstar like coep-kstar,
wtgbtr like coep-wtgbtr,
objnr like coep-objnr,
end of imgk.
data : begin of iwvk occurs 0 ,
kstar like coep-kstar,
wtgbtr like coep-wtgbtr,
objnr like coep-objnr,
end of iwvk.
AT SELECTION-SCREEN.
PERFORM validity.
START-OF-SELECTION .
PERFORM get_period.
PERFORM fill_skb1.
PERFORM get_aufk .
perform get_COEP .
PERFORM GET_MGK.
perform get_wvk.
PERFORM fill_it_glt0.
PERFORM fill_it_glt0_sum.
PERFORM fill_set.
PERFORM fill_cospb_cossb.
PERFORM sum_cospb_cossb.
PERFORM fill_cossd1_cossd2.
PERFORM sum_cossd1_cossd2.
PERFORM fill_cosse.
PERFORM sum_cosse.
PERFORM fill_it_unmatch.
PERFORM fill_it_merge.
PERFORM fill_it_merged.
PERFORM fill_it_fieldb.
PERFORM fill_it_fieldc.
PERFORM fill_it_fieldd.
PERFORM fill_it_fieldf.
PERFORM display.
PERFORM fill_it_fielde.
TOP-OF-PAGE.
PERFORM header.
AT LINE-SELECTION.
PERFORM list_display.
*& Form VALIDITY
text
--> p1 text
<-- p2 text
FORM validity .
SELECT SINGLE bukrs FROM t001 INTO t001-bukrs WHERE bukrs = p_bukrs.
IF sy-subrc NE 0.
ENDIF.
ENDFORM. " VALIDITY
*& Form FILL_SKB1
text
--> p1 text
<-- p2 text
FORM fill_skb1 .
SELECT saknr FROM skb1 INTO TABLE it_skb1
WHERE bukrs = p_bukrs
AND saknr LIKE '000004%' .
SORT it_skb1 BY saknr.
ENDFORM. " FILL_SKB1
*& Form FILL_IT_GLT0
text
--> p1 text
<-- p2 text
FORM fill_it_glt0 .
CASE p_period.
WHEN '1' OR '01'.
SELECT racct hsl01
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '2' .
SELECT racct hsl02
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '3' .
SELECT racct hsl03
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '4' .
SELECT racct hsl04
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '5' .
SELECT racct hsl05
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '6' .
SELECT racct hsl06
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '7' .
SELECT racct hsl07
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '8' .
SELECT racct hsl08
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '9' .
SELECT racct hsl09
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '10' .
SELECT racct hsl10
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '11' .
SELECT racct hsl11
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '12' .
SELECT racct hsl12
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '13' .
SELECT racct hsl13
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '14' .
SELECT racct hsl14
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '15' .
SELECT racct hsl15
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
WHEN '16' .
SELECT racct hsl16
FROM glt0
INTO TABLE it_glt0
FOR ALL ENTRIES IN it_skb1
WHERE racct = it_skb1-saknr
AND bukrs = p_bukrs
AND drcrk = 'S'
AND ryear = p_year.
AND rtcur = 'INR' .
ENDCASE.
SORT it_glt0 BY racct.
ENDFORM. " FILL_IT_GLT0
*& Form FILL_IT_GLT0_SUM
text
--> p1 text
<-- p2 text
FORM fill_it_glt0_sum .
SORT it_glt0 BY racct.
LOOP AT it_glt0.
it_glt0_sum-racct = it_glt0-racct.
AT END OF racct.
SUM.
it_glt0_sum-hsl01 = it_glt0-hsl01.
APPEND it_glt0_sum.
CLEAR it_glt0_sum.
ENDAT.
ENDLOOP.
LOOP AT it_glt0_sum.
AT LAST.
SUM.
it_fielda-fielda = it_glt0_SUM-hsl01.
it_field-fielda = it_glt0_sum-hsl01.
APPEND it_field.
ENDAT.
ENDLOOP.
ENDFORM. " FILL_IT_GLT0_SUM
*& Form fill_SET
text
--> p1 text
<-- p2 text
FORM fill_set .
SELECT valfrom valto FROM setleaf INTO TABLE it_setb1
WHERE setclass = '0102' AND
setname IN ('FIXED', 'VARIABLE') .
SORT it_setb1 BY valfrom .
SELECT valfrom FROM setleaf INTO CORRESPONDING FIELDS OF TABLE it_setb2
WHERE setclass = '0101' AND
setname = 'JL-VVGK'.
SORT it_setb2 BY valfrom .
SELECT valfrom FROM setleaf INTO CORRESPONDING FIELDS OF TABLE it_setd
WHERE setclass = '0102' AND
setname IN ('FBK', 'MAT').
SORT it_setd BY valfrom .
SELECT valfrom FROM setleaf INTO CORRESPONDING FIELDS OF TABLE it_sete
WHERE setclass = '0102' AND
setname = 'CO-RECON'.
SORT it_sete BY valfrom .
LOOP AT it_sete.
CONCATENATE 'KSKBX' it_sete-valfrom INTO v_objnr SEPARATED BY space.
it_sete-objnr = v_objnr.
MODIFY it_sete.
ENDLOOP.
SORT it_sete BY valfrom .
LOOP AT it_setb2.
CONCATENATE 'KSKBX' it_setb2-valfrom INTO v_objnr SEPARATED BY space.
it_setb2-objnr = v_objnr.
MODIFY it_setb2.
ENDLOOP.
LOOP AT it_setd.
CONCATENATE 'KSKBX' it_setd-valfrom INTO v_objnr SEPARATED BY space.
it_setd-objnr = v_objnr.
MODIFY it_setd.
ENDLOOP.
ENDFORM. " fill_SET
*& Form fill_cospb_cossb
text
--> p1 text
<-- p2 text
FORM fill_cospb_cossb .
CASE p_period.
WHEN '1' .
SELECT kstar wkg001 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg001 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '2' .
SELECT kstar wkg002 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg002 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '3' .
SELECT kstar wkg003 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg003 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '4' .
SELECT kstar wkg004 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg004 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '5' .
SELECT kstar wkg005 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg005 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '6' .
SELECT kstar wkg006 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg006 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '7' .
SELECT kstar wkg007 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg007 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '8' .
SELECT kstar wkg008 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg008 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '9' .
SELECT kstar wkg009 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg009 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '10' .
SELECT kstar wkg010 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg010 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '11' .
SELECT kstar wkg011 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg011 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '12' .
SELECT kstar wkg012 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg012 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '13' .
SELECT kstar wkg013 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg013 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '14' .
SELECT kstar wkg014 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg014 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '15' .
SELECT kstar wkg015 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg015 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
WHEN '16' .
SELECT kstar wkg016 FROM cosp INTO TABLE it_cospb
FOR ALL ENTRIES IN it_setb1
WHERE kstar = it_setb1-valfrom
AND gjahr = p_year
AND vrgng = 'COIN'
AND beknz = 'S'.
SELECT objnr kstar wkg016 FROM cosp
INTO TABLE it_cossb
FOR ALL ENTRIES IN it_setb2
WHERE objnr = it_setb2-objnr
AND vrgng IN ('COIN','RKIV')
AND gjahr = p_year.
ENDCASE.
SORT it_cospb BY kstar.
SORT it_cossb BY kstar.
ENDFORM. " fill_cospb_cossb
*& Form SUM_COSPB_COSSB
text
--> p1 text
<-- p2 text
FORM sum_cospb_cossb .
LOOP AT it_cospb.
it_cospb_sum-kstar = it_cospb-kstar.
AT END OF kstar.
SUM.
it_cospb_sum-wkg001 = it_cospb-wkg001.
APPEND it_cospb_sum.
CLEAR it_cospb_sum.
ENDAT.
ENDLOOP.
LOOP AT it_cossb.
it_cossb_sum-kstar = it_cossb-kstar.
AT END OF kstar.
SUM.
it_cossb_sum-wkg001 = it_cossb-wkg001.
APPEND it_cossb_sum.
CLEAR it_cossb_sum.
ENDAT.
ENDLOOP.
SORT it_cospb_sum BY kstar.
SORT it_cossb_sum BY kstar.
ENDFORM. " SUM_COSPB_COSSB
*& Form fill_it_unmatch
text
--> p1 text
<-- p2 text
FORM fill_it_unmatch .
LOOP AT it_glt0_sum.
READ TABLE it_cospb_sum WITH KEY kstar = it_glt0_sum-racct.
IF sy-subrc NE 0.
it_unmatch-kstar = it_glt0_sum-racct.
it_unmatch-wkg001 = it_glt0_sum-hsl01.
APPEND it_unmatch.
CLEAR it_unmatch.
ENDIF.
ENDLOOP.
ENDFORM. " fill_it_unmatch
*& Form fill_it_merge
text
--> p1 text
<-- p2 text
----We can't really tell without seeing the code. Would you post it please? (Just the portions that are overly slow.)
Rob -
V V URGENT Report for Vendor Aging
Hi ABAP Gurus,
I have to develop a report for VENDOR AGING. My requirement is i have to post an invoice. From Payment terms i have to get Dependent on posting date. Let us assume if payment term is 100 by adding posting date + payment term (100) i have to get due date. I'am giving I/P terms as Company code & Period. If i enter company code i have to get O/P as vendor name(lfa1-name1),vendor no(bsik-lifnr),bill no(bsik-xblnr),bill date(bsik-bldat) i.e., baseline date,amount(bsik-dmbtr) and duedate (this i have to pick from payment terms). For period i have to get O/P as 1st week bucket,2nd week bucket,3rd week bucket,4th week bucket and beyond. For this you have to take the difference b/n due date and that buckets based on this result you have to put that amount of rupees whether it is going to pay in 1st week r 2nd r 3rd r 4th or beyond this. If that due date is less than or equal to 1st week it has to come and fall in 1st week. THIS IS MY REQUIREMENT.
For this i'am using tables BSIK,LFA1.
Can any body send me the code on this. For this my delivery date is on monday.
Please help me on this it's very Urgent...
I will REWARD you the points definitely for those who help me on this.
my mail id : [email protected]
waiting for your VALUABLE REPLIES. Please intimate me if you send it to my mail.
Thanks and Regards,
Sundeep.Hi
See the report code and modify as per your requirements
REPORT zfi_vendor_ageing
NO STANDARD PAGE HEADING
LINE-COUNT 58
line-size 168
MESSAGE-ID zh_msg.
D A T A B A S E T A B L E S D E C L A R A T I O N
TABLES: lfa1, " Vendor Master (General)
t001, " Company Codes
rfpdo.
I N T E R N A L T A B L E S D E C L A R A T I O N S *
Internal Table for Vendor Open Items Data
DATA: BEGIN OF int_bsik OCCURS 0,
lifnr LIKE bsik-lifnr, " Vendor Number
name1 LIKE lfa1-name1, " Vendor Name
shkzg LIKE bsik-shkzg, " Dr/Cr Indicator
belnr LIKE bsik-belnr, " Document Number
xblnr LIKE bsik-xblnr, " Ref Doc No
blart LIKE bsik-blart, " Document Type
zfbdt LIKE bsik-zfbdt, " Base Line Date
zbd1t LIKE bsik-zbd1t, " Due date1
zbd2t LIKE bsik-zbd2t, " Due Date2
zbd3t LIKE bsik-zbd3t, " Due Date3
waers LIKE bsik-waers, " Currency
dmbtr LIKE bsik-dmbtr, " Amount in Local Curr
END OF int_bsik.
Internal Table for Amounts Sum Up Data
DATA: BEGIN OF int_final OCCURS 0,
lifnr LIKE bsik-lifnr, " Vendor Number
name1 LIKE lfa1-name1, " Vendor Name
total1 LIKE bsik-dmbtr, " Amount in Local Curr
total2 LIKE bsik-dmbtr, " Amount in Local Curr
total3 LIKE bsik-dmbtr, " Amount in Local Curr
total4 LIKE bsik-dmbtr, " Amount in Local Curr
total5 LIKE bsik-dmbtr, " Amount in Local Curr
total6 LIKE bsik-dmbtr, " Amount in Local Curr
total LIKE bsik-dmbtr, " Amount in Local Curr
END OF int_final.
D A T A D E C L A R A T I O N S
DATA : v_flag, " Flag
v_gtotal1 LIKE bsik-dmbtr, " Amount Totals
v_gtotal2 LIKE bsik-dmbtr, " Amount Totals
v_gtotal3 LIKE bsik-dmbtr, " Amount Totals
v_gtotal4 LIKE bsik-dmbtr, " Amount Totals
v_gtotal5 LIKE bsik-dmbtr, " Amount Totals
v_gtotal6 LIKE bsik-dmbtr, " Amount Totals
v_gtotal LIKE bsik-dmbtr, " Amount Totals
v_subtotal1 LIKE bsik-dmbtr, " Amount Totals
v_subtotal2 LIKE bsik-dmbtr, " Amount Totals
v_subtotal3 LIKE bsik-dmbtr, " Amount Totals
v_subtotal4 LIKE bsik-dmbtr, " Amount Totals
v_subtotal5 LIKE bsik-dmbtr, " Amount Totals
v_subtotal6 LIKE bsik-dmbtr, " Amount Totals
v_subtotal LIKE bsik-dmbtr, " Amount Totals
v_date LIKE bsik-zfbdt, " Due Date
v_tage1(4), " Age 30 days
v_tage2(4), " Age 60 days
v_tage3(4), " Age 90 days
v_fir(15), " Column Text1
v_sec(15), " Column Text2
v_thir(15), " Column Text3
v_four(17), " Column Text4
v_fidd(4), " Days field1
v_sedd(4), " Days field2
v_thdd(4), " Days field3
v_fodd(4), " Days field4
v_str TYPE SY-LISEL, " String
v_str1(11), " String
v_tage(3), " String
v_date1(10). " Date field
R A N G E D E C L A R A T I O N S
RANGES: r_date1 FOR bsik-zfbdt, " Date Range 1
r_date2 FOR bsik-zfbdt, " Date Range 2
r_date3 FOR bsik-zfbdt, " Date Range 3
r_date4 FOR bsik-zfbdt. " Date Range 4
S E L E C T I O N S C R E E N *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr. "Vendor account
PARAMETERS: p_bukrs LIKE t001-bukrs. "Co. Code
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_allgst LIKE rfpdo-allgstid OBLIGATORY DEFAULT sy-datum.
"Open items at key date
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: p_tage1 LIKE rfpdo1-allgfael DEFAULT '30',
p_tage2 LIKE rfpdo1-allgfael DEFAULT '60',
p_tage3 LIKE rfpdo1-allgfael DEFAULT '90',
p_tage4 LIKE rfpdo1-allgfael DEFAULT '120'.
SELECTION-SCREEN END OF BLOCK b3.
A T S E L E C T I O N S C R E E N *
AT SELECTION-SCREEN.
Validate the screen fields
PERFORM validate_flds.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
Fetch main data
PERFORM fetch_data.
T O P O F P A G E
Header
TOP-OF-PAGE.
PERFORM header.
E N D O F P A G E
Footer
END-OF-PAGE.
ULINE.
T O P O F P A G E D U R I N G L I N E S E L E C T I O N *
Top of Page in Secondary List
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM header1.
A T L I N E S E L E C T I O N *
AT LINE-SELECTION.
Perform Line Selections
PERFORM line_selection.
E N D O F S E L E C T I O N
END-OF-SELECTION.
List generation
PERFORM basic_list.
*& Form validate_flds
Validation of Selection Screen fields
FORM validate_flds .
Validate Vendor Code
CLEAR lfa1-lifnr.
SELECT lifnr UP TO 1 ROWS
INTO lfa1-lifnr
FROM lfa1
WHERE lifnr IN s_lifnr AND
spras = sy-langu.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Vendor Code range'(023).
ENDIF.
Validate Company Code
CLEAR t001-bukrs.
SELECT bukrs UP TO 1 ROWS
INTO t001-bukrs
FROM t001
WHERE bukrs = p_bukrs AND
spras = sy-langu.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e021. " Invalid Company Code range
ENDIF.
IF ( p_tage1 > p_tage2 ) OR ( p_tage1 > p_tage3 ) OR
( p_tage1 > p_tage4 ).
MESSAGE e999 WITH 'Column 1 greater'(004)
'than Column# 2 or 3 or 4'(005).
ENDIF.
*column 2
IF ( p_tage2 > p_tage3 ) OR ( p_tage1 > p_tage4 ).
MESSAGE e999 WITH 'Column 2 greater'(006)
'than Column# 3 or 4'(007).
ENDIF.
*column3
IF ( p_tage3 > p_tage4 ).
MESSAGE e999 WITH 'Column 3 greater'(008)
'than Column#4'(009).
ENDIF.
ENDFORM. " validate_flds
*& Form fetch_data
Fetching Data from Database Tables
FORM fetch_data .
Date Range Population
r_date1-sign = 'I'.
r_date1-option = 'BT'.
r_date1-low = p_allgst.
r_date1-high = r_date1-low + p_tage1.
APPEND r_date1.
r_date2-sign = 'I'.
r_date2-option = 'BT'.
r_date2-low = r_date1-high + 1.
r_date2-high = r_date1-low + p_tage2.
APPEND r_date2.
r_date3-sign = 'I'.
r_date3-option = 'BT'.
r_date3-low = r_date2-high + 1.
r_date3-high = r_date1-low + p_tage3.
APPEND r_date3.
r_date4-sign = 'I'.
r_date4-option = 'BT'.
r_date4-low = r_date3-high + 1.
r_date4-high = r_date1-low + p_tage4.
APPEND r_date4.
Select the Vendor Open Items data from BSIK
SELECT l~lifnr
l1~name1
b~waers
b~dmbtr
b~zfbdt
b~zbd1t
b~zbd2t
b~zbd3t
b~belnr
b~xblnr
b~shkzg
b~blart
INTO CORRESPONDING FIELDS OF TABLE int_bsik
FROM lfb1 AS l INNER JOIN lfa1 AS l1
ON llifnr = l1lifnr
INNER JOIN bsik AS b
ON llifnr = blifnr AND
lbukrs = bbukrs
WHERE l~lifnr IN s_lifnr AND
l~bukrs = p_bukrs and
b~zfbdt le p_allgst.
IF SY-SUBRC <> 0.
MESSAGE i000 WITH 'No Data found'(027).
ENDIF.
Removing the date limit to get the due items in the past
DELETE int_bsik WHERE
( blart NE 'RE' AND blart NE 'KR' ) OR
shkzg NE 'H'.
SORT int_bsik BY lifnr.
ENDFORM. " fetch_data
*& Form header
Display the Report Columns
FORM header .
v_tage1 = p_tage1 + 1.
v_tage2 = p_tage2 + 1.
v_tage3 = p_tage3 + 1.
v_fidd = p_tage1.
v_sedd = p_tage2.
v_thdd = p_tage3.
v_fodd = p_tage4.
MOVE v_fodd0(4) TO v_fodd1(3).
v_fodd+0(1) = space.
CONCATENATE '1 to'(010) v_fidd INTO v_fir.
CONCATENATE v_tage1 ' to '(011) v_sedd INTO v_sec.
CONCATENATE v_tage2 ' to '(011) v_thdd INTO v_thir.
CONCATENATE v_tage3 ' to '(011) space v_fodd INTO v_four.
Standard header
clear: v_date1, v_str, v_str1, v_tage.
write p_allgst to v_date1.
Move p_tage4 to v_tage.
concatenate '>' v_tage text-025 into v_str1.
concatenate
'Summary of Ageing Analysis for Vendor Open Invoices as on'(013)
v_date1 into v_str separated by space.
CALL FUNCTION 'Z_STANDARD_HEADER'
EXPORTING
title1 = 'Saudi International Petrochemical Company'(012)
title2 = v_str.
FORMAT COLOR OFF.
WRITE : /1(168) sy-uline.
FORMAT COLOR 1 INTENSIFIED.
WRITE :/1 sy-vline, 13 sy-vline, 49 sy-vline,
50(101) 'Invoices Due For(In Days)'(014) CENTERED,
151 sy-vline, 168 sy-vline .
WRITE :/1 sy-vline, 2(11) 'Vendor#'(015) CENTERED,
13 sy-vline ,14(35) 'Vendor Name'(016) CENTERED,
49 sy-vline,
50(101) sy-uline,151 sy-vline,
152(16) 'Total'(017) CENTERED,
168 sy-vline.
WRITE : /1 sy-vline,13 sy-vline, 49 sy-vline,
50(16) v_fir CENTERED, 66 sy-vline,
67(16) v_sec CENTERED, 83 sy-vline,
84(16) v_thir CENTERED, 100 sy-vline,
101(16) v_four CENTERED, 117 sy-vline,
118(16) v_str1 centered, 134 sy-vline,
135(16) 'Already Overdue'(018) CENTERED,151 sy-vline,
168 sy-vline.
FORMAT COLOR OFF.
WRITE : /1(168) sy-uline.
ENDFORM. " header
*& Form basic_list
Display the Basic List
FORM basic_list .
NEW-PAGE LINE-SIZE 168.
LOOP AT int_bsik.
CLEAR v_date.
IF int_bsik-zbd3t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd3t.
ELSE.
IF int_bsik-zbd2t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd2t.
ELSE.
v_date = int_bsik-zfbdt + int_bsik-zbd1t.
ENDIF.
ENDIF.
IF int_bsik-zbd1t = ' '.
v_date = int_bsik-zfbdt.
ENDIF.
IF v_date IN r_date1.
int_final-total1 = int_final-total1 + int_bsik-dmbtr.
ELSEIF v_date IN r_date2.
int_final-total2 = int_final-total2 + int_bsik-dmbtr.
ELSEIF v_date IN r_date3.
int_final-total3 = int_final-total3 + int_bsik-dmbtr.
ELSEIF v_date IN r_date4.
int_final-total4 = int_final-total4 + int_bsik-dmbtr.
ELSEif v_date > r_date4-high.
int_final-total5 = int_final-total5 + int_bsik-dmbtr.
ELSEif v_date < p_allgst.
int_final-total6 = int_final-total6 + int_bsik-dmbtr.
ENDIF.
AT END OF lifnr.
v_flag = 1.
ENDAT.
IF v_flag = 1.
int_final-lifnr = int_bsik-lifnr.
int_final-name1 = int_bsik-name1.
int_final-total = int_final-total1 + int_final-total2 +
int_final-total3 + int_final-total4 + int_final-total5 +
int_final-total6.
APPEND int_final.
v_gtotal1 = v_gtotal1 + int_final-total1.
v_gtotal2 = v_gtotal2 + int_final-total2.
v_gtotal3 = v_gtotal3 + int_final-total3.
v_gtotal4 = v_gtotal4 + int_final-total4.
v_gtotal5 = v_gtotal5 + int_final-total5.
v_gtotal6 = v_gtotal6 + int_final-total6.
v_gtotal = v_gtotal + int_final-total.
WRITE: /1 sy-vline,
2 int_final-lifnr COLOR 4 INTENSIFIED ON,
13 sy-vline,
14 int_final-name1 COLOR 4 INTENSIFIED ON,
49 sy-vline.
DATA : v_rem.
v_rem = sy-tabix MOD 2.
IF v_rem NE 0.
FORMAT COLOR 2 INTENSIFIED.
WRITE : 50 int_final-total1 CURRENCY int_bsik-waers,
66 sy-vline,
67 int_final-total2 CURRENCY int_bsik-waers,
83 sy-vline,
84 int_final-total3 CURRENCY int_bsik-waers,
100 sy-vline,
101 int_final-total4 CURRENCY int_bsik-waers,
117 sy-vline,
118 int_final-total5 CURRENCY int_bsik-waers,
134 sy-vline,
135 int_final-total6 CURRENCY int_bsik-waers,
151 sy-vline,
152 int_final-total CURRENCY int_bsik-waers,
168 sy-vline.
ELSE.
WRITE : 50 int_final-total1 CURRENCY int_bsik-waers,
66 sy-vline,
67 int_final-total2 CURRENCY int_bsik-waers,
83 sy-vline,
84 int_final-total3 CURRENCY int_bsik-waers,
100 sy-vline,
101 int_final-total4 CURRENCY int_bsik-waers,
117 sy-vline,
118 int_final-total5 CURRENCY int_bsik-waers,
134 sy-vline,
135 int_final-total6 CURRENCY int_bsik-waers,
151 sy-vline,
152 int_final-total CURRENCY int_bsik-waers,
168 sy-vline.
ENDIF.
FORMAT COLOR OFF.
HIDE int_final.
CLEAR int_final.
v_flag = 0.
ENDIF.
AT LAST.
WRITE : /1(168) sy-uline.
FORMAT COLOR 3 INTENSIFIED.
WRITE : /1 sy-vline, 2(47) 'GRAND TOTAL'(022) CENTERED,
49 sy-vline, 50 v_gtotal1 CURRENCY int_bsik-waers,
66 sy-vline, 67 v_gtotal2 CURRENCY int_bsik-waers,
83 sy-vline, 84 v_gtotal3 CURRENCY int_bsik-waers,
100 sy-vline,101 v_gtotal4 CURRENCY int_bsik-waers,
117 sy-vline,118 v_gtotal5 CURRENCY int_bsik-waers,
134 sy-vline,135 v_gtotal6 CURRENCY int_bsik-waers,
151 sy-vline,152 v_gtotal CURRENCY int_bsik-waers,
168 sy-vline.
HIDE : v_gtotal1,
v_gtotal2,
v_gtotal3,
v_gtotal4,
v_gtotal5,
v_gtotal6,
v_gtotal.
ENDAT.
FORMAT COLOR OFF.
ENDLOOP.
WRITE : /1(168) sy-uline.
ENDFORM. " basic_list
*& Form line_selection
When double clicked on the line display the seconday list
FORM line_selection .
NEW-PAGE LINE-SIZE 206.
Sy-lsind = 1.
DATA : v_rem,v_cnt LIKE sy-tabix.
v_cnt = 0.
SORT int_bsik BY belnr zfbdt.
LOOP AT int_bsik WHERE lifnr EQ int_final-lifnr.
v_rem = v_cnt MOD 2.
CLEAR v_date.
IF int_bsik-zbd3t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd3t.
ELSE.
IF int_bsik-zbd2t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd2t.
ELSE.
v_date = int_bsik-zfbdt + int_bsik-zbd1t.
ENDIF.
ENDIF.
IF int_bsik-zbd1t = ' '.
v_date = int_bsik-zfbdt.
ENDIF.
IF v_rem NE 0.
format color 2 intensified.
WRITE :/1 sy-vline, 2 int_bsik-belnr,
12 sy-vline,13 int_bsik-lifnr,
23 sy-vline,24 int_bsik-name1,
59 sy-vline,60 int_bsik-xblnr,
76 sy-vline,77 int_bsik-zfbdt,
87 sy-vline.
WRITE : 104 sy-vline,121 sy-vline,
138 sy-vline,155 sy-vline,
172 sy-vline, 189 sy-vline,
190 int_bsik-dmbtr CURRENCY int_bsik-waers,
206 sy-vline.
IF v_date IN r_date1.
v_subtotal1 = v_subtotal1 + int_bsik-dmbtr.
WRITE : 88 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date2.
v_subtotal2 = v_subtotal2 + int_bsik-dmbtr.
WRITE : 105 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date3.
v_subtotal3 = v_subtotal3 + int_bsik-dmbtr.
WRITE : 122 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date4.
v_subtotal4 = v_subtotal4 + int_bsik-dmbtr.
WRITE : 139 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date > r_date4-high.
v_subtotal5 = v_subtotal5 + int_bsik-dmbtr.
WRITE : 156 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date < p_allgst.
v_subtotal6 = v_subtotal6 + int_bsik-dmbtr.
WRITE : 173 int_bsik-dmbtr CURRENCY int_bsik-waers.
ENDIF.
format color off.
ELSE.
WRITE :/1 sy-vline, 2 int_bsik-belnr,
12 sy-vline,13 int_bsik-lifnr,
23 sy-vline,24 int_bsik-name1,
59 sy-vline,60 int_bsik-xblnr,
76 sy-vline,77 int_bsik-zfbdt,
87 sy-vline.
WRITE : 104 sy-vline,121 sy-vline,
138 sy-vline,155 sy-vline,
172 sy-vline,189 sy-vline,
190 int_bsik-dmbtr CURRENCY int_bsik-waers,
206 sy-vline.
IF v_date IN r_date1.
v_subtotal1 = v_subtotal1 + int_bsik-dmbtr.
WRITE : 88 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date2.
v_subtotal2 = v_subtotal2 + int_bsik-dmbtr.
WRITE : 105 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date3.
v_subtotal3 = v_subtotal3 + int_bsik-dmbtr.
WRITE : 122 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date4.
v_subtotal4 = v_subtotal4 + int_bsik-dmbtr.
WRITE : 139 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date > r_date4-high.
v_subtotal5 = v_subtotal5 + int_bsik-dmbtr.
WRITE : 156 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date < p_allgst.
v_subtotal6 = v_subtotal6 + int_bsik-dmbtr.
WRITE : 173 int_bsik-dmbtr CURRENCY int_bsik-waers.
ENDIF.
ENDIF.
FORMAT COLOR OFF.
v_cnt = v_cnt + 1.
ENDLOOP.
WRITE : /1(206) sy-uline.
v_subtotal = v_subtotal1 + v_subtotal2 + v_subtotal3
+ v_subtotal4 + v_subtotal5 + v_subtotal6.
FORMAT COLOR 3 INTENSIFIED.
WRITE : /1 sy-vline,
2(85) 'Total'(017) CENTERED CURRENCY int_bsik-waers ,
87 sy-vline,
88 v_subtotal1 CURRENCY int_bsik-waers,
104 sy-vline,
105 v_subtotal2 CURRENCY int_bsik-waers,
121 sy-vline,
122 v_subtotal3 CURRENCY int_bsik-waers,
138 sy-vline,
139 v_subtotal4 CURRENCY int_bsik-waers,
155 sy-vline,
156 v_subtotal5 CURRENCY int_bsik-waers,
172 sy-vline,
173 v_subtotal6 CURRENCY int_bsik-waers,
189 sy-vline,
190 v_subtotal CURRENCY int_bsik-waers,
206 sy-vline.
FORMAT COLOR OFF.
WRITE : /1(206) sy-uline.
CLEAR : v_subtotal,v_subtotal1,v_subtotal2,v_subtotal3,
v_subtotal4,v_subtotal5,v_gtotal1,v_gtotal2,v_gtotal3,
v_gtotal4, v_gtotal5,v_gtotal,v_subtotal6,v_gtotal6.
ENDFORM. " line_selection
*& Form header1
Secondary List Header
FORM header1 .
Standard header
clear: v_date1, v_str, v_str1, v_tage.
write p_allgst to v_date1.
Move p_tage4 to v_tage.
concatenate '>' v_tage text-025 into v_str1.
concatenate
'Details of Ageing Analysis for Vendor Open Invoices as on'(024)
v_date1 into v_str separated by space.
CALL FUNCTION 'Z_STANDARD_HEADER'
EXPORTING
title1 = 'Company'(012)
title2 = v_str.
FORMAT COLOR 1 intensified.
WRITE :/1(206) sy-uline.
WRITE :/1 sy-vline,12 sy-vline ,
23 sy-vline,59 sy-vline,76 sy-vline,87 sy-vline,
88(101) 'Invoices Due For(In Days)'(014) CENTERED,
189 sy-vline,206 sy-vline.
WRITE : /1 sy-vline, 2(10) 'Doc Number'(021) CENTERED,
12 sy-vline, 13(10) 'Vendor#'(015) CENTERED,
23 sy-vline, 24(35) 'Vendor Name'(016) CENTERED,
59 sy-vline, 60(16) 'Ref invoice#'(019) CENTERED,
76 sy-vline, 77(10) 'Inv dt'(020) CENTERED,
87 sy-vline, 88(101) sy-uline,
189 sy-vline,190(16) 'Total'(017) CENTERED,
206 sy-vline.
WRITE : /1 sy-vline, 12 sy-vline,
23 sy-vline,59 sy-vline,
76 sy-vline,87 sy-vline,
88(16) v_fir CENTERED, 104 sy-vline,
105(16) v_sec CENTERED, 121 sy-vline,
122(16) v_thir CENTERED, 138 sy-vline,
139(16) v_four CENTERED, 155 sy-vline,
156(16) v_str1 CENTERED,
172 sy-vline,
173(16) 'Already Overdue'(018) CENTERED,
189 sy-vline,
206 sy-vline.
format color off.
WRITE : /1(206) sy-uline.
ENDFORM. " header1
Reward points if useful
Regards
Anji -
Alv Report for invoice details
Dear All,
I need to develop one alv report for following details. i developed coding for this requirment but i am getting some error.kindley help me to how to move data from different internal table to final internal table. I used LOOP AT and READ Statement even i didn't get any output.
kindley help me out.
TYPES: BEGIN OF XT_TAB,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STCD1 LIKE LFA1-STCD1,
STCD2 LIKE LFA1-STCD2,
STCD3 LIKE LFA1-STCD3,
STCD4 LIKE LFA1-STCD4,
END OF XT_TAB.
TYPES: BEGIN OF YT_TAB,
BUKRS LIKE BSEG-BUKRS,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
LIFNR LIKE BSEG-LIFNR,
GJAHR LIKE BSEG-GJAHR,
END OF YT_TAB.
TYPES: BEGIN OF ZT_TAB,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STCD2 LIKE LFA1-STCD2,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
GJAHR LIKE BSEG-GJAHR,
END OF ZT_TAB.
I N T E R N A L T A B L E D E C L A R A T I O N S *
*-----Internal table to store data
DATA: ITAB1 TYPE STANDARD TABLE OF XT_TAB INITIAL SIZE 0,
WA_TAB1 TYPE XT_TAB.
DATA: ITAB2 TYPE STANDARD TABLE OF YT_TAB INITIAL SIZE 0,
WA_TAB2 TYPE YT_TAB.
DATA: ITAB TYPE STANDARD TABLE OF ZT_TAB WITH HEADER LINE,
WA_ITAB TYPE ZT_TAB,
ITAB_FINAL2 TYPE STANDARD TABLE OF ZT_TAB.
DATA: ITAB_TEMP1 TYPE STANDARD TABLE OF ZT_TAB WITH HEADER LINE.
Selection Screen Declarations *
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN begin OF LINE.
SELECTION-SCREEN COMMENT (23) text-003 FOR FIELD P_LIFNR.
PARAMETERS P_LIFNR LIKE LFA1-LIFNR OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bk1.
START-OF-SELECTION.
PERFORM XTRACT_DATA.
END-OF-SELECTION.
*-----Filling the Output table
PERFORM populate_main_table.
PERFORM BUILD_FIELDCATALOG.
PERFORM SORTING.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_ALV_GRID_DISPLAY.
Form XTRACT_DATA
FORM XTRACT_DATA .
*SELECT
a~LIFNR
a~NAME1
a~STCD2
b~BELNR
b~BUZEI
b~GJAHR
INTO TABLE ITAB
FROM LFA1 as a INNER JOIN BSEG as b
ON aLIFNR = bLIFNR
WHERE a~LIFNR = P_LIFNR.
SELECT LIFNR
NAME1
STCD1
STCD2
STCD3
STCD4
FROM LFA1
INTO TABLE ITAB1
WHERE LIFNR = P_LIFNR.
IF NOT ITAB1[] IS INITIAL.
SORT ITAB1 BY LIFNR.
SELECT BELNR
BUZEI
LIFNR
GJAHR
INTO TABLE ITAB2
FROM BSEG
FOR ALL ENTRIES IN ITAB1
WHERE LIFNR = ITAB1-LIFNR.
ENDIF.
ENDFORM. " XTRACT_DATA
*& Form POPULATE_MAIN_TABLE
text
--> p1 text
<-- p2 text
FORM POPULATE_MAIN_TABLE .
LOOP AT ITAB1 INTO WA_TAB1.
ITAB-LIFNR = ITAB1-LIFNR.
ITAB-NAME1 = ITAB1-NAME1.
ITAB-STCD2 = ITAB1-STCD2.
READ TABLE ITAB2 INTO WA_TAB2 WITH KEY LIFNR = WA_TAB1-LIFNR.
IF sy-subrc = 0.
ITAB-BELNR = ITAB1-BELNR.
ITAB-BUZEI = ITAB1-BUZEI.
ITAB-GJAHR = ITAB1-GJAHR.
ENDIF.
ENDLOOP.
ENDFORM. " POPULATE_MAIN_TABLE
Form BUILD_FIELDCATALOG
FORM BUILD_FIELDCATALOG .
REFRESH t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 1.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor Number'.
wa_fcat-seltext_m = 'Vendor Number'.
wa_fcat-seltext_l = 'Vendor Number'.
wa_fcat-fieldname = 'LIFNR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 2.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor Name'.
wa_fcat-seltext_m = 'Vendor Name'.
wa_fcat-seltext_l = 'Vendor Name'.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 3.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor TIN Number'.
wa_fcat-seltext_m = 'Vendor TIN Number'.
wa_fcat-seltext_l = 'Vendor TIN Number'.
wa_fcat-fieldname = 'STCD2'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 4.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Document No'.
wa_fcat-seltext_m = 'Document No'.
wa_fcat-seltext_l = 'Document No'.
wa_fcat-fieldname = 'BELNR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 5.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Item Number'.
wa_fcat-seltext_m = 'Item Number'.
wa_fcat-seltext_l = 'Item Number'.
wa_fcat-fieldname = 'BUZEI'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 6.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Fiscal Year'.
wa_fcat-seltext_m = 'Fiscal Year'.
wa_fcat-seltext_l = 'Fiscal Year'.
wa_fcat-fieldname = 'GJAHR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
ENDFORM. " BUILD_FIELDCATALOG
Form BUILD_LAYOUT
FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT = 'X'.
GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GD_LAYOUT-TOTALS_TEXT = 'TOTALS'.
ENDFORM. " BUILD_LAYOUT
Form BUILD_ALV_GRID_DISPLAY
FORM BUILD_ALV_GRID_DISPLAY .
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
is_layout = gd_layout
it_fieldcat = t_fcat[]
it_events = gt_events
is_print = gd_prntparams
it_sort = it_sortcat[]
i_save = 'X'
TABLES
t_outtab = ITAB
EXCEPTIONS
program_error = 1
OTHERS = 2.
thanks and regards
MurugeshTYPES: BEGIN OF XT_TAB,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STCD1 LIKE LFA1-STCD1,
STCD2 LIKE LFA1-STCD2,
STCD3 LIKE LFA1-STCD3,
STCD4 LIKE LFA1-STCD4,
END OF XT_TAB.
TYPES: BEGIN OF YT_TAB,
BUKRS LIKE BSEG-BUKRS,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
LIFNR LIKE BSEG-LIFNR,
GJAHR LIKE BSEG-GJAHR,
END OF YT_TAB.
TYPES: BEGIN OF ZT_TAB,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STCD2 LIKE LFA1-STCD2,
BELNR LIKE BSEG-BELNR,
BUZEI LIKE BSEG-BUZEI,
GJAHR LIKE BSEG-GJAHR,
END OF ZT_TAB.
I N T E R N A L T A B L E D E C L A R A T I O N S *
*-----Internal table to store data
DATA: ITAB1 TYPE STANDARD TABLE OF XT_TAB INITIAL SIZE 0,
WA_TAB1 TYPE XT_TAB.
DATA: ITAB2 TYPE STANDARD TABLE OF YT_TAB INITIAL SIZE 0,
WA_TAB2 TYPE YT_TAB.
DATA: ITAB TYPE STANDARD TABLE OF ZT_TAB WITH HEADER LINE,
WA_ITAB TYPE ZT_TAB,
ITAB_FINAL2 TYPE STANDARD TABLE OF ZT_TAB.
DATA: ITAB_TEMP1 TYPE STANDARD TABLE OF ZT_TAB WITH HEADER LINE.
Selection Screen Declarations *
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN begin OF LINE.
SELECTION-SCREEN COMMENT (23) text-003 FOR FIELD P_LIFNR.
PARAMETERS P_LIFNR LIKE LFA1-LIFNR OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bk1.
START-OF-SELECTION.
PERFORM XTRACT_DATA.
END-OF-SELECTION.
*-----Filling the Output table
PERFORM populate_main_table.
PERFORM BUILD_FIELDCATALOG.
PERFORM SORTING.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_ALV_GRID_DISPLAY.
Form XTRACT_DATA
FORM XTRACT_DATA .
*SELECT
a~LIFNR
a~NAME1
a~STCD2
b~BELNR
b~BUZEI
b~GJAHR
INTO TABLE ITAB
FROM LFA1 as a INNER JOIN BSEG as b
ON aLIFNR = bLIFNR
WHERE a~LIFNR = P_LIFNR.
SELECT LIFNR
NAME1
STCD1
STCD2
STCD3
STCD4
FROM LFA1
INTO TABLE ITAB1
WHERE LIFNR = P_LIFNR.
IF NOT ITAB1[] IS INITIAL.
SORT ITAB1 BY LIFNR.
SELECT BELNR
BUZEI
LIFNR
GJAHR
INTO TABLE ITAB2
FROM BSEG
FOR ALL ENTRIES IN ITAB1
WHERE LIFNR = itab1-lifnr.
ENDIF.
ENDFORM. " XTRACT_DATA
*& Form POPULATE_MAIN_TABLE
text
--> p1 text
<-- p2 text
FORM POPULATE_MAIN_TABLE .
LOOP AT ITAB1 INTO WA_TAB1.
ITAB-LIFNR = ITAB1-LIFNR.
ITAB-NAME1 = ITAB1-NAME1.
ITAB-STCD2 = ITAB1-STCD2.
READ TABLE ITAB2 INTO WA_TAB2 WITH KEY LIFNR = WA_TAB1-LIFNR.
IF sy-subrc = 0.
ITAB-BELNR = ITAB1-BELNR.
ITAB-BUZEI = ITAB1-BUZEI.
ITAB-GJAHR = ITAB1-GJAHR.
ENDIF.
ENDLOOP.
LOOP AT itab1 INTO wa_tab1.
MOVE: wa_tab1-lifnr TO itab-lifnr,
wa_tab1-name1 TO itab-name1,
wa_tab1-stcd2 TO itab-stcd2.
Append itab.
READ TABLE itab2 TRANSPORTING NO FIELDS WITH KEY lifnr = wa_tab1-lifnr.
IF sy-subrc eq 0.
MOVE: wa_tab2-lifnr TO itab-lifnr,
wa_tab2-belnr TO itab-belnr,
wa_tab2-buzei TO itab-buzei,
wa_tab2-gjahr TO itab-gjahr.
Append itab.
endif.
endloop.
*LOOP AT t_agr_tcodes INTO s_agr_tcodes.
READ TABLE t_tstc
TRANSPORTING NO FIELDS
WITH KEY tcode = s_agr_tcodes-tcode.
IF sy-subrc eq 0.
MOVE: s_agr_tcodes-tcode TO it_agr_tcodes-tcode,
s_agr_tcodes-agr_name to it_agr_tcodes-agr_name,
t_tstc-pgmna to it_agr_pgmna.
*Append it_agr_tcodes.
*endif.
*endloop.
ENDFORM. " POPULATE_MAIN_TABLE
Form BUILD_FIELDCATALOG
FORM BUILD_FIELDCATALOG .
REFRESH t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 1.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor Number'.
wa_fcat-seltext_m = 'Vendor Number'.
wa_fcat-seltext_l = 'Vendor Number'.
wa_fcat-fieldname = 'LIFNR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 2.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor Name'.
wa_fcat-seltext_m = 'Vendor Name'.
wa_fcat-seltext_l = 'Vendor Name'.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 3.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Vendor TIN Number'.
wa_fcat-seltext_m = 'Vendor TIN Number'.
wa_fcat-seltext_l = 'Vendor TIN Number'.
wa_fcat-fieldname = 'STCD2'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 4.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Document No'.
wa_fcat-seltext_m = 'Document No'.
wa_fcat-seltext_l = 'Document No'.
wa_fcat-fieldname = 'BELNR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 5.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Item Number'.
wa_fcat-seltext_m = 'Item Number'.
wa_fcat-seltext_l = 'Item Number'.
wa_fcat-fieldname = 'BUZEI'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
wa_fcat-col_pos = 6.
wa_fcat-row_pos = 1.
wa_fcat-seltext_s = 'Fiscal Year'.
wa_fcat-seltext_m = 'Fiscal Year'.
wa_fcat-seltext_l = 'Fiscal Year'.
wa_fcat-fieldname = 'GJAHR'.
wa_fcat-tabname = 'ITAB'.
APPEND wa_fcat TO t_fcat.
CLEAR t_fcat.
ENDFORM. " BUILD_FIELDCATALOG
Form BUILD_LAYOUT
FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT = 'X'.
GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GD_LAYOUT-TOTALS_TEXT = 'TOTALS'.
ENDFORM. " BUILD_LAYOUT
Form BUILD_ALV_GRID_DISPLAY
FORM BUILD_ALV_GRID_DISPLAY .
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
is_layout = gd_layout
it_fieldcat = t_fcat[]
it_events = gt_events
is_print = gd_prntparams
it_sort = it_sortcat[]
i_save = 'X'
TABLES
t_outtab = ITAB
EXCEPTIONS
program_error = 1
OTHERS = 2.
Edited by: Murugesh P on Apr 6, 2009 10:54 AM
Edited by: Murugesh P on Apr 6, 2009 10:54 AM -
Report for two sponsors on one project
I would like to make report for two sponsors: Each of them want to see only a Cash flow (Budgeted Expense Cost and Actual Expense Cost) that is related to him/her.
It is possible to do something similar in two ways:
1. Activity Usage Spreadsheet - Spreadsheet Fields - Time interval - Cost - Budgeted Expense Cost and Actual Expense Cost
2. Activity Usage Profile - Activity Usage Profile Options: Filter by bars/curver (Expenses); Show Bars/Curves (Budgeted and Actual)
while Timescale: Show primary Dates (Type - Calendar; Date interval - Quarter/Months).
But in both way Expenses are grouped together and it is not possible to differentiate who is financing what.
Thanks!Yes, we are only replacing image files. So--since no one here
is familiar with merge-- if we do as you suggest using Windows
Explorer, the steps will be:
1) One writer works on his/her computer's local drive and the
other writer works on his/her computer 's local drive (no shared
drive).
2) Each writer creates an Image folder on his/her computer's
local drive
3) Each writer captures (Snag-it) images from the
application, opens the captured image in Photoshop and sizes the
new image file to match the size and width, border, etc parameters
of the image in the current Help's HTML code. (writer will have to
view HTML code to get image size)
4) Each writer will copy the new image files into his/her
local drive-based Image folder--giving the new image the same name
as the image that is being replaced).
5) The image files in the first writer's Image folder are
then copied to the Image other writer's Image folder.
6) The new Image folder containing all the new image files is
copied into the RoboHelp source directory, overwriting the old
Image folder.
7) The writer with the new Image folder (containing all the
new images) then generates and publishers the RoboHelp project.
Is this correct? -
DEAR FRIENDS,
I am making a program for tracking the materials given (mb1b 541 movt.) for subcontracting and taken by me (101 for actual good receipt, 543 for the given material- stock type inward, 545 for the scrap returns). but while i made the program i am unable to pick up the materials BOM from the PO which is essential to take the difference between these and the supplied quantities taken-in by GR.
following is the program.
Please suggest the changes. Thanks,
Deepak
*& Report ZMM_SUBCONTRACTING_PO_REPORT
*& Author:
*& Date :
*& Reason: Sub Contracting PO Report.
*& Find Discreprancy in PO and BOM. according to 543 and 545
REPORT ZMM_SUBCONTRACTING_PO_REPORT NO STANDARD PAGE HEADING
LINE-SIZE 157.
*& TABLES DECLARATION
TABLES: EKKO,
EKPO,
EKBE,
ENT5303.
*& SELECTION-SCREEN.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_MATNR FOR EKPO-MATNR,
S_WERKS FOR EKBE-WERKS OBLIGATORY.
PARAMETERS: P_BUKRS LIKE EKKO-BUKRS OBLIGATORY.
SELECT-OPTIONS: S_BUDAT FOR EKBE-BUDAT OBLIGATORY,
S_EBELN FOR EKKO-EBELN,
S_BELNR FOR EKBE-BELNR,
S_GJAHR FOR EKBE-GJAHR.
SELECTION-SCREEN: END OF BLOCK B1.
*& INTERNAL TABLES DECLARATION.
DATA: BEGIN OF IT_EKKO OCCURS 0,
EBELN LIKE EKKO-EBELN,
END OF IT_EKKO.
DATA: BEGIN OF IT_EKBE OCCURS 0,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
GJAHR LIKE EKBE-GJAHR,
BELNR LIKE EKBE-BELNR,
BUZEI LIKE EKBE-BUZEI,
BEWTP LIKE EKBE-BEWTP,
BWART LIKE EKBE-BWART,
BUDAT LIKE EKBE-BUDAT,
MENGE LIKE EKBE-MENGE,
DMBTR LIKE EKBE-DMBTR,
LFBNR LIKE EKBE-LFBNR,
MATNR LIKE EKBE-MATNR,
WERKS LIKE EKBE-WERKS,
BUKRS LIKE WB2_V_EKKO_EKPO2-BUKRS,
MENGE_I LIKE WB2_V_EKKO_EKPO2-MENGE_I,
LIFNR LIKE WB2_V_EKKO_EKPO2-LIFNR,
COUNT TYPE P DECIMALS 4,
BMENGE LIKE EKBE-MENGE,
MENGE101 LIKE EKBE-MENGE,
MENGE543 LIKE EKBE-MENGE,
MENGE545 LIKE EKBE-MENGE,
DIFFER LIKE EKBE-MENGE,
TMENGE LIKE EKBE-MENGE,
RATE LIKE EKBE-DMBTR,
NAME1 LIKE LFA1-NAME1,
LINE_COLOR(4),
END OF IT_EKBE.
DATA: WA LIKE IT_EKBE.
DATA: BEGIN OF IT_FINAL OCCURS 0.
INCLUDE STRUCTURE IT_EKBE.
DATA: END OF IT_FINAL.
DATA: BEGIN OF IT_FINAL_TEMP OCCURS 0.
INCLUDE STRUCTURE IT_EKBE.
DATA: END OF IT_FINAL_TEMP.
DATA: BEGIN OF IT_BOM OCCURS 0.
INCLUDE STRUCTURE CAPP_ITM.
DATA: END OF IT_BOM.
DATA: BEGIN OF IT_BOM_HEAD OCCURS 0.
INCLUDE STRUCTURE CAPP_BOM.
DATA: END OF IT_BOM_HEAD.
*& DATA DECLARATION.
DATA: COUNT TYPE P DECIMALS 4,
V_CNT TYPE P DECIMALS 4 VALUE '0.0001' ,
V_MENGE LIKE EKBE-MENGE,
V_DELETE.
TYPE-POOLS: slis.
DATA: l_date(12) TYPE c,
l_date1(12) TYPE c,
l_time(10) TYPE c,
l_list(60) TYPE c.
DATA: CATALOG TYPE SLIS_FIELDCAT_ALV, "FIELDCAT
TCATALOG TYPE SLIS_T_FIELDCAT_ALV, "IT FIELDCAT
EVENT TYPE SLIS_ALV_EVENT, "EVENT
TEVENT TYPE SLIS_T_EVENT, "IT EVENT
LAYOUT TYPE SLIS_LAYOUT_ALV, "LAYOUT
PG_TOP TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
PG_HEAD TYPE SLIS_T_LISTHEADER,
EXIT1 TYPE SLIS_EXIT_BY_USER,
VAR1 LIKE DISVARIANT,
VAR2 LIKE DISVARIANT.
*& START-OF-SELECTION.
START-OF-SELECTION.
PERFORM PROCESS_SELECTION.
PERFORM DELETE_CANCELLED_DOCUMENTS.
PERFORM EXPLODE_BOM_FOR_101.
SORT IT_FINAL BY COUNT.
PERFORM DISPLAY_OUTPUT.
FREE IT_FINAL_TEMP.
*& ALV FORMATTING
*& ALV DISPLAY
PERFORM GENERATE_ALV_FIELDCAT.
PERFORM EVENTS USING TEVENT.
PERFORM TEXT USING PG_HEAD.
PERFORM ALV_SHOW.
*& FORM PROCESS_SELECTION.
FORM PROCESS_SELECTION.
SELECT
A~EBELN
A~EBELP
A~GJAHR
A~BELNR
A~BUZEI
A~BEWTP
A~BWART
A~BUDAT
A~MENGE
A~DMBTR
A~LFBNR
A~MATNR
A~WERKS
B~BUKRS
B~MENGE_I
B~LIFNR
FROM
EKBE AS A
JOIN
WB2_V_EKKO_EKPO2 AS B
ON
AEBELN = BEBELN AND
AEBELP = BEBELP_I
INTO
CORRESPONDING FIELDS OF TABLE IT_EKBE
WHERE
A~MATNR IN S_MATNR AND
A~WERKS IN S_WERKS AND
A~BUDAT IN S_BUDAT AND
A~EBELN IN S_EBELN AND
A~BELNR IN S_BELNR AND
A~GJAHR IN S_GJAHR AND
A~VGABE IN ('1', '7') AND
A~BEWTP IN ('E', 'O') AND
( A~BWART IN ('101', '545', '543') OR
( ABWART = '102' AND ABEWTP = 'E' ) ) AND
B~BUKRS = P_BUKRS AND
B~BSTYP = 'F' AND
B~BSART = 'SUBC'."AND
B~LOEKZ <> 'X'.
SORT IT_EKBE BY EBELN EBELP GJAHR BELNR BUZEI.
ENDFORM.
*& FORM DELETE_CANCELLED_DOCUMENTS.
FORM DELETE_CANCELLED_DOCUMENTS.
DELETE IT_EKBE WHERE BWART = '102' AND BEWTP <> 'E'.
LOOP AT IT_EKBE WHERE BWART = '102'.
READ TABLE IT_EKBE INTO WA WITH KEY BELNR = IT_EKBE-LFBNR.
IF SY-SUBRC = 0.
DELETE IT_EKBE WHERE BELNR = WA-BELNR.
ENDIF.
ENDLOOP.
CLEAR WA.
DELETE IT_EKBE WHERE BWART = '102'.
ENDFORM.
*& FORM EXPLODE_BOM_FOR_101.
FORM EXPLODE_BOM_FOR_101.
CLEAR COUNT.
LOOP AT IT_EKBE WHERE BWART = '101' OR
BWART = '543'.
IF NOT IT_EKBE-MATNR IN S_MATNR.
V_DELETE = 'X'.
ELSE.
CLEAR V_DELETE.
ENDIF.
IF V_DELETE <> 'X'.
COUNT = COUNT + 1.
IT_EKBE-COUNT = COUNT.
V_MENGE = IT_EKBE-MENGE.
MODIFY IT_EKBE.
IT_FINAL = IT_EKBE.
APPEND IT_FINAL.
ENDIF.
call function 'CABM_READ_BOM'
exporting
I_MATNR = IT_EKBE-MATNR
I_WERKS = IT_EKBE-WERKS
I_STLAL = '01'
I_STLAN = '3'
I_DATUV = IT_EKBE-BUDAT
TABLES
EXP_BOM_DATA = IT_BOM_HEAD
EXP_ITM_DATA = IT_BOM
EXCEPTIONS
NO_RECORD_FOUND = 1
OTHERS = 2
if SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
*START RK 18.06.2007
DELETE IT_BOM WHERE DATUV > IT_EKBE-BUDAT.
END : 18.06.2007
IF V_DELETE = 'X'.
LOOP AT IT_BOM.
DELETE IT_EKBE WHERE MATNR = IT_BOM-IDNRK.
ENDLOOP.
REFRESH IT_BOM.
ELSE.
PERFORM CHECK_BOM_GR.
ENDIF.
endif.
ENDLOOP.
FREE IT_EKBE.
ENDFORM.
*& FORM CHECK_BOM_GR.
FORM CHECK_BOM_GR.
DATA: WACNT TYPE P DECIMALS 4.
WACNT = COUNT.
LOOP AT IT_BOM.
READ TABLE IT_EKBE INTO WA WITH KEY EBELN = IT_EKBE-EBELN
MATNR = IT_BOM-IDNRK.
IF SY-SUBRC = 0.
WACNT = WACNT + V_CNT.
WA-COUNT = WACNT.
WA-BMENGE = IT_BOM-MENGE.
WA-TMENGE = V_MENGE.
APPEND WA TO IT_FINAL.
DELETE IT_EKBE WHERE EBELN = WA-EBELN AND
EBELP = WA-EBELP AND
MATNR = WA-MATNR AND
BELNR = WA-BELNR AND
BUZEI = WA-BUZEI.
**START : ADDED BY .... KUMAR ON 14.06.2007
ELSE.
WACNT = WACNT + V_CNT.
WA-COUNT = WACNT.
WA-BMENGE = IT_BOM-MENGE.
WA-MATNR = IT_BOM-IDNRK.
WA-TMENGE = V_MENGE.
APPEND WA TO IT_FINAL.
**END ADDED BY .... KUMAR ON 14.06.2007
ENDIF.
CLEAR WA.
ENDLOOP.
REFRESH IT_BOM.
ENDFORM.
*& FORM DISPLAY_OUTPUT.
FORM DISPLAY_OUTPUT.
Populate color variable with colour properties
Char 1 = C (This is a color property)
Char 2 = 3 (Color codes: 1 - 7)
Char 3 = Intensified on/off ( 1 or 0 )
Char 4 = Inverse display on/off ( 1 or 0 )
i.e. wa_ekko-line_color = 'C410'
IT_FINAL_TEMP[] = IT_FINAL[].
LOOP AT IT_FINAL.
CLEAR IT_FINAL-DMBTR.
********added by .... .... on 17.02.2007
if it_final-bmenge < 0.
IT_FINAL-DIFFER = IT_FINAL-TMENGE * IT_FINAL-BMENGE * -1.
else.
*********end by .... .... on 17.02.2007
IT_FINAL-DIFFER = IT_FINAL-TMENGE * IT_FINAL-BMENGE.
********added by .... .... on 17.02.2007
endif.
*********end by .... .... on 17.02.2007
IF IT_FINAL-BWART = '101'.
IT_FINAL-LINE_COLOR = 'C210'.
IT_FINAL-MENGE101 = IT_FINAL-MENGE.
IT_FINAL-DIFFER = 0.
LOOP AT IT_FINAL_TEMP WHERE BELNR = IT_FINAL-BELNR AND
EBELN = IT_FINAL-EBELN AND
EBELP = IT_FINAL-EBELP.
IF IT_FINAL_TEMP-BWART <> '545'.
IT_FINAL-DMBTR = IT_FINAL-DMBTR + IT_FINAL_TEMP-DMBTR.
ELSE.
IT_FINAL-DMBTR = IT_FINAL-DMBTR - IT_FINAL_TEMP-DMBTR.
ENDIF.
ENDLOOP.
IT_FINAL-RATE = IT_FINAL-DMBTR / IT_FINAL-MENGE101.
SELECT SINGLE
NAME1
INTO
IT_FINAL-NAME1
FROM
LFA1
WHERE
LIFNR = IT_FINAL-LIFNR.
IF SY-SUBRC <> 0.
CLEAR IT_FINAL-NAME1.
ENDIF.
ELSEIF IT_FINAL-BWART = '543'.
IT_FINAL-MENGE543 = IT_FINAL-MENGE.
IT_FINAL-LINE_COLOR = 'C200'.
IT_FINAL-DIFFER = IT_FINAL-DIFFER - IT_FINAL-MENGE543.
CLEAR: IT_FINAL-LIFNR,
IT_FINAL-EBELN,
IT_FINAL-BELNR,
IT_FINAL-MENGE_I,
IT_FINAL-BUDAT.
ELSEIF IT_FINAL-BWART = '545'.
******added by .... on 17.02.2007
IT_FINAL-MENGE = IT_FINAL-MENGE * -1.
IT_FINAL-MENGE = IT_FINAL-MENGE.
*******end by .... on 17.02.2007
IT_FINAL-MENGE545 = IT_FINAL-MENGE.
IT_FINAL-LINE_COLOR = 'C200'.
IT_FINAL-DIFFER = IT_FINAL-DIFFER - IT_FINAL-MENGE545.
CLEAR: IT_FINAL-LIFNR,
IT_FINAL-EBELN,
IT_FINAL-BELNR,
IT_FINAL-MENGE_I,
IT_FINAL-BUDAT.
ELSE.
IT_FINAL-LINE_COLOR = 'C200'.
CLEAR: IT_FINAL-LIFNR,
IT_FINAL-EBELN,
IT_FINAL-BELNR,
IT_FINAL-MENGE_I,
IT_FINAL-BUDAT.
ENDIF.
MODIFY IT_FINAL.
ENDLOOP.
ENDFORM.
*& Form GENERATE_ALV_FIELDCAT
text
FORM GENERATE_ALV_FIELDCAT.
DATA: POS TYPE I.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'COUNT'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'S. No.'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'MATNR'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Mat. No.'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'BMENGE'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'BOM Qty'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'EBELN'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'PO No.'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'MENGE_I'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'PO Qty'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'BELNR'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Gr. No.'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
CATALOG-HOTSPOT = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'BUDAT'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'GR Date'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'MENGE101'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = '101 Gr Qty'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'MENGE543'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = '543 Gr Qty'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'MENGE545'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = '545 Gr Qty'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'DIFFER'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Difference'.
CATALOG-NO_ZERO = ' '.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'LIFNR'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Vendor'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'NAME1'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Vendor Name'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'RATE'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Rate'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
POS = POS + 1.
CLEAR: CATALOG.
CATALOG-COL_POS = POS.
CATALOG-FIELDNAME = 'DMBTR'.
CATALOG-TABNAME = 'IT_FINAL'.
CATALOG-SELTEXT_L = 'Value'.
CATALOG-NO_ZERO = 'X'.
CATALOG-FIX_COLUMN = 'X'.
APPEND CATALOG TO TCATALOG.
ENDFORM.
*& Form ALV_SHOW
text
FORM ALV_SHOW.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-BOX_TABNAME = 'IT_FINAL'.
LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = LAYOUT
IT_FIELDCAT = TCATALOG
IS_VARIANT = VAR1
I_SAVE = 'A'
IT_EVENTS = TEVENT[]
TABLES
T_OUTTAB = IT_FINAL.
ENDFORM . "ALV_SHOW
*& FORM USER_COMMAND.
FORM USER_COMMAND USING
R_UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
DATA: TABIX LIKE SY-TABIX,
WA LIKE IT_FINAL.
TABIX = SELFIELD-TABINDEX.
READ TABLE IT_FINAL INTO WA INDEX TABIX.
IF NOT WA-BELNR IS INITIAL.
set parameter id : 'MBN' FIELD WA-BELNR.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN .
ENDIF.
ENDFORM.Hi,
U can try this standard report for subcontracting:
J1IFR (Transaction name),
Not sure how much this will be useful to u.
regards,
Viji -
I Need Interactive Report for displaying vendor information. Based on the s
Interactive Report for displaying vendor information. Based on the selection made by the corresponding Vendor Bank Details are listed such that the line selected in the basic list was visible along with the secondary list.
hi
Hi
Use the Table LFA1 and LFB1 in the basic list
and LFBK table details in the secondary list
see the sample code related to customer Sales orders
modify it with the Vendor tables
REPORT ZTEJ_INTAB1 LINE-SIZE 103 LINE-COUNT 35(5) NO STANDARD PAGE
HEADING.
*TABLES DECLARATION
TABLES : KNA1, VBAK, VBAP.
*SELECT OPTIONS
SELECT-OPTIONS: CUST_NO FOR KNA1-KUNNR.
*INITIALIZATION
INITIALIZATION.
CUST_NO-LOW = '01'.
CUST_NO-HIGH = '5000'.
CUST_NO-SIGN = 'I'.
CUST_NO-OPTION = 'BT'.
APPEND CUST_NO.
*SELECTION SCREEN VALIDATION
AT SELECTION-SCREEN ON CUST_NO.
LOOP AT SCREEN.
IF CUST_NO-LOW < 1 OR CUST_NO-HIGH > 5000.
MESSAGE E001(ZTJ1).
ENDIF.
ENDLOOP.
*BASIC LIST SELECTION
START-OF-SELECTION.
SELECT KUNNR NAME1 ORT01 LAND1 INTO
(KNA1-KUNNR, KNA1-NAME1,KNA1-ORT01,KNA1-LAND1)
FROM KNA1
WHERE KUNNR IN CUST_NO.
WRITE:/1 SY-VLINE,
KNA1-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
KNA1-NAME1 UNDER 'NAME',
61 SY-VLINE,
KNA1-ORT01 UNDER 'CITY',
86 SY-VLINE,
KNA1-LAND1 UNDER 'COUNTRY',
103 SY-VLINE.
HIDE: KNA1-KUNNR.
ENDSELECT.
ULINE.
*SECONDARY LIST ACCESS
AT user-command.
IF SY-UCOMM = 'IONE'.
PERFORM SALES_ORD.
ENDIF.
IF SY-UCOMM = 'ITWO'.
PERFORM ITEM_DET.
ENDIF.
*TOP OF PAGE
TOP-OF-PAGE.
FORMAT COLOR 1.
WRITE : 'CUSTOMER DETAILS'.
FORMAT COLOR 1 OFF.
ULINE.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'NAME',
61 SY-VLINE,
63 'CITY',
86 SY-VLINE,
88 'COUNTRY',
103 SY-VLINE.
ULINE.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR SECONDARY LISTS
TOP-OF-PAGE DURING LINE-SELECTION.
*TOP OF PAGE FOR 1ST SECONDARY LIST
IF SY-UCOMM = 'IONE'.
ULINE.
FORMAT COLOR 1.
WRITE : 'SALES ORDER DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'CUSTOMER NO.',
16 SY-VLINE,
18 'SALES ORDER NO.',
40 SY-VLINE,
42 'DATE',
60 SY-VLINE,
62 'CREATOR',
85 SY-VLINE,
87 'DOC DATE',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*TOP OF PAGE FOR 2ND SECONDARY LIST
IF SY-UCOMM = 'ITWO'.
ULINE.
FORMAT COLOR 1.
WRITE : 'ITEM DETAILS'.
ULINE.
FORMAT COLOR 1 OFF.
FORMAT COLOR 3.
WRITE : 1 SY-VLINE,
3 'SALES ORDER NO.',
40 SY-VLINE,
42 'SALES ITEM NO.',
60 SY-VLINE,
62 'ORDER QUANTITY',
103 SY-VLINE.
ULINE.
ENDIF.
FORMAT COLOR 3 OFF.
*END OF PAGE
END-OF-PAGE.
ULINE.
WRITE :'USER :',SY-UNAME,/,'DATE :', SY-DATUM, 85 'END OF PAGE:',
SY-PAGNO.
SKIP.
*& Form SALES_ORD
*& FIRST SECONDARY LIST FORM
FORM SALES_ORD .
SELECT KUNNR VBELN ERDAT ERNAM AUDAT INTO
(VBAK-KUNNR, VBAK-VBELN, VBAK-ERDAT, VBAK-ERNAM, VBAK-AUDAT)
FROM VBAK
WHERE KUNNR = KNA1-KUNNR.
WRITE:/1 SY-VLINE,
VBAK-KUNNR UNDER 'CUSTOMER NO.' HOTSPOT ON,
16 SY-VLINE,
VBAK-VBELN UNDER 'SALES ORDER NO.' HOTSPOT ON,
40 SY-VLINE,
VBAK-ERDAT UNDER 'DATE',
60 SY-VLINE,
VBAK-ERNAM UNDER 'CREATOR',
85 SY-VLINE,
VBAK-AUDAT UNDER 'DOC DATE',
103 SY-VLINE.
HIDE : VBAK-VBELN.
ENDSELECT.
ULINE.
ENDFORM. " SALES_ORD
*& Form ITEM_DET
*& SECOND SECONDARY LIST FORM
FORM ITEM_DET .
SELECT VBELN POSNR KWMENG INTO
(VBAP-VBELN, VBAP-POSNR, VBAP-KWMENG)
FROM VBAP
WHERE VBELN = VBAK-VBELN.
WRITE : /1 SY-VLINE,
VBAP-VBELN UNDER 'SALES ORDER NO.',
40 SY-VLINE,
VBAP-POSNR UNDER 'SALES ITEM NO.',
60 SY-VLINE,
VBAP-KWMENG UNDER 'ORDER QUANTITY',
103 SY-VLINE.
ENDSELECT.
ULINE.
ENDFORM. " ITEM_DET
REPORT demo_list_at_pf.
START-OF-SELECTION.
WRITE 'Basic List, Press PF5, PF6, PF7, or PF8'.
AT pf5.
PERFORM out.
AT pf6.
PERFORM out.
AT pf7.
PERFORM out.
AT pf8.
PERFORM out.
FORM out.
WRITE: 'Secondary List by PF-Key Selection',
/ 'SY-LSIND =', sy-lsind,
/ 'SY-UCOMM =', sy-ucomm.
ENDFORM.
After executing the program, the system displays the basic list. The user can press the function keys F5 , F6 , F7 , and F8 to create secondary lists. If, for example, the 14th key the user presses is F6 , the output on the displayed secondary list looks as follows:
Secondary List by PF-Key Selection
SY-LSIND = 14
SY-UCOMM = PF06
Example for AT USER-COMMAND.
REPORT demo_list_at_user_command NO STANDARD PAGE HEADING.
START-OF-SELECTION.
WRITE: 'Basic List',
/ 'SY-LSIND:', sy-lsind.
TOP-OF-PAGE.
WRITE 'Top-of-Page'.
ULINE.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-pfkey.
WHEN 'TEST'.
WRITE 'Self-defined GUI for Function Codes'.
ULINE.
ENDCASE.
AT LINE-SELECTION.
SET PF-STATUS 'TEST' EXCLUDING 'PICK'.
PERFORM out.
sy-lsind = sy-lsind - 1.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'FC1'.
PERFORM out.
WRITE / 'Button FUN 1 was pressed'.
WHEN 'FC2'.
PERFORM out.
WRITE / 'Button FUN 2 was pressed'.
WHEN 'FC3'.
PERFORM out.
WRITE / 'Button FUN 3 was pressed'.
WHEN 'FC4'.
PERFORM out.
WRITE / 'Button FUN 4 was pressed'.
WHEN 'FC5'.
PERFORM out.
WRITE / 'Button FUN 5 was pressed'.
ENDCASE.
sy-lsind = sy-lsind - 1.
FORM out.
WRITE: 'Secondary List',
/ 'SY-LSIND:', sy-lsind,
/ 'SY-PFKEY:', sy-pfkey.
ENDFORM.
<b>Vendor performance report</b>
See this sample code
*"Table declarations...................................................
TABLES:
EKKO, " Purchasing Document Header
CDHDR, " Change document header
SSCRFIELDS. " Fields on selection screens
*"Selection screen elements............................................
SELECT-OPTIONS:
S_EBELN FOR EKKO-EBELN, " Purchasing Document Number
S_LIFNR FOR EKKO-LIFNR, " Vendor's account number
S_EKGRP FOR EKKO-EKGRP, " Purchasing group
S_BEDAT FOR EKKO-BEDAT, " Purchasing Document Date
S_UDATE FOR CDHDR-UDATE. " Creation date of the change
" document
*" Data declarations...................................................
Field String to hold Purchase Document Number *
DATA:
BEGIN OF FS_EBELN,
EBELN(90) TYPE C, " Purchase Document Number
ERNAM TYPE EKKO-ERNAM, " Name of Person who Created
" the Object
LIFNR TYPE EKKO-LIFNR, " Vendor's account number
EKGRP TYPE EKKO-EKGRP, " Purchasing group
BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
END OF FS_EBELN,
Field String to hold Purchase Document Header *
BEGIN OF FS_EKKO,
EBELN TYPE EKKO-EBELN, " Purchasing Document Number
ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the
" Object
LIFNR TYPE EKKO-LIFNR, " Vendor's account number
EKGRP TYPE EKKO-EKGRP, " Purchasing group
BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
END OF FS_EKKO,
Field String to hold Account Number and name of the Vendor *
BEGIN OF FS_LFA1,
LIFNR TYPE LFA1-LIFNR, " Account Number of Vendor
NAME1 TYPE LFA1-NAME1, " Name1
END OF FS_LFA1,
Field String to hold Change date and the name of the user *
BEGIN OF FS_CDHDR,
OBJECTCLAS TYPE CDHDR-OBJECTCLAS, " Object Class
OBJECTID TYPE CDHDR-OBJECTID, " Object value
CHANGENR TYPE CDHDR-CHANGENR, " Document change number
USERNAME TYPE CDHDR-USERNAME, " User name
UDATE TYPE CDHDR-UDATE, " Creation date of the change
" document
END OF FS_CDHDR,
Field String to hold Change document items *
BEGIN OF FS_CDPOS,
OBJECTCLAS TYPE CDPOS-OBJECTCLAS," Object class
OBJECTID(10) TYPE C, " Object Value
CHANGENR TYPE CDPOS-CHANGENR, " Document change number
TABNAME TYPE CDPOS-TABNAME, " Table Name
FNAME TYPE CDPOS-FNAME, " Field Name
VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field
VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field
END OF FS_CDPOS,
Field String to hold Date Element Name *
BEGIN OF FS_DATAELE,
TABNAME TYPE DD03L-TABNAME, " Table Name
FIELDNAME TYPE DD03L-FIELDNAME, " Field Name
ROLLNAME TYPE DD03L-ROLLNAME, " Data element (semantic domain)
END OF FS_DATAELE,
Field String to hold Short Text of the Date Element *
BEGIN OF FS_TEXT,
ROLLNAME TYPE DD04T-ROLLNAME, " Data element (semantic domain)
DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3
" Repository Objects
END OF FS_TEXT,
Field String to hold data to be displayed on the ALV grid *
BEGIN OF FS_OUTTAB,
EBELN TYPE EKKO-EBELN, " Purchasing Document Number
ERNAM TYPE EKKO-ERNAM, " Name of Person who Created the
" Object
LIFNR TYPE EKKO-LIFNR, " Vendor's account number
EKGRP TYPE EKKO-EKGRP, " Purchasing group
BEDAT TYPE EKKO-BEDAT, " Purchasing Document Date
WERKS TYPE LFA1-WERKS, " Plant
NAME1 TYPE LFA1-NAME1, " Name1
USERNAME TYPE CDHDR-USERNAME, " User name
UDATE TYPE CDHDR-UDATE, " Creation date of the change
" document
DDTEXT TYPE DD04T-DDTEXT, " Short Text Describing R/3
" Repository Objects
VALUE_NEW TYPE CDPOS-VALUE_NEW, " New contents of changed field
VALUE_OLD TYPE CDPOS-VALUE_OLD, " Old contents of changed field
END OF FS_OUTTAB,
Internal table to hold Purchase Document Number *
T_EBELN LIKE STANDARD TABLE
OF FS_EBELN,
Internal table to hold Purchase Document Header *
T_EKKO LIKE STANDARD TABLE
OF FS_EKKO,
Temp Internal table to hold Purchase Document Header *
T_EKKO_TEMP LIKE STANDARD TABLE
OF FS_EKKO,
Internal table to hold Account number and Name of the Vendor *
T_LFA1 LIKE STANDARD TABLE
OF FS_LFA1,
Internal Table to hold Change date and the name of the user *
T_CDHDR LIKE STANDARD TABLE
OF FS_CDHDR,
Internal Table to hold Change document items *
T_CDPOS LIKE STANDARD TABLE
OF FS_CDPOS,
Temp. Internal Table to hold Change document items *
T_CDPOS_TEMP LIKE STANDARD TABLE
OF FS_CDPOS,
Internal Table to hold Data Element Name *
T_DATAELE LIKE STANDARD TABLE
OF FS_DATAELE,
Temp. Internal Table to hold Data Element Name *
T_DATAELE_TEMP LIKE STANDARD TABLE
OF FS_DATAELE,
Internal Table to hold Short Text of the Date Element *
T_TEXT LIKE STANDARD TABLE
OF FS_TEXT,
Internal Table to hold data to be displayed on the ALV grid *
T_OUTTAB LIKE STANDARD TABLE
OF FS_OUTTAB.
C L A S S D E F I N I T I O N *
CLASS LCL_EVENT_HANDLER DEFINITION DEFERRED.
*" Data declarations...................................................
Work variables *
DATA:
W_EBELN TYPE EKKO-EBELN, " Purchasing Document Number
W_LIFNR TYPE EKKO-LIFNR, " Vendor's account number
W_EKGRP TYPE EKKO-EKGRP, " Purchasing group
W_VALUE TYPE EKKO-EBELN, " Reflected Value
W_SPACE VALUE ' ', " Space
W_FLAG TYPE I, " Flag Variable
W_VARIANT TYPE DISVARIANT, " Variant
*--- ALV Grid
W_GRID TYPE REF TO CL_GUI_ALV_GRID,
*--- Event Handler
W_EVENT_CLICK TYPE REF TO LCL_EVENT_HANDLER,
*--- Field catalog table
T_FIELDCAT TYPE LVC_T_FCAT.
AT SELECTION-SCREEN EVENT *
AT SELECTION-SCREEN ON S_EBELN.
Subroutine to validate Purchase Document Number.
PERFORM VALIDATE_PD_NUM.
AT SELECTION-SCREEN ON S_LIFNR.
Subroutine to validate Vendor Number.
PERFORM VALIDATE_VEN_NUM.
AT SELECTION-SCREEN ON S_EKGRP.
Subroutine to validate Purchase Group.
PERFORM VALIDATE_PUR_GRP.
START-OF-SELECTION EVENT *
START-OF-SELECTION.
Subroutine to select all Purchase orders.
PERFORM SELECT_PO.
CHECK W_FLAG EQ 0.
Subroutine to select Object values.
PERFORM SELECT_OBJ_ID.
CHECK W_FLAG EQ 0.
Subroutine to select Changed values.
PERFORM SELECT_CHANGED_VALUE.
CHECK W_FLAG EQ 0.
Subroutine to Select Purchase Orders.
PERFORM SELECT_PUR_DOC.
Subroutine to select Vendor Details.
PERFORM SELECT_VENDOR.
Subroutine to select Text for the Changed values.
PERFORM DESCRIPTION.
END-OF-SELECTION EVENT *
END-OF-SELECTION.
IF NOT T_EKKO IS INITIAL.
Subroutine to populate the Output Table.
PERFORM FILL_OUTTAB.
Subroutine to build Field Catalog.
PERFORM PREPARE_FIELD_CATALOG CHANGING T_FIELDCAT.
CALL SCREEN 100.
ENDIF. " IF NOT T_EKKO...
CLASS LCL_EVENT_HANDLER DEFINITION
Defining Class which handles events
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
HANDLE_HOTSPOT_CLICK
FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID.
ENDCLASS. " LCL_EVENT_HANDLER DEFINITION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION
Implementing the Class which can handle events
CLASS LCL_EVENT_HANDLER IMPLEMENTATION .
*---Handle Double Click
METHOD HANDLE_HOTSPOT_CLICK .
Subroutine to get the HotSpot Cell information.
PERFORM GET_CELL_INFO.
SET PARAMETER ID 'BES' FIELD W_VALUE.
CALL TRANSACTION 'ME23N'.
ENDMETHOD. " HANDLE_HOTSPOT_CLICK
ENDCLASS. " LCL_EVENT_HANDLER
*& Module STATUS_0100 OUTPUT
PBO Event
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'OOPS'.
SET TITLEBAR 'TIT'.
Subroutine to fill the Variant Structure
PERFORM FILL_VARIANT.
IF W_GRID IS INITIAL.
CREATE OBJECT W_GRID
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
I_PARENT = CL_GUI_CONTAINER=>SCREEN0
I_APPL_EVENTS =
I_PARENTDBG =
I_APPLOGPARENT =
I_GRAPHICSPARENT =
I_NAME =
I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. " IF SY-SUBRC <> 0
CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT = W_VARIANT
I_SAVE = 'A'
I_DEFAULT = 'X'
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = T_OUTTAB
IT_FIELDCATALOG = T_FIELDCAT
IT_SORT =
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. " IF SY-SUBRC <> 0.
ENDIF. " IF W_GRID IS INITIAL
CREATE OBJECT W_EVENT_CLICK.
SET HANDLER W_EVENT_CLICK->HANDLE_HOTSPOT_CLICK FOR W_GRID.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
PAI Event
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form PREPARE_FIELD_CATALOG
Subroutine to build the Field catalog
<--P_T_FIELDCAT Field Catalog Table
FORM PREPARE_FIELD_CATALOG CHANGING PT_FIELDCAT TYPE LVC_T_FCAT .
DATA LS_FCAT TYPE LVC_S_FCAT.
Purchasing group...
LS_FCAT-FIELDNAME = 'EKGRP'.
LS_FCAT-REF_TABLE = 'EKKO'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Purchasing Document Number...
LS_FCAT-FIELDNAME = 'EBELN'.
LS_FCAT-REF_TABLE = 'EKKO' .
LS_FCAT-EMPHASIZE = 'C411'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
LS_FCAT-HOTSPOT = 'X'.
APPEND LS_FCAT TO PT_FIELDCAT .
CLEAR LS_FCAT .
Name of Person who Created the Object...
LS_FCAT-FIELDNAME = 'ERNAM'.
LS_FCAT-REF_TABLE = 'EKKO'.
LS_FCAT-OUTPUTLEN = '15' .
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Purchasing Document Date...
LS_FCAT-FIELDNAME = 'BEDAT'.
LS_FCAT-REF_TABLE = 'EKKO'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Vendor's account number...
LS_FCAT-FIELDNAME = 'LIFNR'.
LS_FCAT-REF_TABLE = 'EKKO'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Account Number of Vendor or Creditor...
LS_FCAT-FIELDNAME = 'NAME1'.
LS_FCAT-REF_TABLE = 'LFA1'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
LS_FCAT-COLTEXT = 'Vendor Name'(001).
LS_FCAT-SELTEXT = 'Vendor Name'(001).
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Creation date of the change document...
LS_FCAT-FIELDNAME = 'UDATE'.
LS_FCAT-REF_TABLE = 'CDHDR'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
LS_FCAT-COLTEXT = 'Change Date'(002).
LS_FCAT-SELTEXT = 'Change Date'(002).
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
User name of the person responsible in change document...
LS_FCAT-FIELDNAME = 'USERNAME'.
LS_FCAT-REF_TABLE = 'CDHDR'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '10'.
LS_FCAT-COLTEXT = 'Modified by'(003).
LS_FCAT-SELTEXT = 'Modified by'(003).
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Short Text Describing R/3 Repository Objects...
LS_FCAT-FIELDNAME = 'DDTEXT'.
LS_FCAT-REF_TABLE = 'DD04T'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '15'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
Old contents of changed field...
LS_FCAT-FIELDNAME = 'VALUE_OLD'.
LS_FCAT-REF_TABLE = 'CDPOS'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '12'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
New contents of changed field...
LS_FCAT-FIELDNAME = 'VALUE_NEW'.
LS_FCAT-REF_TABLE = 'CDPOS'.
LS_FCAT-INTTYPE = 'C'.
LS_FCAT-OUTPUTLEN = '12'.
APPEND LS_FCAT TO PT_FIELDCAT.
CLEAR LS_FCAT.
ENDFORM. " PREPARE_FIELD_CATALOG
*& Form SELECT_PO
Subroutine to select all the Purchase Orders
There are no interface parameters to be passed to this subroutine.
FORM SELECT_PO .
SELECT EBELN " Purchasing Document Number
ERNAM " Name of Person who Created
" the Object
LIFNR " Vendor's account number
EKGRP " Purchasing group
BEDAT " Purchasing Document Date
FROM EKKO
PACKAGE SIZE 10000
APPENDING TABLE T_EBELN
WHERE EBELN IN S_EBELN
AND BEDAT IN S_BEDAT.
ENDSELECT.
IF SY-SUBRC NE 0.
W_FLAG = 1.
MESSAGE S401(M8).
ENDIF. " IF SY-SUBRC NE 0
ENDFORM. " SELECT_PO
*& Form SELECT_OBJ_ID
Subroutine to select Object ID
There are no interface parameters to be passed to this subroutine.
FORM SELECT_OBJ_ID .
IF NOT T_EBELN IS INITIAL.
SELECT OBJECTCLAS " Object Class
OBJECTID " Object value
CHANGENR " Document change number
USERNAME " User name
UDATE " Creation date
FROM CDHDR
INTO TABLE T_CDHDR
FOR ALL ENTRIES IN T_EBELN
WHERE OBJECTID EQ T_EBELN-EBELN
AND UDATE IN S_UDATE
AND TCODE IN ('ME21N','ME22N','ME23N').
ENDSELECT.
IF SY-SUBRC NE 0.
W_FLAG = 1.
MESSAGE S833(M8) WITH 'Header Not Found'(031).
ENDIF. " IF SY-SUBRC NE 0.
ENDIF. " IF NOT T_EBELN IS INITIAL
ENDFORM. " SELECT_OBJ_ID
*& Form SELECT_CHANGED_VALUE
Subroutine to select Changed Values
There are no interface parameters to be passed to this subroutine.
FORM SELECT_CHANGED_VALUE .
IF NOT T_CDHDR IS INITIAL.
SELECT OBJECTCLAS " Object class
OBJECTID " Object value
CHANGENR " Document change number
TABNAME " Table Name
FNAME " Field Name
VALUE_NEW " New contents of changed field
VALUE_OLD " Old contents of changed field
FROM CDPOS
PACKAGE SIZE 10000
APPENDING TABLE T_CDPOS
FOR ALL ENTRIES IN T_CDHDR
WHERE OBJECTCLAS EQ T_CDHDR-OBJECTCLAS
AND OBJECTID EQ T_CDHDR-OBJECTID
AND CHANGENR EQ T_CDHDR-CHANGENR.
ENDSELECT.
IF SY-SUBRC NE 0.
W_FLAG = 1.
MESSAGE S833(M8) WITH 'Item Not Found'(032).
ENDIF. " IF SY-SUBRC NE 0.
ENDIF. " IF NOT T_CDHDR IS INITIAL
T_CDPOS_TEMP[] = T_CDPOS[].
ENDFORM. " SELECT_CHANGED_VALUE
*& Form SELECT_PUR_DOC
Subroutine to select Purchase Order Details
There are no interface parameters to be passed to this subroutine.
FORM SELECT_PUR_DOC .
IF NOT T_CDPOS IS INITIAL.
SORT T_EBELN BY EBELN.
LOOP AT T_CDPOS INTO FS_CDPOS.
READ TABLE T_EBELN INTO FS_EBELN WITH KEY EBELN =
FS_CDPOS-OBJECTID BINARY SEARCH.
IF SY-SUBRC NE 0.
DELETE TABLE T_EBELN FROM FS_EBELN.
ENDIF. " IF SY-SUBRC NE 0.
ENDLOOP. " LOOP AT T_CDPOS...
LOOP AT T_EBELN INTO FS_EBELN.
MOVE FS_EBELN-EBELN TO FS_EKKO-EBELN.
MOVE FS_EBELN-ERNAM TO FS_EKKO-ERNAM.
MOVE FS_EBELN-LIFNR TO FS_EKKO-LIFNR.
MOVE FS_EBELN-EKGRP TO FS_EKKO-EKGRP.
MOVE FS_EBELN-BEDAT TO FS_EKKO-BEDAT.
APPEND FS_EKKO TO T_EKKO.
ENDLOOP. " LOOP AT T_EBELN...
T_EKKO_TEMP[] = T_EKKO[].
ENDIF. " IF NOT T_CDPOS IS INITIAL
ENDFORM. " SELECT_PUR_DOC
*& Form SELECT_VENDOR
Subroutine to select Vendor details
There are no interface parameters to be passed to this subroutine.
FORM SELECT_VENDOR .
IF NOT T_EKKO IS INITIAL.
SORT T_EKKO_TEMP BY LIFNR.
DELETE ADJACENT DUPLICATES FROM T_EKKO_TEMP COMPARING LIFNR.
SELECT LIFNR " Account Number of Vendor or
" Creditor
NAME1 " Name 1
FROM LFA1
INTO TABLE T_LFA1
FOR ALL ENTRIES IN T_EKKO_TEMP
WHERE LIFNR EQ T_EKKO_TEMP-LIFNR.
IF SY-SUBRC NE 0.
MESSAGE S002(M8) WITH 'Master Details'(033).
ENDIF. " IF SY-SUBRC NE 0.
ENDIF. " IF NOT T_EKKO IS INITIAL
ENDFORM. " SELECT_VENDOR
*& Form DESCRIPTION
Subroutine to get the description
There are no interface parameters to be passed to this subroutine.
FORM DESCRIPTION .
IF NOT T_CDPOS IS INITIAL.
SORT T_CDPOS_TEMP BY TABNAME FNAME.
DELETE ADJACENT DUPLICATES FROM T_CDPOS_TEMP COMPARING TABNAME FNAME
SELECT TABNAME " Table Name
FIELDNAME " Field Name
ROLLNAME " Data element
FROM DD03L
INTO TABLE T_DATAELE
FOR ALL ENTRIES IN T_CDPOS_TEMP
WHERE TABNAME EQ T_CDPOS_TEMP-TABNAME
AND FIELDNAME EQ T_CDPOS_TEMP-FNAME.
IF NOT T_DATAELE IS INITIAL.
T_DATAELE_TEMP[] = T_DATAELE[].
SORT T_DATAELE_TEMP BY ROLLNAME.
DELETE ADJACENT DUPLICATES FROM T_DATAELE_TEMP COMPARING ROLLNAME.
SELECT ROLLNAME " Data element
DDTEXT " Short Text Describing R/3
" Repository Objects
FROM DD04T
INTO TABLE T_TEXT
FOR ALL ENTRIES IN T_DATAELE_TEMP
WHERE ROLLNAME EQ T_DATAELE_TEMP-ROLLNAME
AND DDLANGUAGE EQ SY-LANGU.
IF SY-SUBRC NE 0.
EXIT.
ENDIF. " IF SY-SUBRC NE 0.
ENDIF. " IF NOT T_DATAELE IS INITIAL.
ENDIF. " IF NOT T_CDPOS IS INITIAL.
ENDFORM. " DESCRIPTION
*& Form FILL_OUTTAB
Subroutine to populate the Outtab
There are no interface parameters to be passed to this subroutine.
FORM FILL_OUTTAB .
SORT T_CDHDR BY OBJECTCLAS OBJECTID CHANGENR.
SORT T_EKKO BY EBELN.
SORT T_LFA1 BY LIFNR.
SORT T_DATAELE BY TABNAME FIELDNAME.
SORT T_TEXT BY ROLLNAME.
LOOP AT T_CDPOS INTO FS_CDPOS.
READ TABLE T_CDHDR INTO FS_CDHDR WITH KEY
OBJECTCLAS = FS_CDPOS-OBJECTCLAS
OBJECTID = FS_CDPOS-OBJECTID
CHANGENR = FS_CDPOS-CHANGENR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE FS_CDHDR-USERNAME TO FS_OUTTAB-USERNAME.
MOVE FS_CDHDR-UDATE TO FS_OUTTAB-UDATE.
READ TABLE T_EKKO INTO FS_EKKO WITH KEY
EBELN = FS_CDHDR-OBJECTID
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE FS_EKKO-EBELN TO FS_OUTTAB-EBELN.
MOVE FS_EKKO-ERNAM TO FS_OUTTAB-ERNAM.
MOVE FS_EKKO-LIFNR TO FS_OUTTAB-LIFNR.
MOVE FS_EKKO-EKGRP TO FS_OUTTAB-EKGRP.
MOVE FS_EKKO-BEDAT TO FS_OUTTAB-BEDAT.
READ TABLE T_LFA1 INTO FS_LFA1 WITH KEY
LIFNR = FS_EKKO-LIFNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE FS_LFA1-NAME1 TO FS_OUTTAB-NAME1.
ENDIF. " IF SY-SUBRC EQ 0.
ENDIF. " IF SY-SUBRC EQ 0.
ENDIF. " IF SY-SUBRC EQ 0.
MOVE FS_CDPOS-VALUE_NEW TO FS_OUTTAB-VALUE_NEW.
MOVE FS_CDPOS-VALUE_OLD TO FS_OUTTAB-VALUE_OLD.
READ TABLE T_DATAELE INTO FS_DATAELE WITH KEY
TABNAME = FS_CDPOS-TABNAME
FIELDNAME = FS_CDPOS-FNAME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
READ TABLE T_TEXT INTO FS_TEXT WITH KEY
ROLLNAME = FS_DATAELE-ROLLNAME
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE FS_TEXT-DDTEXT TO FS_OUTTAB-DDTEXT.
ENDIF. " IF SY-SUBRC EQ 0.
ENDIF. " IF SY-SUBRC EQ 0.
APPEND FS_OUTTAB TO T_OUTTAB.
CLEAR FS_OUTTAB.
ENDLOOP.
ENDFORM. " FILL_OUTTAB
*& Form GET_CELL_INFO
Subroutine to get the Cell Information
--> W_VALUE Holds the value of Hotspot clicked
FORM GET_CELL_INFO .
CALL METHOD W_GRID->GET_CURRENT_CELL
IMPORTING
E_ROW =
E_VALUE = W_VALUE
E_COL =
ES_ROW_ID =
ES_COL_ID =
ES_ROW_NO =
ENDFORM. " GET_CELL_INFO
*& Form VALIDATE_PD_NUM
Subroutine to validate Purchase Document Number
There are no interface parameters to be passed to this subroutine.
FORM VALIDATE_PD_NUM .
IF NOT S_EBELN[] IS INITIAL.
SELECT EBELN " Purchase Document Number
FROM EKKO
INTO W_EBELN
UP TO 1 ROWS
WHERE EBELN IN S_EBELN.
ENDSELECT.
IF SY-SUBRC NE 0.
CLEAR SSCRFIELDS-UCOMM.
MESSAGE E717(M8).
ENDIF. " IF SY-SUBRC NE 0
ENDIF. " IF NOT S_EBELN[]...
ENDFORM. " VALIDATE_PD_NUM
*& Form VALIDATE_VEN_NUM
Subroutine to validate Vendor Number
There are no interface parameters to be passed to this subroutine.
FORM VALIDATE_VEN_NUM .
IF NOT S_LIFNR[] IS INITIAL.
SELECT LIFNR " Vendor Number
FROM LFA1
INTO W_LIFNR
UP TO 1 ROWS
WHERE LIFNR IN S_LIFNR.
ENDSELECT.
IF SY-SUBRC NE 0.
CLEAR SSCRFIELDS-UCOMM.
MESSAGE E002(M8) WITH W_SPACE.
ENDIF. " IF SY-SUBRC NE 0
ENDIF. " IF NOT S_LIFNR[]...
ENDFORM. " VALIDATE_VEN_NUM
*& Form VALIDATE_PUR_GRP
Subroutine to validate the Purchase Group
There are no interface parameters to be passed to this subroutine.
FORM VALIDATE_PUR_GRP .
IF NOT S_EKGRP[] IS INITIAL.
SELECT EKGRP " Purchase Group
FROM T024
INTO W_EKGRP
UP TO 1 ROWS
WHERE EKGRP IN S_EKGRP.
ENDSELECT.
IF SY-SUBRC NE 0.
CLEAR SSCRFIELDS-UCOMM.
MESSAGE E622(M8) WITH W_SPACE.
ENDIF. " IF SY-SUBRC NE 0
ENDIF. " IF NOT S_EKFRP[]...
ENDFORM. " VALIDATE_PUR_GRP
*& Form FILL_VARIANT
Subroutine to fill the Variant Structure
There are no interface parameters to be passed to this subroutine
FORM FILL_VARIANT .
Filling the Variant structure
W_VARIANT-REPORT = SY-REPID.
W_VARIANT-USERNAME = SY-UNAME.
ENDFORM. " FILL_VARIANT
<b>Reward if usefull</b> -
frnzz,
Is there a standard report to find out the headcount in an organisation?
Useful anwers will be rewarded.
thanx in advance
ViggyHi,
There are only following Std reports exist:
S_AHR_61016497 Existing Jobs
S_AHR_61016502 Existing Positions
S_AHR_61016503 Staff assignments.
See the Manning Level sample report:
report zporgr0040
line-size 108
line-count 60(1)
no standard page heading
message-id zndc.
Database Tables
tables: hrp1001, " HR Master Record (Orgn. Assignment)
pa0002, " Personal Data
t528t, " Position Texts
t527x, " Org Unit Text
t528b, " Positions
csks, " Cost Center
cskt. " Cost Center Texts
Declaration of Internal Tables
Internal Table for Orgn Object Data HRP1000
data: begin of obj_tab occurs 0,
otype like hrp1000-otype, " Object Type
objid like hrp1000-objid, " Object ID
plvar like hrp1000-plvar, " Plan Version
istat like hrp1000-istat, " Planning Status
begda like hrp1000-begda, " Begin date
endda like hrp1000-endda, " End date
end of obj_tab.
Internal Table for Active Employees data PA0000
data: begin of stat_tab occurs 0,
pernr like pa0000-pernr, " Object Type
begda like pa0000-begda, " Begin date
endda like pa0000-endda, " End date
stat2 like pa0000-stat2, " Employment Status
end of stat_tab.
Internal Table for Actual Orgn Assignment Data PA0001
data: begin of act_tab occurs 0,
pernr like pa0001-pernr, " Object Type
begda like pa0001-begda, " Begin date
endda like pa0001-endda, " End date
kostl like pa0001-kostl, " Cost Center
orgeh like pa0001-orgeh, " Org Unit
plans like pa0001-plans, " Position
natio like pa0002-natio, " Nationality
end of act_tab.
Internal Table for Orgn Data HRP1001
data: begin of org_tab occurs 0,
otype like hrp1001-otype, " Object Type
objid like hrp1001-objid, " Object ID
plvar like hrp1001-plvar, " Plan Version
istat like hrp1001-istat, " Planning Status
begda like hrp1001-begda, " Begin date
endda like hrp1001-endda, " End date
subty like hrp1001-subty, " Sub Type
sclas like hrp1001-sclas, " Type of Related Object
sobid like hrp1001-sobid, " Id of Related Object
kostl like pa0001-kostl, " Cost Center
plstx like t528t-plstx, " Position Text
orgtx like t527x-orgtx, " Org Unit Text
end of org_tab.
Internal Table for Position Calculations
data: begin of org1_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
objid like hrp1001-objid, " Object ID
end of org1_tab.
Internal Table for Position Calculations
data: begin of org2_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
count type i, " No of Positions
end of org2_tab.
Internal Table for Actual Manpower Calculations
data: begin of act1_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
natio like pa0002-natio, " Nationality
plans like pa0001-plans, " Position
end of act1_tab.
Internal Table for Actual Manpower Calculations(UAE)
data: begin of act2_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
natio like pa0002-natio, " Nationality
end of act2_tab.
Internal Table for Actual Manpower Calculations(Others)
data: begin of act3_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
natio like pa0002-natio, " Nationality
end of act3_tab.
Internal Table for Actual Manpower Calculations(UAE)
data: begin of act4_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
count1 type i, " No of Positions(UAE)
end of act4_tab.
Internal Table for Actual Manpower Calculations(OTHERS)
data: begin of act5_tab occurs 0,
kostl like pa0001-kostl, " Cost Center
count2 type i, " No of Positions(Others)
end of act5_tab.
Internal Table for Vaccancies Data
data: begin of vac_tab occurs 0,
plvar like hrp1007-plvar, " Plan Version
otype like hrp1007-otype, " Object Type
objid like hrp1007-objid, " Object ID
istat like hrp1007-istat, " Planning Status
begda like hrp1007-begda, " Begin date
endda like hrp1007-endda, " End date
vacan like hrp1007-vacan, " Vacancy Indicator
status like hrp1007-status, " Status of Vacancy
end of vac_tab.
Internal Table to store the Report Output data
data : begin of rep_tab occurs 0 ,
kostl(10) type n, " Cost Cente
plans like pa0001-plans, " Position
vacan like hrp1007-vacan, " Vacancy Indicator
status like hrp1007-status, " Status of Vacancy
plstx like t528t-plstx, " Position Text
orgtx like t527x-orgtx, " Org Unit Text
end of rep_tab.
Internal Table to store the Report Output data
data : begin of rep1_tab occurs 0 ,
kostl(10) type n, " Cost Cente
cnt type i, " No of Vacancies
end of rep1_tab.
Internal Table to store the Report Output data
data : begin of rep2_tab occurs 0 ,
kostl(10) type n, " Cost Cente
app_no type i, " Approved
nat_no type i, " National
exp_no type i, " Expatriate
tot_no type i, " Total
vac_no type i, " Vacancies
end of rep2_tab.
Declaration of Variables
data: v_sobid like hrp1001-sobid, " Object Id
v_sobid1 like hrp1001-sobid, " Object Id
v_sobid2 like hrp1001-sobid, " Object Id
v_sclas like hrp1001-sclas, " Related Obj Type
v_subty like hrp1001-subty, " Related Object Id
v_otype like hrp1007-otype, " Object Type
v_str(9) type c, " Text
v_str1(10) type c, " Text
v_cnt like sy-tabix. " Table Index
Declaration of Constants
constants : c_x type c value 'X', " Flag
c_stat1 like pa0000-stat2 value '3', " Emp Status
c_plan like hrp1001-plvar value '01', " Plan Version
c_name like hrp1000-uname value 'SAP', " Uname
c_uae like pa0002-natio value 'AE', " Country
c_type like hrp1007-otype value 'O', " Object Type
c_otype like hrp1007-otype value 'S', " Object Type
c_stat like hrp1007-status value '0', " Status
c_pstat like hrp1007-istat value '1', " Plang Status
c_sclas like hrp1001-sclas value 'K', " Rel. Obj Type
c_subty like hrp1001-subty value 'A002', " Related ObjId
c_subty2 like hrp1001-subty value 'A003', " Related ObjId
c_sclas1 like hrp1001-sclas value 'O', " Rel.Obj Type
c_subty1 like hrp1001-subty value 'A011', " Rel.Object Id
c_kokrs like coej-kokrs value '1000'. " Controlling Area
Selection Screen
selection-screen begin of block b1 with frame title text-001.
parameters :
p_date like pa0001-begda obligatory default sy-datum. " Date
select-options :
s_kostl for csks-kostl, " Cost Center
s_plans for t528b-plans. " Position ID
selection-screen end of block b1.
At selection-screen
at selection-screen.
Validate the Selection Screen fields
perform validate_screen.
Start-of-Selection
start-of-selection.
Get the Orgn data from database Table HRP1001
perform get_org_data.
Get the Actual Manpower from PA0001
perform get_act_data.
Get the Vaccancies data from database Table HRP1007
perform get_vac_data.
Append the data into final Internal Table
perform append_data.
Top-of-page
top-of-page.
Write the Report and Column Headings
perform top_of_page.
End-of-Page
end-of-page.
write /1(108) sy-uline.
End-of-Selection
end-of-selection.
Display the Output Report.
perform display_report.
Form-Routines
*& Form validate_screen
Validation of selection Screen fields
form validate_screen.
Validation of Position ID
clear t528b.
if not s_plans[] is initial.
select single plans
into t528b-plans
from t528b
where plans in s_plans.
if sy-subrc <> 0.
message e999 with 'Invalid Position ID'(009).
endif.
endif.
Validation of Cost Center
clear csks.
if not s_kostl[] is initial.
select single kostl
into csks-kostl
from csks
where kostl in s_kostl.
if sy-subrc <> 0.
message e999 with 'Invalid Cost Center'(008).
endif.
endif.
endform. "validate_screen
*& Form get_org_data
Get the Orgn Data from Database Table HRP1001
form get_org_data.
v_str = 'Developee'(002).
v_str1 = 'Deployment'(003).
Select All the Positions from HRP1000
select otype " Object Type
objid " Object ID
plvar " Plan Version
istat " Planning Status
begda " Begin date
endda " End date
into table obj_tab
from hrp1000
where otype = c_otype and
plvar = c_plan and
istat = c_pstat and
begda le p_date and
endda ge p_date and
objid in s_plans and
uname ne c_name.
sort obj_tab by otype objid.
Get the Orgn and Cost Center for all the above Positions
if not obj_tab[] is initial.
select otype " Object Type
objid " Object ID
plvar " Plan Version
istat " Planning Status
begda " Begin date
endda " End date
subty " Sub Type
sclas " Type of Related Object
sobid " Id of Related Object
into table org_tab
from hrp1001
for all entries in obj_tab
where otype = c_otype and
plvar = c_plan and
istat = c_pstat and
begda le p_date and
endda ge p_date and
sclas eq c_sclas1 and
subty eq c_subty2 and
objid eq obj_tab-objid.
endif.
sort org_tab by otype objid.
Get the Cost Center
loop at org_tab.
v_otype = c_otype. " S
v_sclas = c_sclas. " K
v_subty = c_subty1. " A011
v_sobid = org_tab-objid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc = 0.
org_tab-kostl = hrp1001-sobid+0(10).
else.
v_otype = c_otype. " S
v_sclas = c_sclas1. " O
v_subty = c_subty2. " A003
v_sobid = org_tab-objid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc = 0.
v_otype = c_type. " O
v_sclas = c_sclas. " K
v_subty = c_subty1. " A011
v_sobid1 = v_sobid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc <> 0.
v_otype = c_type. " O
v_sclas = c_sclas1. " O
v_subty = c_subty. " A002
v_sobid = v_sobid1.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc = 0.
v_otype = c_type. " O
v_sclas = c_sclas. " K
v_subty = c_subty1. " A011
v_sobid2 = v_sobid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc <> 0.
v_otype = c_type. " O
v_sclas = c_sclas1. " O
v_subty = c_subty. " A002
v_sobid = v_sobid2.
perform get_org using v_otype v_sclas v_subty
v_sobid.
else.
org_tab-kostl = hrp1001-sobid+0(10).
endif.
endif.
else.
org_tab-kostl = hrp1001-sobid+0(10).
endif.
else.
v_otype = c_otype. " S
v_sclas = c_otype. " S
v_subty = c_subty. " A002
v_sobid = org_tab-objid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc = 0.
v_otype = c_otype. " S
v_sclas = c_sclas. " K
v_subty = c_subty1. " A011
v_sobid1 = v_sobid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc <> 0.
v_otype = c_otype. " S
v_sclas = c_sclas1. " O
v_subty = c_subty2. " A003
v_sobid = v_sobid1.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc = 0.
v_otype = c_type. " O
v_sclas = c_sclas. " K
v_subty = c_subty1. " A011
v_sobid2 = v_sobid.
perform get_org using v_otype v_sclas v_subty
v_sobid.
if sy-subrc <> 0.
v_otype = c_type. " O
v_sclas = c_sclas1. " O
v_subty = c_subty. " A002
v_sobid = v_sobid2.
perform get_org using v_otype v_sclas v_subty
v_sobid.
else.
org_tab-kostl = hrp1001-sobid+0(10).
endif.
endif.
else.
org_tab-kostl = hrp1001-sobid+0(10).
endif.
endif.
endif.
endif.
Get the Position Text
clear t528t.
select single plstx from t528t into t528t-plstx
where sprsl = sy-langu and
otype = c_otype and
plans = org_tab-objid.
org_tab-plstx = t528t-plstx.
Get the Org Unit Text
clear t527x.
select single orgtx from t527x into t527x-orgtx
where sprsl = sy-langu and
orgeh = org_tab-sobid+0(8).
org_tab-orgtx = t527x-orgtx.
modify org_tab index sy-tabix.
clear v_sobid.
endloop.
sort org_tab by otype objid.
Calculate the Approved No of Positions
loop at org_tab.
if org_tab-kostl in s_kostl.
move-corresponding org_tab to org1_tab.
append org1_tab.
clear org1_tab.
endif.
endloop.
sort org1_tab by kostl objid.
clear v_cnt.
loop at org1_tab.
at end of kostl.
sy-tabix = sy-tabix - v_cnt.
org2_tab-kostl = org1_tab-kostl.
org2_tab-count = sy-tabix.
v_cnt = v_cnt + sy-tabix.
append org2_tab.
clear:org2_tab.
endat.
endloop.
sort org2_tab by kostl.
endform. "get_org_data
*& Form get_act_data
Get the Actual Manpower Data from Database Table PA0001
form get_act_data.
clear : stat_tab, act_tab.
refresh: stat_tab, act_tab.
Get all the Active Employees
select pernr " Object Type
begda " Begin date
endda " End date
stat2 " Emp Status
into table stat_tab
from pa0000
where stat2 eq c_stat1 and
begda le p_date and
endda ge p_date.
sort act_tab by pernr.
if not stat_tab[] is initial.
select pernr " Object Type
begda " Begin date
endda " End date
kostl " Cost Center
orgeh " Org Unit
plans " Position
into table act_tab
from pa0001
for all entries in stat_tab
where pernr eq stat_tab-pernr and
kostl in s_kostl and
plans in s_plans and
persg eq '1' and
begda le p_date and
endda ge p_date.
endif.
sort act_tab by pernr.
loop at act_tab.
move-corresponding act_tab to act1_tab.
clear pa0002-natio.
select single natio into pa0002-natio from pa0002
where pernr = act_tab-pernr.
if sy-subrc = 0.
act1_tab-natio = pa0002-natio.
endif.
append act1_tab.
clear act1_tab.
endloop.
sort act1_tab by kostl natio.
Calculate the Local and Expatriate Manpower
loop at act1_tab.
if act1_tab-natio = c_uae.
act2_tab-kostl = act1_tab-kostl.
act2_tab-natio = act1_tab-natio.
else.
act3_tab-kostl = act1_tab-kostl.
act3_tab-natio = act1_tab-natio.
endif.
append: act2_tab, act3_tab.
clear : act2_tab,act3_tab.
endloop.
sort act2_tab by kostl.
sort act3_tab by kostl.
Actual UAE Manpower
clear v_cnt.
loop at act2_tab.
at end of kostl.
sy-tabix = sy-tabix - v_cnt.
act4_tab-kostl = act2_tab-kostl.
act4_tab-count1 = sy-tabix.
v_cnt = v_cnt + sy-tabix.
append act4_tab.
clear:act4_tab.
endat.
endloop.
sort act4_tab by kostl.
Other Countries
clear v_cnt.
loop at act3_tab.
at end of kostl.
sy-tabix = sy-tabix - v_cnt.
act5_tab-kostl = act3_tab-kostl.
act5_tab-count2 = sy-tabix.
v_cnt = v_cnt + sy-tabix.
append act5_tab.
clear:act5_tab.
endat.
endloop.
sort act5_tab by kostl.
endform. "get_act_data
*& Form get_org
Get the Cost Center from Parent Org Id
form get_org using p_v_otype p_v_sclas p_v_subty p_v_sobid.
clear hrp1001.
select single * from hrp1001
where otype = p_v_otype and
plvar = c_plan and
istat = c_pstat and
begda le p_date and
endda ge p_date and
sclas eq p_v_sclas and
subty eq p_v_subty and
objid eq p_v_sobid.
v_sobid = hrp1001-sobid+0(8).
endform. " get_org
*& Form get_vac_data
Get the Vaccancies Data from Database Table HRP1007
form get_vac_data.
if not org_tab[] is initial.
select plvar " Plan Version
otype " Object Type
objid " Object ID
istat " Planning Status
begda " Begin date
endda " End date
vacan " Vacancy Indicator
status " Status of Vacancy
into table vac_tab
from hrp1007
for all entries in org_tab
where plvar = c_plan and
otype = c_otype and
istat eq c_pstat and
objid = org_tab-objid and
begda le p_date and
endda ge p_date and
vacan eq c_x and
status eq c_stat.
endif.
sort vac_tab by plvar otype objid.
Get the HR data into the rep_tab Internal Table
loop at vac_tab.
rep_tab-plans = vac_tab-objid.
rep_tab-vacan = vac_tab-vacan.
rep_tab-status = vac_tab-status.
read table org_tab with key objid = vac_tab-objid.
if sy-subrc = 0.
rep_tab-kostl = org_tab-kostl.
rep_tab-plstx = org_tab-plstx.
rep_tab-orgtx = org_tab-orgtx.
endif.
append rep_tab.
clear rep_tab.
endloop.
loop at rep_tab.
if not rep_tab-kostl in s_kostl.
delete rep_tab index sy-tabix.
endif.
endloop.
sort rep_tab by kostl plans.
delete rep_tab where plstx cs v_str.
delete rep_tab where orgtx cs v_str1.
Calculate the Count of Vacancies in each Division
clear v_cnt.
loop at rep_tab.
at end of kostl.
sy-tabix = sy-tabix - v_cnt.
rep1_tab-kostl = rep_tab-kostl.
rep1_tab-cnt = sy-tabix.
v_cnt = v_cnt + sy-tabix.
append rep1_tab.
clear:rep1_tab.
endat.
endloop.
sort rep1_tab by kostl.
endform. "get_vac_data
*& Form append_data
Append the data into final Internal Table
form append_data.
loop at org2_tab.
rep2_tab-kostl = org2_tab-kostl.
rep2_tab-app_no = org2_tab-count.
read table act4_tab with key kostl = org2_tab-kostl
binary search.
if sy-subrc = 0.
rep2_tab-nat_no = act4_tab-count1.
endif.
read table act5_tab with key kostl = org2_tab-kostl
binary search.
if sy-subrc = 0.
rep2_tab-exp_no = act5_tab-count2.
endif.
read table rep1_tab with key kostl = org2_tab-kostl
binary search.
if sy-subrc = 0.
rep2_tab-vac_no = rep1_tab-cnt.
endif.
rep2_tab-tot_no = rep2_tab-nat_no + rep2_tab-exp_no.
append rep2_tab.
clear rep2_tab.
endloop.
sort rep2_tab by kostl.
endform. "append_data
*& Form top_of_page
Write the Report and Column Headings
form top_of_page.
skip.
format color col_heading on.
write: /1(108) 'NATIONAL DRILLING COMPANY'(010) centered,
/1(108) 'Summary of Manning Level Report'(011) centered.
format color off.
skip.
write: /2 'Key Date :'(013), p_date,
75 'Report Run Date:'(041), sy-datum.
if not s_kostl[] is initial.
if s_kostl-high is initial.
write: /2 'Cost Center :'(023), s_kostl-low,
75 'Time :'(042), sy-uzeit.
else.
write: /2 'Cost Center From:'(024), s_kostl-low+7(3),
'To'(022), s_kostl-high,
75 'Time :'(042), sy-uzeit.
endif.
else.
write: /75 'Time :'(042), sy-uzeit.
endif.
if not s_plans[] is initial.
if s_plans-high is initial.
write: /2 'Position Id :'(019), s_plans-low,
75 'User :'(043), sy-uname.
else.
write: /2 'Position Id From:'(021), s_plans-low,
'To'(022), s_plans-high,
75 'User :'(043), sy-uname.
endif.
else.
write: /75 'User :'(043), sy-uname.
endif.
write: /75 'Page No :'(044), sy-pagno.
skip.
write /1(108) sy-uline.
format color col_heading.
write:/1 sy-vline,
12 sy-vline, 53 sy-vline,
64 sy-vline, 65(32) 'Actual'(018) centered,
97 sy-vline,108 sy-vline.
write:/1 sy-vline, 2(10) 'CostCenter'(014),
12 sy-vline, 13(40) 'Description'(026) centered,
53 sy-vline, 54(10) 'Approved'(025) centered,
64 sy-vline, 65(32) sy-uline,
97 sy-vline, 98(10) 'Vacancies'(017),
108 sy-vline.
write:/1 sy-vline,
12 sy-vline, 53 sy-vline,
64 sy-vline, 65(10) 'National'(015) centered,
75 sy-vline, 76(10) 'Expatriate'(020) centered,
86 sy-vline, 87(10) 'Total'(016) centered,
97 sy-vline,108 sy-vline.
format color off.
write /1(108) sy-uline.
endform. "top_of_page
*& Form Display_report
Write the Report Output
form display_report.
if rep2_tab[] is initial.
message i999 with
'No Data found for the entered Selection'(035).
else.
loop at rep2_tab.
Authorization Check for the Orgn and Cost Centers
perform auth_check_org.
if sy-subrc = 0.
clear cskt.
select single ltext into cskt-ltext from cskt
where spras = sy-langu and
kokrs = c_kokrs and
kostl = rep2_tab-kostl.
format color col_normal.
write: /1 sy-vline, 2(10) rep2_tab-kostl+7(3),
12 sy-vline, 13(40) cskt-ltext,
53 sy-vline, 54(10) rep2_tab-app_no,
64 sy-vline, 65(10) rep2_tab-nat_no,
75 sy-vline, 76(10) rep2_tab-exp_no,
86 sy-vline, 87(10) rep2_tab-tot_no,
97 sy-vline, 98(10) rep2_tab-vac_no,
108 sy-vline.
format color off.
at last.
sum.
format color 3.
write /1(108) sy-uline.
write: /1 sy-vline, 2(10) 'Total'(027),
12 sy-vline,
53 sy-vline, 54(10) rep2_tab-app_no,
64 sy-vline, 65(10) rep2_tab-nat_no,
75 sy-vline, 76(10) rep2_tab-exp_no,
86 sy-vline, 87(10) rep2_tab-tot_no,
97 sy-vline, 98(10) rep2_tab-vac_no,
108 sy-vline.
format color off.
endat.
endif.
endloop.
endif.
write /1(108) sy-uline.
endform. " Display_report
*& Form auth_check_org
Authorization Check for the Orgn and Cost Center
form auth_check_org.
authority-check object 'ZNDCHROM'
id 'PLVAR' dummy
id 'OTYPE' dummy
id 'KOSTL' field rep2_tab-kostl.
endform. "auth_check_org
reward if useful
regards,
ANJI
Maybe you are looking for
-
Presentation variable is not supported in "SQL Issued"
hi, there is a presentation variable called @{ps_var} from a prompt and I have written a custom sql and typed in "SQL Issued" !http://img31.imageshack.us/img31/8673/customsql.jpg! I found that the presentation variable is not supported in "SQL Issued
-
Hi Experts, I´m with a problem in a interface FILE->XI-RFC (assynchronous). I created a file in FTP directory and configured adapter file with pool 60 sec. I´m testing in MM is OK. I´m testing in IM is OK. In SXI_MONITOR is OK. When I go to Runtime -
-
Too many payments taken for my Skype Credit
Hi I would like to know where I can report about 4 payments taken in one day eg May 23rd, 2013 for my Skype Credit account. Instead of only one payment of $40AUD being taken, there were four payments credited to my Credit Card. This should not have h
-
CD stuck in slot & computer won't start
I placed a cd in my front slotted graphite (special edition) iMac and the icon didn't appear. I attempted to manually eject with a paper clip and I heard all the whirring sounds but it would't eject. I hit restart and held the mouse key down, nothing
-
Error 6 occurred at RcvRespMsg - NI-488: I/O operation aborted.
Hi, I am getting an error while trying to Read data bytes from a previously addressed device (RcvRespMsg) with Labview 7.1. In MAX I can write data to control my Test Receiver by GPIB USB-B. I tried to run the same software I usually work with and it