




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ABAP-ALV报表开发ALV相关概念ALV是系统的一种网格的显示方式,这种方式带有汇总排序筛选等功能,ALV格式的数据是以单元格为单位显示,不象一般的写屏方式拷出来或是导出成文件不同列的内容粘在一块,这种方式便于数据导出来放在电子表格里进行加工。ALV即能显示简单表单(SIMPLE LIST)又能显示有序表单(SEQUENTIAL LIST):ALV实现方式:ALV 可以通过两种方式实现:Two ApproachesConventional (Using SAP Standard Function Modules).Object Oriented (Using SAP Standard Classes and Methods).以下我们要讲的为Function Modules方式。ALV实现流程:第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS.第二步:定义数据类型或者内表的实体对象.第三步:定义一些需要用到的变量.第四步:定义自己的选择屏幕.第五步:start-of-selection部分.1)用一个子函数完成对ALV表单标题区域的赋值(i_list_comments).2)用一个子函数完成自己所需要数据的抓取.3)用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置.4)用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等.5)用一个子函数FORM DISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE.下面根据一个普通的例子(purchase order)来具体解释各步骤:*第一步:TABLES:EKKO,EKPO,T001,LFA1.TYPE-POOLS SLIS.有时可以还要包含*第二步:TYPES : BEGIN OF TYP_PURORDER,TYPE OF Purchase Order InformationAEDATTYPE EKKO-AEDAT,Date on Which Record Was CreatedEBELNTYPE EKKO-EBELN,Purchasing Document NumberMATNRTYPE EKPO-MATNR,Material NumberTXZ01TYPE EKPO-TXZ01,MENGETYPE EKPO-MENGE,Purchase Order QuantityMEINSTYPE EKPO-MEINS,Purchase Order Unit of MeasureNETPRTYPE EKPO-NETPR,Net Price in Purchasing DocumentWAERSTYPE EKKO-WAERS,Currency KeyNETWRTYPE EKPO-NETWR,Net Order Value in PO CurrencyEND OF TYP_PURORDER.DATA: ST_PURORDER TYPE TYP_PURORDER,MAIN STRUCTERTD_PURORDER TYPE STANDARD TABLE OF TYP_PURORDER.MAIN TABLE*第三步:*-*COUNTER DEF*-*DATA: W_BUKRSTYPE T001-BUKRS,用于公司代码的检索W_LIFNRTYPE LFA1-LIFNR,用于购买者代码的检索W_DATUMTYPE EKKO-AEDAT,W_DATE(10) TYPE C.*-*FOR ALV DEF*-*DATA: ST_LAYOTYPE SLIS_LAYOUT_ALV,ALV LAYOUT STRTD_EVENTTYPE SLIS_T_EVENT,ALV EVENT TABST_EVENTTYPE SLIS_ALV_EVENT,ALV EVENT STRTD_COMMENTTYPE SLIS_T_LISTHEADER,SET HEADER TABST_COMMENTLIKE LINE OF TD_COMMENT,SET HEADER STRST_FIELDCAT TYPE SLIS_FIELDCAT_ALV,ALV FIELDCAT STRTD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,ALV FIELDCAT TABST_SORTTYPE SLIS_SORTINFO_ALV,ALV SORT STRTD_SORTTYPE SLIS_T_SORTINFO_ALV.ALV SORT TAB*1)SLIS_LAYOUT_ALV是一个类型,它用来定义ALV报表的整体属性例如:*ST_LAYO-ZEBRA = X.“显示成斑马纹样式*ST_LAYO-DETAIL_POPUP = X.“是否弹出详细信息窗口*ST_LAYO-F2CODE = &ETA. “设置触发弹出详细信息窗口的功能码,这里是双击*ST_LAYO-COLWIDTH_OPTIMIZE = X. “优化列宽选项是否设置*ST_LAYO-DETAIL_INITIAL_LINES= X.*ST_LAYO -no_vline = X.“这个用来设置列间隔线*ST_LAYO -detail_titlebar = 详细内容. “设置弹出窗口的标题栏*2)SLIS_T_EVENT是一个取得事件的内表,通过函数REUSE_ALV_EVENTS_GET取得多个事件(包括操作页眉页脚的事件).*3)SLIS_T_LISTHEADER操作页眉页脚的内表.*4)SLIS_T_FIELDCAT_ALV操作ALV报表列的内表.*5)SLIS_T_SORTINFO_ALV对显示数据排序的内表。*第四步:*-*PARAMTER DEF(SELECT-OPTION etc.)*-*view or posting selection screenPARAMETERS:P_BUKRS TYPE T001-BUKRS DEFAULT TEXT-001 OBLIGATORY. Company CodePARAMETERS:P_LIFNR TYPE LFA1-LIFNR OBLIGATORY. Vendor CodeSELECT-OPTIONS: S_DATFORW_DATUM.PO Date*-*AT SELECTION-SCREEN*-*AT SELECTION-SCREEN.*Check Airline Carrier IDPERFORM PRM_CHECK_SCDATA.*第五步:START-OF-SELECTION.PERFORM PRM_GET_DATA.PERFORM FRM_SET_LAYOUT.PERFORM FRM_SET_EVENT.Set ALV EVENTPERFORM FRM_SET_FIELDCAT.Set ALV FIELDCAT 用来定义表单中的各个列的相关信息,比如列名等PERFORM FRM_SORT_TAB.PERFORM FRM_DISPLAY_ALV. OUT DATA FROM ALV判断录入参数的合法性FORM PRM_CHECK_SCDATA.SELECT SINGLE BUKRSFROM T001INTO W_BUKRSWHERE BUKRS = P_BUKRS.IF SY-SUBRC 0.MESSAGE E003 WITH P_BUKRS.LEAVE TO LIST-PROCESSING.ENDIF.SELECT SINGLE LIFNRFROM LFA1INTO W_LIFNRWHERE LIFNR = P_LIFNR.IF SY-SUBRC 0.MESSAGE E003 WITH P_LIFNR.LEAVE TO LIST-PROCESSING.ENDIF.ENDFORM.Set ALV LAYOUT 用于定义ALV表单的相关格式、属性FORM FRM_SET_LAYOUT .CLEAR ST_LAYO.ST_LAYO-ZEBRA= X.ST_LAYO-DETAIL_POPUP= X.ST_LAYO-F2CODE= &ETA.ST_LAYO-COLWIDTH_OPTIMIZE= X.ST_LAYO-DETAIL_INITIAL_LINES= X.ENDFORM. FRM_SET_LAYOUT取数据到内表中FORM PRM_GET_DATA.SELECTEKKOAEDATDate on Which Record Was CreatedEKKOEBELNPurchasing Document NumberEKPOMATNRMaterial NumberEKPOTXZ01EKPOMENGEPurchase Order QuantityEKPOMEINSPurchase Order Unit of MeasureEKPONETPRNet Price in Purchasing DocumentEKKOWAERSCurrency KeyEKPONETWRNet Order Value in PO CurrencyINTO TABLE TD_PURORDERFROM EKKO INNER JOIN EKPOON ( EKKOEBELN = EKPOEBELN )WHERE EKKOBUKRS = P_BUKRSAND EKKOLIFNR = P_LIFNRAND EKKOAEDAT IN S_DAT.IF SY-SUBRC 0.MESSAGE E002 .LEAVE LIST-PROCESSING.ENDIF.*SORT TD_PURORDER BY AEDAT EBELN MATNR.ENDFORM.GET_DATA取全部的事件,并且更改处理页眉页脚的事件的FORM的值FORM FRM_SET_EVENT .CALL FUNCTION REUSE_ALV_EVENTS_GETEXPORTINGI_LIST_TYPE= 0IMPORTINGET_EVENTS= TD_EVENTEXCEPTIONSLIST_TYPE_WRONG = 1OTHERS= 2.IF SY-SUBRC 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.LEAVE TO LIST-PROCESSING.ENDIF.READ TABLE TD_EVENTWITH KEY NAME = SLIS_EV_END_OF_LISTINTO ST_EVENT.IF SY-SUBRC = 0.ST_EVENT-FORM = ALV_END_OF_LIST.将页尾子程名称赋值给 ST_EVENT-FORMMODIFY TD_EVENT FROM ST_EVENT INDEX SY-TABIX.ENDIF.READ TABLE TD_EVENTWITH KEY NAME = SLIS_EV_TOP_OF_PAGEINTO ST_EVENT.IF SY-SUBRC = 0.ST_EVENT-FORM = ALV_TOP_OF_PAGE.将页眉子程名称赋值给 ST_EVENT-FORMMODIFY TD_EVENT FROM ST_EVENT INDEX SY-TABIX.ENDIF.ENDFORM. FRM_SET_EVENT页眉处理子程FORM ALV_TOP_OF_PAGE .REFRESH TD_COMMENT.CLEAR ST_COMMENT.ST_COMMENT-TYP= H.H=Header, S=Selection, A=Action供选择ST_COMMENT-KEY= SPACE.ST_COMMENT-INFO = TEXT-024.APPEND ST_COMMENT TO TD_COMMENT.CLEAR ST_COMMENT.ST_COMMENT-TYP= A.ST_COMMENT-KEY= TEXT-020.ST_COMMENT-INFO = P_BUKRS.APPEND ST_COMMENT TO TD_COMMENT.CLEAR ST_COMMENT.ST_COMMENT-TYP= S.ST_COMMENT-KEY= TEXT-023.ST_COMMENT-INFO = P_LIFNR.APPEND ST_COMMENT TO TD_COMMENT.CALL FUNCTION REUSE_ALV_COMMENTARY_WRITEEXPORTINGIT_LIST_COMMENTARY= TD_COMMENTI_LOGO= ENJOYSAP_LOGO. 输出图标IF SY-SUBRC 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.LEAVE TO LIST-PROCESSING.ENDIF.ENDFORM. ALV_TOP_OF_PAGE页脚处理子程FORM ALV_END_OF_LIST .REFRESH TD_COMMENT.CLEAR ST_COMMENT.ST_COMMENT-TYP= S.ST_COMMENT-KEY= TEXT-022.ST_COMMENT-INFO = SY-UNAME.APPEND ST_COMMENT TO TD_COMMENT.CONCATENATE SY-DATUM+0(4)SY-DATUM+4(2)SY-DATUM+6(2)INTO W_DATESEPARATED BY /.时间字符串的连接CLEAR ST_COMMENT.ST_COMMENT-TYP= S.ST_COMMENT-KEY= TEXT-021.ST_COMMENT-INFO = W_DATE.APPEND ST_COMMENT TO TD_COMMENT.CALL FUNCTION REUSE_ALV_COMMENTARY_WRITEEXPORTINGIT_LIST_COMMENTARY= TD_COMMENTI_END_OF_LIST_GRID= X.ENDFORM.指定ALV报表列属性FORM FRM_SET_FIELDCAT .REFRESH TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 0.第一列ST_FIELDCAT-FIELDNAME= TEXT-002.绑定的内表列名称*ST_FIELDCAT-ref_tabname= EKKO.录入时,帮助制作时指定表名称ST_FIELDCAT-REF_FIELDNAME = TEXT-002.录入时,帮助制作时指定表中参考列名称ST_FIELDCAT-SELTEXT_M= TEXT-003.* ST_FIELDCAT-SELTEXT_L= zzz.M,L,S这三个给一个就行* ST_FIELDCAT-SELTEXT_S= AAA.如果都给,它只用L中的值ST_FIELDCAT-EDIT= X.是否可编辑APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 1.ST_FIELDCAT-FIELDNAME= TEXT-004.ST_FIELDCAT-REF_FIELDNAME = TEXT-004.ST_FIELDCAT-SELTEXT_M= TEXT-005.ST_FIELDCAT-EDIT= X.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 2.ST_FIELDCAT-FIELDNAME= TEXT-006.ST_FIELDCAT-ref_tabname= EKPO.ST_FIELDCAT-REF_FIELDNAME = TEXT-006.ST_FIELDCAT-SELTEXT_M= TEXT-007.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 3.ST_FIELDCAT-FIELDNAME= TEXT-008.ST_FIELDCAT-REF_FIELDNAME = TEXT-008.ST_FIELDCAT-SELTEXT_M= TEXT-009.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 4.ST_FIELDCAT-FIELDNAME= TEXT-010.ST_FIELDCAT-REF_FIELDNAME = TEXT-010.ST_FIELDCAT-SELTEXT_M= TEXT-011.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 5.ST_FIELDCAT-FIELDNAME= TEXT-012.ST_FIELDCAT-REF_FIELDNAME = TEXT-013.ST_FIELDCAT-SELTEXT_M= TEXT-013.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 6.ST_FIELDCAT-FIELDNAME= TEXT-014.ST_FIELDCAT-REF_FIELDNAME = TEXT-014.ST_FIELDCAT-SELTEXT_M= TEXT-015.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 7.ST_FIELDCAT-FIELDNAME= TEXT-016.ST_FIELDCAT-REF_FIELDNAME = TEXT-016.ST_FIELDCAT-SELTEXT_M= TEXT-017.ST_FIELDCAT-EDIT= SPACE.APPEND ST_FIELDCAT TO TD_FIELDCAT.CLEAR ST_FIELDCAT.ST_FIELDCAT-COL_POS= 8.ST_FIELDCAT-FIELDNAME= TEXT-018.ST_FIELDCAT-REF_FIELDNAME = TEXT-018.ST_FIELDCAT-SELTEXT_M= TEXT-019.ST_F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮安市中储粮2025秋招战略研究博士岗高频笔试题库含答案
- 太原市中储粮2025秋招质检化验岗高频笔试题库含答案
- 中国联通河池市2025秋招笔试行测题库及答案计算机类
- 阿克苏市中石化2025秋招笔试模拟题含答案数智化与信息工程岗
- 海南地区中储粮2025秋招机电维修岗高频笔试题库含答案
- 兰州市中石油2025秋招笔试综合知识专练题库及答案
- 中国移动云浮市2025秋招综合管理类专业追问清单及参考回答
- 朔州市中石化2025秋招笔试模拟题含答案油品分析质检岗
- 包头市中石油2025秋招笔试模拟题含答案炼油设备技术岗
- 红河自治州中石化2025秋招笔试模拟题含答案行测综合英语
- 超市消防安全制度
- 机械点检安全操作规程
- 汽车工程部各岗位职责
- 华与华合同范例
- 秋季流行服饰与衣料的准备-生产计划讲义教材
- 七年级上册地理人教版知识清单
- HDPE塑钢缠绕排水管施工方案
- 二十案例示轮回
- 农业综合行政执法大比武试题库(试题及答案)
- 颅高压危象课件
- 《椎管内肿瘤》课件
评论
0/150
提交评论