首页 > 其他分享 >SAP-ABAP开发学习-FUNCTION ALV

SAP-ABAP开发学习-FUNCTION ALV

时间:2024-10-28 20:45:36浏览次数:9  
标签:FUNCTION layout CALLBACK ln fieldcat ABAP ALV TYPE

ALV概览

        ALV全称SAP List View,是SAP提供的一个强大的数据报表显示工具。ALV实质上是一个屏幕控件对象,它通过程序传递数据内表的方式来显示数据。
实现方式:调用标准函数;优化接口:用户可以实现对字段的排序、筛选及统计等功能。
显示方式:List 类似于write语句输出的表单形式;Grid 每个输出字段提供按钮,用户可以自行设定,操作更为灵活。如下示例:左边是LIST, 右边是GRID。

基本概念

        类型池: SLIS 是个特殊类型的程序,包含了各种TYPES生成的结构体、表类型等,因为某种原因涉及的关联性比较强所以放在一个类型池里面,比如统一使用在函数组里面或统一用在某个功能组里面。
下面是它主要的属性参数 Fieldcat TYPE slis t fieldcat alv
                                        - 列格式设置(表单)
                                        - 字段名称,列是否可修改,列宽度等
                                        Layout TYPE slis layout alv
                                        - 全局格式设置 (结构)
                                        - 整表字段是否可修改,是否以斑马纹输出,是否显示选择按钮字段等
通过函数传值                函数: REUSE ALV FIELDCATALOG MERGE
                                      - 根据内表结构返回FIELDCAT字段结构信息
                                      函数: REUSE ALV GRID DISPLAY/REUSE ALV LIST DISPLAY
                                      - 使用GRID/LIST模式输出ALV报表

开发ALV的基本流程

1、声明变量

定义ALV所要用到的类型池:TYPE-POOLS: SLIS
针对ALV的控制信息数据(Layout & Fieldcat)FIELDCAT 是一张内表,记录的的是ALV输出时每列的属性信息。Layout 是一个结构,存储整个表单的全局设置。可以混合使用,FIELDCAT里面的属性优先。下面是fieldcat常用的参数说明。

字段说明
KEY将该列设置为关键字 (“X”/“”)
ICON以图标显示(“X”/“”)
CHECKROK以复选框显示(“X”/“”)
JUST定义对齐方式(“R”“L”“C”)
LZERO增加前导等(“X”/“”)
NO_SIGN不显示符号 (“X”/“”)
NO_ZERO不显示前导零 (“X”/“”)
COL_POS作为第几列输出(数字)
DO_SUM对宇段讲行汇总(“X”/“”)
SELTEXT_L/M/S字段名称描述长/中/短(字符串)
HOTSPOT设置为热点(显示为有下划线) (“X”/“”)

声明的基本代码如下:

TYPE-POOLS: slis. 
DATA: fieldcat  TYPE slis_t_fieldcat_alv,  “字段清单内表 
      fieldcat_ln LIKE LINE OF fieldcat,
      layout TYPE slis_layout_alv,         “ALV格式 
      sortcat TYPE slis_t_sortinfo_alv,    “ALV排序字段清单内表 
      sortcat_ln LIKE LINE OF sortcat, 
      eventcat TYPE slis_t_event,           “ALV事件 
      eventcat_ln LIKE LINE OF eventcat. 
DATA: col_pos TYPE i.
2、定义内表

存放自定义数据文件的数据,以及在ALV中显示。

DATA: BEGIN  OF  ivbap  OCCURS  0,
        vbeln    LIKE  vbap-vbeln,
        matnr    LIKE  vbap-matnr,
        matkl    LIKE  vbap-matkl,
     END  OF  ivbap. 
3、读取数据
SELECT  vbeln  posnr  matnr  matkl  kwmeng  vrkme
    INTO  CORRESPONDING  FIELDS  OF  TABLE  ivbap
    FROM  vbap
    WHERE  vbeln  NE  space. 
4、ALV格式控制

字段目录是用来控制ALV显示的网格中每个字段的属性的,比如字段的对齐方式、可编辑状态、颜色等等。

layout-zebra                = 'X'.    ”呈现颜色交替
layout-detail_popup         = 'X'.    "是否弹出详细信息窗口
layout-f2code               = '&ETA'. "设置触发弹出详细信息窗口的功能码,这里是双击
layout-no_vline             = 'X'.    "这个用来设置列间隔线
layout-colwidth_optimize    = 'X'.    "优化列宽选项是否设置
layout-detail_initial_lines = 'X'.
layout-detail_titlebar      = '详细内容'."设置弹出窗口的标题栏

fieldcat_ln-ref_tabname  =  'VBAP'.
fieldcat_ln-fieldname    =  'VBELN'.
fieldcat_ln-key          = 'X'.
fieldcat_ln-do_sum       = space.
fieldcat_ln-col_pos      = col_pos.
fieldcat_ln-no_out       = space.
fieldcat_ln-qfieldname   = ''.
fieldcat_ln-hotspot      = 'X'.
5、定义事件

建立事件清单(Event Catalogs) 并需定义事件块,否则出错,并且函数ALV调用事件要在最后。因为事件块的执行是按照顺序的。在调用函数生成ALV过程中,可以进行用户操作使用回调函数(CALLBACK)的形式实现交互。事件块: FORM PAGE_HEADER.          ENDFORM.

