Slow performance of alv report
Hi,
I have developed Invoice Register Report in ALV,
there 25 Selection Feild all multiple range , 98 coulmns & 26 database tables r used . its a very bulky report.
i did optimized coding. still it is very slow . can anybody tell me the reason or any method to improve the performance .
Regards
Fozia
Hi Fozia,
As you are dealing with huge data it will be slow, however you can take some measures to optimize timing.
1. SQL trace ST05 -
> then chose the options accordingly.. trace on once you have executed the object
then trace off, list trace..... you can find out the difference.
Use Se30 in conjunction with ST05. do a runtime analysis for the same.
Also on top tips and tricks are mentioned which shows how can you improve the performance.
I am sure that you have taken care of small nuances like number of joins not more than three, use of for all entries as much as possible. Do remove dead code from your object though will not make any huge difference.
If possible to have an EWA Early watch analysis for your production then it would be best.
Mohinder
Similar Messages
-
Slow response of ALV report for a high volume internal table
We have a requirement in which we have to display more than 5 lac records (= 500,000) in a single alv report. The internal table has 30 fields. it takes around five minutes to display the alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_callback_pf_status_set = pfstatus
it_fieldcat = it_fcat[]
i_save = 'A'
is_layout = gs_layout
is_variant = import_variant
it_events = events[]
TABLES
t_outtab = i_tab.
above is the code used to display the alv. Any change in the coding to be done to improve the performance?
Thanks in advance.
K Mohan
Edited by: Thomas Zloch on May 23, 2011 4:16 PMHi,
As Thomas said ALV is not designed to display such a huge data, any how you can limit the data in the selection screen. one more reason is if you display 5Lak records in one ALV list then if you download them to excel sheet, you can download upto 65000 records only. So limit the display not more than 60000 for a better performance.
Thanks,
Bhargav. -
Slow performance of a Report Group
Hi guys,
Is it possible to improve the performance of a report group? I haven't tried creating report painter, writer.. Should I go on the list of reports and check each in the report painter or in report writer? And what's the first thing that I should check in the exisitng report?
Points will be given...
Thanks,
MauiHi Sridhar,
Currently, the characterisitics define in the GDS of our report group are (1)Ledger, (2)Actual Period and (3)Version.
On the case you had resolved, what was the arrangement in the GDS before and when you said "All RE objects were assigned to profit center in their master data"? And what does it look like after you fixed it or how is the arrangement in the GDS?
Thanks again!
Another thing I recognized during the execution from the progress bar, it takes a minute to read the records, then 4mins to process then 4mins to read and 2 mins to process...I was wondering processing is something to do with the computation of the key figures... I didn't create the whole report group so I'm clueless with this issue.
Help me
Edited by: maui bayog on Feb 27, 2008 7:28 PM -
Hyperion 7.0 Slow Performance
We are having very slow performance with Hyperion Report 7.0 running batches and reports. Has anyone else experienced this and had any success improving the performance?
No reply needed
-
Slow performance refreshing report with multiple subreports in main report
I am using multiple subreports in my main report that appear to be slowing down the performance of the report considerably. Is there something I can do to increase performance with subreports.
Hi Brian,
Subreports are a known performance hog.
I would suggest going back to the drawing board and rethinking on the layout of the report. The best thing, of course, would be to completely get rid of the subreports by creating a single SQL statement that takes care of all the report's requirements.
Sometimes it is imperative to have subreports, in which case, you should try to make sure any selection filters from both the Main Report and the Subreport are passed back to the database.
Also, avoid using Page N of M for better performance - with or without Subreports.
-Abhilash -
Extremely slow performance in comparison to RDC-based report
Today our application uses the Crystal Reports RDC. In the last
ten years we have made good experience with Crystal Reports.
In the next few months we want to migrate our application to
JAVA.
Because the reports offer a great reuse-potential, we would like
to implement them via CR4E.
But during the first benchmark tests we made a very bad experience.
Running (Printing) in CR4E the reports needed from 20 up to 480 percent
more time in comparison to the RDC-based reports.
When using POJOs need from 25 up to 570 percent more time.
When printing the reports from within the CR2008 designer there is
no performance difference.
The reports have from 4 to 82 pages.
We didn´t expect such a huge performance difference.
Is CR4E in general slower than the RDC-based Crystal Reports?
Or are there any parameters in CR4E in addition to the RDC-based
solution for tuning the reports?
Edited by: Rainer Graedtke on Nov 9, 2009 2:44 PMHi Ted,
thanks for the fast response.
Is there another "datasource option" with better performance than POJO?
In the upcoming JAVA-version of our application we would like to "feed"
our reports from memory, not from the underlying database.
One more statement concerning our performance problem:
In our reports we make extensive use of subreports.
Each report has the minimum of two subreports, one for the pageheader,
one for the pagefooter.
This is necessary because we have changing headers and footers
depending on the contents of the details.
The report with the largest performance loss contains 29 subreports!
RDC-based it prints in 10 seconds, Java-based we need over 50 seconds.
Is there any suggestion how to improve the performance of our reports in
JAVA/CR4E other than reducing the number of subreports?
Another question concerning the keycode-problem:
We have designed the reports in the CR2008 Designer and we want to run
them under CR4E. Is this a valid approach?
Sincerely Rainer
Edited by: Rainer Graedtke on Nov 10, 2009 10:51 AM -
ALV Report performance & export problem
Hi,
We have developed an complex ALV report which accesses the data from FI Tables like BKPF, BSEG, BSAK etc., There are almost 100 lac records in BSEG and every day around 20000 records are getting added to that. Eventhough I have used specific search criteria, system is taking lot of time. Due to this I forced to run the report in background. In background also it is taking around 4 - 6 hours.
1) How can I improve the performance of the report. Especially to access data from huge database table like BSEG with lot of conditions. Any best practices
2) I want to have an option (at selection screen) to get the report directly saved in a Excel file at desired path.
Please help me.
Thanks in advance,
MallikHi Mallik,
Already i faced this problem before. At that time i follow some precuations:
1) Check the estimation cost for that report with the basis people.
2) The selection fields mentionedin the select statement and fields order in the internal; table should match with order of Data base fields order.
3) Define type statements and then refer internal table to that types.
4) Define secondary indexes in the where condition properly.
5) Add BINARY SEARCH to read table statement.
6) if possible attach package size n to the select statement.
7) Avoid nested loops and nested selects.
8) After populating the final internal table free all the internal tables.
9) check how much time taking for each select statemnt through SY05.
Hope this helps you. reply for queries.
Regards,
Kumar. -
Bug report: Energy Manager causes slow performance...
Very slow Windows Startup..
Energy Manager's plans and the problem occured using any plan as I remember, and it wasn't an issue with the maximum processor state. I had heavy disk usage, especially access to the Page File, which is what the person in the second link I posted also described. CPU usage was low. The disk usage was seemingly not related to Energy Manager (Chrome was usually the worst), but removing Energy Manager completely resolved the problem. If you would find it helpful. I'm quite confident that even with Maximum Processor state at %100, CPU usage was low when it was slow, and that disk access was the culprit.
previously have use 1.0.0.31 or 32 not sure.
Windows 8.1
Im using Lenovo Energy Management Driver
1.0.0.28
4.6.2014I actually have the same problem. Sorry to work on a old thread, but...
I've got my Lenovo B50-70 less than 1 month ago, and had switched it to SSD and had set everything up and is working perfectly. However there are a bunch of lenovo programs that came pre-installed. This computer is used mainly for work and I really don't like programs that suddenly pop-up and ask you to do stuff, as it is quite distracting, and with Lenovo Energy Manager being one of them so I removed it. (I did do some research before I remove...)
Everything was fine, until when I try to switch on my wifi (I usually have it off, as I use LAN most of the time)... For the B50-70 there is a airplane button on F7, which allow the user to switch wifi and bluetooth on/off. That button was unresponsive... After some digging it is actually related to the power energy manager being removed. So I've downloaded the latest version from Lenovo and it was working again...
However though, whenever I start my computer it is taking so long to start... And I tried uninstalling the power energy manager and it solved the problem... And I am stuck with either having no wifi on/off ability or a really slow boot, which loses the whole purpose of the SSD. After you enter your username and password it originally takes around 5~10 seconds to login, now it takes over 1 minute.
I have found this other link, which says Lenovo Power Manager having the same problem.
https://forums.lenovo.com/t5/ThinkVantage-Technologies/Bug-report-Power-Manager-causes-slow-performa...
There is a solution, which you can change the registry to switch a function off. I've tried it and it didn't work, which is not surprising as it's a different program.. But I am hoping that Lenovo can provide a similar solution for Lenovo Energy Manager... -
Course of action to performance tune an ALV report
Dear friends,
I am working on an ALV report that needs to be performance tuned.
I have made the following observations about the report.
1) it takes 37 mins to run in production like system
2) there are some nested select statements, which I am trying to get rid of and frame an inner join
3) Most of the data is coming from the tables - knvv,kona,s060,t6b2f.
4) in the st05 - display trace - the fetch S060 table is taking the maximum amount of time
what should be my course of action? Should I create indexes on S060? or request BASIS to create them?
Any other steps I can take to optimize this report.
~thanks for reading, and any feedback is appreciatedHow do i deal with these nested selects
get condition table number(s) based on the condition group for this
rebate - there could be more than one
CLEAR t6b2f.
SELECT kotabnr
FROM t6b2f
INTO t6b2f-kotabnr
WHERE kappl = kona-kappl
AND kobog = kona-kobog.
build condition table name
WRITE t6b2f-kotabnr TO c_kotabnr.
CONCATENATE cond_table_prefix c_kotabnr INTO c_kotabnr.
select all condition numbers for this rebate from this table
SELECT knumh
FROM (c_kotabnr)
INTO my_knumh
WHERE knuma = itab_rebate_info-knuma_item.
for this condition, get lowest scale value and add to purchase req
CLEAR my_kstbw.
SELECT MIN( kstbw )
FROM konw
INTO my_kstbw
WHERE knumh = my_knumh.
itab_rebate_info-kstbw = itab_rebate_info-kstbw + my_kstbw.
see if there is any info in S060 for this condition for the current
rebate's period
CLEAR s060.
SELECT kawrt_k kwert_k auwrt_k
FROM s060
INTO (s060-kawrt_k, s060-kwert_k, s060-auwrt_k)
WHERE knumh = my_knumh
*{ REPLACE TS1K900014 1
*\ AND spmon = itab_rebate_info-spmon.
AND spmon = itab_rebate_info-spmon
AND ssour = ' '
AND vrsio = '000'.
*} REPLACE
accumulate values into internal table fields
itab_rebate_info-kawrt_k = itab_rebate_info-kawrt_k +
s060-kawrt_k.
itab_rebate_info-kwert_k = itab_rebate_info-kwert_k +
s060-kwert_k.
itab_rebate_info-auwrt_k = itab_rebate_info-auwrt_k +
s060-auwrt_k.
CLEAR s060.
ENDSELECT.
ENDSELECT.
ENDSELECT. -
OOP ALV report custom control performance problem
HI
how to write OOP ALV report without custom control.. Actually with custom control which taking long time... and time out happens for huge selection of data..
Regards
Roops.timeout is not an alv problem. If you try to display a "huge" amount of data, any display technology will fail. Even sap programs fail, their wise solution is to ask user to restrict data to be displayed. Or reduce database selection time, or display amount. Or propose the user to download data as a spool, or output to a file on server.
Otherwise, read some advices about how to handle timeout in [Note 25528 - Parameter rdisp/max_wprun_time|http://service.sap.com/sap/support/notes/25528].
About your question, if you still want to try, look at [example code with alv class cl_salv_table for simple display|http://help.sap.com/saphelp_nw2004s/helpdata/en/f9/1ab54099de3726e10000000a1550b0/frameset.htm] -
Problem in performing subtotaling in ABAP ALV Report for GL Account ID
Hi,
I had developed a report in which i am displayng data on the basis of GL Account in a ALV Report. I want to display the sub-totaling on the different series of GL Account (i..e. 100000,400000 etc..) but at present this fucntionality is not possible right now. Is there method of doing it?Hi,
Thanks ,i had solved the problem by taking a variable type string and the assigning the GL A/C ID in it and it is showing the data accuarately as per requierment..
Thanks everybody for valueable response.
Problem Solved. -
My ALV Report is taking too much time to execute
Hi Friends,
My ALV Report is taking long time for execution(more than 1.5 Hrs).Pls suggest the changes to be done to improove the performance.Its very urgent.Pls respond as soon as possible.
Thanks & Regards,
Sunil Maurya
Report is as follows :
REPORT YSEG_PROFIT.
TABLES : ZSEGMENT, coep.
TYPE-POOLS: slis.
DATA : BEGIN OF I_COEP OCCURS 0,
BELNR LIKE COEP-BELNR,
BUZEI LIKE COEP-BUZEI,
PERIO LIKE COEP-PERIO,
WOGBTR LIKE COEP-WOGBTR,
OBJNR LIKE COEP-OBJNR,
KSTAR LIKE COEP-KSTAR,
PAOBJNR LIKE COEP-PAOBJNR,
KVGR5 LIKE ZSEGMENT-KVGR5,
KAUFN LIKE CE4KBL1_ACCT-KAUFN,
END OF I_COEP.
DATA : BEGIN OF I_SECTOR OCCURS 0,
KVGR5 LIKE ZSEGMENT-KVGR5,
END OF I_SECTOR.
DATA : BEGIN OF I_AUFK OCCURS 0,
OBJNR LIKE AUFK-OBJNR,
PSPEL LIKE AUFK-PSPEL,
KDAUF LIKE AUFK-KDAUF,
KDPOS LIKE AUFK-KDPOS,
END OF I_AUFK.
DATA : BEGIN OF I_VBAKP OCCURS 0,
OBJNR LIKE VBAP-OBJNR,
KVGR5 LIKE VBAK-VBELN,
END OF I_VBAKP.
DATA : BEGIN OF I_PRPS OCCURS 0,
OBJNR LIKE PRPS-OBJNR,
PSPHI LIKE PRPS-PSPHI,
ASTNR LIKE PROJ-ASTNR,
END OF I_PRPS.
DATA : BEGIN OF I_OUTPUT OCCURS 0,
KSTAR LIKE COEP-KSTAR,
MCTXT LIKE CSKU-MCTXT,
S01 LIKE COEP-WOGBTR,
S02 LIKE COEP-WOGBTR,
S03 LIKE COEP-WOGBTR,
S04 LIKE COEP-WOGBTR,
S05 LIKE COEP-WOGBTR,
S06 LIKE COEP-WOGBTR,
S07 LIKE COEP-WOGBTR,
S08 LIKE COEP-WOGBTR,
S09 LIKE COEP-WOGBTR,
OTH like COEP-WOGBTR,
TOTAL LIKE COEP-WOGBTR,
END OF I_OUTPUT.
DATA : BEGIN OF I_AFVC OCCURS 0,
OBJNR LIKE AFVC-OBJNR,
PROJN LIKE AFVC-PROJN,
PROJ LIKE PROJ-PSPID,
PSPNR LIKE PROJ-PSPNR,
END OF I_AFVC.
DATA : BEGIN OF I_PROJ OCCURS 0,
PSPNR LIKE PROJ-PSPNR,
ASTNR LIKE PROJ-ASTNR,
END OF I_PROJ.
DATA : I_NP LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_NV LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_DETAIL LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_WB LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
DATA : I_PR LIKE STANDARD TABLE OF I_COEP WITH HEADER LINE.
data : t_fieldcat_sum_rep TYPE slis_t_fieldcat_alv.
data : t_fieldcat_det_rep TYPE slis_t_fieldcat_alv.
DATA: k_fieldcat TYPE slis_fieldcat_alv.
Declaration by Sunil Maurya for sorting
DATA : GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_SORT TYPE SLIS_SORTINFO_ALV.
DATA : GT_SORT1 TYPE SLIS_T_SORTINFO_ALV,
GS_SORT1 TYPE SLIS_SORTINFO_ALV.
*data : it_sortcat type slis_t_sortinfo_alv.
*DATA : k_sortcat like line of it_sortcat.
**data : wa_sort like line of it_sortcat.
Declaration by Sunil Maurya for sorting
constants : c_user_command TYPE char30 VALUE 'USER_COMMAND'.
*Selection screen
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
PARAMETER : P_PERIO1 LIKE COEP-PERIO obligatory,
P_PERIO2 LIKE COEP-PERIO MODIF ID D1,
P_GJAHR LIKE COEP-GJAHR obligatory.
select-options : P_KSTAR for COEP-KSTAR,
P_GSBER FOR COEP-GSBER.
SELECT-OPTIONS : S_KVGR5 FOR ZSEGMENT-KVGR5 MODIF ID D1.
SELECTION-SCREEN END OF BLOCK A.
INITIALIZATION.
S_KVGR5-OPTION = 'BT' .
S_KVGR5-LOW = 'S01'.
S_KVGR5-HIGH = 'S09'.
APPEND S_KVGR5.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'D1'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
PERFORM GET_SECTORS.
PERFORM GET_DATA_COEP.
PERFORM VALIDATE_SECTOR.
PERFORM GROUP_OUTPUT.
PERFORM BUILD_SORTCAT. " Inserted by by Sunil Maurya for sorting
PERFORM BUILD_CATLOG.
PERFORM DISPLAY_OUTPUT.
*& Form GET_DATA_COEP
text
--> p1 text
<-- p2 text
FORM GET_DATA_COEP .
SELECT BELNR BUZEI PERIO WOGBTR OBJNR KSTAR PAOBJNR
FROM COEP INTO TABLE I_COEP WHERE
KOKRS = 'KBL' AND
PERIO >= P_PERIO1 AND
PERIO <= P_PERIO2 AND
PERIO = P_PERIO1 AND
GJAHR = P_GJAHR AND
KSTAR NE '' AND
OBJNR NE '' AND
KSTAR in P_KSTAR AND
GSBER IN P_GSBER. "AND
BELNR = '0103991827' .
SORT I_COEP BY OBJNR.
DELETE I_COEP WHERE OBJNR+0(2) <> 'VB' AND
OBJNR+0(2) <> 'PR' AND
OBJNR+0(2) <> 'NV' AND
OBJNR+0(2) <> 'NP' AND
OBJNR+0(2) <> 'AO'.
SORT I_COEP BY KSTAR.
DELETE I_COEP WHERE KSTAR+0(5) <> '00003' AND
KSTAR+0(5) <> '00004'.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NP'.
MOVE I_COEP TO I_NP.
APPEND I_NP.
CLEAR : I_NP, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NV'.
MOVE I_COEP TO I_NV.
APPEND I_NV.
CLEAR : I_NV, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'VB' .
MOVE I_COEP TO I_WB.
APPEND I_WB.
CLEAR : I_WB, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'PR' .
MOVE I_COEP TO I_PR.
APPEND I_PR.
CLEAR : I_PR, I_COEP.
ENDLOOP.
*Inserted by Sunil Maurya for PAOBJNR = "AO....."
Data : ind type sy-tabix.
loop at i_coep where OBJNR+0(2) = 'AO'.
ind = sy-tabix.
select single KAUFN into i_coep-KAUFN from CE4KBL1_ACCT where PAOBJNR =
i_coep-PAOBJNR.
select single KVGR5 into i_coep-kvgr5 from vbak where vbeln =
i_coep-kaufn.
modify i_coep index ind.
clear i_coep.
endloop.
*Inserted by Sunil Maurya for PAOBJNR = "AO....."
*LOOP AT I_COEP WHERE OBJNR+0(2) = 'AO' .
MOVE I_COEP TO I_AO.
APPEND I_AO.
CLEAR : I_AO, I_COEP.
*ENDLOOP.
ENDFORM. " GET_DATA_COEP
*& Form GET_SECTORS
text
--> p1 text
<-- p2 text
FORM GET_SECTORS .
DATA : L_FR TYPE I,
L_TO TYPE I.
DATA : L_CH1(1).
LOOP AT S_KVGR5.
IF S_KVGR5-OPTION = 'EQ'.
I_SECTOR-KVGR5 = S_KVGR5-LOW.
APPEND I_SECTOR.
CLEAR : I_SECTOR.
CONCATENATE '5' S_KVGR5-LOW+1(2) INTO I_SECTOR-KVGR5.
APPEND I_SECTOR.
CLEAR : I_SECTOR.
ENDIF.
IF S_KVGR5-OPTION = 'BT'.
L_FR = S_KVGR5-LOW+1(2).
L_TO = S_KVGR5-HIGH+1(2).
WHILE L_FR <= L_TO.
L_CH1 = L_FR.
CONCATENATE 'S0' L_CH1 INTO I_SECTOR-KVGR5.
APPEND I_SECTOR.
CONCATENATE '50' L_CH1 INTO I_SECTOR-KVGR5.
APPEND I_SECTOR.
CLEAR : I_SECTOR, L_CH1.
L_FR = L_FR + 1.
ENDWHILE.
ENDIF.
ENDLOOP.
ENDFORM. " GET_SECTORS
*& Form VALIDATE_SECTOR
text
--> p1 text
<-- p2 text
FORM VALIDATE_SECTOR .
*get data from AUFK for NP & NV type intab
IF I_NP[] IS NOT INITIAL.
SELECT OBJNR PSPEL KDAUF KDPOS FROM AUFK
INTO TABLE I_AUFK
FOR ALL ENTRIES IN I_NP
WHERE OBJNR = I_NP-OBJNR.
*Push this data in I_WB where order no exist in AUFK
LOOP AT I_AUFK WHERE KDAUF NE ''.
I_WB-OBJNR = I_AUFK-OBJNR.
APPEND I_WB.
CLEAR : I_AUFK, I_WB.
ENDLOOP.
*Push this data in I_PR where order no exist in AUFK
LOOP AT I_AUFK WHERE PSPEL NE ''.
I_PR-OBJNR = I_AUFK-OBJNR.
APPEND I_PR.
CLEAR : I_AUFK, I_PR.
ENDLOOP.
ENDIF.
SELECT BOBJNR AKVGR5 FROM VBAK AS A INNER JOIN VBAP AS B
ON AVBELN = BVBELN
INTO TABLE I_VBAKP
FOR ALL ENTRIES IN I_WB
WHERE B~VBELN = I_WB-OBJNR+2(10).
SORT I_VBAKP BY OBJNR.
SORT I_COEP BY OBJNR.
LOOP AT I_WB.
READ TABLE I_VBAKP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
READ TABLE I_SECTOR WITH KEY KVGR5 = I_VBAKP-KVGR5.
IF SY-SUBRC <> 0.
DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
loop at i_coep where objnr = i_wb-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ELSE.
READ TABLE I_COEP WITH KEY BELNR = I_WB-BELNR BUZEI = I_WB-BUZEI.
READ TABLE I_COEP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP INDEX SY-TABIX.
LOOP AT I_COEP WHERE OBJNR = I_WB-OBJNR.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP.
CLEAR : I_COEP.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
loop at i_coep where objnr = i_wb-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ENDIF.
CLEAR : I_VBAKP, I_SECTOR, I_COEP.
ENDLOOP.
IF I_PR[] IS NOT INITIAL.
SELECT AOBJNR APSPHI B~ASTNR
FROM PRPS AS A INNER JOIN PROJ AS B
ON APSPHI = BPSPNR
INTO TABLE I_PRPS
FOR ALL ENTRIES IN I_PR
WHERE A~OBJNR = I_PR-OBJNR.
ENDIF.
IF I_NV[] IS NOT INITIAL.
SELECT OBJNR PROJN FROM AFVC INTO TABLE I_AFVC
FOR ALL ENTRIES IN I_NV
WHERE OBJNR = I_NV-OBJNR AND
PROJN <> '' .
LOOP AT I_AFVC.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
EXPORTING
INPUT = I_AFVC-PROJN
IMPORTING
OUTPUT = I_AFVC-PROJ
I_AFVC-PROJ = I_AFVC-PROJ+0(9).
CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT'
EXPORTING
INPUT = I_AFVC-PROJ
IMPORTING
OUTPUT = I_AFVC-PSPNR.
MODIFY I_AFVC.
CLEAR : I_AFVC.
ENDLOOP.
SELECT PSPNR ASTNR FROM PROJ INTO TABLE I_PROJ
FOR ALL ENTRIES IN I_AFVC
WHERE PSPNR = I_AFVC-PSPNR.
LOOP AT I_NV.
I_PRPS-OBJNR = I_NV-OBJNR.
READ TABLE I_AFVC WITH KEY OBJNR = I_NV-OBJNR.
IF SY-SUBRC = 0.
READ TABLE I_PROJ WITH KEY PSPNR = I_AFVC-PSPNR.
IF SY-SUBRC = 0.
I_PRPS-ASTNR = I_PROJ-ASTNR.
ENDIF.
ENDIF.
APPEND I_PRPS.
I_PR-OBJNR = I_NV-OBJNR.
APPEND I_PR.
CLEAR : I_NV, I_AFVC, I_PROJ, I_PR.
ENDLOOP.
ENDIF.
SORT I_PRPS BY OBJNR.
LOOP AT I_PR.
READ TABLE I_PRPS WITH KEY OBJNR = I_PR-OBJNR.
IF SY-SUBRC = 0.
READ TABLE I_SECTOR WITH KEY KVGR5 = I_PRPS-ASTNR+5(3).
IF SY-SUBRC <> 0.
DELETE I_COEP WHERE OBJNR = I_PR-OBJNR.
loop at i_coep where objnr = i_pr-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ELSE.
READ TABLE I_COEP WITH KEY OBJNR = I_PR-OBJNR.
IF SY-SUBRC = 0.
CONCATENATE 'S' I_SECTOR-KVGR5+1(2) INTO I_COEP-KVGR5.
MODIFY I_COEP INDEX SY-TABIX.
LOOP AT I_COEP WHERE OBJNR = I_PR-OBJNR.
CONCATENATE 'S' I_SECTOR-KVGR5+1(2) INTO I_COEP-KVGR5.
MODIFY I_COEP.
CLEAR : I_COEP.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
DELETE I_COEP WHERE OBJNR = I_PR-OBJNR.
loop at i_coep where objnr = i_pr-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ENDIF.
CLEAR : I_PR, I_PRPS, I_SECTOR, I_COEP.
ENDLOOP.
ENDFORM. " VALIDATE_SECTOR
*& Form GROUP_OUTPUT
text
--> p1 text
<-- p2 text
FORM GROUP_OUTPUT .
LOOP AT I_COEP.
I_OUTPUT-KSTAR = I_COEP-KSTAR.
IF I_COEP-KVGR5 = 'S01'.
I_OUTPUT-S01 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S02'.
I_OUTPUT-S02 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S03'.
I_OUTPUT-S03 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S04'.
I_OUTPUT-S04 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S05'.
I_OUTPUT-S05 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S06'.
I_OUTPUT-S06 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S07'.
I_OUTPUT-S07 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S08'.
I_OUTPUT-S08 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'S09'.
I_OUTPUT-S09 = I_COEP-WOGBTR.
ENDIF.
IF I_COEP-KVGR5 = 'OTH' OR I_COEP-KVGR5 = ''.
I_OUTPUT-OTH = I_COEP-WOGBTR.
ENDIF.
COLLECT I_OUTPUT.
CLEAR : I_COEP, I_OUTPUT.
ENDLOOP.
LOOP AT I_OUTPUT.
SELECT SINGLE MCTXT FROM CSKU
INTO I_OUTPUT-MCTXT
WHERE KTOPL = 'KBL' AND
SPRAS = SY-LANGU AND
KSTAR = I_OUTPUT-KSTAR.
I_OUTPUT-TOTAL = I_OUTPUT-S01 + I_OUTPUT-S02 + I_OUTPUT-S03
+ I_OUTPUT-S04 + I_OUTPUT-S05 + I_OUTPUT-S06
+ I_OUTPUT-S07 + I_OUTPUT-S08 + I_OUTPUT-S09
+ I_OUTPUT-OTH.
MODIFY I_OUTPUT.
CLEAR : I_OUTPUT.
ENDLOOP.
ENDFORM. " GROUP_OUTPUT
*& Form BUILD_CATLOG
text
--> p1 text
<-- p2 text
FORM BUILD_CATLOG .
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'KSTAR'.
k_fieldcat-seltext_l = text-002.
k_fieldcat-hotspot = 'X'.
APPEND k_fieldcat TO t_fieldcat_sum_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'MCTXT'.
k_fieldcat-seltext_l = text-003.
k_fieldcat-hotspot = 'X'.
APPEND k_fieldcat TO t_fieldcat_sum_rep.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S01'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S01'.
k_fieldcat-seltext_l = text-004.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S02'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S02'.
k_fieldcat-seltext_l = text-005.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S03'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S03'.
k_fieldcat-seltext_l = text-006.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S04'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S04'.
k_fieldcat-seltext_l = text-007.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S05'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S05'.
k_fieldcat-seltext_l = text-008.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S06'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S06'.
k_fieldcat-seltext_l = text-009.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S07'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S07'.
k_fieldcat-seltext_l = text-010.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S08'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S08'.
k_fieldcat-seltext_l = text-011.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
READ TABLE I_SECTOR WITH KEY KVGR5 = 'S09'.
IF SY-SUBRC = 0.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'S09'.
k_fieldcat-seltext_l = text-012.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
ENDIF.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'OTH'.
k_fieldcat-seltext_l = text-019.
k_fieldcat-hotspot = 'X'.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'TOTAL'.
k_fieldcat-seltext_l = text-020.
k_fieldcat-do_sum = 'X'. "Statement inserted by Sunil Maurya
APPEND k_fieldcat TO t_fieldcat_sum_rep.
*=======================================================================
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'BELNR'.
k_fieldcat-seltext_l = text-013.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'BUZEI'.
k_fieldcat-seltext_l = text-014.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'PERIO'.
k_fieldcat-seltext_l = text-015.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'WOGBTR'.
k_fieldcat-seltext_l = text-016.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'OBJNR'.
k_fieldcat-seltext_l = text-018.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'KSTAR'.
k_fieldcat-seltext_l = text-002.
APPEND k_fieldcat TO t_fieldcat_det_rep.
CLEAR k_fieldcat.
k_fieldcat-fieldname = 'KVGR5'.
k_fieldcat-seltext_l = text-017.
APPEND k_fieldcat TO t_fieldcat_det_rep.
*==============================================================
Statements inserted by Sunil Maurya for sorting
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'KSTAR'.
GS_SORT-SPOS = 1.
GS_SORT-UP = 'X'.
APPEND GS_SORT TO GT_SORT.
CLEAR GS_SORT1.
GS_SORT1-FIELDNAME = 'KSTAR'.
GS_SORT1-SPOS = 1.
GS_SORT1-UP = 'X'.
GS_SORT1-SUBTOT = 'X'.
APPEND GS_SORT1 TO GT_SORT1.
*CLEAR GS_SORT1.
*GS_SORT1-FIELDNAME = 'WOGBTR'.
*GS_SORT1-SPOS = 2.
*GS_SORT1-UP = 'X'.
*GS_SORT1-SUBTOT = 'X'.
*APPEND GS_SORT1 TO GT_SORT1.
FORM build_sortcat.
k_sortcat-spos = 1.
k_sortcat-fieldname = 'KSTAR'.
k_sortcat-up = 'X'.
k_sortcat-down = 'X'.
APPEND k_sortcat TO it_sortcat.
clear k_sortcat.
ENDFORM.
Statements inserted by Sunil Maurya for sorting
ENDFORM. " BUILD_CATLOG
*& Form DISPLAY_OUTPUT
text
--> p1 text
<-- p2 text
FORM DISPLAY_OUTPUT .
DATA l_repid TYPE syrepid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
it_fieldcat = t_fieldcat_sum_rep
i_callback_user_command = c_user_command
i_save = 'A'
it_sort = GT_SORT[] "Statements inserted by Sunil
TABLES
t_outtab = I_OUTPUT
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_OUTPUT
*& Form user_command
text
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: l_repid TYPE syrepid.
l_repid = sy-repid.
CASE r_ucomm.
WHEN '&IC1'.
clear : i_detail. refresh : i_detail.
LOOP AT I_COEP WHERE KVGR5 = rs_selfield-fieldname.
MOVE i_coep to i_detail.
append i_detail.
clear : i_detail, i_coep.
endloop.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
it_fieldcat = t_fieldcat_det_rep
i_callback_user_command = c_user_command
i_save = 'A'
it_sort = GT_SORT1[] "Inserted by Sunil
TABLES
t_outtab = i_detail
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDCASE.
ENDFORM.Run the SE30 with internal tables, then examine the top lines.
see
SE30
The ABAP Runtime Trace (SE30) - Quick and Easy
Define you tables as sorted tables or use at least binary search, otherwise this sorts are useless
and the nested loop is slow.
SORT I_VBAKP BY OBJNR.
SORT I_COEP BY OBJNR.
LOOP AT I_WB.
READ TABLE I_VBAKP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
READ TABLE I_SECTOR WITH KEY KVGR5 = I_VBAKP-KVGR5.
IF SY-SUBRC 0.
DELETE I_COEP WHERE OBJNR = I_WB-OBJNR.
loop at i_coep where objnr = i_wb-objnr.
i_coep-kvgr5 = 'OTH'.
modify i_coep.
clear : i_coep.
endloop.
ELSE.
READ TABLE I_COEP WITH KEY BELNR = I_WB-BELNR BUZEI = I_WB-BUZEI.
READ TABLE I_COEP WITH KEY OBJNR = I_WB-OBJNR.
IF SY-SUBRC = 0.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP INDEX SY-TABIX.
LOOP AT I_COEP WHERE OBJNR = I_WB-OBJNR.
I_COEP-KVGR5 = I_SECTOR-KVGR5.
MODIFY I_COEP.
CLEAR : I_COEP.
ENDLOOP.
This is all very slow.
Read my blog on internal tables:
Measurements on internal tables: Reads and Loops:
Runtimes of Reads and Loops on Internal Tables
If you really wnat to identify all bugs, then try this
Z_SE30_COMPARE
A Tool to Compare Runtime Measurements: Z_SE30_COMPARE
Nonlinearity Check
Nonlinearity Check Using the Z_SE30_COMPARE
It needs at bit of experience but then it is very powerful!!!
That is also a waste of time, but not a nested loop. You sort and resort the same table,
but the sort is useless the deletes are still sequential on standard tables.
Put all the stuff into ONE loop on I_COEP.
SORT I_COEP BY OBJNR.
DELETE I_COEP WHERE OBJNR+0(2) <> 'VB' AND
OBJNR+0(2) <> 'PR' AND
OBJNR+0(2) <> 'NV' AND
OBJNR+0(2) <> 'NP' AND
OBJNR+0(2) <> 'AO'.
SORT I_COEP BY KSTAR.
DELETE I_COEP WHERE KSTAR+0(5) <> '00003' AND
KSTAR+0(5) <> '00004'.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NP'.
MOVE I_COEP TO I_NP.
APPEND I_NP.
CLEAR : I_NP, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'NV'.
MOVE I_COEP TO I_NV.
APPEND I_NV.
CLEAR : I_NV, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'VB' .
MOVE I_COEP TO I_WB.
APPEND I_WB.
CLEAR : I_WB, I_COEP.
ENDLOOP.
LOOP AT I_COEP WHERE OBJNR+0(2) = 'PR' .
MOVE I_COEP TO I_PR.
APPEND I_PR.
CLEAR : I_PR, I_COEP.
ENDLOOP.
There is probably more. BBut with the compare tool you can find everything.
Siegfried -
Download the ALV Report output into excel sheet or notepad
Hi,
how to downlaod the alv report out into excel sheet or notepad in a proper manner. program contain large number records....
Thanks in advance!!!!
Regards,
kranthi.Hi
Download a report to excel with format (border, color cell, etc)
Try this program...it may help you to change the font ..etc.
Code:
REPORT ZSIRI NO STANDARD PAGE HEADING.
this report demonstrates how to send some ABAP data to an
EXCEL sheet using OLE automation.
INCLUDE OLE2INCL.
handles for OLE objects
DATA: H_EXCEL TYPE OLE2_OBJECT, " Excel object
H_MAPL TYPE OLE2_OBJECT, " list of workbooks
H_MAP TYPE OLE2_OBJECT, " workbook
H_ZL TYPE OLE2_OBJECT, " cell
H_F TYPE OLE2_OBJECT. " font
TABLES: SPFLI.
DATA H TYPE I.
table of flights
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
*& Event START-OF-SELECTION
START-OF-SELECTION.
read flights
SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
display header
ULINE (61).
WRITE: / SY-VLINE NO-GAP,
(3) 'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(4) 'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(8) 'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP.
ULINE /(61).
display flights
LOOP AT IT_SPFLI.
WRITE: / SY-VLINE NO-GAP,
IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP.
ENDLOOP.
ULINE /(61).
tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
TEXT = TEXT-007
EXCEPTIONS
OTHERS = 1.
start Excel
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
PERFORM ERR_HDL.
SET PROPERTY OF H_EXCEL 'Visible' = 1.
CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls'
PERFORM ERR_HDL.
tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
TEXT = TEXT-008
EXCEPTIONS
OTHERS = 1.
get list of workbooks, initially empty
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
PERFORM ERR_HDL.
add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP.
PERFORM ERR_HDL.
tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 0 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
changes by Kishore - start
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2.
PERFORM ERR_HDL.
add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP EXPORTING #1 = 2.
PERFORM ERR_HDL.
tell user what is going on
SET PROPERTY OF H_MAP 'NAME' = 'COPY'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 0 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
changes by Kishore - end
disconnect from Excel
CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'C:\SKV.XLS'.
FREE OBJECT H_EXCEL.
PERFORM ERR_HDL.
FORM FILL_CELL *
sets cell at coordinates i,j to value val boldtype bold *
FORM FILL_CELL USING I J BOLD VAL.
CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
PERFORM ERR_HDL.
SET PROPERTY OF H_ZL 'Value' = VAL .
PERFORM ERR_HDL.
GET PROPERTY OF H_ZL 'Font' = H_F.
PERFORM ERR_HDL.
SET PROPERTY OF H_F 'Bold' = BOLD .
PERFORM ERR_HDL.
ENDFORM.
*& Form ERR_HDL
outputs OLE error if any *
--> p1 text
<-- p2 text
FORM ERR_HDL.
IF SY-SUBRC <> 0.
WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
STOP.
ENDIF.
ENDFORM. " ERR_HDL
Please note that this example maybe slow at filling the excel table
(perhaps four fields per second on a 900 MHz machine - almost 30 seconds
for a short example).
To get the data on properties and methods - there is a bit of smoke and mirrors
going on here; they are EXCEL properties and methods, not sap ones - so you need
to look at excel help to determine how a particular function is structured. then
build the block in sap, as shown in the example.
If you only want to transfer the data to Excel like when you transfer the data from
ALV to Excel simply use the Function Modules:
XXL_SIMPLE_API
If you want more modifications when you transfer it to Excel use:
XXL_FULL_API -
Hi all,
I have below output in alv report.
matnr 101_102 121_122 123_124
10000 23 34 45
10001 34 34 456
if i m clicking on 23 in combination of 121_122 and 10000 then i want to see detail for 121_122 and if i m clicking on 34 combination of 101_102 then i want to see detail according to it.
plz help me. its urgent.
thanks in advance.Check the below report and do compare and modify the report as per your req.
REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
MESSAGE-ID ZZ_9838 .
TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.
DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.
*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATLOG
Fieldcatalog has all the field details from ekko
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
*& Form EVENT_CALL
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EVENT_CALL
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form data_retrieval
retreiving values from the database table ekko
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
*& Form bUild_listheader
text
-->I_LISTHEADEtext
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
*& Form display_alv_report
text
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display_alv_report
*& Form TOP_OF_PAGE
text
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
*& Form BUILD_FIELDCATLOG_EKPO
text
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
*& Form event_call_ekpo
we get all events - TOP OF PAGE or USER COMMAND in table v_events
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "event_call_ekpo
*& Form POPULATE_EVENT
Events populated for TOP OF PAGE & USER COMAND
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
*& Form TOP_OF_PAGE
text
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
ENDFORM. "TOP_OF_PAGE
*& Form USER_COMMAND
text
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
Thanks
Seshu -
Hi experts , in alv report
in alv report i need to display the different customers in different blocks in the alv output, for example customer : 1000 in one block with all the details , and
customer : 10001 in other block in the same alv , if possible provide the coding.
its very urgent.Hi,
Check whether this helps u or not :-
TYPE-POOLS : SLIS.
TABLES : EKKO,EKPO,MARA,MAKT,EINE.
DATA : BEGIN OF IEKKO OCCURS 0,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
END OF IEKKO.
DATA : BEGIN OF IEKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
INFNR LIKE EKPO-INFNR,
END OF IEKPO.
DATA : BEGIN OF IMARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MAKTX LIKE MAKT-MAKTX,
END OF IMARA.
DATA : BEGIN OF IEINE OCCURS 0,
INFNR LIKE EINE-INFNR,
EBELN LIKE EINE-EBELN,
NETPR LIKE EINE-NETPR,
WAERS LIKE EINE-WAERS,
END OF IEINE.
DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IFIELDCATEINE TYPE SLIS_T_FIELDCAT_ALV,
IFIELDCATMARA TYPE SLIS_T_FIELDCAT_ALV,
WFIELDCAT TYPE SLIS_FIELDCAT_ALV,
ILAYOUT TYPE SLIS_LAYOUT_ALV,
IEVENTHEAD TYPE SLIS_T_EVENT,
IEVENTITEM TYPE SLIS_T_EVENT,
IEVENTEINE TYPE SLIS_T_EVENT,
WEVENT TYPE SLIS_ALV_EVENT,
IKEYINFO TYPE SLIS_KEYINFO_ALV.
PARAMETERS : P_NUM(3) TYPE N DEFAULT 10.
PERFORM GET_DATA_EKKO.
PERFORM GET_DATA_EKPO.
PERFORM GET_DATA_MARA.
PERFORM GET_DATA_EINE.
PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_FCAT_MARA.
PERFORM BUILD_FCAT_EINE.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_EVENT_TAB.
PERFORM BUILD_KEYINFO.
PERFORM DISPLAY_BLOCK.
*& Form GET_DATA_EKKO
* text
* --> p1 text
* <-- p2 text
FORM GET_DATA_EKKO .
SELECT EBELN AEDAT INTO TABLE IEKKO FROM EKKO UP TO P_NUM ROWS WHERE EBELN LIKE '45000057%'.
ENDFORM. " GET_DATA_EKKO
*& Form GET_DATA_EKPO
* text
* --> p1 text
* <-- p2 text
FORM GET_DATA_EKPO .
IF NOT IEKKO[] IS INITIAL.
SELECT EBELN EBELP MATNR MENGE MEINS INFNR INTO TABLE IEKPO FROM EKPO FOR ALL ENTRIES
IN IEKKO WHERE EBELN = IEKKO-EBELN.
ENDIF.
ENDFORM. " GET_DATA_EKPO
*& Form DISPLAY_BLOCK
* text
* --> p1 text
* <-- p2 text
FORM DISPLAY_BLOCK .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND'
EXPORTING
IS_LAYOUT = ILAYOUT
IT_FIELDCAT = IFIELDCAT
IS_KEYINFO = IKEYINFO
I_HEADER_TABNAME = 'IEKKO'
I_ITEM_TABNAME = 'IEKPO'
IT_EVENTS = IEVENTHEAD
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB_HEADER = IEKKO
T_OUTTAB_ITEM = IEKPO
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = ILAYOUT
IT_FIELDCAT = IFIELDCATMARA
I_TABNAME = 'IMARA'
IT_EVENTS = IEVENTITEM
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IMARA
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = ILAYOUT
IT_FIELDCAT = IFIELDCATEINE
I_TABNAME = 'IEINE'
IT_EVENTS = IEVENTEINE
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IEINE
* EXCEPTIONS
* PROGRAM_ERROR = 1
* MAXIMUM_OF_APPENDS_REACHED = 2
* OTHERS = 3
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_BLOCK
*& Form BUILD_FCAT_HEAD
* text
* --> p1 text
* <-- p2 text
FORM BUILD_FCAT_HEAD .
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'AEDAT'.
WFIELDCAT-TABNAME = 'IEKKO'.
WFIELDCAT-SELTEXT_L = 'Pur. doc date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_HEAD
*& Form BUILD_FCAT_ITEM
* text
* --> p1 text
* <-- p2 text
FORM BUILD_FCAT_ITEM .
*WFIELDCAT-FIELDNAME = 'EBELN'.
*WFIELDCAT-TABNAME = 'IEKPO'.
*WFIELDCAT-SELTEXT_L = 'Pur. Doc no'.
*WFIELDCAT-OUTPUTLEN = 15.
*APPEND WFIELDCAT TO IFIELDCAT.
*CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'EBELP'.
WFIELDCAT-TABNAME = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Pur. Doc item'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-TABNAME = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'P.O. Qty'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-TABNAME = 'IEKPO'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_ITEM
*& Form BUILD_LAYOUT
* text
* --> p1 text
* <-- p2 text
FORM BUILD_LAYOUT .
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ILAYOUT-ZEBRA = 'X'.
ENDFORM. " BUILD_LAYOUT
*& Form BUILD_EVENT_TAB
* text
* --> p1 text
* <-- p2 text
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IEVENTHEAD
* EXCEPTIONS
* LIST_TYPE_WRONG = 1
* OTHERS = 2
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IEVENTITEM = IEVENTHEAD.
IEVENTEINE = IEVENTHEAD.
READ TABLE IEVENTHEAD INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEHEAD'.
MODIFY IEVENTHEAD FROM WEVENT INDEX SY-TABIX.
ENDIF.
READ TABLE IEVENTITEM INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEITEM'.
MODIFY IEVENTITEM FROM WEVENT INDEX SY-TABIX.
ENDIF.
READ TABLE IEVENTEINE INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGEEINE'.
MODIFY IEVENTEINE FROM WEVENT INDEX SY-TABIX.
ENDIF.
ENDFORM. " BUILD_EVENT_TAB
FORM TOPOFPAGEHEAD.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
WLIST TYPE SLIS_LISTHEADER.
WLIST-INFO = 'Header data with P.O. no and creating date'.
WLIST-TYP = 'H'.
APPEND WLIST TO ILIST.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = ILIST
* I_LOGO =
* I_END_OF_LIST_GRID =
ENDFORM.
FORM TOPOFPAGEITEM.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
WLIST TYPE SLIS_LISTHEADER.
WLIST-INFO = 'Material no in PO with type and description'.
WLIST-TYP = 'H'.
APPEND WLIST TO ILIST.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = ILIST
* I_LOGO =
* I_END_OF_LIST_GRID =
ENDFORM.
*& Form BUILD_KEYINFO
* text
* --> p1 text
* <-- p2 text
FORM BUILD_KEYINFO .
IKEYINFO-HEADER01 = 'EBELN'.
IKEYINFO-ITEM01 = 'EBELN'.
ENDFORM. " BUILD_KEYINFO
*& Form BUILD_FCAT_MARA
* text
* --> p1 text
* <-- p2 text
FORM BUILD_FCAT_MARA .
WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-TABNAME = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-TABNAME = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material desc'.
WFIELDCAT-OUTPUTLEN = 30.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'MTART'.
WFIELDCAT-TABNAME = 'IMARA'.
WFIELDCAT-SELTEXT_L = 'Material typ'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATMARA.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_MARA
*& Form GET_DATA_MARA
* text
* --> p1 text
* <-- p2 text
FORM GET_DATA_MARA .
IF NOT IEKPO[] IS INITIAL.
SELECT A~MATNR A~MTART B~MAKTX INTO TABLE IMARA FROM MARA AS A INNER JOIN
MAKT AS B ON
A~MATNR = B~MATNR FOR
ALL ENTRIES IN IEKPO
WHERE A~MATNR = IEKPO-MATNR.
ENDIF.
ENDFORM. " GET_DATA_MARA
*& Form GET_DATA_EINE
* text
* --> p1 text
* <-- p2 text
FORM GET_DATA_EINE .
IF NOT IEKPO[] IS INITIAL.
SELECT INFNR EBELN NETPR WAERS INTO TABLE IEINE FROM EINE
FOR ALL ENTRIES IN IEKPO WHERE INFNR = IEKPO-INFNR AND
EBELN = IEKPO-EBELN.
ENDIF.
ENDFORM. " GET_DATA_EINE
FORM TOPOFPAGEEINE.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
WLIST TYPE SLIS_LISTHEADER.
WLIST-INFO = 'Purchasing info record'.
WLIST-TYP = 'H'.
APPEND WLIST TO ILIST.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = ILIST
* I_LOGO =
* I_END_OF_LIST_GRID =
ENDFORM.
*& Form BUILD_FCAT_EINE
* text
* --> p1 text
* <-- p2 text
FORM BUILD_FCAT_EINE .
WFIELDCAT-FIELDNAME = 'INFNR'.
WFIELDCAT-TABNAME = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Info rec no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'EBELN'.
WFIELDCAT-TABNAME = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Pur ord no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'NETPR'.
WFIELDCAT-TABNAME = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Net price'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.
WFIELDCAT-FIELDNAME = 'WAERS'.
WFIELDCAT-TABNAME = 'IEINE'.
WFIELDCAT-SELTEXT_L = 'Currency'.
WFIELDCAT-OUTPUTLEN = 10.
APPEND WFIELDCAT TO IFIELDCATEINE.
CLEAR WFIELDCAT.
ENDFORM. "
Regards,
Deepu.K
Maybe you are looking for
-
How can I make an email list from my submissions?
How can I compile a list of submitted emails to send out a group mailing?
-
I have a 17" MBP purchased last year, it has 4GB 1066MHz DDR3 SODIMMs, 2 x 2 GB, in it. I have on order - IF PC Universe ever decides to actually ship it; another story - 2 x 4GB of 1066 MHz DDR3 SODIMMs, this will boost my MBP to 8GB, the max. My iM
-
HI , I am facing problem while recording for Txn PO13. I have to enter an infotype by scrolling but not possible. Any ideas ?? Thanks, Sandip.
-
Detail Process of Sales Order Costing...
Hi Experts, Can any one please explain the detail process flow of Sales order costing with FI entry and CO entry passed step by step. Thanks in advance. Regards,
-
Is there a way to change the name of an app, or remove the app name so that only the icon shows? Some of the apps have names that are way too long, and they show up as something like "BBCNe...ional." I don't mind if it fits but it looks kinda annoyin