Preface
由于最近参与开发的Business case涉及到对于人事报表的自定义输出,因此对SAP List Viewer(以下称ALV)在HCM模块下的function module进行了一番研究。其中主要包括对HR_PAL_CREATE_NODE_CATEG,HR_PAL_NODE_ADD,HR_PAL_NODE_ADD_ROW,HR_PAL_NODE_MSG_ADD这些function的参数进行配置来实现HCM中人事报表输出的ALV自定义显示需求。
其实之前也在网上找到了不少关于SAP ALV开发的文章,但主要还是针对REUSE_ALV_GRID_DISPLAY,REUSE_ALV_LIST_DISPLAY这几个general的ALV function的相关配置与原理介绍。所以我决定写一篇文章简单介绍下HCM模块下的ALV function 以方便开发者使用。
Introduction to ALV
对于SAP ALV已经有所了解的,可以直接跳过这一节。
ALV――SAP LIST VIEWER是SAP中的一种报表方式,这里姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式及用户接口。ALV是系统的一种网格的显示方式,这种方式带有汇总\排序\筛选等功能,ALV格式的数据是以单元格为单位显示,SAP提供了一套ALV的功能模块,可以对输出报表的样式作修饰,提高报表输出的可读性和功能性,对于动态报表程序是一个很有效率的工具。ALV家族包含3中ALV工具:简易的,两层ALV,分等级连续的列表和树形结构的ALV。一般的ALV报表有一个表头,再加上表内容,并附加一些如排序,分类汇总,合计或下载为本地文件等预设功能。ALV报表显示方式基本上有2种,一种是Grid方式,一种是List方式,是分别调用不同的Function来实现。
Pastedfrom <http://www.cnblogs.com/VerySky/articles/2192401.html>
而自己对于ALV的理解就是,在SAP GUI环境下的'excel'。它的表头,内容,排版,排序都是可以通过function的参数进行实现,而且也可以在ALV中加入树形结构来更好地表现出数据的分类以及相应的错误提示,同时sap也提供了一下标准的tool bar可以对数据内容进行操作,这个tool bar也可以自定义去实现一些非标准化的功能来满足业务上的一些特别需求。总体来说,ALV是一个比较灵活的展现数据的工具,只是在目前SAP GUI上显得有点笨重与陈旧,而且对大量数据的显示时会比较依靠电脑本身的性能。(所以很多报表可能都已经不依靠SAPGUI去实现了)。下图就是一个比较标准用REUSE_ALV_GRID_DISPLAY实现的的ALV:
ALV in HCM
在HCM模块中,标准的ALV显示可能满足不了某些具体业务的需求,所以加入了树形结构与相关错误信息提示来显示报表运行结果以及对数据所属的归类,这里被称为Application log。同时为了方便在HCM下的相关开发,专门用到了一套针对HCM的function module,其主要功能就是整合了不少标准ALV创建的步骤,树形结构的建立与相关提示信息的创建,下图就是该function module 的具体内容:
在HCM中的报表输出往往是包含了一个applicationlog和ALV table,其中这个applicationlog便是上述的树形结构。这里就要着重介绍下如何建立这么一个树形的application log与对应ALV table。
这里一共可分为四个步骤:ALV category创建 ->基于该category创建一个tree的node ->添加内容到该node -> 展示log&ALV
下图就是一个简单的结果示例:
ALV category 创建
这里有两种方式去创建一个ALV的category:
根据DDIC(data dictionary)中的structure name去自动创建一个filed category
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'RPCNTAXM' "DDIC里面的structurename(要用大写)
CHANGING
ct_fieldcat =