ABAP开发程序的基本样式

这个是我写的第一个程式,所有现在都舍不得扔掉。整个报表的格式大概就是这样吧!很简单的程式!

*******************************************************
声明:原创文章--版权所有---转载请保留信息
MSN:
njchouer@hotmail.com
作者:chouer
********************************************************

************************************************************************
*********PROGRAM NAME:ZRMOO3
*********DESCRIPTION:Material master detail report
*********DATE/AUTHOR:2006.01.17 /Chouer
************************************************************************
************************************************************************
**M O D I F I C A T I O N L O G
************************************************************************
************************************************************************
**CHANGEDATE PROGRAMMER REQUEST DESCRIPTION
**======================================================================
************************************************************************
**************
REPORT ZRM003
NO STANDARD PAGE HEADING
LINE-SIZE 255
LINE-COUNT 64(1).
TABLES:MARC,
MAKT,
MARA.
DATA:BEGIN OF I_OUT OCCURS 100,
WERKS LIKE MARC-WERKS,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
ERSDA LIKE MARA-ERSDA,
ERNAM LIKE MARA-ERNAM,
MTART LIKE MARA-MTART,
MATKL LIKE MARA-MATKL,
MEINS LIKE MARA-MEINS,
AUSME LIKE MARC-AUSME,
XCHPF LIKE MARC-XCHPF,
DISMM LIKE MARC-DISMM,
PLIFZ LIKE MARC-PLIFZ,
WEBAZ LIKE MARC-WEBAZ,
MHDRZ LIKE MARA-MHDRZ,
MHDHB LIKE MARA-MHDHB,
LVORM LIKE MARC-LVORM,
END OF I_OUT.
DATA:BEGIN OF LEN,
MATNR TYPE I VALUE 18,
MAKTX TYPE I VALUE 40,
ERSDA TYPE I VALUE 8,
ERNAM TYPE I VALUE 8,
MTART TYPE I VALUE 6,
MATKL TYPE I VALUE 6,
MEINS TYPE I VALUE 5,
AUSME TYPE I VALUE 6,
XCHPF TYPE I VALUE 6,
DISMM TYPE I VALUE 4,
PLIFZ TYPE I VALUE 7,
WEBAZ TYPE I VALUE 8,
MHDRZ TYPE I VALUE 10,
MHDHB TYPE I VALUE 10,
END OF LEN.
DATA: pnEND TYPE I,
pxREPID LIKE SY-REPID.
************************************************************************
***SELECTION SCREEN
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME. TITLE TEXT-020.
PARAMETERS:
P_WERKS LIKE MARC-WERKS OBLIGATORY.
SELECT-OPTIONS S_MTART FOR MARA-MTART.
SELECT-OPTIONS S_MATKL FOR MARA-MATKL.
SELECT-OPTIONS S_MATNR FOR MARA-MATNR.
SELECT-OPTIONS S_ERSDA FOR MARA-ERSDA.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
C1_LVORM LIKE MARA-LVORM.
SELECTION-SCREEN COMMENT 3(60) TEXT-021 FOR FIELD C1_LVORM.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
C2_LVORM LIKE MARC-LVORM.
SELECTION-SCREEN COMMENT 3(60) TEXT-022 FOR FIELD C2_LVORM.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
************************************************************************
****INITIALIZATION
************************************************************************
INITIALIZATION.
************************************************************************
**START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
PERFORM. GET_DATA.
************************************************************************
**END-OF_SELECTION
************************************************************************
END-OF-SELECTION.
PERFORM. WRITE_REPORT.
************************************************************************
**TOP OF PAGE
************************************************************************
TOP-OF-PAGE.
PERFORM. WRITE_HEADER.
************************************************************************
**END OF PAGE
************************************************************************
END-OF-PAGE.
pnEND = SY-LINSZ - 112.
WRITE AT pnEND 'continue...'.
************************************************************************
**FORM. GET_DATA
************************************************************************
FORM. GET_DATA.
IF C1_LVORM <> 'X' AND C2_LVORM <> 'X'.
SELECT B~WERKS A~MATNR A~ERSDA A~ERNAM A~MTART A~MATKL A~MEINS
B~AUSME B~XCHPF B~DISMM B~PLIFZ B~WEBAZ A~MHDRZ A~MHDHB
INTO CORRESPONDING FIELDS OF TABLE I_OUT
FROM MARA AS A
LEFT OUTER JOIN MARC AS B ON A~MATNR = B~MATNR
WHERE A~MTART IN S_MTART
AND A~MATKL IN S_MATKL
AND A~MATNR IN S_MATNR
AND A~ERSDA IN S_ERSDA
ORDER BY A~MATNR.
ELSEIF C1_LVORM = 'X' AND C2_LVORM <> 'X'.
SELECT B~WERKS A~MATNR A~ERSDA A~ERNAM A~MTART A~MATKL A~MEINS
B~AUSME B~XCHPF B~DISMM B~PLIFZ B~WEBAZ A~MHDRZ A~MHDHB
INTO CORRESPONDING FIELDS OF TABLE I_OUT
FROM MARA AS A
LEFT OUTER JOIN MARC AS B ON A~MATNR = B~MATNR
WHERE A~LVORM <> 'X'
AND A~MTART IN S_MTART
AND A~MATKL IN S_MATKL
AND A~MATNR IN S_MATNR
AND A~ERSDA IN S_ERSDA
ORDER BY A~MATNR.
ELSEIF C2_LVORM = 'X' AND C1_LVORM <> 'X'.
SELECT B~WERKS A~MATNR A~ERSDA A~ERNAM A~MTART
A~MATKL A~MEINS B~AUSME B~XCHPF B~DISMM
B~PLIFZ B~WEBAZ A~MHDRZ A~MHDHB B~LVORM
INTO CORRESPONDING FIELDS OF TABLE I_OUT
FROM MARA AS A
LEFT OUTER JOIN MARC AS B ON A~MATNR = B~MATNR
WHERE A~MTART IN S_MTART
AND A~MATKL IN S_MATKL
AND A~MATNR IN S_MATNR
AND A~ERSDA IN S_ERSDA
ORDER BY A~MATNR.
DELETE I_OUT WHERE LVORM = 'X'.
ENDIF.
**GET THE PLANT
DELETE I_OUT WHERE WERKS <> P_WERKS.

