SAP ABAP 热咖啡报表模板

本文介绍了使用ABAP开发两个特定业务需求的报表过程。第一个报表针对二级物料处理日志,通过定制化的ABAP程序实现无需给予业务部门特殊权限即可查询相关信息。第二个报表则关注BOM主数据BAPI操作的日志,同样利用ABAP程序完成多表联合查询并展示结果。

对于上次的二级物料程序处理后的日志表,业务部门需要一张报表来查询,不能给业务部门SE16N权限。

需求很简单,就是给ZMMT_LOG020这张表做一个报表。

最近ABAP的功力大涨,出去接了杯热咖啡回来开工,完成后,咖啡还是热的!呵呵。

*&---------------------------------------------------------------------*
*& Report ZTTT
*&---------------------------------------------------------------------*
*& 2024-11-8
*&---------------------------------------------------------------------*
REPORT ZTTT.



TABLES: KEKO.



DATA GT_KEKO LIKE TABLE OF KEKO.


SELECT-OPTIONS S_VBELN FOR KEKO-VBELN DEFAULT '1100043896'.
SELECT-OPTIONS S_POSNR FOR KEKO-POSNR.




START-OF-SELECTION.
  PERFORM FRM_GET_DATA.

END-OF-SELECTION.
  PERFORM FRM_ALV_DISPLAY.


FORM FRM_GET_DATA.


      SELECT *

      FROM KEKO
      WHERE VBELN IN @S_VBELN
      AND   POSNR IN @S_POSNR
      AND  MAXMSG eq 'E'
      INTO TABLE @GT_KEKO.




ENDFORM.



*---------------------------------------------------------------------
*      FORM  SHOW_DATA
*---------------------------------------------------------------------

FORM FRM_ALV_DISPLAY.

  DATA: WS_FIELDCAT        TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
        WS_LAYOUT          TYPE SLIS_LAYOUT_ALV,
        WS_SORTFIELDS_TAB  TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
        WS_EVENTS          TYPE SLIS_T_EVENT.
  DATA: NN TYPE I VALUE 0.
  DATA: TITLE TYPE LVC_TITLE.
  DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*
  DEFINE HOUT.
    NN = NN + 1.
    WS_FIELDCAT-COL_POS       =  NN.
    WS_FIELDCAT-TABNAME       = 'GT_KEKO'.
    WS_FIELDCAT-KEY           = &1.
    WS_FIELDCAT-FIELDNAME     = &2.
    WS_FIELDCAT-SELTEXT_M     = &3.
    WS_FIELDCAT-CFIELDNAME    = &4.
    WS_FIELDCAT-DATATYPE      = &5.
    WS_FIELDCAT-REF_TABNAME   = &6.
    WS_FIELDCAT-REF_FIELDNAME = &7.
    WS_FIELDCAT-DO_SUM        = &8.
    WS_FIELDCAT-HOTSPOT       = &9.
    APPEND WS_FIELDCAT.
    CLEAR WS_FIELDCAT.
  END-OF-DEFINITION.

  HOUT:

''  'WERKS' '工厂'  ''  ''  ''  ''  ''  '',
''  'MATNR' '物料'  ''  ''  ''  ''  ''  '',
''  'KLVAR' '成本核算变式'  ''  ''  ''  ''  ''  '',
''  'VBELN' '销售订单'  ''  ''  ''  ''  ''  '',
''  'POSNR' '行项目'  ''  ''  ''  ''  ''  '',
''  'FEH_K_ANZ' '消息总数'  ''  ''  ''  ''  ''  '',
''  'FEH_STA' '状态'  ''  ''  ''  ''  ''  '',
''  'MAXMSG' '类型'  ''  ''  ''  ''  ''  '',
''  'CPUDT' '创建日期'  ''  ''  ''  ''  ''  '',
''  'CPUTIME' '创建时间'  ''  ''  ''  ''  ''  ''.



  WS_LAYOUT-ZEBRA             = 'X'.
  WS_LAYOUT-GET_SELINFOS      = 'X'.
  WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WS_LAYOUT-DETAIL_POPUP      = 'X'.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = SY-REPID
      IS_LAYOUT               = WS_LAYOUT
      IT_FIELDCAT             = WS_FIELDCAT[]
      IT_SPECIAL_GROUPS       = WS_FIELDGROUPS_TAB[]
      IT_SORT                 = WS_SORTFIELDS_TAB[]
      IT_EVENTS               = WS_EVENTS[]
      I_GRID_TITLE            = TITLE
      I_DEFAULT               = 'X'
      I_SAVE                  = 'A'
    TABLES
      T_OUTTAB                = GT_KEKO[]
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.

