CKM3多物料查询

CKM3只能查询一个物料,有时用户可能会需要报表功能,查看多个物料(进销存)。

以下是本人跟踪CKM3逻辑,调用标准函数。依此设计而成的报表而且还有注释噢,安全可靠无副作用,复制可直接运行。你值得拥有~

由于不同公司业务场景不同,需要微调。

一、选择文本:

P_GJAHR 会计年度

P_MONAT 期间

S_BKLAS 评估类

S_MATNR 物料

S_WERKS 工厂

会计年度

期间

评估类

物料

工厂

二、文本符号:

001 选择条件

D01 成本估算编号

D02 数量单位

D03 工厂

D04 会计年度

D05 期间

D06 物料

D07 物料描述

D08 评估类

D09 评估类描述

D10 标准价格

D11 实际价格

D12 价格单位

D13 期初库存数量

D14 期初标准成本

D15 期初差异金额

D16 期初实际成本

D17 本期收货数量

D18 本期收货标准成本

D19 本期收货差异金额

D20 本期收货实际成本

D21 累计库存数量

D22 累计库存标准成本

D23 累计库存差异金额

D24 累计库存实际成本

D25 消耗数量

D26 消耗标准成本

D27 消耗差异金额

D28 消耗实际成本

D29 生产领用数量

D30 生产领用标准成本

D31 生产领用差异金额

D32 生产领用实际成本

D33 成本中心领用数量

D34 成本中心领用标准成本

D35 成本中心领用差异金额

D36 成本中心领用实际成本

D37 项目领用数量

D38 项目领用标准成本

D39 项目领用差异金额

D40 项目领用实际成本

D41 委外数量

D42 委外标准成本

D43 委外差异金额

D44 委外实际成本

D45 期末库存数量

D46 期末库存标准成本

D47 期末库存差异金额

D48 期末库存实际成本

D49 其他数量

D50 其他标准成本

D51 其他差异金额

D52 其他实际成本

D53 未分配差异金额

D54 未分配实际成本

H01 KALNR

H02 MEINS

H03 WERKS

H04 GJAHR

H05 MONAT

H06 MATNR

H07 MAKTX

H08 BKLAS

H09 BKBEZ

H10 COST1

H11 COST2

H12 PEINH

H13 BGQTY

H14 BGCT1

H15 BGDIF

H16 BGCT2

H17 INQTY

H18 INCT1

H19 INDIF

H20 INCT2

H21 SUMQTY

H22 SUMCT1

H23 SUMDIF

H24 SUMCT2

H25 OUTQTY

H26 OUTCT1

H27 OUTDIF

H28 OUTCT2

H29 PRDQTY

H30 PRDCT1

H31 PRDDIF

H32 PRDCT2

H33 COSTQTY

H34 COSTCT1

H35 COSTDIF

H36 COSTCT2

H37 ITEMQTY

H38 ITEMCT1

H39 ITEMDIF

H40 ITEMCT2

H41 OTHQTY

H42 OTHCT1

H43 OTHDIF

H44 OTHCT2

H45 EDQTY

H46 EDCT1

H47 EDDIF

H48 EDCT2

H49 QITQTY

H50 QITCT1

H51 QITDIF

H52 QITCT2

H53 OPNDIF

H54 OPNCT2

三、代码:

*&---------------------------------------------------------------------*

*& 程序ID:  ZFIR001

*&---------------------------------------------------------------------*

*& 程序名称: 

*& 程序目的:  批量查看CKM3数据,支持点击物料号跳转CKM3界面。

*& 作者:      SA_CMS

*&---------------------------------------------------------------------*

*  版本号 日期     作者    修改描述

*&---------------------------------------------------------------------*

*                         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

*&---------------------------------------------------------------------*

REPORT ZFIR001   NO STANDARD PAGE

                 HEADING LINE-SIZE 255

                 MESSAGE-ID ZFI01.

*----------------------------------------------------------------------*

*  TABLES

*----------------------------------------------------------------------*

TABLES:

  BSEG,

  MBEW.

*----------------------------------------------------------------------*

*  TYPE-POOLS

*----------------------------------------------------------------------*

TYPE-POOLS:SLIS,TRUXS,ICON.

*----------------------------------------------------------------------*

*  TYPES

*----------------------------------------------------------------------*

