MM-物料的资源清单(开发笔记)

本博客详细介绍了如何使用 SAP ABAP 开发物料资源清单报表,包括数据选择、结构化查询、内部表操作及 ALV 控件的设置过程。通过实际案例,展示了如何从多个 SAP 核心数据库表中提取数据,并将其格式化为易于阅读的 ALV 格式。

*&---------------------------------------------------------------------*
*& Report ZMMR120
*&---------------------------------------------------------------------*
*& Author              :  NathanSun
*& Create Date         :  2019-09-23
*& Program Type        :  Report
*& Description         :  物料的资源清单
*&---------------------------------------------------------------------*
REPORT ZMMR120.
*&---------------------------------------------------------------------*
*& 包含               YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:EORD,MARC,MARA,ZTMJCP,ZTMJZD.

TYPE-POOLS:SLIS,T001W.

"定义ALV输出所需变量
DATAS_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

*----- Interne Tabellen für Orderbuch ---------------------------------*
TYPESBEGIN OF GTS_DATA .
    INCLUDE STRUCTURE EORD.
TYPES:  MAKTX      TYPE  MAKT-MAKTX.                      "物料描述
TYPES:  NAME1      TYPE  LFA1-NAME1.                      "供应商名称1
TYPES:  NAME2      TYPE  LFA1-NAME2.                      "供应商名称2
TYPES:  NAME3      TYPE  CHAR70.                          "供应商名称
TYPES:  MATKL      TYPE  MARA-MATKL.                      "物料组
TYPES:  WGBEZ60    TYPE  T023T-WGBEZ60.                   "物料组描述
TYPES:  DISPO      TYPE  MARC-DISPO.                      "MRP控制员
TYPES:  DSNAM      TYPE  T024D-DSNAM.                     "MRP控制员描述
TYPESEND OF GTS_DATA.

DATAGT_DATA    TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_A  TYPE TABLE OF GTS_DATA WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONSS_MATNR FOR EORD-MATNR .
SELECT-OPTIONSS_WERKS FOR EORD-WERKS .
SELECT-OPTIONSS_DISPO FOR MARC-DISPO .
SELECT-OPTIONSS_LIFNR FOR EORD-LIFNR .
SELECT-OPTIONSS_MATKL FOR MARA-MATKL .
SELECTION-SCREEN END OF BLOCK B1.

*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
  CLEAR GT_DATA[] .
  SELECT
    EORD~MATNR
    EORD
~MATNR
    EORD
~WERKS
    EORD
~ZEORD
    EORD
~ERDAT
    EORD
~ERNAM
    EORD
~VDATU
    EORD
~BDATU
    EORD
~LIFNR
    EORD
~FLIFN
    EORD
~EBELN
    EORD
~EBELP
    EORD
~FEBEL
    EORD
~RESWK
    EORD
~FRESW
    EORD
~EMATN
    EORD
~NOTKZ
    EORD
~EKORG
    EORD
~VRTYP
    EORD
~EORTP
    EORD
~AUTET
    EORD
~MEINS
    EORD
~LOGSY
    EORD
~SOBKZ
    MARA
~MATKL
    MARC
~DISPO
    
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
    
FROM EORD
    INNER 
JOIN MARC ON EORD~MATNR MARC~MATNR AND EORD~WERKS MARC~WERKS
    INNER 
JOIN MARA ON EORD~MATNR MARA~MATNR
    
WHERE EORD~MATNR IN S_MATNR
      
AND EORD~WERKS IN S_WERKS
      
AND EORD~LIFNR IN S_LIFNR
      
AND MARA~MATKL IN S_MATKL
      
AND MARC~DISPO IN S_DISPO
      
.

  LOOP AT GT_DATA.
    SELECT SINGLE MAKTX INTO GT_DATA-MAKTX FROM MAKT
      
WHERE MATNR GT_DATA-MATNR
      
.
    SELECT SINGLE NAME1 NAME2 INTO GT_DATA-NAME1GT_DATA-NAME2 FROM LFA1
      
WHERE LIFNR GT_DATA-LIFNR
      
.
    SELECT SINGLE WGBEZ60 INTO GT_DATA-WGBEZ60 FROM T023T
      
WHERE MATKL GT_DATA-MATKL
      
.
    SELECT SINGLE DSNAM INTO GT_DATA-DSNAM FROM T024D
      
