Vous êtes sur la page 1sur 14

*&-----------------------------------------------------------------------&*

*& Company Name : Barrett Hodgson Private Limited &*


*& Program Name : YRQ_SD_SRA_WITH_COSTING &*
*& Transaction Code : YSRA_COST &*
*& Module Name : SD &*
*& Sub-Module : N/A &*
*& Program Type : Report &*
*& Create Time & Date : 10:35AM 12.02.2019 &*
*& SAP Release : &*
*&-----------------------------------------------------------------------&*
*& History : &*
*& Request No Author Changed on &*
*& XXXXXXXXXX Rizwan Qureshi XXXXXXXXXX &*
*&-----------------------------------------------------------------------&*
REPORT yrq_sd_sra_cost_alv_rep.

TABLES: a567.

***---*** Rizwan Qureshi Data Declaration Work (Start) ***---***

TYPES: BEGIN OF yty_sra,


ser_no TYPE i, "Serial No
sra_no TYPE kunwe, "SRA No (Header)
fisc_yr TYPE string, "Fiscal Year of SRA
soldto TYPE kunag, "Customer or Sold To (kunag or kunnr)
soldto_k_no TYPE knvv-ktgrd, "Customer Groud by K Number
name_dlr TYPE name1, "Name of Dealer (Header)
shipto TYPE kunwe, "Institution Dealer (kunwe)
name_inst TYPE name1, "Name of Institution (Header)
inst_st TYPE bztxt, "Name of Station of Institution
(Header)
dlr_st TYPE bztxt, "Name of Station of Dealer (Header)
inst_code TYPE bu_bpext, "Code of Institution (Header)
dlr_code TYPE bu_bpext, "Code of Dealer (Header)
valid_from TYPE kodatab, "Validity From
valid_to TYPE kodatbi, "Validity To

kbstat TYPE a567-kbstat, "Status(Block & Release)


kschl TYPE a567-kschl, "SRA Type
matnr TYPE a567-matnr, "Material Number
maktx TYPE makt-maktx, "Material Description
groes TYPE mara-groes, "Pack Size
udate TYPE cdhdr-udate, "Last Change Date
kbetr_tp TYPE konp-kbetr, "Trade Price (T.P.)
kbetr_zkdr_a0_00 TYPE char20, "Suggested Rate / Bonus (PKR)
kbetr_zkdp TYPE konp-kbetr, "Discount Rate (%)
kbetr_zcom TYPE konp-kbetr, "Dealer Discount (%)
net_rate TYPE kbetr_kond, "Net Rate
net_discount TYPE kbetr_kond, "Net Discount
cont% TYPE p LENGTH 5 DECIMALS 2, "Contribution Percent
gp% TYPE p LENGTH 5 DECIMALS 2, "GP Percent
budget% TYPE zdisp, "Budget Percent
END OF yty_sra.

TYPES: itype_sra TYPE TABLE OF yty_sra.

***---*** Rizwan Qureshi Data Declaration Work (End) ---***---***

***---*** Rizwan Qureshi Data Declaration Work (Start) ***---***


DATA: it_a567 TYPE TABLE OF a567,
wa_a567 LIKE LINE OF it_a567,
it_zna0_kotn502 TYPE TABLE OF kotn502,
it_na00_kotn502 TYPE TABLE OF kotn502,
wa_kotn502 LIKE LINE OF it_zna0_kotn502.

DATA: it_sra TYPE itype_sra,


wa_sra LIKE LINE OF it_sra,
lv_counter TYPE n LENGTH 10.

TYPES: BEGIN OF ty_header,


shipto TYPE a567-kunwe,
soldto TYPE a567-kunag,
datab TYPE a567-datab,
datbi TYPE a567-datbi,
knumh TYPE a567-knumh,
END OF ty_header.

DATA: it_header TYPE TABLE OF ty_header,


it_header_kotn TYPE TABLE OF ty_header,
wa_header LIKE LINE OF it_header.

