物料主数据查询程序代码

*----------------------------------------------------------------------*
* 程序名称:物料主数据查询
* 程序名:  ZMMR_MLST
* 开发日期:2012/03/20
* 创建者:xiaoaman
* 申请者:杨璐
*----------------------------------------------------------------------*
* 概要:  物料主数据查询
*
*         销售视图查询
*         分类视图查询
*         其他数据查询
*         查询和导入模板一致
*----------------------------------------------------------------------*
* 变更记录
*  2012/03/20    DEVK900972
* DESCRIPTION:
*  1.初始开发
* DEVK901254
*增加查询条件:物料类型

*  1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*  2.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*2012/04/11 徐康   DEVK901582
* 修改原因:增加权限检查
*2012/04/11 徐康    DEVK902020
* 修改原因:增加权限检查
*----------------------------------------------------------------------*

 REPORT  zmmr_mlst
         NO STANDARD PAGE HEADING
         LINE-SIZE 255
         LINE-COUNT 65.



 TABLES:mara,makt,marc,mbew,
        klah,inob,swor,kssk,"分类
        mard,"库存地
        mvke,mlan."销售视图

 TYPES:BEGIN OF ty_alv,
   matnr TYPE mara-matnr,"物料编码
   mbrsh TYPE mara-mbrsh,"行业类别
   mtart TYPE mara-mtart,"物料类型
   werks TYPE marc-werks,"工厂
   maktx TYPE makt-maktx,"物料描述
   meins TYPE mara-meins,"基本单位
   matkl TYPE mara-matkl,"物料组
   spart TYPE mara-spart,"产品组
   mstae TYPE mara-mstae,"跨工厂物料状态
   brgew TYPE mara-brgew,"毛重
   gewei TYPE mara-gewei,"重量单位
   ntgew TYPE mara-ntgew,"净重
   "分类
   klart TYPE klah-klart,"类别种类
   class TYPE klah-class,"类别
   stdcl TYPE kssk-stdcl,"标准
 "销售
   vkorg TYPE mvke-vkorg,"销售组织
   vtweg TYPE mvke-vtweg,"分销渠道
   vrkme TYPE mvke-vrkme,"销售单位
   dwerk TYPE mvke-dwerk,"交货工厂
   taxm1 TYPE mlan-taxm1,"物料的税分类
   kondm TYPE mvke-kondm,"物料定价组
   ktgrm TYPE mvke-ktgrm,"科目设置组
   mtpos TYPE mvke-mtpos,"项目类别组
   mvgr1 TYPE mvke-mvgr1,                                   "物料组1
   mvgr2 TYPE mvke-mvgr2,                                   "物料组2
   mvgr3 TYPE mvke-mvgr3,                                   "物料组3
   mvgr4 TYPE mvke-mvgr4,                                   "物料组4
   mvgr5  TYPE mvke-mvgr5,                                  "物料组5
   mtvfp  TYPE marc-mtvfp,"可用性检查
   tragr TYPE mara-tragr,"运输组
   ladgr TYPE marc-ladgr,"装载组
 "
   ekgrp TYPE marc-ekgrp,"采购组
   xchpf TYPE marc-xchpf,"批次管理需求的标识
   kordb TYPE marc-kordb,"源清单标识
   dismm TYPE marc-dismm,"mrp类型
   dispo TYPE marc-dispo,"mrp控制者
   disls TYPE marc-disls,"批量大小
   bstmi TYPE marc-bstmi,"最小批量大小
   bstrf TYPE marc-bstrf,"舍入值
   beskz  TYPE marc-beskz,"采购类型
   sobsl  TYPE marc-sobsl,"特殊采购类
   lgpro  TYPE marc-lgpro,"生产仓储地点
   rgekz  TYPE marc-rgekz,"反冲
   plifz  TYPE marc-plifz,"计划交货时间
   fhori  TYPE marc-fhori,"计划边际码
   eisbe  TYPE marc-eisbe,"安全库存
   strgr TYPE marc-strgr,"策略组
   miskz  TYPE marc-miskz,"综合mrp
 "MTVFP  TYPE MARC-MTVFP,"可用性检查
   altsl  TYPE marc-altsl,"选择方法
   sbdkz  TYPE marc-sbdkz,"独立/集中
   fevor  TYPE marc-fevor,"生产管理员
   sfcpf  TYPE marc-sfcpf,"生产计划参数文件
   ueeto TYPE marc-ueeto,"过量交货允差
   ueetk TYPE marc-ueetk,"无限制交货
   bearz  TYPE marc-bearz,"处理时间
   basmg TYPE marc-basmg,"基准数量
   mhdrz  TYPE mara-mhdrz,"最小货架寿命
   mhdhb TYPE mara-mhdhb,"总货架寿命

   "会计
   bklas  TYPE mbew-bklas,"评估类
   mlast  TYPE mbew-mlast,"价格确定
   vprsv  TYPE mbew-vprsv,"价格控制
   peinh  TYPE mbew-peinh,"价格单位
   bwprs  TYPE mbew-bwprs,"税价1
   ncost  TYPE marc-ncost,"无成本核算
   ekalr  TYPE mbew-ekalr,"用QS的成本估算
   hkmat  TYPE mbew-hkmat,"物料来源
   awsls  TYPE marc-awsls,"差异码
   losgr  TYPE marc-losgr,"成本核算批量
   zplp1  TYPE mbew-zplp1,"计划价格
   zpld1  TYPE mbew-zpld1,"计划价格日期
   verpr  TYPE mbew-verpr,"移动平均价格/周期单价

   "LGORT
   lgort      TYPE mard-lgort,"库存地点
   mara_lvorm TYPE mara-lvorm,"删除标识
   mard_lvorm TYPE mard-lvorm,"删除标识
   marc_lvorm TYPE marc-lvorm,"删除标识
   mbew_lvorm TYPE mbew-lvorm,"删除标识
   mvke_lvorm TYPE mvke-lvorm,"删除标识
   END OF ty_alv.

 TYPES:BEGIN OF ty_mara,
   matnr TYPE mara-matnr,
   tragr TYPE mara-tragr,"运输组
   maktx TYPE makt-maktx,
   lvorm TYPE mara-lvorm,
   mtart TYPE mara-mtart,
   END OF ty_mara.

 TYPES:BEGIN OF ty_inob,
   clint TYPE klah-clint,
   klart TYPE klah-klart,
   class TYPE klah-class,
   obtab TYPE inob-obtab,
   objek TYPE inob-objek,
   objek1 TYPE inob-objek,
   END OF ty_inob.

 TYPES:BEGIN OF ty_kssk,
   objek TYPE kssk-objek,
   klart TYPE kssk-klart,
   clint TYPE kssk-clint,
   stdcl TYPE kssk-stdcl,
   END OF ty_kssk.
 TYPES:BEGIN OF ty_makt,
   matnr TYPE makt-matnr,
   maktx TYPE makt-maktx,
   lvorm TYPE mara-lvorm,
   mtart TYPE mara-mtart,
   END OF ty_makt.

 TYPES:BEGIN OF ty_mbew,
    matnr  TYPE mbew-matnr,
    bwkey  TYPE mbew-bwkey,
    bklas  TYPE mbew-bklas,"评估类
    mlast  TYPE mbew-mlast,"价格确定
    vprsv  TYPE mbew-vprsv,"价格控制
    peinh  TYPE mbew-peinh,"价格单位
    bwprs  TYPE mbew-bwprs,"税价1
    ekalr  TYPE mbew-ekalr,"用QS的成本估算
    hkmat  TYPE mbew-hkmat,"物料来源
    zplp1  TYPE mbew-zplp1,"计划价格
    zpld1  TYPE mbew-zpld1,"计划价格日期
    verpr  TYPE mbew-verpr,"移动平均价格/周期单价
 END OF ty_mbew.

 TYPES:BEGIN OF ty_marc,
   matnr TYPE marc-matnr,
   werks TYPE marc-werks,
   mtvfp TYPE marc-mtvfp,"可用性检查
   ladgr TYPE marc-ladgr,"装载组
   lvorm TYPE marc-lvorm ,
   vkorg TYPE mvke-vkorg,
   END OF ty_marc.

 TYPES:BEGIN OF ty_t001w ,
   werks TYPE t001w-werks,
   vkorg TYPE t001w-vkorg,
   END OF ty_t001w.
