Académique Documents
Professionnel Documents
Culture Documents
TABLES: a567.
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) ----*-*-*-*-
************************************
***---***- 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.
wa_sra-valid_from = wa_a567-datab.
wa_sra-valid_to = wa_a567-datbi.
wa_sra-fisc_yr = wa_sra-valid_to(4).
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.
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.
"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 ).
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.
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.
* Parameter Date
DATA: form_fromdate TYPE dats,
form_todate TYPE dats,
txt_fromdate(10) TYPE c,
txt_todate(10) TYPE c.
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.
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.