Material Cost estimate modification

Hi Experts
I want to modified this report and add cost estimate value from MBEW (field is STPRS) for each material  to this report. I have used the table MBEW but unable to locate where to start.
Can anyone have a look and comment on this report
REPORT  command_extract                    .
*CLASS cl_gui_control DEFINITION LOAD.
*CLASS cl_gui_frontend_services DEFINITION LOAD.
Tables
TABLES:
  kna1,
  knb1,
  knvv,
  mara,
  mast,                                       "JPC20061107
  marc,
  makt,
  sscrfields.
CONSTANTS: BEGIN OF gc_status,
             acc  TYPE zcrstat1 VALUE ' ACC',
             hol  TYPE zcrstat1 VALUE ' HOL',
             sto  TYPE zcrstat1 VALUE ' STO',
             ok   TYPE zcrstat1 VALUE '  OK',
             hold TYPE zcrstat1 VALUE 'HOLD',
           END OF gc_status.
CONSTANTS: BEGIN OF gc_reason,
             000 TYPE zreason VALUE '000',
             001 TYPE zreason VALUE '001',
             002 TYPE zreason VALUE '002',
             003 TYPE zreason VALUE '003',
             004 TYPE zreason VALUE '004',
             005 TYPE zreason VALUE '005',
             006 TYPE zreason VALUE '006',
             007 TYPE zreason VALUE '007',
             008 TYPE zreason VALUE '008',
             010 TYPE zreason VALUE '010',
             011 TYPE zreason VALUE '011',
             021 TYPE zreason VALUE '021',
             022 TYPE zreason VALUE '022',
             023 TYPE zreason VALUE '023',
             024 TYPE zreason VALUE '024',
             025 TYPE zreason VALUE '025',
             026 TYPE zreason VALUE '026',
             999 TYPE zreason VALUE '999',
           END OF gc_reason.
TYPES: BEGIN OF ty_kna1_fields,
         kunnr TYPE kna1-kunnr,
         sperr TYPE kna1-sperr,
         aufsd TYPE kna1-aufsd,
         lifsd TYPE kna1-lifsd,
         faksd TYPE kna1-faksd,
         loevm TYPE kna1-loevm,
       END OF ty_kna1_fields.
TYPES: BEGIN OF ty_knb1_fields,
         kunnr TYPE knb1-kunnr,
         bukrs TYPE knb1-bukrs,
         sperr TYPE knb1-sperr,
         loevm TYPE knb1-loevm,
       END OF ty_knb1_fields.
TYPES: BEGIN OF ty_knvv_fields,
         kunnr TYPE knvv-kunnr,
         vkorg TYPE knvv-vkorg,
         vtweg TYPE knvv-vtweg,
         spart TYPE knvv-spart,
         aufsd TYPE knvv-aufsd,
         lifsd TYPE knvv-lifsd,
         faksd TYPE knvv-faksd,
       END OF ty_knvv_fields.
TYPES: BEGIN OF ty_knkk_fields,
         kunnr TYPE knkk-kunnr,
         kkber TYPE knkk-kkber,
         ctlpc TYPE knkk-ctlpc,
         crblb TYPE knkk-crblb,
         knkli TYPE knkk-knkli,
         klimk TYPE knkk-klimk,
         skfor TYPE knkk-skfor,
         ssobl TYPE knkk-ssobl,
       END OF ty_knkk_fields.
TYPES: BEGIN OF ty_cust_stat_output,
         kunnr(10) TYPE c, "Customer #
         stat(4)   TYPE c, "Customer status
       END OF ty_cust_stat_output.
TYPES:
  BEGIN OF ty_customers,
    kunnr(10)  TYPE c,  " Customer #
    div1(1)    TYPE c,  " Pipe delimiter
    name1(32)  TYPE c,  " Customer name
    div2(1)    TYPE c,  " Pipe delimiter
    altkn(8)   TYPE c,  " Old Customer #
    div3(1)    TYPE c,  " Pipe delimiter
    stras(30)  TYPE c,  " Street
    div4(1)    TYPE c,  " Pipe delimiter
    ort01(20)  TYPE c,  " City
    div5(1)    TYPE c,  " Pipe delimiter
    regio(3)   TYPE c,  " State
    div6(1)    TYPE c,  " Pipe delimiter
    pstlz(4)   TYPE c,  " Postcode
    div7(1)    TYPE c,  " Pipe delimiter
    telf1(14)  TYPE c,                                      " Phone 1
    div8(1)    TYPE c,  " Pipe delimiter
    telf2(14)  TYPE c,                                      " Phone 2
    div9(1)    TYPE c,  " Pipe delimiter
    erdat(10)  TYPE c,  " date
    div10(1)   TYPE c,  " Pipe delimiter
    splant(2)  TYPE c,  " plant
    div11(1)   TYPE c,  " Pipe delimiter
  END OF ty_customers,
  it_ty_customers TYPE ty_customers OCCURS 0,
  BEGIN OF ty_custstat,
    kunnr(11)  TYPE c,  " Customer #
    company(2) TYPE c,  " #
    status(3)  TYPE c,  " acc,cod,hol,
  END OF ty_custstat,
  it_ty_custstat TYPE ty_custstat OCCURS 0.
TYPES:
  BEGIN OF ty_materialm,
    matnr(12)  TYPE c,  " Material #
    maktx2(40) TYPE c,  " Command sales desc.
    maktx(16)  TYPE c,  " Basic description
    extwg(6)   TYPE c,  " External Material Group
    flag1(1)   TYPE c,  "
    flag2(1)   TYPE c,  "
    flag3(1)   TYPE c,  "
    flag4(1)   TYPE c,  "
  END OF ty_materialm,
  it_ty_materialm TYPE ty_materialm OCCURS 0,
  BEGIN OF ty_materialp,
    matnr(12)  TYPE c,  " Material #
    werks(4)   TYPE c,  " plant
    batch(1)   TYPE c,  " download to batch
  END OF ty_materialp,
  it_ty_materialp TYPE ty_materialp OCCURS 0.
TYPES:
  BEGIN OF ty_bom,
    matnr(12)  TYPE c,  " Material #
    werks(4)   TYPE c,  " Plant
    posnr(3)   TYPE c,  " position
    idnrk(12)  TYPE c,  " BOM material #
    menge(10)  TYPE c,  " Quantity
    meins(3)   TYPE c,  " Unit of Measure
  END OF ty_bom,
  it_ty_bom TYPE ty_bom OCCURS 0,
*Start of block of changes for JPC20061107
  BEGIN OF ty_bom_sapfmt,
    matnr   TYPE MAST-MATNR,  " Material #
    werks   TYPE MAST-WERKS,  " Plant
    posnr   TYPE STPO-POSNR,  " position
    idnrk   TYPE STPO-IDNRK,  " BOM material #
    menge   TYPE STPO-MENGE,  " Quantity
    meins   TYPE STPO-MEINS,  " Unit of Measure
    potx1   TYPE STPO-POTX1,  " Text description for BOM
  END OF ty_bom_sapfmt.
BEGIN OF ty_bomlist,
   matnr      LIKE mast-matnr,  " Material #
   stlnr      LIKE mast-stlnr,  " BOM #
   posnr      LIKE stpo-posnr,  " BOM item#
   idnrk      LIKE stpo-idnrk,  " BOM material #
   menge      LIKE stpo-menge,  " BOM material qty
   meins      LIKE stpo-meins,  " BOM material uom