字段说明
I_CALLBACK_PROGRAM调用ALV函数返回的程序
I_CALLBACK PF STATUS GET设置ALV程序内的按钮
I_CALLBACK USER COMMAND设置按钮功能,传输FORM名称
I_CALLBACK TOP_OF_PAGE表头
I_CALLBACK HTML TOP OF PAGE动态表头
IT EXCLUDING隐藏ALV基本按钮
IT EVENTS定义ALV事件
6、调用ALV

点击模式,调用函数会带出来所有的参数,这里需要用到那个放开那个就好。

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
     I_CALLBACK_PROGRAM                = SY-CPROG
     I_CALLBACK_PF_STATUS_SET          = 'SET_STATUS '
     I_CALLBACK_USER_COMMAND           = 'FM_USER_COMMAND '
     I_GRID_TITLE                      = 'GRID标题'
     IS_LAYOUT                         = GS_LAYOUT
     IT_FIELDCAT                       = GT_FIELDCAT
     IT_SORT                           = GT_SORT
     IT_FILTER                         = GT_FILTER
*     I_DEFAULT                         = 'X'
     IT_EVENTS                         = GT_EVENTS
    TABLES
      t_outtab                          = GT_STUDENT
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
7、用户事件
*USER-COMMAND子例程
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD .
  CASE R_UCOMM .
    WHEN 'CALLSF' .
      "PERFORM CALL_SMARTFORMS .
    WHEN 'DOWNLOAD '.

  ENDCASE .
ENDFORM .

注意事项

1、在ALV中,需要注意所有需要显示的列,都必须在相应的内表中有对应的字段,字段名字不能写错。
2、在SAP ABAP程序中,字符串的大小写很重要,在单引号包围的字符串中,一般来说都应该用大写,特别是在调用一些系统的方法时传入字符串参数时。
3、传入到ALV中的列对应的字段名称也必须使用大写字母,否则数据不会显示出来。
4、使用宏定义或者子例程可以减少代码量,并且尽可能实现代码的复用。
5、注意在FORM里定义的变量在离开FORM后,就会被系统释放掉,回收内存空间。

标签:FUNCTION,layout,CALLBACK,ln,fieldcat,ABAP,ALV,TYPE
From: https://blog.csdn.net/qq_55841727/article/details/143248052

相关文章

  • SAP-ABAP开发-按钮的三种调用方法
    1、自己创建调用在程序包中右击创建GUI状态,创建使用自己需要的按钮。注意的是,这里调用后会覆盖掉原来的系统的按钮。2、不覆盖系统的情况下加上自己创建的按钮并调用        右键GUI状态点击创建到界面后,点转到---》调整模板 。这里调整模板是指在系统基础上调整,......
  • 立即执行函数表达式(Immediately Invoked Function Expression, IIFE)的学习
    一、立即执行函数表达式(ImmediatelyInvokedFunctionExpression,IIFE)。这种模式在JavaScript中常用于创建一个独立的作用域,以避免变量污染全局命名空间。常见的例子可以分解如下:(function(window){//这里可以写任何需要执行的代码})(window);在这个例子中,funct......
  • sfunction
    /**Copyright(c)2011-2022,baomidou([email protected]).**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**http:......
  • Python's exec Functions: Execute Dynamically Generated Code
      #encoding:utf-8#版權所有2024©塗聚文有限公司#許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎?#描述:主、子表單窗體傳值Parent-childformoperations#Author:geovindu,GeovinDu塗聚文.#IDE:PyCharm2023.1python3.11#OS......
  • 【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend
    问题描述本地使用Python编写的FunctionApp,发布到AzureFunction后,出现 _cffi_backendmodule无法找到的报错。ERROR:Error:Nomodulenamed'_cffi_backend',Cannotfindmodule.Pleasechecktherequirements.txtfileforthemissingmodule.Formoreinfo,plea......
  • 什么是 SAP ABAP 的 Logon Procedure?
    SAPABAP系统的LogonProcedure(登录过程)是SAP系统中用于管理用户如何连接到系统并访问相关功能与数据的一套复杂流程与验证机制。通过这一登录过程,SAP系统可以确保用户访问的安全性、审计记录的完整性,并有效地管理用户的权限和身份认证。作为企业级信息系统的重要组成......
  • SAP ABAP 系统都有哪些用户类型?
    在SAPABAP系统中,usertype是用户主数据的一部分,它决定了用户如何访问系统以及他们在系统中的权限和职责。usertype字段是指SAP系统中的用户账户类别,通过这个类别可以定义该用户如何使用系统资源,以及哪些操作对于特定用户是允许的或受限制的。具体来说,usertype帮......
  • ABAP动态内表
    需求,内表值对比已知一方数据来源于外围系统,另一方数据来源于SAP。经过处理得到多个两两比较的内表,现在通过指针,指向两个相同的数据TYPES:BEGINOFl_person,pernrTYPEpernr_d,ENDOFl_person.TYPES:t_personTYPETABLEOFl_person.DATA:lt_person......
  • C++可调用对象与function
    目录C++语言中可调用的对象不同类型可能具有相同的调用形式标准库function类型重载的函数与functionC++语言中可调用的对象函数函数指针lambda表达式bind创建的对象重载了函数调用运算符的类和其他对象一样,可调用的对象也有类型。例如,每个lambda有它自己唯一的(未命名)类类......
  • 异步函数 async function
    ◼async关键字用于声明一个异步函数:async是asynchronous单词的缩写,异步、非同步;sync是synchronous单词的缩写,同步、同时;◼async异步函数可以有很多中写法asyncfunctionfoo(){}constfoo1=asyncfunction(){}constfoo2=async()=>{}classPerson{asyncfoo......