DATA: para_soldto TYPE yrq_it_select_opt,


wa_para_soldto LIKE LINE OF para_soldto,
para_shipto TYPE yrq_it_select_opt,
wa_para_shipto LIKE LINE OF para_shipto.

DATA : formname TYPE tdsfname,


fm_name TYPE rs38l_fnam,
fp_docparams TYPE sfpdocparams,
fp_outputparams TYPE sfpoutputparams.

DATA: lv_vldt_act TYPE abap_bool,


lv_crdt_act TYPE abap_bool.

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,


gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
gt_events TYPE slis_t_event,
gs_event TYPE slis_alv_event,
gt_sort TYPE slis_t_sortinfo_alv,
wa_sort LIKE LINE OF gt_sort.

***---*** Rizwan Qureshi Data Declaration Work (End) ---***---***


SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : shipto FOR a567-kunwe,
soldto FOR a567-kunag,
val_to FOR a567-datbi OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.

START-OF-SELECTION.
PERFORM call_sra_data.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.

*&---------------------------------------------------------------------*
*& Form CALL SRA DATA
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM call_sra_data.
SELECT kunwe kunag datab datbi knumh FROM a567 INTO TABLE it_header
WHERE kunwe IN shipto
AND kunag IN soldto
AND datbi IN val_to.
*******************-*-*-*---- Rizwan Qureshi - Add new logic - (Start) ----*-*-*-*-
**********************************
"IF lines( it_header ) < 1.
SELECT kunwe AS shipto, kunnr AS soldto, datab AS datab, datbi AS datbi, knumh AS
knumh FROM kotn502 INTO TABLE @it_header_kotn
WHERE kunwe IN @shipto
AND kunnr IN @soldto
AND datbi IN @val_to.
"ENDIF.
*******************-*-*-*---- Rizwan Qureshi - Add new logic - (End) ----*-*-*-*-
************************************

APPEND LINES OF it_header_kotn TO it_header.


SORT it_header BY shipto soldto datab datbi.
DELETE ADJACENT DUPLICATES FROM it_header COMPARING shipto soldto datab datbi.
*&---------------------------------------------------------------------*
*& Form Create Detail of SRA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
CLEAR: it_sra, it_sra[], lv_counter.
LOOP AT it_header INTO wa_header.

CLEAR: wa_sra, it_a567, it_a567[], it_zna0_kotn502, it_zna0_kotn502[],


it_na00_kotn502, it_na00_kotn502[].
"Rizwan Qureshi - Getting SRA for Rate(ZKDR), Percentage(ZKDP) &
Commision(ZCOM)
SELECT * FROM a567 INTO TABLE it_a567
WHERE kunag EQ wa_header-soldto
AND kunwe EQ wa_header-shipto
AND datbi IN val_to
AND kschl IN ( 'ZKDR', 'ZKDP' ).

"Rizwan Qureshi - Getting SRA for Bonus With Status Blocked(ZNA0)


SELECT * FROM kotn502 INTO TABLE it_zna0_kotn502
WHERE kunnr EQ wa_header-soldto
AND kunwe EQ wa_header-shipto
AND datbi IN val_to
AND kschl EQ 'ZNA0'.

"Rizwan Qureshi - Merging Bonus Blocked data into 1 main table


LOOP AT it_zna0_kotn502 INTO wa_kotn502.
CLEAR: wa_a567.
wa_a567-mandt = wa_kotn502-mandt.
wa_a567-kappl = wa_kotn502-kappl.
wa_a567-kschl = wa_kotn502-kschl.
wa_a567-kunag = wa_kotn502-kunnr.
wa_a567-kunwe = wa_kotn502-kunwe.
wa_a567-matnr = wa_kotn502-matnr.
wa_a567-datbi = wa_kotn502-datbi.
wa_a567-datab = wa_kotn502-datab.
wa_a567-kbstat = 'B'.
wa_a567-knumh = wa_kotn502-knumh.
APPEND wa_a567 TO it_a567.
ENDLOOP.