****2012/04/11 徐康 规格变更 Ins 修改开始
* 修改原因:增加权限检查
 TYPES:BEGIN OF ty_t001l,
        werks TYPE t001l-werks,
       END OF ty_t001l.

 DATA:it_t001l TYPE TABLE OF ty_t001l,
       wa_t001l TYPE ty_t001l.


 TYPES:BEGIN OF ty_vkoeg,
      vkorg TYPE likp-vkorg  ,"  销售组
      END OF ty_vkoeg.
   DATA:it_vkoeg TYPE TABLE OF ty_vkoeg,
       wa_vkoeg TYPE ty_vkoeg.
****2012/04/11 徐康 规格变更 Ins 修改结束



 DATA:it_alv    TYPE TABLE OF ty_alv,
      wa_alv    TYPE ty_alv,

      it_mara   TYPE TABLE OF ty_mara,
      wa_mara   TYPE ty_mara,
      it_inob   TYPE TABLE OF ty_inob,
      wa_inob   TYPE ty_inob,
      it_kssk   TYPE TABLE OF ty_kssk,
      wa_kssk   TYPE ty_kssk,
      it_makt   TYPE TABLE OF ty_makt,
      wa_makt   TYPE ty_makt,
      it_mbew   TYPE TABLE OF ty_mbew,
      wa_mbew   TYPE ty_mbew,
      it_marc   TYPE TABLE OF ty_marc,
      wa_marc   TYPE ty_marc,
      it_t001w  TYPE TABLE OF ty_t001w,
      wa_t001w  TYPE ty_t001w.
*----------------------------------------------------------------------*
*       ALV参数定义
*----------------------------------------------------------------------*
 DATA: it_fieldcat TYPE lvc_t_fcat,
       it_excluding
                   TYPE slis_t_extab,
       it_events   TYPE slis_t_event,
       wa_fieldcat TYPE lvc_s_fcat,
       wa_layout   TYPE lvc_s_layo,
       wa_sort     TYPE lvc_s_sort,
       it_sort     TYPE lvc_t_sort.
*----------------------------------------------------------------------*
*       Selection Screen
*----------------------------------------------------------------------*
 SELECTION-SCREEN BEGIN OF BLOCK blk_rb WITH FRAME TITLE text-f01.
 PARAMETERS: rb1 RADIOBUTTON GROUP rb DEFAULT 'X'  "基础和其他视图数据
                                   USER-COMMAND scr,
             rb2 RADIOBUTTON GROUP rb,"销售视图
             rb3 RADIOBUTTON GROUP rb,"分类视图
             rb4 RADIOBUTTON GROUP rb."库存地
 SELECTION-SCREEN END OF BLOCK blk_rb.