LOOP AT I_OUT.
**GET THE DESCRIPTION FROM TABLE(MAKT)
SELECT SINGLE MAKTX
INTO I_OUT-MAKTX FROM MAKT
WHERE MATNR = I_OUT-MATNR
AND SPRAS = SY-LANGU.
MODIFY I_OUT.
ENDLOOP.
ENDFORM.

************************************************************************
**FORM. WRITE_HEADER
************************************************************************
FORM. WRITE_HEADER.
WRITE: 50 'Checking report for Material Master'.
SKIP.
WRITE:'Plant:',P_WERKS.
SKIP.
WRITE:
at /(LEN-MATNR) 'Material' ,
at (LEN-MAKTX) 'Description',
at (LEN-ERSDA) 'Creation',
at (LEN-ERNAM) 'Created',
at (LEN-MTART) text-023,
at (LEN-MATKL) text-024,
at (LEN-MEINS) 'Base' ,
at (LEN-AUSME) 'Issue',
at (LEN-XCHPF) 'Batch',
at (LEN-DISMM) 'MRP',
at (LEN-PLIFZ) 'Deliv' RIGHT-JUSTIFIED,
at (LEN-WEBAZ) 'GR proc' RIGHT-JUSTIFIED,
at (LEN-MHDRZ) 'Min.rem' RIGHT-JUSTIFIED,
at (LEN-MHDHB) 'Total' RIGHT-JUSTIFIED.
WRITE:
at /(LEN-MATNR) '',
at (LEN-MAKTX) '',
at (LEN-ERSDA) 'Date',
at (LEN-ERNAM) 'by',
at (LEN-MTART) 'Type',
at (LEN-MATKL) 'Group',
at (LEN-MEINS) 'UoM' ,
at (LEN-AUSME) 'Unit',
at (LEN-XCHPF) 'Mgt',
at (LEN-DISMM) 'Type',
at (LEN-PLIFZ) 'Time',
at (LEN-WEBAZ) 'Time',
at 135(LEN-MHDRZ) 'shelf life',
at (LEN-MHDHB) 'Shelf life'.
ULINE.
ENDFORM.
************************************************************************
**FORM. WRITE_REPORT
************************************************************************
FORM. WRITE_REPORT.
SORT I_OUT BY MATNR.
LOOP AT I_OUT.
WRITE: at /(LEN-MATNR) I_OUT-MATNR(18),
at (LEN-MAKTX) I_OUT-MAKTX(40),
at (LEN-ERSDA) I_OUT-ERSDA,
at (LEN-ERNAM) I_OUT-ERNAM(12),
at (LEN-MTART) I_OUT-MTART,
at (LEN-MATKL) I_OUT-MATKL,
at (LEN-MEINS) I_OUT-MEINS,
at (LEN-AUSME) I_OUT-AUSME,
at (LEN-XCHPF) I_OUT-XCHPF,
at (LEN-DISMM) I_OUT-DISMM,
at (LEN-PLIFZ) I_OUT-PLIFZ,
at (LEN-WEBAZ) I_OUT-WEBAZ,
at (LEN-MHDRZ) I_OUT-MHDRZ,
at (LEN-MHDHB) I_OUT-MHDHB.
ENDLOOP.
ENDFORM.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23495244/viewspace-660089/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23495244/viewspace-660089/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值