END OF ty_bomlist,
it_ty_bomlist TYPE ty_bomlist OCCURS 0.
*Ending block of changes for JPC20061107
Selection screen definition
SELECTION-SCREEN: BEGIN OF BLOCK gen WITH FRAME TITLE text-001.
PARAMETERS:
p_dir like rlgrap-filename obligatory, " extract directory
  p_ccust TYPE c DEFAULT ' ' AS CHECKBOX,   " Check box customers
  p_cmatm TYPE c DEFAULT ' ' AS CHECKBOX,   " Check box Materials
  p_cbom  TYPE c DEFAULT ' ' AS CHECKBOX,   " Check box BOMs
  p_ccst  TYPE c DEFAULT ' ' AS CHECKBOX.   " Check box credit stat
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-006.
PARAMETERS:
  p_gui RADIOBUTTON GROUP rg1 USER-COMMAND u01,
  p_svr RADIOBUTTON GROUP rg1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK a.
SELECTION-SCREEN: END OF BLOCK gen.
SELECTION-SCREEN: BEGIN OF BLOCK cust WITH FRAME TITLE text-002.
PARAMETERS:
  p_dcust LIKE filepath-pathintern DEFAULT 'Z_COMMAND_CUST_EXTRACT',
  p_fcust LIKE rlgrap-filename,
  p_dcomp LIKE knb1-bukrs,
  p_dsale LIKE knvv-vkorg,
  p_dwerk(3) TYPE c.
SELECTION-SCREEN: END OF BLOCK cust.
SELECTION-SCREEN: BEGIN OF BLOCK matnr WITH FRAME TITLE text-003.
PARAMETERS:
  p_dmatm LIKE filepath-pathintern
               DEFAULT 'Z_COMMAND_MATERIAL_EXTRACT',
  p_fmatm LIKE rlgrap-filename,
  p_fmatp LIKE rlgrap-filename,
  p_dwerks LIKE marc-werks,
  p_dspras LIKE makt-spras,
  p_dbatch(1) TYPE c,
  p_dflag1(1) TYPE c,
  p_dflag2(1) TYPE c,
  p_dflag3(1) TYPE c,
  p_dflag4(1) TYPE c.
SELECT-OPTIONS:
  s_dextwg FOR mara-extwg.
SELECTION-SCREEN: END OF BLOCK matnr.
SELECTION-SCREEN: BEGIN OF BLOCK bom WITH FRAME TITLE text-004.
PARAMETERS:
  p_dbom LIKE filepath-pathintern DEFAULT 'Z_COMMAND_BOM_EXTRACT',
  p_fbom LIKE rlgrap-filename.
p_bwerks LIKE mast-werks.          "Made a select-optoin JPC20061107
SELECT-OPTIONS:
  s_bmatnr FOR MARA-MATNR,                                "JPC20061107
  s_bwerks FOR MAST-WERKS no-extension no intervals,      "JPC20061107
  s_bextwg FOR mara-extwg.
SELECTION-SCREEN: END OF BLOCK bom.
SELECTION-SCREEN: BEGIN OF BLOCK ccst WITH FRAME TITLE text-005.
PARAMETERS:
  p_dccst LIKE filepath-pathintern
               DEFAULT 'Z_COMMAND_CUST_STAT_EXTRACT',
  p_fccst LIKE rlgrap-filename,
  p_fccst2 LIKE rlgrap-filename,
  p_fccstl LIKE rlgrap-filename.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-007.
PARAMETERS: p_csall RADIOBUTTON GROUP gp2.
PARAMETERS: p_csdlt RADIOBUTTON GROUP gp2 DEFAULT 'X'.
PARAMETERS: p_append RADIOBUTTON GROUP GP3 DEFAULT 'X', "Append files output to server for cust credit data ?
            p_owrite RADIOBUTTON GROUP GP3.
SELECTION-SCREEN END OF BLOCK b.
SELECT-OPTIONS:
  s_kunnr FOR kna1-kunnr.
SELECTION-SCREEN: END OF BLOCK ccst.
DATA: clsdir TYPE REF TO cl_gui_frontend_services.
DATA: strfolder TYPE string.
DATA: folderln TYPE i.
DATA: gva_error(1) TYPE c VALUE ' '.
Initial procedure on START ***************
INITIALIZATION.
  p_fcust = 'CUST.prn'.
  p_fmatm = 'MATM.prn'.
  p_fmatp = 'MATP.prn'.
  p_fbom  = 'BOM.prn'.
  p_fccst = 'CCSTAT.prn'.
  p_fccst2 = 'CCSTATC.prn'.
  p_fccstl = 'CCSTATL.prn'.
  s_dextwg-option = 'BT'.
  s_dextwg-low = '1'.
  s_dextwg-high = '8'.
  APPEND s_dextwg.
  s_bextwg-option = 'BT'.
  s_bextwg-low = '1'.
  s_bextwg-high = '1'.
  APPEND s_bextwg.
AT SELECTION-SCREEN.
  IF p_ccust EQ 'X' AND ( p_fcust IS INITIAL OR p_dcust IS INITIAL ).
    MESSAGE s000(zppu)
    WITH 'You must specify the file details for the customer data'.
    gva_error = 'X'.
  ENDIF.
  IF p_cmatm EQ 'X' AND ( p_fmatm IS INITIAL OR
                          p_fmatp IS INITIAL OR
                          p_dmatm IS INITIAL ).
    MESSAGE s001(zppu)
    WITH 'You must specify the file details for the material data'.
    gva_error = 'X'.
  ENDIF.
  IF p_cbom EQ 'X' AND ( p_fbom IS INITIAL OR p_dbom IS INITIAL ).
    MESSAGE s002(zppu)
    WITH 'You must specify the file details for the BOM data'.
    gva_error = 'X'.
  ENDIF.
  IF p_cbom EQ 'X'.
    IF s_bwerks-low is initial.
      MESSAGE s002(zppu)
        WITH 'You must specify a plant to run BOM extract for'.
      gva_error = 'X'.
    ENDIF.
    IF LINES( s_bwerks ) > 1.
      MESSAGE s002(zppu)
        WITH 'You can only specify 1 plant for BOM extract'.
      gva_error = 'X'.
    ENDIF.
  ENDIF.
  IF p_ccst EQ 'X' AND ( p_fccst IS INITIAL OR
                         p_fccst2 IS INITIAL OR
                         p_fccstl IS INITIAL OR
                         p_dccst IS INITIAL ).
    MESSAGE s002(zppu)
    WITH 'You must specify the file details for the customer'
         'status data'.
    gva_error = 'X'.
  ENDIF.
AT SELECTION-SCREEN OUTPUT.
  PERFORM user_command.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fcust.
  PERFORM get_gui_filename USING p_dcust p_fcust.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fmatm.
  PERFORM get_gui_filename USING p_dmatm p_fmatm.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fmatp.
  PERFORM get_gui_filename USING p_dmatm p_fmatp.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fbom.
  PERFORM get_gui_filename USING p_dbom p_fbom.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccst.
  PERFORM get_gui_filename USING p_dccst p_fccst.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccst2.
  PERFORM get_gui_filename USING p_dccst p_fccst2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccstl.
  PERFORM get_gui_filename USING p_dccst p_fccstl.