WHERE DISPO GT_DATA-DISPO
      
.
    GT_DATA-NAME3 GT_DATA-NAME1 && GT_DATA-NAME2 .
    MODIFY GT_DATA .
    CLEAR GT_DATA .
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
  CLEAR S_LAYOUT.
  S_LAYOUT-ZEBRA 'X'.
*  S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  S_LAYOUT-INFO_FIELDNAME 'CLR'.  "行颜色代码的字段
*  S_LAYOUT-BOX_FIELDNAME    = 'BOX'.
  PERFORM FRM_FILL_FIELD .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_SAVE                   'A'
      IS_LAYOUT                S_LAYOUT
      IT_FIELDCAT              
GT_FIELDCAT
      I_CALLBACK_PROGRAM       
SY-REPID
      I_CALLBACK_PF_STATUS_SET 
'PF_STATUS_SET'
*     I_CALLBACK_HTML_TOP_OF_PAGE = 'HTML_TOP_OF_PAGE'
      I_CALLBACK_USER_COMMAND  'USER_COMMAND'
    TABLES
      T_OUTTAB                 GT_DATA[].
ENDFORM.

FORM FRM_FILL_FIELD .
  DATA:  WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  DEFINE FILL_FIELD.
    WA_FIELDCAT-FIELDNAME &1.
    WA_FIELDCAT-SELTEXT_L &2.
    IF WA_FIELDCAT-FIELDNAME 'ZEORD'
       OR WA_FIELDCAT-FIELDNAME 'MATNR'
       OR WA_FIELDCAT-FIELDNAME 'WERKS'
      .
      WA_FIELDCAT-KEY 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'NOTKZ'
       OR WA_FIELDCAT-FIELDNAME 'FLIFN'
       OR WA_FIELDCAT-FIELDNAME 'FEBEL'
       OR WA_FIELDCAT-FIELDNAME 'FRESW'
      .
      WA_FIELDCAT-CHECKBOX 'X'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'ZEORD'
      .
      WA_FIELDCAT-OUTPUTLEN '4'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'MATNR'
     OR WA_FIELDCAT-FIELDNAME 'DSNAM'
      .
      WA_FIELDCAT-OUTPUTLEN '25'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'MAKTX'
      .
      WA_FIELDCAT-OUTPUTLEN '30'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'VDATU'
       OR WA_FIELDCAT-FIELDNAME 'BDATU'
      .
      WA_FIELDCAT-OUTPUTLEN '10'.
    ENDIF.

    IF WA_FIELDCAT-FIELDNAME 'WGBEZ60'
       OR WA_FIELDCAT-FIELDNAME 'NAME3'
      .
      WA_FIELDCAT-OUTPUTLEN '40'.
    ENDIF.

    APPEND WA_FIELDCAT TO GT_FIELDCAT.
    CLEAR WA_FIELDCAT.
  END-OF-DEFINITION.
  FILL_FIELD :
        'ZEORD'      '编号',
        'MATNR'      '物料',
        'MAKTX'      '物料描述',
        'WERKS'      '工厂',
        'MATKL'      '物料组',
        'WGBEZ60'    '物料组描述',
        'DISPO'      'MRP控制员',
        'DSNAM'      'MRP控制员描述',
        'VDATU'      '有效起始日',
        'BDATU'      '有效至',
        'LIFNR'      '供应商帐户号',
        'NAME3'      '供应商名称',
        'RESWK'      '采购工厂',
        'EKORG'      '采购组织',
        'MEINS'      '订单单位',
        'EBELN'      '协议',
        'EBELP'      '协议项目',
        'AUTET'      '物料计划',
        'NOTKZ'      '已冻结',
        'FLIFN'      '固定供应商',
        'FEBEL'      '固定框架采购协议项目',
        'FRESW'      '固定工厂',
        'EMATN'      'MPN物料'.

ENDFORM.

FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.

FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
                    IS_SELFIELD 
TYPE SLIS_SELFIELD.
  DATAREF TYPE REF TO CL_GUI_ALV_GRID.
  DATA LV_STABLE TYPE LVC_S_STBL.   "刷新稳定性
  RANGESL_WERKS FOR T001W-WERKS.
  RANGESL_MATNR FOR MARA-MATNR.
  DATA:L_BUKRS TYPE T001K-BUKRS.

  LV_STABLE-ROW '1'.
  LV_STABLE-COL '1'.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID REF.
  CALL METHOD REF->CHECK_CHANGED_DATA.

  CASE I_UCOMM.
