Vendor comp

26
*&---------------------------------------------------------------------* *& 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 ,

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