END-OF-SELECTION.
Data selection execution.
  DATA: lwa_kna1 TYPE kna1,
        lwa_knb1 TYPE knb1,
        lwa_knvv TYPE knvv.
  DATA: lwa_marc TYPE marc,
        lwa_mara TYPE marav,
        lwa_makt TYPE makt.
  DATA: lit_marav TYPE marav OCCURS 0.
  DATA: lit_customers TYPE it_ty_customers,
        lwa_customers TYPE ty_customers.
  DATA: lit_custstat  TYPE it_ty_custstat,
        lwa_custstat  TYPE ty_custstat.
  DATA: lit_materialm TYPE it_ty_materialm,
        lwa_materialm TYPE ty_materialm.
  DATA: lit_materialp TYPE it_ty_materialp,
        lwa_materialp TYPE ty_materialp.
*(del)DATA: lwa_bomlist TYPE ty_bomlist,           "JPC20061107
*(del)  lit_bomlist TYPE it_ty_bomlist.            "JPC20061107
  DATA: lwa_bom TYPE ty_bom_sapfmt,
        lit_bom TYPE it_ty_bom WITH HEADER LINE.   "JPC20061107
      lit_bom TYPE it_ty_bom.                    "JPC20061107
  DATA: output_file   TYPE string.
  DATA: lock_file     TYPE string.
  DATA: lva_mssage    TYPE string.
  DATA: lva_matnr(18) TYPE n.
  DATA: lva_date      TYPE datum.
  DATA: txtper(3)     TYPE c.
  DATA: custper       TYPE i.
  DATA: custcount     TYPE i.
  DATA: itemnum       TYPE i.
  CHECK gva_error <> 'X'.
  IF p_ccust EQ 'X'. " Do the customer file extract
    PERFORM extract_customer_details.
  ENDIF.
  IF p_cmatm EQ 'X'. " Do the Material file extract
    PERFORM extract_material_details.
  ENDIF.
  IF p_cbom EQ 'X'. " Do the BOM file extract
    PERFORM extract_bom_details.
  ENDIF.
  IF p_ccst EQ 'X'.  " Do the customer credit status file extract
    PERFORM extract_credit_status_details.
  ENDIF.
*&      Form  extract_customer_details
      text
-->  p1        text
<--  p2        text
FORM extract_customer_details.
  SELECT * FROM knb1
  INTO lwa_knb1
  WHERE bukrs = p_dcomp.
    MOVE-CORRESPONDING lwa_knb1 TO lwa_customers.
    MOVE-CORRESPONDING lwa_knb1 TO lwa_custstat.
    MOVE '#' TO lwa_custstat-company.
    MOVE p_dwerk TO lwa_customers-splant.
WG1K903075: Start Delete---*
     move: '|' to lwa_customers-div1,
           '|' to lwa_customers-div2,
           '|' to lwa_customers-div3,
           '|' to lwa_customers-div4,
           '|' to lwa_customers-div5,
           '|' to lwa_customers-div6,
           '|' to lwa_customers-div7,
           '|' to lwa_customers-div8,
           '|' to lwa_customers-div9,
           '|' to lwa_customers-div10,
           '|' to lwa_customers-div11.
WG1K903075: End Delete-----*
WG1K903075: Start Insert---*
    MOVE: ' ' TO lwa_customers-div1,
          ' ' TO lwa_customers-div2,
          ' ' TO lwa_customers-div3,
          ' ' TO lwa_customers-div4,
          ' ' TO lwa_customers-div5,
          ' ' TO lwa_customers-div6,
          ' ' TO lwa_customers-div7,
          ' ' TO lwa_customers-div8,
          ' ' TO lwa_customers-div9,
          ' ' TO lwa_customers-div10,
          ' ' TO lwa_customers-div11.
WG1K903075: End Insert-----*
    APPEND lwa_customers TO lit_customers.
    APPEND lwa_custstat TO lit_custstat.
  ENDSELECT.
  DESCRIBE TABLE lit_customers LINES custcount.
  LOOP AT lit_customers INTO lwa_customers.
    txtper = 100 * sy-tabix / custcount.
    custper = txtper.
    SELECT SINGLE * FROM kna1
    INTO lwa_kna1
    WHERE kunnr = lwa_customers-kunnr.
    MOVE-CORRESPONDING lwa_kna1 TO lwa_customers.
    lva_date = lwa_customers-erdat.
    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
      EXPORTING
        date_internal            = lva_date
      IMPORTING
        date_external            = lwa_customers-erdat
      EXCEPTIONS
        date_internal_is_invalid = 1
        OTHERS                   = 2.
    REPLACE ALL OCCURRENCES OF '.'
    IN lwa_customers-erdat WITH '/'.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = lwa_customers-kunnr
      IMPORTING
        output = lwa_customers-kunnr.
    WRITE: lwa_customers-kunnr RIGHT-JUSTIFIED TO lwa_customers-kunnr.
    MODIFY lit_customers FROM lwa_customers.
Percentage indicator display
    lva_mssage = 'Extracting customers'.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = custper
        text       = lva_mssage.
  ENDLOOP.
  IF p_gui IS INITIAL.
    PERFORM get_file_path USING p_dcust p_fcust output_file.
    OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc EQ 0.
      LOOP AT lit_customers INTO lwa_customers.
        TRANSFER lwa_customers TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
  ELSE.
    MOVE p_fcust TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename = output_file
        filetype = 'ASC'
      TABLES
        data_tab = lit_customers
      EXCEPTIONS
        OTHERS   = 11.
  ENDIF.
  output_file = custcount.
  CONCATENATE
    output_file
    ' Customers extracted'
  INTO
    lva_mssage.
   message lva_mssage type 'I'.
ENDFORM.                    " extract_customer_details
*&      Form  extract_material_details
      text
-->  p1        text
<--  p2        text
FORM extract_material_details.
   select maramatnr maramaktx
          maramatkl marcwerks
  SELECT *
  FROM marav AS mara
    INNER JOIN marc AS marc
      ON marc~matnr EQ mara~matnr
  INTO CORRESPONDING FIELDS OF lwa_mara
  WHERE marc~werks = p_dwerks
    AND mara~spras = 'EN'
    AND mara~extwg IN s_dextwg.
    MOVE-CORRESPONDING lwa_mara TO lwa_materialm.
    WRITE: lwa_mara-matnr TO lwa_materialm-matnr.
    MOVE: p_dflag1 TO lwa_materialm-flag1,
          p_dflag2 TO lwa_materialm-flag2,
          p_dflag3 TO lwa_materialm-flag3,
          p_dflag4 TO lwa_materialm-flag4.
    APPEND lwa_materialm TO lit_materialm.
  ENDSELECT.
  DESCRIBE TABLE lit_materialm LINES custcount.
  LOOP AT lit_materialm INTO lwa_materialm.
    txtper = 100 * sy-tabix / custcount.
    custper = txtper.
    CLEAR lwa_materialp.
    CLEAR lwa_mara.
    MOVE: lwa_materialm-matnr TO lwa_materialp-matnr,
          p_dwerks            TO lwa_materialp-werks,
          p_dbatch            TO lwa_materialp-batch.
    APPEND lwa_materialp TO lit_materialp.
    MOVE: lwa_materialm-matnr TO lva_matnr.
    MOVE: lva_matnr TO lwa_mara-matnr.
    SELECT SINGLE maktx FROM makt
    INTO lwa_materialm-maktx2
    WHERE matnr = lwa_mara-matnr
    AND spras = p_dspras.
    IF lwa_materialm-maktx2 IS INITIAL.
      lwa_materialm-maktx2 = lwa_materialm-maktx.
    ENDIF.
    MODIFY lit_materialm FROM lwa_materialm.