ENDFORM.                    " OUTPUT_DATA

*&---------------------------------------------------------------------*
*& Report  ZMMR0070
*& 二级物料处理日志报表
*&---------------------------------------------------------------------*
*& 刘欣 潍柴(重庆)汽车项目
*& 2015-3-6
*&---------------------------------------------------------------------*

REPORT ZMMR0070.
TABLES ZMMT_LOG020.

DATA GT_20 LIKE TABLE OF ZMMT_LOG020 WITH HEADER LINE.


SELECT-OPTIONS GV_DATE FOR ZMMT_LOG020-ERDAT.
SELECT-OPTIONS GV_MB1 FOR ZMMT_LOG020-MBLNR1.
SELECT-OPTIONS GV_MA1 FOR ZMMT_LOG020-MATNR1.



START-OF-SELECTION.
  PERFORM GET_DATA.

END-OF-SELECTION.
  PERFORM SHOW_DATA.

*---------------------------------------------------------------------
*      Form  GET_DATA
*---------------------------------------------------------------------

FORM GET_DATA .

  SELECT *
  INTO CORRESPONDING FIELDS OF TABLE  GT_20
  FROM ZMMT_LOG020
  WHERE ERDAT IN GV_DATE AND
        MBLNR1 IN GV_MB1 AND
        MATNR1 IN GV_MA1.


ENDFORM.

*---------------------------------------------------------------------
*      Form  SHOW_DATA
*---------------------------------------------------------------------

FORM SHOW_DATA .

  DATA: WS_FIELDCAT        TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
        WS_LAYOUT          TYPE SLIS_LAYOUT_ALV,
        WS_SORTFIELDS_TAB  TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
        WS_EVENTS          TYPE SLIS_T_EVENT.
  DATA: NN TYPE I VALUE 0.
  DATA: TITLE TYPE LVC_TITLE.
  DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*
  DEFINE HOUT.
    NN = NN + 1.
    WS_FIELDCAT-COL_POS       =  NN.
    WS_FIELDCAT-TABNAME       = 'GT_20'.
    WS_FIELDCAT-KEY           = &1.
    WS_FIELDCAT-FIELDNAME     = &2.
    WS_FIELDCAT-SELTEXT_M     = &3.
    WS_FIELDCAT-CFIELDNAME    = &4.
    WS_FIELDCAT-DATATYPE      = &5.
    WS_FIELDCAT-REF_TABNAME   = &6.
    WS_FIELDCAT-REF_FIELDNAME = &7.
    WS_FIELDCAT-DO_SUM        = &8.
    WS_FIELDCAT-HOTSPOT       = &9.
    APPEND WS_FIELDCAT.
    CLEAR WS_FIELDCAT.
  END-OF-DEFINITION.

  HOUT:

''  'USRID' '用户'  ''  ''  ''  ''  ''  '',
''  'ERDAT' '日期'  ''  ''  ''  ''  ''  '',
''  'ANUZT' '时间'  ''  ''  ''  ''  ''  '',
''  'AUTONUMBER' '编号'  ''  ''  ''  ''  ''  '',
'X'  'LIFNR1' '父供应商'  ''  ''  ''  ''  ''  '',
'X'  'MATNR1' '父物料'  ''  ''  ''  ''  ''  '',
'X'  'MBLNR1' '父凭证'  ''  ''  ''  ''  ''  '',
'X'  'BWART1' '父供应商'  ''  ''  ''  ''  ''  '',
'X'  'LIFNR1' '父移'  ''  ''  ''  ''  ''  '',

'X'  'SOBKZ1' '父寄售'  ''  ''  ''  ''  ''  '',
'X'  'MENGE1' '父数量'  ''  ''  ''  ''  ''  '',
'X'  'MEINS1' '父单位'  ''  ''  ''  ''  ''  '',
'X'  'LGORT1' '父库存'  ''  ''  ''  ''  ''  '',
'X'  'UMLGO1' '父目地'  ''  ''  ''  ''  ''  '',
*'X'  '' '&'  ''  ''  ''  ''  ''  '',
''  'LIFNR2' '子供应商'  ''  ''  ''  ''  ''  '',
''  'MATNR2' '子物料'  ''  ''  ''  ''  ''  '',
''  'MBLNR2' '子凭证'  ''  ''  ''  ''  ''  '',
''  'MBLPO2' '子项'  ''  ''  ''  ''  ''  '',
''  'BWART2' '子移'  ''  ''  ''  ''  ''  '',
''  'SOBKZ2' '子寄售'  ''  ''  ''  ''  ''  '',

