FOR ALL ENTRIES in Object Oriented Context
Dear all,
is it possible to use FOR ALL ENTRIES for an internal table with out header line ? I Am using Objected Oriented Programming and I Am not able to create internal table with header line . Please provide your valuable inputs on this issue.
Thanks In Advance.
Sri
Hello,
Few questions:
1. Did you do an F1 on FOR ALL ENTRIES(FAE)? Does it say FAE is allowed only for tables w. header line?
2. Have you tried using FAE on an internal table w/o header line? Does it give an error?
BR,
Suhas
Similar Messages
-
hi gurus,
plz check my report using for all entries where i am give data in selection screen from date to date as 3.01.2007 to 4.02.2007
my code does not provide me data between above date to date.
it fetch data from other date like 26.06.2006 to some other
plz check code and give me solution for it.
TABLES: bseg, bkpf.
*ALV grid_data
TYPE-POOLS: slis.
INTERNAL TABLES
TYPES: BEGIN OF it_output,
bukrs TYPE bseg-bukrs, "Company Code
belnr TYPE bseg-belnr, "Accounting Document Number
gjahr TYPE bseg-gjahr, "Fiscal Year
buzei TYPE bseg-buzei, "Number of Line Item
augdt TYPE bseg-augdt, "Clearing Date
shkzg TYPE bseg-shkzg, "Debit/Credit Indicator
dmbtr TYPE bseg-dmbtr, "Amount in local currency
kostl TYPE bseg-kostl, "Cost Center
hkont TYPE bseg-hkont, "G/L Account
matnr TYPE bseg-matnr, "Material Number
werks TYPE bseg-werks, "Plant
erfmg TYPE bseg-erfmg, "Quantity in unit of entry
blart TYPE bkpf-blart, "Document type
bldat TYPE bkpf-bldat, "Document Date
budat TYPE bkpf-budat, "Posting Date
monat TYPE bkpf-monat, "Fiscal period
cpudt TYPE bkpf-cpudt, "Document Entry Date
usnam TYPE bkpf-usnam, "User name
tcode TYPE bkpf-tcode, "Transaction Code20
bktxt TYPE bkpf-bktxt, "Document Header Text
waers TYPE bkpf-waers, "Currency Key
awtyp TYPE bkpf-awtyp, "Reference procedure
awkey TYPE bkpf-awkey, "Object key
END OF it_output.
TYPES: BEGIN OF it_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
blart TYPE bkpf-blart,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
monat TYPE bkpf-monat,
cpudt TYPE bkpf-cpudt,
usnam TYPE bkpf-usnam,
tcode TYPE bkpf-tcode,
bktxt TYPE bkpf-bktxt,
waers TYPE bkpf-waers,
awtyp TYPE bkpf-awtyp,
awkey TYPE bkpf-awkey,
END OF it_bkpf.
DATA: lt_output TYPE it_output OCCURS 0 WITH HEADER LINE.
DATA: lt_bkpf TYPE it_bkpf OCCURS 0 WITH HEADER LINE.
ALV DECLARATION DATA *
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
it_heading TYPE slis_t_listheader,
it_sort TYPE slis_t_sortinfo_alv,
it_events TYPE slis_t_event,
it_alv_event TYPE slis_alv_event,
gv_repname TYPE syrepid,
gv_save TYPE char1,
is_layout TYPE slis_layout_alv.
SELECTION SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK bl WITH FRAME TITLE text-011.
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs NO INTERVALS,
s_blart FOR bkpf-blart,
s_budat FOR bkpf-budat.
SELECTION-SCREEN END OF BLOCK bl.
START OF SELECTION *
START-OF-SELECTION.
PERFORM get_data.
End of Selection *
END-OF-SELECTION.
PERFORM build_field_catalog.
PERFORM eventstab.
PERFORM display_data.
FORMS *
*& Form get_data
Get Data
FORM get_data .
SELECT bukrs
belnr
gjahr
buzei
augdt
shkzg
dmbtr
kostl
hkont
matnr
werks
erfmg
INTO TABLE lt_output
FROM bseg
WHERE bukrs IN s_bukrs.
IF sy-subrc = 0.
SORT lt_output BY belnr.
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
ENDIF.
IF NOT lt_output[] IS INITIAL.
SELECT bukrs
belnr
gjahr
blart
bldat
budat
monat
cpudt
usnam
tcode
bktxt
waers
awtyp
awkey
INTO TABLE lt_bkpf FROM bkpf
FOR ALL ENTRIES IN lt_output
WHERE bukrs = lt_output-bukrs AND
belnr = lt_output-belnr AND
gjahr = lt_output-gjahr."AND
blart IN s_blart AND
budat IN s_budat ." AND
blart = 'SA' OR
blart = 'SB' OR
blart = 'AB' OR
blart = 'ZC'.
*sort lt_bkpf by blart budat.
DELETE lt_bkpf WHERE blart NOT IN s_blart AND
budat NOT IN s_budat.
ENDIF.
SORT lt_bkpf BY bukrs belnr.
SORT lt_output[].
DELETE ADJACENT DUPLICATES FROM lt_output COMPARING ALL FIELDS.
LOOP AT lt_output.
READ TABLE lt_bkpf WITH KEY bukrs = lt_output-bukrs
belnr = lt_output-belnr
budat = lt_output-budat
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: lt_bkpf-gjahr TO lt_output-gjahr,
lt_bkpf-belnr TO lt_output-belnr,
lt_bkpf-blart TO lt_output-blart,
lt_bkpf-bldat TO lt_output-bldat,
lt_bkpf-budat TO lt_output-budat,
lt_bkpf-monat TO lt_output-monat,
lt_bkpf-cpudt TO lt_output-cpudt,
lt_bkpf-usnam TO lt_output-usnam,
lt_bkpf-tcode TO lt_output-tcode,
lt_bkpf-bktxt TO lt_output-bktxt,
lt_bkpf-waers TO lt_output-waers,
lt_bkpf-awtyp TO lt_output-awtyp,
lt_bkpf-awkey TO lt_output-awkey.
MODIFY lt_output.
ELSE.
DELETE lt_output.
ENDIF.
ENDLOOP.
ENDFORM. "get_data
thanks jayantHi Jayant,
You cannot retrieve data first from BSEG and then from BKPF.
It is not correct and you cannot get the correct data.
You should use BKPF which is header table first and then
using for all entries retrieve data from BSEG.
Use date field in the select statement condition for BKPF table retrieval and
you don't have posting date field in BSEG.
If you do like this, it will definitely work.
Retrieve data from BKPF using date condition in SELECT statement.
Then, using for all entries retrieve from BSEG.
Reward if helpful. -
Want to Avoid Loop for all entries with select query !!
Hi Guru's !
This is my following code . I want to avoid loop to improve the performance of program.
data: lt_cuhd type HASHED TABLE OF /sapsll/cuhd WITH UNIQUE key guid_cuhd,
ls_cuhd type /sapsll/cuhd.
data: lt_comments type STANDARD TABLE OF zss_comments,
ls_comments type zss_comments.
data: lv_objkey type string.
select * from /sapsll/cuhd into table lt_cuhd.
loop at lt_cuhd into ls_cuhd.
CONCATENATE ls_cuhd-corder '%' into lv_objkey. " Example 'Mum%'
select * from zss_comments into table lt_comments
where objkey like lv_objkey
AND guid_cuhd = ls_cuhd-guid_cuhd
AND event_id <> ''.
endloop.
I want
New code should be...using all entries no loop required.
*select * from zss_comments into table lt_comments
where objkey like lv_objkey
AND guid_cuhd = ls_cuhd-guid_cuhd
AND event_id <> ''.*why dont you add the object key also to lt_cuhd and once you fetch the data to lt_cuhd loop it and add the '%'
when looping use field symbols so that you dont have to use modify.
then use for all entries using lt_cuhd
i don't you can find a better way to add the % mark apart from looping but by this way only one select query will be done for
zss_comments
Thanks
Nafran -
Hi ABAP Folks,
I am extracting a set a values from 5 different tables using FOR ALL statement and consolidating the results of each internal table to form a MASTER INTERNAL TABLE containing fields USERNAME ROLENAME ROLENAMETEXT TCODE TCODETEXT.
BNAME UNAME->(USERNAME)
AGR_NAME -> ROLES
OBJECT,OBJCT->AUTHORISATION OBJ
If the user input is a group name.
Select BNAME CLASS From USR02 into LT_USR02 where CLASS IN S_USRGRP
Select UNAME AGR_NAME into LT_AGR_USERS From AGR_USERS For All entries in LT_USR02 where UNAME = LT_USR02-BNAME
Select AGR_NAME OBJECT into LT_AGR_1251 From AGR_1251 For All entries in LT_AGR_USERS where AGR_NAME = LT_AGR_USERS-AGR_NAME
Select AGR_NAME TEXT into LT_AGR_TEXTS From AGR_TEXTS For All entries in LT_AGR_1251 where AGR_NAME = LT_AGR_1251-AGR_NAME
Select OBJCT TCODE into LT_TSTCA From TSTCA For All entries in LT_AGR_1251 where OBJCT = LT_AGR_1251-OBJECT
Select TCODE TEXTS into LT_TSTCT From TSTCT For All entries in LT_TSTCA where TCODE = LT_TSTCA-TCODE.
Resultant ITAB IS User Name, User Group, User Group Texts, Transaction Codes, Transaction Code Text.
<b>Is it better to go for a join in this case?Will joins be more efficient?Any help welcome and will be rewarded.</b>
in case yes,Syntax for the above case will be helpful.
Thanks in Advance.
<b></b>Jayant,
The joins are helpful when the two tables are related to each other basically VBAK and VBAP would be useful to join on document number but it is not advisable to join vbap and aufo on material number.
In your case you can join the USER* related data and Transaction* related data via joins.
Message was edited by: Anurag Bankley
Message was edited by: Anurag Bankley -
Loop -- Select, for all entries, HOW TO ?
Hi,
I have followoing code.
LOOP AT table ASSIGNING TO lt_all_roles_all_objects.
ENDSELECT.
ENDLOOP.
How to tune this? I don´t understand how and where to use the for all entries command.
And what will happen with my append?
Can somebody explain me?
ThanksHi,
First you need to know some of tips in abap so that you can give good shape to ur program according to performance wise.
--Try to avoid the joins and use FOR ALL ENTRIES IN in place of joins.
--Try to avoid the MOVE CORRESPONDING
--Dont use the loop statements with in loop.
-- Dont write the select statement with in loop.
-- Better use the read statement in side loop intead of loop in side loop.
-- Use alway BINARY SEARCH in READ statement- in this mandatory thing is u need to sorty the internal table a/c to with key conditions.
etc................. like this u need take care some of abap tips so that u can achieve good coding standards..
coming to your coding.............
declare an internal table "itab_agr_1250" which contain fields mandt, agr_name, object, and deleted .
SELECT mandt agr_name object deleted
from agr_1250
into itab_agr_1250
where agr_name = <cust_tab>-rolename
and mandt in sp_mandt
and deleted = ''.
IF sy-subrc = 0.
sort itab_agr_1250 by agr_name.
ENDIF.
loop at table assigning <cust_tab>.
read table itab_agr_1250 with key agr_name = <cust_tab>-rolename
BINARY SEARCH.
final_Itab-field1 = itab_agr_1250-.....
final_Itab-field2 = itab_agr_1250-.....
final_Itab-field3 = itab_agr_1250-..... { USE single filed assign or move statement for each field instead of MOVE CORRESPONDING }
append final_Itab.
endloop.
<b>Reward with points if useful</b>
Regards,
Vijay -
Plz change code from inner join to for all entries
REPORT : ZSD00009 *
DESCRIPTION : REPORT FOR TRACTOR ON STOCK AGING *
CODED BY : DINESH AGARWAL *
SPECS BY : AJAY KOTHI *
START DATE : 07TH JUNE , 2000 *
CHANGED : MANOJ SINGH 01/02/2001 *
CHANGED : YOGINDER KAURA 27TH JULY 2001 *
REPORT ZMUSA_SD00009 .
TABLES : vbrk,vbrp,vbfa,ser01,objk,knvv,mara,mbew, t005u,
t171t,kna1,equi,ihpa, cabn, ausp.
DATA : BEGIN OF itab OCCURS 0,
bzirk1 LIKE vbrk-bzirk,
bzirk LIKE KNA1-regio, "added by dhiraj - 23.11.2007
LAND1 LIKE KNA1-LAND1,
kunde LIKE equi-kunde,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
matkl LIKE mara-matkl,
sernr LIKE objk-sernr,
equnr LIKE objk-equnr ,
matnr LIKE vbrp-matnr,
spart LIKE vbrp-spart,
vbelv LIKE vbrp-vbelv,
posnv LIKE vbrp-posnv,
days1(1) TYPE n ,
days2(1) TYPE n ,
days3(1) TYPE n ,
days4(1) TYPE n ,
days5(1) TYPE n ,
werks like vbrp-werks,
END OF itab.
DATA : BEGIN OF itab_grp OCCURS 0,
werks like vbrp-werks,
matkl LIKE mara-matkl,
bzirk1 LIKE vbrk-bzirk,
bzirk LIKE KNA1-regio, "added by dhiraj - 23.11.2007
kunde LIKE equi-kunde,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat,
sernr LIKE objk-sernr,
equnr LIKE objk-equnr ,
matnr LIKE vbrp-matnr,
spart LIKE vbrp-spart,
vbelv LIKE vbrp-vbelv,
posnv LIKE vbrp-posnv,
days1(1) TYPE n ,
days2(1) TYPE n ,
days3(1) TYPE n ,
days4(1) TYPE n ,
days5(1) TYPE n ,
END OF itab_grp.
DATA : BEGIN OF dealer ,
days1(3) TYPE p ,
days2(3) TYPE p ,
days3(3) TYPE p ,
days4(3) TYPE p ,
days5(3) TYPE p ,
END OF dealer .
DATA : state LIKE dealer .
DATA : matgr LIKE dealer .
DATA : plant LIKE dealer .
DATA : BEGIN OF us,
days1(4) TYPE p ,
days2(4) TYPE p ,
days3(4) TYPE p ,
days4(4) TYPE p ,
days5(4) TYPE p ,
END OF us .
DATA : lin TYPE i , check_box(1) ,
dealer_total TYPE i,state_total TYPE i,
matgr_total TYPE i,plant_total TYPE i,
us_total TYPE i .
DATA vobjnr(22) .
DATA no_of_days TYPE i .
DATA flag_fkdat.
DATA atinn1 LIKE cabn-atinn.
DATA atinn LIKE cabn-atinn.
DATA : atflv LIKE ausp-atflv.
DATA : atflv1(8) TYPE n.
DATA : invdate TYPE sy-datum.
DATA invoicenum(10) TYPE n .
DATA : BEGIN OF it_regio OCCURS 0,
regio LIKE kna1-regio,
END OF it_regio.
data : it001w like table of t001w with header line.
TABLES vbpa.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : werks FOR vbrp-werks,
vkorg FOR vbrk-vkorg,
vtweg FOR vbrk-vtweg,
spart FOR vbrp-spart.
SELECTION-SCREEN END OF BLOCK block1 .
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : matkl FOR mara-matkl,
bzirk FOR vbrk-regio," changed by dhiraj - 23.11.2007
kunrg FOR vbrk-kunrg ,
fkdat FOR vbrk-fkdat.
SELECTION-SCREEN END OF BLOCK block2 .
SELECTION-SCREEN BEGIN OF BLOCK block3 WITH FRAME TITLE text-003.
PARAMETERS : days1(2) TYPE p OBLIGATORY DEFAULT '90' ,
days2(2) TYPE p OBLIGATORY DEFAULT '90',
days3(2) TYPE p OBLIGATORY DEFAULT '180',
days4(2) TYPE p OBLIGATORY DEFAULT '270',
days5(2) TYPE p OBLIGATORY DEFAULT '365'.
SELECTION-SCREEN END OF BLOCK block3 .
SELECTION-SCREEN BEGIN OF BLOCK reptype WITH FRAME TITLE text-201 .
PARAMETERS : detail RADIOBUTTON GROUP rep ,
summary RADIOBUTTON GROUP rep ,
grp_summ RADIOBUTTON GROUP rep .
SELECTION-SCREEN END OF BLOCK reptype .
*start of code by Kalpana for Authority check for REGIO */
AT SELECTION-SCREEN .
SELECT regio FROM kna1 INTO TABLE it_regio
WHERE regio IN bzirk
AND kunnr IN kunrg.
CLEAR it_regio.
LOOP AT it_regio.
AUTHORITY-CHECK OBJECT 'Z:AO_REGIO'
ID 'REGIO' FIELD it_regio.
IF sy-subrc NE 0.
MESSAGE e173(zma) WITH it_regio.
ENDIF.
ENDLOOP.
*End of code by Kalpana for Authority check for REGIO */
IF days1 NE days2 .
MESSAGE e000(8i) WITH text-004 text-009 text-005.
ELSEIF days3 LE days2 .
MESSAGE e000(8i) WITH text-006 text-010 text-005 .
ELSEIF days4 LE days3 .
MESSAGE e000(8i) WITH text-007 text-010 text-006 .
ELSEIF days5 LE days4 .
MESSAGE e000(8i) WITH text-008 text-010 text-007 .
ENDIF .
START-OF-SELECTION .
select abzirk akunrg avbeln afkdat b~matnr
cmatkl dvbelv dposnv fsernr f~equnr
into corresponding fields of table itab
from ( ( ( ( ( vbrk as a inner join vbrp as b
on avbeln = bvbeln )
inner join mara as c on cmatnr = bmatnr )
inner join vbfa as d on dvbeln = bvbeln
and dposnn = bposnr )
inner join ser01 as e on elief_nr = dvbelv
and eposnr = dposnv )
inner join objk as f on fobknr = eobknr )
where a~vkorg in vkorg
and a~vtweg in vtweg
and a~bzirk in bzirk
and a~fkdat in fkdat
and c~matkl in matkl
and a~kunrg in kunrg
and b~spart in spart
and c~mtart = 'FERT'
and d~vbtyp_n = 'M'
and a~vbtyp = 'M'
and a~fksto = ' '
and b~vgtyp = 'J' .
REFRESH itab.
CLEAR itab .
CLEAR cabn .
select * from t001w into table it001w where werks in werks.
SELECT SINGLE atinn INTO atinn1 FROM cabn
WHERE atnam = 'INVOICEDATE'.
*************************modified by dhiraj - 23.11.2007*****************
SELECT kbzirk aatflv ekunde eequnr esernr ematnr m~matkl
INTO CORRESPONDING FIELDS OF itab
FROM ( ( ( equi AS e INNER JOIN ausp AS a
ON eequnr = aobjek )
INNER JOIN mara AS m ON ematnr = mmatnr )
INNER JOIN knvv AS k ON kkunnr = ekunde
AND kspart = mspart )
WHERE m~mtart = 'FERT'
AND m~spart IN spart
AND m~matkl IN matkl
AND e~kunde <> ' '
AND e~kunde IN kunrg
AND k~bzirk IN bzirk
and a~atinn = atinn1
AND k~vkorg = 'M001'
AND k~vtweg = '90'.
SELECT kbzirk nregio nland1 aatflv ekunde eequnr esernr ematnr m~matkl
INTO CORRESPONDING FIELDS OF itab
FROM ( ( ( ( equi AS e INNER JOIN ausp AS a
ON eequnr = aobjek )
INNER JOIN mara AS m ON ematnr = mmatnr )
INNER JOIN knvv AS k ON kkunnr = ekunde
AND kspart = mspart )
INNER JOIN kna1 as n ON nkunnr = kkunnr )
WHERE m~mtart = 'FERT'
AND m~spart IN spart
AND m~matkl IN matkl
AND e~kunde <> ' '
AND e~kunde IN kunrg
AND nregio IN bzirk "k-bzirk changed to nregio by dhiraj-23.11.2007
and a~atinn = atinn1
AND k~vkorg = 'F041'
AND k~vtweg = '01'.
added by krunal for plant as select-option
clear ausp.
select single * from cabn where atnam = 'DELIVERINGPLANT'.
SELECT SINGLE * FROM ausp
WHERE objek = itab-equnr
AND atinn = CABN-ATINN.
CLEAR CABN.
read table it001w with key werks = ausp-atwrt.
if sy-subrc <> 0.
continue.
else.
itab-werks = ausp-atwrt.
endif.
*end addition
CLEAR : ausp, knvv .
SELECT SINGLE * FROM ausp
WHERE objek = itab-equnr
AND atinn = atinn1 .
MOVE ausp-atflv TO atflv1 .
MOVE atflv1 TO invdate .
MOVE invdate TO itab-fkdat.
CLEAR : cabn, ausp, atinn.
SELECT SINGLE atinn INTO atinn FROM cabn
WHERE atnam = 'INVOICENO' .
SELECT SINGLE * FROM ausp
WHERE objek = itab-equnr
AND atinn = atinn.
MOVE ausp-atflv TO invoicenum .
MOVE invoicenum TO itab-vbeln.
IF NOT fkdat-low IS INITIAL .
IF invdate GE fkdat-low AND invdate LE fkdat-high .
APPEND itab.
ELSE.
CONTINUE.
ENDIF.
ELSE.
APPEND itab.
ENDIF.
ENDSELECT.
SORT itab BY sernr matnr .
DELETE ADJACENT DUPLICATES FROM itab COMPARING sernr matnr .
SORT itab BY equnr .
LOOP AT itab .
CONCATENATE 'IE' itab-equnr INTO vobjnr .
SELECT SINGLE * FROM ihpa WHERE objnr = vobjnr
AND parvw = 'RE'
AND obtyp = 'IEQ'
AND kzloesch EQ space. " Yogi on 27/06/2001
IF sy-subrc EQ 0 .
DELETE itab INDEX sy-tabix .
CONTINUE .
ELSE .
no_of_days = sy-datum - itab-fkdat .
IF no_of_days LE days1 .
itab-days1 = 1 .
ELSEIF no_of_days GT days2 AND no_of_days LE days3.
itab-days2 = 1 .
ELSEIF no_of_days GT days3 AND no_of_days LE days4.
itab-days3 = 1 .
ELSEIF no_of_days GT days4 AND no_of_days LE days5.
itab-days4 = 1 .
ELSEIF no_of_days GT days5 .
itab-days5 = 1 .
ENDIF .
MODIFY itab INDEX sy-tabix .
ENDIF .
ENDLOOP .
END-OF-SELECTION .
DESCRIBE TABLE itab LINES lin .
IF lin GT 0 .
SORT itab BY bzirk kunde vbeln .
IF detail = 'X' .
PERFORM disp_list .
ELSEIF summary = 'X' .
PERFORM summary_list .
ELSEIF grp_summ = 'X' .
PERFORM grp_summ_list .
ENDIF.
ELSE .
MESSAGE i000(8i) WITH 'No Records exist as per Selection Condititon' .
ENDIF .
TOP-OF-PAGE .
WRITE : / text-011 , ' - ' , sy-datum .
*& Form DISP_LIST
text
--> p1 text
<-- p2 text
FORM disp_list.
LOOP AT itab.
********changes made by dhiraj - 23.11.2007********************
AT NEW bzirk.
SKIP .
SELECT SINGLE * FROM t171t WHERE bzirk = itab-bzirk
AND spras = 'E' .
SELECT SINGLE * FROM t005u WHERE spras = sy-langu
AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
PERFORM list_heading.
FORMAT COLOR 4 INTENSIFIED ON.
WRITE :/ 'Sales Region : ',itab-bzirk,30 t005u-BEZEI
,81 ''.
ULINE .
ENDAT.
AT NEW kunde.
SELECT SINGLE * FROM kna1 WHERE kunnr = itab-kunde .
FORMAT COLOR 3 INTENSIFIED ON.
WRITE :/ 'Dealer : ',itab-kunde,30(25) kna1-name1,
60 'City : ' ,kna1-ort01, 81 ''.
ULINE .
ENDAT.
AT NEW fkdat .
FORMAT COLOR OFF INTENSIFIED OFF .
WRITE : /5 itab-vbeln,
20 itab-fkdat .
CLEAR flag_fkdat .
ENDAT .
at new matkl .
format color 2 intensified on.
write :/ 'Material Group : ',itab-matkl, 81 ''.
skip .
endat .
mcnt = mcnt + 1 .
dealer-days1 = dealer-days1 + itab-days1 .
dealer-days2 = dealer-days2 + itab-days2 .
dealer-days3 = dealer-days3 + itab-days3 .
dealer-days4 = dealer-days4 + itab-days4 .
dealer-days5 = dealer-days5 + itab-days5 .
state-days1 = state-days1 + itab-days1 .
state-days2 = state-days2 + itab-days2 .
state-days3 = state-days3 + itab-days3 .
state-days4 = state-days4 + itab-days4 .
state-days5 = state-days5 + itab-days5 .
IF flag_fkdat EQ 'Y' .
NEW-LINE .
ENDIF .
WRITE : 35 itab-matnr, "krunal
55 itab-sernr,
72 itab-werks, "krunal
83 itab-days1 ,
93 itab-days2 ,
103 itab-days3 ,
113 itab-days4 ,
123 itab-days5 .
PERFORM get_musa_ta.
flag_fkdat = 'Y' .
at end of matkl .
skip .
format color 2 intensified on.
write :/ 'Total For : ',itab-matkl, ' - ' , mcnt .
clear mcnt .
uline .
endat .
AT END OF kunde.
dealer_total = dealer-days1 + dealer-days2 + dealer-days3
+ dealer-days4 + dealer-days5 .
FORMAT COLOR 3 INTENSIFIED ON.
WRITE :/ 'Total for : ',itab-kunde,' - ' ,
79 dealer-days1 ,
89 dealer-days2 ,
99 dealer-days3 ,
109 dealer-days4 ,
119 dealer-days5 ,
129 dealer_total .
CLEAR : dealer_total , dealer .
ULINE .
ENDAT.
AT END OF bzirk.
state_total = state-days1 + state-days2 + state-days3
+ state-days4 + state-days5 .
FORMAT COLOR 4 INTENSIFIED ON.
WRITE :/ 'Total for : ',itab-bzirk,' - ' ,
79 state-days1 ,
89 state-days2 ,
99 state-days3 ,
109 state-days4 ,
119 state-days5 ,
129 state_total .
CLEAR : state_total , state .
ULINE.
ENDAT.
ENDLOOP.
ENDFORM. " DISP_LIST
*& Form LIST_HEADING
text
--> p1 text
<-- p2 text
FORM list_heading.
DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
text11 = days1 .
text12 = days2 .
text13 = days3 .
text14 = days4 .
text15 = days5 .
CONCATENATE : '=<' text11 INTO text1 ,
'>' text12 INTO text2 ,
'>' text13 INTO text3 ,
'>' text14 INTO text4 ,
'>' text15 INTO text5 .
ULINE.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE :/5 'Invoice No.',
20 'Invoice Dt',
34 'Material',
55 'Serial No .' ,
72 'Plant',
79 text1 ,
89 text2 ,
99 text3 ,
109 text4 ,
119 text5 ,
129 'Floor' ,
139 'Total' .
ULINE.
ENDFORM. " LIST_HEADING
*& Form SUMMARY_LIST
text
--> p1 text
<-- p2 text
FORM summary_list.
CLEAR : us, us_total .
LOOP AT itab.
AT FIRST.
SKIP .
******modified by dhiraj- 23.11.2007*******************************
SELECT SINGLE * FROM t171t WHERE bzirk = itab-bzirk
AND spras = 'E' .
SELECT SINGLE * FROM t005u WHERE spras = sy-langu
AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
PERFORM list_heading_summary.
format color 4 intensified on.
write :/ 'Sales District : ',itab-bzirk,30 t171t-bztxt
,81 ''.
ULINE .
ENDAT.
AT NEW kunde.
SELECT SINGLE * FROM kna1 WHERE kunnr = itab-kunde .
format color 3 intensified on.
write :/ 'Dealer : ',itab-kunde,30(25) kna1-name1,
60 'City : ' ,kna1-ort01, 81 ''.
uline .
ENDAT.
AT NEW fkdat .
format color off intensified off .
write : /5 itab-vbeln,
20 itab-fkdat .
CLEAR flag_fkdat .
ENDAT .
at new matkl .
format color 2 intensified on.
write :/ 'Material Group : ',itab-matkl, 81 ''.
skip .
endat .
mcnt = mcnt + 1 .
dealer-days1 = dealer-days1 + itab-days1 .
dealer-days2 = dealer-days2 + itab-days2 .
dealer-days3 = dealer-days3 + itab-days3 .
dealer-days4 = dealer-days4 + itab-days4 .
dealer-days5 = dealer-days5 + itab-days5 .
state-days1 = state-days1 + itab-days1 .
state-days2 = state-days2 + itab-days2 .
state-days3 = state-days3 + itab-days3 .
state-days4 = state-days4 + itab-days4 .
state-days5 = state-days5 + itab-days5 .
us-days1 = us-days1 + itab-days1 .
us-days2 = us-days2 + itab-days2 .
us-days3 = us-days3 + itab-days3 .
us-days4 = us-days4 + itab-days4 .
us-days5 = us-days5 + itab-days5 .
IF flag_fkdat EQ 'Y' .
NEW-LINE .
ENDIF .
write : 42 itab-sernr ,
59 itab-days1 ,
69 itab-days2 ,
79 itab-days3 ,
89 itab-days4 ,
99 itab-days5 .
flag_fkdat = 'Y' .
at end of matkl .
skip .
format color 2 intensified on.
write :/ 'Total For : ',itab-matkl, ' - ' , mcnt .
clear mcnt .
uline .
endat .
AT END OF kunde.
dealer_total = dealer-days1 + dealer-days2 + dealer-days3
+ dealer-days4 + dealer-days5 .
format color 3 intensified on.
write :/ 'Total for : ',itab-kunde,' - ' ,
57 dealer-days1 ,
67 dealer-days2 ,
77 dealer-days3 ,
87 dealer-days4 ,
97 dealer-days5 ,
107 dealer_total .
CLEAR : dealer_total , dealer .
uline .
ENDAT.
AT END OF bzirk.
**************modified by dhiraj - 23.11.2007****************
SELECT SINGLE * FROM t171t WHERE bzirk = itab-bzirk
AND spras = 'E' .
SELECT SINGLE * FROM t005u WHERE spras = sy-langu
AND BLAND = itab-bzirk AND LAND1 = ITAB-LAND1.
state_total = state-days1 + state-days2 + state-days3
+ state-days4 + state-days5 .
FORMAT COLOR 4 INTENSIFIED ON.
WRITE :/10 t171t-bztxt, " 'Total for : ',itab-bzirk,' - ' ,
57 state-days1 ,
67 state-days2 ,
77 state-days3 ,
87 state-days4 ,
97 state-days5 ,
107 state_total .
CLEAR : state_total , state .
ULINE.
ENDAT.
us_total = us-days1 + us-days2 + us-days3 + us-days4 + us-days5 .
ENDLOOP.
SKIP 2.
FORMAT COLOR 5 INTENSIFIED ON.
WRITE :/10 'Total for US : ' ,
55 us-days1 ,
65 us-days2 ,
75 us-days3 ,
85 us-days4 ,
95 us-days5 ,
105 us_total .
ENDFORM. " SUMMARY_LIST
*& Form LIST_HEADING_SUMMARY
text
--> p1 text
<-- p2 text
FORM list_heading_summary.
DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
text11 = days1 .
text12 = days2 .
text13 = days3 .
text14 = days4 .
text15 = days5 .
CONCATENATE : '=<' text11 INTO text1 ,
'>' text12 INTO text2 ,
'>' text13 INTO text3 ,
'>' text14 INTO text4 ,
'>' text15 INTO text5 .
ULINE.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE :/10 'State',
57 text1 ,
67 text2 ,
77 text3 ,
87 text4 ,
97 text5 ,
110 'Total' .
ULINE.
ENDFORM. " LIST_HEADING_SUMMARY
*& Form LIST_HEADING_SUMMARY
text
--> p1 text
<-- p2 text
FORM list_heading_grp_summary.
DATA : text1(7) , text2(7) , text3(7) , text4(7) , text5(7),
text11(4) , text12(4) , text13(4) , text14(4) , text15(4) .
text11 = days1 .
text12 = days2 .
text13 = days3 .
text14 = days4 .
text15 = days5 .
CONCATENATE : '=<' text11 INTO text1 ,
'>' text12 INTO text2 ,
'>' text13 INTO text3 ,
'>' text14 INTO text4 ,
'>' text15 INTO text5 .
ULINE.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE :/10 'Material Group',
57 text1 ,
67 text2 ,
77 text3 ,
87 text4 ,
97 text5 ,
110 'Total' .
ULINE.
ENDFORM. " LIST_HEADING_GRP_SUMMARY
*& Form GET_MUSA_TA
text
--> p1 text
<-- p2 text
FORM get_musa_ta.
CLEAR vbpa .
SELECT SINGLE * FROM vbpa
WHERE vbeln = itab-vbeln
AND parvw = 'RE' .
and kunnr = 'TA001' .
IF sy-subrc = 0 .
IF vbpa-kunnr = 'TA001' .
WRITE : 129 'TA ' .
ELSE.
WRITE : 129 'MUSA' .
ENDIF.
ENDIF.
ENDFORM. " GET_MUSA_TA
*& Form grp_summ_list
text
--> p1 text
<-- p2 text
FORM grp_summ_list .
CLEAR : us, us_total .
itab_grp[] = itab[] .
sort itab_grp BY werks matkl.
LOOP AT itab_grp.
AT FIRST.
SKIP .
PERFORM list_heading_grp_summary.
ULINE .
ENDAT.
matgr-days1 = matgr-days1 + itab_grp-days1 .
matgr-days2 = matgr-days2 + itab_grp-days2 .
matgr-days3 = matgr-days3 + itab_grp-days3 .
matgr-days4 = matgr-days4 + itab_grp-days4 .
matgr-days5 = matgr-days5 + itab_grp-days5 .
plant-days1 = plant-days1 + matgr-days1 .
plant-days2 = plant-days2 + matgr-days2 .
plant-days3 = plant-days3 + matgr-days3 .
plant-days4 = plant-days4 + matgr-days4 .
plant-days5 = plant-days5 + matgr-days5 .
us-days1 = us-days1 + itab_grp-days1 .
us-days2 = us-days2 + itab_grp-days2 .
us-days3 = us-days3 + itab_grp-days3 .
us-days4 = us-days4 + itab_grp-days4 .
us-days5 = us-days5 + itab_grp-days5 .
IF flag_fkdat EQ 'Y' .
NEW-LINE .
ENDIF .
write : 42 itab-sernr ,
59 itab-days1 ,
69 itab-days2 ,
79 itab-days3 ,
89 itab-days4 ,
99 itab-days5 .
flag_fkdat = 'Y' .
AT END OF matkl.
matgr_total = matgr-days1 + matgr-days2 + matgr-days3
+ matgr-days4 + matgr-days5 .
FORMAT COLOR 4 INTENSIFIED ON.
WRITE :/10 itab_grp-matkl, " 'Total for : ',itab_grp-matkl,' - ' ,
57 matgr-days1 ,
67 matgr-days2 ,
77 matgr-days3 ,
87 matgr-days4 ,
97 matgr-days5 ,
107 matgr_total .
CLEAR : matgr_total , matgr .
ULINE.
ENDAT.
AT END OF werks.
plant_total = plant-days1 + plant-days2 + plant-days3
+ plant-days4 + plant-days5 .
FORMAT COLOR 4 INTENSIFIED ON.
WRITE :/10 itab_grp-werks, " 'Total for : ',itab_grp-werks,' - ' ,
57 plant-days1 ,
67 plant-days2 ,
77 plant-days3 ,
87 plant-days4 ,
97 plant-days5 ,
107 plant_total .
CLEAR : plant_total , plant .
ULINE.
ENDAT.
us_total = us-days1 + us-days2 + us-days3 + us-days4 + us-days5 .
ENDLOOP.
SKIP 2.
FORMAT COLOR 5 INTENSIFIED ON.
WRITE :/10 'Total : ' ,
55 us-days1 ,
65 us-days2 ,
75 us-days3 ,
85 us-days4 ,
95 us-days5 ,
105 us_total .
ENDFORM. " grp_summ_list{SELECT OBJEK CUOBJ
INTO CORRESPONDING FIELDS OF TABLE TAB_INOB
FROM INOB
WHERE OBJEK IN R_MATNR.
SELECT ATWRT OBJEK ATINN
INTO CORRESPONDING FIELDS OF TABLE TAB_AUSP
FROM AUSP
FOR ALL ENTRIES IN TAB_INOB
WHERE OBJEK = TAB_INOB-CUOBJ.
SELECT ATNAM
INTO TABLE TAB_CABN
FROM CABN
FOR ALL ENTRIES IN TAB_INOB
WHERE ATNAM = 'ZCURSEASON'
OR ATNAM = 'ZCURYEAR'
AND ATINN = TAB_AUSP-ATINN.
after this you can gether the data into one internal table.
Form one inter nal table it_final.
loop at TAB_INOB.
it_final-OBJEK = tab_inob-OBJEK.
it_final-CUOBJ = tab_inob-CUOBJ.
READ TABLE TAB_CABN WITH KEY OBJEK = TAB_INOB-CUOBJ.
IT_FINAL-ATWRT = TAB_CABN-ATWRT.
IT_FINAL-ATINN = TAB_CABN-ATINN.
DO SAME FOR THIRD TABLE
AFFTER DO ALL
APPEND IT_FINAL.
ENDLOOP.} -
Unable to Get the Data Using For All Entries
Hi everybody, i am using for all entries in a program. but when i am writing a code using for all entries i am getting an error as
Where condition does not refers to the FOR ALL ENTRIES tables...
SELECT KUNNR
NAME1
ORT01
LAND1
FROM KNA1 INTO TABLE ITAB1 WHERE KUNNR IN S_KUNNR.
IF NOT ITAB1 IS INITIAL.
SELECT VBELN
ERDAT
KUNNR
FROM VBAK INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE KUNNR = IT_KNA1-KUNNR.
ENDIF.
can anybody help out in this
regards
hyder aliThe correct one may be like this:
SELECT KUNNR
NAME1
ORT01
LAND1
FROM KNA1 INTO TABLE ITAB1 WHERE KUNNR IN S_KUNNR.
IF NOT ITAB1 IS INITIAL.
SELECT VBELN
ERDAT
KUNNR
FROM VBAK INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE KUNNR = ITAB1-KUNNR. "modified here
ENDIF.
Edited by: XuJian84 on Mar 9, 2010 4:25 AM -
What is the usage of for all entries ?
What is the Usage of read table after using for all entries ?
In the following example what exactly it is doing ?
Usage of 'for all entries' in Select Statement
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
DATA: BEGIN OF T_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
MATNR LIKE VBAP-MATNR,
POSNR LIKE VBAP-POSNR,
END OF T_VBAP.
DATA: BEGIN OF T_VBFA OCCURS 0,
VBELV LIKE VBFA-VBELV,
VBELN LIKE VBFA-VBELN,
VBTYP_N LIKE VBFA-VBTYP_N,
END OF T_VBFA.
DATA: BEGIN OF T_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
IHREZ LIKE VBAK-IHREZ,
END OF T_VBAK.
DATA: BEGIN OF T_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF T_KNA1.
DATA: BEGIN OF T_MAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF T_MAKT.
SELECT likpvbeln likplifex likpbldat likpwadat likpwadat_ist likpkodat likp~lfart
likpkunnr likpvstel lipsposnv lipslfimg lipsvrkme lipslgmng lips~meins
lipswerks lipslgort lipscharg lipsvbelv lipsposnr lipsmatnr
lipsvbeln LIPSVGBEL LIPSVGPOS vbupkosta vbupwbsta vbupposnr vbup~vbeln
VBAKIHREZ VBAKVBELN VBAP~VBELN
INTO CORRESPONDING FIELDS OF TABLE it_itab
FROM ( likp
INNER JOIN lips
ON lipsvbeln = likpvbeln
INNER JOIN vbup
ON vbupposnr = lipsposnr
and VBUPVBELN = LIPSVBELN )
left outer join VBAK
on VBAKVBELN = LIPSVGBEL
inner join VBAP
on VBAPVBELN = VBAKVBELN )
WHERE likp~vbeln IN so_vbeln
AND likp~lifex IN so_lifex
AND likp~lfart IN so_lfart
AND likp~kunnr IN so_kunnr
AND likp~vstel IN so_vstel
AND likp~bldat IN so_bldat
AND likp~wadat_ist IN so_wadat
AND vbup~kosta IN so_kosta
AND vbup~wbsta IN so_wbsta
AND LIPS~LFIMG NE 0.
SELECT VBELN IHREZ INTO TABLE T_VBAK
FROM VBAK
FOR ALL ENTRIES IN IT_ITAB
WHERE VBELN = IT_ITAB-VGBEL.
APPEND T_VBAK.
ENDSELECT.
SELECT VBELN MATNR POSNR INTO TABLE T_VBAP
FROM VBAP
FOR ALL ENTRIES IN IT_ITAB
WHERE VBELN = IT_ITAB-VGBEL AND
MATNR = IT_ITAB-MATNR AND
POSNR = IT_ITAB-VGPOS.
APPEND T_VBAP.
ENDSELECT.
SELECT VBELV VBELN VBTYP_N INTO TABLE T_VBFA
FROM VBFA
FOR ALL ENTRIES IN IT_ITAB
WHERE VBELV = IT_ITAB-VBELN AND
VBTYP_N = 'M' .
SELECT KUNNR NAME1 INTO TABLE T_KNA1
FROM KNA1
FOR ALL ENTRIES IN IT_ITAB
WHERE KUNNR = IT_ITAB-KUNNR.
APPEND T_KNA1.
ENDSELECT.
SELECT MATNR MAKTX INTO TABLE T_MAKT
FROM MAKT
FOR ALL ENTRIES IN IT_ITAB
WHERE MATNR = IT_ITAB-MATNR.
APPEND T_MAKT.
ENDSELECT.
*Populate field with color attributes
LOOP AT it_itab INTO wa_ITAB.
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'
REFRESH color.
colourize 'VBELN' 0. " .
WA_ITAB-farbe = color[].
ld_color = ld_color + 1.
Only 7 colours so need to reset color value
IF ld_color = 3. "8
ld_color = 1.
ENDIF.
CONCATENATE 'C' ld_color '10' INTO wa_ITAB-line_color.
WA_ITAB-NAME1 = ''.
WA_ITAB-MAKTX = ''.
WA_ITAB-IHREZ = ''.
WA_ITAB-VBELV = ''.
READ TABLE T_KNA1 WITH KEY KUNNR = WA_ITAB-KUNNR.
IF SY-SUBRC = 0.
WA_ITAB-NAME1 = T_KNA1-NAME1.
ENDIF.
READ TABLE T_MAKT WITH KEY MATNR = WA_ITAB-MATNR.
IF SY-SUBRC = 0.
WA_ITAB-MAKTX = T_MAKT-MAKTX.
ENDIF.
READ TABLE T_VBAK WITH KEY VBELN = WA_ITAB-VGBEL.
IF SY-SUBRC = 0.
WA_ITAB-IHREZ = T_VBAK-IHREZ.
ENDIF.
READ TABLE T_VBFA WITH KEY VBELV = WA_ITAB-VBELN.
IF SY-SUBRC = 0.
WA_ITAB-VBELVA = T_VBFA-VBELN.
ENDIF.
READ TABLE T_VBAP WITH KEY VBELN = WA_ITAB-VGBEL
POSNR = WA_ITAB-VGPOS
MATNR = WA_ITAB-MATNR.
IF SY-SUBRC = 0.
WA_ITAB-IHREZ = T_VBAK-IHREZ.
ENDIF.
wa_ekko-line_color = 'C410'.
MODIFY it_itab FROM wa_itab.
ENDLOOP.
ENDFORM. " data_retrievalhi Jyotirmoy,
The explanation below can give u an idea of wat is going in ur code..
Use of FOR ALL Entries
Outer join can be created using this addition to the where clause in a select statement. It speeds up the performance tremendously, but the cons of using this variation are listed below
Duplicates are automatically removed from the resulting data set. Hence care should be taken that the unique key of the detail line items should be given in the select statement.
If the table on which the For All Entries IN clause is based is empty, all rows are selected into the destination table. Hence it is advisable to check before-hand that the first table is not empty.
If the table on which the For All Entries IN clause is based is very large, the performance will go down instead of improving. Hence attempt should be made to keep the table size to a moderate level.
Not Recommended
Loop at int_cntry.
Select single * from zfligh into int_fligh
where cntry = int_cntry-cntry.
Append int_fligh.
Endloop.
Recommended
Select * from zfligh appending table int_fligh
For all entries in int_cntry
Where cntry = int_cntry-cntry.
Thankyou,
Regards. -
Using delete and FOR ALL ENTRIES
Hi,
We have a error message regarding the following code :
Delete FROM TABLE FOR ALL ENTRIES IN lt_TABLE WHERE
TABLE_KEY1 = LT_TABLE_KEY1
Could we use the For All entries with "Select" ?
For information, the error message is "Unable to interpret "FOR". Possible causes: Incorrect spelling or comma error.
Thank you.Hi,
Check the below syntax, if you want to delete from database
DELETE FROM sflight
WHERE carrid = p_carrid AND
fldate = sy-datum AND
seatsocc = 0.
Just a suggestion. May be from next time you can use F1 help for syntax:
1. Place the cursor on the delete keword in your program and press F1 - You willl get all the possible syntax for delete statement
2. Else open the transaction ABAPDOCU, Click Keyword Help, Enter the required keyword(delete in this case) and press cont.. You will get the syntax.
Hope thsi will help you.
Regards,
Swarna Munukoti. -
Performance Issue in Select Statement (For All Entries)
Hello,
I have a report where i have two select statement
First Select Statement:
Select A B C P Q R
from T1 into Table it_t1
where ....
Internal Table it_t1 is populated with 359801 entries through this select statement.
Second Select Statement:
Select A B C X Y Z
from T2 in it_t2 For All Entries in it_t1
where A eq it_t1-A
and B eq it_t1-B
and C eq it_t1-C
Now Table T2 contains more than 10 lac records and at the end of select statement it_t2 is populated with 844003 but it takes a lot of time (15 -20 min) to execute second select statement.
Can this code be optimized?
Also i have created respective indexes on table T1 and T2 for the fields in Where Condition.
Regards,If you have completed all the steps mentioned by others, in the above thread, and still you are facing issues then,.....
Use a Select within Select.
First Select Statement:
Select A B C P Q R package size 5000
from T1 into Table it_t1
where ....
Second Select Statement:
Select A B C X Y Z
from T2 in it_t2 For All Entries in it_t1
where A eq it_t1-A
and B eq it_t1-B
and C eq it_t1-C
do processing........
endselect
This way, while using for all entries on T2, your it_t1, will have limited number of entries and thus the 2nd select will be faster.
Thanks,
Juwin -
Performance issue with select query and for all entries.
hi,
i have a report to be performance tuned.
the database table has around 20 million entries and 25 fields.
so, the report fetches the distinct values of two fields using one select query.
so, the first select query fetches around 150 entries from the table for 2 fields.
then it applies some logic and eliminates some entries and makes entries around 80-90...
and then it again applies the select query on the same table using for all entries applied on the internal table with 80-90 entries...
in short,
it accesses the same database table twice.
so, i tried to get the database table in internal table and apply the logic on internal table and delete the unwanted entries.. but it gave me memory dump, and it wont take that huge amount of data into abap memory...
is around 80-90 entries too much for using "for all entries"?
the logic that is applied to eliminate the entries from internal table is too long, and hence cannot be converted into where clause to convert it into single select..
i really cant find the way out...
please help.chinmay kulkarni wrote:Chinmay,
Even though you tried to ask the question with detailed explanation, unfortunately it is still not clear.
It is perfectly fine to access the same database twice. If that is working for you, I don't think there is any need to change the logic. As Rob mentioned, 80 or 8000 records is not a problem in "for all entries" clause.
>
> so, i tried to get the database table in internal table and apply the logic on internal table and delete the unwanted entries.. but it gave me memory dump, and it wont take that huge amount of data into abap memory...
>
It is not clear what you tried to do here. Did you try to bring all 20 million records into an internal table? That will certainly cause the program to short dump with memory shortage.
> the logic that is applied to eliminate the entries from internal table is too long, and hence cannot be converted into where clause to convert it into single select..
>
That is fine. Actually, it is better (performance wise) to do much of the work in ABAP than writing a complex WHERE clause that might bog down the database. -
SD Flow program using For all entries.
using simple ALV grid: I have the urgent requirement of changing the following program using 'For all entries' instead of joins and I should not use 'TABLES' -- For top-of-page I need to get dynamic fields like if I select company code in the selection screen then I need to get 'This report is base on COMPANY CODE'.
This program is about sales flow where i shud get only those records that have ebeln in vbak, delivery, invoice.
The original program is as follows:
*& Report ZSD_DOCU_FLOW *
REPORT zsd_docu_flow NO STANDARD PAGE HEADING .
* Program : ZCOS_SALES *
* Dev. Class : ZSD
* Functional :
* Created on : *
* Project :
* CR Number :
* Transaction : ZSDCSUT *
* Description : * Sales document life cylce for given customer
* to declaired period displaying the sales document
* details ,with relevant del details and corresponding
* Invocie Details
*----------- Tables Declaration -----------*
TABLES: vbak,vbap,vbfa,kna1,vbrk,vbrp,likp,lips,t001.
TYPE-POOLS : slis.
*----------- Internal Tables Declaration -----------*
* Internal Table for Sales Order data *
DATA: BEGIN OF it_so OCCURS 0,
vbeln LIKE vbak-vbeln,
kunnr LIKE vbak-kunnr,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng,
netwr LIKE vbap-netwr,
END OF it_so.
* Internal Table for Delivery Order data *
DATA: BEGIN OF it_del OCCURS 0,
delnum LIKE likp-vbeln,
lfdat LIKE likp-lfdat,
delitem LIKE lips-posnr,
lfimg LIKE lips-lfimg,
END OF it_del.
* Internal Table for Invoice data *
DATA: BEGIN OF it_inv OCCURS 0,
invnum LIKE vbrk-vbeln,
invitem LIKE vbrp-posnr,
fkimg LIKE vbrp-fkimg,
amount LIKE vbrp-netwr,
END OF it_inv.
* Internal Table for Final data *
DATA: BEGIN OF it_final OCCURS 0,
vbeln LIKE vbak-vbeln,
posnr LIKE vbap-posnr,
kunnr LIKE vbak-kunnr,
name LIKE kna1-name1,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng,
netwr LIKE vbap-netwr,
delnum LIKE likp-vbeln,
lfdat LIKE likp-lfdat,
delitem LIKE lips-posnr,
lfimg LIKE lips-lfimg,
invnum LIKE vbrk-vbeln,
invitem LIKE vbrp-posnr,
fkimg LIKE vbrp-fkimg,
amount LIKE vbrp-netwr,
END OF it_final.
*----------- Variables Declaration -----------*
DATA: v_name LIKE kna1-kunnr," variable for customer name
v_delnum LIKE likp-vbeln," variable for delivery number
v_invnum LIKE vbrk-vbeln." variable for invoce number
DATA : ls_layout TYPE slis_layout_alv,
it_fcat TYPE slis_t_fieldcat_alv ,
wa_fcat TYPE slis_fieldcat_alv,
lh TYPE slis_t_listheader,
ls TYPE slis_listheader,
it_events TYPE slis_t_event ,
ls_event TYPE slis_alv_event ,
i_sort TYPE slis_t_sortinfo_alv,
w_var TYPE i.
DATA : l_date(10).
DATA : l_date1(20).
DATA : l_repid LIKE trdir-name.
l_repid = 'ZSD_DOCU_FLOW1'.
*----------- Select-options & parameters Declaration ---*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs LIKE vbak-bukrs_vf,
p_vkorg LIKE vbak-vkorg,
p_vtweg LIKE vbak-vtweg,
p_spart LIKE vbak-spart.
SELECT-OPTIONS: s_kunnr FOR vbak-kunnr,
s_audat FOR vbak-audat.
SELECTION-SCREEN END OF BLOCK b1.
*----------- AT SELECTION-SCREEN --------------------------*
AT SELECTION-SCREEN.
SELECT SINGLE * FROM t001 INTO t001
WHERE bukrs = p_bukrs.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Enter a Valid Company Code'.
ENDIF.
SELECT SINGLE * FROM vbak INTO vbak
WHERE vkorg = p_vkorg.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Enter a Valid Sales Organization'.
ENDIF.
SELECT SINGLE * FROM vbak INTO vbak
WHERE vtweg = p_vtweg.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Enter a Valid distribution channel'.
ENDIF.
SELECT SINGLE * FROM vbak INTO vbak
WHERE spart = p_spart.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Enter a Valid Division'.
ENDIF.
SELECT SINGLE * FROM kna1 INTO kna1
WHERE kunnr IN s_kunnr.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Enter a Valid Customer Number'.
ENDIF.
*----------- START-OF-SELECTION-----------------------------*
START-OF-SELECTION.
ls-typ = 'H'.
ls-info = 'Sales Document Flow'.
APPEND ls TO lh.
ls-typ = 'S'.
WRITE: sy-datum TO l_date USING EDIT MASK '__/__/____'.
CONCATENATE 'DATE :' l_date INTO l_date1 SEPARATED BY space.
ls-info = l_date1.
APPEND ls TO lh.
PERFORM field_cat.
PERFORM t_sort_build USING i_sort.
PERFORM get-data.
*----------- END-OF-SELECTION-----------------------------*
END-OF-SELECTION.
IF it_final[] IS INITIAL.
MESSAGE i000(8i) WITH 'No data Found'.
EXIT.
ENDIF.
PERFORM print-data.
*& Form get-data
* text
* --> p1 text
* <-- p2 text
FORM get-data .
* Accesing Sales Data
SELECT a~vbeln a~kunnr b~posnr b~matnr b~kwmeng b~netwr
INTO CORRESPONDING FIELDS OF TABLE it_so
FROM vbak AS a INNER JOIN vbap AS b
ON a~vbeln = b~vbeln
WHERE a~bukrs_vf = p_bukrs
AND a~vkorg = p_vkorg
AND a~vtweg = p_vtweg
AND a~spart = p_spart
AND a~kunnr IN s_kunnr
AND a~audat IN s_audat.
LOOP AT it_so.
SELECT SINGLE name1 FROM kna1 INTO v_name
WHERE kunnr = it_so-kunnr.
SELECT SINGLE vbeln FROM vbfa INTO v_delnum
WHERE vbelv = it_so-vbeln
AND vbtyp_n = 'J'.
IF sy-subrc = 0.
SELECT SINGLE vbeln FROM vbfa INTO v_invnum
WHERE vbelv = v_delnum
AND vbtyp_n = 'M'.
ENDIF.
MOVE-CORRESPONDING it_so TO it_final.
it_final-name = v_name.
it_final-delnum = v_delnum.
it_final-invnum = v_invnum.
APPEND it_final.
CLEAR it_final.
CLEAR v_delnum.
CLEAR v_invnum.
ENDLOOP.
LOOP AT it_final.
IF it_final-delnum NE ' '.
* Reading Del Data.
SELECT SINGLE a~vbeln a~lfdat b~posnr b~lfimg INTO
(it_del-delnum, it_del-lfdat, it_del-delitem,
it_del-lfimg ) FROM
likp AS a INNER JOIN lips AS b ON a~vbeln = b~vbeln
WHERE a~vbeln = it_final-delnum
AND b~posnr = it_final-posnr.
MOVE-CORRESPONDING it_del TO it_final.
MODIFY it_final.
ENDIF.
IF it_final-invnum NE ' '.
* Reading Invoice Data.
SELECT SINGLE vbeln posnr fkimg netwr INTO
(it_inv-invnum, it_inv-invitem, it_inv-fkimg, it_inv-amount )
FROM vbrp WHERE vbeln = it_final-invnum
AND posnr = it_final-posnr.
MOVE-CORRESPONDING it_inv TO it_final.
MODIFY it_final.
ENDIF.
ENDLOOP.
ENDFORM. " get-data
*& Form print-data
* text
* --> p1 text
* <-- p2 text
FORM print-data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = l_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = 'TOP'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = it_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = i_sort[]
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_final.
* 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. " print-data
*& Form field_cat
* text
* --> p1 text
* <-- p2 text
FORM field_cat .
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'VBELN'.
wa_fcat-key = 'X'.
wa_fcat-ref_fieldname = 'VBELN'.
wa_fcat-ref_tabname = 'VBAK'.
wa_fcat-seltext_m = 'Sales Order NO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'POSNR'.
wa_fcat-ref_fieldname = 'POSNR'.
wa_fcat-ref_tabname = 'VBAP'.
wa_fcat-seltext_m = 'SalesItemNO'.
wa_fcat-fix_column = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'KUNNR'.
wa_fcat-seltext_m = 'CUSTNUM'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'NAME'.
wa_fcat-seltext_m = 'CUSTNAME'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'MATNUM'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'KWMENG'.
wa_fcat-seltext_m = 'Sales Quantity'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'NETWR'.
wa_fcat-seltext_m = 'Value'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'DELNUM'.
wa_fcat-seltext_m = 'DeloveryNum'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'DELITEM'.
wa_fcat-seltext_m = 'DelItemNO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'LFDAT'.
wa_fcat-seltext_m = 'DelDate'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'LFIMG'.
wa_fcat-seltext_m = 'DelQuantity'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'INVNUM'.
wa_fcat-seltext_m = 'InvoiceNum'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'INVITEM'.
wa_fcat-seltext_m = 'InvoiceItem'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'FKIMG'.
wa_fcat-seltext_m = 'INVQuantity'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
wa_fcat-col_pos = w_var.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'AMOUNT'.
wa_fcat-seltext_m = 'INVvalue'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ADD 1 TO w_var.
ENDFORM. " field_cat
*& Form top
* text
FORM t_sort_build USING l_sort TYPE slis_t_sortinfo_alv.
DATA: ls_sort TYPE slis_sortinfo_alv.
ls_sort-fieldname = 'VBELN'.
ls_sort-spos = 1.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO l_sort.
ls_sort-fieldname = 'KUNNR'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
APPEND ls_sort TO l_sort.
ENDFORM. "t_sort_bui
FORM top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = lh
* I_LOGO =
* I_END_OF_LIST_GRID =
ENDFORM. "TOP
===========================================================================
I have started the new program but i have trouble with the final internal table. Since i'm using For all entries I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
*& Report Z_SDFLOW *
REPORT Z_SDFLOW NO STANDARD PAGE HEADING.
********* TABLES TO BE USED ***********************
**** VBAK - SALES DOCUMENT HEADER
* VBAP - SALES ITEM
* VBFA - SALES DOCUMENT FLOW
* KNA1- CUSTOMER MASTER
* VBRK - BILLING DOCUMENT HEADER
* VBRP - BLLING DOCUMENT ITEM
* LIKP - DELIVERY HEADER
* LIPS - DELIVERY ITEM
* TOO1 - COMPANY CODES
* SLIS.
TYPE-POOLS: SLIS.
** STRUCTURE DECLARATIONS ********
**STRUCTURE FOR ENQUIRY.
**STRUCTURE FOR QUOTATION.
**STRUCTURE FOR SALES ORDER HEADER- VBAK.
TYPES: BEGIN OF XT_VBAK,
VBELN TYPE VBAK-VBELN, "SALES DOCUMENT NUMBER
KUNNR TYPE VBAK-KUNNR, " SOLD-TO-PARTY
END OF XT_VBAK.
**STRUCTURE FOR SALES ORDER ITEM-VBAP
TYPES: BEGIN OF XT_VBAP,
POSNR TYPE VBAP-POSNR, " SALES ITEM NUMBER
MATNR TYPE VBAP-MATNR, " MATERIAL NUMBER
KWMENG TYPE VBAP-KWMENG, " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
NETWR TYPE VBAP-NETWR, " NET VALUE OF THE ORDER ITEM
END OF XT_VBAP.
** STRUCTURE FOR DELIVERY HEADER -LIKP
TYPES: BEGIN OF XT_LIKP,
DELVBELN TYPE LIKP-VBELN, "DELIVERY DOCUMENT NUMBER
LFDAT TYPE LIKP-LFDAT, " DELIVERY DATE
END OF XT_LIKP.
**STRUCTURE FOR DELIVERY ITEM - LIPS
TYPES: BEGIN OF XT_LIPS,
DELPOSNR TYPE LIPS-POSNR, " DELIVERY ITEM NUMBER
LFIMG TYPE LIPS-LFIMG, " ACTUAL QUANTITY DELIVERED
END OF XT_LIPS.
**STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
TYPES: BEGIN OF XT_VBRK,
INVVBELN TYPE VBRK-VBELN, "BILLING DOCUMENT NUMBER
END OF XT_VBRK.
**STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
TYPES: BEGIN OF XT_VBRP,
INVPOSNR TYPE VBRP-POSNR, "BILLING ITEM NUMBER
FKIMG TYPE VBRP-FKIMG, "ACTUAL INVOICED QUANTITY
INVNETWR TYPE VBRP-NETWR, "NET VALUE OF THE BILLING ITEM
END OF XT_VBRP.
**STRUCTURE FOR FINAL INTERNAL TABLE.
TYPES: BEGIN OF XT_FINAL,
VBELN TYPE VBAK-VBELN,
DELVBELN TYPE LIKP-VBELN,
INVBELN TYPE VBRK-VBELN,
KUNNR TYPE VBAK-KUNNR,
POSNR TYPE VBAP-POSNR,
DELPOSNT TYPE LIPS-POSNR,
INVPOSNR TYPE VBRP-POSNR,
MATNR TYPE VBAP-MATNR,
KWMENG TYPE VBAP-KWMENG,
NETWR TYPE VBAP-NETWR,
INVNETWR TYPE VBRP-NETWR,
LFDAT TYPE LIKP-LFDAT,
LFIMG TYPE LIPS-LFIMG,
FKIMG TYPE VBRP-FKIMG,
NAME1 TYPE KNA1-NAME1,
END OF XT_FINAL.
**DATA DECLARATIONS
DATA: V_NAME1 TYPE KNA1-NAME1, "#EC *
V_DELVBELN TYPE LIKP-VBELN,
V_INVVBELN TYPE VBRK-VBELN,
V_BUKRS TYPE T001-BUKRS, "COMPANY CODE "#EC *
V_AUDAT TYPE VBAK-AUDAT,
V_VKORG TYPE VBAK-VKORG,
V_VKGRP TYPE VBAK-VKGRP,
V_SPART TYPE VBAK-SPART.
**INTERNAL TABLE DECLARATIONS
DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
WA_VBAK TYPE XT_VBAK,
IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
WA_VBAP TYPE XT_VBAP,
IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
WA_LIKP TYPE XT_LIKP,
IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
WA_LIPS TYPE XT_LIPS,
IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
WA_VBRK TYPE XT_VBRK,
IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
WA_VBRP TYPE XT_VBRP,
IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
WA_FINAL TYPE XT_FINAL.
**ALV DECLARATIONS
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IT_LSTHDR TYPE SLIS_T_LISTHEADER,
WA_LSTHDR TYPE SLIS_LISTHEADER,
IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
S_VBELN FOR WA_VBAK-VBELN, "SALES DOCUMENT NUMBER
S_KUNNR FOR WA_VBAK-KUNNR, "SOLD-TO-PARTY
S_AUDAT FOR V_AUDAT, "SALES DOCUMENT DATE
S_VKORG FOR V_VKORG, "SALES ORGANISATION
S_VKGRP FOR V_VKGRP, "SALES GROUP
S_SPART FOR V_SPART. "DIVISION
SELECTION-SCREEN END OF BLOCK b1.
*****************SCREEN VALIDATION***************
AT SELECTION-SCREEN.
SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
ENDIF.
SELECT SINGLE VBELN FROM VBAK INTO
CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
ENDIF.
SELECT SINGLE KUNNR FROM VBAK INTO
CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
ENDIF.
SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
ENDIF.
SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
ENDIF.
SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
ENDIF.
SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
ENDIF.
PERFORM GET_DATA.
*& Form GET_DATA
FORM GET_DATA .
SELECT VBELN KUNNR
INTO TABLE IT_VBAK
FROM VBAK
WHERE VBELN IN S_VBELN.
* BUKRS_VF IN S_BUKRS AND
* VKORG IN S_VKORG AND
* VKGRP IN S_VKGRP AND
* SPART IN S_SPART AND
* KUNNR IN S_KUNNR AND
* AUDAT IN S_AUDAT.
IF IT_VBAK[] IS NOT INITIAL.
SELECT POSNR MATNR KWMENG NETWR
INTO TABLE IT_VBAP
FROM VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
IF IT_VBAK[] IS NOT INITIAL.
SELECT VBELN LFDAT
INTO TABLE IT_LIKP
FROM LIKP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
IF IT_VBAP[] IS NOT INITIAL.
SELECT POSNR LFIMG
INTO TABLE IT_LIPS
FROM LIPS
FOR ALL ENTRIES IN IT_VBAP
WHERE POSNR = IT_VBAP-POSNR.
ENDIF.
IF IT_LIKP[] IS NOT INITIAL.
SELECT VBELN
INTO TABLE IT_VBRK
FROM VBRK
FOR ALL ENTRIES IN IT_LIKP
WHERE VBELN = IT_LIKP-DELVBELN.
ENDIF.
IF IT_LIPS[] IS NOT INITIAL.
SELECT POSNR FKIMG NETWR
INTO TABLE IT_VBRP
FROM VBRP
FOR ALL ENTRIES IN IT_LIPS
WHERE POSNR = IT_LIPS-DELPOSNR.
ENDIF.
ENDFORM. " GET_DATA
Edited by: srk s on Jan 29, 2008 7:33 PM
Edited by: Alvaro Tejada Galindo on Jan 29, 2008 9:49 AMHi Satish,
I have started the new program but i have trouble with the final internal table. Since i'm using For all entries, I have declared internal tables for each table. My incomplete new program is as follows(not sure if the logic is correct till what I have coded):
*& Report Z_SDFLOW *
REPORT Z_SDFLOW NO STANDARD PAGE HEADING.
********* TABLES TO BE USED ***********************
**** VBAK - SALES DOCUMENT HEADER
* VBAP - SALES ITEM
* VBFA - SALES DOCUMENT FLOW
* KNA1- CUSTOMER MASTER
* VBRK - BILLING DOCUMENT HEADER
* VBRP - BLLING DOCUMENT ITEM
* LIKP - DELIVERY HEADER
* LIPS - DELIVERY ITEM
* TOO1 - COMPANY CODES
* SLIS.
TYPE-POOLS: SLIS.
** STRUCTURE DECLARATIONS ********
**STRUCTURE FOR ENQUIRY.
**STRUCTURE FOR QUOTATION.
**STRUCTURE FOR SALES ORDER HEADER- VBAK.
TYPES: BEGIN OF XT_VBAK,
VBELN TYPE VBAK-VBELN, "SALES DOCUMENT NUMBER
KUNNR TYPE VBAK-KUNNR, " SOLD-TO-PARTY
END OF XT_VBAK.
**STRUCTURE FOR SALES ORDER ITEM-VBAP
TYPES: BEGIN OF XT_VBAP,
POSNR TYPE VBAP-POSNR, " SALES ITEM NUMBER
MATNR TYPE VBAP-MATNR, " MATERIAL NUMBER
KWMENG TYPE VBAP-KWMENG, " CUMMULATIVE ORDER QUANTITY IN SALES UNITS
NETWR TYPE VBAP-NETWR, " NET VALUE OF THE ORDER ITEM
END OF XT_VBAP.
** STRUCTURE FOR DELIVERY HEADER -LIKP
TYPES: BEGIN OF XT_LIKP,
DELVBELN TYPE LIKP-VBELN, "DELIVERY DOCUMENT NUMBER
LFDAT TYPE LIKP-LFDAT, " DELIVERY DATE
END OF XT_LIKP.
**STRUCTURE FOR DELIVERY ITEM - LIPS
TYPES: BEGIN OF XT_LIPS,
DELPOSNR TYPE LIPS-POSNR, " DELIVERY ITEM NUMBER
LFIMG TYPE LIPS-LFIMG, " ACTUAL QUANTITY DELIVERED
END OF XT_LIPS.
**STRUCTURE FOR BILLING DOCUMENT HEADER -VBRK
TYPES: BEGIN OF XT_VBRK,
INVVBELN TYPE VBRK-VBELN, "BILLING DOCUMENT NUMBER
END OF XT_VBRK.
**STRUCTURE FOR BILLING DOCUMENT ITEM - VBRP
TYPES: BEGIN OF XT_VBRP,
INVPOSNR TYPE VBRP-POSNR, "BILLING ITEM NUMBER
FKIMG TYPE VBRP-FKIMG, "ACTUAL INVOICED QUANTITY
INVNETWR TYPE VBRP-NETWR, "NET VALUE OF THE BILLING ITEM
END OF XT_VBRP.
**STRUCTURE FOR FINAL INTERNAL TABLE.
TYPES: BEGIN OF XT_FINAL,
VBELN TYPE VBAK-VBELN,
DELVBELN TYPE LIKP-VBELN,
INVBELN TYPE VBRK-VBELN,
KUNNR TYPE VBAK-KUNNR,
POSNR TYPE VBAP-POSNR,
DELPOSNT TYPE LIPS-POSNR,
INVPOSNR TYPE VBRP-POSNR,
MATNR TYPE VBAP-MATNR,
KWMENG TYPE VBAP-KWMENG,
NETWR TYPE VBAP-NETWR,
INVNETWR TYPE VBRP-NETWR,
LFDAT TYPE LIKP-LFDAT,
LFIMG TYPE LIPS-LFIMG,
FKIMG TYPE VBRP-FKIMG,
NAME1 TYPE KNA1-NAME1,
END OF XT_FINAL.
**DATA DECLARATIONS
DATA: V_NAME1 TYPE KNA1-NAME1, "#EC *
V_DELVBELN TYPE LIKP-VBELN,
V_INVVBELN TYPE VBRK-VBELN,
V_BUKRS TYPE T001-BUKRS, "COMPANY CODE "#EC *
V_AUDAT TYPE VBAK-AUDAT,
V_VKORG TYPE VBAK-VKORG,
V_VKGRP TYPE VBAK-VKGRP,
V_SPART TYPE VBAK-SPART.
**INTERNAL TABLE DECLARATIONS
DATA: IT_VBAK TYPE STANDARD TABLE OF XT_VBAK,
WA_VBAK TYPE XT_VBAK,
IT_VBAP TYPE STANDARD TABLE OF XT_VBAP,
WA_VBAP TYPE XT_VBAP,
IT_LIKP TYPE STANDARD TABLE OF XT_LIKP,
WA_LIKP TYPE XT_LIKP,
IT_LIPS TYPE STANDARD TABLE OF XT_LIPS,
WA_LIPS TYPE XT_LIPS,
IT_VBRK TYPE STANDARD TABLE OF XT_VBRK,
WA_VBRK TYPE XT_VBRK,
IT_VBRP TYPE STANDARD TABLE OF XT_VBRP,
WA_VBRP TYPE XT_VBRP,
IT_FINAL TYPE STANDARD TABLE OF XT_FINAL,
WA_FINAL TYPE XT_FINAL.
**ALV DECLARATIONS
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IT_LSTHDR TYPE SLIS_T_LISTHEADER,
WA_LSTHDR TYPE SLIS_LISTHEADER,
IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: S_BUKRS FOR V_BUKRS NO INTERVALS NO-EXTENSION,
S_VBELN FOR WA_VBAK-VBELN, "SALES DOCUMENT NUMBER
S_KUNNR FOR WA_VBAK-KUNNR, "SOLD-TO-PARTY
S_AUDAT FOR V_AUDAT, "SALES DOCUMENT DATE
S_VKORG FOR V_VKORG, "SALES ORGANISATION
S_VKGRP FOR V_VKGRP, "SALES GROUP
S_SPART FOR V_SPART. "DIVISION
SELECTION-SCREEN END OF BLOCK b1.
*****************SCREEN VALIDATION***************
AT SELECTION-SCREEN.
SELECT SINGLE BUKRS FROM T001 INTO V_BUKRS WHERE BUKRS IN S_BUKRS."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID COMPANY CODE'.
ENDIF.
SELECT SINGLE VBELN FROM VBAK INTO
CORRESPONDING FIELDS OF WA_VBAK WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER VALID SALES DOCUMENT NUMBER'.
ENDIF.
SELECT SINGLE KUNNR FROM VBAK INTO
CORRESPONDING FIELDS OF WA_VBAK WHERE KUNNR IN S_KUNNR. "EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID CUSTOMER NUMBER'.
ENDIF.
SELECT SINGLE AUDAT FROM VBAK INTO V_AUDAT WHERE AUDAT IN S_AUDAT."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DOCUMENT DATE'.
ENDIF.
SELECT SINGLE VKORG FROM VBAK INTO V_VKORG WHERE VKORG IN S_VKORG."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES ORGANISATION'.
ENDIF.
SELECT SINGLE VKGRP FROM VBAK INTO V_VKGRP WHERE VKGRP IN S_VKGRP."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES GROUP'.
ENDIF.
SELECT SINGLE SPART FROM VBAK INTO V_SPART WHERE SPART IN S_SPART."#EC *
IF SY-SUBRC <> 0.
MESSAGE E000(Z_SD2) WITH 'ENTER A VALID SALES DIVISION'.
ENDIF.
PERFORM GET_DATA.
*& Form GET_DATA
FORM GET_DATA .
SELECT VBELN KUNNR
INTO TABLE IT_VBAK
FROM VBAK
WHERE VBELN IN S_VBELN.
* BUKRS_VF IN S_BUKRS AND
* VKORG IN S_VKORG AND
* VKGRP IN S_VKGRP AND
* SPART IN S_SPART AND
* KUNNR IN S_KUNNR AND
* AUDAT IN S_AUDAT.
IF IT_VBAK[] IS NOT INITIAL.
SELECT POSNR MATNR KWMENG NETWR
INTO TABLE IT_VBAP
FROM VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
IF IT_VBAK[] IS NOT INITIAL.
SELECT VBELN LFDAT
INTO TABLE IT_LIKP
FROM LIKP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDIF.
IF IT_VBAP[] IS NOT INITIAL.
SELECT POSNR LFIMG
INTO TABLE IT_LIPS
FROM LIPS
FOR ALL ENTRIES IN IT_VBAP
WHERE POSNR = IT_VBAP-POSNR.
ENDIF.
IF IT_LIKP[] IS NOT INITIAL.
SELECT VBELN
INTO TABLE IT_VBRK
FROM VBRK
FOR ALL ENTRIES IN IT_LIKP
WHERE VBELN = IT_LIKP-DELVBELN.
ENDIF.
IF IT_LIPS[] IS NOT INITIAL.
SELECT POSNR FKIMG NETWR
INTO TABLE IT_VBRP
FROM VBRP
FOR ALL ENTRIES IN IT_LIPS
WHERE POSNR = IT_LIPS-DELPOSNR.
ENDIF.
ENDFORM. " GET_DATA
Code Formatted by: Alvaro Tejada Galindo on Jan 29, 2008 9:48 AM -
Use of for all entries in abap
Please tell me how to use "for all entries" in linking two
tables for retrieve informations by using corresponding fields in both the tables.plz send the codings.REPORT YVCHIERSEQ .
TYPE-POOLS:SLIS.
DATA:T_VBAK TYPE STANDARD TABLE OF VBAK INITIAL SIZE 0,
T_VBAP TYPE STANDARD TABLE OF VBAP INITIAL SIZE 0,
W_VBAK TYPE VBAK,
W_VBAP TYPE VBAP,
G_VBELN TYPE VBAK-VBELN,
W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
W_KEYINFO TYPE SLIS_KEYINFO_ALV.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS:S_VBELN FOR G_VBELN.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
CLEAR:W_VBAK,
W_VBAP.
REFRESH:T_VBAK,
T_VBAP.
START-OF-SELECTION.
PERFORM SUB_GET_VBAK.
PERFORM SUB_GET_VBAP.
PERFORM SUB_DISP_OUTPUT.
FORM SUB_GET_VBAK.
SELECT * FROM VBAK INTO TABLE T_VBAK WHERE VBELN IN S_VBELN.
ENDFORM.
FORM SUB_GET_VBAP.
SELECT * FROM VBAP INTO TABLE T_VBAP FOR ALL ENTRIES IN T_VBAK WHERE
VBELN = T_VBAK-VBELN.
ENDFORM.
FORM SUB_DISP_OUTPUT.
W_FIELDCAT-COL_POS = 1.
W_FIELDCAT-FIELDNAME = 'VBELN'.
W_FIELDCAT-SELTEXT_M = 'SALESORDER'.
W_FIELDCAT-TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 2.
W_FIELDCAT-FIELDNAME = 'ERNAM'.
W_FIELDCAT-SELTEXT_M = 'NAME'.
W_FIELDCAT-TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 3.
W_FIELDCAT-FIELDNAME = 'VBTYP'.
W_FIELDCAT-SELTEXT_M = 'SD CATEGORY'.
W_FIELDCAT-TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 4.
W_FIELDCAT-FIELDNAME = 'KUNNR'.
W_FIELDCAT-SELTEXT_M = 'SOLD TO PARTY'.
W_FIELDCAT-TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 5.
W_FIELDCAT-FIELDNAME = 'NETWR'.
W_FIELDCAT-SELTEXT_M = 'NET VALUE'.
W_FIELDCAT-TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 1.
W_FIELDCAT-FIELDNAME = 'POSNR'.
W_FIELDCAT-SELTEXT_M = 'SALES ITEM'.
W_FIELDCAT-TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 2.
W_FIELDCAT-FIELDNAME = 'MATNR'.
W_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.
W_FIELDCAT-TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 3.
W_FIELDCAT-FIELDNAME = 'MATKL'.
W_FIELDCAT-SELTEXT_M = 'MAT GROUP'.
W_FIELDCAT-TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-COL_POS = 4.
W_FIELDCAT-FIELDNAME = 'NETWR'.
W_FIELDCAT-SELTEXT_M = 'NET VALUE'.
W_FIELDCAT-TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO T_FIELDCAT.
CLEAR W_FIELDCAT.
W_KEYINFO-HEADER01 = 'VBELN'.
W_KEYINFO-ITEM01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
IT_FIELDCAT = T_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = 'VBAK'
i_tabname_item = 'VBAP'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = W_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = T_VBAK
t_outtab_item = T_VBAP
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. -
Performance Problems with "For all Entries" and a big internal table
We have big Performance Problems with following Statement:
SELECT * FROM zeedmt_zmon INTO TABLE gt_zmon_help
FOR ALL ENTRIES IN gt_zmon_help
WHERE
status = 'IAI200' AND
logdat IN gs_dat AND
ztrack = gt_zmon_help-ztrack.
In the internal table gt_zmon_help are over 1000000 entries.
Anyone an Idea how to improve the Performance?
Thank you!>
Matthias Weisensel wrote:
> We have big Performance Problems with following Statement:
>
>
SELECT * FROM zeedmt_zmon INTO TABLE gt_zmon_help
> FOR ALL ENTRIES IN gt_zmon_help
> WHERE
> status = 'IAI200' AND
> logdat IN gs_dat AND
> ztrack = gt_zmon_help-ztrack.
>
> In the internal table gt_zmon_help are over 1000000 entries.
> Anyone an Idea how to improve the Performance?
>
> Thank you!
You can't expect miracles. With over a million entries in your itab any select is going to take a bit of time. Do you really need all these records in the itab? How many records is the select bringing back? I'm assuming that you have got and are using indexes on your ZEEDMT_ZMON table.
In this situation, I'd first of all try to think of another way of running the query and restricting the amount of data, but if this were not possible I'd just run it in the background and accept that it is going to take a long time. -
How to use single buffered table with FOR ALL ENTRIES KEYWORD
Hai,
I'm Using TJ02T Database table, It is single buffered table but at the same time I want to use FOR ALL ENTRIES KEYWORD , Please Help me.
Regards,
S.JananiHi,
FOR ALL ENTRIES will not depend on the buffering nature of the table. The single buffered table will only only buffer one record into memory. You can still use the statement to query the values, but it may have performance problems if the data volume is high since the records are not completely buffered into memory, the time will spent in getting data from DB.
Thanks..
Preetham S
Maybe you are looking for
-
Settlement of WBS to the Fixed Asset in another company code
Hi Friends, I have another problem with WBS elements and fixed assets. I used WBS elements to create a AUC by AUC settlement in company code A. Then I put a second settlement rule with settlement type "FUL" in WBS element and settle AUC to a deprecia
-
Hello! I was wondering if a magic HP angel would like to tell me what drivers I can download for these two Base system devices? I am working on an HP Probook 4730s running Windows 8.1 Professional. Please let me know if there are any other details I
-
Any word on a replacement for mavericks
I'm wondering if anyone has heard any word about a replacement for Mavericks. Even after this long using it I still think it is a really poor os. If it were not such a chore I woud revert back to Mountain lion or Snow Leopard.
-
More FlexMotion installer BUGS!!!!
I found out some more information about the bugs in the FlexMotion Installer. It seems if I log into an account with admin privilages, then everything runs ok. If I log into another account (without admin privilages), like say THE PRODUCTION ACCOUNT,
-
Strange numbers in TV Programmes view
Since updating iTunes to version 11.1.3.8 yesterday, some strange numbers and letters have appeared in the Programmes view of TV programs in iTunes. The numbers appear on the left hand side by each episode of any given TV series. It happens to all o