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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 6 Thing that determine composite cost
- SAP WebClient UI overview頁面裡assignment block的可見性分析技巧WebclientUIViewBloC
- 6-Overview-Kubernetes Object ManagementViewObject
- 【ES6基礎】解構賦值(destructuring assignment)賦值Struct
- Algorithm assignment 1Go
- var let cost
- SAP Stock Inconsistency
- Flutter OverviewFlutterView
- cost量化分析
- Assignment Problem的若干思考
- panic: assignment to entry in nil map
- HDU 1385 Minimum Transport Cost
- What is the Average Cost of Doing a Diploma?
- SAP QM Cost of Quality Inspection
- dart class overviewDartView
- [英] TensorFlow OverviewView
- Overview of Availability in a CDBViewAI
- 746. Min Cost Climbing StairsAI
- PostgreSQL DBA(175) - Cost EST(SeqScan)SQL
- Least Cost Bracket Sequence(貪心)ASTRacket
- 7-Overview-namesView
- 8-Overview-NamespacesViewnamespace
- 10-Overview-AnnotationsView
- 2.4 Overview of Services in a CDBView
- 高通USB overviewView
- DeepLearning – Overview of Sequence modelView
- Spring Cloud: Overview 概述SpringCloudView
- Best Time to Buy and Sell Stock系列
- 121|Best Time to Buy and Sell Stock
- [leetcode]Best Time to Buy and Sell StockLeetCode
- 【CodeChef】Graph Cost(動態規劃)動態規劃
- G. Reducing Delivery Cost(最短路)
- Oracle 監聽投毒COST解決Oracle
- 9-Overview-Labels and SelectorsView
- 11-Overview-Field SelectorsView
- 12-Overview-Recommended LabelsView
- Overview-(概述 What is Kubernetes)View
- 4-Overview-Kubernetes APIViewAPI
- 2.6.2 Overview of Flashback PDB in a CDBView