Percentage indicator display
    lva_mssage = 'Extracting materials'.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = custper
        text       = lva_mssage.
  ENDLOOP.
  IF p_gui IS INITIAL.
    PERFORM get_file_path USING p_dmatm p_fmatm output_file.
    OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc EQ 0.
      LOOP AT lit_materialm INTO lwa_materialm.
        TRANSFER lwa_materialm TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
  ELSE.
    MOVE p_fmatm TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = output_file
        filetype              = 'ASC'
        write_field_separator = ' '
      TABLES
        data_tab              = lit_materialm
      EXCEPTIONS
        OTHERS                = 11.
  ENDIF.
  IF p_gui IS INITIAL.
    PERFORM get_file_path USING p_dmatm p_fmatp output_file.
    OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc EQ 0.
      LOOP AT lit_materialp INTO lwa_materialp.
        TRANSFER lwa_materialp TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
  ELSE.
    MOVE p_fmatp TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = output_file
        filetype              = 'ASC'
        write_field_separator = ' '
      TABLES
        data_tab              = lit_materialp
      EXCEPTIONS
        OTHERS                = 11.
  ENDIF.
  REFRESH lit_materialm.
ENDFORM.                    " extract_material_details
*&      Form  extract_bom_details
      text
-->  p1        text
<--  p2        text
FORM extract_bom_details.
Lines below commented out and replaced with SELECT from ABAP Query run from
transaction ZBOM.  Previously duplicate materials were selected. JPC20061107
REFRESH lit_materialm.
SELECT *
FROM marav AS mara
   INNER JOIN marc AS marc
     ON marcmatnr EQ maramatnr
INTO CORRESPONDING FIELDS OF lwa_mara
WHERE marc~werks = p_bwerks
   AND mara~spras = 'EN'
   AND mara~extwg IN s_bextwg.
   APPEND lwa_mara TO lit_marav.
ENDSELECT.
DESCRIBE TABLE lit_marav LINES custcount.
LOOP AT lit_marav INTO lwa_mara.
Percentage indicator calculation
   txtper = 100 * sy-tabix / custcount.
   custper = txtper.
   SELECT
     mast~matnr
     mast~stlnr
     stpo~posnr
     stpo~idnrk
     stpo~menge
     stpo~meins
   FROM mast AS mast
     LEFT OUTER JOIN stpo AS stpo
       ON stpostlnr EQ maststlnr
INTO lwa_bomlist
WHERE mast~matnr = lwa_mara-matnr.
     CLEAR lwa_bom.
     MOVE-CORRESPONDING lwa_bomlist TO lwa_bom.
     WRITE: lwa_bomlist-matnr TO lwa_bom-matnr.
     IF lwa_bomlist-idnrk IS INITIAL.
       WRITE: 'BACKBIN' TO lwa_bom-idnrk.
     ELSE.
       WRITE: lwa_bomlist-idnrk TO lwa_bom-idnrk.
     ENDIF.
     MOVE: lwa_bomlist-posnr TO itemnum.
     WRITE: itemnum TO lwa_bom-posnr RIGHT-JUSTIFIED.
       write: lwa_bomlist-menge
       to lwa_bom-menge
       decimals 2.
     MOVE: p_bwerks TO lwa_bom-werks.
     APPEND lwa_bom TO lit_bom.
   ENDSELECT.
Percentage indicator display
   lva_mssage = 'Extracting material B.O.Ms'.
   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
       percentage = custper
       text       = lva_mssage.
ENDLOOP.
  select MASTMATNR MASTWERKS STPOPOSNR STPOIDNRK STPOMENGE STPOMEINS            "JPC20061220
    select MAST~MATNR MAST~WERKS STPO~POSNR STPO~IDNRK STPO~MENGE STPO~MEINS STPO~POTX1 "JPC20061220
      into lwa_bom
      from ( MAST
           inner join STKO
           on  STKO~STLAL = MAST~STLAL
           and STKO~STLNR = MAST~STLNR
           and STKO~WRKAN = MAST~WERKS
           inner join MARA  as MARA_H
           on  MARA_H~MATNR = MAST~MATNR
           left outer join STAS
           on  STAS~STLAL = STKO~STLAL
           and STAS~STLNR = STKO~STLNR
           and STAS~STLTY = STKO~STLTY
           inner join STPO
           on  STPO~STLKN = STAS~STLKN
           and STPO~STLNR = STAS~STLNR
           and STPO~STLTY = STAS~STLTY
         inner join MARA                   JPC20061220
           left outer join MARA             "JPC20061220
           on  MARA~MATNR = STPO~IDNRK )
         where MARA_H~MATNR in s_bmatnr
           and MAST~WERKS   in s_bwerks
           and MARA_H~EXTWG in s_bextwg.
    clear lit_bom.
    WRITE lwa_bom-matnr TO lit_bom-matnr.
    MOVE  lwa_bom-werks TO lit_bom-werks.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = lwa_bom-posnr
      IMPORTING
        output = lit_bom-posnr.
    SHIFT lit_bom-posnr right deleting trailing space.
    IF lwa_bom-idnrk IS INITIAL.
    WRITE 'BACKBIN'     TO lit_bom-idnrk.               JPC20061220
      WRITE lwa_bom-potx1 TO lit_bom-idnrk.              "JPC20061220
    ELSE.
      WRITE lwa_bom-idnrk TO lit_bom-idnrk.
    ENDIF.
    MOVE: lwa_bom-menge TO lit_bom-menge,
          lwa_bom-meins TO lit_bom-meins.
    APPEND lit_bom.
  ENDSELECT.
  SORT lit_bom ascending.
Ending for lines inserted for change 20061107
  IF p_gui IS INITIAL.  "write to server
    PERFORM get_file_path USING p_dbom p_fbom output_file.
    OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc EQ 0.
      custcount = lines( lit_bom ).
      LOOP AT lit_bom.
        txtper = 100 * sy-tabix / custcount.
        custper = txtper.
        lva_mssage = 'Extracting material B.O.Ms'.
        CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
          EXPORTING percentage = custper
                    text       = lva_mssage.
        TRANSFER lit_bom TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
  ELSE.
    MOVE p_fbom TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = output_file
        filetype              = 'ASC'
        write_field_separator = ' '
      TABLES
        data_tab              = lit_bom
      EXCEPTIONS
        OTHERS                = 11.
  ENDIF.
ENDFORM.                    " extract_bom_details
*&      Form  get_file_path
      text
     -->P_LOGICAL_PATH_NAME   text
     -->P_FILENAME            text
     -->P_FILENAME_WITH_PATH  text
FORM get_file_path USING p_logical_path_name p_filename
                         p_filename_with_path.
  DATA: l_opsys TYPE sy-opsys,
        l_blank_filename TYPE c,
        l_filename TYPE string.
  IF p_gui IS INITIAL.
    MOVE 'WN32' TO l_opsys.
  ELSE.
    MOVE 'WN' TO l_opsys.
  ENDIF.
  IF p_filename IS INITIAL.
    MOVE 'XXX' TO l_filename.
    MOVE 'X' TO l_blank_filename.
  ELSE.
    MOVE p_filename TO l_filename.
  ENDIF.
  CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
    EXPORTING
      logical_path               = p_logical_path_name
      operating_system           = l_opsys
      file_name                  = l_filename
    IMPORTING
      file_name_with_path        = p_filename_with_path
    EXCEPTIONS
      path_not_found             = 1
      missing_parameter          = 2
      operating_system_not_found = 3
      file_system_not_found      = 4
      OTHERS                     = 5.
  IF NOT l_blank_filename IS INITIAL.
    REPLACE ALL OCCURRENCES OF 'XXX' IN p_filename_with_path WITH space.
  ENDIF.