*----------------------------------------------------------------------*
*       Selection Screen
*----------------------------------------------------------------------*
 SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-f02.
 SELECT-OPTIONS: s_matnr  FOR mara-matnr,
                 s_mtart  FOR mara-mtart,
                 s_werks  FOR marc-werks MODIF ID b1,
                 s_vkorg  FOR mvke-vkorg MODIF ID b2,
                 s_vtweg  FOR mvke-vtweg MODIF ID b2,
                 s_klart  FOR klah-klart DEFAULT '023'
                                         MODIF ID b3,
                 s_class  FOR klah-class DEFAULT 'ZYH_MCH1'
                                         MODIF ID b3,
                 s_werks1 FOR marc-werks MODIF ID b4,
                 s_lgort  FOR mard-lgort MODIF ID b4.


 SELECTION-SCREEN END OF BLOCK blk.

 AT SELECTION-SCREEN.


 AT SELECTION-SCREEN OUTPUT.
   LOOP AT SCREEN.
     IF screen-group1 IS NOT INITIAL.
       CASE screen-group1.
         WHEN 'B1'.
           IF rb1 = 'X'.
             screen-active = '1'.
           ELSE.
             screen-active = '0'.
           ENDIF.
           MODIFY SCREEN.
         WHEN 'B2'.
           IF rb2 = 'X'.
             screen-active = '1'.
           ELSE.
             screen-active = '0'.
           ENDIF.
           MODIFY SCREEN.

         WHEN 'B3'.
           IF rb3 = 'X'.
             screen-active = '1'.
           ELSE.
             screen-active = '0'.
           ENDIF.
           MODIFY SCREEN.

         WHEN 'B4'.
           IF rb4 = 'X'.
             screen-active = '1'.
           ELSE.
             screen-active = '0'.
           ENDIF.
           MODIFY SCREEN.
       ENDCASE.
     ENDIF.
   ENDLOOP.


 START-OF-SELECTION.

   IF rb1 EQ 'X'.
****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查        "检查【工厂】
   FREE:it_t001l.
   SELECT werks
         INTO TABLE it_t001l
         FROM t001w
         WHERE werks IN s_werks.
   sort it_t001l by werks.
   DELETE ADJACENT DUPLICATES FROM it_t001l COMPARING ALL FIELDS.
   LOOP AT it_t001l INTO wa_t001l.
     AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
        ID 'WERKS' FIELD wa_t001l-werks
        ID 'ACTVT' DUMMY
        .
    IF sy-subrc <> 0.
      "MESSAGE e054(ZMM_DEV) WITH wa_t001l-werks.
    else.
      DELETE TABLE it_t001l from wa_t001l.
    ENDIF.
   ENDLOOP.
  SORT it_t001l  by werks.
******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束

     PERFORM frm_get_base.
   ENDIF.


   IF rb2 EQ 'X'.
****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查
   free:it_vkoeg.
   SELECT vkorg
       FROM TVKO
       INTO TABLE it_vkoeg
       WHERE vkorg IN s_vkorg.

   DELETE ADJACENT DUPLICATES FROM it_vkoeg COMPARING ALL FIELDS.
   LOOP AT it_vkoeg INTO wa_vkoeg.
     AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
         ID 'VKORG' FIELD  wa_vkoeg-vkorg .
     IF sy-subrc <> 0.
*       MESSAGE e092(zsd_dev) WITH wa_vkoeg-vkorg.
    else.
      DELETE TABLE it_vkoeg from wa_vkoeg.
    ENDIF.
   ENDLOOP.

  SORT it_vkoeg  by VKORG.

******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束
     PERFORM frm_get_mvke.
   ENDIF.

   IF rb3 EQ 'X'.
     PERFORM frm_get_class.
   ENDIF.

   IF rb4 EQ 'X'.
****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查        "检查【工厂】
   FREE:it_t001l.
   SELECT werks
         INTO TABLE it_t001l
         FROM t001w
         WHERE werks IN s_werks.
   sort it_t001l by werks.
   DELETE ADJACENT DUPLICATES FROM it_t001l COMPARING ALL FIELDS.
   LOOP AT it_t001l INTO wa_t001l.
     AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
        ID 'WERKS' FIELD wa_t001l-werks
        ID 'ACTVT' DUMMY
        .
    IF sy-subrc <> 0.
      "MESSAGE e054(ZMM_DEV) WITH wa_t001l-werks.
    else.
      DELETE TABLE it_t001l from wa_t001l.
    ENDIF.
   ENDLOOP.
  SORT it_t001l  by werks.
