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






