Consignment RAW material cost estimate selection from Purchase Info Price

I'm unable to determine the logic SAP is using to update the Cost Est. Standard for Consignment Raw Materials.  For instance we have (3) vendor Purchase Info Records for the same material.  One vendor PIR is w/ Info Category for Consignment and the other two vendors w/ Info Category for Standard.  When creating the cost std. the system selected the lower of the (2) Standard costs.  I don't understand why the system overlooked selecting the vendor in the Source List (the vendor w/ Info Cat. Consignment), with that vendor even being the lowest cost of the three vendors. 
The only time that I can find where SAP selects the vendor w/ a Info. Category Consignment is when it's the only vendor listed in a PIR.  Any time that a Standard one exists, it overrides the Consignment line when updating cost stds.!?

HI,
As per Standard SAp, system will pick up the value from standard PIR. It will not look into any sub-con, consignment or pipeline PIRs. If you want to pick up the same, there are 2 methodologies
1. User exit in costing variant to pick up speicific PIR
2. Use procurement alterntive methodology
Vijay

Similar Messages

  • 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

  • Raw material cost estimates

    HI experts,
    Currently we have the following scenario:
    There are some raw materials which are procured externally, and these materials are maintained with price control S
    Well, the problem is that the standard cost for the material consists of a few more components, for example:
    The standard price for the material X is 20 USD which consists of:
    - the price of the material itself : 15 USD
    - the import duty : 5 USD
    let's say if the actual import duty happened during IR is 6 USD, how can we get the variance from the difference between the import duty? I am unfamiliar with raw material cost estimate, but seeing that the import duty will be captured using condition type in PO, i assumed that we can use raw material cost estimates with this, and use the COPA report with record type B for this case.
    Could anyone give any suggestions regarding this case? It is better if it comes with step to step guide.
    Thank you very much in advance
    Regards,
    Erwin

    Hi Erwin
    1. The ideal design would have been Price Control V if the material is outright purchased... There by not leaving any scope for variances... You would agree that it is best to valuate inventory @ actuals as far as possible
    2. If you want to retain S, then release your Std cost as many times as the Base Price of 15 or Import duty of 5 usd changes... This will also avoid variances during MIGO.. However, it will throw up inventory revaluation figure each time u release new cost estimate
    Else, the variances will be updated to CO or COPA as per your choice in OKB9.... The record type will be B
    Are you not able to update variance to COPA?
    br, Ajay M

  • Raw Material  Cost Estimate

    Hi,
    I am trying to cost raw material.
    1. I perform all the steps in product costing, assign condition type to origin group:
    PB00 cond type to PB00 origin group
    ZMAT cond type to ZMAT origin group
    this is because I want to see the breakout of the PB00 and ZMAT.
    I also specify to read the purchase info record price first in the valuation variant.
    2. I set up the purchase info record with PB00 and ZMAT(% uplift).
    3. When I run Ck11n, my cost estimate is not reading the Purch Info Record information, is reading the standard price info.  I am not using BOM, nor Routing, just the purchase info record to cost.
    What else is missing, why the cost estimate is not seeing the purchase info record information?!
    Any suggestion greatly appreciated.
    Thanks,
    Alice

    Hi Gulshan,
    I did all that you suggested.
    Let me list out all the steps I have configured, and see what else I am missing.
    T-code OKTZ,
    I created a cost component structure
    structure    component    cost element
    ZG             10-material    3500001234
    ZG              20-Overhead 1100(2nd c.e.)
    ZG              30-ZCDU       ?????
    My question for the cost component structure here:
    For component 10 - the material is for internally produced parts, and for component 30, I want to allocated the PIR condition type ZCDU to this cost component for purchased part ABC, what should I be using for the cost element?! for component 30? It can't be the same cost element as component 10.
    I did all the valuation variant set up - using PIR, and then substrategy is condition type from PIR.
    Assign the delivery cost set up as well,
    PB00 assign to origin group PB00
    ZCDU assign to origin group ZCDU
    Created source list for vendor & material
    so in my PIR, I created condition type PB00, and condition ZCDU.
    PB00 = $2.00
    ZCDU = $1.00
    and when I run CK11N, I want it to pick up the PIR and roll up the cost to $3, and that should update the material master standard price, right?!
    not sure what else I am missing that is not picking up the PIR.

  • MTO - RAW MATERIAL COST ESTIMATE

    In an MTO scenario I am using configurable material I run order BOM cost estimate after sales order creation and as a result value gets updated against EK02 condition type in sales order.
    For order Bom cost estimate system picks values from material master of raw materials in BOM.
    Raw material has moving price in material master, I want to know
    1)what price system picks from material master for cost estimate MOVING AVERAGE PRICE, STANDARD PRICE in accounting view
    2)Do we run cost estimate for raw materials in MTO, and if so then at what time.

    hello sir,
    plz help me
    ne production order shows for cost element of cost of finished goods amt shows vey high the std price in material master is 71 and qty is 140 but it is not showing with this multiplication it is in lacs.
    in the production order the target cost is zero and total actal cost in lacs and total variance percentage is 0 only but as per knowledge no variance know but if u calculate 140*.71 it should come less amt as per material maser but in production order i t shows high amount
    twe found that they changed the price after GR is done now we want to post JV correct?what is the procedure to post JV in the current month .
    the entry at the time of G done with high value is
    Finshed goods a/c dr(balance sheet item) 89 post key
    COGS cr (p&L item) 91(post key)
    now what is the rectification entry
    Arjun

  • Raw material costing - Valuation strategy with info-rec. "L" - Consignment

    Hi all,
    I want to implement raw material costing for all our raw material.
    I created a new costing variant which use strategy "L"  (price from purchasing info-record).  My sub-strategy is 9 - Effective Price from PO followed by 5 - Effective price from info-record.
    Everything works well except for consignment with vendor.
    I have a raw that is procured from a vendor. The price for the raw is stored in the purchasing info-record and has condition types associated with it. This PIR is of CONSIGNMENT type. However, When costing the raw in CK11N the price for this consignment material is not pulled into the estimate.
    I have seen in note 552486 that "For the valuation with a price from the info record, the system can basically only consider info records with category 'N' (normal) and 'L' (subcontracting). "
    Have any of you come accross this situation? if yes, how did you resolve it?
    Thanks in advance

    Hi,
    any other idea about this ?  I want to use strategy "L" but want to know if I can make it work with consignment.
    Thanks

  • Material cost estimate with Quantiy structure

    Hello All,
    Can anyone please help in the following problem. When we do material cost estimate with quantiy structure, system is throwing message as "source of supply cannot be determined".
    Maximum points will be assigned to the suitable answer.
    Thanks in advance.
    Srinivas

    Hi, Srini,
    Please check in material master data whether this material is in-house produced or externally procured, which can be found in MRP view.
    Please also check your costing variant and valuation variant for material cost estination, I think possibly you chose stratey L FROM Purchasing Info Record. If not, ignor it.
    If it's externally procured, SAP logic is that firstly it will check the source list, then determine the quota arrangement and find proper vendor for the selected material. The error message is possibly caused by missing vendor or wrong quota reason. So please follow the SAP logic to check data one by one.
    Please check the following link on vendor determination in online help document.
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/7e/cb938143a311d189ee0000e81ddfac/frameset.htm
    Please specify if you also used mixed costing for material.
    Good luck!

  • 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

  • Raw material cost report for production of finished produt.?(urgent..REWARD

    Hi,
    any one can help in this issue.
    i am not getting the raw materila cost & manfacture conversion cost for  for the bom of FG - SFG - SFG - SFG- RAW
    FG - finished goods,
    SFG - semi finished goods
    RAW - raw material.
    plz provide the solution.
    raw material  and manfacture conversion cost is calculated in PERFORM z_process_data. subroutine.
    REPORT z_co_production_cost_nsk.
    TABLES: afko, bkpf, t001w , caufv.
    TYPE-POOLS: kkblo,
                slis.
    DATA: d_datefrom LIKE sy-datum,
          d_dateto LIKE sy-datum,
          d_repid LIKE sy-repid,
          d_uname LIKE sy-uname,
          d_returncode TYPE i,
          d_tabix TYPE i,
          d_kokrs LIKE tka01-kokrs,
          d_waers LIKE tka01-waers,
          wa_fieldcatalog TYPE slis_fieldcat_main,
          wa_listevents TYPE slis_alv_event,
          wa_listlayout TYPE slis_layout_alv,
          wa_print_info TYPE slis_print_alv,
          wa_listheader TYPE slis_listheader,
          d_headerlines TYPE i.
    DATA: BEGIN OF t_caufv OCCURS 0,
            aufnr TYPE caufv-aufnr,
            werks TYPE caufv-werks,
            objnr TYPE covp-objnr,
            gamng TYPE caufv-gamng,
            plnbez TYPE caufv-plnbez,
            rsnum TYPE caufv-rsnum,
          END OF t_caufv.
    *Added by Anand Bothra on 24/11/2003
    DATA: t_ab_caufv LIKE t_caufv OCCURS 0 WITH HEADER LINE.
    DATA: t_temp_caufv LIKE t_caufv OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF t_afpo OCCURS 0,
            aufnr TYPE afpo-aufnr,
            posnr TYPE afpo-posnr,
            wemng TYPE afpo-wemng,
            amein TYPE afpo-amein,
            charg TYPE afpo-charg,
          END OF t_afpo.
    DATA: BEGIN OF t_afpo1 OCCURS 0,
            aufnr TYPE afpo-aufnr,
            refaufnr TYPE afpo-aufnr,
            objnr TYPE caufv-objnr,
            rsnum TYPE afko-rsnum,
            wemng TYPE afpo-wemng,
            werks TYPE afpo-dwerk,
            charg TYPE afpo-charg,
          END OF t_afpo1.
    DATA: BEGIN OF t_makt OCCURS 0,
            matnr TYPE makt-matnr,
            maktx TYPE makt-maktx,
          END OF t_makt.
    DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv,
          t_listevents TYPE slis_t_event,
          t_sortsequence TYPE slis_t_sortinfo_alv,
          t_listheader TYPE slis_t_listheader.
    DATA: BEGIN OF t_production_costs OCCURS 0,
            objnr TYPE covp-objnr,       " Object Number
            kstar TYPE covp-kstar,       " Cost Element
            wkgbtr TYPE covp-wkgbtr,     " Cost of Line Item in CO area curr
            mbgbtr TYPE covp-mbgbtr,     " Quantity of Line Item
            matnr TYPE covp-matnr,       " Material Number
            kokrs TYPE covp-kokrs,       " Controlling Area
            belnr TYPE covp-belnr,       " Cost Accounting Document
            buzei TYPE covp-buzei,       " Item Number in Document
          END OF t_production_costs.
    DATA: BEGIN OF t_production_costs1 OCCURS 0,
            objnr TYPE covp-objnr,       " Object Number
            kstar TYPE covp-kstar,       " Cost Element
            wkgbtr TYPE covp-wkgbtr,     " Cost of Line Item in CO area curr
            mbgbtr TYPE covp-mbgbtr,     " Quantity of Line Item
            kokrs TYPE covp-kokrs,       " Controlling Area
            belnr TYPE covp-belnr,       " Cost Accounting Document
            buzei TYPE covp-buzei,       " Item Number in Document
          END OF t_production_costs1.
    DATA t_production_costs2 LIKE t_production_costs1
         OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF t_suborders OCCURS 0,
            aufnr TYPE caufv-aufnr,
            prevaufnr TYPE caufv-aufnr,
            objnr TYPE covp-objnr,
            rsnum TYPE caufv-rsnum,
          END OF t_suborders.
    DATA: BEGIN OF t_outputtab OCCURS 0,
            plnbez LIKE afko-plnbez,             " Material Number
            objnr LIKE caufv-objnr,              " Object Number
            maktx LIKE makt-maktx,               " Material Description
            charg LIKE afpo-charg,               " Batch Number
            aufnr LIKE afko-aufnr,               " Production Order Number
            gamng LIKE caufv-gamng,              " Total Order Quantity
            wemng LIKE afpo-wemng,               " Goods Receipt Quantity
            amein LIKE afpo-amein,               " Unit of Measure
            yield TYPE p DECIMALS 2,             " Percentage Yield
            totalrmcost TYPE p DECIMALS 2,       " Total Raw Material Cost
            totalpmcost TYPE p DECIMALS 2,       " Total Packing Mat. Cost
            mfgconvcost TYPE p DECIMALS 2,       " Manu. Conversion Cost
            pkgconvcost TYPE p DECIMALS 2,       " Packing Conv. Cost
            rmperunit TYPE p DECIMALS 2,         " Raw Cost per unit
            pmperunit TYPE p DECIMALS 2,         " Pack Mat cost per unit
            ccperunit TYPE p DECIMALS 2,         " Conv Cost per unit
            totperunit TYPE p DECIMALS 2,        " Total Cost per unit
            waers LIKE tka01-waers,              " Currency Key for CO Area
          END OF t_outputtab.
    *Added by Anand Bothra on 24/11/2003.
    DATA: t_ab_outputtab LIKE t_outputtab OCCURS 0 WITH HEADER LINE,
          t_temp_outputtab LIKE t_outputtab OCCURS 0 WITH HEADER LINE.
    BEGIN OF INSERTION VIP110703
    DATA:wa_prev_outputtab LIKE LINE OF t_outputtab,
         wa_production_costs LIKE LINE OF t_production_costs.
    DATA:prev_totmatqty TYPE p DECIMALS 2,
         prev_tot_mfgconv_cst TYPE p DECIMALS 2,
         grand_mat_qty TYPE p DECIMALS 2 ,
         tmp_aufnr TYPE caufv-aufnr.
    DATA: BEGIN OF t_suborders_propcost OCCURS 0,
            aufnr TYPE caufv-aufnr,
            prevaufnr TYPE caufv-aufnr,
            objnr TYPE covp-objnr,
            rsnum TYPE caufv-rsnum,
            proprmcost TYPE p DECIMALS 2,
            prop_mfg_convcost TYPE p DECIMALS 2,
          END OF t_suborders_propcost.
    DATA: wa_suborders LIKE LINE OF t_suborders.
    END   OF INSERTION VIP110703
    BEGIN OF INSERTION VIP111003
    DATA: prev_aufnr TYPE caufv-aufnr,
          prev_matnr TYPE mara-matnr,
          curr_matnr TYPE mara-matnr.
    DATA: bln_suborder ,
          ratio TYPE p DECIMALS 5.
    BEGIN OF INSERTION VIP111003
    *Added by Anand Bothra on 28/11/2003
    DATA: d_flag TYPE c.
    SELECTION-SCREEN BEGIN OF BLOCK zblock1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_plnbez FOR afko-plnbez,
                    s_aufnr FOR afko-aufnr,
    "Added By Vivek on 29.11.2005
                    s_auart FOR caufv-auart obligatory.
    PARAMETERS p_werks LIKE t001w-werks OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK zblock1.
    SELECTION-SCREEN BEGIN OF BLOCK zblock2 WITH FRAME TITLE text-002.
    SELECT-OPTIONS: s_monat FOR bkpf-monat NO-EXTENSION OBLIGATORY.
    PARAMETERS p_gjahr LIKE bkpf-gjahr OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK zblock2.
    SELECTION-SCREEN BEGIN OF BLOCK zblock3 WITH FRAME TITLE text-022.
    PARAMETERS: p_detsum RADIOBUTTON GROUP rad,
                p_sum RADIOBUTTON GROUP rad.
    SELECTION-SCREEN END OF BLOCK zblock3.
    INITIALIZATION.
      d_repid = sy-repid.
      d_uname = sy-uname.
    p_werks = 'G001'.
    AT SELECTION-SCREEN OUTPUT.
    LOOP AT SCREEN.
       IF screen-name EQ 'P_WERKS'.
         screen-input = 0.
         MODIFY SCREEN.
       ENDIF.
    ENDLOOP.
    AT SELECTION-SCREEN ON s_monat.
      IF s_monat-high IS INITIAL.
        IF NOT ( s_monat-low BETWEEN 1 AND 12 ).
          MESSAGE e398(00) WITH text-023 text-024 space space.
        ENDIF.
      ELSE.
        IF ( ( s_monat-low LT 1 ) OR ( s_monat-high GT 12 ) ).
          MESSAGE e398(00) WITH text-023 text-024 text-025 space.
        ENDIF.
      ENDIF.
    START-OF-SELECTION.
      PERFORM z_get_period_dates.
      PERFORM z_select_prod_orders.
      PERFORM z_select_prod_costs.
      PERFORM z_select_addl_prod_costs.
      PERFORM z_select_mat_desc.
    END-OF-SELECTION.
      IF d_returncode EQ 0.
        PERFORM z_process_data.
    *Added by Anand Bothra on 24/11/2004.
        PERFORM z_select_to_print.
        PERFORM z_prepare_fieldcat.
        PERFORM z_get_alv_events.
        PERFORM z_define_sortsequence.
        PERFORM z_define_layout.
        PERFORM z_display_list.
    *Added by Anand Botra on 25/11/2003.
        PERFORM z_export_to_excel.
        PERFORM z_send_mail_and_download.
      ELSE.
        MESSAGE i017(p5).
      ENDIF.
    *&      Form  Z_GET_PERIOD_DATES
          text
    -->  p1        text
    <--  p2        text
    FORM z_get_period_dates.
    Determine the date range from the fiscal period range and
    fiscal year entered on the selection screen
      DATA: d_firstdate LIKE sy-datum,
            d_lastdate LIKE sy-datum,
            t_dates LIKE scscp_period_str OCCURS 0 WITH HEADER LINE.
      CALL FUNCTION 'FIRST_AND_LAST_DAY_IN_YEAR_GET'
        EXPORTING
          i_gjahr        = p_gjahr
          i_periv        = 'V3'
        IMPORTING
          e_first_day    = d_firstdate
          e_last_day     = d_lastdate
        EXCEPTIONS
          input_false    = 1
          t009_notfound  = 2
          t009b_notfound = 3
          OTHERS         = 4.
      CALL FUNCTION 'CSCP_PARA1_GET_PERIODS'
        EXPORTING
          i_datuv    = d_firstdate
          i_datub    = d_lastdate
          i_timeunit = 'M'
        TABLES
          et_dates   = t_dates.
      SORT t_dates BY sindex.
      DELETE t_dates INDEX 1.
      LOOP AT t_dates.
        SUBTRACT: 1 FROM t_dates-sindex,
                  1 FROM t_dates-datub.
        MODIFY t_dates TRANSPORTING sindex datub.
      ENDLOOP.
      CLEAR: d_datefrom,
             t_dates.
      READ TABLE t_dates WITH KEY sindex = s_monat-low.
      d_datefrom = t_dates-datuv.
      CLEAR d_dateto.
      IF s_monat-high IS INITIAL.
        d_dateto = t_dates-datub.
      ELSE.
        CLEAR t_dates.
        READ TABLE t_dates WITH KEY sindex = s_monat-high.
        d_dateto = t_dates-datub.
      ENDIF.
    ENDFORM.                    " Z_GET_PERIOD_DATES
    *&      Form  Z_SELECT_PROD_ORDERS
          text
    -->  p1        text
    <--  p2        text
    FORM z_select_prod_orders.
    Select all production orders as per the selection criteria provided
      DATA: d_dlv_code LIKE jstat-stat,
            d_teco_code LIKE jstat-stat,
            t_status LIKE jstat OCCURS 0 WITH HEADER LINE.
      SELECT SINGLE name1 INTO t001w-name1 FROM t001w WHERE werks = p_werks.
    if s_plnbez-low eq space and s_plnbez-high eq space.
    endif.
      SELECT aufnr werks objnr gamng rsnum plnbez
      INTO CORRESPONDING FIELDS OF
      TABLE t_caufv FROM caufv
      WHERE aufnr IN s_aufnr
    AND   auart IN ('PP01', 'LL02') : BY VIVEK
      AND   auart in s_auart " Added By Vivek on 29.11.2005
      AND   werks = p_werks
      AND   plnbez IN s_plnbez
      AND   getri BETWEEN d_datefrom AND d_dateto
      ORDER BY aufnr.
      d_returncode = sy-subrc.
      IF d_returncode NE 0.
        STOP.
      ENDIF.
    Filter out only those production orders that have a status
    DLV (Delivered) or TECO (Technically Confirmed).
      CLEAR: d_dlv_code,
             d_teco_code.
      PERFORM z_get_status_code USING 'DLV' CHANGING d_dlv_code.
      PERFORM z_get_status_code USING 'TECO' CHANGING d_teco_code.
      LOOP AT t_caufv.
        REFRESH t_status.
        CALL FUNCTION 'STATUS_READ'
             EXPORTING
              CLIENT           = SY-MANDT
                  objnr            = t_caufv-objnr
                 only_active      = 'X'
         IMPORTING
              OBTYP            =
              STSMA            =
              STONR            =
            TABLES
                 status           = t_status
            EXCEPTIONS
                 object_not_found = 1
                 OTHERS           = 2
        IF sy-subrc EQ 0.
          CLEAR t_status.
          READ TABLE t_status WITH KEY stat = d_dlv_code.
          IF sy-subrc NE 0.
            CLEAR t_status.
            READ TABLE t_status WITH KEY stat = d_teco_code.
            IF sy-subrc NE 0.
              DELETE t_caufv.
            ENDIF.
          ENDIF.
        ELSE.
          DELETE t_caufv.
        ENDIF.
      ENDLOOP.
      IF t_caufv[] IS INITIAL.
        d_returncode = 4.
        STOP.
      ENDIF.
    Added by Anand Bothra on 24/11/2003**********
      t_ab_caufv[] = t_caufv[].
    Added by Anand Bothra on 28/11/2003.
      IF ( s_plnbez-low EQ space AND s_plnbez-high EQ space ).
        IF ( s_aufnr-low EQ space AND s_aufnr-high EQ space ).
          d_flag = 'N'.
        ELSE.
          d_flag = 'Y'.
        ENDIF.
      ELSE.
        d_flag = 'Y'.
      ENDIF.
      IF d_flag = 'Y'.
    Added by Anand Bothra on 21/11/2003.**********
    *Get the batch number of the entered order
        DATA: itab_afpo LIKE afpo OCCURS 100 WITH HEADER LINE.
        DATA: BEGIN OF t_ab_charg OCCURS 0,
    *Added by Anand on 27/11/2003
                aufnr LIKE afpo-aufnr,
                charg LIKE afpo-charg,
                END OF t_ab_charg.
        LOOP AT t_caufv.
          SELECT aufnr charg FROM afpo INTO t_ab_charg WHERE aufnr =
      t_caufv-aufnr.
            APPEND t_ab_charg.
            CLEAR t_ab_charg.
          ENDSELECT.
        ENDLOOP.
    IF sy-subrc = 0.
       SELECT * FROM afpo INTO TABLE itab_afpo WHERE charg = d_ab_charg.
    ENDIF.
        LOOP AT t_ab_charg.
          SELECT * FROM afpo INTO itab_afpo WHERE charg = t_ab_charg-charg.
            APPEND itab_afpo.
            CLEAR itab_afpo.
          ENDSELECT.
        ENDLOOP.
        CLEAR t_caufv.
        REFRESH t_caufv.
    *Get all the orders with the same batch number.
        LOOP AT itab_afpo.
          SELECT aufnr werks objnr gamng rsnum plnbez
          INTO CORRESPONDING FIELDS OF
          t_caufv FROM caufv WHERE aufnr = itab_afpo-aufnr.
            APPEND t_caufv.
          ENDSELECT.
        ENDLOOP.
        CLEAR t_caufv.
        SORT t_caufv BY aufnr.
    delete adjacent duplicates from t_caufv comparing all fields.
      ENDIF.
      SELECT aufnr posnr wemng amein charg INTO TABLE t_afpo
      FROM afpo FOR ALL ENTRIES IN t_caufv
      WHERE aufnr = t_caufv-aufnr.
      d_returncode = sy-subrc.
      IF d_returncode NE 0.
        STOP.
      ENDIF.
      SORT t_afpo BY aufnr.
    ENDFORM.                    " Z_SELECT_PROD_ORDERS
    *&      Form  Z_SELECT_MAT_DESC
          text
    -->  p1        text
    <--  p2        text
    FORM z_select_mat_desc.
    Get the Description of all materials
      SELECT matnr maktx INTO TABLE t_makt FROM makt
      FOR ALL ENTRIES IN t_caufv
      WHERE matnr = t_caufv-plnbez
      AND   spras = sy-langu.
    ENDFORM.                    " Z_SELECT_MAT_DESC
    *&      Form  Z_PROCESS_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM z_process_data.
    Process the data from all production orders and prepare the output
    table for display appropriately
      DATA: d_mbgbtr TYPE p DECIMALS 3,
            loop_cnt TYPE i.
      REFRESH t_outputtab.
      LOOP AT t_caufv.
        CLEAR t_outputtab.
        MOVE-CORRESPONDING t_caufv TO t_outputtab.
        CLEAR t_makt.
        READ TABLE t_makt WITH KEY matnr = t_caufv-plnbez.
        IF sy-subrc EQ 0.
          MOVE t_makt-maktx TO t_outputtab-maktx.
        ENDIF.
        CLEAR t_afpo.
        READ TABLE t_afpo WITH KEY aufnr = t_caufv-aufnr.
        IF sy-subrc EQ 0.
          MOVE: t_afpo-wemng TO t_outputtab-wemng,
                t_afpo-amein TO t_outputtab-amein,
                t_afpo-charg TO t_outputtab-charg.
        ENDIF.
        IF t_outputtab-gamng NE 0.
          COMPUTE t_outputtab-yield =
          ( t_outputtab-wemng / t_outputtab-gamng ) * 100.
        ENDIF.
        APPEND t_outputtab.
      ENDLOOP.
      SORT t_production_costs BY objnr kstar.
      LOOP AT t_production_costs.
        AT NEW objnr.
          CLEAR: d_mbgbtr, d_tabix, t_outputtab.
          READ TABLE t_outputtab WITH KEY objnr = t_production_costs-objnr.
          MOVE sy-tabix TO d_tabix.
          " Add up the Raw Material and Manufacturing Conversion
          " Costs from the previous stage production order
          CLEAR loop_cnt .
          LOOP AT t_suborders WHERE aufnr = t_outputtab-aufnr.
         commented by anand bothra on 20/11/2003
            ADD 1 TO loop_cnt.
            IF loop_cnt > 1.
              EXIT.
            ENDIF.
            LOOP AT t_production_costs1 WHERE objnr = t_suborders-objnr.
              CASE t_production_costs1-kstar.
                WHEN '0005000000' OR '0005010000'.     " Raw Material Cost
    BEGIN OF deletion VIP110703
              ADD t_production_costs1-wkgbtr TO t_outputtab-totalrmcost.
    END   OF deletion VIP110703
                  ADD t_production_costs1-wkgbtr TO prev_totmatqty.
                WHEN '0000500100'.      " Manufacturing Conversion Cost
                  ADD t_production_costs1-wkgbtr TO prev_tot_mfgconv_cst.
    BEGIN OF deletion VIP110703
                ADD t_production_costs1-wkgbtr TO t_outputtab-mfgconvcost.
    END   OF deletion VIP110703
              ENDCASE.
            ENDLOOP.
    BEGIN OF INSERTION VIP110703
           READ TABLE t_production_costs INTO wa_production_costs
           WITH KEY objnr = t_production_costs-objnr
                      matnr = wa_prev_outputtab-plnbez.
           IF sy-subrc = 0.
             IF  ( wa_production_costs-mbgbtr NE
                                   wa_prev_outputtab-wemng )  .
               prev_totmatqty = ( prev_totmatqty /
                                  wa_prev_outputtab-wemng ) *
                                 wa_production_costs-mbgbtr.
               prev_tot_mfgconv_cst = ( prev_tot_mfgconv_cst /
                                  wa_prev_outputtab-wemng ) *
                                  wa_production_costs-mbgbtr.
             ENDIF.
           ENDIF.
           LOOP AT t_suborders_propcost
                   WHERE prevaufnr = wa_prev_outputtab-aufnr.
             t_suborders_propcost-proprmcost = prev_totmatqty.
             t_suborders_propcost-prop_mfg_convcost = prev_tot_mfgconv_cst
             MODIFY t_suborders_propcost.
           ENDLOOP.
           clear: prev_totmatqty,
                   prev_tot_mfgconv_cst.
    END   OF INSERTION VIP110703
    BEGIN OF INSERTION VIP111003
            CLEAR: wa_prev_outputtab,
                   wa_production_costs.
            READ TABLE t_outputtab INTO wa_prev_outputtab
            WITH KEY aufnr = t_suborders-prevaufnr.
            ratio = 1.
            IF sy-subrc = 0.
              READ TABLE t_production_costs INTO wa_production_costs
              WITH KEY objnr = t_outputtab-objnr
                         matnr = wa_prev_outputtab-plnbez.
              IF sy-subrc = 0.
                IF  ( wa_production_costs-mbgbtr NE
                                      wa_prev_outputtab-wemng ) .
                  ratio = wa_production_costs-mbgbtr /
                          wa_prev_outputtab-wemng.
                  prev_totmatqty = ( prev_totmatqty /
                                     wa_prev_outputtab-wemng ) *
                                    wa_production_costs-mbgbtr.
                  prev_tot_mfgconv_cst = ( prev_tot_mfgconv_cst /
                                     wa_prev_outputtab-wemng ) *
                                     wa_production_costs-mbgbtr.
                ENDIF.
              ENDIF.
            ENDIF.
            LOOP AT t_suborders_propcost
                    WHERE prevaufnr = wa_prev_outputtab-aufnr
                    AND aufnr = t_outputtab-aufnr.
              t_suborders_propcost-proprmcost = prev_totmatqty.
              t_suborders_propcost-prop_mfg_convcost = prev_tot_mfgconv_cst.
              MODIFY t_suborders_propcost.
            ENDLOOP.
    *Commented by Anand Bothra on 20/11/2003.
            CLEAR: prev_totmatqty,
                    prev_tot_mfgconv_cst.
    BEGIN OF INSERTION VIP111003
          ENDLOOP.
        ENDAT.
        AT END OF kstar.
          SUM.
          CASE t_production_costs-kstar.
            WHEN '0000500200'.    " Packing Conversion Costs
              t_outputtab-pkgconvcost = t_production_costs-wkgbtr.
            WHEN '0005000500'.   " Semi-Finished Cost/Quantity
              MOVE t_production_costs-mbgbtr TO d_mbgbtr.
            WHEN '0005050000' OR '0005050001' OR '0005050002'.
              " Packing Mat Costs
              ADD t_production_costs-wkgbtr TO t_outputtab-totalpmcost.
            WHEN '0005000000' OR '0005010000'.
              ADD t_production_costs-wkgbtr TO t_outputtab-totalrmcost.
            WHEN '0000500100'.      " Manufacturing Conversion Cost
              ADD t_production_costs-wkgbtr TO t_outputtab-mfgconvcost.
          ENDCASE.
        ENDAT.
        AT END OF objnr.
          MOVE d_waers TO t_outputtab-waers.
    Calculations for the Production Order
          " Determine the RM Cost/Unit and Mfg Conv Cost/Unit
          CLEAR t_afpo1.
          READ TABLE t_afpo1 WITH KEY aufnr = t_outputtab-aufnr.
          IF ( ( sy-subrc EQ 0 ) AND ( t_afpo1-wemng NE 0 ) ).
    BEGIN OF insertion VIP110703
           tmp_aufnr = t_production_costs-objnr+2(12).
           LOOP AT t_suborders_propcost
           WHERE aufnr = tmp_aufnr  .
            ADD t_suborders_propcost-proprmcost TO t_outputtab-totalrmcost
             ADD t_suborders_propcost-prop_mfg_convcost  TO
                  t_outputtab-mfgconvcost.
           ENDLOOP.
    END   OF insertion VIP110703
    BEGIN OF insertion VIP111003
            CLEAR: t_suborders_propcost , tmp_aufnr.
            READ TABLE t_suborders_propcost
            WITH KEY aufnr = t_outputtab-aufnr.
            IF sy-subrc = 0.
             t_suborders_propcost-proprmcost =
                 t_suborders_propcost-proprmcost * ratio.
              ADD t_suborders_propcost-proprmcost
                    TO t_outputtab-totalrmcost.
             t_suborders_propcost-prop_mfg_convcost =
                 t_suborders_propcost-prop_mfg_convcost * ratio.
              ADD t_suborders_propcost-prop_mfg_convcost
                   TO t_outputtab-mfgconvcost.
              tmp_aufnr = t_suborders_propcost-prevaufnr.
              bln_suborder = 'T'.
              WHILE bln_suborder = 'T'.
                CLEAR: t_suborders_propcost .
                READ TABLE t_suborders_propcost
                WITH KEY aufnr = tmp_aufnr.
                IF sy-subrc = 0.
                  t_suborders_propcost-proprmcost =
                    t_suborders_propcost-proprmcost * ratio.
                  ADD t_suborders_propcost-proprmcost
                        TO t_outputtab-totalrmcost.
                  t_suborders_propcost-prop_mfg_convcost =
                      t_suborders_propcost-prop_mfg_convcost * ratio.
                  ADD t_suborders_propcost-prop_mfg_convcost
                       TO t_outputtab-mfgconvcost.
                  tmp_aufnr = t_suborders_propcost-prevaufnr.
                ELSE.
                  bln_suborder = 'F'.
                  CLEAR tmp_aufnr.
                ENDIF.
              ENDWHILE.
            ENDIF.
    END   OF insertion VIP111003
    END   OF deletion VIP110703
           t_outputtab-mfgconvcost = ( t_outputtab-mfgconvcost /
                                       t_afpo1-wemng ) * d_mbgbtr.
           t_outputtab-totalrmcost = ( t_outputtab-totalrmcost /
                                       t_afpo1-wemng ) * d_mbgbtr.
    END   OF deletion VIP110703
          ENDIF.
          IF t_outputtab-wemng NE 0.
            t_outputtab-rmperunit = t_outputtab-totalrmcost /
                                    t_outputtab-wemng.
            " PM Cost Per Unit = Total PM Cost / Quantity Delivered
            t_outputtab-pmperunit = t_outputtab-totalpmcost
                                    / t_outputtab-wemng.
            " Conv Cost Cost Per Unit = (Manu Conv Cost + Pack Conv Cost)
            "                           / Qty Delv
            t_outputtab-ccperunit = ( t_outputtab-mfgconvcost
                                    + t_outputtab-pkgconvcost )
                                    / t_outputtab-wemng.
          ENDIF.
          " Total Cost Per Unit = (RM Cost per unit + PM Cost per Unit
          "                       + Conv Cost per unit)
          t_outputtab-totperunit = t_outputtab-rmperunit
                                   + t_outputtab-pmperunit
                                   + t_outputtab-ccperunit.
    Update the calculated values in the internal table
          CHECK d_tabix GT 0.
          MODIFY t_outputtab INDEX d_tabix
                             TRANSPORTING totalrmcost totalpmcost
                                          mfgconvcost pkgconvcost
                                          rmperunit pmperunit
                                          ccperunit totperunit waers.
    BEGIN OF DELETION VIP110703
         MOVE t_outputtab TO wa_prev_outputtab.
    END   OF DELETION VIP110703
        ENDAT.
      ENDLOOP.
    ENDFORM.                    " Z_PROCESS_DATA
    *&      Form  Z_DISPLAY_LIST
          text
    -->  p1        text
    <--  p2        text
    FORM z_display_list.
    Display the Report
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
          EXPORTING
            I_INTERFACE_CHECK        = ' '
             i_callback_program       = d_repid
            I_CALLBACK_PF_STATUS_SET = ' '
            I_CALLBACK_USER_COMMAND  = ' '
            I_STRUCTURE_NAME         =
             is_layout                = wa_listlayout
               it_fieldcat              = t_fieldcatalog
            IT_EXCLUDING             =
            IT_SPECIAL_GROUPS        =
               it_sort                  = t_sortsequence
            IT_FILTER                =
            IS_SEL_HIDE              =
            I_DEFAULT                = 'X'
            I_SAVE                   = ' '
            IS_VARIANT               = ' '
             it_events                = t_listevents
            IT_EVENT_EXIT            =
             is_print                 = wa_print_info
            IS_REPREP_ID             =
            I_SCREEN_START_COLUMN    = 0
            I_SCREEN_START_LINE      = 0
            I_SCREEN_END_COLUMN      = 0
            I_SCREEN_END_LINE        = 0
            I_BYPASSING_BUFFER       =
            I_BUFFER_ACTIVE          =
       IMPORTING
            E_EXIT_CAUSED_BY_CALLER  =
            ES_EXIT_CAUSED_BY_USER   =
           TABLES
                t_outtab                 = t_outputtab
          EXCEPTIONS
               program_error            = 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.
      SET PF-STATUS 'Z_AB_STANDARD'.
    ENDFORM.                    " Z_DISPLAY_LIST
    *&      Form  Z_FILL_FIELDCATALOG
          text
    -->  p1        text
    <--  p2        text
    FORM z_fill_fieldcatalog USING      p_rownum LIKE sy-curow
                                        p_colnum LIKE sy-cucol
                                        p_fieldname TYPE slis_fieldname
                                        p_tabname TYPE slis_tabname
                                        p_reffield TYPE dd03p-fieldname
                                        p_reftable TYPE dd03p-tabname
                                        p_qfield TYPE slis_fieldname
                                        p_qtab TYPE slis_tabname
                                        p_sum
                                        p_stext
                                        p_mtext
                                        p_ltext
                                        p_datatype
                                        p_outputlen.
    Prepare the fields for ALV list output
      CLEAR wa_fieldcatalog.
      wa_fieldcatalog-row_pos = p_rownum.
      wa_fieldcatalog-col_pos = p_colnum.
      wa_fieldcatalog-fieldname = p_fieldname.
      wa_fieldcatalog-tabname = p_tabname.
      wa_fieldcatalog-ref_fieldname = p_reffield.
      wa_fieldcatalog-ref_tabname = p_reftable.
      wa_fieldcatalog-qfieldname = p_qfield.
      wa_fieldcatalog-qtabname = p_qtab.
      wa_fieldcatalog-do_sum = p_sum.
      wa_fieldcatalog-seltext_s = p_stext.
      wa_fieldcatalog-seltext_m = p_mtext.
      wa_fieldcatalog-seltext_l = p_ltext.
      wa_fieldcatalog-datatype = p_datatype.
      wa_fieldcatalog-outputlen = p_outputlen.
      APPEND wa_fieldcatalog TO t_fieldcatalog.
    ENDFORM.                    " Z_FILL_FIELDCATALOG
    *&      Form  Z_PREPARE_FIELDCAT
          text
    -->  p1        text
    <--  p2        text
    FORM z_prepare_fieldcat.
    Append all the display fields into the field catalog internal table
    First Row
      PERFORM z_fill_fieldcatalog USING 1 1 'PLNBEZ' 'T_OUTPUTTAB'
                                        space 'AFKO' space space
                                        space space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 1 2 'MAKTX' 'T_OUTPUTTAB'
                                        space 'MAKT' space space
                                        space space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 1 3 'CHARG' 'T_OUTPUTTAB'
                                        space 'AFPO' space space
                                        space space space space space
                                        0.
    Second Row
      PERFORM z_fill_fieldcatalog USING 2 1 'AUFNR' 'T_OUTPUTTAB'
                                        space 'AFKO' space space
                                        space space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 2 2 'GAMNG' 'T_OUTPUTTAB'
                                        space 'CAUFV' 'AMEIN' space
                                        'X' space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 2 3 'WEMNG' 'T_OUTPUTTAB'
                                        space 'AFPO' 'AMEIN' space
                                        'X' space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 2 4 'AMEIN' 'T_OUTPUTTAB'
                                        space 'AFPO' space space
                                        space space space space space
                                        0.
      PERFORM z_fill_fieldcatalog USING 2 5 'YIELD' 'T_OUTPUTTAB'
                                        space space space space
                                        space text-010 text-010 text-010
                                        'QUAN' 17.
    Third Row
      PERFORM z_fill_fieldcatalog USING 3 1 'TOTALRMCOST' 'T_OUTPUTTAB'
                                        space space space space
                                        'X' text-011 text-011 text-011
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 3 2 'TOTALPMCOST' 'T_OUTPUTTAB'
                                        space space space space
                                        'X' text-012 text-012 text-012
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 3 3 'MFGCONVCOST' 'T_OUTPUTTAB'
                                        space space space space
                                        'X' text-013 text-013 text-013
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 3 4 'PKGCONVCOST' 'T_OUTPUTTAB'
                                        space space space space
                                        'X' text-014 text-014 text-014
                                        'CURR' 21.
    Fourth Row
      PERFORM z_fill_fieldcatalog USING 4 1 'RMPERUNIT' 'T_OUTPUTTAB'
                                        space space space space
                                        space text-015 text-015 text-015
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 4 2 'PMPERUNIT' 'T_OUTPUTTAB'
                                        space space space space
                                        space text-016 text-016 text-016
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 4 3 'CCPERUNIT' 'T_OUTPUTTAB'
                                        space space space space
                                        space text-017 text-017 text-017
                                        'CURR' 21.
      PERFORM z_fill_fieldcatalog USING 4 4 'TOTPERUNIT' 'T_OUTPUTTAB'
                                        space space space space
                                        space text-018 text-018 text-018
                                       'CURR' 21.
    ENDFORM.                    " Z_PREPARE_FIELDCAT
    *&      Form  Z_GET_ALV_EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM z_get_alv_events.
    Returns table of possible events for a list type
      REFRESH t_listevents.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE     = 0
          IMPORTING
               et_events       = t_listevents
          EXCEPTIONS
               list_type_wrong = 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.
      ELSE.
        CLEAR: wa_listevents, d_tabix.
        READ TABLE t_listevents WITH KEY name = slis_ev_top_of_page
        INTO wa_listevents.
        d_tabix = sy-tabix.

    Hi Sai,
          You can try using MB51, use filter movement type 261. Add a filter for the posting date coverage.
    Then proceed. Click on the icon DETAIL LIST.
    Then click on the SUBTOTAL, add MATERIAL as a Criteria. The click the column AMOUNT IN LC.
    You should see the total issuances to per material.
    I hope this helps.
    Heinrick Palad

  • 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

  • Material Cost estimate in foreign Currency

    Hi all,
    We are trying to run CK11N, mateiral cost estimate for a material and its showing the error that exchange rate not maintained for CNY to JPY for exchange rate type "P".
    But in quality, even without maintaining the settings, we are able to run the cost estimate.
    Please let me know what could be the reason for the same.
    Thanks,
    Sajan C P

    Dear Sajan C P,
    If exchange rate type "P" for CNY to JPY has not been maintained in your quality system, I would assume that a component has been valuated with a price from purchasing info record. In your quality system, this price is already in local currency. Due to this, the system does not need to convert this value during calculation.
    In your other system, the situation is probably different. The price from purchasing info record needs to be converted. For this reason, an exchange rate has to be maintained in OB08. You can check the currency setting of the info record in table EINE.
    Regards,
    Antje

  • Freight cost to be included in the Raw material cost while creating VL31N

    Hi all,
    We are purchasing raw material from other country. we are paying freight for the imported material.
    My requirement is, when doing inbound delivery freight cost has to be included in the raw material cost.
    Now its not getting included in the raw material cost.
    What are all the necessary steps to be done to include the freight cost into the raw material?
    Thanks in advance,
    Babu

    Hi,
    You can create dummy material inmaterial master record.
    You can enter the material manually while creating inbound delivery, which will come as unplanned delivery cost.
    Br,
    Tushar Patankar

  • Raw Material Cost Analysis

    Hi Everyone,
    Need to create a query to find raw material cost of each sales/based on AR/ invoice- quantity varies in each sales. Is there anyway around?
    Thanks
    Edited by: Anoop Jacob on Feb 20, 2009 2:09 PM

    Hi Suda,
    Have created a query as below, search function not seems working WHERE     (T0.DocNum = 1249)-
    instead given -
    WHERE     T0.[DocNum] = [%0]. -
    Also this query dosent drill down to child BOM any sugetions will be great!!
    SELECT DISTINCT T4.Code,  T0.DocEntry, T4.OrigPrice, T6.BaseQty, T1.Quantity, T6.BaseQty * T1.Quantity * T4.OrigPrice AS 'Total'
    FROM         OINV AS T0 INNER JOIN
                          INV1 AS T1 ON T0.DocEntry = T1.DocEntry INNER JOIN
                          OITM AS T2 ON T1.ItemCode = T2.ItemCode INNER JOIN
                          OITT AS T3 ON T2.ItemCode = T3.Code INNER JOIN
                          ITT1 AS T4 ON T3.Code = T4.Father INNER JOIN
                          OWOR AS T5 ON T3.Code = T5.ItemCode INNER JOIN
                          WOR1 AS T6 ON T5.DocEntry = T6.DocEntry AND T4.Code = T6.ItemCode INNER JOIN
                          OINM AS T7 ON T2.ItemCode = T7.ItemCode
    WHERE     (T0.DocNum = 1249)
    GROUP BY T4.Code, T4.OrigPrice, T6.BaseQty, T1.Quantity, T6.BaseQty * T1.Quantity * T4.OrigPrice, T0.DocEntry
    HAVING      (NOT (T4.Code LIKE N'%%Labour%%')) AND (NOT (T4.Code LIKE N'%%Overhead%%'))
    Regards,
    Edited by: Anoop Jacob on Feb 23, 2009 1:23 PM

  • 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

Maybe you are looking for