接上一篇传统ALV:https://www.cnblogs.com/BruceKing/p/11320165.html。

首先介绍下什么是ALV,在R/3 4.6C之前ALV全称为ABAP List Viewer,在其后的版本中,已经正式更名为SAP List Viewer。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。除去传统列表的显示和少量交互功能之外,ALV还提供给系统用户多种其它丰富的交互功能。

使用ALV有两种方式,一种为传统的Call Function,另一种为面向对象的编程,为了有良好的编程习惯和跟随SAP技术的发展,在此,强烈推荐使用面向对象的编程来实现ALV,在此,本文档也是根据此来写的。

下面进行OALV的演示练习

1、使用se80创建程序及建立屏幕8002.

2、绘制容器

点击保存,激活后关闭。

3、创建对象时候的调用类

调用方法

REPORT YJQCS003.
*定义变量
DATA:CONTAINER   TYPE REF TO CL_GUI_CUSTOM_CONTAINER, "存放ALV容器ALV         TYPE REF TO CL_GUI_ALV_GRID, "ALV的网格实例LT_FIELDCAT TYPE LVC_T_FCAT, "存放字段目录的内表LS_FIELDCAT TYPE LVC_S_FCAT,WA_LAYOUT   TYPE LVC_S_LAYO. "布局结构
DATA:OK_CODE TYPE SY-UCOMM."元素清单里的一致
*定义内表结构
TYPES:BEGIN OF TY_ALVSHOW,VBELN LIKE VBAK-VBELN,ERDAT LIKE VBAK-ERDAT,ERNAM LIKE VBAK-ERNAM,KUNNR LIKE  VBAK-KUNNR,POSNR LIKE VBAP-POSNR,MATNR LIKE VBAP-MATNR,MATKL LIKE VBAP-MATKL,ZMENG LIKE VBAP-ZMENG,ZIEME LIKE VBAP-ZIEME,WERKS LIKE VBAP-WERKS,LGORT LIKE VBAP-LGORT,END OF TY_ALVSHOW.
*定义内表及工作区
DATA:IT_ALVSHOW TYPE STANDARD TABLE OF TY_ALVSHOW.
DATA:WA_ALVSHOW TYPE TY_ALVSHOW.CALL SCREEN 8002."在调用module前调用屏幕,很重要MODULE DISPLAY_ALV OUTPUT.PERFORM DISPLAY_ALV. "封装显示数据函数
ENDMODULE.FORM DISPLAY_ALV."创建容器对象IF ALV IS INITIAL.CREATE OBJECT CONTAINER    "创建容器对象EXPORTINGCONTAINER_NAME = 'CONTAINER'.IF CONTAINER IS NOT INITIAL.CREATE OBJECT ALV "创建ALV的网格实例EXPORTINGI_PARENT = CONTAINER.ENDIF.PERFORM SET_FIELDCAT ."封装定义显示字段PERFORM SET_LAYOUT ."封装定义布局PERFORM GET_DATA."封装取数CALL METHOD ALV->SET_TABLE_FOR_FIRST_DISPLAY "调用显示ALV的方法EXPORTINGI_SAVE                        = 'A'IS_LAYOUT                     = WA_LAYOUTCHANGINGIT_OUTTAB                     = IT_ALVSHOWIT_FIELDCATALOG               = LT_FIELDCATEXCEPTIONSINVALID_PARAMETER_COMBINATION = 1PROGRAM_ERROR                 = 2TOO_MANY_LINES                = 3OTHERS                        = 4.IF SY-SUBRC <> 0.ENDIF.ELSE.CALL METHOD ALV->REFRESH_TABLE_DISPLAY "如果有容器的话,调用刷新ALV的方法EXCEPTIONSFINISHED = 1OTHERS   = 2.IF SY-SUBRC <> 0.ENDIF.ENDIF.
ENDFORM.MODULE STATUS_8002 OUTPUT.SET PF-STATUS 'STANDARD'. "这里使用SE41复制一个菜单
* SET TITLEBAR 'xxx'.
ENDMODULE.MODULE USER_COMMAND_8002 INPUT. "调用屏幕事件CLEAR:OK_CODE.CASE OK_CODE.WHEN '&ADD'.LEAVE SCREEN.WHEN OTHERS.ENDCASE.
ENDMODULE.FORM SET_FIELDCAT . "定义显示字段DATA:COL_POS TYPE I.
*  fieldcatCOL_POS = 0.
*销售凭证列COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'VBELN'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-KEY = 'X'.LS_FIELDCAT-SCRTEXT_M = '销售凭证'. "这个字段和常规的不一样,常规的为SELTEXT_MAPPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*创建日期COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'ERDAT'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-REF_TABLE  = 'VBAK'."这个字段和常规的不一样,常规的为REF_TABNAMEAPPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*创建者COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'ERNAM'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '创建人'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*售达方 自己起字段描述COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'KUNNR'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '客户'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*售达方1  参考数据字典表名COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'KUNNR'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-REF_TABLE = 'VBAK'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*行号COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'POSNR'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-REF_TABLE = 'VBAP'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*物料COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'MATNR'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '物料编码'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*物料组COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'MATKL'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '物料组'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*数量COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'ZMENG'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '数量'.LS_FIELDCAT-DO_SUM = 'X'. "总计LS_FIELDCAT-EDIT = 'X'. "总计LS_FIELDCAT-DECIMALS = 3. "因为当编辑数量的时候,如果是小数,要指定小数位,否则输入数据之后回车会自动缩小,如果使用ref则不需要设置APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*单位COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'ZIEME'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '单位'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*工厂COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'WERKS'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-REF_TABLE = 'VBAP'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
*库位COL_POS = COL_POS + 1.LS_FIELDCAT-FIELDNAME = 'LGORT'.LS_FIELDCAT-COL_POS = COL_POS.LS_FIELDCAT-SCRTEXT_M = '库位'.APPEND LS_FIELDCAT TO LT_FIELDCAT.CLEAR:LS_FIELDCAT.
ENDFORM.
FORM SET_LAYOUT . "定义页面布局WA_LAYOUT-CWIDTH_OPT = 'X'.WA_LAYOUT-ZEBRA = 'X'.WA_LAYOUT-GRID_TITLE  = '销售订单查询报表'. "小标题WA_LAYOUT-SMALLTITLE = 'X'.
ENDFORM.
FORM GET_DATA."取数SELECTVBAK~VBELN  VBAK~ERDAT  VBAK~ERNAM  VBAK~KUNNR  VBAP~POSNR  VBAP~MATNR  VBAP~MATKLVBAP~ZMENG  VBAP~ZIEME  VBAP~WERKS  VBAP~LGORT  FROM VBAKINNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELNINTO CORRESPONDING FIELDS OF TABLE IT_ALVSHOW UP TO 50 ROWS.
ENDFORM.