******检查结束
******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束
     PERFORM frm_get_mard.
   ENDIF.

   IF it_alv IS INITIAL.
     MESSAGE s002(zmm_dev).
     LEAVE LIST-PROCESSING .
   ENDIF.
   PERFORM frm_init_layout.
   PERFORM frm_init_fieldcat.
   PERFORM frm_event_build.
   PERFORM frm_alv_output.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_BASE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_get_base .
   SELECT
    mara~matnr"物料编码
    mara~mbrsh"行业类别
    mara~mtart"物料类型
    marc~werks"工厂
    makt~maktx"物料描述
    mara~meins"基本单位
    mara~matkl"物料组
    mara~spart"产品组
    mara~mstae"跨工厂物料状态
    mara~brgew"毛重
    mara~gewei"重量单位
    mara~ntgew"净重
    marc~ekgrp"采购组
    marc~xchpf"批次管理需求的标识
    marc~kordb"源清单标识
    marc~dismm"mrp类型
    marc~dispo"mrp控制者
    marc~disls"批量大小
    marc~bstmi"最小批量大小
    marc~bstrf"舍入值
    marc~beskz"采购类型
    marc~sobsl"特殊采购类
    marc~lgpro"生产仓储地点
    marc~rgekz"反冲
    marc~plifz"计划交货时间
    marc~fhori"计划边际码
    marc~eisbe"安全库存
    marc~strgr"策略组
    marc~miskz"综合mrp
    marc~mtvfp"可用性检查
    marc~altsl"选择方法
    marc~sbdkz"独立/集中
    marc~fevor"生产管理员
    marc~sfcpf"生产计划参数文件
    marc~ueeto"过量交货允差
    marc~ueetk"无限制交货
    marc~bearz"处理时间
    marc~basmg"基准数量
    mara~mhdrz"最小货架寿命
    mara~mhdhb"总货架寿命
    marc~ncost "无成本核算
    marc~awsls "差异码
    marc~losgr "成本核算批量
    mara~lvorm AS mara_lvorm"删除标识
    marc~lvorm AS marc_lvorm" 删除标识
    INTO CORRESPONDING FIELDS OF TABLE it_alv
    FROM mara INNER JOIN marc ON marc~matnr EQ mara~matnr
     LEFT JOIN makt ON makt~matnr EQ mara~matnr AND
                       makt~spras EQ sy-langu
    WHERE mara~matnr IN s_matnr AND
          mara~mtart IN s_mtart AND
          marc~matnr IN s_matnr AND
          marc~werks IN s_werks.

*   ****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查        "检查【工厂】
  LOOP AT it_alv INTO wa_alv.
    READ TABLE it_t001l  INTO wa_t001l WITH KEY werks = wa_alv-werks
BINARY SEARCH.
    IF sy-subrc EQ 0.
      DELETE TABLE it_alv FROM wa_alv.
    ENDIF.
  ENDLOOP.
   FREE it_t001l.
******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束
   IF it_alv IS INITIAL.
     MESSAGE s002(zmm_dev).
     LEAVE LIST-PROCESSING .
   ENDIF.



   "权限检查是否有财务视图权限
   "CODE
   "会计
   AUTHORITY-CHECK OBJECT 'M_MATE_STA'
                ID 'ACTVT' DUMMY
                ID 'STATM' FIELD 'B'."显示财务视图

   CHECK sy-subrc EQ 0.
   SELECT
    mbew~matnr
    mbew~bwkey
    mbew~bklas"评估类
    mbew~mlast"价格确定
    mbew~vprsv"价格控制
    mbew~peinh"价格单位
    mbew~bwprs"税价1
    mbew~ekalr"用QS的成本估算
    mbew~hkmat"物料来源
    mbew~zplp1"计划价格
    mbew~zpld1"计划价格日期
    mbew~verpr"移动平均价格/周期单价
   INTO TABLE it_mbew
   FROM mbew
   WHERE mbew~matnr IN s_matnr AND
         mbew~bwkey IN s_werks.

   SORT it_mbew BY matnr bwkey.

   CHECK it_mbew IS NOT INITIAL.

   LOOP AT it_alv INTO wa_alv.
     READ TABLE it_mbew INTO wa_mbew WITH KEY matnr = wa_alv-matnr
                                              bwkey = wa_alv-werks
                                              BINARY SEARCH.
     IF sy-subrc EQ 0.
       wa_alv-bklas = wa_mbew-bklas.
       wa_alv-mlast = wa_mbew-mlast.
       wa_alv-vprsv = wa_mbew-vprsv.
       wa_alv-peinh = wa_mbew-peinh.
       wa_alv-bwprs = wa_mbew-bwprs.
       wa_alv-ekalr = wa_mbew-ekalr.
       wa_alv-hkmat = wa_mbew-hkmat.
       wa_alv-zplp1 = wa_mbew-zplp1.
       wa_alv-zpld1 = wa_mbew-zpld1.
       wa_alv-verpr = wa_mbew-verpr.

       MODIFY it_alv FROM wa_alv.
     ENDIF.
     CLEAR:wa_alv,wa_mbew.
   ENDLOOP.
   FREE it_mbew.

 ENDFORM.                    " FRM_GET_BASE
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_MVKE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_get_mvke .
   SELECT
    mvke~matnr
    mvke~vkorg"销售组织
    mvke~vtweg"分销渠道
    mvke~vrkme"销售单位
    mvke~dwerk"交货工厂
    mlan~taxm1"物料的税分类
    mvke~kondm"物料定价组
    mvke~ktgrm"科目设置组
    mvke~mtpos"项目类别组
    mvke~mvgr1                                              "物料组1
    mvke~mvgr2                                              "物料组2
    mvke~mvgr3                                              "物料组3
    mvke~mvgr4                                              "物料组4
    mvke~mvgr5
    mvke~lvorm AS mvke_lvorm "删除标示