TYPES: BEGIN OF T_CKM3,

         KALNR   TYPE CKMLHD-KALNR,           "成本估算编号

         MEINS   TYPE MEINS,                  "数量单位

         WERKS   TYPE BSEG-WERKS,             "工厂

         GJAHR   TYPE BKPF-GJAHR,             "会计年度

         MONAT   TYPE BKPF-MONAT,             "期间

         MATNR   TYPE BSEG-MATNR,             "物料

         MAKTX   TYPE MAKT-MAKTX,             "物料描述

         BKLAS   TYPE MBEW-BKLAS,             "评估类

         BKBEZ   TYPE T025T-BKBEZ,            "评估类描述

         COST1   TYPE CK_STPRS_1,             "标准价格

         COST2   TYPE CK_PVPRS_1,             "实际价格

         PEINH   TYPE CK_PEINH_1,             "价格单位

         BGQTY   TYPE KKB_ML_MENGE,           "期初库存数量

         BGCT1   TYPE KKB_ML_GES,             "期初标准成本

         BGDIF   TYPE KKB_ML_GES,             "期初差异金额

         BGCT2   TYPE KKB_ML_GES,             "期初实际成本

         INQTY   TYPE KKB_ML_MENGE,           "本期收货数量

         INCT1   TYPE KKB_ML_GES,             "本期收货标准成本

         INDIF   TYPE KKB_ML_GES,             "本期收货差异金额

         INCT2   TYPE KKB_ML_GES,             "本期收货实际成本

         SUMQTY  TYPE KKB_ML_MENGE,           "累计库存数量

         SUMCT1  TYPE KKB_ML_GES,             "累计库存标准成本

         SUMDIF  TYPE KKB_ML_GES,             "累计库存差异金额

         SUMCT2  TYPE KKB_ML_GES,             "累计库存实际成本

         OUTQTY  TYPE KKB_ML_MENGE,           "消耗数量

         OUTCT1  TYPE KKB_ML_GES,             "消耗标准成本

         OUTDIF  TYPE KKB_ML_GES,             "消耗差异金额

         OUTCT2  TYPE KKB_ML_GES,             "消耗实际成本

         PRDQTY  TYPE KKB_ML_MENGE,           "生产领用数量

         PRDCT1  TYPE KKB_ML_GES,             "生产领用标准成本

         PRDDIF  TYPE KKB_ML_GES,             "生产领用差异金额

         PRDCT2  TYPE KKB_ML_GES,             "生产领用实际成本

         COSTQTY TYPE KKB_ML_MENGE,           "成本中心领用数量

         COSTCT1 TYPE KKB_ML_GES,             "成本中心领用标准成本

         COSTDIF TYPE KKB_ML_GES,             "成本中心领用差异金额

         COSTCT2 TYPE KKB_ML_GES,             "成本中心领用实际成本

         ITEMQTY TYPE KKB_ML_MENGE,           "项目领用数量

         ITEMCT1 TYPE KKB_ML_GES,             "项目领用标准成本

         ITEMDIF TYPE KKB_ML_GES,             "项目领用差异金额

         ITEMCT2 TYPE KKB_ML_GES,             "项目领用实际成本

         OTHQTY  TYPE KKB_ML_MENGE,           "委外数量

         OTHCT1  TYPE KKB_ML_GES,             "委外标准成本

         OTHDIF  TYPE KKB_ML_GES,             "委外差异金额

         OTHCT2  TYPE KKB_ML_GES,             "委外实际成本

         QITQTY  TYPE KKB_ML_MENGE,           "其他数量

         QITCT1  TYPE KKB_ML_GES,             "其他标准成本

         QITDIF  TYPE KKB_ML_GES,             "其他差异金额

         QITCT2  TYPE KKB_ML_GES,             "其他实际成本

         EDQTY   TYPE KKB_ML_MENGE,           "期末库存数量

         EDCT1   TYPE KKB_ML_GES,             "期末库存标准成本

         EDDIF   TYPE KKB_ML_GES,             "期末库存差异金额

         EDCT2   TYPE KKB_ML_GES,             "期末库存实际成本

*         OPNQTY  TYPE KKB_ML_MENGE,           "未分配数量

*         OPNCT1  TYPE KKB_ML_GES,             "未分配标准成本

         OPNDIF  TYPE KKB_ML_GES,             "未分配差异金额

         OPNCT2  TYPE KKB_ML_GES,             "未分配实际成本

       END OF T_CKM3.

TYPES: BEGIN OF T_DOC,

         DOCREF  TYPE MLDOC-DOCREF,           "凭证参考

         KALNR   TYPE MLDOC-KALNR,            "成本估算编号

         JAHRPER TYPE MLDOC-JAHRPER,          "过账年份/期

         RUNREF  TYPE MLDOC-RUNREF,           "成本核算运行参考

         CATEG   TYPE MLDOC-CATEG,            "分类帐类别

         PTYP    TYPE MLDOC-PTYP,             "备选处理类型

         BEWARTGRP TYPE MLDOC-BEWARTGRP,      "运作类型组

         QUANT   TYPE MLDOC-QUANT,            "交易数量

         MEINS   TYPE MLDOC-MEINS,            "交易数量单位

         STVAL   TYPE MLDOC-STVAL,            "交易库存价值

         PRD     TYPE MLDOC-PRD,              "价格差异

         BUDAT   TYPE MLDOC-BUDAT,            "过帐日期

         BELNR   TYPE MLDOC-BELNR,            "凭证编号

         POSNR   TYPE MLDOC-POSNR,            "凭证项目

         AWREF   TYPE MLDOC-AWREF,            "参考凭证号

         AWITEM  TYPE MLDOC-AWITEM,           "参考凭证行项目

         TCODE   TYPE MLDOC-TCODE,            "事务代码

       END OF T_DOC.

TYPES: BEGIN OF T_HD,

         KALNR  TYPE CKMLHD-KALNR,            "成本估算编号

         WERKS  TYPE BSEG-WERKS,              "工厂

         MATNR  TYPE BSEG-MATNR,              "物料

         MAKTX  TYPE MAKT-MAKTX,              "物料描述

         BKLAS  TYPE MBEW-BKLAS,              "评估类

         BKBEZ  TYPE T025T-BKBEZ,             "评估类描述

       END OF T_HD.

TYPES:

* Struktur für Objekt-Typ (Material)

  BEGIN OF T_KALNR,

    KALNR        LIKE CKMLHD-KALNR,           "Kalnr des Material-Objekts

    OBTYP        LIKE CKMLMV001-OTYP,         "Objekttyp

    BWKEY        LIKE CKMLHD-BWKEY,           "Bewertungskreis

    MATNR        LIKE CKMLHD-MATNR,           "Materialnummer

    BWTAR        LIKE CKMLHD-BWTAR,           "Bewertungsart

    WPERI        LIKE CKMLPP-POPER,           "WIP-Periode

    WJAHR        LIKE CKMLPP-BDATJ,           "WIP-Geschäftsjahr

    WUNTPER      LIKE CKMLPP-UNTPER,          "WIP-Wertgerüsttyp

    KZBWS        LIKE CKMLHD-KZBWS,           "KZ bew. Einzelbestand

    XOBEW        LIKE CKMLHD-XOBEW,           "KZ Lohnbearb: Subcontr.(JPN)

    SOBKZ        LIKE CKMLHD-SOBKZ,           "Sonderbestands-KZ

    VBELN        LIKE CKMLHD-VBELN,           "Kundenauftragsnummer

    POSNR        LIKE CKMLHD-POSNR,           "Kundenauftragsposition

    PSPNR        LIKE CKMLHD-PSPNR,           "PSP-Element

    LIFNR        LIKE OBEW-LIFNR,             "Kontonummer des Lieferanten

    FLG_LOCK     LIKE BOOLE-BOOLE,            "Kz: Objekt ist gesperrt

  END OF T_KALNR.