ENDFORM.                    "get_file_path
*&      Form  value_request_p_fcust
      text
-->  p1        text
<--  p2        text
FORM get_gui_filename USING p_path p_filename.
  DATA: l_fdir TYPE string.
  CHECK NOT p_gui IS INITIAL.
  PERFORM get_file_path USING p_path space
                              l_fdir.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_path         = l_fdir
      mask             = ',.prn,.prn.'
      title            = 'Select Excel file for download'
    IMPORTING
      filename         = p_filename
    EXCEPTIONS
      inv_winsys       = 1
      no_batch         = 2
      selection_cancel = 3
      selection_error  = 4
      OTHERS           = 5.
ENDFORM.                    " value_request_p_fcust
*&      Form  extract_credit_status_details
      text
-->  p1        text
<--  p2        text
FORM extract_credit_status_details .
  DATA: lt_credit_stat   TYPE STANDARD TABLE OF zint_credit_stat,
        l_credit_stat    TYPE zint_credit_stat,
        l_current_stat1  TYPE zcrstat1,
        l_current_stat2  TYPE zcrstat2,
        l_current_reason TYPE zreason,
        lt_output_stat   TYPE STANDARD TABLE OF zint_credit_stat,
        l_output_stat    TYPE zint_credit_stat,
        lt_output1       TYPE STANDARD TABLE OF ty_cust_stat_output,
        lt_output2       TYPE STANDARD TABLE OF ty_cust_stat_output,
        l_output         TYPE ty_cust_stat_output.
  SELECT a~mandt a~kunnr a~name1 b~curstat1 b~curstat2 b~curtimestamp
         b~curreason b~prevstat1 b~prevstat2 b~prvtimestamp
         b~prevreason
    INTO TABLE lt_credit_stat
    FROM kna1 AS a
    LEFT OUTER JOIN zint_credit_stat AS b
    ON a~kunnr = b~kunnr
    WHERE a~kunnr IN s_kunnr.
  DESCRIBE TABLE lt_credit_stat LINES custcount.
  LOOP AT lt_credit_stat INTO l_credit_stat.
    txtper = 100 * sy-tabix / custcount.
    custper = txtper.
    PERFORM determine_current_status USING l_credit_stat-kunnr
                                           l_current_stat1
                                           l_current_stat2
                                           l_current_reason.
    IF NOT p_csdlt IS INITIAL.
    Only do delta download
      IF  l_current_stat1 NE l_credit_stat-curstat1 OR
          l_current_stat2 NE l_credit_stat-curstat2.
        PERFORM add_record_to_output TABLES lt_output_stat
                                     USING  l_current_stat1
                                            l_current_stat2
                                            l_current_reason
                                            l_credit_stat.
      ENDIF.
    ELSE.
    Download all records
      PERFORM add_record_to_output TABLES lt_output_stat
                                   USING  l_current_stat1
                                          l_current_stat2
                                          l_current_reason
                                          l_credit_stat.
    ENDIF.
  Percentage indicator display
    lva_mssage = 'Extracting customer status'.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = custper
        text       = lva_mssage.
  ENDLOOP.
Create output table
  LOOP AT lt_output_stat INTO l_output_stat.
    CLEAR l_output.
    WRITE l_output_stat-kunnr TO l_output-kunnr.
    SHIFT l_output-kunnr RIGHT DELETING TRAILING space.
    MOVE l_output_stat-curstat1 TO l_output-stat.
    APPEND l_output TO lt_output1.
    MOVE l_output_stat-curstat2 TO l_output-stat.
    APPEND l_output TO lt_output2.
  ENDLOOP.
  SORT lt_output1.
  SORT lt_output2.
  IF p_gui IS INITIAL.
  Lock File
    PERFORM get_file_path USING p_dccst p_fccstl lock_file.
  If the file already exists then abort processing
    OPEN DATASET lock_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc NE 8.
      MESSAGE s002(zppu)
        WITH 'Lock file' lock_file 'already exists on server,'
             'processing aborted'.
      LEAVE PROGRAM.
    ENDIF.
    OPEN DATASET lock_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    IF sy-subrc NE 0.
      MESSAGE s002(zppu)
        WITH 'Lock file' lock_file 'cannot be opened on the server,'
             'processing aborted'.
      LEAVE PROGRAM.
    ENDIF.
  File 1
    PERFORM get_file_path USING p_dccst p_fccst output_file.
If user requests cust status data to be appended use different OPEN
    IF p_append is initial.
      OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    ELSE.
      OPEN DATASET output_file FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
    ENDIF.
    IF sy-subrc EQ 0.
      LOOP AT lt_output1 INTO l_output.
        TRANSFER l_output TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
  File 2
    PERFORM get_file_path USING p_dccst p_fccst2 output_file.
If user requests cust status data to be appended use different OPEN
    IF p_append is initial.
      OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    ELSE.
      OPEN DATASET output_file FOR APPENDING IN TEXT MODE ENCODING DEFAULT.
    ENDIF.
    IF sy-subrc EQ 0.
      LOOP AT lt_output2 INTO l_output.
        TRANSFER l_output TO output_file.
      ENDLOOP.
      CLOSE DATASET output_file.
    ELSE.
      MESSAGE s002(zppu)
        WITH 'Dataset' output_file 'cannot be opened on the server'.
    ENDIF.
    DELETE DATASET lock_file.
  ELSE.
    MOVE p_fccst TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename = output_file
        filetype = 'ASC'
      TABLES
        data_tab = lt_output1
      EXCEPTIONS
        OTHERS   = 11.
    MOVE p_fccst2 TO output_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename = output_file
        filetype = 'ASC'
      TABLES
        data_tab = lt_output2
      EXCEPTIONS
        OTHERS   = 11.
  ENDIF.
  IF NOT p_svr IS INITIAL.
    PERFORM update_status_table TABLES lt_output_stat.
  ENDIF.
  output_file = custcount.
  CONCATENATE
    output_file
    ' Customers extracted'
  INTO
    lva_mssage.
ENDFORM.                    " extract_credit_status_details
*&      Form  user_command
      text
-->  p1        text
<--  p2        text
FORM user_command .
  LOOP AT SCREEN.
    IF screen-name EQ 'P_DCUST' OR
       screen-name EQ '%_P_DCUST_%_APP_%-TEXT' OR
       screen-name EQ 'P_DMATM' OR
       screen-name EQ '%_P_DMATM_%_APP_%-TEXT' OR
       screen-name EQ 'P_DBOM' OR
       screen-name EQ '%_P_DBOM_%_APP_%-TEXT' OR
       screen-name EQ 'P_DCCST' OR
       screen-name EQ '%_P_DCCST_%_APP_%-TEXT' OR
       screen-name EQ 'P_FCCSTL' OR
       screen-name EQ '%_P_FCCSTL_%_APP_%-TEXT'.
      IF p_gui IS INITIAL.
        screen-input = 1.
        screen-output = 1.
        screen-invisible = 0.
        screen-active = 1.
      ELSE.
        screen-input = 0.
        screen-output = 0.
        screen-invisible = 1.
        screen-active = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " user_command
