Regarding calulation perform in alv
hi,
i have to perform some calculation in my alv but it is not working well.i am giving here example what i am trying to do;---
QTY MRP total
2.000 1,200.00 2400
2.000 1,200.00- 2400
1.000 1,199.00- 1199-
1.000 1,199.00 1199
PERFORM FILLFIELD USING 'KUNNR' 'SAP CODE' '15'.
PERFORM FILLFIELD USING 'NAME1' 'PARTY NAME' '18'.
PERFORM FILLFIELD USING 'ORT01' 'LOCATION' '15'.
PERFORM FILLFIELD USING 'VBELN' 'REF BILL' '14'.
PERFORM FILLFIELD USING 'FKDAT' 'DATE' '12'.
PERFORM FILLFIELD USING 'ZUONR' 'BILL NO' '12'.
PERFORM FILLFIELD USING 'MATNR' 'MATERIAL' '18'.
PERFORM FILLFIELD USING 'MAKTX' 'DESCRIPTION' '20'.
PERFORM FILLFIELD USING 'FKIMG' 'QTY' '6'.
PERFORM FILLFIELD USING 'KZWI5' 'MRP' '8'.
PERFORM FILLFIELD USING 'KZWI3' 'DISCOUNT' '12'.
here in perform fillfield i want to multiply mrp filed with qty
Thanx/Regards,
Vaneet Thakur
Dear Vaneet,
I think Total here you mention is nothing but the multiplication of MRP and Qty field.
Is any thing more you required then elaborate in detail.
Regards,
VIjay
Similar Messages
-
Hi All,
Now i am working in Production system.
How can i check the performance for reports.
How can i find the report performance is low/high?
Please let me know the details.
Thanks
Vasu.Hi Vasu,
Use the search on the word "performance", you will got lot of answers which are related to queries.
There are lot of factrors involved regarding query performance :
1. Install BW stats and analyze the queries
2. Option of using aggregates is a good idea to consider
3. you can multi providers to do reporting for better query performance
4. Query Read Mode - Read when navigating and expanding hierarchies
5. Check if indices under ORACLE are degenerated. OSS Note 323090
OLAP Cache OSS Note # 456068
Also take a look to the OSS Note 567746 'Composite note BW 3.x performance: Query & Web' in which you can find all the info required...
Assign points if helpful
Bye
Dinesh -
Regarding the performance in report
Hi Abap Gurus,
i am working on the report. my requirement is that after executing the report data gets extracting after 11 hours.the required data is comonf perfectly. how to improve the performance. any tips to follow the performance in the report. if possible post the code.
Moderator Message: Please search the forum for available information.
Edited by: kishan P on Oct 19, 2010 4:50 PMHi,
Please check below thread;
Extract from ALV List
Regards
Jana -
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
FoziaHi 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 -
Regarding single click in alv's
hi guru's
i have a small problem.
iam using a alv grid display. after clicking on the row in alv , i need to navigate to a transaction mm03.
My problem is the navigation is happening in double-click. how can i use the single click option.
my program consists of:
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = l_c_struc
i_inclname = sy-repid
CHANGING
ct_fieldcat = fp_l_i_fieldcat
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = l_c_user_command
i_grid_title = text-004
is_layout = fp_wa_layout
it_fieldcat = fp_i_fieldcatalog
i_save = l_c_a
it_events = fp_i_event
TABLES
t_outtab = fp_i_makt
FORM at_user_command USING fp_ucom TYPE sy-ucomm
fp_selfield TYPE slis_selfield. "#EC *
CASE fp_ucom.
WHEN '&IC1'.
READ TABLE i_makt INTO wa_final
INDEX fp_selfield-tabindex.
IF sy-subrc EQ c_0.
SET PARAMETER ID 'MAT' FIELD wa_final-matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN OTHERS.
MESSAGE i009.
ENDCASE.
ENDFORM.
please give me a detailed description as iam new to abap programming.HI USE THIS EXAMPLE ,
use the hot spot for this option.
*& Report Z_TEST001
REPORT Z_TEST001.
TYPE-POOLS: slis.
tables: rseg.
DATA: begin of TAB_ARSEG occurs 0.
INCLUDE STRUCTURE RSEG.
DATA: END OF TAB_ARSEG.
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv.
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
START-OF-SELECTION.
<<< YOUR CODE >>> ***********************
select * from rseg into table tab_arseg .
END-OF-SELECTION.
perform build_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_buffer_active = space
i_callback_program = sy-repid
I_CALLBACK_USER_COMMAND = c_user_command
I_STRUCTURE_NAME =
IS_LAYOUT =
IT_FIELDCAT = T_FIELDCAT[]
TABLES
T_OUTTAB = TAB_ARSEG
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
**& Form USER_COMMAND
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM
I_SELFIELD TYPE SLIS_SELFIELD.
DATA: F_SUBRC LIKE SY-SUBRC,
s_arseg like tab_arseg.
READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg.
CASE F_UCOMM.
WHEN '&IC1'.
CASE i_SELFIELD-SEL_TAB_FIELD.
WHEN 'TAB_ARSEG-BELNR'.
CHECK NOT S_ARSEG-BELNR IS INITIAL.
SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR.
SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.
**& Form build_fieldcat
FORM build_fieldcat .
DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR FIELDCAT.
FIELDCAT-FIELDNAME = 'BELNR'.
FIELDCAT-TABNAME = 'TAB_ARSEG'.
FIELDCAT-REF_TABNAME = 'RSEG'.
FIELDCAT-REF_FIELDNAME = 'BELNR'.
fieldcat-hotspot = 'X'.
FIELDCAT-COL_POS = 1.
APPEND FIELDCAT TO t_fieldcat.
CLEAR FIELDCAT.
FIELDCAT-FIELDNAME = 'GJAHR'.
FIELDCAT-TABNAME = 'TAB_ARSEG'.
FIELDCAT-REF_TABNAME = 'RSEG'.
FIELDCAT-REF_FIELDNAME = 'GJAHR'.
FIELDCAT-COL_POS = 2.
APPEND FIELDCAT TO t_fieldcat.
ENDFORM. " build_fieldcat
REGARDS,
VENKAT. -
Hi
Can anyone tell how to insert checkboxes in to ALV and based on the checkboxes selected i want to display the data.
I have tried like this, but it is giving a dump as Field Symbol is not yet been assigned.
Data: c1(1).
wa_layout-box_fieldname = 'C1'.
wa_layout-box_tabname = 'INTTAB'.
Regards
Haritha.report zpl_om_assignment3.
type-pools : slis.
Table Declarations
tables : kona,
ebox,
kote008,
kote007,
kote006,
ekbo,
ekbe.
DATA DECLARATIONS ---- INTERNAL TABLES
data : begin of it_ebox occurs 0,
knumh like ebox-knumh,
vbeln like ebox-vbeln,
end of it_ebox.
data : begin of it_kona occurs 0,
knuma like kona-knuma,
boart like kona-boart,
bonem like kona-bonem,
bolif like kona-bolif,
datab like kona-datab,
datbi like kona-datbi,
kobog like kona-kobog,
botext like kona-botext,
bukrs like kona-bukrs,
ekorg like kona-ekorg,
ekgrp like kona-ekgrp,
end of it_kona.
data : begin of it_kote occurs 0,
kappl like kote008-kappl,
kschl like kote008-kschl,
ekorg like kote008-ekorg,
lifnr like kote008-lifnr,
datbi like kote008-datbi,
knuma like kote008-knuma,
datab like kote008-datab,
knumh like kote008-knumh,
end of it_kote.
data : begin of it_final occurs 0,
box type c,
knuma like kona-knuma, "Arrangement
boart like kona-boart, "Arrangement type
datab like kona-datab, "Validity data from
datbi like kona-datbi, "date to
knumh like kote008-knumh, "Condition Record
kobog like kona-kobog, "Condition type
botext like kona-botext, "Agreement desc
bonem like kona-bonem, "Rebate recipient
lifnr like kote008-lifnr, "Vendor number
name1 like lfa1-lifnr, "Vendor Name
ekorg like kote008-ekorg, "purchase organization
ebeln like ekbe-ebeln, "PO number
aedat like ekko-aedat, "PO Date
ebelp like ekbe-ebelp, "PO line item
matnr like ekbe-matnr, "MaterialNumber
werks like ekbe-werks, "Site Number
maktx like makt-maktx, "Material desc
matkl like mara-matkl, "Merchandise Category
menge like ekpo-menge, "Quantity
meins like ekpo-meins, "Unit of measure
gjahr like ekbe-gjahr, "Invoice Doc. Year
bldat like rbkp-bldat, "Invoice date
cpudt like ekbe-cpudt, "Inv. Update Date
belnr like ekbe-belnr, "Invoice Number
xblnr like rbkp-xblnr, "Reference
buzei like ekbe-buzei, "Invoice Line Item
dmbtr like ekbe-dmbtr, "Dollar Amount
shkzg like ekbe-shkzg, "Debit/Credit ind
bukrs like kona-bukrs, "Company code
end of it_final.
data : begin of it_ekbo occurs 0,
ebeln like ekbo-ebeln,
ebelp like ekbe-ebelp,
knumh like ekbo-knumh,
kopos like ekbo-kopos,
budat like ekbo-budat,
belnr like ekbo-belnr,
buzei like ekbo-buzei,
lifnr like ekbo-lifnr,
matnr like ekbo-matnr,
bltypn like ekbo-bltypn,
bltypf like ekbo-bltypf,
etenr like ekbo-etenr,
zekkn like ekbo-zekkn,
vgabe like ekbo-vgabe,
gjahr like ekbo-gjahr,
end of it_ekbo.
data : begin of it_ekbe occurs 0,
ebeln like ekbe-ebeln,
ebelp like ekbe-ebelp,
EBELP LIKE IT_EKBO-EBELP,
gjahr like ekbe-gjahr,
belnr like ekbe-belnr,
buzei like ekbe-buzei,
dmbtr like ekbe-dmbtr,
shkzg like ekbe-shkzg,
cpudt like ekbe-cpudt,
matnr like ekbe-matnr,
werks like ekbe-werks,
end of it_ekbe.
data : begin of it_lfa1 occurs 0,
lifnr like lfa1-lifnr,
name1 like lfa1-name1,
end of it_lfa1.
data : begin of it_mara occurs 0,
matnr like mara-matnr,
matkl like mara-matkl,
end of it_mara.
data : begin of it_makt occurs 0,
matnr like makt-matnr,
maktx like makt-maktx,
end of it_makt.
data : begin of it_ekko occurs 0,
ebeln like ekko-ebeln,
aedat like ekko-aedat,
end of it_ekko.
data : begin of it_ekpo occurs 0,
ebeln like ekpo-ebeln,
menge like ekpo-menge,
meins like ekpo-meins,
end of it_ekpo.
data : begin of it_rbkp occurs 0,
belnr like rbkp-belnr,
bldat like rbkp-bldat,
xblnr like rbkp-xblnr,
end of it_rbkp.
data : begin of t_ekpo occurs 0,
mandt type mandt,
ebeln type ekpo-ebeln,
ebelp type ekpo-ebelp,
aedat type ekpo-aedat,
menge type ekpo-menge,
meins type ekpo-meins,
end of t_ekpo.
data : it_fieldcat type slis_t_fieldcat_alv,
it_fieldcat_ekpo type slis_t_fieldcat_alv with header line,
it_events type slis_t_event,
wa_events like line of it_events,
v_ucomm like sy-ucomm,
v_selfield type slis_selfield,
v_value type slis_entry,
it_layout type slis_layout_alv,
it_layout_ekpo type slis_layout_alv,
it_sort type slis_t_sortinfo_alv ,
wa_sort type slis_sortinfo_alv,
it_extab type slis_t_extab.
data : begin of it_ebeln occurs 1,
ebeln type ekpo-ebeln,
end of it_ebeln.
SELECTION-SCREEN ELEMENTS
Block for rebate Arrangements
selection-screen begin of block b1 with frame title text-001.
select-options : s_knuma for kona-knuma default '42',
s_boart for kona-boart,
s_bolif for kona-bolif.
selection-screen begin of line.
selection-screen comment (5) v_1 for field p_datab .
selection-screen position 33.
parameters : p_datab like kona-datab.
selection-screen position 52.
selection-screen comment (3) v_2 for field p_datbi .
selection-screen position 58.
parameters : p_datbi like kona-datbi.
selection-screen end of line.
selection-screen end of block b1.
Block for Condition Records
selection-screen begin of block b2 with frame title text-002.
selection-screen begin of line.
selection-screen comment (5) v_3 for field p_vfrom .
selection-screen position 33.
parameters : p_vfrom like kona-datab.
selection-screen position 52.
selection-screen comment (3) v_4 for field p_vto .
selection-screen position 58.
parameters : p_vto like kona-datbi.
selection-screen end of line.
selection-screen end of block b2.
Block for Organizational data
selection-screen begin of block b3 with frame title text-003.
select-options : s_ekorg for kona-ekorg,
s_ekgrp for kona-ekgrp.
selection-screen end of block b3.
parameters : p_dmemo as checkbox user-command chk,
p_vbeln like ebox-vbeln.
INITIALIZATION
initialization.
v_1 = v_3 = 'Validity Period' .
v_2 = v_4 = 'to' .
AT SELECTION-SCREEN OUTPUT
at selection-screen output.
loop at screen.
if p_dmemo = 'X'.
if screen-name = 'P_VBELN' and screen-group1 = 'CHK'.
screen-input = 'X'.
modify screen.
endif.
else.
if screen-name = 'P_VBELN'.
screen-input = ' '.
modify screen.
endif.
endif.
endloop.
START-OF-SELECTION
start-of-selection.
perform it_kona.
if p_dmemo = 'X'.
perform fetch_ebox.
endif.
perform it_kote.
perform it_ekbo.
perform it_ekbe.
perform it_lfa1.
perform it_mara.
perform it_makt.
perform it_ekko.
perform it_ekpo.
perform it_rbkp.
perform populate_final.
perform it_layout.
perform display.
perform get_events.
*& Form FETCH_EBOX
form fetch_ebox.
select knumh
lifnr
from ebox
INTO TABLE it_ebox
appending corresponding fields of
table it_kote
where vbeln eq p_vbeln.
endform. " FETCH_EBOX
*& Form it_kona
form it_kona .
if not p_datab is initial and not p_datbi is initial.
select knuma
boart
bonem
bolif
datab
datbi
kobog
botext
bukrs
ekorg
ekgrp
from kona into
table it_kona
where knuma in s_knuma and
boart in s_boart and
datab le p_datab and
datbi ge p_datbi and
bolif in s_bolif and
ekorg in s_ekorg and
ekgrp in s_ekgrp.
else.
select knuma
boart
bonem
bolif
datab
datbi
kobog
botext
bukrs
ekorg
ekgrp
from kona into
table it_kona
where knuma in s_knuma and
boart in s_boart and
bolif in s_bolif and
ekorg in s_ekorg and
ekgrp in s_ekgrp.
endif.
endform. " it_kona
*& Form IT_KOTE
form it_kote .
if not it_kona[] is initial.
if not p_vfrom is initial and p_vto is initial.
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote008
into table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma and
datab le p_vfrom and
datbi ge p_vto.
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote007
appending table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma and
datab le p_vfrom and
datbi ge p_vto.
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote006
appending table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma and
datab le p_vfrom and
datbi ge p_vto.
else.
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote008
into table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma.
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote007
appending table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma .
select kappl
kschl
ekorg
lifnr
datbi
knuma
datab
knumh
from kote006
appending table it_kote
for all entries in it_kona
where knuma eq it_kona-knuma.
endif.
endif.
endform. " IT_KOTE
*& Form IT_EKBO
form it_ekbo .
if not it_kote[] is initial.
select ebeln
ebelp
knumh
kopos
budat
belnr
buzei
lifnr
matnr
bltypn
bltypf
etenr
zekkn
vgabe
gjahr
from ekbo
into table it_ekbo
for all entries in it_kote
where knumh eq it_kote-knumh.
endif.
sort it_ekbo by ebeln ebelp.
delete adjacent duplicates from it_ekbo comparing ebeln ebelp.
endform. " IT_EKBO
*& Form IT_EKBE
form it_ekbe .
if not it_ekbo[] is initial.
select ebeln
ebelp
gjahr
belnr
buzei
dmbtr
shkzg
cpudt
matnr
werks
from ekbe into
table it_ekbe
for all entries in it_ekbo
where ebeln eq it_ekbo-ebeln
and ebelp eq it_ekbo-ebelp and
vgabe = '2'.
endif.
endform. " IT_EKBE
*& Form it_lfa1
form it_lfa1 .
if not it_kote[] is initial.
select lifnr
name1
from lfa1
into table it_lfa1
for all entries in it_kote
where lifnr eq it_kote-lifnr.
endif.
endform. " it_lfa1
*& Form it_mara
form it_mara .
if not it_ekbo[] is initial.
select matnr
matkl
from mara
into table it_mara
for all entries in it_ekbo
where matnr eq it_ekbo-matnr.
endif.
endform. " it_mara
*& Form it_makt
form it_makt .
if not it_mara[] is initial.
select matnr
maktx
from makt
into table it_makt
for all entries in it_mara
where matnr eq it_mara-matnr and
spras eq sy-langu.
endif.
endform. " it_makt
*& Form it_ekko
form it_ekko .
if not it_ekbo[] is initial.
select ebeln
aedat
from ekko
into table it_ekko
for all entries in it_ekbo
where ebeln eq it_ekbo-ebeln.
endif.
endform. " it_ekko
*& Form it_ekpo
form it_ekpo .
if not it_ekko[] is initial.
select ebeln
menge
meins
from ekpo
into table it_ekpo
for all entries in it_ekko
where ebeln eq it_ekko-ebeln.
endif.
endform. " it_ekpo
*& Form populate_final
form populate_final .
loop at it_kote.
it_final-knumh = it_kote-knumh.
it_final-lifnr = it_kote-lifnr.
it_final-ekorg = it_kote-ekorg.
read table it_kona with key knuma = it_kote-knuma.
it_final-knuma = it_kona-knuma.
it_final-boart = it_kona-boart.
it_final-datab = it_kona-datab.
it_final-datbi = it_kona-datbi.
it_final-kobog = it_kona-kobog.
it_final-botext = it_kona-botext.
it_final-bonem = it_kona-bonem.
it_final-bukrs = it_kona-bukrs.
read table it_ekbo with key knumh = it_kote-knumh.
it_final-ebeln = it_ekbo-ebeln.
it_final-ebelp = it_ekbo-ebelp.
read table it_ekbe with key ebeln = it_ekbo-ebeln
ebelp = it_ekbo-ebelp.
it_final-matnr = it_ekbe-matnr.
it_final-werks = it_ekbe-werks.
it_final-gjahr = it_ekbe-gjahr.
it_final-belnr = it_ekbe-belnr.
it_final-buzei = it_ekbe-buzei.
it_final-dmbtr = it_ekbe-dmbtr.
it_final-shkzg = it_ekbe-shkzg.
it_final-cpudt = it_ekbe-cpudt.
read table it_lfa1 with key lifnr = it_kote-lifnr.
it_final-lifnr = it_lfa1-lifnr.
read table it_mara with key matnr = it_ekbo-matnr.
it_final-matkl = it_mara-matkl.
read table it_makt with key matnr = it_mara-matnr.
it_final-maktx = it_makt-maktx.
read table it_ekko with key ebeln = it_ekbo-ebeln.
it_final-aedat = it_ekko-aedat.
read table it_ekpo with key ebeln = it_ekko-ebeln.
it_final-menge = it_ekpo-menge.
it_final-meins = it_ekpo-meins.
read table it_rbkp with key belnr = it_ekbo-belnr.
it_final-bldat = it_rbkp-bldat.
it_final-xblnr = it_rbkp-xblnr.
append it_final.
endloop.
endform. " populate_final
*& Form it_rbkp
form it_rbkp .
if not it_ekbo[] is initial.
select belnr
bldat
xblnr
from rbkp
into table it_rbkp
for all entries in it_ekbo
where belnr = it_ekbo-belnr.
endif.
endform. " it_rbkp
*& Form DISPLAY
form display .
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = sy-cprog
i_internal_tabname = 'IT_FINAL'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-cprog
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
changing
ct_fieldcat = it_fieldcat
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
if sy-subrc <> 0.
message i000(bctrain) with 'Not Merged'.
else.
*message i000(bctrain) with ' Merged'.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
I_INTERFACE_CHECK = 'X'
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-cprog
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
is_layout = it_layout
it_fieldcat = it_fieldcat[]
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
it_events = it_events
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = 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. " DISPLAY
*& Form get_events
form get_events .
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = it_events
exceptions
list_type_wrong = 1
others = 2.
if sy-subrc <> 0.
endif.
**USER_COMMAND EVENT
READ TABLE IT_EVENTS INTO WA_EVENTS WITH KEY
NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'USER_COMMAND'.
MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDIF.
**PF_STATUS_SET EVENT
READ TABLE IT_EVENTS INTO WA_EVENTS WITH KEY
NAME = 'PF_STATUS_SET'.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'PF_STATUS'.
MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDIF.
TOP_OF_LIST EVENT.
read table it_events into wa_events with key
name = 'TOP_OF_LIST'.
NAME = 'TOP_OF_PAGE'.
if sy-subrc = 0.
wa_events-form = 'TOP-OF-LIST'.
modify it_events from wa_events index sy-tabix.
endif.
endform. " get_events
*& Form USER_COMMAND
form user_command using v_ucomm type sy-ucomm
v_selfield type slis_selfield .
refresh it_fieldcat_ekpo.
case v_ucomm.
when 'DISP_DET'.
refresh t_ekpo.
refresh it_ebeln.
loop at it_final.
if it_final-box = 'X'.
it_ebeln-ebeln = it_final-ebeln.
append it_ebeln.
endif.
endloop.
perform poitem_det.
endcase.
IF V_SELFIELD-FIELDNAME = 'EBELN'.
V_VALUE = V_SELFIELD-VALUE.
ELSE.
MESSAGE I000(BCTRAIN) WITH 'SELECT PURCHASE ORDER FOR ITEM DETAILS'
SY-LSIND.
EXIT.
ENDIF.
SELECT EBELN
EBELP
AEDAT
MENGE
MEINS
FROM EKPO
INTO TABLE T_EKPO
WHERE EBELN EQ V_VALUE.
IF SY-SUBRC <> 0.
MESSAGE I000(BCTRAIN) WITH 'NO ITEM DETAILS FOUND FOR PO :' V_VALUE.
EXIT.
ENDIF.
**perform fldcat_merge.
PERFORM IT_FIELDCAT_EKPO.
PERFORM IT_LAYOUT_EKPO.
PERFORM GET_EVENTS.
PERFORM DISP_ITEMDET.
REFRESH IT_FIELDCAT_EKPO.
**ENDIF.
endform. " USER_COMMAND
*& Form DISP_ITEMDET
form disp_itemdet.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
I_INTERFACE_CHECK = 'X'
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-cprog
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'TOP_OF_LIST'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
is_layout = it_layout_ekpo
it_fieldcat = it_fieldcat_ekpo[]
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
it_sort = it_sort[]
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENTS
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
tables
t_outtab = t_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. " DISP_ITEMDET
*& Form IT_FIELDCAT_EKPO
form it_fieldcat_ekpo .
it_fieldcat_ekpo-fieldname = 'MANDT'.
it_fieldcat_ekpo-seltext_l = 'CLIENT'.
append it_fieldcat_ekpo.
it_fieldcat_ekpo-fieldname = 'EBELN'.
it_fieldcat_ekpo-seltext_l = 'PO NUMBER'.
append it_fieldcat_ekpo.
it_fieldcat_ekpo-fieldname = 'EBELP'.
it_fieldcat_ekpo-seltext_l = 'PO ITEM'.
append it_fieldcat_ekpo.
it_fieldcat_ekpo-fieldname = 'AEDAT'.
it_fieldcat_ekpo-seltext_l = 'PO DATE'.
append it_fieldcat_ekpo.
it_fieldcat_ekpo-fieldname = 'MENGE'.
it_fieldcat_ekpo-seltext_l = 'QUANTITY'.
it_fieldcat_ekpo-do_sum = 'X'.
append it_fieldcat_ekpo.
it_fieldcat_ekpo-fieldname = 'MEINS'.
it_fieldcat_ekpo-seltext_l = 'UNIT OF MEASURE'.
append it_fieldcat_ekpo.
endform. " IT_FIELDCAT_EKPO
*& Form TOP-OF-LIST
form top-of-list.
format color col_positive.
write : 'ITEM DETAILS OF PURCHASE ORDERS : ' .
endform. "TOP-OF-LIST
*& Form PF_STATUS_SET
form pf_status using it_extab type slis_t_extab.
set pf-status 'DISP_DET' excluding it_extab.
endform. "PF_STATUS_SET
*& Form IT_LAYOUT
form it_layout .
it_layout-box_fieldname = 'BOX'.
it_layout-box_tabname = 'IT_FINAL'.
IT_LAYOUT-TOTALS_TEXT = 'TOTALS'.
endform. " IT_LAYOUT
*& Form IT_LAYOUT_EKPO
form it_layout_ekpo .
it_layout_ekpo-subtotals_text = 'SUBTOTALS'.
it_layout_ekpo-totals_text = 'TOTALS'.
*CLEAR IT_LAYOUT_EKPO-SUBTOTALS_TEXT.
IT_LAYOUT_EKPO-NO_subtotals = ' '.
endform. " IT_LAYOUT_EKPO
*& Form fldcat_merge
form fldcat_merge .
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = sy-cprog
i_internal_tabname = 'T_EKPO'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-cprog
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
changing
ct_fieldcat = it_fieldcat_ekpo
exceptions
inconsistent_interface = 1
program_error = 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.
endform. " fldcat_merge
*& Form it_fieldcat
form it_fieldcat .
*it_fieldcat-fieldname = 'KNUMA'.
*IT_FIELDCAT-SELTEXT_L = 'AGGREMENT'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BOART'.
*IT_FIELDCAT-SELTEXT_L = 'AGGREMENTTYPE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'DATAB'.
*IT_FIELDCAT-SELTEXT_L = 'AGGREMENT FROM DATE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'DATBI'.
*IT_FIELDCAT-SELTEXT_L = 'AGGREMENT TO DATE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'KNUMH'.
*IT_FIELDCAT-SELTEXT_L = 'CONDRECORD'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'KOBOG'.
*IT_FIELDCAT-SELTEXT_L = 'CT GRP'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BOTEXT'.
*IT_FIELDCAT-SELTEXT_L = 'CTGrpText'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BONEM'.
*IT_FIELDCAT-SELTEXT_L = 'REB_RECEIPT'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'LIFNR'.
*IT_FIELDCAT-SELTEXT_L = 'VENDORNUM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'NAME1'.
*IT_FIELDCAT-SELTEXT_L = 'VEN NAME'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'EKORG'.
*IT_FIELDCAT-SELTEXT_L = 'PUR_ORG'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'EBELN'.
*IT_FIELDCAT-SELTEXT_L = 'PO NUM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'AEDAT'.
*IT_FIELDCAT-SELTEXT_L = 'PO DATE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'EBELP'.
*IT_FIELDCAT-SELTEXT_L = 'PO ITEM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'MATNR'.
*IT_FIELDCAT-SELTEXT_L = 'MATERIALNUM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'WERKS'.
*IT_FIELDCAT-SELTEXT_L = 'SITE NUM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'MAKTX'.
*IT_FIELDCAT-SELTEXT_L = 'MAT_DESC'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'MATKL'.
*IT_FIELDCAT-SELTEXT_L = 'MAT GRP'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'MENGE'.
*IT_FIELDCAT-SELTEXT_L = 'QUANTITY'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'MEINS'.
*IT_FIELDCAT-SELTEXT_L = 'UNITOF MEAS'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'GJAHR'.
*IT_FIELDCAT-SELTEXT_L = 'DOC YR'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BLDAT'.
*IT_FIELDCAT-SELTEXT_L = 'INV DATE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'CPUDT'.
*IT_FIELDCAT-SELTEXT_L = 'INV_UPDATE_DATE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BELNR'.
*IT_FIELDCAT-SELTEXT_L = 'INV NUM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'XBLNR'.
*IT_FIELDCAT-SELTEXT_L = 'REFERENCE'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BUZEI'.
*IT_FIELDCAT-SELTEXT_L = 'INV_LNITEM'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'DMBTR'.
*IT_FIELDCAT-SELTEXT_L = 'DOLLAR AMT'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'SHKZG'.
*IT_FIELDCAT-SELTEXT_L = 'DEB/CRD IND'.
*APPEND IT_FIELDCAT.
*it_fieldcat-fieldname = 'BUKRS'.
*IT_FIELDCAT-SELTEXT_L = 'COMPANYCODE'.
*APPEND IT_FIELDCAT.
endform. " it_fieldcat
*& Form poitem_det
form poitem_det .
if not it_ebeln[] is initial.
select mandt
ebeln
ebelp
aedat
menge
meins
from ekpo
into table t_ekpo
for all entries in it_ebeln
where ebeln = it_ebeln-ebeln.
endif.
perform it_fieldcat_ekpo.
perform it_sort.
perform it_layout_ekpo.
perform get_events.
perform disp_itemdet.
refresh it_fieldcat_ekpo.
clear it_layout_ekpo.
refresh it_sort.
endform. " poitem_det
*& Form it_sort
form it_sort .
wa_sort-fieldname = 'EBELN'.
it_sort-spos = 1.
IT_SORT-TABNAME = 'T_EKPO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
wa_sort-group = 'UL'.
append wa_sort to it_sort.
endform. " it_sort -
Regarding the 'TOTALS' in ALV's
Hi friends,
I have a doubt in ALV while displaying totals.
How can we display the "totals" immediately when the ALV output is displayed. I tried many ways but when im clicking on the 'Summation' symbol in the output of the ALV then only the 'Totals' or 'Subtotals' are being displayed.
Please give me some helpfull tips...
Regards
Pradeep Golihi,
take reference of this exp...
*FORM FOR DISPLAY DATA
FORM display_data.
PERFORM fill_layout_structure.
PERFORM fill_field_catalog_table.
PERFORM get_event USING it_event.
PERFORM fill_listheader USING it_listheader.
PERFORM call_alv_function.
ENDFORM. "display_data
*FORM FOR ALV LAYOUT STRUCTURE
FORM fill_layout_structure.
CLEAR st_layout.
st_layout-colwidth_optimize = 'X'.
st_layout-zebra = 'X'.
st_layout-f2code = '&ETA'.
st_layout-detail_popup = 'X'.
st_layout-colwidth_optimize = 'X'.
ENDFORM. "fill_layout_structure
*FORM FOR ALV FIELD CATALOG TABLE
FORM fill_field_catalog_table .
PERFORM fill_field_catalog USING :
'SAKNR' 'G/L Account No' 15 'IT_DATA' 'X' space,
'TXT50' 'A/C Description' 50 'IT_DATA' space space,
'BO' 'BO' 15 'IT_DATA' space 'X',
'FACT' 'Factories' 15 'IT_DATA' space 'X',
'TOTAL_BO' 'BO Total' 15 'IT_DATA' space 'X'.
ENDFORM. "fill_field_catalog_table
*FORM FOR FILLING FIELD CATALOG
FORM fill_field_catalog USING f d l t p s.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
STATICS v_pos TYPE i VALUE 1.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = v_pos.
wa_fieldcat-fieldname = f.
wa_fieldcat-seltext_m = d.
wa_fieldcat-tabname = t.
wa_fieldcat-outputlen = l.
wa_fieldcat-fix_column = p.
wa_fieldcat-do_sum = s.
APPEND wa_fieldcat TO it_fieldcat.
v_pos = v_pos + 1.
ENDFORM. "fill_field_catalog
*FORM FOR ALV FUNCTIONS
FORM call_alv_function.
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 = ' '
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_GRID_SETTINGS =
is_layout = st_layout
it_fieldcat = it_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT =
it_events = it_event[]
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_data[]
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. "call_alv_function -
Regarding module pool with alv
hi experts,
i have developed a module pool program in which the data is coming in the table control ,what the user wants that on clicking one push button a alv report will come depending upon the data which i enterd in the selection screen of the module pool,,for this what sud i write under the push button plz help me....Hi
In the table control keep a Button
First select the Records in the tables control into an Internal table
when you press that REPORT button in the table control screen these Selected records data which is in Internal table has to be displayed in a ALV report.
Hope when the data is internal tables just call the fun module of ALV
In the PAI of table control screen
case ok_code.
when 'REPT'.
loop at itab where v_chk = 'X'.
...append the selected records to another ITAB1.
endloop.
leave to list-processing
perform_display_report.
endcase.
In the perform you process the internal table, build the field catalog and display the ALV report
Reward points for useful Answers
Regards
Anji -
Regarding Vendor Performance....
hii experts,
I am working on Vendor Performance report and finding problem in it.pls tell how can i analyse Vendor Performance report . what is the purpose of it? tables used . if possible give sample coding for this .
Any pointer will be highly appreciable..
Thanks in advance,
AshokHi Ashok,
I have worked on Vendor performance and i am sending you
the code as per your requirement.....
Hope this will help you!!!!!!!!!!!!!!
REPORT ZVENDOR_PERFORMANCE.
TABLES: lfa1, lfm1, j_1inewjcode.
*STRUCTURES
DATA: BEGIN OF wa_lfm1,
lifnr LIKE lfm1-lifnr,
ekorg LIKE lfm1-ekorg.
DATA: END OF wa_lfm1.
DATA: BEGIN OF wa_lfa1,
lifnr LIKE lfa1-lifnr,
txjcd LIKE lfa1-txjcd,
adrnr LIKE lfa1-adrnr .
DATA: END OF wa_lfa1.
DATA: BEGIN OF wa_lfb1,
lifnr LIKE lfa1-lifnr,
bukrs LIKE t001-bukrs.
DATA: END OF wa_lfb1.
DATA: it_lfa1 LIKE wa_lfa1 OCCURS 10 WITH HEADER LINE,
it_lfm1 LIKE wa_lfm1 OCCURS 10 WITH HEADER LINE.
DATA jcode LIKE j_1inewjcode-txjcd.
DATA count TYPE i.
DATA: new_lfa1 LIKE wa_lfa1 OCCURS 0 WITH HEADER LINE.
DATA : it_adrc LIKE adrc OCCURS 10 WITH HEADER LINE.
DATA : bukrs LIKE t001-bukrs, porg LIKE t024e-ekorg.
DATA: it_lfb1 LIKE wa_lfb1 OCCURS 10 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS:
p_bukrs LIKE t001-bukrs OBLIGATORY,
p_ekorg LIKE t024e-ekorg OBLIGATORY MEMORY ID buk.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
SELECT-OPTIONS: p_lifnr FOR lfm1-lifnr.
SELECTION-SCREEN END OF BLOCK block2.
PARAMETERS: test AS CHECKBOX DEFAULT 'X'.
AT SELECTION-SCREEN ON p_bukrs.
SELECT SINGLE j_1ibukrs FROM j_1iindcus
INTO bukrs
WHERE j_1ibukrs = p_bukrs.
IF sy-subrc <> 0.
MESSAGE e128(8i).
ENDIF.
AT SELECTION-SCREEN ON p_ekorg.
SELECT SINGLE ekorg INTO porg FROM t024e
WHERE ekorg = p_ekorg
AND bukrs = bukrs.
IF sy-subrc NE 0 .
MESSAGE e015(me) WITH p_ekorg space.
ENDIF .
*-------header print.
TOP-OF-PAGE.
NEW-LINE NO-SCROLLING.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE : / ,
05 'Vendor', "#EC NOTEXT
22 'New Jud Code'." 38 'Old Jud code'.
FORMAT COLOR OFF.
NEW-LINE SCROLLING.
START-OF-SELECTION.
Get the dummy Jur Code
SELECT SINGLE txjcd FROM j_1inewjcode
INTO jcode
WHERE aland = 'IN'.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'Jur code not defined in Table J_1INEWJCODE'.
ENDIF.
CHECK for lfB1 if the customer exists for company code
SELECT lifnr bukrs FROM lfb1 INTO TABLE it_lfb1
WHERE
lifnr IN p_lifnr
AND bukrs = p_bukrs.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'No vendors defined for company code'.
ENDIF.
Check if vendor defined for purchasing
SELECT lifnr ekorg FROM lfm1 INTO TABLE it_lfm1
FOR ALL ENTRIES IN it_lfb1[]
WHERE lifnr = it_lfb1-lifnr
AND ekorg = p_ekorg.
Get data from General data of vendor master
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'No Vendors defined for purchasing organization '.
ENDIF.
SELECT lifnr txjcd adrnr FROM lfa1 INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_lfm1[]
WHERE lifnr = it_lfm1-lifnr.
SORT it_lfa1 BY txjcd.
DELETE it_lfa1[] WHERE txjcd = space.
SELECT * FROM adrc INTO TABLE it_adrc FOR ALL ENTRIES IN it_lfa1
WHERE addrnumber = it_lfa1-adrnr.
CLEAR count.
LOOP AT it_lfa1.
IF test <> 'X'.
UPDATE lfa1 SET txjcd = jcode
WHERE lifnr = it_lfa1-lifnr.
ENDIF.
count = count + 1.
WRITE : / , 5 it_lfa1-lifnr, 25 jcode.
ENDLOOP.
LOOP AT it_adrc.
IF test <> 'X'.
UPDATE adrc SET taxjurcode = jcode
WHERE addrnumber = it_adrc-addrnumber.
ENDIF.
ENDLOOP.
IF test <> 'X'.
WRITE : / 'The No of Vendor Master updated with new Jur Code is:',
count.
ENDIF.
<u><i><b>"Kindly reward points if answer is useful"</b></i></u>
Regards,
mandeep. -
hi all,
could any one answer what is fgroup 'salv' in the following piece of alv code and how can we
see it.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_pf_status_set = 'SET_PF_STATUS' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
FORM SET_PF_STATUS *
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZNEWSTATUS'.
"Copy of 'STANDARD' pf_status from fgroup SALV
ENDFORM.
regards,
pavan.Hello Pavan
If you want to have a customer-specific GUI status which is similar to the standard GUI status then display function group SALV in the workbench editor (SE80), open the folder GUI status and copy the status STANDARD to your ALV report (e.g. as ZNEWSTATUS).
If you do not have function SALV available in your system you can use the STANDARD status of function group SLVC_FULLSCREEN instead.
You may also have a look at thread: [alv pf status|alv pf status;
Regards,
Uwe -
Regarding PF Status In ALV Grid Dispaly
Hi..
Can you please tell me how to set PF status in ALV Grid Display.
Regards
Sandeep.hi,
if u use REUSE_ALV_LIST_DISPLAY copy the standard GUI-Status named STANDARD from function group SALV in your program
if u use REUSE_ALV_GRID_DISPLAY_LVC or REUSE_ALV_GRID_DISPLAY copy the standard GUI-Status named STANDARD_FULLSCREEN from function group SLVC_FULLSCREEN in your program
after that you cas set the pf-status in this way:
>CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
> EXPORTING
> i_callback_program = sy-cprog
> i_callback_pf_status_set = 'STATUS'
> i_callback_user_command = 'USERCOMMAND'
> is_layout = st_layout
> it_fieldcat = st_fieldcat
> TABLES
> t_outtab = outtab
or
>CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
> EXPORTING
> i_callback_program = sy-cprog
> i_callback_pf_status_set = 'STATUS'
> i_callback_user_command = 'USERCOMMAND'
> is_layout_lvc = wa_slis_layout
> it_fieldcat_lvc = tb_slis_fieldcat
> TABLES
> t_outtab = tb_app
where USERCOMMAND and STATUS are 2 forms in your program.
>FORM status USING pfstat TYPE slis_t_extab.
> SET PF-STATUS 'STANDARD' EXCLUDING pfstat.
>ENDFORM.
>
> ...
>
>FORM usercommand USING okcode LIKE sy-ucomm
> wa_selfield TYPE slis_selfield.
> CASE okcode.
> ....
> ENDCASE
>ENDFORM.
Bye.
Marco -
Regarding Runtime error in ALV List Display.
am using following to display data in ALV List.
but after executing of program am getting runtime error called 'Field Symbol has Not been assigned' .
please tell me how to correct the error.
Very urgent
Suitable answers rewarded with Maximum Ponits...
REPORT zmatrix.
TYPE-POOLS: slis.
TABLES: agr_define, sza5_d0700.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-006.
SELECT-OPTIONS: s_role FOR agr_define-agr_name OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
D A T A *
TYPES: BEGIN OF ty_agr_1251_inf,
agr_name TYPE agr_1251-agr_name,
object TYPE agr_1251-object,
field TYPE agr_1251-field,
low(20) TYPE c,
high TYPE agr_1251-high,
infty TYPE t582s-infty,
itext TYPE t582s-itext,
END OF ty_agr_1251_inf.
TYPES: BEGIN OF ty_agr_1251_tcode,
agr_name TYPE agr_1251-agr_name,
object TYPE agr_1251-object,
field TYPE agr_1251-field,
low(20) TYPE c,
high TYPE agr_1251-high,
tcode TYPE tstct-tcode,
ttext TYPE tstct-ttext,
END OF ty_agr_1251_tcode.
TYPES: BEGIN OF ty_t582s,
infty TYPE agval,
itext TYPE t582s-itext,
END OF ty_t582s.
TYPES: BEGIN OF ty_code,
tcode TYPE tstct-tcode,
ttext TYPE ttext_stct,
END OF ty_code.
TYPES: BEGIN OF ty_inf,
infty TYPE t582s-infty,
itext TYPE t582s-itext,
END OF ty_inf.
TYPES: BEGIN OF ty_role,
agr_name TYPE agr_1251-agr_name,
END OF ty_role.
TYPES: BEGIN OF tys_role_dtls,
agr_name TYPE agr_name,
value TYPE c,
property TYPE c,
END OF tys_role_dtls.
TYPES: BEGIN OF tys_infotype_final,
text(60),
text1(60),
value(4),
END OF tys_infotype_final.
I N T E R N A L T A B L E S *
DATA: wa_infotyp_final TYPE tys_infotype_final.
DATA: t_infotyp_final TYPE TABLE OF tys_infotype_final.
DATA: BEGIN OF wa_infotyp_dtls,
infty TYPE infty,
itext TYPE intxt,
role_dtls TYPE TABLE OF tys_role_dtls,
END OF wa_infotyp_dtls.
DATA: BEGIN OF wa_tcode_dtls,
tcode TYPE tcode,
ttext TYPE ttext_stct,
role_dtls TYPE TABLE OF tys_role_dtls,
END OF wa_tcode_dtls.
DATA: t_infotyp_dtls LIKE TABLE OF wa_infotyp_dtls,
t_tcode_dtls LIKE TABLE OF wa_tcode_dtls,
t_role_dtls TYPE TABLE OF tys_role_dtls,
wa_role_dtls TYPE tys_role_dtls.
DATA: wa_inf TYPE ty_inf,
t_inf TYPE STANDARD TABLE OF ty_inf.
DATA: wa_role TYPE ty_role,
t_role TYPE STANDARD TABLE OF ty_role.
DATA: wa_tcode TYPE ty_code,
t_tcode TYPE TABLE OF ty_code.
DATA: wa_agr_1251_inf TYPE ty_agr_1251_inf.
DATA: wa_agr_1251_tcode TYPE ty_agr_1251_tcode.
DATA: t_agr_1251_inf TYPE STANDARD TABLE OF ty_agr_1251_inf.
DATA: t_agr_1251_tc TYPE STANDARD TABLE OF ty_agr_1251_tcode.
DATA: wa_582s TYPE ty_t582s.
DATA: t_582s TYPE STANDARD TABLE OF ty_t582s.
DATA: t_range_tcode TYPE RANGE OF tcode.
DATA: t_range_inf TYPE RANGE OF infotyp.
DATA: wa_range_inf LIKE LINE OF t_range_inf.
DATA: wa_range_tcode LIKE LINE OF t_range_tcode.
DATA: wa_field TYPE slis_fieldcat_alv.
DATA: t_field TYPE slis_t_fieldcat_alv.
VARIABLES FOR OLE *
DATA: text(20),
count(20).
DATA: text1(30).
DATA: agr_name TYPE agr_1251-agr_name.
DATA: flag TYPE i VALUE '0'.
DATA: string1 TYPE string.
DATA: str TYPE string VALUE 'SAP%'.
DATA: count1 TYPE i VALUE '0'.
*& Event START-OF-SELECTION
START-OF-SELECTION.
PERFORM f100_get_inf_data.
PERFORM f200_process_inf_data.
count1 = 1.
PERFORM f300_prepare_field_catalog.
PERFORM f110_main_data.
PERFORM f400_display_data.
PERFORM f100_get_trans_data.
*& Form f110_main_data
text
FORM f110_main_data.
wa_infotyp_final-text = 'Access to Infotypes'.
APPEND wa_infotyp_final TO t_infotyp_final.
wa_infotyp_final-text = 'Infotype'.
wa_infotyp_final-text1 = 'Description'.
APPEND wa_infotyp_final TO t_infotyp_final.
wa_infotyp_final-text = '*'.
wa_infotyp_final-text1 = 'Acess to all Infotypes'.
LOOP AT t_role INTO wa_role WHERE agr_name <> ' '.
READ TABLE t_agr_1251_inf INTO wa_agr_1251_inf
WITH KEY agr_name = wa_role-agr_name field = 'INFTY' low = '*'.
IF syst-subrc = 0.
wa_infotyp_final-value = 'X'.
ENDIF.
ENDLOOP.
APPEND wa_infotyp_final TO t_infotyp_final.
LOOP AT t_inf INTO wa_inf WHERE infty <> ' '.
wa_infotyp_final-text = wa_inf-infty.
wa_infotyp_final-text1 = wa_inf-itext.
LOOP AT t_role INTO wa_role WHERE agr_name <> ' '.
Role Name
CLEAR wa_role_dtls.
flag = 1.
wa_role_dtls-agr_name = wa_role-agr_name.
For Value D & F
READ TABLE t_agr_1251_inf INTO wa_agr_1251_inf
WITH KEY agr_name = wa_role-agr_name field = 'AUTHC'..
IF syst-subrc EQ 0.
IF wa_agr_1251_inf-low = 'R'.
wa_infotyp_final-value = 'D'.
ELSE.
wa_infotyp_final-value = 'F'.
ENDIF.
ENDIF.
APPEND wa_role_dtls TO t_role_dtls.
APPEND wa_infotyp_final TO t_infotyp_final.
ENDLOOP.
ENDLOOP.
ENDFORM. "f110_main_data
*& Form f100_get_inf_data
text
FORM f100_get_inf_data.
Logic for Infotypes *
SELECT aagr_name aobject
afield alow a~high
INTO TABLE t_agr_1251_inf
FROM agr_1251 AS a INNER JOIN agr_define AS b
ON aagr_name EQ bagr_name
WHERE ( ( aobject EQ 'P_ORGIN' OR aobject EQ 'P_PERNR' )
AND ( aagr_name IN s_role ) AND ( bagr_name NOT LIKE str ) ).
ENDFORM. "f100_get_inf_data
*& Form f200_get_inf_process_data
text
FORM f200_process_inf_data.
LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.
IF wa_agr_1251_inf-high IS INITIAL.
CLEAR wa_range_inf.
wa_range_inf-sign = 'I'.
wa_range_inf-option = 'EQ'.
wa_range_inf-low = wa_agr_1251_inf-low.
APPEND wa_range_inf TO t_range_inf.
ELSE.
CLEAR wa_range_inf.
wa_range_inf-sign = 'I'.
wa_range_inf-option = 'BT'.
wa_range_inf-low = wa_agr_1251_inf-low.
wa_range_inf-high = wa_agr_1251_inf-high.
APPEND wa_range_inf TO t_range_inf.
ENDIF.
ENDLOOP.
SORT t_range_inf.
DELETE ADJACENT DUPLICATES FROM t_range_inf.
IF t_range_inf IS NOT INITIAL.
SELECT infty itext FROM t582s
INTO TABLE t_582s
WHERE sprsl = 'EN' AND infty IN t_range_inf.
IF syst-subrc EQ 0.
ENDIF.
ENDIF.
LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.
IF wa_agr_1251_inf-high IS INITIAL.
READ TABLE t_582s INTO wa_582s
WITH KEY infty = wa_agr_1251_inf-low.
IF syst-subrc EQ 0.
wa_agr_1251_inf-infty = wa_582s-infty.
wa_agr_1251_inf-itext = wa_582s-itext.
MODIFY t_agr_1251_inf FROM wa_agr_1251_inf
TRANSPORTING infty itext.
IF syst-subrc EQ 0.
ENDIF.
ENDIF.
ELSE.
CLEAR count.
LOOP AT t_582s INTO wa_582s
WHERE infty GE wa_agr_1251_inf-low
AND infty LE wa_agr_1251_inf-high.
IF count LE 1.
wa_agr_1251_inf-high = space.
wa_agr_1251_inf-infty = wa_582s-infty.
wa_agr_1251_inf-itext = wa_582s-itext.
MODIFY t_agr_1251_inf FROM wa_agr_1251_inf
TRANSPORTING infty itext.
IF syst-subrc EQ 0.
CLEAR wa_582s.
ENDIF.
ELSE.
wa_agr_1251_inf-high = space.
wa_agr_1251_inf-infty = wa_582s-infty.
wa_agr_1251_inf-itext = wa_582s-itext.
APPEND wa_agr_1251_inf TO t_agr_1251_inf.
ENDIF.
CLEAR wa_agr_1251_inf.
count = count + 1.
ENDLOOP.
ENDIF.
ENDLOOP.
wa_role-agr_name = ' '.
APPEND wa_role TO t_role.
wa_role-agr_name = ' '.
APPEND wa_role TO t_role.
LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.
IF wa_agr_1251_inf IS NOT INITIAL.
wa_role-agr_name = wa_agr_1251_inf-agr_name.
wa_inf-infty = wa_agr_1251_inf-infty.
wa_inf-itext = wa_agr_1251_inf-itext.
APPEND wa_role TO t_role.
APPEND wa_inf TO t_inf.
ENDIF.
ENDLOOP.
SORT t_role BY agr_name.
DELETE ADJACENT DUPLICATES FROM t_role.
SORT t_inf BY infty.
DELETE ADJACENT DUPLICATES FROM t_inf.
ENDFORM. "f200_get_process_inf_data
*& Form f100_get_trans_data
text
FORM f100_get_trans_data.
Logic for Transaction Codes *
SELECT aagr_name aobject
afield alow a~high
INTO CORRESPONDING FIELDS OF TABLE t_agr_1251_tc
FROM agr_1251 AS a
INNER JOIN agr_define AS b ON aagr_name EQ bagr_name
WHERE a~agr_name IN s_role
AND a~object EQ 'S_TCODE'.
ENDFORM. "f100_get_trans_data
*& Form f200_process_trans_data
text
FORM f200_process_trans_data.
LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.
IF wa_agr_1251_tcode-high IS INITIAL.
CLEAR wa_range_tcode.
wa_range_tcode-sign = 'I'.
wa_range_tcode-option = 'EQ'.
wa_range_tcode-low = wa_agr_1251_tcode-low.
APPEND wa_range_tcode TO t_range_tcode.
ELSE.
CLEAR wa_range_tcode.
wa_range_tcode-sign = 'I'.
wa_range_tcode-option = 'BT'.
wa_range_tcode-low = wa_agr_1251_tcode-low.
wa_range_tcode-high = wa_agr_1251_tcode-high.
APPEND wa_range_tcode TO t_range_tcode.
ENDIF.
ENDLOOP.
SORT t_range_tcode.
DELETE ADJACENT DUPLICATES FROM t_range_tcode.
IF t_range_tcode IS NOT INITIAL.
SELECT tcode
ttext
FROM tstct
INTO TABLE t_tcode
WHERE sprsl EQ 'E'
AND tcode IN t_range_tcode.
IF sy-subrc EQ 0.
ENDIF.
ENDIF.
SORT t_agr_1251_tc BY agr_name.
LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.
IF wa_agr_1251_tcode-high IS INITIAL.
READ TABLE t_tcode INTO wa_tcode
WITH KEY tcode = wa_agr_1251_tcode-low.
IF syst-subrc EQ 0.
wa_agr_1251_tcode-tcode = wa_tcode-tcode.
wa_agr_1251_tcode-ttext = wa_tcode-ttext.
MODIFY t_agr_1251_tc FROM wa_agr_1251_tcode
TRANSPORTING tcode ttext.
IF syst-subrc EQ 0.
ENDIF.
ENDIF.
ELSE.
CLEAR count.
LOOP AT t_tcode INTO wa_tcode
WHERE tcode GE wa_agr_1251_tcode-low
AND tcode LE wa_agr_1251_tcode-high.
IF count LE 1.
agr_name = wa_agr_1251_tcode-agr_name.
wa_agr_1251_tcode-high = space.
wa_agr_1251_tcode-tcode = wa_tcode-tcode.
wa_agr_1251_tcode-ttext = wa_tcode-ttext.
MODIFY t_agr_1251_tc FROM wa_agr_1251_tcode
TRANSPORTING tcode ttext high.
IF syst-subrc EQ 0.
CLEAR wa_tcode.
ENDIF.
count = 1.
ELSE.
wa_agr_1251_tcode-high = space.
wa_agr_1251_tcode-agr_name = agr_name.
wa_agr_1251_tcode-low = wa_tcode-tcode.
wa_agr_1251_tcode-tcode = wa_tcode-tcode.
wa_agr_1251_tcode-ttext = wa_tcode-ttext.
APPEND wa_agr_1251_tcode TO t_agr_1251_tc.
ENDIF.
CLEAR wa_agr_1251_tcode.
count = count + 1.
ENDLOOP.
ENDIF.
ENDLOOP.
LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.
wa_role-agr_name = wa_agr_1251_tcode-agr_name.
APPEND wa_role TO t_role.
ENDLOOP.
SORT t_role BY agr_name.
DELETE ADJACENT DUPLICATES FROM t_role.
SORT t_tcode BY tcode.
DELETE ADJACENT DUPLICATES FROM t_tcode.
ENDFORM. "f200_process_trans_data
*& Form f100_prepare_field_catalog
text
FORM f300_prepare_field_catalog.
LOOP AT t_role INTO wa_role.
wa_field-col_pos = count1.
wa_field-fieldname = wa_role-agr_name.
APPEND wa_field TO t_field.
count1 = count1 + 1.
ENDLOOP.
ENDFORM. "f100_prepare_field_catalog
*& Form f100_display_data
text
FORM f400_display_data.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-cprog
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT =
it_fieldcat = t_field[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_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
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_infotyp_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. "f100_display_datathis are the wasy u can build a field catalog...
1.----
FORM fill_fieldcat .
DATA: fld(30),
idx(2) TYPE n.
DEFINE no_output.
fieldcatalog-fieldname = &1.
fieldcatalog-no_out = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
END-OF-DEFINITION.
DEFINE catalog.
fieldcatalog-fieldname = &1.
fieldcatalog-seltext_s = &2.
if not &3 is initial.
fieldcatalog-seltext_m = &3.
else.
fieldcatalog-seltext_m = fieldcatalog-seltext_s.
endif.
if not &4 is initial.
fieldcatalog-seltext_l = &4.
else.
fieldcatalog-seltext_l = fieldcatalog-seltext_m.
endif.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
END-OF-DEFINITION.
catalog 'AVAIL_BASE'
'Base Qty.'
'Base Qty. Available'
'Base Quantity Available'.
catalog 'AVAIL_SALES'
'Sales Qty.'
'Sales Qty. Available'
'Sales Quantity Available'.
LOOP AT t_char_data.
idx = sy-tabix.
CONCATENATE 'CHR' idx INTO fld.
catalog fld
t_char_data-atbez
t_char_data-atbez
t_char_data-atbez.
ENDLOOP.
ADD 1 TO idx.
WHILE idx LE 15.
CONCATENATE 'CHR' idx INTO fld.
no_output fld.
ADD 1 TO idx.
ENDWHILE..
fieldcatalog-fieldname = 'EXACT'.
fieldcatalog-checkbox = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
2.----
FORM fieldcatalog.
REFRESH fc. CLEAR fc.
fc-tabname = 'HEADER'.
fc-fieldname = 'KUNNR'.
fc-ref_tabname = 'MSKU'.
APPEND fc. CLEAR fc.
fc-tabname = 'HEADER'.
fc-fieldname = 'NAME1_K'.
fc-ref_tabname = 'KNA1'.
fc-ref_fieldname = 'NAME1'.
APPEND fc. CLEAR fc.
fc-tabname = 'HEADER'.
fc-fieldname = 'TOTAL'.
fc-ref_tabname = 'MBEW'.
fc-ref_fieldname = 'SALK3'.
APPEND fc. CLEAR fc.
fc-tabname = 'LIST'.
fc-fieldname = 'MATNR'.
fc-ref_tabname = 'MSKU'.
APPEND fc. CLEAR fc.
fc-tabname = 'LIST'.
fc-fieldname = 'MAKTX'.
fc-ref_tabname = 'MAKT'.
fc-no_out = 'X'.
APPEND fc. CLEAR fc.
fc-tabname = 'LIST'.
fc-fieldname = 'CHARG'.
fc-ref_tabname = 'MSKU'.
APPEND fc. CLEAR fc.
fc-tabname = 'LIST'.
fc-fieldname = 'WERKS'.
fc-ref_tabname = 'MSKU'.
fc-no_out = 'X'.
APPEND fc. CLEAR fc.
fc-tabname = 'LIST'.
fc-fieldname = 'NAME1_W'.
fc-ref_tabname = 'T001W'.
fc-ref_fieldname = 'NAME1'.
fc-no_out = 'X'.
APPEND fc. CLEAR fc. -
Regarding field catalog in alv
hi,
in how many ways can we prepare a fieldcatalog in alv?
Thanks and regards.Hi Bharath,
1. Automatically--------We can prepare using FM
REUSE_ALV_FIELd_CATALOG_MERGE
2. we can build semi-automatically also
first use the FM REUSE_ALV_FIELd_CATALOG_MERGE.
then
loop at it_fieldcat into wa_fieldcat.
case wa_fieldcat-fieldname.
when 'FIEL1'.
wa_fieldcat-outputlen = '15'. "we can change the properties here
modify it_fieldcat from wa_fieldcat.
when 'FIEL2'.
wa_fieldcat-outputlen = '15'.
modify it_fieldcat from wa_fieldcat.
endcase.
endloop.
3. Manually.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = '15'.
wa_fieldcat-colpos = '1'.
modify it_fieldcat from wa_fieldcat.
wa_fieldcat-fieldname = 'POSNR''.
wa_fieldcat-outputlen = '15'.
wa_fieldcat-colpos = '2'.
modify it_fieldcat from wa_fieldcat. -
Regarding download of the ALV report to excel
Hi experts,
I have an ALV report which took long time to extract records from various table. So while there is some restriction the report can be executed well in foreground. And the report can be extracted well to excel sheet. But while there is hudge records, i have to execute the report in backgroung. And then from spool i generally prefers to download the report to excel.
There is a field UOM where it contains value ' " ' for some records. And also there may be possiblity that other fields can also contain the same.
Now my problem is: while download to excel... When ever there is a value ' " ' from this point to the next value ' " '. It is treating as one record. and keep that in a same position in the excel sheet.
But i want to keep all the values in there respective fields. Can you please how can i do that? Please give me some solution...
regards,
charles.Actually now I think there is another way to do this, storing file on application server can create problems as sometimes the users don't have directory write access or things like that.
Instead you should export your data to a memory or database cluster and import it back using abother program.
The proposed changes would be
1: At the point you are calling your alv grid function, check if the sy-batch is 'X' for background job, if yes than export to database table INDX or you can create your own. suppose your data is in internal table ITAB than in case of background job, you will do
data: keyf like indx-srtfd.
*We just assign username, date time to this
concatenate sy-uname sy-datum sy-uzeit into keyf.
EXPORT itab TO DATABASE indx(ZZ) ID keyf.
check for subrc if export is successfull.
Now you have stored your itab in database for later processing. remember to have keyf. In case of background job you can have it write in the output so from spool output you can check what was the keyf to use.
You have to write another program to import itab from database and download it or display it.....
This program will have keyf as input parameter and you must define ITAB same as the orignal program.
parameters: p_keyf like like indx-srtfd.
import itab from database indx(ZZ) id keyf.
*Now you have itab. do whatever you want with it. download it using GUI_DOWNLOAD function or display it in an ALV grid.......
Hope you got the overall idea. -
URGENT:-Regarding sub-total in alv code
Hi,
i had made dis report and it is working fine but now i want to add the sub total feature in dis report as it is the new requierment of report.
plzz help me out by providing the code of sub-total feature in dis report .
Help will be definately rewarded. here is d code of report:-
TABLES: ISEG,MARA.
TYPE-POOLS : SLIS.
DATA : DATE1(15) TYPE C,
DATE2(15) TYPE C,
TITLE(65) TYPE C,
DT(25) TYPE C.
DATA : ITEVENT TYPE SLIS_T_EVENT.
DATA: lv_sort TYPE slis_sortinfo_alv,
t_sort type slis_t_sortinfo_alv.
DATA : repid LIKE sy-repid.
INTERNAL TABLE FOR INVENTORY STOCK *****************
DATA: BEGIN OF ITS1 OCCURS 0,
MATNR LIKE ISEG-MATNR,
ITEMID(6) TYPE C,
MEINS LIKE ISEG-MEINS,
MENGE LIKE ISEG-MENGE,
WRTZL LIKE ISEG-WRTZL,
BUCHM LIKE ISEG-BUCHM,
WRTBM LIKE ISEG-WRTBM,
WERKS LIKE ISEG-WERKS,
BUDAT LIKE ISEG-BUDAT,
ZLDAT LIKE ISEG-ZLDAT,
MTART LIKE MARA-MTART,
ITEMDESC LIKE MAKT-MAKTX,
DIFFQTY LIKE ISEG-BUCHM,
DIFFVALUE LIKE ISEG-WRTBM,
GRUND LIKE ISEG-GRUND,
GRTXT LIKE T157E-GRTXT,
BWART LIKE T157E-BWART,
REAS TYPE C LENGTH 15,
END OF ITS1.
data: t_heading type slis_t_listheader.
SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
*SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*********PARAMETERS*********
PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT OBLIGATORY NO-EXTENSION,
M_TYPE FOR MARA-MTART,
IT_M FOR MARA-MATNR.
*********DEFINING VARIABLES*********
SELECTION-SCREEN END OF BLOCK par1.
CONCATENATE R_DATE-LOW6(2) '.' R_DATE-LOW4(2) '.' R_DATE-LOW+0(4) INTO DATE1.
CONCATENATE R_DATE-HIGH6(2) '.' R_DATE-HIGH4(2) '.' R_DATE-HIGH+0(4) INTO DATE2.
TOP-OF-PAGE.
PERFORM PG_HEADER.
START-OF-SELECTION.
SELECT AMATNR AMEINS AMENGE AWRTZL ABUCHM AWRTBM AWERKS ABUDAT AZLDAT BMTART AGRUND CBWART
FROM ISEG AS A INNER JOIN MARA AS B ON BMATNR = AMATNR
INNER JOIN MSEG AS C ON AMBLNR = CMBLNR
INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE BMATNR = AMATNR AND BMEINS = AMEINS AND AWERKS = PLANT AND ABUDAT IN R_DATE AND BMTART IN M_TYPE AND BMATNR IN IT_M.
SORT ITS1 BY MTART.
LOOP AT ITS1.
ITS1-ITEMID = ITS1-MATNR+12(6).
ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
SELECT SINGLE GRTXT INTO ITS1-GRTXT FROM T157E WHERE GRUND = ITS1-GRUND AND SPRAS = 'E' AND BWART = ITS1-BWART.
MODIFY ITS1.
ENDLOOP.
PERFORM PRN_SMSTOCK_ALV.
WRITING DATA FROM D TABLES**********
FORM PG_HEADER.
WRITE : 'INVENTORY REPORT PLANT : ', PLANT.
ENDFORM.
*& Form PRN_SMSTOCK_ALV
text
--> p1 text
<-- p2 text
form PRN_SMSTOCK_ALV .
data: w_title type lvc_title,
w_repid type syrepid,
w_comm type slis_formname,
w_status type slis_formname,
x_layout type slis_layout_alv,
t_event type slis_t_event,
t_fieldcat type slis_t_fieldcat_alv,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot.
refresh t_fieldcat.
refresh t_event.
refresh t_sort.
clear x_layout.
clear w_title.
perform set_fieldcat2 using:
1 'MTART' 'MTART' 'MARA' '15' space 'MATERIAL TYPE' space space space space space space space space SPACE t_fieldcat 'L' 'L',
2 'ITEMID' 'ITEMID' 'MARA' '7' space 'ITEM ID' space space space space space space space space SPACE t_fieldcat 'R' 'C',
3 'ITEMDESC' 'MAKTX' 'MAKT' '25' space 'MATERIAL DESCRIPTION' space space space space space space space space SPACE t_fieldcat 'L' 'C',
4 'MEINS' 'MEINS' 'MARA' '5' space 'UOM' space space space space space space space space SPACE t_fieldcat 'C' 'C',
5 'MENGE' 'MENGE' 'ISEG' '13' space 'ORG.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
6 'WRTZL' 'WRTZL' 'ISEG' '13' space 'ORG.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
7 'BUCHM' 'BUCHM' 'ISEG' '13' space 'PHY.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
8 'WRTBM' 'WRTBM' 'ISEG' '13' space 'PHY.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
9 'DIFFQTY' 'MENGE' 'ISEG' '13' space 'DIFF.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
10 'DIFFVALUE' 'WRTZL' 'ISEG' '13' space 'DIFF.INV.VALUE' space space space space space space space space SPACE t_fieldcat SPACE 'P',
11 'BUDAT' 'BUDAT' 'ISEG' '18' space 'CORRECTED DATE' space space space space space space space space SPACE t_fieldcat 'C' 'C',
12 'GRTXT' 'GRTXT' 'ISEG' '18' space 'REASON' space space space space space space space space SPACE t_fieldcat 'L' 'L',
13 'REAS' 'REAS' 'ISEG' '18' space 'AUTH.BY' space space space space space space space space SPACE t_fieldcat 'C' 'C'.
x_layout-zebra = 'X'.
perform set_top_page_heading using t_heading t_event.
perform set_events using t_event.
w_status = ''.
w_repid = sy-repid.
w_comm = 'USER_COMMAND'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = w_repid
it_fieldcat = t_fieldcat
i_Callback_top_of_page = 'Top-of-page'
is_layout = x_layout
it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'X'
it_events = t_event
i_grid_title = w_title
tables
t_outtab = ITS1
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.
FORM set_fieldcat2 USING
p_colpos p_fieldname p_ref_fieldname p_ref_tabname
p_outputlen p_noout
p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
p_hotspot p_showasicon p_checkbox p_edit
p_dosum
p_subtot
t_fieldcat TYPE slis_t_fieldcat_alv
P_JUST
P_FTYPE.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
General settings
wa_fieldcat-fieldname = p_fieldname.
wa_fieldcat-col_pos = p_colpos.
wa_fieldcat-no_out = p_noout.
wa_fieldcat-hotspot = p_hotspot.
wa_fieldcat-checkbox = p_checkbox.
wa_fieldcat-icon = p_showasicon.
wa_fieldcat-do_sum = p_dosum.
Set output length.
IF NOT p_outputlen IS INITIAL.
wa_fieldcat-outputlen = p_outputlen.
ENDIF.
Set text headers.
IF NOT p_seltext_m IS INITIAL.
wa_fieldcat-seltext_m = p_seltext_m.
ENDIF.
IF NOT p_seltext_l IS INITIAL.
wa_fieldcat-seltext_l = p_seltext_l.
ENDIF.
IF NOT p_seltext_s IS INITIAL.
wa_fieldcat-seltext_s = p_seltext_s.
ENDIF.
IF NOT p_reptext_ddic IS INITIAL.
wa_fieldcat-reptext_ddic = p_reptext_ddic.
ENDIF.
IF NOT p_ddictxt IS INITIAL.
wa_fieldcat-ddictxt = p_ddictxt.
ENDIF.
IF NOT P_JUST IS INITIAL.
WA_FIELDCAT-JUST = P_JUST.
ENDIF.
IF NOT p_edit IS INITIAL.
wa_fieldcat-Input = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-do_sum = 'x'.
wa_fieldcat-checkbox = 'x'.
wa_fieldcat-hotspot = 'x'.
ENDIF.
APPEND wa_fieldcat TO t_fieldcat.
ENDFORM. "set_fieldcat2
======================== Subroutines called by ALV ================
*& Form top_of_page
Called on top_of_page ALV event.
Prints the heading.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_heading.
ENDFORM.
form set_top_page_heading using t_heading type slis_t_listheader
t_events type slis_t_event.
data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
append x_heading to t_heading.
Plant Name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'PLANT : '.
x_heading-info = PLANT.
append x_heading to t_heading.
IF DATE2 = '00.00.0000'.
CONCATENATE DATE1 'to' DATE1 INTO DT SEPARATED BY SPACE.
ELSE.
CONCATENATE DATE1 'to' DATE2 INTO DT SEPARATED BY SPACE.
ENDIF.
X_heading-TYP = 'S'.
X_heading-key = 'PERIOD :'.
X_heading-INFO = DT.
APPEND x_heading TO t_heading.
Control Date
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'CONTROL NO. :'.
x_heading-info = ' ASDFADDFAAS DATE : 11.04.2007'.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
endform.
form set_events using t_events type slis_t_event.
data: x_event type line of slis_t_event.
endform.
Edited by: ric .s on Jan 29, 2008 5:21 AMHi,
U can do subtotal for a field based on some other field in ur ALV report using slis_t_sortinfo_alv.
see the sample code below...
data: int_sort TYPE slis_t_sortinfo_alv,
fs_sort TYPE slis_sortinfo_alv.
Sort the output based on ORG UNIT.
CLEAR fs_sort.
fs_sort-fieldname = 'ORGEH'.
fs_sort-subtot = 'X'.
fs_sort-up = 'X'.
APPEND fs_sort TO int_sort.
perform f_alv_catsfieldcat.
Fieldcat calculates the sum for SMPCNT field.
FORM f_alv_catsfieldcat.
DATA: loc_fieldcat TYPE slis_fieldcat_alv.
DEFINE define_field.
clear loc_fieldcat.
loc_fieldcat-fieldname = &1.
loc_fieldcat-seltext_l = &2.
loc_fieldcat-key = &3.
loc_fieldcat-outputlen = &4.
loc_fieldcat-do_sum = &5.
append loc_fieldcat to int_fieldcat.
END-OF-DEFINITION.
REFRESH int_fieldcat.
CLEAR int_fieldcat.
define_field 'PERNR' text-029 'X' '8' ''.
define_field 'ENAME' text-030 '' '40' ''.
define_field 'KOSTL' text-037 '' '10' ''.
define_field 'SMPCNT' text-040 '' '' 'X'.
endform.
Then call REUSE_ALV-GRID_DISPLAY with ur internal table with int_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_sort = int_sort
i_callback_pf_status_set = 'F_PF_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND'
it_fieldcat = int_fieldcat
i_save = 'X'
TABLES
t_outtab = int_outputcpy
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE / 'error'.
ENDIF.
Hope it will help u..
Reward points if helpful
Cheers,
Shanthi
Edited by: shanthi ps on Jan 29, 2008 5:37 AM
Edited by: shanthi ps on Jan 29, 2008 5:38 AM
Maybe you are looking for
-
HT1119 MacBook Pro late 2011 won't turn on
I was working late and let my battery drain while working. The computer shut down. I immediately plugged it in but the light on the power adapter didn't turn on (either orange or green) I tried other plugging it into other outlets. Nothing. I left it
-
Error in Getting Details from SAP by BAPI_MATERIAL_GET_DETAIL
Hi All, I am trying to get the material info from SAP by webDynPro. My Input Parameter is Material(IMPORT PARAMETER) and out put is Matrial_general_data(EXPORT PARAMETER). In the implementation of method in wdDoInit(). Bapi_Material_Get_Detail_Input
-
can we do File---> BAPI with out BPM
-
OBPM process start after UCM check in
Hi People, I have a problem in my hand like this. When I check in a document in Oracle UCM a process in Oracle BPM needs to be triggered. This is not synonymous to invoking a BPEL workflow I think. Because I want to publish the document in ucm straig
-
Querying objects not in the NamedCache
The wiki topic on querying (http://wiki.tangosol.com/display/COH32UG/Querying+the+Cache ) points out that a query will "apply only to currently cached data". This seems fairly logical because it seems unreasonable to expect the cache to hold ont