*----------------------------------------------------------------------*

*  定义常量

*----------------------------------------------------------------------*

CONSTANTS:

  CNS_A(1)   TYPE C VALUE 'A',                "常量A

  CNS_AB(2)  TYPE C VALUE 'AB',               "常量AB期初

  CNS_EB(2)  TYPE C VALUE 'EB',               "常量EB期末

  CNS_ND(2)  TYPE C VALUE 'ND',               "常量ND未分配

  CNS_PC(2)  TYPE C VALUE 'PC',               "常量PC价格变更

  CNS_VN(2)  TYPE C VALUE 'VN',               "常量VN消耗

  CNS_ZU(2)  TYPE C VALUE 'ZU',               "常量ZU增加

  CNS_VF(2)  TYPE C VALUE 'VF',               "常量VF消耗 生产

  CNS_VA(2)  TYPE C VALUE 'V+',               "常量V+余额

  CNS_VP(2)  TYPE C VALUE 'VP',               "常量VP项目

  CNS_VK(2)  TYPE C VALUE 'VK',               "常量VK成本中心

  CNS_VL(2)  TYPE C VALUE 'VL',               "常量VL转包委外

  CNS_VUBM(4)  TYPE C VALUE 'VUBM',           "常量VUBM物料转移过账

  CNS_BB(2)  TYPE C VALUE 'BB',               "常量BB采购订单

  CNS_BA(2)  TYPE C VALUE 'B+',               "常量B+采购

  CNS_BL(2)  TYPE C VALUE 'BL',               "常量BL转包 委外

  CNS_BF(2)  TYPE C VALUE 'BF',               "常量BF生产

  CNS_BUBM(4)  TYPE C VALUE 'BUBM',           "常量BUBM物料转移过账

  CNS_01(2)  TYPE C VALUE '01',               "常量01

  CNS_02(2)  TYPE C VALUE '02',               "常量02

  CNS_ACT(3) TYPE C VALUE 'ACT',              "常量ACT成本核算结果对象

  CNS_X(1)   TYPE C VALUE 'X',                "常量X

  CNS_S(1)   TYPE C VALUE 'S',                "常量S

  CNS_E(1)   TYPE C VALUE 'E'.                "常量e

*----------------------------------------------------------------------*

*  定义内表

*----------------------------------------------------------------------*

DATA:

  IT_HD TYPE STANDARD TABLE OF T_HD,

  IT_CKM3      TYPE STANDARD TABLE OF T_CKM3,

  IT_KMLCR TYPE STANDARD TABLE OF CKMLCR,

  IT_FIELDCATV TYPE STANDARD TABLE OF LVC_S_FCAT.

*----------------------------------------------------------------------*

*  定义工作区

*----------------------------------------------------------------------*

DATA:

  WA_CKM3  TYPE T_CKM3.

*----------------------------------------------------------------------*

*  定义全局变量

*----------------------------------------------------------------------*

DATA:

  G_PER  TYPE MLDOC-JAHRPER.

*----------------------------------------------------------------------*

*  定义画面

*----------------------------------------------------------------------*

*屏幕定义

SELECTION-SCREEN FUNCTION KEY 1.

SELECTION-SCREEN:BEGIN OF BLOCK BLK1 WITH FRAME  TITLE TEXT-001.

SELECT-OPTIONS: S_WERKS FOR BSEG-WERKS  OBLIGATORY.

PARAMETERS:     P_GJAHR TYPE BKPF-GJAHR OBLIGATORY DEFAULT SY-DATUM+0(4),

                P_MONAT TYPE BKPF-MONAT OBLIGATORY.

SELECT-OPTIONS: S_MATNR FOR MBEW-MATNR,

                S_BKLAS FOR MBEW-BKLAS.

SELECTION-SCREEN END OF BLOCK BLK1.

*----------------------------------------------------------------------*

*  INITIALIZATION

*----------------------------------------------------------------------*

INITIALIZATION.

*----------------------------------------------------------------------*

*  AT SELECTION-SCREEN

*----------------------------------------------------------------------*

AT SELECTION-SCREEN.

*----------------------------------------------------------------------*

*  START-OF-SELECTION

*----------------------------------------------------------------------*

START-OF-SELECTION.

* 初期化处理

  PERFORM FRM_INI_DATA.

* 数据获取和处理

  PERFORM FRM_GET_DATA.

* 数据编辑处理

  PERFORM FRM_EDIT_DATA.

* ALV显示

  PERFORM FRM_OUT_ALV.

*&---------------------------------------------------------------------*

*& Form FRM_INI_DATA

*&---------------------------------------------------------------------*

*& 初期化处理

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_INI_DATA .

  DATA:

    IT_HD,

    IT_CKM3,

    IT_KMLCR,

    IT_FIELDCATV.

  CLEAR:

    WA_CKM3,

    G_PER.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_GET_DATA

*&---------------------------------------------------------------------*

*& 数据获取和处理

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_GET_DATA .

*  对象物料数据取得

   PERFORM FRM_GET_OBJDATA.

*  KMLPP&KMLCR取得期初数量和期初标准成本

   PERFORM FRM_GET_BGDATA.

*  MLDOC取得Material Ledger Document(期间出入库数据)

   PERFORM FRM_GET_MLDOC.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_GET_OBJDATA

*&---------------------------------------------------------------------*

*& 对象物料数据取得

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_GET_OBJDATA .

  SELECT A~KALNR                                "成本估算编号

         A~BWKEY AS WERKS                       "工厂

         A~MATNR                                "物料

         C~MAKTX                                "物料描述

         B~BKLAS                                "评估类

*         D~BKBEZ                               "评估类描述

    INTO TABLE IT_HD

    FROM CKMLHD AS A

      INNER JOIN MBEW AS B

      ON A~MATNR = B~MATNR

      INNER JOIN MAKT AS C

      ON A~MATNR = C~MATNR

