2007 Oct 25 12:22 PM
Hi,
i want a save button in my alv grid menu so i wrote the code like this......
&----
*& Report ZAL_SHIPEXP
*&
&----
*&
*&
&----
REPORT ZAL_SHIPEXP.
type-pools : slis.
data :begin of it_vbap occurs 0,
vbeln type vbak-vbeln,
KNUMV type vbak-knumv,
kunnr type vbak-kunnr,
posnr LIKE VBAP-POSNR,
matnr type VBAP-MATNR,
netwr type VBAP-NETWR,
kwmeng type VBAP-KWMENG,
WAERK LIKE VBAP-WAERK,
end of it_vbap.
data :begin of it_VBKD occurs 0,
vbeln type vbkd-vbeln,
FKDAT type vbkd-FKDAT,
end of it_VBKD.
data :begin of it_kna1 occurs 0,
kunnr type kna1-kunnr,
land1 type kna1-land1,
name1 type kna1-name1,
end of it_kna1.
data : begin of it_konv occurs 0,
KNUMV type konv-KNUMV,
kschl type konv-kschl,
KwERt type konv-KwERt,
KPOSN LIKE KONV-KPOSN,
end of it_konv.
data : begin of it_out occurs 0,
vbeln type vbak-vbeln,
KNUMV type vbak-knumv,
kunnr type vbak-kunnr,
matnr type VBAP-MATNR,
netwr type VBAP-NETWR,
kwmeng type VBAP-KWMENG,
WAERK LIKE VBAP-WAERK,
FKDAT type vbkd-FKDAT,
land1 type kna1-land1,
name1 type kna1-name1,
kschl type konv-kschl,
KwERt type konv-KwERt,
pr type konv-kwert,
tax type konv-kwert,
INTERNALPR type KONV-Kwert,
TOTEXP type konv-kwert,
NETREAL type konv-kwert,
netwr1 type VBAP-NETWR,
end of it_out.
data :V_WAERK TYPE VBAP-WAERK,
V_REPID TYPE SY-REPID,
WA_FOREIGN TYPE VBAP-NETWR.
DATA: WA_FIELD1 TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV.
data: rt_extab type slis_t_extab. " Table of inactive function
----
Selection-screen
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-t05.
SELECT-OPTIONS: S_VBELN FOR it_VBAp-VBELN.
SELECTION-SCREEN END OF BLOCK B1.
start-of-selection.
select k~vbeln
k~knumv
k~kunnr
p~posnr
p~matnr
p~netwr
p~kwmeng
p~WAERK into table it_vbap from vbak as k inner join vbap as p
on kvbeln = pvbeln where k~vbeln in s_vbeln.
if it_vbap[] is not initial.
select vbeln
fkdat from vbkd into table it_vbkd FOR ALL ENTRIES IN it_vbap
where vbeln = it_vbap-vbeln.
endif.
if it_VBKD[] is not initial.
select kunnr
land1
name1 from kna1 into table it_kna1 FOR ALL ENTRIES IN it_vbap
where kunnr = it_vbap-kunnr.
endif.
select KNUMV
kschl
KwERt
KPOSN from konv into table it_konv FOR ALL ENTRIES IN it_vbap
where knumv = it_vbap-knumv.
loop at it_vbap.
it_out-vbeln = it_vbap-vbeln.
it_out-knumv = it_vbap-knumv.
it_out-kunnr = it_vbap-kunnr.
it_out-MATNR = it_vbap-MATNR.
it_out-NETWR = it_vbap-NETWR.
it_out-KWMENG = it_VBAP-KWMENG.
V_WAERK = it_VBAP-waerk.
read table it_VBKD with KEY vbeln = it_vbap-vbeln.
it_out-fkdat = it_vbkd-FKDAT.
read table it_kna1 with KEY kunnr = it_vbap-kunnr.
it_out-land1 = it_kna1-land1.
it_out-name1 = it_kna1-name1.
*read table it_konv with KEY knumv = it_vbap-knumv.
Read TABLE IT_KONV WITH KEY KPOSN = it_VBAP-POSNR
knumv = it_vbap-KNUMV
KSCHL = 'PR00'.
IF SY-SUBRC = 0.
MOVE it_KONV-KWERT TO it_OUT-PR.
ENDIF.
Read TABLE IT_KONV WITH KEY KPOSN = it_VBAP-POSNR
knumv = it_vbap-KNUMV
KSCHL = 'PR00'.
IF SY-SUBRC = 0.
MOVE it_KONV-KWERT TO it_OUT-tax.
ENDIF.
Read TABLE IT_KONV WITH KEY KPOSN = it_VBAP-POSNR
knumv = it_vbap-KNUMV
KSCHL = 'VPRS'.
IF SY-SUBRC = 0.
MOVE it_KONV-KWERT TO it_OUT-INTERNALPR.
ENDIF.
Calculating Total Expence.
it_OUT-TOTEXP = it_OUT-TAX + it_OUT-INTERNALPR.
Calculating Total Realiasation Amount.
it_OUT-NETREAL = it_OUT-NETWR - it_OUT-TOTEXP.
append it_out.
endloop.
CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
EXPORTING
CLIENT = SY-MANDT
DATE = it_VBKD-FKDAT
FOREIGN_CURRENCY ='INR'
LOCAL_AMOUNT = it_VBAP-NETWR
LOCAL_CURRENCY = V_WAERK
RATE = 0
TYPE_OF_RATE = 'M'
READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE =
FOREIGN_AMOUNT = WA_FOREIGN
FOREIGN_FACTOR =
LOCAL_FACTOR =
EXCHANGE_RATEX =
DERIVED_RATE_TYPE =
FIXED_RATE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MOVE WA_FOREIGN TO it_out-NETWR1.
**
append it_out.
endloop.
----
*
Description:DISPLAY OF SHIPMENT COST DETAILS
----
wa_field1-col_pos = 1.
wa_field1-fieldname = 'FKDAT'.
wa_field1-seltext_l = 'INVOICE DATE'.
wa_field1-outputlen = 8.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 2.
wa_field1-fieldname = 'VBELN'.
wa_field1-seltext_l = 'INVOICE NO'.
wa_field1-outputlen = 10.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 3.
wa_field1-fieldname = 'NAME1'.
wa_field1-seltext_l = 'CUSTOMER NAME'.
wa_field1-outputlen = 35.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 4.
wa_field1-fieldname = 'LAND1'.
wa_field1-seltext_l = 'COUNTRY'.
wa_field1-outputlen = 8.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 5.
wa_field1-fieldname = 'MATNR'.
wa_field1-seltext_l = 'PRODUCT'.
wa_field1-outputlen = 25.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 6.
wa_field1-fieldname = 'KWMENG'.
wa_field1-seltext_l = 'QUANTITY'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 7.
wa_field1-fieldname = 'NETWR'.
wa_field1-seltext_l = 'AMOUNT IN DOC.(CURR)'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 25.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 8.
wa_field1-fieldname = 'NETWR1'.
wa_field1-seltext_l = 'AMOUNT IN INDIAN CURR'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 25.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 9.
wa_field1-fieldname = 'PR'.
wa_field1-seltext_l = 'PRICE'.
WA_FIELD1-do_sum = 'X'.
*wa_field1-outputlen = 10.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 9.
wa_field1-fieldname = 'TAX'.
wa_field1-seltext_l = 'TAX'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 10.
wa_field1-fieldname = 'INTERNALPR'.
wa_field1-seltext_l = 'INTERNALPRICE'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 11.
wa_field1-fieldname = 'TOTEXP'.
wa_field1-seltext_l = 'TOTALEXP'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 12.
wa_field1-fieldname = 'NETREAL'.
wa_field1-seltext_l = 'NET REALISATION'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
wa_field1-col_pos = 13.
wa_field1-fieldname = 'NETAVG'.
wa_field1-seltext_l = 'NETAVG.REALISATION'.
WA_FIELD1-do_sum = 'X'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
*
wa_field1-col_pos = 14.
wa_field1-fieldname = 'SOTP'.
wa_field1-seltext_l = 'SOLD-TO-PARTY'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
*
wa_field1-col_pos = 16.
wa_field1-fieldname = 'SHTP'.
wa_field1-seltext_l = 'SHIP-TO-PARTY'.
wa_field1-outputlen = 20.
APPEND wa_field1 TO IT_FIELDCAT1.
WA_SORT-SPOS = 2.
WA_SORT-UP = 'X'.
WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
perform SET_PF_STATUS USING RT_EXTAB.
perform alv_display.
&----
*& Form alv_display
&----
text
----
--> p1 text
<-- p2 text
----
form alv_display .
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 = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'KKKKKKKKKKKK'
I_CALLBACK_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 =
IT_FIELDCAT = IT_FIELDCAT1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = 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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = it_out
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. " alv_display
form SET_PF_STATUS using rt_extab type slis_t_extab.
SET PF-STATUS 'ZTEST'.
endform.
but i am not getting any set pf status..
wht can be the reason .........
Also i have copied from std pf status only
thanks in advance,
alex.
2007 Oct 25 12:28 PM
hi Alex,
when the ALV function starts:
I_CALLBACK_PROGRAM = V_REPID
pls. check in debug if V_REPID has the right value (i. e. the name of your program)
ec
2007 Oct 25 12:27 PM
Hi,
Double click on ZTEST & activate it.
Then try.
Best regards,
Prashant
2007 Oct 25 12:28 PM
Did you create ZTEST status with all the needed buttons like OK , EXIT and OTHERS THAT U NEED???
ARE YOU SURE?
It should work fine!
FORM STD_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STD_FULL'." EXCLUDING tab.
ENDFORM. "STD_STATUS
Reward if helpful.
2007 Oct 25 12:28 PM
hi Alex,
when the ALV function starts:
I_CALLBACK_PROGRAM = V_REPID
pls. check in debug if V_REPID has the right value (i. e. the name of your program)
ec
2007 Oct 25 12:31 PM