*    marc~mtvfp"可用性检查
*    "MARA~TRAGR"运输组
*    marc~ladgr"装载组
*    marc~lvorm as marc_lvorm

   INTO CORRESPONDING FIELDS OF TABLE it_alv
   FROM mvke LEFT JOIN mlan ON mlan~matnr EQ mvke~matnr AND
                               mlan~aland EQ 'CN'
*             LEFT JOIN marc ON marc~matnr EQ mvke~matnr AND
*                               marc~werks EQ mvke~dwerk
     WHERE mvke~vkorg IN s_vkorg AND
           mvke~vtweg IN s_vtweg AND
           mvke~matnr IN s_matnr.
****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查
  LOOP AT it_alv INTO wa_alv.
    READ TABLE it_vkoeg  INTO wa_vkoeg WITH KEY vkorg = wa_alv-vkorg
BINARY SEARCH.
    IF sy-subrc EQ 0.
      DELETE TABLE it_alv FROM wa_alv.
    ENDIF.
  ENDLOOP.
  SORT it_vkoeg  by VKORG.
******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束
   IF it_alv IS INITIAL.
     MESSAGE s002(zmm_dev).
     LEAVE LIST-PROCESSING .
   ENDIF.

*   SELECT t001w~werks
*          t001w~vkorg
*     INTO TABLE it_t001w
*     FROM t001w
*     WHERE t001w~vkorg IN s_vkorg.

  " IF it_t001w IS NOT INITIAL.
     SELECT marc~matnr
            marc~werks
            marc~mtvfp"可用性检查
            marc~ladgr"装载组
            marc~lvorm
       INTO TABLE it_marc
       FROM marc
      " FOR ALL ENTRIES IN it_t001w
       WHERE marc~matnr IN s_matnr ."AND
     "        marc~werks EQ it_t001w-werks.

"   ENDIF.





   SELECT mara~matnr
          mara~tragr
          makt~maktx
          mara~lvorm
          mara~mtart
     INTO TABLE it_mara
     FROM mara LEFT JOIN makt ON makt~matnr EQ mara~matnr AND
                                 makt~spras EQ sy-langu
     WHERE mara~matnr IN s_matnr AND
           mara~mtart IN s_mtart.
   SORT it_mara BY matnr.
   SORT it_marc BY werks matnr.
   LOOP AT it_alv INTO wa_alv.

    " READ TABLE it_t001w INTO wa_t001w WITH KEY vkorg = wa_alv-vkorg.


     READ TABLE it_marc INTO wa_marc WITH KEY werks = wa_alv-dwerk
                                              matnr = wa_alv-matnr
                                              BINARY SEARCH.


     wa_alv-mtvfp = wa_marc-mtvfp.
     wa_alv-ladgr = wa_marc-ladgr.
     wa_alv-marc_lvorm = wa_marc-lvorm.
     READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_alv-matnr
                                              BINARY SEARCH.
     IF sy-subrc EQ 0.
       wa_alv-tragr = wa_mara-tragr.
       wa_alv-maktx = wa_mara-maktx.
       wa_alv-mara_lvorm = wa_mara-lvorm.
       wa_alv-mtart = wa_mara-mtart.
       MODIFY it_alv FROM wa_alv .
     ELSE.

       DELETE it_alv.
     ENDIF.
     CLEAR:wa_alv,wa_mara.
   ENDLOOP.


   FREE:it_mara,it_t001w,it_marc.


 ENDFORM.                    " FRM_GET_MVKE
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_CLASS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_get_class .

   SELECT
       klah~clint
       klah~klart
       klah~class
       inob~obtab
       inob~objek
       inob~cuobj AS objek1
   INTO CORRESPONDING FIELDS OF TABLE it_inob
     FROM inob  INNER  JOIN klah ON klah~klart EQ inob~klart
     WHERE inob~objek IN s_matnr AND
           inob~klart IN s_klart AND
           klah~class IN s_class AND
           inob~obtab EQ 'MARA'.

   IF it_inob IS INITIAL.
     MESSAGE s002(zmm_dev).
     LEAVE LIST-PROCESSING .
   ENDIF.



   SELECT
      kssk~objek
      kssk~klart
      kssk~clint
      kssk~stdcl
     INTO TABLE it_kssk
     FROM kssk
     FOR ALL ENTRIES IN it_inob
     WHERE kssk~objek EQ it_inob-objek1 AND
           kssk~klart EQ it_inob-klart  AND
           kssk~clint EQ it_inob-clint.


   SELECT makt~matnr
          makt~maktx
          mara~lvorm
          mara~mtart
     INTO TABLE it_makt
     FROM mara LEFT JOIN makt ON makt~matnr EQ mara~matnr AND
                                 makt~spras EQ sy-langu
     WHERE  mara~matnr IN s_matnr AND
            mara~mtart IN s_mtart.

   SORT it_makt BY matnr.
   SORT it_kssk BY objek klart clint.
   LOOP AT it_inob INTO wa_inob.
     wa_alv-matnr = wa_inob-objek.
     wa_alv-klart = wa_inob-klart.
     wa_alv-class = wa_inob-class.

     READ TABLE it_kssk INTO wa_kssk WITH KEY objek = wa_inob-objek1
                                              klart = wa_inob-klart
                                              clint = wa_inob-clint
                                              BINARY SEARCH.
     IF sy-subrc EQ 0.
       wa_alv-stdcl = wa_kssk-stdcl.
     ENDIF.

     READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_alv-matnr
                                              BINARY SEARCH.
     IF sy-subrc EQ 0.
       wa_alv-maktx = wa_makt-maktx.
       wa_alv-mtart = wa_makt-mtart.
       wa_alv-mara_lvorm = wa_makt-lvorm.
       APPEND wa_alv TO it_alv.
     ENDIF.



     CLEAR:wa_alv,wa_inob,wa_kssk.

   ENDLOOP.

   FREE: it_kssk,it_inob,it_makt.



 ENDFORM.                    " FRM_GET_CLASS
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_MARD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_get_mard .
   SELECT mard~matnr
          mard~werks
          mard~lgort
          mard~lvorm AS mard_lvorm
   "       MAKT~MAKTX
     INTO CORRESPONDING FIELDS OF TABLE it_alv
     FROM mard "LEFT JOIN MAKT ON MAKT~MATNR EQ MARD~MATNR AND
                "                 MAKT~SPRAS EQ SY-LANGU
     WHERE mard~werks IN s_werks1 AND
           mard~lgort IN s_lgort  AND
           mard~matnr IN s_matnr.