*      INNER JOIN T025T AS D

*      ON B~MATNR = D~BKLAS

    WHERE A~BWKEY IN S_WERKS

      AND A~MATNR IN S_MATNR

      AND C~SPRAS = '1'.

*      AND C~SPRAS = SY-LANGU.

  DELETE IT_HD WHERE BKLAS NOT IN S_BKLAS.

* 对象数据不存在报错

  IF IT_HD[] IS INITIAL.

    MESSAGE S006(ZFI01).

    LEAVE LIST-PROCESSING.

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_GET_BGDATA

*&---------------------------------------------------------------------*

*& KMLPP&KMLCR取得期初数量和期初标准成本

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_GET_BGDATA .

  DATA:

    LIT_KALNR TYPE STANDARD TABLE OF T_KALNR,

    LIT_KMLPP TYPE STANDARD TABLE OF CKMLPP,

    LWA_KMLPP TYPE CKMLPP,

    LWA_KMLCR TYPE CKMLCR,

    LWA_KALNR TYPE T_KALNR,

    L_BDATJ TYPE CKMLPP-BDATJ,

    L_POPER TYPE CKMLPP-POPER,

    LWA_HD TYPE T_HD.

  L_BDATJ = P_GJAHR.

  L_POPER = P_MONAT.

  CONCATENATE L_BDATJ L_POPER INTO G_PER.

  REFRESH:

    IT_KMLCR.

  LOOP AT IT_HD INTO LWA_HD.

    CLEAR:

      LWA_KALNR.

    LWA_KALNR-KALNR = LWA_HD-KALNR.

    LWA_KALNR-BWKEY = LWA_HD-WERKS.

    APPEND LWA_KALNR TO LIT_KALNR.

  ENDLOOP.

  SORT LIT_KALNR BY KALNR ASCENDING

                    BWKEY ASCENDING.

  CALL FUNCTION 'CKMS_PERIOD_READ_WITH_ITAB'

    EXPORTING

      I_REFRESH_BUFFER                = ' '

*     I_READ_ONLY_BUFFER              = ' '

*     I_USE_BUFFER                    = 'X'

*     I_BUILD_SMBEW                   =

      I_BDATJ_1                       = L_BDATJ

      I_POPER_1                       = L_POPER

*     I_BDATJ_2                       =

*     I_POPER_2                       =

*     I_BDATJ_3                       =

*     I_POPER_3                       =

*     I_BETWEEN_1_AND_2               =

      I_UNTPER                        = '000'

*     I_CALL_BY_REPORTING             = ' '

*     I_NO_CHK_PERIODS_COMPLETE       = ' '

      I_ENHANCE_CATEGORIES            = ' '

      I_PP_CR_ONLY                    = 'X'

    TABLES

      T_KALNR                         = LIT_KALNR

      T_CKMLPP                        = LIT_KMLPP

      T_CKMLCR                        = IT_KMLCR

*     T_MISS_CKMLPP                   =

*     T_MISS_CKMLCR                   =

    EXCEPTIONS

      NO_DATA_FOUND                   = 1

      INPUT_DATA_INCONSISTENT         = 2

      BUFFER_INCONSISTENT             = 3

      OTHERS                          = 4

            .

    IF SY-SUBRC <> 0.

* Implement suitable error handling here

    ENDIF.

*   获得期初

    LOOP AT LIT_KMLPP INTO LWA_KMLPP.

      CLEAR:

        WA_CKM3.

      WA_CKM3-KALNR = LWA_KMLPP-KALNR.

      WA_CKM3-GJAHR = LWA_KMLPP-BDATJ.

      WA_CKM3-MONAT = LWA_KMLPP-POPER+1(2).

*      wa_ckm3-meins = lwa_kmlpp-meins.

      WA_CKM3-BGQTY  = LWA_KMLPP-ABKUMO.

      WA_CKM3-SUMQTY = LWA_KMLPP-ABKUMO.

      WA_CKM3-EDQTY  = LWA_KMLPP-ABKUMO.

      COLLECT WA_CKM3 INTO IT_CKM3.

    ENDLOOP.

*   获得期初金额

    LOOP AT IT_KMLCR INTO LWA_KMLCR.

      CLEAR:

        WA_CKM3.

      WA_CKM3-KALNR = LWA_KMLCR-KALNR.

      WA_CKM3-GJAHR = LWA_KMLCR-BDATJ.

      WA_CKM3-MONAT = LWA_KMLCR-POPER+1(2).

*      wa_ckm3-meins = lwa_kmlcr-meins.

      WA_CKM3-BGCT1 = LWA_KMLCR-ABSALK3.

      WA_CKM3-BGCT2 = LWA_KMLCR-ABSALK3.

*     累计库存

      WA_CKM3-SUMCT1 = LWA_KMLCR-ABSALK3.

      WA_CKM3-SUMCT2 = LWA_KMLCR-ABSALK3.

*     期末库存

      WA_CKM3-EDCT1  = LWA_KMLCR-ABSALK3.

      WA_CKM3-EDCT2  = LWA_KMLCR-ABSALK3.

      COLLECT WA_CKM3 INTO IT_CKM3.

    ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_GET_MLDOC

*&---------------------------------------------------------------------*

*& MLDOC取得Material Ledger Document(期间出入库数据)

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_GET_MLDOC .

  DATA:

    LIT_DOC TYPE STANDARD TABLE OF T_DOC,

    LWA_DOC TYPE T_DOC.

  SELECT DOCREF                               "凭证参考

         KALNR                                "成本估算编号

         JAHRPER                              "过账年份/期

         RUNREF                               "成本核算运行参考

         CATEG                                "分类帐类别

         PTYP                                 "备选处理类型

         BEWARTGRP                            "运作类型组

         QUANT                                "交易数量

         MEINS                                "交易数量单位

         STVAL                                "交易库存价值

         PRD                                  "价格差异

         BUDAT                                "过帐日期

         BELNR                                "凭证编号

         POSNR                                "凭证项目

         AWREF                                "参考凭证号

         AWITEM                               "参考凭证行项目

         TCODE                                "事务代码

    FROM MLDOC

    INTO TABLE LIT_DOC

    FOR ALL ENTRIES IN IT_HD

   WHERE JAHRPER = G_PER

     AND KALNR = IT_HD-KALNR.

