2007 Aug 29 8:06 AM
hi,
I want to know whether any function modules available to get as I see in Invoice ->
select item level conditions.
Where i can see the basic price ,discount, etc as defined in the corresponding pricing procedure.
i have tried with
RV_INVOICE_PRICE_PBO
PRICING_SUBSCREEN_SET_DATA
here i get only the records which have condition type,
similarly for P.O. we have
ME_SWP_SIC_GET_PRICING_INFO
regards,
Prabhu
Points assured.
go to se37 and put 'PRICING' and use where used list. There are two programs in which pricing has been used for invoice and billing. LV60AF0R and LV60AF0P .Have a look at those programs.
Regards,
Mallick
2007 Aug 29 8:10 AM
Hi,
Try out FM 'PRICING'
CALL FUNCTION 'PRICING'
EXPORTING
calculation_type = 'B'
comm_head_i = wa_komk
comm_item_i = wa_komp
TABLES
tkomv = it_komv.
Regards,
Mallick
2007 Aug 29 9:34 AM
I tried it is not happening can you please send the full code.
regards,
Prabhu
2007 Aug 29 9:39 AM
REPORT zmm_pvr.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE-POOLS *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE-POOLS slis.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TABLES *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TABLES: mara, " General Material Data
marc, " Plant Data for Material
ekko, " Purchasing Document Header
ekpo, " Purchasing Document Item
lfa1, " Vendor Master (General Section)
konv, " Conditions (Transaction Data)
mbew, " Material Valuation
makt. " Material Descriptions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA DECLARATION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA: BEGIN OF i_mat OCCURS 1,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
werks LIKE marc-werks,
abcin LIKE marc-abcin,
END OF i_mat.
DATA: BEGIN OF itab OCCURS 1,
ebeln LIKE ekko-ebeln,
bedat LIKE ekko-bedat,
lifnr LIKE ekko-lifnr,
waers LIKE ekko-waers,
bukrs LIKE ekko-bukrs,
ekorg LIKE ekko-ekorg,
name1 LIKE lfa1-name1,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
meins LIKE ekpo-meins,
netpr LIKE ekpo-netpr,
netwr LIKE ekpo-netwr,
menge1(16),
netpr1(16),
menge2 TYPE string,
netpr2 TYPE string,
lrate TYPE p DECIMALS 2,
stax LIKE ekpo-netwr,
exbed LIKE ekpo-netwr,
dcost LIKE konv-kwert,
nomvl LIKE ekpo-netwr,
nomrt LIKE ekpo-netwr,
zplp1 LIKE mbew-zplp1,
verpr LIKE mbew-verpr,
bgval LIKE ekpo-netwr,
varnc LIKE ekpo-netwr,
maktx LIKE makt-maktx,
knumv LIKE ekko-knumv,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
matkl LIKE ekpo-matkl,
mtart LIKE ekpo-mtart,
bprme LIKE ekpo-bprme,
txz01 LIKE ekpo-txz01,
mwskz LIKE ekpo-mwskz,
prdat LIKE ekpo-prdat,
END OF itab.
DATA: wtab LIKE itab.
DATA: v_steuc TYPE marc-steuc.
DATA: v_brsch TYPE lfa1-brsch.
DATA: wa_komk TYPE komk.
DATA: wa_komp TYPE komp.
DATA: it_komv TYPE TABLE OF komv.
DATA: wa_komv TYPE komv.
DATA : wa_fieldcat TYPE slis_fieldcat_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
lt_sort TYPE slis_t_sortinfo_alv,
i LIKE sy-tabix.
DATA: gt_events TYPE slis_t_event.
DATA: gd_prntparams TYPE slis_print_alv.
DATA: it_color TYPE slis_t_specialcol_alv.
DATA: wa_color TYPE slis_specialcol_alv.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Begin Of Selection Screen *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECTION-SCREEN BEGIN OF BLOCK pas WITH FRAME TITLE text-001.
SELECT-OPTIONS s_matnr FOR ekpo-matnr.
SELECT-OPTIONS s_werks FOR ekpo-werks.
SELECT-OPTIONS s_bedat FOR ekko-bedat.
PARAMETERS p_abcin LIKE marc-abcin OBLIGATORY.
SELECTION-SCREEN END OF BLOCK pas.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INITIALIZATION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INITIALIZATION.
IF sy-datum+4(2) GE 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4).
ENDIF.
IF sy-datum+4(2) LT 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4) - 1.
ENDIF.
s_bedat-high = sy-datum.
APPEND s_bedat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AT Selection Screen Output *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AT SELECTION-SCREEN.
Check for Material Type
SELECT amatnr amtart bwerks babcin INTO CORRESPONDING FIELDS OF TABLE i_mat
FROM mara AS a INNER JOIN marc AS b
ON amatnr = bmatnr
WHERE a~matnr IN s_matnr
AND ( amtart = 'IRAM' OR amtart = 'IPAM' OR amtart = 'PRAM' OR amtart = 'PPAM' )
AND b~werks IN s_werks
AND b~abcin = p_abcin.
SORT i_mat BY matnr werks.
CHECK NOT i_mat[] IS INITIAL.
READ TABLE i_mat INDEX 1.
IF sy-subrc <> 0.
MESSAGE e006(zmm).
LEAVE LIST-PROCESSING.
ENDIF.
Check for Date
IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
s_bedat-sign = 'I'.
s_bedat-option = 'BT'.
IF sy-datum+4(2) GE 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4).
ENDIF.
IF sy-datum+4(2) LT 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4) - 1.
ENDIF.
s_bedat-high = sy-datum.
ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
s_bedat-low6(2) = s_bedat-low6(2).
s_bedat-low4(2) = s_bedat-low4(2).
s_bedat-low(4) = s_bedat-low(4).
ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS NOT INITIAL ).
s_bedat-sign = 'I'.
s_bedat-option = 'BT'.
s_bedat-low6(2) = s_bedat-low6(2).
s_bedat-low4(2) = s_bedat-low4(2).
s_bedat-low(4) = s_bedat-low(4).
s_bedat-high6(2) = s_bedat-high6(2).
s_bedat-high4(2) = s_bedat-high4(2).
s_bedat-high(4) = s_bedat-high(4).
ENDIF.
APPEND s_bedat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
START OF SELECTION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
START-OF-SELECTION.
*----- Get all PO for given selection criteria.
LOOP AT i_mat.
SELECT
aebeln abedat alifnr aknumv awaers abukrs a~ekorg
bebelp bmatnr bmatkl bnetpr bbprme btxz01 bwerks bmenge bmeins bnetwr bmtart bmwskz b~prdat
FROM ( ekko AS a INNER JOIN ekpo AS b ON amandt = bmandt AND aebeln = bebeln )
INTO CORRESPONDING FIELDS OF TABLE itab
FOR ALL ENTRIES IN i_mat
WHERE a~bedat IN s_bedat
AND a~loekz = ''
AND b~matnr = i_mat-matnr
AND b~werks = i_mat-werks
AND b~loekz = ''
AND b~pstyp = '0'
AND b~bstyp = 'F'
AND b~knttp = ''.
ENDLOOP. " END OF i_mat
CHECK NOT itab[] IS INITIAL.
SORT itab BY ebeln ebelp.
*----- Calculating The DCOST -- Delivery Cost
DATA: BEGIN OF i_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
stunr LIKE konv-stunr,
zaehk LIKE konv-zaehk,
kschl LIKE konv-kschl,
kbetr LIKE konv-kbetr,
kwert LIKE konv-kwert,
END OF i_konv.
SELECT knumv kposn stunr zaehk kschl kbetr kwert
FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv
FOR ALL ENTRIES IN itab
WHERE knumv = itab-knumv
AND kposn = itab-ebelp
AND ( kschl = 'ZFC3' OR kschl = 'ZQIQ'
OR kschl = 'ZQIV' OR kschl = 'ZFA3'
OR kschl = 'ZFB3' OR kschl = 'ZPF2'
OR kschl = 'ZPQ2' OR kschl = 'ZPV2'
OR kschl = 'ZOCP' OR kschl = 'ZOCQ'
OR kschl = 'ZOCV' OR kschl = 'ZMT1'
OR kschl = 'ZIN2' OR kschl = 'ZIQ2'
OR kschl = 'ZIV2' OR kschl = 'ZBK1'
OR kschl = 'ZBKQ' OR kschl = 'ZBKV' ).
SORT i_konv BY knumv kposn stunr zaehk kschl .
DELETE ADJACENT DUPLICATES FROM i_konv.
DELETE i_konv WHERE kbetr = 0.
DATA: BEGIN OF i_knumv OCCURS 0,
knumv LIKE konv-knumv,
kwert LIKE konv-kwert,
END OF i_knumv.
LOOP AT i_konv.
MOVE i_konv-knumv TO i_knumv-knumv.
MOVE i_konv-kwert TO i_knumv-kwert.
COLLECT i_knumv.
ENDLOOP.
CLEAR i_konv.
CLEAR i_knumv.
LOOP AT itab INTO wtab.
READ TABLE i_knumv WITH KEY knumv = wtab-knumv.
IF sy-subrc = 0.
wtab-dcost = i_knumv-kwert.
MODIFY itab FROM wtab.
ENDIF.
ENDLOOP.
CLEAR i_knumv.
CLEAR itab.
*----- Get the vendor name.
LOOP AT itab.
SELECT SINGLE name1 FROM lfa1 INTO itab-name1
WHERE lifnr = itab-lifnr.
MODIFY itab INDEX sy-tabix TRANSPORTING name1.
ENDLOOP.
*----- Calculate Excise Duty, Educat. cess, Sec edu. cess, sales tax
CLEAR: wa_komk, wa_komp.
Selecting The Value Of STEUC (Controlling Code)
CLEAR itab.
LOOP AT itab.
SELECT SINGLE steuc
FROM marc
INTO v_steuc
WHERE matnr = itab-matnr
AND werks = itab-werks.
Selecting The Value Of BRSCH (Industry key)
SELECT SINGLE brsch
FROM lfa1
INTO v_brsch
WHERE lifnr = itab-lifnr.
Filling KOMK (Header Structure)
wa_komk-kappl = 'TX'.
wa_komk-kalsm = 'TAXINN'.
wa_komk-lifnr = itab-lifnr.
wa_komk-waerk = itab-waers.
wa_komk-aland = 'IN'.
wa_komk-hwaer = 'INR'.
wa_komk-bukrs = itab-bukrs.
wa_komk-brsch = v_brsch.
wa_komk-prsdt = itab-bedat.
wa_komk-ekorg = itab-ekorg.
wa_komk-mwskz = itab-mwskz.
Filling KOMP (Details Structure)
wa_komp-kposn = itab-ebelp.
wa_komp-matnr = itab-matnr.
wa_komp-werks = itab-werks.
wa_komp-matkl = itab-matkl.
wa_komp-meins = itab-meins.
wa_komp-vrkme = itab-bprme.
wa_komp-netwr = itab-netwr.
wa_komp-wrbtr = itab-netwr.
wa_komp-mwskz = itab-mwskz.
wa_komp-netpr = itab-netpr.
wa_komp-mtart = itab-mtart.
wa_komp-kursk_dat = itab-prdat.
wa_komp-steuc = v_steuc.
wa_komp-mgame = itab-menge.
wa_komp-mglme = itab-menge.
FREE it_komv.
Calling The Pricing Function To Get GR EXCISE, GR ECES, GR VAT/CST
CALL FUNCTION 'PRICING'
EXPORTING
calculation_type = 'B'
comm_head_i = wa_komk
comm_item_i = wa_komp
TABLES
tkomv = it_komv.
Calculating The Excise --excise duty
DATA: l_kbetr TYPE komv-kbetr.
DATA: l_gr_excise TYPE ekpo-brtwr.
DATA: l_basic_gr_val TYPE ekpo-netpr.
l_basic_gr_val = itab-netwr.
CLEAR: l_kbetr, l_gr_excise.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'
OR kschl = 'JAOP'
OR kschl = 'JMIP'
OR kschl = 'JAOQ'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_excise = ( l_kbetr * l_basic_gr_val ) / 100.
ENDLOOP.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JAIP'
OR kschl = 'JAIQ'
OR kschl = 'JMIQ'
OR kschl = 'JMOQ'.
l_gr_excise = ( wa_komv-kbetr * l_basic_gr_val ).
ENDLOOP.
Calculating The ECES -- Educational Cess
DATA l_gr_eces TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_eces.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'ZECE'
OR kschl = 'ZECN'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_eces = ( l_kbetr * l_gr_excise ) / 100.
ENDLOOP.
Calculating The SECES -- Sec. Educational Cess
DATA l_gr_secs TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_secs.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JSEP'
OR kschl = 'JSEI'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_secs = ( l_kbetr * l_gr_excise ) / 100.
ENDLOOP.
Calculating The VAT/CST --Sales Tax
DATA l_gr_vatcst TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_vatcst.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JVRN'
OR kschl = 'JVRD'
OR kschl = 'JVCS'
OR kschl = 'JVCD'
OR kschl = 'JVCN'
OR kschl = 'JIPS'
OR kschl = 'JIPC'
OR kschl = 'JIPL'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_vatcst = ( ( l_basic_gr_val + l_gr_excise + l_gr_eces + l_gr_secs ) * l_kbetr ) / 100.
ENDLOOP.
Calculating The NOMVL & NOMVR -- NOM Value (Setoff / Inventory ) & NOM Rate
DATA: l_netpr TYPE ekpo-netpr,
l_menge TYPE ekpo-menge,
l_dcost TYPE ekpo-netwr,
l_nomvl TYPE ekpo-netwr,
l_nomrt TYPE ekpo-netwr.
l_netpr = itab-netpr.
l_menge = itab-menge.
l_dcost = itab-dcost.
CLEAR: l_nomvl, l_nomrt.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP' "------setoff
OR kschl = 'ZECE'
OR kschl = 'JSEP'.
l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost - ( l_gr_excise + l_gr_eces + l_gr_secs ).
l_nomrt = l_nomvl / l_menge.
ENDLOOP.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMIP' "-------inventory
OR kschl = 'ZECN'
OR kschl = 'JSEI'.
l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost.
l_nomrt = l_nomvl / l_menge.
ENDLOOP.
itab-exbed = l_gr_excise + l_gr_eces + l_gr_secs.
itab-stax = l_gr_vatcst.
itab-nomvl = l_nomvl.
itab-nomrt = l_nomrt.
MODIFY itab .
CLEAR itab.
ENDLOOP. " end of itab
LOOP AT itab WHERE exbed = 0.
itab-nomvl = ( itab-netpr * itab-menge ) + itab-stax + itab-dcost.
itab-nomrt = itab-nomvl / itab-menge.
MODIFY itab INDEX sy-tabix TRANSPORTING nomvl nomrt.
ENDLOOP.
*----- Calculating The Budget Rate, Moving Average Price, Landed Rate & Material Description
DATA: verp(15).
DATA: matdes(40).
LOOP AT itab.
SELECT SINGLE zplp1 FROM mbew INTO itab-zplp1
WHERE matnr = itab-matnr AND bwkey = itab-werks.
SELECT SINGLE verpr FROM mbew INTO itab-verpr
WHERE matnr = itab-matnr AND bwkey = itab-werks.
itab-lrate = itab-netwr / itab-menge.
SELECT SINGLE maktx FROM makt INTO itab-maktx
WHERE matnr = itab-matnr AND spras = 'EN'.
MODIFY itab INDEX sy-tabix TRANSPORTING zplp1 verpr lrate maktx.
verp = itab-verpr.
matdes = itab-maktx.
ENDLOOP.
*----- Calculating The Budget Value & Variance
LOOP AT itab.
itab-bgval = itab-zplp1 * itab-menge.
itab-varnc = itab-bgval - itab-nomvl.
MODIFY itab INDEX sy-tabix TRANSPORTING bgval varnc.
ENDLOOP.
*------ Calculating Total of Quantity
DATA: BEGIN OF i_quan OCCURS 1,
quant LIKE ekpo-menge,
unit LIKE ekpo-meins,
nomvl LIKE ekpo-netwr,
curr LIKE ekko-waers,
varnc LIKE ekpo-netwr,
bgval LIKE ekpo-netwr,
END OF i_quan.
LOOP AT itab.
MOVE itab-menge TO i_quan-quant.
MOVE itab-meins TO i_quan-unit.
MOVE itab-nomvl TO i_quan-nomvl.
MOVE itab-waers TO i_quan-curr.
MOVE itab-varnc TO i_quan-varnc.
MOVE itab-bgval TO i_quan-bgval.
COLLECT i_quan.
ENDLOOP.
CLEAR itab.
CLEAR i_quan.
DATA: qty(15).
DATA: unt(3).
DATA: wtd TYPE p DECIMALS 2.
DATA: wtd2(15).
DATA: cur(3).
DATA: var(15).
DATA: nomvl(15).
DATA: bgval(15).
DATA: bgv TYPE p DECIMALS 2.
DATA: bgv2(15).
LOOP AT i_quan.
qty = i_quan-quant.
unt = i_quan-unit.
cur = i_quan-curr.
var = i_quan-varnc.
bgval = i_quan-bgval.
nomvl = i_quan-nomvl.
wtd = nomvl / qty.
bgv = bgval / qty.
ENDLOOP.
CLEAR i_quan.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA DISPLAY *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_l = 'Purchase Order'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 1.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'BEDAT'.
wa_fieldcat-seltext_l = 'PO Date'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 2.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_l = 'Vendor Name'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 3.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-seltext_l = 'Plant'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 4.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'MENGE2'.
wa_fieldcat-fieldname = 'MENGE'.
wa_fieldcat-seltext_l = 'Quantity'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 5.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NETPR2'.
wa_fieldcat-fieldname = 'NETPR'.
wa_fieldcat-seltext_l = 'Basic Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 6.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'EXBED'.
wa_fieldcat-seltext_l = 'Excise'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 7.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'STAX'.
wa_fieldcat-seltext_l = 'Sale Tax'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 7.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'DCOST'.
wa_fieldcat-seltext_l = 'Delivery Cost'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 8.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_l = 'Landed Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 9.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'LRATE'.
wa_fieldcat-seltext_l = 'Landed Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 10.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NOMVL'.
wa_fieldcat-seltext_l = 'NOM Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 12.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
*
wa_fieldcat-fieldname = 'NOMRT'.
wa_fieldcat-seltext_l = 'NOM Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 13.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'BGVAL'.
wa_fieldcat-seltext_l = 'Budget Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 11.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'ZPLP1'.
wa_fieldcat-seltext_l = 'Budget Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 12.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'VARNC'.
wa_fieldcat-seltext_l = 'Variance'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 13.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = ' '.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
READ TABLE gt_events WITH KEY name = slis_ev_end_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_end_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
gd_prntparams-reserve_lines = '7'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-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 = 'END_OF_LIST_HTML'
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = 'X'
IS_VARIANT =
it_events = gt_events
IT_EVENT_EXIT =
is_print = gd_prntparams
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 = itab
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.
&----
*& Form top-of-page
&----
text
----
--> p1 text
<-- p2 text
----
FORM top-of-page .
ALV Header Declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
wa_header1 TYPE slis_listheader,
wa_header2 TYPE slis_listheader,
wa_header3 TYPE slis_listheader,
wa_header4 TYPE slis_listheader.
Title
wa_header-typ = 'H'.
wa_header-info = 'Purchase Variance Report'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Material
SHIFT p_matnr LEFT DELETING LEADING '0'.
wa_header1-typ = 'S'.
wa_header1-info = ' '.
CONCATENATE 'Material : ' p_matnr matdes INTO wa_header1-info SEPARATED BY space.
APPEND wa_header1 TO t_header.
CLEAR wa_header1.
Plant
IF ( s_werks-low IS NOT INITIAL AND s_werks-high IS NOT INITIAL ).
wa_header2-typ = 'S'.
wa_header2-info = ' '.
CONCATENATE 'Plant : ' s_werks-low 'to' s_werks-high INTO wa_header2-info SEPARATED BY space.
APPEND wa_header2 TO t_header.
CLEAR wa_header2.
ELSEIF ( s_werks-low IS NOT INITIAL AND s_werks-high IS INITIAL ).
wa_header2-typ = 'S'.
wa_header2-info = ' '.
CONCATENATE 'Plant : ' s_werks-low INTO wa_header2-info SEPARATED BY space.
APPEND wa_header2 TO t_header.
CLEAR wa_header2.
ELSEIF ( s_werks-low IS INITIAL AND s_werks-high IS INITIAL ).
EXIT.
ENDIF.
Period
IF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
wa_header4-typ = 'S'.
wa_header4-info = ' '.
CONCATENATE 'Period : '
s_bedat-low+6(2) '.'
s_bedat-low+4(2) '.'
s_bedat-low(4) INTO wa_header4-info SEPARATED BY space.
APPEND wa_header4 TO t_header.
CLEAR wa_header4.
ELSE.
IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
wa_header4-typ = 'S'.
wa_header4-info = ' '.
CONCATENATE 'Period : '
s_bedat-low+6(2) '.'
s_bedat-low+4(2) '.'
s_bedat-low(4)
'to'
s_bedat-high+6(2) '.'
s_bedat-high+4(2) '.'
s_bedat-high(4) INTO wa_header4-info SEPARATED BY space.
APPEND wa_header4 TO t_header.
CLEAR wa_header4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
ENDFORM. " top-of-page
&----
*& Form end_of_list_html
&----
output at the end of the list - not in printed output *
&----
FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
DATA: ls_text TYPE sdydo_text_element,
l_grid TYPE REF TO cl_gui_alv_grid,
f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
DATA: qty1 TYPE sdydo_text_element.
DATA: unt1 TYPE sdydo_text_element.
DATA: wtd1 TYPE sdydo_text_element.
DATA: cur1 TYPE sdydo_text_element.
DATA: var1 TYPE sdydo_text_element.
DATA: verp1 TYPE sdydo_text_element.
DATA: bgv1 TYPE sdydo_text_element.
qty1 = qty.
unt1 = unt.
wtd1 = wtd.
cur1 = cur.
var1 = var.
verp1 = verp.
bgv1 = bgv.
ls_text = 'SUMMARY'.
CALL METHOD end->add_text
EXPORTING
text = ls_text
sap_emphasis = 'strong'.
Total Qty Bought (start new line)
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Total Qty Bought : '.
CALL METHOD end->add_text
EXPORTING
text = qty1.
CALL METHOD end->add_text
EXPORTING
text = unt1.
Wtd. Avg. Purchase Rate
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Wtd. Avg. Purchase Rate : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = wtd1.
Wtd. Avg. Budget Rate
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Wtd. Avg. Budget Rate : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = bgv1.
Gain / Loss
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Gain / Loss : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = var1.
MAP ( Moving Average Price )
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Mov Avg Price : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = verp1.
ENDFORM. "end_of_list_html.
&----
*& Form END_OF_PAGE
&----
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
wtd2 = wtd.
bgv2 = bgv.
CONDENSE qty.
CONDENSE unt.
CONDENSE wtd2.
CONDENSE bgv2.
CONDENSE var.
CONDENSE verp.
SKIP.
WRITE:/ 'SUMMARY:'.
write:/ sy-uline(7).
WRITE:/ 'Total Qty Bought : ', qty, unt.
WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
WRITE:/ 'Wtd. Avg. Budget Rate : ', bgv2, cur.
WRITE:/ 'Gain / Loss : ', var, cur.
WRITE:/ 'Mov Avg Price : ', verp, cur.
ENDFORM. "END_OF_PAGE
&----
*& Form END_OF_LIST
&----
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
wtd2 = wtd.
bgv2 = bgv.
CONDENSE qty.
CONDENSE unt.
CONDENSE wtd2.
CONDENSE bgv2.
CONDENSE var.
CONDENSE verp.
SKIP.
WRITE:/ 'SUMMARY:'.
write:/ sy-uline(7).
WRITE:/ 'Total Qty Bought : ', qty, unt.
WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
WRITE:/ 'Wtd. Avg. Budget Rate : ', bgv2, cur.
WRITE:/ 'Gain / Loss : ', var, cur.
WRITE:/ 'Mov Avg Price : ', verp, cur.
2007 Aug 29 9:52 AM
Hi,
Thanx,
I am not asking for Purchase order, I want for INVOICE.
regards,
Prabhu
2007 Aug 29 11:02 AM
2007 Oct 17 7:13 AM
Hi,
I am using the this FM 'pricing' but it returning only some of the condition values.
where as when i make an order with the same values (i/e same sales org , material etc)
it is taking all the condition values in order.
please help
rgds
Madhuri
2007 Aug 29 11:34 AM
go to se37 and put 'PRICING' and use where used list. There are two programs in which pricing has been used for invoice and billing. LV60AF0R and LV60AF0P .Have a look at those programs.
Regards,
Mallick
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |