SAP 在制品明细

1 篇文章 0 订阅

*&---------------------------------------------------------------------*
*& Report ZCO019
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zco019.

TABLES matdoc  .

SELECT-OPTIONSs_bukrs FOR matdoc-bukrs OBLIGATORY ,
                s_budat FOR matdoc-budat OBLIGATORY ,
                s_aufnr FOR matdoc-aufnr .


DATABEGIN OF gs_out ,
        budat        LIKE matdoc-budat,
        bukrs        LIKE matdoc-bukrs,
        werks        LIKE matdoc-werks,
        mblnr        LIKE matdoc-mblnr,
        aufnr        LIKE matdoc-aufnr,
        matnr        LIKE matdoc-matnr,
        bwtar        LIKE matdoc-bwtar,
        charg        LIKE matdoc-charg,
        bwart        LIKE matdoc-bwart,
        stock_qty    LIKE matdoc-dmbtr_stock,
        dmbtr_stock  LIKE matdoc-dmbtr_stock,
        vprsv        LIKE matdoc-vprsv,
        objnr        LIKE aufk-objnr,
        dj           TYPE  DECIMALS 6"单价
        dmbtr_stock2 LIKE matdoc-dmbtr_stock,
      END OF gs_out .
DATAgt_out LIKE TABLE OF gs_out .

DATABEGIN OF ls_covp,
        aufnr  LIKE    matdoc-aufnr,
        belnr  LIKE  coep-belnr ,  "如果不加这个 FOR ALL ENTRY IN 会少一行
        wogbtr LIKE  coep-wogbtr,
      END OF ls_covp .
DATAlt_covp LIKE TABLE OF ls_covp .


DATAgt_fieldcat TYPE   lvc_t_fcat .
DATAgs_fieldcat TYPE   lvc_s_fcat .
DATAgs_layout   TYPE   lvc_s_layo .

PARAMETERS CB_01 AS CHECKBOX .



"取物料

SELECT
     budat
     a
~bukrs
     a
~werks
     mblnr
     a
~aufnr
     matnr
     bwtar
     charg
     bwart
     stock_qty
    dmbtr_stock
     vprsv
    objnr
  
INTO TABLE gt_out
  
FROM matdoc AS a
  
JOIN aufk AS ON a~aufnr b~aufnr
  
WHERE a~bukrs IN s_bukrs
   
AND  budat IN s_budat
  
AND a~aufnr IN s_aufnr
  
AND B~AUART <> 'Z010'
  AND B~AUART <> 'Z020'  .

DATABEGIN OF ls_jest,
        objnr LIKE jest-objnr,
*       STAT  LIKE JEST-STAT ,  "查询TECO DLV等描述可以 关联 TJ02T 这个表
      END OF ls_jest .
DATAlt_jest LIKE TABLE OF ls_jest .

if cb_01  eq 'X' .
SELECT  objnr
  
INTO TABLE lt_jest
  
FROM jest
  
FOR ALL ENTRIES IN gt_out
  
WHERE objnr gt_out-objnr
   
AND   stat EQ 'I0012'  OR  stat EQ 'I0045' OR  stat EQ 'I0046'   )   "查询TECO DLV等描述可以 关联 TJ02T 这个表
   AND INACT  EQ '' .

DATA lv_tabix TYPE sy-tabix .
LOOP AT gt_out INTO gs_out .
  CLEAR lv_tabix .
  lv_tabix =  sy-tabix  .
  READ TABLE lt_jest INTO ls_jest WITH KEY objnr gs_out-objnr .
  IF sy-subrc EQ .
    DELETE gt_out  INDEX lv_tabix .
  ENDIF .

ENDLOOP .
ENDIF .

DATA lv_KALNR LIKE ckmlhd-kalnr .
DATAlv_peinh LIKE ckmlcr-peinh .
DATAlv_year TYPE c LENGTH .
DATAlv_mon TYPE c LENGTH .

取实际金额
LOOP AT gt_out INTO gs_out    .
  SELECT SINGLE  kalnr INTO lv_KALNR
    
FROM ckmlhd
    
WHERE matnr gs_out-matnr
    
AND  bwkey gs_out-werks
    
AND bwtar  gs_out-bwtar
    
AND kzbws space.
  lv_year gs_out+0(4) .
  lv_mon '0' && gs_out+4(2) .
  IF gs_out-vprsv EQ 'S' .
    SELECT SINGLE   pvprs peinh INTO  gs_out-dj lv_peinh )
      FROM ckmlcr
      
WHERE  kalnr lv_kalnr
      
AND bdatj lv_year
      
AND poper lv_mon .

    IF lv_peinh IS NOT INITIAL .
      gs_out-dj gs_out-dj / lv_peinh .
    ELSE .
      gs_out-dj  =  .
    ENDIF .
    gs_out-dmbtr_stock2 =    gs_out-stock_qty *  gs_out-dj .
*    IF gs_out-bwart EQ '101' OR  gs_out-bwart EQ '102' .
*      gs_out-dmbtr_stock2  = gs_out-dmbtr_stock .
*    ENDIF .

  ELSE .
    gs_out-dmbtr_stock2  gs_out-dmbtr_stock .
  ENDIF .
  MODIFY gt_out FROM gs_out .

ENDLOOP .


"取制造费用
IF CB_01 EQ 'X' .
IF gt_out IS NOT INITIAL .
  SELECT aufnr  belnr   wogbtr
    
FROM v_covp
    
INTO CORRESPONDING FIELDS OF  TABLE  lt_covp
    
FOR ALL ENTRIES IN gt_out
    
WHERE aufnr gt_out-aufnr
    
AND   budat IN  s_budat
    
AND   k_vrgng  <> 'COIN' .
endif.
else .
     SELECT aufnr  belnr   wogbtr
    
FROM v_covp
    
INTO CORRESPONDING FIELDS OF  TABLE  lt_covp
    
WHERE aufnr in s_aufnr
    
AND   budat IN  s_budat
    
AND   k_vrgng  <> 'COIN' .
ENDIF .


DATABEGIN OF gs_covp,
        aufnr  LIKE    matdoc-aufnr,
        wogbtr LIKE  coep-wogbtr,
      END OF gs_covp .
DATAgt_covp LIKE TABLE OF gs_covp .

LOOP AT lt_covp INTO ls_covp .
  MOVE-CORRESPONDING ls_covp TO gs_covp .
  COLLECT gs_covp INTO gt_covp .
  CLEAR  gs_covp .
ENDLOOP .

调整发出为正数 入库为负数
LOOP AT gt_out INTO gs_out .
  gs_out-stock_qty =  gs_out-stock_qty * -.
  gs_out-dmbtr_stock =  gs_out-dmbtr_stock * -.
  gs_out-dmbtr_stock2 =  gs_out-dmbtr_stock2 * -.
  MODIFY gt_out  FROM gs_out .
ENDLOOP .

"添加制造费用

LOOP AT gt_covp INTO gs_covp .
  CLEARgs_out .
  gs_out-aufnr  gs_covp-aufnr .
  gs_out-matnr '制造费用.
  gs_out-dmbtr_stock  gs_covp-wogbtr .
  gs_out-dmbtr_stock2  gs_covp-wogbtr .
  APPEND gs_out TO gt_out .
ENDLOOP .

SORT gt_out  BY aufnr budat  ASCENDING  .




DEFINE append_field.
  gs_fieldcat-fieldname &1.
  gs_fieldcat-coltext &2.
  APPEND gs_fieldcat TO gt_fieldcat.
  CLEARgs_fieldcat.
END-OF-DEFINITION.


append_field'BUKRS' '公司代码.
append_field'BUDAT' '过账日期.
append_field'AUFNR' '工单号.
append_field'MBLNR' '物料凭证号.
append_field'MATNR' '物料编号.
append_field'BWTAR' '评估类型.
append_field'CHARG' '物料批次.
append_field'BWART' '移动类型.
append_field'STOCK_QTY' '数量.
append_field'DMBTR_STOCK' '金额_标准.
append_field'VPRSV' '价格控制.

append_field'DJ' '实际单价.
append_field'DMBTR_STOCK2' '金额_实际.



gs_layout-cwidth_opt 'X'.   "列宽自适应
gs_layout-zebra      'X'.      "斑马线

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program sy-repid
*   i_callback_pf_status_set = 'FRM_STATUS_SET'
*   i_callback_user_command  = 'FRM_USER_COMMAND'
*
*   I_GRID_SETTINGS    =
    is_layout_lvc      gs_layout
    it_fieldcat_lvc    
gt_fieldcat
    i_save             
'A'
*   i_grid_settings    = ls_grid_settings
*   it_events          = lt_events
*   is_variant         = ls_variant
*   ES_EXIT_CAUSED_BY_USER   =
  TABLES
    t_outtab           gt_out
  
EXCEPTIONS
    program_error      1
    OTHERS             2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值