*&      Form  determine_current_status
      text
     -->P_L_CREDIT_STAT_KUNNR  text
     -->P_L_CURRENT_STAT1  text
     -->P_L_CURRENT_STAT2  text
FORM determine_current_status USING p_kunnr p_stat1 p_stat2 p_reason.
  STATICS: lt_kna1 TYPE STANDARD TABLE OF ty_kna1_fields,
           lt_knb1 TYPE STANDARD TABLE OF ty_knb1_fields,
           lt_knvv TYPE STANDARD TABLE OF ty_knvv_fields,
           lt_knkk TYPE STANDARD TABLE OF ty_knkk_fields.
  DATA: l_kna1  TYPE ty_kna1_fields,
        l_knb1  TYPE ty_knb1_fields,
        l_knvv  TYPE ty_knvv_fields,
        l_knkk  TYPE ty_knkk_fields,
        l_faedt TYPE rfpos-faedt,
        l_days  TYPE p,
        l_used  TYPE rf02l-klprz.
  IF lt_kna1[] IS INITIAL.
    PERFORM load_kna1 TABLES lt_kna1.
  ENDIF.
  IF lt_knb1[] IS INITIAL.
    PERFORM load_knb1 TABLES lt_knb1.
  ENDIF.
  IF lt_knvv[] IS INITIAL.
    PERFORM load_knvv TABLES lt_knvv.
  ENDIF.
  IF lt_knkk[] IS INITIAL.
    PERFORM load_knkk TABLES lt_knkk.
  ENDIF.
  MOVE gc_status-acc TO p_stat1.
  MOVE gc_status-ok  TO p_stat2.
  MOVE gc_reason-000 TO p_reason.
Customer Block/Unblock
  READ TABLE lt_kna1 INTO l_kna1 WITH KEY kunnr = p_kunnr BINARY SEARCH.
  IF sy-subrc EQ 0.
    IF NOT l_kna1-sperr IS INITIAL.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-001  TO p_reason.
    ENDIF.
    IF l_kna1-aufsd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-002  TO p_reason.
    ENDIF.
    IF l_kna1-lifsd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-003  TO p_reason.
    ENDIF.
    IF l_kna1-faksd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-004  TO p_reason.
    ENDIF.
    IF NOT l_kna1-loevm IS INITIAL.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-999  TO p_reason.
    ENDIF.
  ENDIF.
  CHECK p_stat1 NE gc_status-sto.
  LOOP AT lt_knb1 INTO l_knb1 WHERE kunnr EQ p_kunnr.
    IF NOT l_kna1-sperr IS INITIAL.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-005  TO p_reason.
    ENDIF.
    IF NOT l_knb1-loevm IS INITIAL.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-999  TO p_reason.
    ENDIF.
    IF p_stat1 EQ gc_status-sto.
      EXIT.
    ENDIF.
  ENDLOOP.
  CHECK p_stat1 NE gc_status-sto.
  LOOP AT lt_knvv INTO l_knvv WHERE kunnr EQ p_kunnr.
    IF l_knvv-aufsd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-006  TO p_reason.
    ENDIF.
    IF l_knvv-lifsd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-007  TO p_reason.
    ENDIF.
    IF l_knvv-faksd EQ '01'.
      MOVE gc_status-sto  TO p_stat1.
      MOVE gc_status-hold TO p_stat2.
      MOVE gc_reason-008  TO p_reason.
    ENDIF.
    IF p_stat1 EQ gc_status-sto.
      EXIT.
    ENDIF.
  ENDLOOP.
  CHECK p_stat1 NE gc_status-sto.
  READ TABLE lt_knkk INTO l_knkk WITH KEY kunnr = p_kunnr
                                          kkber = 'BP01'
                                 BINARY SEARCH.
  IF sy-subrc EQ 0.
  Exceeded Trading Terms
    IF l_knkk-ctlpc EQ 'Z03' OR
       l_knkk-ctlpc EQ 'Z04' OR
       l_knkk-ctlpc EQ 'Z05'.
      CALL FUNCTION 'CUSTOMER_OLDEST_OPEN_ITEM'
        EXPORTING
          i_kkber      = l_knkk-kkber
          i_kunnr      = l_knkk-kunnr
        IMPORTING
          e_faedt      = l_faedt
        EXCEPTIONS
          invalid_call = 1
          no_bukrs     = 2
          no_items     = 3
          OTHERS       = 4.
      IF sy-subrc EQ 0.
        l_days = sy-datum - l_faedt.
      ELSE.
        l_days = 0.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z03' AND l_knkk-crblb IS INITIAL AND
         l_days GT 45.
        MOVE gc_status-hol  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-021  TO p_reason.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z04' AND l_knkk-crblb IS INITIAL AND
         l_days GT 40.
        MOVE gc_status-hol  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-022  TO p_reason.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z05' AND l_knkk-crblb IS INITIAL AND
         l_days GT 30.
        MOVE gc_status-hol  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-023  TO p_reason.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z03' AND NOT l_knkk-crblb IS INITIAL AND
         l_days GT 45.
        MOVE gc_status-sto  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-024  TO p_reason.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z04' AND NOT l_knkk-crblb IS INITIAL AND
         l_days GT 40.
        MOVE gc_status-sto  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-025  TO p_reason.
      ENDIF.
      IF l_knkk-ctlpc EQ 'Z05' AND NOT l_knkk-crblb IS INITIAL AND
         l_days GT 30.
        MOVE gc_status-sto  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-026  TO p_reason.
      ENDIF.
      CHECK p_stat1 NE gc_status-sto.
  Exceeded Credit Limit Checks
      PERFORM get_credit_exposure USING l_knkk-knkli l_knkk-kkber
                                        l_knkk-ctlpc l_knkk-klimk
                                        l_knkk-skfor l_knkk-ssobl
                                        l_used.
      IF l_used GE 95 AND l_knkk-crblb IS INITIAL.
        MOVE gc_status-hol  TO p_stat1.
        MOVE gc_status-hold TO p_stat2.
        MOVE gc_reason-010  TO p_reason.
      ENDIF.
      IF l_used GE 95 AND NOT l_knkk-crblb IS INITIAL.
        MOVE gc_status-

Yes thread closed
Prioz