显示效果如下

转载于:https://www.cnblogs.com/BruceKing/p/11326757.html

SAP-简单的OALV演示练习相关推荐

  1. 单链表的简单操作与演示

    单链表的简单操作与演示 单链表 单链表概念和简单的设计 单链表是一种链式存取的数据结构,链表中的数据是以结点来表示的,每个结点由元素和指针构成. 元素表示数据元素的映象,就是存储数据的存储单元:指针指 ...

  2. ArcGIS简单的三维演示

    ** ArcGIS简单的三维演示 ** 一.测试数据 A.正射影像: B.DEM数据 两个数据均为平面坐标系,本次采用的是UTM投影.DEM的范围要比DOM大一些: 二.ArcScene 中的操作 D ...

  3. html调用服务器串口,【1768】串口驱动HTML简单的网页服务器演示

    本帖最后由 donatello1996 于 2019-3-31 20:23 编辑 [1768]串口驱动&HTML简单的网页服务器演示 之前忙于别的事情没空发帖,今晚都补回来,不多说废话. 得益 ...

  4. Python动物图像分割API简单调用实例演示,阿里达摩院视觉智能开放平台使用步骤

    阿里云视觉智能开放平台 - 动物分割 效果图演示 平台入口 创建获取密钥 本地图片转 URL 与密钥测试 代码调用演示 语义分割知识拓展 阿里云达摩院智能视觉开放平台 效果图演示 调用本地图片处理后可 ...

  5. 【PP那些事儿】SAP替代料功能演示和建议方案

    一.业务背景 技术部提出: A物料库存使用完后需要自动替换成B物料.此时,BOM会自动替换成B还是需要手动改成B,如果需要手动改成B,我要怎么知道什么时候去改成B,即A料库存什么时候使用完. 下面先对 ...

  6. sqlmap mysql案例_sqlmap简单mysql注入演示附截图

    安装教程百度一下就有了. 首先下载需要的文件,如果是windows环境直接到 看大牛的视频,学习一下,附上截图....算是转载吧...只是为了分享一下.. 下边是实例: sqlmap.py -upda ...

  7. mysql外键(FOREIGN KEY)简单讲解与演示

    前言 上数据库遇到了个叫外键的东西,一开始不是很懂,后来懂了,故记录一下... 外键是什么 外键,即外部的键 ,用来保证数据一致性,那么什么是数据的一致性呢? 假设某带学有如下两张表,描述,学生和专业 ...

  8. 几个常见规则引擎的简单介绍和演示

    Ilog JRules 是最有名的商用BRMS: Drools 是最活跃的开源规则引擎: Jess 是Clips的java实现,就如JRuby之于Ruby,是AI系的代表: Visual Rules( ...

  9. SAP Loyalty management模块演示场景的测试数据

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  10. python3 规则引擎_几个常见规则引擎的简单介绍和演示

    Ilog JRules 是最有名的商用BRMS: Drools 是最活跃的开源规则引擎: Jess 是Clips的java实现,就如JRuby之于Ruby,是AI系的代表: Visual Rules( ...

最新文章

  1. visio 模具_小研爱科研 || 那些Visio里的小技巧你Get了吗?
  2. P2344 奶牛抗议
  3. 关于方程a^x=1(mod m)的最小x解
  4. 课堂作业:返回一个二维整数组中最大子数组的和
  5. android内存及内存溢出分析
  6. DataView数据视图的使用 winform
  7. ubuntu 16.04 远程挂载硬盘
  8. 一些压力测试结果(Mysql,Zookeeper,Redis,Mongodb)
  9. mybatis查询出现索引越界异常
  10. SPSS 25.0中文版安装教程【001期】
  11. 免费域名邮箱如何申请?怎么给国外发邮件?
  12. 3分钟tips:高斯分布和高斯积分的关系
  13. PAT乙级 ——开学寄语
  14. 华为S7706升级到S7700-V200R008C00SPC500版本快速配置记录
  15. 数学方法002 | 利用恒等式证明不等式
  16. 苹果手机更新ios9后,APP设置
  17. 网络编程中的基本概念
  18. android自定义壁纸制作,Android 自定义View实现画背景和前景(ViewGroup篇)
  19. 阿里云服务器没有公网IP
  20. java.io.IOException: Expected at least 2 bytes

热门文章

  1. asm冗余 oracle_ORACLE 11G RAC ASM磁盘的三种冗余模式
  2. 未来教育软件计算机二级不能评分怎么办,为什么计算机二级软件打不开
  3. nodejs、express下载和配置
  4. 代码规范利器-阿里代码规范插件
  5. ESP8266 arduino下载程序不执行的若干bug
  6. 热点账户高并发解决方案
  7. 在linux上,dmg转换成iso或img文件
  8. 2020网络安全NISP一级题库
  9. php获取微信uninoid_微信公众号如何根据unionid获取到openid?
  10. alc662声卡注入id_使用Clover 开启ALC662声卡原生AppleHDA驱动