Stock overview and cost assignment - 6

* Get Gross Sales data
* 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

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值