*  AB          期初

*  EB          期末差异 成本结算时存在

*  ND

*  PC         价格变更

*  VN VF      消耗 生产

*  VN V+  2   消耗 余额(盘点701)

*  VN V+      消耗 价格重估只有差异

*  VN V+  1   消耗 601

*  VN VP  02  消耗 项目  221

*  VN VP      消耗 项目

*  VN VK  2   消耗 成本中心 201

*  VN VK      消耗 成本中心 价格重估

*  VN VL      消耗 转包

*  VN VUBM    消耗 物料转移过账

*  ZU BB      增加 采购订单

*  ZU B+      增加 采购

*  ZU BL      增加 转包 委外105

*  ZU BF      增加 生产

*  ZU BUBM    增加 物料转移过账

  LOOP AT LIT_DOC INTO LWA_DOC.

    CLEAR:

      WA_CKM3.

    WA_CKM3-KALNR = LWA_DOC-KALNR.

    WA_CKM3-GJAHR = P_GJAHR.

    WA_CKM3-MONAT = P_MONAT.

*   物料帐结果数据

    IF LWA_DOC-RUNREF = CNS_ACT.

      CASE LWA_DOC-CATEG.

*       编辑物料帐期初库存差异

        WHEN CNS_AB.

          WA_CKM3-BGDIF = LWA_DOC-PRD.

          WA_CKM3-BGCT2 = LWA_DOC-PRD.

*         累计库存

          WA_CKM3-SUMDIF = LWA_DOC-PRD.

          WA_CKM3-SUMCT2 = LWA_DOC-PRD.

          COLLECT WA_CKM3 INTO IT_CKM3.

*       编辑物料帐期末库存差异

        WHEN CNS_EB.

          WA_CKM3-EDDIF = LWA_DOC-PRD * -1.

          WA_CKM3-EDCT2 = LWA_DOC-PRD * -1.

          COLLECT WA_CKM3 INTO IT_CKM3.

*       编辑物料帐当期消耗差异金额

        WHEN CNS_VN.

*         期末库存

          WA_CKM3-EDQTY  = LWA_DOC-QUANT.

          WA_CKM3-EDCT1  = LWA_DOC-STVAL.

          WA_CKM3-EDCT2  = LWA_DOC-STVAL.

          CASE LWA_DOC-PTYP.

            WHEN CNS_VF.                       "消耗 生产

*             消耗 生产

              WA_CKM3-PRDQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-PRDCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-PRDDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-PRDCT2 = WA_CKM3-PRDCT1 + WA_CKM3-PRDDIF.

*             消耗汇总

              WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

              COLLECT WA_CKM3 INTO IT_CKM3.

            WHEN CNS_VK.                       "消耗 成本中心

*             消耗 成本中心

              WA_CKM3-COSTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-COSTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-COSTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-COSTCT2 = WA_CKM3-COSTCT1 + WA_CKM3-COSTDIF.

*             消耗汇总

              WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

              COLLECT WA_CKM3 INTO IT_CKM3.

            WHEN CNS_VP.                       "消耗 项目

*             消耗 项目

              WA_CKM3-ITEMQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-ITEMCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-ITEMDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-ITEMCT2 = WA_CKM3-ITEMCT1 + WA_CKM3-ITEMDIF.

*             消耗汇总

              WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

              COLLECT WA_CKM3 INTO IT_CKM3.

            WHEN CNS_VL.                       "消耗 委外

*             消耗 委外

              WA_CKM3-OTHQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OTHCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OTHDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OTHCT2 = WA_CKM3-OTHCT1 + WA_CKM3-OTHCT2.

*             消耗汇总

              WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

              COLLECT WA_CKM3 INTO IT_CKM3.

            WHEN OTHERS.                      "消耗 其他盘点701 601 物料转移过账等

*             消耗 委外

              WA_CKM3-QITQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-QITCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-QITDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-QITCT2 = WA_CKM3-QITCT1 + WA_CKM3-QITDIF.

*             消耗汇总

              WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

              WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

              WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

              WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

              COLLECT WA_CKM3 INTO IT_CKM3.

          ENDCASE.

        WHEN CNS_ZU.                            "收货

*         收货

          WA_CKM3-INQTY = LWA_DOC-QUANT.

          WA_CKM3-INCT1 = LWA_DOC-STVAL.

          WA_CKM3-INDIF = LWA_DOC-PRD.

          WA_CKM3-INCT2 = WA_CKM3-INCT1 + WA_CKM3-INDIF.

*         累计库存

          WA_CKM3-SUMQTY = LWA_DOC-QUANT.

          WA_CKM3-SUMCT1 = LWA_DOC-STVAL.

          WA_CKM3-SUMDIF = LWA_DOC-PRD.

          WA_CKM3-SUMCT2 = WA_CKM3-SUMCT1 + WA_CKM3-SUMDIF.

          COLLECT WA_CKM3 INTO IT_CKM3.

        WHEN OTHERS.

*         ND未分配的场合

*         累计库存

        IF LWA_DOC-CATEG = CNS_ND.

          WA_CKM3-SUMDIF = LWA_DOC-PRD.

          WA_CKM3-SUMCT2 = LWA_DOC-PRD.

          WA_CKM3-OPNDIF = LWA_DOC-PRD.

          WA_CKM3-OPNCT2 = WA_CKM3-OPNDIF.

          COLLECT WA_CKM3 INTO IT_CKM3.

        ENDIF.

      ENDCASE.

      CONTINUE.

    ENDIF.

    CHECK LWA_DOC-RUNREF <> CNS_ACT.

    CASE LWA_DOC-CATEG.

      WHEN CNS_VN.