''  'MENGE2' '子数量'  ''  ''  ''  ''  ''  '',
''  'MEINS2' '子单位'  ''  ''  ''  ''  ''  '',
''  'LGORT2' '子库存'  ''  ''  ''  ''  ''  '',
''  'UMLGO2' '子目地'  ''  ''  ''  ''  ''  '',
''  'TEXT' '辅助信息'  ''  ''  ''  ''  ''  '',
''  'MESSAGE' '消息文本'  ''  ''  ''  ''  ''  ''.



  WS_LAYOUT-ZEBRA             = 'X'.
  WS_LAYOUT-GET_SELINFOS      = 'X'.
  WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WS_LAYOUT-DETAIL_POPUP      = 'X'.

*******排序
  WS_SORTFIELDS_TAB-FIELDNAME = 'AUTONUMBER'.
  WS_SORTFIELDS_TAB-UP = 'X'.
  APPEND WS_SORTFIELDS_TAB.
  CLEAR WS_SORTFIELDS_TAB.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = SY-REPID
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
      IS_LAYOUT               = WS_LAYOUT
      IT_FIELDCAT             = WS_FIELDCAT[]
      IT_SPECIAL_GROUPS       = WS_FIELDGROUPS_TAB[]
      IT_SORT                 = WS_SORTFIELDS_TAB[]
      IT_EVENTS               = WS_EVENTS[]
      I_GRID_TITLE            = TITLE
      I_DEFAULT               = 'X'
      I_SAVE                  = 'A'
    TABLES
      T_OUTTAB                = GT_20[]
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.

ENDFORM.                    " OUTPUT_DATA

再来一个两张表的查询:


*&---------------------------------------------------------------------*
*& REPORT  ZPPR064
*& BOM主数据BAPI日志报表
*&---------------------------------------------------------------------*
*& 刘欣 宝能汽车项目
*& 2021-1-25
*&---------------------------------------------------------------------*

REPORT ZMMR0064.
TABLES: ZPPT_BOM_MSG,ZPPT_BOM.



TYPES : BEGIN OF TY_ALV.
  INCLUDE TYPE ZPPT_BOM_MSG.
  TYPES : ERDAT TYPE ZPPT_BOM-ERDAT,
          ERZET TYPE ZPPT_BOM-ERZET,
          END OF TY_ALV.
DATA GT_ALV TYPE TABLE OF TY_ALV.
DATA GW_ALV TYPE TY_ALV.


SELECT-OPTIONS S_DATE FOR ZPPT_BOM-ERDAT.
SELECT-OPTIONS S_TIME FOR ZPPT_BOM-ERZET.
SELECT-OPTIONS S_PACK FOR ZPPT_BOM-PACK_NO.



START-OF-SELECTION.
  PERFORM GET_DATA.

END-OF-SELECTION.
  PERFORM SHOW_DATA.

*---------------------------------------------------------------------
*      FORM  GET_DATA
*---------------------------------------------------------------------

FORM GET_DATA.

  SELECT PACK_NO,
         ERDAT,
         ERZET
  FROM ZPPT_BOM
  WHERE ERDAT IN @S_DATE AND
        ERZET IN @S_TIME AND
        PACK_NO IN @S_PACK
  INTO TABLE @DATA(LT_DATA).





 DATA(LT_DATA_TEMP) = LT_DATA.

 SORT LT_DATA_TEMP BY PACK_NO.

 DELETE ADJACENT DUPLICATES FROM LT_DATA_TEMP COMPARING PACK_NO.


 IF LT_DATA_TEMP IS NOT INITIAL.
   SELECT *
     INTO CORRESPONDING FIELDS OF TABLE GT_ALV
     FROM ZPPT_BOM_MSG
     FOR ALL ENTRIES IN LT_DATA_TEMP
     WHERE PACK_NO = LT_DATA_TEMP-PACK_NO.
 ENDIF.

 LOOP AT GT_ALV ASSIGNING FIELD-SYMBOL(<FS>).
   READ TABLE LT_DATA_TEMP INTO DATA(LW_DATA) WITH KEY PACK_NO = <FS>-PACK_NO BINARY SEARCH.
   IF SY-SUBRC EQ 0.
      <FS>-ERDAT = LW_DATA-ERDAT.
      <FS>-ERZET = LW_DATA-ERZET.
   ENDIF.
 ENDLOOP.