"Rizwan Qureshi - Getting SRA for Bonus With Status Release(NA00)


SELECT * FROM kotn502 INTO TABLE it_na00_kotn502
WHERE kunnr EQ wa_header-soldto
AND kunwe EQ wa_header-shipto
AND datbi IN val_to
AND kschl EQ 'NA00'.

"Rizwan Qureshi - Merging Bonus Released data into 1 main table


LOOP AT it_na00_kotn502 INTO wa_kotn502.
CLEAR: wa_a567.
wa_a567-mandt = wa_kotn502-mandt.
wa_a567-kappl = wa_kotn502-kappl.
wa_a567-kschl = wa_kotn502-kschl.
wa_a567-kunag = wa_kotn502-kunnr.
wa_a567-kunwe = wa_kotn502-kunwe.
wa_a567-matnr = wa_kotn502-matnr.
wa_a567-datbi = wa_kotn502-datbi.
wa_a567-datab = wa_kotn502-datab.
wa_a567-kbstat = 'R'.
wa_a567-knumh = wa_kotn502-knumh.
APPEND wa_a567 TO it_a567.
ENDLOOP.

***---***- Rizwan Qureshi - Append data into main table with combination of all
types (ZKDR, ZKDP, ZCOM, ZNA0, NA00) - Start -***---***
DATA: lv_total_cost TYPE ytotal_cost_d,
lv_var_cost TYPE yvariable_cost_d.

"Rizwan Qureshi - Append data partially into main table with types (ZKDR, ZKDP,
ZCOM, ZNA0, NA00) - Start
LOOP AT it_a567 INTO wa_a567.
CLEAR: lv_total_cost, lv_var_cost, wa_sra.
lv_counter = lv_counter + 1.
wa_sra-ser_no = lv_counter.

"Rizwan Qureshi - Assigning Ship to number as SRA number


wa_sra-sra_no = wa_header-shipto.

"Rizwan Qureshi - Assigning Customer(Sold to) Number


wa_sra-soldto = wa_header-soldto.

"Rizwan Qureshi - Getting K number of Customer(Sold To)


SELECT SINGLE ktgrd FROM knvv INTO wa_sra-soldto_k_no WHERE kunnr EQ
wa_header-soldto.

"Rizwan Qureshi - Assigning Ship to number


wa_sra-shipto = wa_header-shipto.

"Rizwan Qureshi - Getting Name of Institution


SELECT SINGLE name1 INTO wa_sra-name_inst FROM kna1 WHERE kunnr EQ wa_header-
shipto.
"Rizwan Qureshi - Getting Station of Institution
SELECT SINGLE bztxt INTO wa_sra-inst_st FROM t171t AS a INNER JOIN knvv AS b
ON ( a~bzirk = b~bzirk ) WHERE b~kunnr = wa_header-shipto AND a~spras = 'EN'.

"Rizwan Qureshi - Getting Code of Station for Institution


SELECT SINGLE bu_sort1 INTO wa_sra-inst_code FROM but000 WHERE partner =
wa_header-shipto.

"Rizwan Qureshi - Getting Name of Dealer


SELECT SINGLE name1 INTO wa_sra-name_dlr FROM kna1 WHERE kunnr EQ wa_header-
soldto.

"Rizwan Qureshi - Getting Station of Dealer


SELECT SINGLE bztxt INTO wa_sra-dlr_st FROM t171t AS a INNER JOIN knvv AS b
ON ( a~bzirk = b~bzirk ) WHERE b~kunnr = wa_header-soldto AND a~spras = 'EN'.

"Rizwan Qureshi - Getting Code of Station for Dealer


SELECT SINGLE bu_sort1 INTO wa_sra-dlr_code FROM but000 WHERE partner =
wa_header-soldto.

wa_sra-valid_from = wa_a567-datab.
wa_sra-valid_to = wa_a567-datbi.
wa_sra-fisc_yr = wa_sra-valid_to(4).