*       期末库存

        WA_CKM3-EDQTY  = LWA_DOC-QUANT.

        WA_CKM3-EDCT1  = LWA_DOC-STVAL.

        WA_CKM3-EDCT2  = LWA_DOC-STVAL.

        CASE LWA_DOC-PTYP.

          WHEN CNS_VF.                       "消耗 生产

*           消耗 生产

            WA_CKM3-PRDQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-PRDCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-PRDDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-PRDCT2 = WA_CKM3-PRDCT1 + WA_CKM3-PRDDIF.

*           消耗汇总

            WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

            COLLECT WA_CKM3 INTO IT_CKM3.

          WHEN CNS_VK.                       "消耗 成本中心

*           消耗 成本中心

            WA_CKM3-COSTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-COSTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-COSTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-COSTCT2 = WA_CKM3-COSTCT1 + WA_CKM3-COSTDIF.

*           消耗汇总

            WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

            COLLECT WA_CKM3 INTO IT_CKM3.

          WHEN CNS_VP.                       "消耗 项目

*           消耗 项目

            WA_CKM3-ITEMQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-ITEMCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-ITEMDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-ITEMCT2 = WA_CKM3-ITEMCT1 + WA_CKM3-ITEMDIF.

*           消耗汇总

            WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

            COLLECT WA_CKM3 INTO IT_CKM3.

          WHEN CNS_VL.                       "消耗 委外

*           消耗 委外

            WA_CKM3-OTHQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OTHCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OTHDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OTHCT2 = WA_CKM3-OTHCT1 + WA_CKM3-OTHCT2.

*           消耗汇总

            WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

            COLLECT WA_CKM3 INTO IT_CKM3.

          WHEN OTHERS.                         "消耗 其他盘点701 601 物料转移过账等

*           消耗 委外

            WA_CKM3-QITQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-QITCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-QITDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-QITCT2 = WA_CKM3-QITCT1 + WA_CKM3-QITDIF.

*           消耗汇总

            WA_CKM3-OUTQTY = LWA_DOC-QUANT * -1.

            WA_CKM3-OUTCT1 = LWA_DOC-STVAL * -1.

            WA_CKM3-OUTDIF = LWA_DOC-PRD   * -1.

            WA_CKM3-OUTCT2 = WA_CKM3-OUTCT1 + WA_CKM3-OUTDIF.

            COLLECT WA_CKM3 INTO IT_CKM3.

        ENDCASE.

      WHEN CNS_ZU.                            "收货

*       期末库存

        WA_CKM3-EDQTY  = LWA_DOC-QUANT.

        WA_CKM3-EDCT1  = LWA_DOC-STVAL.

        WA_CKM3-EDCT2  = LWA_DOC-STVAL.

*       收货

        WA_CKM3-INQTY = LWA_DOC-QUANT.

        WA_CKM3-INCT1 = LWA_DOC-STVAL.

        WA_CKM3-INDIF = LWA_DOC-PRD.

        WA_CKM3-INCT2 = WA_CKM3-INCT1 + WA_CKM3-INDIF.

*       累计库存

        WA_CKM3-SUMQTY = LWA_DOC-QUANT.

        WA_CKM3-SUMCT1 = LWA_DOC-STVAL.

        WA_CKM3-SUMDIF = LWA_DOC-PRD.

        WA_CKM3-SUMCT2 = WA_CKM3-SUMCT1 + WA_CKM3-SUMDIF.

        COLLECT WA_CKM3 INTO IT_CKM3.

      WHEN OTHERS.

*       PC价格重估的场合

*       累计库存

        IF LWA_DOC-CATEG = CNS_PC.

          WA_CKM3-SUMCT1 = LWA_DOC-STVAL.

          WA_CKM3-SUMDIF = LWA_DOC-PRD.

          WA_CKM3-SUMCT2 = WA_CKM3-SUMCT1 + WA_CKM3-SUMDIF.       "收货

*         期末库存

          WA_CKM3-EDCT1  = LWA_DOC-STVAL.

          WA_CKM3-EDCT2  = LWA_DOC-STVAL.

          COLLECT WA_CKM3 INTO IT_CKM3.

        ENDIF.

    ENDCASE.

  ENDLOOP.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_EDIT_DATA

*&---------------------------------------------------------------------*

*& 数据编辑处理

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_EDIT_DATA .

  DATA:

    LIT_T025T TYPE STANDARD TABLE OF T025T,

    LWA_T025T TYPE T025T,

    LWA_HD TYPE T_HD,

    LWA_KMLCR TYPE CKMLCR,

    LIT_CKM3 TYPE STANDARD TABLE OF T_CKM3.

  SORT IT_HD BY KALNR ASCENDING.

  SELECT *

    FROM T025T

    INTO TABLE LIT_T025T

   WHERE SPRAS = '1'.

  SORT LIT_T025T BY BKLAS ASCENDING.

  SORT IT_KMLCR BY KALNR ASCENDING.

  LIT_CKM3[] = IT_CKM3[].

  REFRESH:IT_CKM3.

  LOOP AT LIT_CKM3 INTO WA_CKM3.

*   取得物料名称

    CLEAR:LWA_HD.

    READ TABLE IT_HD INTO LWA_HD

      WITH KEY KALNR = WA_CKM3-KALNR BINARY SEARCH.

*   取得评估类名称

    CLEAR:LWA_T025T.

    READ TABLE LIT_T025T INTO LWA_T025T

      WITH KEY BKLAS = LWA_HD-BKLAS BINARY SEARCH.

*   取得

    CLEAR:LWA_KMLCR.

    READ TABLE IT_KMLCR INTO LWA_KMLCR

      WITH KEY KALNR = WA_CKM3-KALNR BINARY SEARCH.

    WA_CKM3-COST1 = LWA_KMLCR-STPRS.          "标准价格

    WA_CKM3-COST2 = LWA_KMLCR-PVPRS.          "实际价格

    WA_CKM3-PEINH = LWA_KMLCR-PEINH.          "价格单位

    WA_CKM3-WERKS = LWA_HD-WERKS.

    WA_CKM3-MATNR = LWA_HD-MATNR.

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'

      EXPORTING

        INPUT         = WA_CKM3-MATNR

      IMPORTING

        OUTPUT        = WA_CKM3-MATNR

              .

    WA_CKM3-MAKTX = LWA_HD-MAKTX.

    WA_CKM3-BKLAS = LWA_HD-BKLAS.

    WA_CKM3-BKBEZ = LWA_T025T-BKBEZ.

    APPEND WA_CKM3 TO IT_CKM3.

  ENDLOOP.

  SORT IT_CKM3 BY MATNR ASCENDING.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_OUT_ALV