ENDFORM.

*---------------------------------------------------------------------
*      FORM  SHOW_DATA
*---------------------------------------------------------------------

FORM SHOW_DATA .

  DATA: WS_FIELDCAT        TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        WS_FIELDGROUPS_TAB TYPE SLIS_T_SP_GROUP_ALV,
        WS_LAYOUT          TYPE SLIS_LAYOUT_ALV,
        WS_SORTFIELDS_TAB  TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
        WS_EVENTS          TYPE SLIS_T_EVENT.
  DATA: NN TYPE I VALUE 0.
  DATA: TITLE TYPE LVC_TITLE.
  DATA: COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.
*
  DEFINE HOUT.
    NN = NN + 1.
    WS_FIELDCAT-COL_POS       =  NN.
    WS_FIELDCAT-TABNAME       = 'GT_ALV'.
    WS_FIELDCAT-KEY           = &1.
    WS_FIELDCAT-FIELDNAME     = &2.
    WS_FIELDCAT-SELTEXT_M     = &3.
    WS_FIELDCAT-CFIELDNAME    = &4.
    WS_FIELDCAT-DATATYPE      = &5.
    WS_FIELDCAT-REF_TABNAME   = &6.
    WS_FIELDCAT-REF_FIELDNAME = &7.
    WS_FIELDCAT-DO_SUM        = &8.
    WS_FIELDCAT-HOTSPOT       = &9.
    APPEND WS_FIELDCAT.
    CLEAR WS_FIELDCAT.
  END-OF-DEFINITION.

  HOUT:


''  'ERDAT' '日期'  ''  ''  ''  ''  ''  '',
''  'ERZET' '时间'  ''  ''  ''  ''  ''  '',
''  'PACK_NO' '数据包编号'  ''  ''  ''  ''  ''  '',
''  'TYPE' '自然数'  ''  ''  ''  ''  ''  '',
''  'ID' '消息类'  ''  ''  ''  ''  ''  '',
''  'ZNUMBER' '消息编号'  ''  ''  ''  ''  ''  '',
''  'MESSAGE' '消息文本'  ''  ''  ''  ''  ''  '',
''  'LOG_NO' '日志号'  ''  ''  ''  ''  ''  '',
''  'LOG_MSG_NO' '内部邮件序列号'  ''  ''  ''  ''  ''  '',
''  'MESSAGE_V1' '文本'  ''  ''  ''  ''  ''  '',
''  'MESSAGE_V2' '文本'  ''  ''  ''  ''  ''  '',
''  'MESSAGE_V3' '文本'  ''  ''  ''  ''  ''  '',
''  'MESSAGE_V4' '文本'  ''  ''  ''  ''  ''  '',
''  'ZPARAMETER' '参数名称'  ''  ''  ''  ''  ''  '',
''  'ZROW' '参数中的行'  ''  ''  ''  ''  ''  '',
''  'FIELD' '参数中的字段'  ''  ''  ''  ''  ''  ''.










  WS_LAYOUT-ZEBRA             = 'X'.
  WS_LAYOUT-GET_SELINFOS      = 'X'.
  WS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  WS_LAYOUT-DETAIL_POPUP      = 'X'.

*******排序
  WS_SORTFIELDS_TAB-FIELDNAME = 'ERDAT'.
  WS_SORTFIELDS_TAB-UP = 'X'.
  APPEND WS_SORTFIELDS_TAB.
  CLEAR WS_SORTFIELDS_TAB.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = SY-REPID
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
      IS_LAYOUT               = WS_LAYOUT
      IT_FIELDCAT             = WS_FIELDCAT[]
      IT_SPECIAL_GROUPS       = WS_FIELDGROUPS_TAB[]
      IT_SORT                 = WS_SORTFIELDS_TAB[]
      IT_EVENTS               = WS_EVENTS[]
      I_GRID_TITLE            = TITLE
      I_DEFAULT               = 'X'
      I_SAVE                  = 'A'
    TABLES
      T_OUTTAB                = GT_ALV[]
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.

ENDFORM.                    " OUTPUT_DATA

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

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

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

打赏作者

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

抵扣说明:

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

余额充值