"Rizwan Qureshi - Getting Total Cost of Material from t.code YRQ_CSRA


SELECT SINGLE total_cost INTO lv_total_cost FROM zpcostsra WHERE material_no
= wa_a567-matnr.
"Rizwan Qureshi - Getting Variable Cost of Material from t.code YRQ_CSRA
SELECT SINGLE variable_cost INTO lv_var_cost FROM zpcostsra WHERE material_no
= wa_a567-matnr.

"Rizwan Qureshi-Material Status(Block/Release),Discount Type, Material, Mat


Desc, Pack Size, Change/Create Date - Start
wa_sra-kbstat = wa_a567-kbstat.
wa_sra-kschl = wa_a567-kschl.
wa_sra-matnr = wa_a567-matnr.
SELECT SINGLE maktx FROM makt INTO wa_sra-maktx WHERE matnr EQ wa_a567-matnr.
SELECT SINGLE groes FROM mara INTO wa_sra-groes WHERE matnr EQ wa_a567-matnr.
"Rizwan Qureshi - Approval date logic (First check if change other wise
create date) for ZKDR & ZKDP
SELECT udate FROM cdhdr WHERE objectid EQ @wa_a567-knumh AND tcode EQ 'VK12'
ORDER BY udate DESCENDING
INTO @wa_sra-udate UP TO 1 ROWS.
ENDSELECT.
IF wa_sra-udate IS INITIAL.
SELECT SINGLE udate FROM cdhdr INTO wa_sra-udate WHERE objectid EQ wa_a567-
knumh AND tcode EQ 'VK11'.
ENDIF.
"Rizwan Qureshi-Material Status(Block/Release),Discount Type, Material, Mat
Desc, Pack Size, Change/Create Date - End

"Rizwan Qureshi - Getting Trade Price of Material by Latest


SELECT konp~kbetr FROM a304
INNER JOIN konp ON konp~knumh EQ a304~knumh
WHERE a304~kschl EQ 'ZTRA' AND a304~kbstat NE 'B' AND a304~matnr EQ @wa_a567-
matnr
ORDER BY a304~datab DESCENDING
INTO @wa_sra-kbetr_tp UP TO 1 ROWS.
ENDSELECT.

DATA: lv_zkdr_a0_00 TYPE konp-kbetr,


lv_bonus_min_qty TYPE kondn-knrmm,
lv_bonus_add_qty TYPE kondn-knrzm.

CLEAR: lv_zkdr_a0_00, lv_bonus_min_qty, lv_bonus_add_qty.

"Rizwan Qureshi - If Discount type = ZKDR(Suggested Rate) so ZKDP(Dis.Rate)


will be null so we have to Calculate ZKDP
IF wa_a567-kschl = 'ZKDR'.
SELECT SINGLE konp~kbetr FROM a567
INNER JOIN konp ON konp~knumh EQ a567~knumh
WHERE a567~kunag EQ @wa_a567-kunag AND a567~kunwe EQ @wa_a567-kunwe AND
a567~matnr EQ @wa_a567-matnr
AND a567~datbi EQ @wa_a567-datbi AND a567~datab EQ @wa_a567-datab AND
a567~kschl EQ 'ZKDR'
INTO @lv_zkdr_a0_00.

wa_sra-kbetr_zkdr_a0_00 = lv_zkdr_a0_00.
IF NOT wa_sra-kbetr_tp IS INITIAL.
wa_sra-kbetr_zkdp = lv_zkdr_a0_00 / wa_sra-kbetr_tp * 100.
ENDIF.
wa_sra-kbetr_zkdp = 100 - wa_sra-kbetr_zkdp.
ENDIF.

"Rizwan Qureshi - If Discount type = ZKDP(Dis.Rate) so ZKDR(Sugg. Rate) will