*&---------------------------------------------------------------------*

*& ALV显示

*&---------------------------------------------------------------------*

*& -->  p1        text

*& 

*&---------------------------------------------------------------------*

FORM FRM_OUT_ALV .

  DATA: LS_LAYOUT TYPE LVC_S_LAYO,

        L_PFST    TYPE  SLIS_FORMNAME,

        L_USCMD   TYPE   SLIS_FORMNAME.

* 设置ALV field

  REFRESH:IT_FIELDCATV.

  PERFORM FRM_SET_DYN_FIELD USING:

*          TEXT-H02 TEXT-D02 ' ' ' ' '45',     "数量单位

          TEXT-H03 TEXT-D03 ' ' ' ' '4',      "工厂

          TEXT-H04 TEXT-D04 ' ' ' ' '6',      "会计年度

          TEXT-H05 TEXT-D05 ' ' ' ' '4',      "期间

          TEXT-H06 TEXT-D06 ' ' 'X' '10',     "物料

          TEXT-H07 TEXT-D07 ' ' ' ' '6',      "物料描述

          TEXT-H08 TEXT-D08 ' ' ' ' '25',     "评估类

          TEXT-H09 TEXT-D09 ' ' ' ' '16',     "评估类描述

          TEXT-H10 TEXT-D10 ' ' ' ' '18',     "标准价格

          TEXT-H11 TEXT-D11 ' ' ' ' '18',     "实际价格

          TEXT-H12 TEXT-D12 ' ' ' ' '18',     "价格单位

          TEXT-H13 TEXT-D13 ' ' ' ' '18',     "期初库存数量

          TEXT-H14 TEXT-D14 ' ' ' ' '18',     "期初标准成本

          TEXT-H15 TEXT-D15 ' ' ' ' '18',     "期初差异金额

          TEXT-H16 TEXT-D16 ' ' ' ' '18',     "期初实际成本

          TEXT-H17 TEXT-D17 ' ' ' ' '18',     "本期收货数量

          TEXT-H18 TEXT-D18 ' ' ' ' '18',     "本期收货标准成本

          TEXT-H19 TEXT-D19 ' ' ' ' '18',     "本期收货差异金额

          TEXT-H20 TEXT-D20 ' ' ' ' '18',     "本期收货实际成本

          TEXT-H21 TEXT-D21 ' ' ' ' '18',     "累计库存数量

          TEXT-H22 TEXT-D22 ' ' ' ' '18',     "累计库存标准成本

          TEXT-H23 TEXT-D23 ' ' ' ' '18',     "累计库存差异金额

          TEXT-H24 TEXT-D24 ' ' ' ' '18',     "累计库存实际成本

          TEXT-H25 TEXT-D25 ' ' ' ' '18',     "消耗数量

          TEXT-H26 TEXT-D26 ' ' ' ' '18',     "消耗标准成本

          TEXT-H27 TEXT-D27 ' ' ' ' '18',     "消耗差异金额

          TEXT-H28 TEXT-D28 ' ' ' ' '18',     "消耗实际成本

          TEXT-H29 TEXT-D29 ' ' ' ' '18',     "生产领用数量

          TEXT-H30 TEXT-D30 ' ' ' ' '18',     "生产领用标准成本

          TEXT-H31 TEXT-D31 ' ' ' ' '18',     "生产领用差异金额

          TEXT-H32 TEXT-D32 ' ' ' ' '18',     "生产领用实际成本

          TEXT-H33 TEXT-D33 ' ' ' ' '18',     "成本中心领用数量

          TEXT-H34 TEXT-D34 ' ' ' ' '18',     "成本中心领用标准成本

          TEXT-H35 TEXT-D35 ' ' ' ' '18',     "成本中心领用差异金额

          TEXT-H36 TEXT-D36 ' ' ' ' '18',     "成本中心领用实际成本

          TEXT-H37 TEXT-D37 ' ' ' ' '18',     "项目领用数量

          TEXT-H38 TEXT-D38 ' ' ' ' '18',     "项目领用标准成本

          TEXT-H39 TEXT-D39 ' ' ' ' '18',     "项目领用差异金额

          TEXT-H40 TEXT-D40 ' ' ' ' '18',     "项目领用实际成本

          TEXT-H41 TEXT-D41 ' ' ' ' '18',     "委外数量

          TEXT-H42 TEXT-D42 ' ' ' ' '18',     "委外标准成本

          TEXT-H43 TEXT-D43 ' ' ' ' '18',     "委外差异金额

          TEXT-H44 TEXT-D44 ' ' ' ' '18',     "委外实际成本

          TEXT-H49 TEXT-D49 ' ' ' ' '18',     "其他数量

          TEXT-H50 TEXT-D50 ' ' ' ' '18',     "其他标准成本

          TEXT-H51 TEXT-D51 ' ' ' ' '18',     "其他差异金额

          TEXT-H52 TEXT-D52 ' ' ' ' '18',     "其他实际成本

          TEXT-H45 TEXT-D45 ' ' ' ' '18',     "期末库存数量

          TEXT-H46 TEXT-D46 ' ' ' ' '18',     "期末库存标准成本

          TEXT-H47 TEXT-D47 ' ' ' ' '18',     "期末库存差异金额

          TEXT-H48 TEXT-D48 ' ' ' ' '18',     "期末库存实际成本

          TEXT-H53 TEXT-D53 ' ' ' ' '18',     "未分配差异金额

          TEXT-H54 TEXT-D54 ' ' ' ' '18',     "未分配实际成本

          TEXT-H01 TEXT-D01 'X' ' ' '6'.      "成本估算编号

  LS_LAYOUT-ZEBRA        = 'X'.               "颜色间隔

  LS_LAYOUT-CWIDTH_OPT   = 'X'.              "自动调整宽度

  LS_LAYOUT-DETAILINIT   = 'X'.

  L_PFST  = 'SET_PF_STATUS' .

  L_USCMD = 'USER_COMMAND' .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

    EXPORTING

      I_CALLBACK_PROGRAM       = SY-CPROG

      IS_LAYOUT_LVC            = LS_LAYOUT

      I_CALLBACK_PF_STATUS_SET = L_PFST

      I_CALLBACK_USER_COMMAND  = L_USCMD

      IT_FIELDCAT_LVC          = IT_FIELDCATV

      I_SAVE                   = CNS_A

    TABLES

      T_OUTTAB                 = IT_CKM3

    EXCEPTIONS

      PROGRAM_ERROR            = 1

      OTHERS                   = 2.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE CNS_S NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 DISPLAY LIKE CNS_E.

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form FRM_SET_DYN_FIELD

