Vendor comp
-
Upload
independent -
Category
Documents
-
view
4 -
download
0
Transcript of Vendor comp
*&---------------------------------------------------------------------**& Include ZS_MPP_TOP Module Pool ZSHW_MPP2*&*&---------------------------------------------------------------------*
PROGRAM ZSHW_MPP2.TYPE-POOLS : VRM.
DATA: screen1 TYPE n LENGTH 4 VALUE 1001, ok_code LIKE sy-ucomm.
TYPES : BEGIN OF ST_EORD, MATNR TYPE EORD-MATNR, WERKS TYPE EORD-WERKS, LIFNR TYPE EORD-LIFNR, END OF ST_EORD.
TYPES : BEGIN OF ST_LFA1, LIFNR TYPE LFA1-LIFNR, NAME1 TYPE LFA1-NAME1, END OF ST_LFA1.
types : BEGIN OF ST_MAKT, MATNR TYPE MAKT-MATNR, MAKTX TYPE MAKT-MAKTX, END OF ST_MAKT.
DATA : IT_EORD TYPE TABLE OF ST_EORD, WA_EORD TYPE ST_EORD,
IT_LFA1 TYPE TABLE OF ST_LFA1, WA_LFA1 TYPE ST_LFA1.
data : it_makt TYPE TABLE OF st_makt, wa_makt TYPE st_makt.
DATA : MATERIAL TYPE STRING, PLANT TYPE STRING.
DATA : WA_QUOTN TYPE ZSHW_QUOTN.
DATA : NAME TYPE VRM_ID, LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF LIST.DATA : VENDOR TYPE STRING.
DATA: OKCODE TYPE SY-UCOMM.
TYPES : BEGIN OF TY_QUOTN, MANDT TYPE ZSHW_QUOTN-MANDT, QUOTN TYPE ZSHW_QUOTN-QUOTN, MATERIAL TYPE ZSHW_QUOTN-MATERIAL, PLANT TYPE ZSHW_QUOTN-PLANT, VENDOR TYPE ZSHW_QUOTN-VENDOR, MAKTX TYPE ZSHW_QUOTN-MAKTX, Z_DATE TYPE ZSHW_QUOTN-Z_DATE, BASIC_PRIZE TYPE ZSHW_QUOTN-BASIC_PRIZE, PAC_CHRG TYPE ZSHW_QUOTN-PAC_CHRG, PRINT_CHRG TYPE ZSHW_QUOTN-PRINT_CHRG, BASIC_DUTY TYPE ZSHW_QUOTN-BASIC_DUTY, EX_DUTY TYPE ZSHW_QUOTN-EX_DUTY, SPE_ADD TYPE ZSHW_QUOTN-SPE_ADD, FREIGHT TYPE ZSHW_QUOTN-FREIGHT, OCTROI TYPE ZSHW_QUOTN-OCTROI, OTHR_CHRG TYPE ZSHW_QUOTN-OTHR_CHRG, TOT_CHRG TYPE ZSHW_QUOTN-TOT_CHRG, LESS_CHRG TYPE ZSHW_QUOTN-LESS_CHRG, END OF TY_QUOTN.
DATA : IT_ZSHW_QUOTN TYPE TABLE OF TY_QUOTN, WA_ZSHW_QUOTN TYPE TY_QUOTN.
controls : tc type tableview using screen 1003.
types : BEGIN OF ST_CS_FINAL, MANDT TYPE ZSA_CS_FINAL-MANDT, MATERIAL TYPE ZSA_CS_FINAL-MATERIAL, PLANT TYPE ZSA_CS_FINAL-PLANT, VENDOR TYPE ZSA_CS_FINAL-VENDOR, COMP_NO TYPE ZSA_CS_FINAL-COMP_NO, QUOTN_NO TYPE ZSA_CS_FINAL-QUOTN_NO, MAKTX TYPE ZSA_CS_FINAL-MAKTX, NAME1 TYPE ZSA_CS_FINAL-NAME1, S_DATE TYPE ZSA_CS_FINAL-S_DATE, BASIC_PRICE TYPE ZSA_CS_FINAL-BASIC_PRICE, PACK_CHRG TYPE ZSA_CS_FINAL-PACK_CHRG, PRINT_CHARGE TYPE ZSA_CS_FINAL-PRINT_CHARGE, NET_PRICE TYPE ZSA_CS_FINAL-NET_PRICE, "basic duty
E_DUTY TYPE ZSA_CS_FINAL-E_DUTY, SPL_DUTY TYPE ZSA_CS_FINAL-SPL_DUTY, SALES_TAX TYPE ZSA_CS_FINAL-SALES_TAX, FREIGHT TYPE ZSA_CS_FINAL-FREIGHT, OCTROI TYPE ZSA_CS_FINAL-OCTROI, OTHER_CHARGES TYPE ZSA_CS_FINAL-OTHER_CHARGES, TOT_VAL_PER_UNIT TYPE ZSA_CS_FINAL-TOT_VAL_PER_UNIT, LESS_CHRG TYPE ZSA_CS_FINAL-LESS_CHRG, EFCT_PRICE TYPE ZSA_CS_FINAL-EFCT_PRICE, PAY_TERMS TYPE ZSA_CS_FINAL-PAY_TERMS, DEL_PERD TYPE ZSA_CS_FINAL-DEL_PERD, END OF ST_CS_FINAL.
data : it_zsa_cs_final type table of st_cs_final, wa_zsa_cs_final type st_cs_final.
DATA: QUOTATION_NO TYPE STRING.
"""""""""""""""""COMPARISION SHEET"""""""""""""""""""""
TABLES : zsa_comparsheet.
types : BEGIN OF ST_COMPARSHEET, MANDT TYPE ZSA_COMPARSHEET-MANDT, COMPAR_NO TYPE ZSA_COMPARSHEET-COMPAR_NO, S_DATE TYPE ZSA_COMPARSHEET-S_DATE, PLANT TYPE ZSA_COMPARSHEET-PLANT, MATERIAL TYPE ZSA_COMPARSHEET-MATERIAL, MAKTX TYPE ZSA_COMPARSHEET-MAKTX, QUANTITY TYPE ZSA_COMPARSHEET-QUANTITY, O_STOCK TYPE ZSA_COMPARSHEET-O_STOCK, ON_ORDR_STOCK TYPE ZSA_COMPARSHEET-ON_ORDR_STOCK, T_REQUIRMNT TYPE ZSA_COMPARSHEET-T_REQUIRMNT, VENDOR1 TYPE ZSA_COMPARSHEET-VENDOR1, VENDOR2 TYPE ZSA_COMPARSHEET-VENDOR2, VENDOR3 TYPE ZSA_COMPARSHEET-VENDOR3, VENDOR4 TYPE ZSA_COMPARSHEET-VENDOR4, EFECT_PRIZ TYPE ZSA_COMPARSHEET-EFECT_PRIZ, PAY_TERMS TYPE ZSA_COMPARSHEET-PAY_TERMS, QUATN_REF TYPE ZSA_COMPARSHEET-QUATN_REF, DELI_PERIOD TYPE ZSA_COMPARSHEET-DELI_PERIOD, PACKING TYPE ZSA_COMPARSHEET-PACKING, MAKE TYPE ZSA_COMPARSHEET-MAKE, LOW_PUR_PRI TYPE ZSA_COMPARSHEET-LOW_PUR_PRI,
LOW_PUR_VENDOR TYPE ZSA_COMPARSHEET-LOW_PUR_VENDOR, LOW_PUR_DATE TYPE ZSA_COMPARSHEET-LOW_PUR_DATE, HIGH_PUR_PRI TYPE ZSA_COMPARSHEET-HIGH_PUR_PRI, HIG_PU_VENDOR TYPE ZSA_COMPARSHEET-HIG_PU_VENDOR, HIG_PU_DATE TYPE ZSA_COMPARSHEET-HIG_PU_DATE, PO_NO TYPE ZSA_COMPARSHEET-PO_NO, PO_DATE TYPE ZSA_COMPARSHEET-PO_DATE, PO_QTY TYPE ZSA_COMPARSHEET-PO_QTY, PO_PRICE TYPE ZSA_COMPARSHEET-PO_PRICE, PURCHASE_VAL TYPE ZSA_COMPARSHEET-PURCHASE_VAL, MONTH1 TYPE ZSA_COMPARSHEET-MONTH1, MONTH2 TYPE ZSA_COMPARSHEET-MONTH2, MONTH3 TYPE ZSA_COMPARSHEET-MONTH3, MONTH4 TYPE ZSA_COMPARSHEET-MONTH4, MONTH1_QTY TYPE ZSA_COMPARSHEET-MONTH1_QTY, MONTH2_QTY TYPE ZSA_COMPARSHEET-MONTH2_QTY, MONTH3_QTY TYPE ZSA_COMPARSHEET-MONTH3_QTY, MONTH4_QTY TYPE ZSA_COMPARSHEET-MONTH4_QTY, DATE1 TYPE ZSA_COMPARSHEET-DATE1, DATE2 TYPE ZSA_COMPARSHEET-DATE2, DATE3 TYPE ZSA_COMPARSHEET-DATE3, DATE4 TYPE ZSA_COMPARSHEET-DATE4, QTY1 TYPE ZSA_COMPARSHEET-QTY1, QTY2 TYPE ZSA_COMPARSHEET-QTY2, QTY3 TYPE ZSA_COMPARSHEET-QTY3, QTY4 TYPE ZSA_COMPARSHEET-QTY4, HEAD_MATERIAL TYPE ZSA_COMPARSHEET-HEAD_MATERIAL, END OF ST_COMPARSHEET.
data : it_zsa_comparsheet TYPE TABLE OF st_comparsheet, wa_zsa_comparsheet TYPE st_comparsheet.
TABLES : MARD.TYPES : BEGIN OF ST_MARD, MATNR TYPE MARD-MATNR, WERKS TYPE MARD-WERKS, LGORT TYPE MARD-LGORT, LABST TYPE MARD-LABST, END OF ST_MARD.
DATA : IT_MARD TYPE TABLE OF ST_MARD, WA_MARD TYPE ST_MARD.
data : sum type string, wa_opnstk type string.
tables : marc.types : BEGIN OF ST_MARC, MATNR TYPE MARC-MATNR, BSTMI TYPE MARC-BSTMI, END OF ST_MARC.
data : it_marc type table of st_marc, wa_marc type st_marc.
types:begin of st_mdbs, matnr type mdbs-matnr, ebeln type mdbs-ebeln, ebelp type mdbs-ebelp, menge type mdbs-menge, wemng type mdbs-wemng, bstyp type mdbs-bstyp, loekz type mdbs-loekz, elikz type mdbs-elikz, retpo type mdbs-retpo, end of st_mdbs.
data : it_mdbs type table of st_mdbs, IT_MDBS1 TYPE TABLE OF st_MDBS, wa_mdbs type st_mdbs, ON_ORD_STOCK TYPE STRING, P_STOCK TYPE STRING.
types: BEGIN OF ST_EBAN, MATNR TYPE EBAN-MATNR, MENGE TYPE EBAN-MENGE, FRGDT TYPE EBAN-FRGDT, pr_per(3) type c, month(3) type c, END OF ST_EBAN.
data:it_eban type table of ST_EBAN.data:wa_eban type st_eban.data:it_eban1 type table of ST_EBAN.data:wa_eban1 type st_eban.data:wa_eban2 type st_eban.data:wa_eban3 type st_eban.data:wa_eban4 type st_eban.
data: pr_per1 type /bi0/oifiscper3.data: pr_yr1 type /bi0/oifiscyear.data:count2 type i.data: tot_req(12) type c,
wa_total_req(12) type c.
types : BEGIN OF ST_EKKO, EBELN TYPE EKKO-EBELN, BSART TYPE EKKO-BSART, LIFNR TYPE EKKO-LIFNR, BEDAT TYPE EKKO-BEDAT, END OF ST_EKKO.
TYPES: BEGIN OF st_EKPO, EBELN TYPE EKPO-EBELN, MATNR TYPE EKPO-MATNR, WERKS TYPE EKPO-WERKS, NETPR TYPE EKPO-NETPR, MENGE TYPE EKPO-MENGE, AEDAT TYPE EKPO-AEDAT, PEINH TYPE EKPO-PEINH, BPRME TYPE EKPO-BPRME, END OF st_EKPO.
data : it_ekko type table of st_ekko, it_ekko1 type table of st_ekko, wa_ekko type st_ekko, wa_ekko1 type st_ekko,
it_ekpo type table of st_ekpo, it_ekpo1 type table of st_ekpo, wa_ekpo type st_ekpo, wa_ekpo1 type st_ekpo.
data : nline type i.
types : BEGIN OF ST_EINA, INFNR TYPE EINA-INFNR, MATNR TYPE EINA-MATNR, LIFNR TYPE EINA-LIFNR, END OF ST_EINA.
data : it_eina type table of st_eina, wa_eina type ST_EINA.
types : BEGIN OF ST_EINE, INFNR TYPE EINE-INFNR, APLFZ TYPE EINE-APLFZ, END OF ST_EINE.
data : it_eine type table of st_eine,
wa_eine type st_eine.
types : BEGIN OF ST_LFM1, LIFNR TYPE LFM1-LIFNR, ZTERM TYPE LFM1-ZTERM, END OF ST_LFM1.
types : BEGIN OF ST_T052U, SPRAS TYPE T052U-SPRAS, ZTERM TYPE T052U-ZTERM, TEXT1 TYPE T052U-TEXT1, END OF ST_T052U.
data : it_lfm1 type table of st_lfm1, it_t052u type table of ST_T052U, wa_lfm1 type st_lfm1, wa_t052u type st_t052u.
data : COMPARISION_SHEET TYPE string.
data:msg(50).
MODULE STATUS_1000 OUTPUT. SET PF-STATUS 'ZPF1'.*ENDMODULE. " STATUS_1000 OUTPUT
*----------------------------------------------------------------------*MODULE USER_COMMAND_1000 INPUT.
CASE OK_CODE. WHEN 'BACK'. IF SY-DYNNR = 1003. REFRESH IT_ZSA_CS_FINAL. ENDIF. SCREEN1 = 1001. WHEN 'EXIT' OR 'CANCEL' . LEAVE PROGRAM. ENDCASE.ENDMODULE.
" USER_COMMAND_1000 INPUT
MODULE STATUS_1001 OUTPUT. DATA : DATE TYPE SY-DATUM. DATE = SY-DATUM.* SET PF-STATUS 'xxxxxxxx'.* SET TITLEBAR 'xxx'. CLEAR : IT_EORD[],IT_LFA1[],LIST.
SELECT MATNR WERKS LIFNR FROM EORD INTO TABLE IT_EORD WHERE MATNR = MATERIAL AND WERKS = PLANT.
IF IT_EORD IS NOT INITIAL.
SELECT LIFNR NAME1 FROM LFA1 INTO TABLE IT_LFA1 FOR ALL ENTRIES IN IT_EORD WHERE LIFNR = IT_EORD-LIFNR.
ENDIF.
LOOP AT IT_LFA1 INTO WA_LFA1. VALUE-KEY = WA_LFA1-LIFNR. VALUE-TEXT = WA_LFA1-NAME1. APPEND VALUE TO LIST. ENDLOOP. NAME = 'VENDOR'. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST* EXCEPTIONS* ID_ILLEGAL_NAME = 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.* IF SY-UCOMM = 'MQBTN'.** when 'MQBTN'.* SCREEN1 = 1002.* LOOP AT SCREEN.* IF SCREEN-GROUP1 = 'GRP'.* SCREEN-INPUT = 1.*** ENDIF.* MODIFY SCREEN.**
****BREAK-POINT.* CASE OK_CODE.* IF SY-UCOMM = 'DISPLAY1'.** LOOP AT SCREEN.* IF SCREEN-GROUP1 = 'SHW'.* SCREEN-INPUT = 0.* MODIFY SCREEN** .* ENDIF.* ENDLOOP.* ENDIF.
**
* ENDLOOP.* ENDIF.* SCREEN1 = 1002.
ENDMODULE. " STATUS_1001 OUTPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_1001 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE USER_COMMAND_1001 INPUT.* CLEAR screen1. CASE SY-UCOMM. WHEN 'MQBTN'. IF MATERIAL IS NOT INITIAL AND PLANT IS NOT INITIAL. wa_zshw_quotn-material = material. wa_zshw_quotn-plant = plant. wa_zshw_quotn-vendor = vendor. wa_zshw_quotn-maktx = WA_LFA1-NAME1.
SCREEN1 = 1002.ELSE. MESSAGE ' PLEASE ENTER VALUE IN FIELD ' TYPE 'E' DISPLAY LIKE 'E'.SCREEN1 = 1002. ENDIF.
when 'CREATE'.
REFRESH: IT_ZSA_COMPARSHEET, IT_ZSA_CS_FINAL.* IF MATERIAL IS NOT INITIAL AND PLANT IS NOT INITIAL. wa_zsa_comparsheet-material = material. wa_zsa_comparsheet-plant = plant. wa_zsA_COMPARSHEET-maktx = wa_makt-maktx. WA_ZSA_CS_FINAL-QUOTN_NO = wa_zshw_quotn-quotn.
select MANDT QUOTN MATERIAL PLANT VENDOR MAKTX Z_DATE BASIC_PRIZE PAC_CHRG PRINT_CHRG BASIC_DUTY EX_DUTY SPE_ADD FREIGHT OCTROI OTHR_CHRG TOT_CHRG LESS_CHRG FROM zshw_quotn INTO TABLE it_zshw_quotn WHERE material = material and vendor = vendor.
***********************************start logic for total requirment***********************************************select matnr menge frgdt from eban into corresponding fields of table it_eban where matnr = MATERIAL.
sort it_eban by frgdt. loop at it_eban into wa_eban. call function 'DATE_TO_PERIOD_CONVERT' exporting i_date = wa_eban-frgdt i_monmit = 00 i_periv = 'V3' importing
e_buper = pr_per1 e_gjahr = pr_yr1 exceptions input_false = 1 t009_notfound = 2 t009b_notfound = 3 others = 4. if sy-subrc <> 0.* Implement suitable error handling here endif.
case pr_per1. when 1. wa_eban-pr_per = pr_per1. wa_eban-month = 'Apr'. when 2. wa_eban-pr_per = pr_per1. wa_eban-month = 'May'. when 3. wa_eban-pr_per = pr_per1. wa_eban-month = 'Jun'. when 4. wa_eban-pr_per = pr_per1. wa_eban-month = 'Jul'. when 5. wa_eban-pr_per = pr_per1. wa_eban-month = 'Aug'. when 6. wa_eban-pr_per = pr_per1. wa_eban-month = 'Sep'. when 7. wa_eban-pr_per = pr_per1. wa_eban-month = 'Oct'. when 8. wa_eban-pr_per = pr_per1. wa_eban-month = 'Nov'.* TXT = PR_PER1.""""""""""""""""""""""""""""""""""FILL THE NOV MONTH"""""""""""""""" when 9. wa_eban-pr_per = pr_per1. wa_eban-month = 'Dec'. when 10. wa_eban-pr_per = pr_per1. wa_eban-month = 'Jan'. when 11. wa_eban-pr_per = pr_per1. wa_eban-month = 'Feb'. when 12. wa_eban-pr_per = pr_per1.
wa_eban-month = 'Mar'. endcase.
modify it_eban from wa_eban. clear :wa_eban,pr_per1. endloop.
loop at it_eban into wa_eban. clear:wa_eban-frgdt.* WA_EBAN1 = WA_EBAN. collect wa_eban into it_eban1. clear wa_eban. endloop.
loop at it_eban1 into wa_eban. if count2 = 0. wa_eban1 = wa_eban. clear wa_eban. count2 = count2 + 1. elseif count2 = 01. wa_eban2 = wa_eban. clear wa_eban. count2 = count2 + 1. elseif count2 = 2. wa_eban3 = wa_eban. clear wa_eban. count2 = count2 + 1. elseif count2 = 3. wa_eban4 = wa_eban. clear wa_eban. count2 = count2 + 1. endif. endloop.
tot_req = wa_eban1-menge + wa_eban2-menge +wa_eban3-menge + wa_eban4-menge .shift tot_req left deleting leading space.wa_total_req = tot_req.wa_zsa_comparsheet-T_REQUIRMNT = wa_total_req.*ZSA_COMPARSHEET-T_REQUIRMNT = tot_req.WA_ZSA_COMPARSHEET-MONTH1 = wa_eban1-month.WA_ZSA_COMPARSHEET-MONTH2 = wa_eban2-month.WA_ZSA_COMPARSHEET-MONTH3 = wa_eban3-month.WA_ZSA_COMPARSHEET-MONTH4 = wa_eban4-month.
WA_ZSA_COMPARSHEET-MONTH1_QTY = wa_eban1-menge.WA_ZSA_COMPARSHEET-MONTH2_QTY = wa_eban2-menge.
WA_ZSA_COMPARSHEET-MONTH3_QTY = wa_eban3-menge.WA_ZSA_COMPARSHEET-MONTH4_QTY = wa_eban4-menge.**wa_finalc-month1 = lbl_month1.**wa_finalc-month2 = lbl_month2.**wa_finalc-month3 = lbl_month3.**wa_finalc-month4 = lbl_month4.****wa_finalc-month1_qty = txt_month1.**wa_finalc-month2_qty = txt_month2.**wa_finalc-month3_qty = txt_month3.**wa_finalc-month4_qty = txt_month4.**********************************end logic for total requirment*******************************************
"""""""""""""""""""""""START OF OPENING STOCK""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
select matnr werks lgort labst from mard into table it_mard where matnr = material and werks = PLANT. " and lgort in ('0001','0002').
sum = 0. loop at it_mard into wa_mard. sum = sum + wa_mard-labst. endloop.
wa_opnstk = sum. wa_zsa_comparsheet-o_stock = wa_opnstk.
*""""""""""""""""""""""""END OF OPENING STOCK"""""""""""""""""""""""""""""""""""""""""""**
*""""""""""""""""""""""""START OF ON ORDER STOCK""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
select matnr bstmi from marc into table it_marc where matnr = material.
select matnr ebeln ebelp menge wemng bstyp loekz elikz retpo from mdbs into table it_mdbs for all entries in it_marc where matnr = it_marc-matnr.
LOOP AT IT_MDBS INTO WA_MDBS. clear :wa_mdbs-ebeln,wa_mdbs-ebelp.collect wa_mdbs into it_mdbs1.clear wa_mdbs.endloop.
loop at it_mdbs1 into wa_mdbs . on_ord_stock = wa_mdbs-menge - wa_mdbs-wemng.endloop.
P_STOCK = ON_ORD_STOCK.WA_zsa_comparsheet-ON_ORDR_STOCK = P_STOCK.
""""""""""""""""""""END OF ON ORDER STOCK""""""""""""""""""""""""""""""""""""""""""""""""""""""""
**************** TABLE CONTROL************************************************************************BREAK-POINT.
sort it_zshw_quotn DESCENDING by quotn. READ TABLE it_zshw_quotn INTO wa_zshw_quotn INDEX 1. IF SY-SUBRC = 0.
wa_zsa_cs_final-quotn_no = wa_zshw_quotn-quotn. wa_zsa_cs_final-material = wa_zshw_quotn-material. wa_zsa_cs_final-plant = wa_zshw_quotn-plant. wa_zsa_cs_final-vendor = wa_zshw_quotn-vendor. wa_zsa_cs_final-maktx = wa_zshw_quotn-maktx. wa_zsa_cs_final-s_date = wa_zshw_quotn-z_date. wa_zsa_cs_final-basic_price = wa_zshw_quotn-basic_prize. wa_zsa_cs_final-PACK_CHRG = wa_zshw_quotn-PAC_CHRG. wa_zsa_cs_final-PRINT_CHARGE = wa_zshw_quotn-PRINT_CHRG.
wa_zsa_cs_final-net_price = wa_zshw_quotn-BASIC_DUTY. wa_zsa_cs_final-e_duty = wa_zshw_quotn-EX_DUTY. wa_zsa_cs_final-spl_duty = wa_zshw_quotn-SPE_ADD. wa_zsa_cs_final-freight = wa_zshw_quotn-FREIGHT. wa_zsa_cs_final-octroi = wa_zshw_quotn-OCTROI. wa_zsa_cs_final-other_charges = wa_zshw_quotn-OTHR_CHRG. wa_zsa_cs_final-tot_val_per_unit = wa_zshw_quotn-TOT_CHRG. wa_zsa_cs_final-less_chrg = wa_zshw_quotn-LESS_CHRG. WA_ZSA_CS_FINAL-NAME1 = WA_LFA1-NAME1.
ENDIF. append wa_zsa_cs_final to it_zsa_cs_final.
""""""""""""""""""""""""""""""""""""""start of Last Purchase details"""""""""""""""""""""""""""""""""""""""""
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT' EXPORTING I_DATE = SY-DATUM I_MONMIT = 00 I_PERIV = 'V3' IMPORTING E_BUPER = pr_per1 E_GJAHR = pr_yr1 EXCEPTIONS INPUT_FALSE = 1 T009_NOTFOUND = 2 T009B_NOTFOUND = 3 OTHERS = 4 .IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.
select ebeln bsart lifnr bedat from ekko into table it_ekko1.
if it_ekko1 is not initial. select ebeln matnr werks netpr menge aedat from ekpo into table it_ekpo1
for all entries in it_ekko1 where ebeln = it_ekko1-ebeln and matnr = MATERIAL and werks = PLANT.endif.
refresh it_ekko1.
if it_ekpo1 is not initial.select ebeln bsart lifnr bedat from ekko into table it_ekko1 for all entries in it_ekpo1 where ebeln = it_ekpo1-ebeln.endif.********************************************************************************************************* last Purchase details logic***************************************
sort it_ekpo1 descending by aedat.
read table it_ekpo1 into wa_ekpo index 1.wa_zsa_comparsheet-po_no = wa_ekpo-ebeln.wa_zsa_comparsheet-po_date = wa_ekpo-aedat.wa_zsa_comparsheet-po_qty = wa_ekpo-menge.wa_zsa_comparsheet-po_price = wa_ekpo-netpr.wa_zsa_comparsheet-purchase_val = wa_ekpo-menge * wa_ekpo-netpr.
*************** last Purchase details logic ENDS HERE ***************************************
******************** FOR GETTING LOWEST AND HIGHEST BASIC PRICE ********************
sort it_ekpo1 descending by netpr.read table it_ekpo1 into wa_ekpo index 1.
if sy-subrc = 0. wa_ZSA_COMPARSHEET-HIGH_PUR_PRI = wa_ekpo-netpr.
endif.clear: wa_ekpo.
describe table it_ekpo1 lines nline.read table it_ekpo1 into wa_ekpo index nline.
if sy-SUBRC = 0.
wa_ZSA_COMPARSHEET-LOW_PUR_PRI = wa_ekpo-netpr.
endif.clear: wa_ekpo."""""""""""""""""""""""""""DELIVERY PERIOD"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
select infnr matnr lifnr from eina into table it_eina where matnr = MATERIAL ."AND LIFNR = VENDOR1 OR LIFNR = VENDOR2 OR LIFNR = VENDOR3 OR LIFNR = VENDOR4.* delete it_eina where lifnr <> vendor. read table it_eina into wa_eina with key lifnr = vendor. if sy-subrc eq 0.
select infnr aplfz from eine into table it_eine where infnr = wa_eina-infnr and werks = plant. endif.
read table it_eine into wa_eine index 1. if sy-subrc eq 0. wa_ZSA_CS_FINAL-DEL_PERD = wa_eine-aplfz.
* append wa_zsa_cs_final to it_zsa_cs_final. clear: wa_eina, wa_eine. endif.
"""""""""""""""""""""""""""""""""""""""""""DELIVERY PERIOD END"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""PAYMENT TERMS"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
refresh: it_ekko, it_ekpo.
select ebeln bsart lifnr bedat from ekko into table it_ekko.
if sy-subrc eq 0.
delete it_ekko where lifnr <> vendor.
select ebeln matnr werks netpr menge aedat from ekpo into table it_ekpo for all entries in it_ekko where ebeln = it_ekko-ebeln and matnr = material and werks = plant.
select lifnr zterm from lfm1 into table it_lfm1 for all entries in it_ekko where lifnr = it_ekko-lifnr.
endif.
if it_ekko is not initial.
read table it_lfm1 into wa_lfm1 with key lifnr = vendor. select spras zterm text1 from t052u into table it_t052u where zterm = wa_lfm1-zterm. read table it_t052u into wa_t052u index 1. if sy-subrc eq 0.
* wa_ZSA_CS_FINAL-PAY_TERMS = wa_t052u-text1. WA_ZSA_CS_FINAL-PAY_TERMS = wa_t052u-zterm. append wa_zsa_cs_final to it_zsa_cs_final. clear wa_t052u. refresh it_t052u.
endif. endif.
""""""""""""""""""""""""""""""""""""""""""""PAYMENT TERMS end"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
SCREEN1 = 1003. else. MESSAGE 'please enter value in field'TYPE 'E' DISPLAY LIKE 'E'. ENDIF. ENDCASE.select matnr maktx from makt INTO table it_makt WHERE matnr = material. READ TABLE it_makt into wa_makt WITH KEY matnr = material.
"""""""""""""""""""" DISPLAY COMPARISION SHEET""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""CASE OK_CODE. WHEN 'DISPLAY1'.* REFRESH IT_ZSHW_QUOTN.
IF COMPARISION_SHEET IS NOT INITIAL.* SCREEN1 = 1003.
* ELSE. MESSAGE 'PLEASE ENTER VALUE IN COMPARSION NO ' TYPE 'I' DISPLAY LIKE 'I'.ENDIF.
***
select * from ZSA_COMPARSHEET INTO table it_ZSA_COMPARSHEET where COMPAR_NO = COMPARISION_SHEET.
select * from ZSA_CS_FINAL into CORRESPONDING FIELDS OF TABLE IT_ZSA_CS_FINAL where COMP_NO = COMPARISION_SHEET.
LOOP AT IT_ZSA_CS_FINAL INTO WA_ZSA_CS_FINAL.
ENDLOOP.READ TABLE it_zsa_comparsheet INTO wa_zsa_comparsheet INDEX 1.*ENDCASE.
ENDMODULE.
data : number TYPE STRING. data : number1 TYPE STRING.
*---------------------------------------------------------------------**& Module STATUS_1002 OUTPUT*&---------------------------------------------------------------------*
* text*----------------------------------------------------------------------*MODULE STATUS_1002 OUTPUT. DATA : ZSHW_QUOTN-Z_DATE TYPE SY-DATUM. WA_ZSHW_QUOTN-Z_DATE = SY-DATUM.
* SET PF-STATUS 'ZPF2'.* SET TITLEBAR 'xxx'.
*****UPDATE button*****
IF sy-ucomm = 'UPDATE'.
LOOP AT SCREEN. IF SCREEN-GROUP1 = 'GRP'. SCREEN-INPUT = 1. ENDIF.
IF SCREEN-NAME = 'SAVE1'. SCREEN-ACTIVE = 1. SCREEN-INVISIBLE = 0. ENDIF. IF SCREEN-NAME = 'CREATE'. SCREEN-ACTIVE = 0. SCREEN-INVISIBLE = 1. ENDIF.
MODIFY SCREEN.
ENDLOOP. ENDIF.****create button.********
IF SY-UCOMM = 'CREATE'.
LOOP AT SCREEN. IF SCREEN-GROUP1 = 'GRP'. SCREEN-INPUT = 1. endif. IF SCREEN-GROUP1 = 'A'. SCREEN-INPUT = 1. ENDIF. IF SCREEN-NAME = 'SAVE'. SCREEN-ACTIVE = 1. SCREEN-INVISIBLE = 0.
ENDIF.
MODIFY SCREEN.ENDLOOP.ENDIF.
ENDMODULE. " STATUS_1002 OUTPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_1002 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE USER_COMMAND_1002 INPUT.********create and save query******* QUOTATION NUMBER
IF SY-UCOMM = 'SAVE'.* BREAK-POINT.
CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING NR_RANGE_NR = '01' OBJECT = 'ZSNUM'* QUANTITY = '1'* SUBOBJECT = ' '* TOYEAR = '0000'* IGNORE_BUFFER = ' ' IMPORTING NUMBER = number* QUANTITY =* RETURNCODE = EXCEPTIONS INTERVAL_NOT_FOUND = 1 NUMBER_RANGE_NOT_INTERN = 2 OBJECT_NOT_FOUND = 3 QUANTITY_IS_0 = 4 QUANTITY_IS_NOT_1 = 5 INTERVAL_OVERFLOW = 6 BUFFER_OVERFLOW = 7 OTHERS = 8 . IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CONCATENATE 'QN' NUMBER INTO NUMBER1.
WA_ZSHW_QUOTN-QUOTN = NUMBER1.
MOVE-CORRESPONDING WA_ZSHW_QUOTN TO WA_QUOTN. INSERT ZSHW_QUOTN FROM WA_QUOTN.
if sy-subrc = 0.MODIFY zshw_quotn FROM wa_ZSHW_QUOTN.endif.
if sy-subrc = 0.MODIFY zshw_quotn FROM wa_ZSHW_QUOTN.
endif.ENDIF.*******DISPLAY QUERY*******
IF SY-UCOMM = 'DISPLAY'. SELECT mandt QUOTN MATERIAL PLANT VENDOR MAKTX Z_DATE BASIC_PRIZE PAC_CHRG PRINT_CHRG BASIC_DUTY EX_DUTY SPE_ADD FREIGHT OCTROI OTHR_CHRG TOT_CHRG LESS_CHRG FROM ZSHW_QUOTN INTO CORRESPONDING FIELDS OF TABLE IT_ZSHW_QUOTN WHERE QUOTN = QUOTATION_NO .
** IT_ZSHW_QUOTN DESCENDING BY Z_DATE.
CLEAR:WA_ZSHW_QUOTN. READ TABLE IT_ZSHW_QUOTN INTO WA_ZSHW_QUOTN WITH KEY QUOTN = QUOTATION_NO . ENDIF.
**** UPDATE QUERY ****
if sy-ucomm = 'SAVE1'. MOVE-CORRESPONDING WA_ZSHW_QUOTN TO WA_QUOTN. MODIFY zshw_quotn FROM wa_ZSHW_QUOTN. MESSAGE 'data saved' TYPE 'I' DISPLAY LIKE 'I'.ENDIF.
ENDMODULE.
" USER_COMMAND_1002 INPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_1000 INPUT*&---------------------------------------------------------------------** text*&---------------------------------------------------------------------**& Module STATUS_1000 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------**&---------------------------------------------------------------------**& Module STATUS_1003 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE STATUS_1003 OUTPUT.
WA_ZSA_COMPARSHEET-S_DATE = SY-DATUM.
"WA_LFA1-NAME1.
* SET PF-STATUS 'xxxxxxxx'.* SET TITLEBAR 'xxx'.
*DATA : ZSHW_QUOTN-Z_DATE TYPE SY-DATUM.* WA_ZSHW_QUOTN-Z_DATE = SY-DATUM.CASE OK_CODE. WHEN 'DISPLAY1'.
* REFRESH IT_ZSHW_QUOTN.
* IF COMPARISION_SHEET IS NOT INITIAL.
* SCREEN1 = 1003.loop at screen. if screen-group1 = 'SHW'. screen-output = 1. screen-input = 0. endif. modify screen . ENDLOOP. ENDCASE.
ENDMODULE. " STATUS_1003 OUTPUT
data : comp_no(10) type c. data : NUM1 TYPE STRING.
MODULE USER_COMMAND_1003 INPUT.
if sy-ucomm = 'SAVE2'.
CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING NR_RANGE_NR = '01' OBJECT = 'ZCOMP_NO'* QUANTITY = '1'* SUBOBJECT = ' '* TOYEAR = '0000'* IGNORE_BUFFER = ' ' IMPORTING NUMBER = comp_no* QUANTITY =* RETURNCODE = EXCEPTIONS INTERVAL_NOT_FOUND = 1 NUMBER_RANGE_NOT_INTERN = 2 OBJECT_NOT_FOUND = 3 QUANTITY_IS_0 = 4 QUANTITY_IS_NOT_1 = 5 INTERVAL_OVERFLOW = 6 BUFFER_OVERFLOW = 7
OTHERS = 8 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.
CONCATENATE 'CS' comp_no INTO NUM1.*wa_zsa_comparsheet-COMPAR_NO = num1.
wa_zsa_cs_final-comp_no = num1.
COMPARISION_SHEET = num1.
SELECT mandt QUOTN MATERIAL PLANT VENDOR MAKTX Z_DATE BASIC_PRIZE PAC_CHRG PRINT_CHRG BASIC_DUTY EX_DUTY SPE_ADD FREIGHT OCTROI OTHR_CHRG TOT_CHRG LESS_CHRG FROM ZSHW_QUOTN INTO CORRESPONDING FIELDS OF TABLE IT_ZSHW_QUOTN WHERE MATERIAL = MATERIAL AND VENDOR = VENDOR.SORT IT_ZSHW_QUOTN DESCENDING BY QUOTN. LOOP AT IT_ZSHW_QUOTN INTO WA_ZSHW_QUOTN. wa_zsa_cs_final-quotn_no = wa_zshw_quotn-quotn. wa_zsa_cs_final-material = wa_zshw_quotn-material. wa_zsa_cs_final-plant = wa_zshw_quotn-plant. wa_zsa_cs_final-vendor = wa_zshw_quotn-vendor. wa_zsa_cs_final-maktx = wa_zshw_quotn-maktx. wa_zsa_cs_final-s_date = wa_zshw_quotn-z_date. wa_zsa_cs_final-basic_price = wa_zshw_quotn-basic_prize. wa_zsa_cs_final-PACK_CHRG = wa_zshw_quotn-PAC_CHRG. wa_zsa_cs_final-PRINT_CHARGE = wa_zshw_quotn-PRINT_CHRG. wa_zsa_cs_final-net_price = wa_zshw_quotn-BASIC_DUTY.
wa_zsa_cs_final-e_duty = wa_zshw_quotn-EX_DUTY. wa_zsa_cs_final-spl_duty = wa_zshw_quotn-SPE_ADD. wa_zsa_cs_final-freight = wa_zshw_quotn-FREIGHT. wa_zsa_cs_final-octroi = wa_zshw_quotn-OCTROI. wa_zsa_cs_final-other_charges = wa_zshw_quotn-OTHR_CHRG. wa_zsa_cs_final-tot_val_per_unit = wa_zshw_quotn-TOT_CHRG. wa_zsa_cs_final-less_chrg = wa_zshw_quotn-LESS_CHRG. WA_ZSA_CS_FINAL-NAME1 = WA_LFA1-NAME1.
append wa_zsa_cs_final to it_zsa_cs_final.
ENDLOOP.*LOOP AT IT_ZSA_CS_FINAL INTO WA_ZSA_CS_FINAL. INSERT Zsa_cs_final FROM wa_zsa_cs_final.
insert zsa_comparsheet FROM wa_zsa_comparsheet.
condense wa_ZSA_COMPARSHEET-COMPAR_NO no-gaps. concatenate 'COMPARISION SHEET NO:- ' ZSA_COMPARSHEET-COMPAR_NO ' SAVED' into msg separated by space . message msg type 'S' display like 'S'.
ENDIF.
if sy-ucomm = 'PRINT'.
read table it_zsa_comparsheet into wa_zsa_comparsheet index 1. if sy-SUBRC = 0.
wa_zshw_quotn-z_date = ZSA_COMPARSHEET-S_DATE. wa_zshw_quotn-plant = ZSA_COMPARSHEET-PLANT. wa_zshw_quotn-material = ZSA_COMPARSHEET-MATERIAL. wa_zshw_quotn-maktx = ZSA_COMPARSHEET-maktx. endif.
export it_zsa_comparsheet from it_zsa_comparsheet to memory id 'SA1'. export it_zsa_cs_final from it_zsa_cs_final to memory id 'SA2'.
call transaction 'ZSA_SMARTFORM'.endif.
ENDMODULE. " USER_COMMAND_1003 INPUT