*    WHEN '&IC1'."表示双击
*      IF IS_SELFIELD-FIELDNAME =  'EBELN' .
*        CHECK IS_SELFIELD-TABINDEX > 0.
*        CLEAR GT_DATA .
*        READ TABLE GT_DATA INDEX IS_SELFIELD-TABINDEX.
*
*        CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
*          EXPORTING
*            I_EBELN              = GT_DATA-EBELN
*          EXCEPTIONS
*            NOT_FOUND            =
*                                   1
*            NO_AUTHORITY         = 2
*            INVALID_CALL         = 3
*            PREVIEW_NOT_POSSIBLE = 4
*            OTHERS               = 5.
*
*        IF SY-SUBRC
*        <> 0.
*
*          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER
*          SY-MSGNO
*
*          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
*        ENDIF.
*
*        IF SY-SUBRC <> 0.
**         Implement suitable error handling here
*        ENDIF.
*
*      ELSE .
*        MESSAGE '请选择有效字段!'TYPE 'S' DISPLAY LIKE 'W'.
*      ENDIF .
    WHEN 'POST_T'.
  ENDCASE.

  CALL METHOD REF->REFRESH_TABLE_DISPLAY
    
EXPORTING
      IS_STABLE LV_STABLE.
ENDFORM.

INITIALIZATION .

AT SELECTION-SCREEN.
  PERFORM SCREEN_SETTING.

START-OF-SELECTION.
  PERFORM FOM_GETDATA .
  PERFORM FRM_DISPLAY.

为达到最佳效果,推荐使用九网互联的ASP空间,支持绑定域名到目录。登录后台:/admin管理员:admin密码:admin请看一看,对你也有帮助的!注意下我们的联系方式,你也许会获得更多更快的信息和资源MM321最流行的动漫程序 (带采集,生成HTML,2月1日的所有数据和图片) V3.0★★★3.0版本带有2月1日的所有数据和图片,本程序超越“马克思程序的动态播放页才能评论” ,超越传统单调的电影首页风格★★★提示:最好放在根目录,还有就是目录的Users的写入权限要开,还有你的IIS设置默认文档为index.html★★★这次版本作出以下修改:A.更换新的评论功能,使得界面之间更加搭配B.修正采集MM动漫网,更新时间不变C.优化友情链接的位置排列D.修正动态播放页的小部分错误链接E.后台广告位管理,增加html转换JS功能F.增加播放页联系方式JS以及JS管理G.内容页也增加了评论功能★★★★★★希望能给http://www.mm321.net做上一个友情链接,谢谢★★★★★★采集每天原站更新了就会开放:请加入QQ群:44507143,将会有更多的有用信息和资源,让你的网站越做越好!MM动漫网3.0程序发布(http://www.mm321.net)带有原站所有的数据和图片结合了当前网络上最流行的FLV程序,B2B程序还有QVOD,提供的助手只方便手动的添加,时间久了一样会厌倦,那么本程序添加了采集MM动漫网的数据功能,非常完美,图片是保存到你自己空间的,请大家检查下自己空间是否够用哦。★★★采集功能描述:(★★★需要注意千万不要改变现在的分类,会有影响采集★★★新增分类没任何影响)A.可检查今日是否更新并采集B.可输入天数,采集前几天至今的数据,只能输入大于等于0的整数C.可按照http://www.mm321.net的ID来采集,如果你想采集单个,那么你就开始ID和结束ID相同就行;这个ID范围没限制★★★数据都是精心挑选的,而且动漫是最全面,最热门,最流行的!一般下载后,改改LOGO和站名就能用了,绝对不存在任何****和Bug,请放心使用祝大家使用愉快,提前祝大家新年快乐!★★★官方网址:http://www.mm321.net,有时间可以上官方网看看,欢迎加入MM动漫程序QQ③群:44507143,MM动漫程序QQ②群:44507126,MM动漫程序QQ①群:44533243(已满) 支持我们,请介绍给你们的亲戚朋友,感谢,我们的论坛地址:http://cc.hx33.net,若有动漫介绍和问题,可以发个帖或者群里提问,恕不单人辅导!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值