****2012/04/11 徐康 规格变更 Ins 修改开始
******在此进行权限对象的检查        "检查【工厂】
  LOOP AT it_alv INTO wa_alv.
    READ TABLE it_t001l  INTO wa_t001l WITH KEY werks = wa_alv-werks
BINARY SEARCH.
    IF sy-subrc EQ 0.
      DELETE TABLE it_alv FROM wa_alv.
    ENDIF.
  ENDLOOP.
   FREE it_t001l.
******检查结束
****2012/04/11 徐康 规格变更 Ins 修改结束
   IF it_alv IS INITIAL.
     MESSAGE s002(zmm_dev).
     LEAVE LIST-PROCESSING .
   ENDIF.


****2012/4/12 张显 规格变更 Ins 修改开始
* 修改原因:查询工厂删除视图标记
    SELECT  marc~matnr
            marc~werks
            marc~mtvfp"可用性检查
            marc~ladgr"装载组
            marc~lvorm
       INTO TABLE it_marc
       FROM marc

       WHERE  marc~werks in s_werks1 and
              marc~matnr IN s_matnr .

****2012/4/12 张显 规格变更 Ins 修改结束




   SELECT makt~matnr
          makt~maktx
          mara~lvorm
          mara~mtart
  INTO TABLE it_makt
  FROM mara LEFT JOIN makt ON makt~matnr EQ mara~matnr AND
                              makt~spras EQ sy-langu
  WHERE  mara~matnr IN s_matnr AND
         mara~mtart IN s_mtart.
   SORT it_makt BY matnr.
   sort it_marc by werks matnr.

   LOOP AT it_alv INTO wa_alv.
     READ TABLE it_marc INTO wa_marc with key werks = wa_alv-werks
                                              matnr = wa_alv-matnr
                                              BINARY SEARCH.
     wa_alv-marc_lvorm = wa_marc-lvorm.

     READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_alv-matnr
                                              BINARY SEARCH.

       wa_alv-maktx = wa_makt-maktx.
       wa_alv-mtart = wa_makt-mtart.
       wa_alv-mara_lvorm = wa_makt-lvorm.
       MODIFY it_alv FROM wa_alv .

     CLEAR:wa_alv,wa_makt,wa_marc.
   ENDLOOP.

   FREE: it_makt,it_marc.
 ENDFORM.                    " FRM_GET_MARD
*&---------------------------------------------------------------------*
*&      Form  FRM_INIT_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_init_layout .
   wa_layout-zebra = 'X'.
   wa_layout-cwidth_opt = 'X'.
   wa_layout-detailinit = 'X'.
   " WA_LAYOUT-BOX_FNAME  = 'BOX'.
 ENDFORM.                    " FRM_INIT_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  FRM_INIT_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_init_fieldcat .
   FREE it_fieldcat.


   wa_fieldcat-fieldname = 'MATNR'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'MATNR'.
   wa_fieldcat-hotspot   = 'X'.
   wa_fieldcat-coltext =  text-001.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.


   wa_fieldcat-fieldname = 'MTART'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'MTART'.
   wa_fieldcat-coltext =  text-003.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.

   IF rb1 EQ 'X'.
     wa_fieldcat-fieldname = 'MBRSH'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MBRSH'.
     wa_fieldcat-coltext =  text-002.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.



     wa_fieldcat-fieldname = 'WERKS'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'WERKS'.
     wa_fieldcat-coltext =  text-004.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.
   ENDIF.
   wa_fieldcat-fieldname = 'MAKTX'.
   wa_fieldcat-ref_table = 'MAKT'.
   wa_fieldcat-ref_field = 'MAKTX'.
   wa_fieldcat-coltext =  text-005.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.


   IF rb1 EQ 'X'.
     wa_fieldcat-fieldname = 'MEINS'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MEINS'.
     wa_fieldcat-coltext =  text-006.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MATKL'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MATKL'.
     wa_fieldcat-coltext =  text-007.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'SPART'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'SPART'.
     wa_fieldcat-coltext =  text-008.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MSTAE'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MSTAE'.
     wa_fieldcat-coltext =  text-009.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BRGEW'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'BRGEW'.
     wa_fieldcat-coltext =  text-010.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'GEWEI'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'GEWEI'.
     wa_fieldcat-coltext =  text-011.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'NTGEW'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'NTGEW'.
     wa_fieldcat-coltext =  text-012.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.
   ENDIF.

   IF rb3 EQ 'X'.
     wa_fieldcat-fieldname = 'KLART'.
     wa_fieldcat-ref_table = 'KLAH'.
     wa_fieldcat-ref_field = 'KLART'.
     wa_fieldcat-coltext =  text-013.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'CLASS'.
     wa_fieldcat-ref_table = 'KLAH'.
     wa_fieldcat-ref_field = 'CLASS'.
     wa_fieldcat-coltext =  text-014.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'STDCL'.
     wa_fieldcat-ref_table = 'KSSK'.
     wa_fieldcat-ref_field = 'STDCL'.
     wa_fieldcat-coltext =  text-015.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

   ENDIF.

   IF rb2 EQ 'X'.