be null so we have to Calculate ZKDR
IF wa_a567-kschl = 'ZKDP'.
DATA: lv_calc_ty_zkdp TYPE konp-krech.
CLEAR lv_calc_ty_zkdp.
SELECT SINGLE konp~kbetr, konp~krech FROM a567
INNER JOIN konp ON konp~knumh EQ a567~knumh
WHERE a567~kunag EQ @wa_a567-kunag AND a567~kunwe EQ @wa_a567-kunwe AND
a567~matnr EQ @wa_a567-matnr
AND a567~datbi EQ @wa_a567-datbi AND a567~datab EQ @wa_a567-datab AND
a567~kschl EQ 'ZKDP'
INTO ( @wa_sra-kbetr_zkdp, @lv_calc_ty_zkdp ).

IF wa_sra-kbetr_zkdp < 1.
wa_sra-kbetr_zkdp = abs( wa_sra-kbetr_zkdp ).
ENDIF.
IF lv_calc_ty_zkdp = 'A'.
wa_sra-kbetr_zkdp = wa_sra-kbetr_zkdp / 10.
ENDIF.

lv_zkdr_a0_00 = wa_sra-kbetr_zkdp / 100 * wa_sra-kbetr_tp.


lv_zkdr_a0_00 = wa_sra-kbetr_tp - lv_zkdr_a0_00.
wa_sra-kbetr_zkdr_a0_00 = lv_zkdr_a0_00.
ENDIF.

"Rizwan Qureshi - If Discount type Bonus then Getting & Concatenate Buy & Get
Policy
IF wa_a567-kschl = 'ZNA0' OR wa_a567-kschl = 'NA00'.
SELECT SINGLE kondn~knrmm, kondn~knrzm FROM kotn502
INNER JOIN kondn ON kondn~knumh EQ kotn502~knumh
WHERE kotn502~kunnr EQ @wa_a567-kunag AND kotn502~kunwe EQ @wa_a567-kunwe
AND kotn502~matnr EQ @wa_a567-matnr
AND kotn502~datbi EQ @wa_a567-datbi AND kotn502~datab EQ @wa_a567-datab AND
kotn502~kschl IN ( 'ZNA0', 'NA00' )
INTO ( @lv_bonus_min_qty, @lv_bonus_add_qty ).

DATA: lv_str_min TYPE char20,


lv_str_add TYPE char20,
lv_num_min TYPE i,
lv_num_add TYPE i,
lv_bonus_rate TYPE p LENGTH 6 DECIMALS 2.

CLEAR: lv_str_min, lv_str_add, lv_num_min, lv_num_add, lv_bonus_rate.

lv_num_min = lv_bonus_min_qty.
lv_num_add = lv_bonus_add_qty.
lv_str_min = lv_num_min.
lv_str_add = lv_num_add.
CONDENSE lv_str_min.
CONDENSE lv_str_add.
CONCATENATE lv_str_min '+' lv_str_add INTO wa_sra-kbetr_zkdr_a0_00
SEPARATED BY space.
IF NOT lv_num_min IS INITIAL.
lv_bonus_rate = ( lv_num_add / lv_num_min ) * 100.
ENDIF.
IF NOT wa_sra-kbetr_tp IS INITIAL.
wa_sra-kbetr_zkdp = ( lv_total_cost * lv_bonus_rate ) / wa_sra-kbetr_tp.
ENDIF.

"Rizwan Qureshi - Approval date logic (First check if change other wise
create date) for ZNA0 & NA00
SELECT udate FROM cdhdr WHERE objectid EQ @wa_a567-knumh AND tcode EQ
'VBN2' ORDER BY udate DESCENDING
INTO @wa_sra-udate UP TO 1 ROWS.
ENDSELECT.
IF wa_sra-udate IS INITIAL.
SELECT SINGLE udate FROM cdhdr INTO wa_sra-udate WHERE objectid EQ
wa_a567-knumh AND tcode EQ 'VBN1'.
ENDIF.
ENDIF.