*&---------------------------------------------------------------------*

*& text

*&---------------------------------------------------------------------*

*& -->  P_NAME         字段名

*& -->  P_TEXT         字段描述

*& -->  P_ICON         ICON

*& -->  P_HOT          HOT

*& -->  P_LEN          len

*&---------------------------------------------------------------------*

FORM FRM_SET_DYN_FIELD  USING    P_NAME TYPE STRING

                                 P_TEXT TYPE STRING

                                 P_ICON TYPE ANY

                                 P_HOT  TYPE ANY

                                 P_LEN  TYPE ANY.

  DATA:

    LWA_FIELDCATV TYPE LVC_S_FCAT.

  READ TABLE IT_FIELDCATV TRANSPORTING NO FIELDS WITH KEY FIELDNAME = P_NAME.

  CHECK SY-SUBRC NE 0.

  CLEAR:

    LWA_FIELDCATV.

  LWA_FIELDCATV-FIELDNAME = P_NAME .

*  LWA_FIELDCATV-REPTEXT   = P_TEXT.

  LWA_FIELDCATV-SCRTEXT_L = P_TEXT.

  LWA_FIELDCATV-SCRTEXT_M = P_TEXT.

  LWA_FIELDCATV-SCRTEXT_S = P_TEXT.

*  LWA_FIELDCATV-ICON      = P_ICON.

*  LWA_FIELDCATV-HOTSPOT   = P_HOT.

*  LWA_FIELDCATV-OUTPUTLEN = P_LEN.

* 物料编号设置为热键

  IF P_NAME = TEXT-H06.

    LWA_FIELDCATV-HOTSPOT = CNS_X.

    LWA_FIELDCATV-INTTYPE = 'C'.

    LWA_FIELDCATV-INTLEN  = '40'.

  ENDIF.

  APPEND LWA_FIELDCATV TO IT_FIELDCATV.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form set_pf_status

*&---------------------------------------------------------------------*

*& STATUS_SET

*&---------------------------------------------------------------------*

*& -->  rt_extab

*&---------------------------------------------------------------------*

FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'Z_STATUS'

    EXCLUDING RT_EXTAB .

ENDFORM.

*&---------------------------------------------------------------------*

*& Form USER_COMMAND

*&---------------------------------------------------------------------*

*& USER_COMMAND

*&---------------------------------------------------------------------*

*& -->  rt_extab

*&---------------------------------------------------------------------*

FORM USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM

                                   RS_SELFIELD TYPE SLIS_SELFIELD.

  DATA:

    LIT_BDC  TYPE STANDARD TABLE OF BDCDATA,

    LWA_BDC  TYPE BDCDATA,

    L_OPT    TYPE CTU_PARAMS,

    LWA_CKM3 TYPE T_CKM3.

* 点击物料编号,执行CKM3跳转

  IF R_UCOMM = '&IC1' AND RS_SELFIELD-FIELDNAME = TEXT-H06.

    CLEAR:

      LWA_CKM3.

    READ TABLE IT_CKM3 INTO LWA_CKM3 INDEX RS_SELFIELD-TABINDEX .

    IF LWA_CKM3-MATNR IS NOT INITIAL AND

       LWA_CKM3-WERKS IS NOT INITIAL AND

       LWA_CKM3-GJAHR IS NOT INITIAL AND

       LWA_CKM3-MONAT IS NOT INITIAL.

      REFRESH:

        LIT_BDC.

      CLEAR:

        LWA_BDC.

      LWA_BDC-PROGRAM = 'SAPLCKM8H'.

      LWA_BDC-DYNPRO  = '0055'.

      LWA_BDC-DYNBEGIN = CNS_X.

      LWA_BDC-FNAM = 'MLKEY-POPER'.

      LWA_BDC-FVAL = LWA_CKM3-MONAT.

      APPEND LWA_BDC TO LIT_BDC.

      L_OPT-DISMODE = 'E'.

      L_OPT-DEFSIZE = 'X'.

      SET PARAMETER ID 'MAT'  FIELD LWA_CKM3-MATNR.

      SET PARAMETER ID 'WRK'  FIELD LWA_CKM3-WERKS.

      SET PARAMETER ID 'BDTJ' FIELD LWA_CKM3-GJAHR.

      SET PARAMETER ID 'POPR' FIELD LWA_CKM3-MONAT.

*      CALL TRANSACTION 'CKM3' USING lit_bdc

*        AND SKIP FIRST SCREEN.

      TRY.

        CALL TRANSACTION 'CKM3' WITH AUTHORITY-CHECK

                                USING LIT_BDC OPTIONS FROM L_OPT.

        CATCH CX_SY_AUTHORIZATION_ERROR ##NO_HANDLER.

      ENDTRY.

    ENDIF.

  ELSE.

    RS_SELFIELD-REFRESH = 'X'.

  ENDIF.

ENDFORM.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值