*********************************销售
     wa_fieldcat-fieldname = 'VKORG'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'VKORG'.
     wa_fieldcat-coltext =  text-016.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'VTWEG'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'VTWEG'.
     wa_fieldcat-coltext =  text-017.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'VRKME'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'VRKME'.
     wa_fieldcat-coltext =  text-018.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'DWERK'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'DWERK'.
     wa_fieldcat-coltext =  text-019.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'TAXM1'.
     wa_fieldcat-ref_table = 'MLAN'.
     wa_fieldcat-ref_field = 'TAXM1'.
     wa_fieldcat-coltext =  text-020.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'KONDM'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'KONDM'.
     wa_fieldcat-coltext =  text-021.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'KTGRM'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'KTGRM'.
     wa_fieldcat-coltext =  text-022.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MTPOS'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MTPOS'.
     wa_fieldcat-coltext =  text-023.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MVGR1'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MVGR1'.
     wa_fieldcat-coltext =  text-024.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MVGR2'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MVGR2'.
     wa_fieldcat-coltext =  text-025.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MVGR3'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MVGR3'.
     wa_fieldcat-coltext =  text-026.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MVGR4'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MVGR4'.
     wa_fieldcat-coltext =  text-027.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MVGR5'.
     wa_fieldcat-ref_table = 'MVKE'.
     wa_fieldcat-ref_field = 'MVGR5'.
     wa_fieldcat-coltext =  text-028.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MTVFP'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'MTVFP'.
     wa_fieldcat-coltext =  text-029.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'TRAGR'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'TRAGR'.
     wa_fieldcat-coltext =  text-030.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'LADGR'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'LADGR'.
     wa_fieldcat-coltext =  text-031.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.