"Rizwan Qureshi - Getting Commission if Available for (ZKDR & ZKDP)


DATA: lv_calc_ty_zcom TYPE konp-krech.
CLEAR lv_calc_ty_zcom.
SELECT SINGLE konp~kbetr, konp~krech FROM a567
INNER JOIN konp ON konp~knumh EQ a567~knumh
WHERE a567~kunag EQ @wa_a567-kunag AND a567~kunwe EQ @wa_a567-kunwe AND
a567~matnr EQ @wa_a567-matnr
AND a567~datbi EQ @wa_a567-datbi AND a567~datab EQ @wa_a567-datab AND
a567~kschl EQ 'ZCOM'
INTO ( @wa_sra-kbetr_zcom, @lv_calc_ty_zcom ).

"Rizwan Qureshi - If Commission value found in minus so reverse it.


IF wa_sra-kbetr_zcom < 1.
wa_sra-kbetr_zcom = abs( wa_sra-kbetr_zcom ).
ENDIF.

IF wa_sra-kbetr_zcom > 0 AND lv_calc_ty_zcom = 'A'.


wa_sra-kbetr_zcom = wa_sra-kbetr_zcom / 10.
ENDIF.

"Rizwan Qureshi - Policy condition for Commission


IF wa_sra-kbetr_zcom IS INITIAL.
IF wa_sra-soldto_k_no = 'K2'.
wa_sra-kbetr_zcom = 6.
ELSE.
wa_sra-kbetr_zcom = 0.
ENDIF.
ENDIF.

"Rizwan Qureshi - If Create/Approval date is null


IF wa_sra-udate IS INITIAL.
SELECT SINGLE erdat FROM konh INTO wa_sra-udate WHERE knumh EQ wa_a567-
knumh.
ENDIF.

IF wa_a567-kschl = 'ZNA0' OR wa_a567-kschl = 'NA00'.


"Rizwan Qureshi - Net Rate Wit Bonus Calculation
wa_sra-net_rate = wa_sra-kbetr_tp - ( ( wa_sra-kbetr_tp * wa_sra-kbetr_zcom
) / 100 ).
"Rizwan Qureshi - Net Discount Calculation Bonus
wa_sra-net_discount = wa_sra-kbetr_zkdp + wa_sra-kbetr_zcom.

"Rizwan Qureshi - Hide Requirement as requested by Javed Sb(Finance)


wa_sra-net_discount = wa_sra-net_discount - wa_sra-kbetr_zkdp.
wa_sra-kbetr_zkdp = 0.
ELSE.
"Rizwan Qureshi - Net Rate Without Bonus Calculation
wa_sra-net_rate = wa_sra-kbetr_zkdr_a0_00 - ( ( wa_sra-kbetr_zkdr_a0_00 *
wa_sra-kbetr_zcom ) / 100 ).
IF NOT wa_sra-kbetr_tp IS INITIAL.
"Rizwan Qureshi - Net Discount Calculation W/O Bonus
wa_sra-net_discount = ( wa_sra-kbetr_tp - wa_sra-net_rate ) / wa_sra-
kbetr_tp * 100.
ENDIF.
ENDIF.

IF NOT wa_sra-kbetr_tp IS INITIAL.


IF wa_a567-kschl = 'ZNA0' OR wa_a567-kschl = 'NA00'.
"Rizwan Qureshi - Contribution Percentage Calculation Bonus
wa_sra-cont% = ( ( wa_sra-kbetr_tp - lv_var_cost ) / wa_sra-kbetr_tp *
100 ) - wa_sra-net_discount.

"Rizwan Qureshi - Gross Profit Percentage Calculation Bonus


wa_sra-gp% = ( ( wa_sra-kbetr_tp - lv_total_cost ) / wa_sra-kbetr_tp *
100 ) - wa_sra-net_discount.
ELSE.
"Rizwan Qureshi - Contribution Percentage Calculation W/O Bonus
wa_sra-cont% = ( ( wa_sra-net_rate - lv_var_cost ) / wa_sra-kbetr_tp *
100 ).

