Stock overview and cost assignment - 6
* Get Cost of Goods Sold data
* Get the Material data
* Get WIP data
* Get Inventory data[@more@]
*&---------------------------------------------------------------------*
*& Form ARRANGE_CONS_STOCK
*&---------------------------------------------------------------------*
* Arrange the Valuated Stock with Subcontractor
*----------------------------------------------------------------------*
FORM ARRANGE_CONS_STOCK .
* Extract Valuated Stock with Subcontractor(From OBEW/OBEWH)
PERFORM FRM_GET_CONS_STOCK.
* Get the CONS batch
PERFORM GET_CONS_BATCH.
* Assign amount to batch SO stock
PERFORM ASSIGN_TO_CONS_BATCH.
ENDFORM. " ARRANGE_CONS_STOCK
*&---------------------------------------------------------------------*
*& Form GET_CONS_BATCH
*&---------------------------------------------------------------------*
* Get the CONS batch
*----------------------------------------------------------------------*
FORM GET_CONS_BATCH .
DATA:
LTH_MSLB LIKE LINE OF TD_MSLB,
LTD_MSLBH TYPE TABLE OF TYP_MSLB,
LTH_MSLBH LIKE LINE OF LTD_MSLBH.
DATA:
LW_INDEX TYPE SY-TABIX.
SELECT MATNR " Material Number
WERKS " Plant
CHARG " Batch Number
LIFNR " Account Number of Vendor or Creditor
LFGJA " Fiscal Year of Current Period
LFMON " Current period (posting period)
LBLAB " Valuated Unrestricted-Use Stock
LBINS " Stock in Quality Inspection
LBEIN " Total Stock of All Restricted Batches
LBUML " Stock in Transfer for Subcontracting (Plant to Plant)
INTO CORRESPONDING FIELDS OF TABLE TD_MSLB
FROM MSLB
FOR ALL ENTRIES IN TD_OBEW
WHERE WERKS = P_WERKS "Valuation Area
AND MATNR = TD_OBEW-MATNR. " Material Number
LOOP AT TD_MSLB INTO LTH_MSLB.
LW_INDEX = SY-TABIX.
IF LTH_MSLB-LFGJA > P_GJAHR
OR ( LTH_MSLB-LFGJA = P_GJAHR
AND LTH_MSLB-LFMON > P_PERID ).
SELECT MATNR " Material Number
WERKS " Plant
CHARG " Batch Number
LIFNR " Account Number of Vendor or Creditor
LFGJA " Fiscal Year of Current Period
LFMON " Current period (posting period)
LBLAB " Valuated Unrestricted-Use Stock
LBINS " Stock in Quality Inspection
LBEIN " Total Stock of All Restricted Batches
LBUML " Stock in Transfer for Subcontracting (Plant to Plant)
FROM MSLBH
INTO CORRESPONDING FIELDS OF TABLE LTD_MSLBH
UP TO 1 ROWS
WHERE MATNR = LTH_MSLB-MATNR " Material Number
AND WERKS = LTH_MSLB-WERKS " Plant
AND CHARG = LTH_MSLB-CHARG " Batch Number
AND ( LFGJA < P_GJAHR
OR ( LFGJA = P_GJAHR
AND LFMON <= P_PERID ) )
ORDER BY LFGJA DESCENDING
LFMON DESCENDING.
IF SY-SUBRC = 0.
READ TABLE LTD_MSLBH INTO LTH_MSLBH INDEX 1.
IF SY-SUBRC = 0.
MODIFY TD_MSLB FROM LTH_MSLBH INDEX LW_INDEX.
ENDIF.
ENDIF.
ENDIF.
REFRESH LTD_MSLBH.
CLEAR LTH_MSLBH.
CLEAR LTH_MSLB.
ENDLOOP.
ENDFORM. " GET_CONS_BATCH
*&---------------------------------------------------------------------*
*& Form ASSIGN_TO_CONS_BATCH
*&---------------------------------------------------------------------*
* Assign amount to batch SO stock
*----------------------------------------------------------------------*
FORM ASSIGN_TO_CONS_BATCH .
DATA:
LTH_OBEW LIKE LINE OF TD_OBEW,
LTH_MSLB LIKE LINE OF TD_MSLB,
LTH_CT000401 LIKE LINE OF TD_CT000401.
DATA:
LW_AMOUNT TYPE MSLB-LBLAB,
LW_SALK3 TYPE OBEW-SALK3.
LOOP AT TD_OBEW INTO LTH_OBEW.
LOOP AT TD_MSLB INTO LTH_MSLB WHERE MATNR = LTH_OBEW-MATNR
AND WERKS = LTH_OBEW-BWKEY
AND LIFNR = LTH_OBEW-LIFNR.
LTH_CT000401-MATNR = LTH_MSLB-MATNR.
LTH_CT000401-WERKS = LTH_MSLB-WERKS.
LTH_CT000401-LGORT = SPACE.
LTH_CT000401-CHARG = LTH_MSLB-CHARG.
LTH_CT000401-SOBKZ = C_CNCS_STOCK. "Stock Indicator
LTH_CT000401-BUKRS = P_BUKRS.
LTH_CT000401-GJAHR = P_GJAHR.
LTH_CT000401-MONAT = P_PERID. "Perid
LTH_CT000401-BKLAS = LTH_OBEW-BKLAS. "Valuetion class
LTH_CT000401-QUANT = LTH_MSLB-LBLAB + " Valuated Unrestricted-Use Stock
LTH_MSLB-LBINS + " Stock in Quality Inspection
LTH_MSLB-LBEIN + " Total Stock of All Restricted Batches.
LTH_MSLB-LBUML. " Stock in Transfer for Subcontracting
LTH_CT000401-MEINS = LTH_OBEW-PEINH. "Price Unit
IF LTH_OBEW-VPRSV = C_S.
LTH_CT000401-AMOUNT = LTH_CT000401-QUANT * LTH_OBEW-STPRS / LTH_OBEW-PEINH.
ELSE.
LTH_CT000401-AMOUNT = LTH_CT000401-QUANT * LTH_OBEW-VERPR / LTH_OBEW-PEINH.
ENDIF.
* Get Account
IF LTH_OBEW-BKLAS = C_2110.
LTH_CT000401-HKONT = W_FACCOUNT.
ELSE.
LTH_CT000401-HKONT = W_SACCOUNT.
ENDIF.
* Get the routing data
PERFORM GET_ROUTING_DATA USING '
LTH_CT000401-WERKS
LTH_CT000401-LGORT
LTH_CT000401-MATNR
LTH_CT000401-CHARG
CHANGING LTH_CT000401-RTGRP1
LTH_CT000401-RTGRP2
LTH_CT000401-RTGRP3
LTH_CT000401-RTGRP4
LTH_CT000401-RTGRP5
LTH_CT000401-RTGRP6
LTH_CT000401-RTGRP7
LTH_CT000401-RTGRP8.
* Get profit center
SELECT SINGLE PRCTR
FROM MARC
INTO LTH_CT000401-PRCTR
WHERE MATNR = LTH_CT000401-MATNR
AND WERKS = LTH_CT000401-WERKS.
APPEND LTH_CT000401 TO TD_CT000401.
LW_AMOUNT = LW_AMOUNT + LTH_CT000401-QUANT.
LW_SALK3 = LW_SALK3 + LTH_CT000401-AMOUNT.
CLEAR LTH_CT000401.
ENDLOOP.
* Qty without batch
IF LW_AMOUNT < LTH_OBEW-LBKUM.
LW_AMOUNT = LTH_OBEW-LBKUM - LW_AMOUNT.
IF LTH_OBEW-VPRSV = C_S.
LTH_CT000401-AMOUNT = LW_AMOUNT * LTH_OBEW-STPRS / LTH_OBEW-PEINH.
ELSE.
LTH_CT000401-AMOUNT = LW_AMOUNT * LTH_OBEW-VERPR / LTH_OBEW-PEINH.
ENDIF.
LTH_CT000401-MATNR = LTH_OBEW-MATNR.
LTH_CT000401-WERKS = LTH_OBEW-BWKEY.
LTH_CT000401-LGORT = SPACE.
LTH_CT000401-CHARG = SPACE.
LTH_CT000401-SOBKZ = C_CNCS_STOCK. "Stock Indicator
LTH_CT000401-BUKRS = P_BUKRS.
LTH_CT000401-GJAHR = P_GJAHR.
LTH_CT000401-MONAT = P_PERID. "Perid
LTH_CT000401-BKLAS = LTH_OBEW-BKLAS. "Valuetion class
LTH_CT000401-QUANT = LW_AMOUNT. "Total stock qty
LTH_CT000401-MEINS = LTH_OBEW-PEINH. "Price Unit
* Get Account
IF LTH_OBEW-BKLAS = C_2110.
LTH_CT000401-HKONT = W_FACCOUNT.
ELSE.
LTH_CT000401-HKONT = W_SACCOUNT.
ENDIF.
* Get the routing data
PERFORM GET_ROUTING_DATA USING '
LTH_CT000401-WERKS
LTH_CT000401-LGORT
LTH_CT000401-MATNR
LTH_CT000401-CHARG
CHANGING LTH_CT000401-RTGRP1
LTH_CT000401-RTGRP2
LTH_CT000401-RTGRP3
LTH_CT000401-RTGRP4
LTH_CT000401-RTGRP5
LTH_CT000401-RTGRP6
LTH_CT000401-RTGRP7
LTH_CT000401-RTGRP8.
* Get profit center
SELECT SINGLE PRCTR
FROM MARC
INTO LTH_CT000401-PRCTR
WHERE MATNR = LTH_CT000401-MATNR
AND WERKS = LTH_CT000401-WERKS.
APPEND LTH_CT000401 TO TD_TEMP401.
LW_SALK3 = LW_SALK3 + LTH_CT000401-AMOUNT.
CLEAR LTH_CT000401.
ENDIF.
* Balance the total amount
IF LW_SALK3 <> LTH_OBEW-SALK3.
LTH_CT000401-AMOUNT = LTH_OBEW-SALK3 - LW_SALK3.
LTH_CT000401-MATNR = LTH_OBEW-MATNR.
LTH_CT000401-WERKS = LTH_OBEW-BWKEY.
LTH_CT000401-LGORT = SPACE.
LTH_CT000401-CHARG = SPACE.
LTH_CT000401-SOBKZ = C_SO_STOCK. "Stock Indicator
LTH_CT000401-BUKRS = P_BUKRS.
LTH_CT000401-GJAHR = P_GJAHR.
LTH_CT000401-MONAT = P_PERID. "Perid
LTH_CT000401-BKLAS = LTH_OBEW-BKLAS. "Valuetion class
* LTH_CT000401-QUANT = LW_AMOUNT. "Total stock qty
LTH_CT000401-MEINS = LTH_OBEW-PEINH. "Price Unit
* Get Account
IF LTH_OBEW-BKLAS = C_2110.
LTH_CT000401-HKONT = W_FACCOUNT.
ELSE.
LTH_CT000401-HKONT = W_SACCOUNT.
ENDIF.
* Get the routing data
PERFORM GET_ROUTING_DATA USING '
LTH_CT000401-WERKS
LTH_CT000401-LGORT
LTH_CT000401-MATNR
LTH_CT000401-CHARG
CHANGING LTH_CT000401-RTGRP1
LTH_CT000401-RTGRP2
LTH_CT000401-RTGRP3
LTH_CT000401-RTGRP4
LTH_CT000401-RTGRP5
LTH_CT000401-RTGRP6
LTH_CT000401-RTGRP7
LTH_CT000401-RTGRP8.
* Get profit center
SELECT SINGLE PRCTR
FROM MARC
INTO LTH_CT000401-PRCTR
WHERE MATNR = LTH_CT000401-MATNR
AND WERKS = LTH_CT000401-WERKS.
APPEND LTH_CT000401 TO TD_CT000401.
CLEAR LTH_CT000401.
ENDIF.
CLEAR: LW_SALK3,
LW_AMOUNT.
CLEAR LTH_OBEW.
ENDLOOP.
ENDFORM. " ASSIGN_TO_CONS_BATCH
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8356764/viewspace-1059575/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Stock overview and cost assignment - 1View
- Stock overview and cost assignment - 2View
- Stock overview and cost assignment - 3View
- Stock overview and cost assignment - 4View
- Stock overview and cost assignment - 5View
- SAP WebClient UI overview頁面裡assignment block的可見性分析技巧WebclientUIViewBloC
- 6 Thing that determine composite cost
- 6-Overview-Kubernetes Object ManagementViewObject
- SAP MM Stock Tables and Stock Types
- stock Types
- Forget stock
- 【ES6基礎】解構賦值(destructuring assignment)賦值Struct
- Algorithm assignment 1Go
- Credit block & Stock resevedBloC
- Flutter OverviewFlutterView
- Assignment Problem的若干思考
- cost量化分析
- 表連線cost
- bandit-switch cost
- dart class overviewDartView
- Stormstarter-OverviewORMView
- Overview of PartitioningView
- Overview of Database CheckpointsViewDatabase
- Overview of Unix ResourcesView
- oracle function overviewOracleFunctionView
- Item Import OverviewImportView
- Overview of Extents(11)View
- Overview of Partitioned IndexesViewIndex
- Overview of Tablespaces (38)View
- Overview of Views (174)View
- Overview of Datafiles (62)View
- Overview of Segments (22)View
- MM Stock基礎知識
- [譯] Javascript開銷(Cost)JavaScript
- PostgreSQL Cost Based Vacuum探秘SQL
- OPTIMIZER_IDEX_COSTIDE
- Cost objects in SAP R/3Object
- oracle cost計算方式Oracle