Similar Messages

  • Re: create material cost estimate with ck11n without

    hi gurus,
    i need to do create material cost estimate with ck11n without cost result but before i need to check the BOM with material component 11111, and also instruct me how to correct maintain BOM list to get the standard cost
    if anybody do the same scenoria giveme your golden inputs
    thanks in advance,
    kumar.b

    Hi,
    As note 351835 explains, calculation needs an inforecord to calculate prices from purchasing. Prices from outline agreements are generally not taken into account. According to note 499699, the system may consider entries in the source but it will ignore entered agreements (before this correction, any source list entries with agreement were ignored).
    Prices from agreements could only be considered either via a modification or by using the user exit for material valuation (COPCP005).
    This unfortuntely is a restriction resulting as a side-effect from note 499699. As soon as an agreement is entered in the source list, the fixed indicator will not be considered anymore.
    You therefore have two options to overcome this.
    1) You create a second source list entry without an agreement; then the fix indicator will be reflected; report Z_CREATE_EORD from note  409960 could be used to do this automatically
    2) You are using user-exit EXIT_SAPLMEQR_001 in order to 'overrule'   the standard search for source of supply (enhancement LMEQR001)
    regards
    Waman

  • Report for Material Cost Estimate

    Hi Everyone,
    Is there any way that I could download a report from the SAP showing all the material cost estimates? Hope someone could help me. When I try using CK11n, there is no tab there for report downloads and it only shows one material.
    Thank you in advance
    Jahziel

    Dear Jahziel,
    In standard SAP the following reports are available:
    T Code : CK84_99 : COST_ELEMENT - Cost Elements
                 CK80_99 - Cost Components
                 CK84_99 - Itemization
    These reports will provide you the information at individual material level.
    Regards,
    Pavan Kumar Arvapally

  • Error reading material cost estimate for sales order (KE292)

    Dear All,
    I have an issue with billing. we are posting july month transactions, the material cost is maintained through MR21. When releasing billing document for accounting we are getting error message like"Error reading the material cost estimate for sales order "11"
    Message no. KE292
    Diagnosis
    In Profitability Analysis (CO-PA), the system tried to valuate item 000010 of sales order 11 by reading the corresponding product cost estimate.
    However, no product cost estimate could be found for this sales order item.
    The system accessed product costing for product AMLFP011011XX00P using costing key YB3 as defined in the
    CO-PA Customizing settings.
    System Response
    The system cannot process the document any further.
    Procedure
    Check your Customizing settings."
    We cross checked with other client as a current date and we ran cost estimate through CK40N with same material. and we posted entries. Here it is working fine. but in above process it is not working. Can you pls guide me where i missed.
    Regards,
    Nagaraju,

    Hi,
    When the Costing Key is assigned to the material types in the COPA customizing, then system expects Cost estimation when billing is released to Accounts.
    If you dont run cost estimation but update the material master through MR21, system will not accept as in the Costing key configuration you must have selected the Current Standard price field for the valuation.
    Hence, try to run cost estimation and then do releasing.
    Thanks & Regards
    Ravi Kumar

  • Error while creating material cost estimate

    Hello All
    I am creating material cost estimate of FG whose components are SF & ROH-2. While creating cost estimate system gives an error message which states: :
    *No cost element segment exists for 40103110 on 01.09.2009
    Message no. CK048
    Diagnosis
    The consumption account found by automatic account determination for material STD-PRICE-SF does not exist for the date 01.09.2009 specified.
    Procedure
    Check the cost element segment's validity period
    Check cost element
    Or, if you have authorization, create a cost element which did not exist previously.
    Create primary cost element*
    Please provide your valuable inputs regarding this error message. Looking forward to your inputs & feedback.
    Regards,
    J K Tharwani

    Dear Jitendra,
    Its Seem primary cost element you mentioned is not defined for 09 period.For this go to KA06,gIve that cost element number and the Valid from  date as 01.09.2009 and valid to date as 30.09.2009, press enter it will take u inside the T.C,feed the relevant data and save.
    Now again take the costing run.This time system should not throw the error.
    Check and Revert back.
    Thanks and Regards,
    Jitendra DIlip Chauhan.

  • Valuation with material cost estimate: error with product

    Hi Experts,
    Message no. KE350, Valuation with material cost estimate: error with product "2286940000". Please suggest me to resolve this issue.
    Points will be provided for good solution.
    Regards,
    Jay

    Hi Jaya
    This means that your customization is wrong then...
    In KE4J or KEPC you have assigned costing keys to your material types or some other combination... You should have done this config in a way that costing key is not called  for in the case of non valuated materials...
    In Ke40 you have defined costing key where in you have specified "Issue error msg if no cost estimate found".. This costing key is assigned in KE4J or KEPC in a way that it is getting called even in case of non valuated materials...
    Do you have a separate mat type for non valuated material? If yes, remove this mat type from KE4J/KEPC..
    If you dont have separate mat type i.e. in the same mat type if you have both valuated and non valuated, then you have a problem.. You would get stuck in that case
    Regards
    Ajay M

  • Valuation using material cost estimate

    Ciao a tutti,
    We have create a material cost
    estimate without standard structure(unit costing) not FOR ALL MATERIALS, but only for ONE
    VARIANT of generic material (retail solution) (because the other variant have the same price, and because we have to reproduced 5000 BOM in unit cost for just
    one variant with transaction KKPA LSMW)
    So, now we have to valuated the material cost estimate when the customer create the billing document and put the split of the cost estimate in co-pa
    Our prolem is : we have calculate standard cost estimate for 5000
    variant not for all variant (because our customer crete the BOM in unit
    costing with transaction KKPA and LSMW, and they refuced the idea to
    calculate 30000 cost estimate with lsmw) so when we crete a billing
    document with a variant that haven't cost estimate created the system doesn't
    valuated the cost estimate (the system works well), but how I can change the variant in the valuation and put the variant that have the cost
    estimate calculate?
    Wiht the transaction "Assign Costing Keys to Any Characteristics" I think
    is not possible.
    I must to use enhance COPA0002?
    Thank you very much
    Paolo Artini
    tel: +393299223804

    Hi All,
    I am also facing the problem for Sales Order Cost Estimate. and the Costing Status is VO(Marked without errors).
    I have done the following
    created the Costing Key (sales order cost estimate)
    assigned costing key to the material type.
    assigned to the respective value fields
    sales order cost estimate,
    Run the RA
    Settlement done.
    But in COPA, cost estimates are not being split up based on the cost component (like Material, Labour and Over head) and it is getting posted to COGS only.
    Do we need to change the costing status to FR, if yes, but how to do ?
    Regards
    Ramesh KR
    +91 9884020411

  • Confuguarable Material Cost Estimate

    Hi All.,
    It is an urgent requirement.......
    My client having both configuarable & non configuarable materials.....
    with regarding to the configuarable material cost estimate i don't have good grip on this.
    Can anybody please share some guidlines for how to create the cost estimate.....
    Thanks one and all.,
    Raja

    Configurable materials can only have a cost estimate when there is a sales order bom to define the build.
    We use configurable material and the cost estimate is configured in the same manner as standard material (Costing variant,costing dates, transfer control, etc. but some of the details differ), but it is only Saved within a Sales order. You can use CU50 for a trial cost - the configuration will have to be created in CU50 before it will cost.
    When costing configurable materials in sales orders or for sales orders the valuation variant is different from standard cost variant in these points:
    1 - The costing type is different. 18 - Sales order costing vs. 01 - Standard cost est. (mat.)
    The Costing type for Sales order does not allow updating of the standard price in the Mat Mstr
    The Costing type for Sales order also controls the use of Labor overhead for the costing variant.
    2 - Valuation Variant can be different - Valuation for Prod Costing specifies the rules to build a cost estimate. For Sales order, you may want it to use ONLY the standard price for a material/component, and NOT build a cost estimate.
    3 - Date control - The default “from” date for the Config Mat in a Sales order is “Today” while for product costing it is “first of next month”
    Our Prod Cost Est. is valid until the end of the Fiscal year when a new cost estimate is released. Our Config Material on a Sales order is valid until the end of time.
    I cannot explain “why” we chose one over the other, most of the decisions were made before I arrived. But the Costing Type Difference is very important to us, because there is no chance that the cost estimate will interfere with setting of standards and it allows “searching” for a Sales Order Cost estimate.
    You have to analyze how each part of the costing variant could impact the business and decide how to set it. If circumstances change, you can review the settings later. (I fully intend to review some of ours directly after this conversation.)
    Sales Order Costing Variants are on OKY9 while product costing is at OKKN
    Sales Order Costing Variants are assigned under SD “Maintain Requirements Classes for Costing/Account Assignment (table T459K)
    Hope this helps.
    Althea

  • Error  - Material cost estimate with quantity structure

    Hello Gurus!
    Can anyone please help with the following problem:
    I’m trying to do the material cost estimate with quantity structure, but the system is throwing back the message  " There is no exchange rate for exchange rate type P on 1.01.2008: CHF -> EUR". 
    This happens because I have a subcontratation in my routing in CHF, and in transaction OB08, and I don’t had defined that rate (type P CHF –EUR).
    I need to know if there is any solution to the system assumes other Type of Exchange Rate (the last real exchange rate that I have introduced in my system, not the planned!)
    Points will be assigned to the suitable answer.
    Thanks in advance.
    Mary Jane

    Hi Sridhar
    Thanks for your reply.
    In OKEQ for the version 0, I have the rate type M.
    I don't understand why the system throwing back the message  " There is no exchange rate for exchange rate type P on 1.01.2008: CHF -> EUR".!
    Do you know why?
    Thanks and regards
    Mary Jane

  • Raw Material Cost Estimate - No split between cost component

    Dears,
    I need to execute a material cost estimate considering the Purchasing Info Record (PIR) where 3 different conditions are present:
    1) PB00
    2) FRB1
    3) RUC1
    The scope is:
    - linking PB00 to cost component 1
    - linking FRB1 to cost component 2
    - linking RUC1 to cost component 3
    Cost components are already created.
    I did following steps:
    - creation PIR with these 3 conditions (transaction ME11)
    PB00  10,00 EUR @ 1 KG
    FRB1   2,00 EUR @ 1 KG
    RUC1   3,00 EUR @ 1 KG
    - link condition types to origin groups (transaction OKYO)
    FRB1 linked to FRB1
    RUC1 linked to RUC1
    - link origin groups to cost component (transaction OKTZ)
    PB00, is linked to cost component 1 without origin group, but using only account coming from T030 table 
    FRB1 is linked to cost component 2 using origin group FRB1 and the same acocunt used for condition PB00 coming from T030 table
    RUC1 is linked to cost component 3 using origin group RUC1 and the same acocunt used for condition PB00 coming from T030 table
    At this moment, when I try to execute the cost estimate with transaction CK11N, the split is not done, and all condition types (all amounts) are linked to cost component 1. The set-up done in OKYO is not considered by the system.
    In the material master there's any origin group, if I try to fill in origin group FRB1 all condition types (all amounts) are linked to component 2, and if I try to change the origin group in the material master from FRB1 to RUC1, all condition types (all amounts) are linked to component 3 --> this means that the set-up done OKTZ is correctly considered by the system to link the origin group to the cost components.
    The problem is that the system reads the origin group from the material master, instead of transaction OKYO.
    How can I solve this problem?
    Thanks and Regards,
    Jody

    Pl verify following two things -
    Check valuation variant.
    Strategy sequence should have 'L - Price from purchasing info-record' and Sub-strategy should be 'A Quotation price via condition table' or 'B PO price via condition table'.
    OKYO setting should have valuation variant associated with your costing variant, along with other details (dont leave that field blank).
    Let us know if that works.
    Regards,
    Subodh

  • Cost center doubt in Itemization of Material Cost Estimate

    Hi,
    I have one doubt. I creating a material cost estimate of a header material.A new overhead rate ZCDD has been maintained in the costing sheet. An existing crdit key ZC9 has been assigned to the overhead rate ZCDD. The cost element and cost center row has been added in the credit key.
    When I run the material cost estimate, the cost element it is coming, but the cost center it is picking is not the one which has been maintained in the credit key.
    Can you please clarify my doubt, I am stuck up on this. Please let me know if you need any more information roe clarifications.
    Thank you very much.
    Prithwiraj.

    Hi Rau,
    Thanks for the reply.
    Can u tell me, is it mandatory to have only one to one Cost Center-Cost element mapping in a Credit Key?
    I mean to say is it like that we can assign a cost element of a credit key only to one cost center?
    Thanks,
    Prithwiraj.

  • Material cost estimate with quantity struchture : problem

    while running the costing transaction CK11N , the word u201Croutingu201D is not appearing under the explanation facilities.
    rate routing is already available
    what will be the reason and solution.

    Hi,
    There is a standard report you can use - S_P99_41000111 - Analyze/Compare Material Cost Estimates .
    With this report, you can report the standard cost estimates for a range of materials.
    Good Luck!!!  Assign points if this was a useful input to you.
    Thanks and Regards,
    Bhuvaneswari.S

  • Material Cost estimate realted issue and question

    Hello,
        we have a multi level BOM, I have makre and released for one sub level material in the BOM, there are few other sub- materils which need to be costed, can i do the cost estimate for the highest level of BOM or do i need to do first for each sub- component in the BOM, also for the one sum- companent wchi is realesed can that be changed.
    please let me know.

    Hi
    Both are in one way the same.
    Material cost estimate can be calculated as
    1. Material with quantity structure
    2. Material without quantity structure
    You can get more insight into it at the following link
    http://help.sap.com/saphelp_47x200/helpdata/en/7e/cb938143a311d189ee0000e81ddfac/frameset.htm
    Regards,
    Suraj

  • Material cost estimate with quantity structure (tcode: CK11N)

    Hey dear friends.
    I donu2019t know in which forum I should put my question above.
    In fact, Iu2019m new to SAP PM module.
    Iu2019m trying to create material cost estimate with quantity structure (tcode: CK11N) for a material u201CXu201D.
    This material is manufactured.
    While running the transaction CK11N, I got an error message.
    After analyzing this error message, Iu2019ve realised that somebody had assigned wrong activity types to cost centers which are linked to this material in tcode: CR03, tab: costing.
    So Iu2019ve changed and assigned the right activity types.
    Then, Iu2019ve tried to run the tcode CK11N again. But the system still brings the wrong activity types and seems to ignore the ones that Iu2019ve assignedu2026
    It seems like the old activity types still linked to the cost centers somewhere else than in tcode CR03u2026
    Any idea about what am I mising ?
    Thank's in advance.
    Bahia.

    Dear Bahia,
    If its rate routing means,i guess you must be working in REM scenario.
    So goto CA22,delete the existing operation and then assign the same work center in a new
    operation,check what activity types is it proposing in the rate routing,if its reflecting correctly means
    save the datas.
    Also goto KKF6N--->click the change mode icon and then calculator button to create a preliminary cost
    estimate and then save the datas.
    One of our forum friend has asked you to check the production order read PP master data once
    again,but understand there is no production order concept in REM scenario,only planned orders.
    Then come back with your queries.
    Regards
    Mangalraj.S
    Edited by: Mangalraj.S on Jun 17, 2009 12:05 PM

  • Material Cost Estimate with Quantity Structure (How to download)

    Is there a standard report or feature available in SAP to download the material cost estimate with quantity structure?
    Currently we have to print screen and it is very tedious and can't do analysis with those screenshots.
    Please advice.

    Hi,
    There is a standard report you can use - S_P99_41000111 - Analyze/Compare Material Cost Estimates .
    With this report, you can report the standard cost estimates for a range of materials.
    Good Luck!!!  Assign points if this was a useful input to you.
    Thanks and Regards,
    Bhuvaneswari.S

Maybe you are looking for