"Rizwan Qureshi - Gross Profit Percentage Calculation W/O Bonus


wa_sra-gp% = ( ( wa_sra-net_rate - lv_total_cost ) / wa_sra-kbetr_tp *
100 ).
ENDIF.
ENDIF.

IF wa_sra-kbstat IS INITIAL.
wa_sra-kbstat = 'B'.
ENDIF.
"Rizwan Qureshi - Getting Budget Percenatage
SELECT SINGLE institutional_disc_per INTO wa_sra-budget% FROM zpcostsra WHERE
material_no = wa_a567-matnr.

CONDENSE wa_sra-kbetr_zkdr_a0_00.
APPEND wa_sra TO it_sra.
CLEAR: wa_sra.
ENDLOOP.
"Rizwan Qureshi - Append data partially into main table with types (ZKDR, ZKDP,
ZCOM, ZNA0, NA00) - End
***---***- Rizwan Qureshi - Append data into main table with combination of all
types (ZKDR, ZKDP, ZCOM, ZNA0, NA00) - End ---***---***
ENDLOOP.
SORT it_sra BY shipto soldto valid_from valid_to matnr.
DELETE ADJACENT DUPLICATES FROM it_sra COMPARING shipto soldto valid_from
valid_to matnr.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
i_html_height_top = 170
it_sort = gt_sort[]
TABLES
t_outtab = it_sra
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " DISPLAY_ALV_REPORT
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE *
*-------------------------------------------------------------------*
* ALV Report Header *
*-------------------------------------------------------------------*
FORM top-of-page. "#EC CALLED
*ALV Header declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.

* Title
wa_header-typ = 'H'.
wa_header-info = 'Barrett Hodgson Pakistan (Pvt) Ltd.'.
APPEND wa_header TO t_header.
CLEAR wa_header.

wa_header-typ = 'H'.
wa_header-info = 'Special Rate Approval - Renewal'.
APPEND wa_header TO t_header.
CLEAR wa_header.

IF NOT shipto IS INITIAL.


wa_header-typ = 'S'.
wa_header-key = 'Ship To: '.
CONCATENATE shipto-low '-' shipto-high INTO wa_header-info SEPARATED BY space.
APPEND wa_header TO t_header.
CLEAR: wa_header.
ENDIF.

IF NOT soldto IS INITIAL.


wa_header-typ = 'S'.
wa_header-key = 'Sold To: '.
CONCATENATE soldto-low '-' soldto-high INTO wa_header-info SEPARATED BY space.
APPEND wa_header TO t_header.
CLEAR: wa_header.
ENDIF.

* Parameter Date
DATA: form_fromdate TYPE dats,
form_todate TYPE dats,
txt_fromdate(10) TYPE c,
txt_todate(10) TYPE c.

CONCATENATE val_to-low+6(2) '.' val_to-low+4(2) '.' val_to-low(4) INTO


txt_fromdate.
CONCATENATE val_to-high+6(2) '.' val_to-high+4(2) '.' val_to-high(4) INTO
txt_todate.

wa_header-typ = 'S'.
wa_header-key = 'Valid From: '.
wa_header-info = txt_fromdate.
APPEND wa_header TO t_header.
CLEAR: wa_header.

wa_header-typ = 'S'.
wa_header-key = 'Valid To:'.
wa_header-info = txt_todate.
APPEND wa_header TO t_header.
CLEAR: wa_header.

* Date
wa_header-typ = 'A'.
CONCATENATE 'Report Date: '
sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.

* Total No. of Records Selected


DESCRIBE TABLE it_sra LINES ld_lines.
ld_linesc = ld_lines.
CONCATENATE 'Total No. of Records: ' ld_linesc INTO t_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = t_line.
APPEND wa_header TO t_header.
CLEAR: wa_header, t_line.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = t_header.
* i_logo = 'Z_LOGO'.
ENDFORM. "html_event_top_of_page
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-zebra = 'X'.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).