******************************************
   ENDIF.

   IF rb1 EQ 'X'.
     wa_fieldcat-fieldname = 'EKGRP'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'EKGRP'.
     wa_fieldcat-coltext =  text-032.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'XCHPF'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'XCHPF'.
     wa_fieldcat-coltext =  text-077.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'KORDB'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'KORDB'.
     wa_fieldcat-coltext =  text-033.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'DISMM'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'DISMM'.
     wa_fieldcat-coltext =  text-034.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'DISPO'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'DISPO'.
     wa_fieldcat-coltext =  text-035.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'DISLS'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'DISLS'.
     wa_fieldcat-coltext =  text-036.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BSTMI'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'BSTMI'.
     wa_fieldcat-coltext =  text-037.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BSTRF'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'BSTRF'.
     wa_fieldcat-coltext =  text-038.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BESKZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'BESKZ'.
     wa_fieldcat-coltext =  text-039.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'SOBSL'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'SOBSL'.
     wa_fieldcat-coltext =  text-040.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'LGPRO'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'LGPRO'.
     wa_fieldcat-coltext =  text-041.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'RGEKZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'RGEKZ'.
     wa_fieldcat-coltext =  text-042.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'PLIFZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'PLIFZ'.
     wa_fieldcat-coltext =  text-043.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'FHORI'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'FHORI'.
     wa_fieldcat-coltext =  text-044.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'EISBE'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'EISBE'.
     wa_fieldcat-coltext =  text-045.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'STRGR'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'STRGR'.
     wa_fieldcat-coltext =  text-046.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MISKZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'MISKZ'.
     wa_fieldcat-coltext =  text-047.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MTVFP'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'MTVFP'.
     wa_fieldcat-coltext =  text-048.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'ALTSL'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'ALTSL'.
     wa_fieldcat-coltext =  text-049.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'SBDKZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'SBDKZ'.
     wa_fieldcat-coltext =  text-050.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'FEVOR'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'FEVOR'.
     wa_fieldcat-coltext =  text-051.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'SFCPF'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'SFCPF'.
     wa_fieldcat-coltext =  text-052.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'UEETO'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'UEETO'.
     wa_fieldcat-coltext =  text-053.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'UEETK'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'UEETK'.
     wa_fieldcat-coltext =  text-054.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BEARZ'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'BEARZ'.
     wa_fieldcat-coltext =  text-055.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'BASMG'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'BASMG'.
     wa_fieldcat-coltext =  text-056.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

     wa_fieldcat-fieldname = 'MHDRZ'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MHDRZ'.
     wa_fieldcat-coltext =  text-057.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'MHDHB'.
     wa_fieldcat-ref_table = 'MARA'.
     wa_fieldcat-ref_field = 'MHDHB'.
     wa_fieldcat-coltext =  text-058.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.
     "财务
     "权限检查

     "AND 权限检查

     AUTHORITY-CHECK OBJECT 'M_MATE_STA'
                ID 'ACTVT' DUMMY
                ID 'STATM' FIELD 'B'."显示财务视图

     IF sy-subrc EQ 0.
       wa_fieldcat-fieldname = 'BKLAS'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'BKLAS'.
       wa_fieldcat-coltext =  text-059.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'MLAST'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'MLAST'.
       wa_fieldcat-coltext =  text-060.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'VPRSV'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'VPRSV'.
       wa_fieldcat-coltext =  text-061.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'PEINH'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'PEINH'.
       wa_fieldcat-coltext =  text-062.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'BWPRS'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'BWPRS'.
       wa_fieldcat-coltext =  text-063.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'NCOST'.
       wa_fieldcat-ref_table = 'MARC'.
       wa_fieldcat-ref_field = 'NCOST'.
       wa_fieldcat-coltext =  text-064.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'EKALR'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'EKALR'.
       wa_fieldcat-coltext =  text-065.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'HKMAT'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'HKMAT'.
       wa_fieldcat-coltext =  text-066.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'AWSLS'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'MLAST'.
       wa_fieldcat-coltext =  text-067.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'LOSGR'.
       wa_fieldcat-ref_table = 'MARC'.
       wa_fieldcat-ref_field = 'LOSGR'.
       wa_fieldcat-coltext =  text-068.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'ZPLP1'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'ZPLP1'.
       wa_fieldcat-coltext =  text-069.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'ZPLD1'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'ZPLD1'.
       wa_fieldcat-coltext =  text-070.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.

       wa_fieldcat-fieldname = 'VERPR'.
       wa_fieldcat-ref_table = 'MBEW'.
       wa_fieldcat-ref_field = 'VERPR'.
       wa_fieldcat-coltext =  text-078.
       APPEND wa_fieldcat TO it_fieldcat.
       CLEAR wa_fieldcat.
     ENDIF.

   ENDIF.

   IF rb4 EQ 'X'.
     wa_fieldcat-fieldname = 'WERKS'.
     wa_fieldcat-ref_table = 'MARC'.
     wa_fieldcat-ref_field = 'WERKS'.
     wa_fieldcat-hotspot   = 'X'.
     wa_fieldcat-coltext =  text-004.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.


     wa_fieldcat-fieldname = 'LGORT'.
     wa_fieldcat-ref_table = 'MARD'.
     wa_fieldcat-ref_field = 'LGORT'.
     wa_fieldcat-coltext =  text-071.
     APPEND wa_fieldcat TO it_fieldcat.
     CLEAR wa_fieldcat.

   ENDIF.


   wa_fieldcat-fieldname = 'MARA_LVORM'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'LVORM'.
   wa_fieldcat-coltext =  text-072.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MARD_LVORM'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'LVORM'.
   wa_fieldcat-coltext =  text-073.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MARC_LVORM'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'LVORM'.
   wa_fieldcat-coltext =  text-074.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MBEW_LVORM'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'LVORM'.
   wa_fieldcat-coltext =  text-075.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MVKE_LVORM'.
   wa_fieldcat-ref_table = 'MARA'.
   wa_fieldcat-ref_field = 'LVORM'.
   wa_fieldcat-coltext =  text-076.
   APPEND wa_fieldcat TO it_fieldcat.
   CLEAR wa_fieldcat.
 ENDFORM.                    " FRM_INIT_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  FRM_EVENT_BUILD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_event_build .
   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
     EXPORTING
       i_list_type = 4
     IMPORTING
       et_events   = it_events.
   DELETE it_events WHERE form IS INITIAL.
 ENDFORM.                    " FRM_EVENT_BUILD
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
 FORM frm_alv_output .
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
     EXPORTING
       i_callback_program       = sy-repid
*      I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
       i_callback_user_command  = 'ALV_USER_COMMAND'
       is_layout_lvc            = wa_layout
       it_fieldcat_lvc          = it_fieldcat
       it_excluding             = it_excluding
       i_default                = 'X'
       i_save                   = 'A'
       it_events                = it_events
       it_sort_lvc              = it_sort
     TABLES
       t_outtab                 = it_alv
     EXCEPTIONS
       program_error            = 1
       OTHERS                   = 2.
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ENDIF.
 ENDFORM.                    " FRM_ALV_OUTPUT

*----------------------------------------------------------------------*
*       FORM user_command                                              *
*----------------------------------------------------------------------*
 FORM alv_user_command  USING r_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.

* 响应用户操作
   CASE r_ucomm.
     WHEN '&IC1'."hotspot响应
       IF rs_selfield-value IS NOT INITIAL.
         CASE rs_selfield-fieldname.

           WHEN 'MATNR'.
             SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
             CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
           WHEN 'WERKS'.
             READ TABLE it_alv INTO wa_alv INDEX rs_selfield-tabindex.

             IF sy-subrc EQ 0.

               SET PARAMETER ID 'MAT' FIELD wa_alv-matnr.
               SET PARAMETER ID 'WRK' FIELD wa_alv-werks.
               CALL TRANSACTION 'MMSC' AND SKIP FIRST SCREEN.
             ENDIF.

           WHEN OTHERS.
             r_ucomm = '&ETA'.
         ENDCASE.
       ELSE.
         r_ucomm = '&ETA'.
       ENDIF.

   ENDCASE.
 ENDFORM.                    "ALV_USER_COMMAND

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小啊曼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值