REFRESH gt_sort.
"Rizwan Qureshi - Sort order by Sold to
CLEAR wa_sort.
wa_sort-fieldname = 'SRA_NO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
wa_sort-tabname = 'IT_SRA'.
APPEND wa_sort TO gt_sort.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Module BUILD FIELD CATALOG INPUT
*&---------------------------------------------------------------------*
* Build Fieldcatalog
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
REFRESH fieldcatalog.
CLEAR fieldcatalog.

* fieldcatalog-fieldname = 'SER_NO'.
* fieldcatalog-seltext_m = 'S. No'.
* fieldcatalog-row_pos = '1'.
* fieldcatalog-col_pos = '1'.
* APPEND fieldcatalog.
* CLEAR fieldcatalog.

fieldcatalog-fieldname = 'SRA_NO'.
fieldcatalog-seltext_m = 'SRA #'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '2'.
fieldcatalog-hotspot = 'X'.
fieldcatalog-no_zero = 'X'.
fieldcatalog-inttype = 'N'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KSCHL'.
fieldcatalog-seltext_m = 'Type'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '3'.
APPEND fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FISC_YR'.
fieldcatalog-seltext_m = 'Fs.Yr'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '4'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'SOLDTO'.
fieldcatalog-seltext_m = 'Sold To'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '5'.
fieldcatalog-no_zero = 'X'.
fieldcatalog-inttype = 'N'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'DLR_CODE'.
fieldcatalog-seltext_m = 'SoldTo K No'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '6'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NAME_DLR'.
fieldcatalog-seltext_m = 'Institutional Dealer'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '7'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'SHIPTO'.
fieldcatalog-seltext_m = 'Ship To'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '8'.
fieldcatalog-no_zero = 'X'.
fieldcatalog-inttype = 'N'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'INST_CODE'.
fieldcatalog-seltext_m = 'ShipTo K No'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '9'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NAME_INST'.
fieldcatalog-seltext_m = 'Name of Institution'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '10'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'VALID_FROM'.
fieldcatalog-seltext_m = 'Effective Date'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '11'.
fieldcatalog-datatype = 'DATS'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'VALID_TO'.
fieldcatalog-seltext_m = 'Expiry Date'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '12'.
fieldcatalog-datatype = 'DATS'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KBSTAT'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '13'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Mat. Code'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '14'.
fieldcatalog-ref_tabname = 'A567'.
fieldcatalog-ref_fieldname = 'MATNR'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-seltext_m = 'Product Name'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '15'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'GROES'.
fieldcatalog-seltext_m = 'Pack Size'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '16'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'UDATE'.
fieldcatalog-seltext_m = 'Approval Date'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '17'.
fieldcatalog-datatype = 'DATS'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KBETR_TP'.
fieldcatalog-seltext_m = 'Trade Price'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '18'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KBETR_ZKDR_A0_00'.
fieldcatalog-seltext_m = 'Suggested Rate.'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '19'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KBETR_ZKDP'.
fieldcatalog-seltext_m = 'Discount Rate'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '20'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'KBETR_ZCOM'.
fieldcatalog-seltext_m = 'Dealer Discount'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '21'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NET_RATE'.
fieldcatalog-seltext_m = 'Net Rate'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '22'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NET_DISCOUNT'.
fieldcatalog-seltext_m = 'Net Discount'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '23'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'CONT%'.
fieldcatalog-seltext_m = 'Contribution %'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '24'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'GP%'.
fieldcatalog-seltext_m = 'Gross Profit %'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '25'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'BUDGET%'.
fieldcatalog-seltext_m = 'budget %'.
fieldcatalog-row_pos = '1'.
fieldcatalog-col_pos = '26'.
APPEND fieldcatalog.
CLEAR fieldcatalog.

ENDFORM.

Vous aimerez peut-être aussi