杉木卓卓的博客

每一天都要进步!

SAP-DY3

FUNCTON和SAP表的查找方法

函数模块

与子程序(form)相比,函数模块是在程序外部定义的,而且能够在全系统范围内被调用的子程序;而子程序(form)一般来说只在本程序内定义和调用。
函数模块具有透明的接口,它的接口与代码分开定义。
函数模块都隶属于某一个函数组
函数模块由函数制作器(Function Builder)创建
函数模块可以被本系统的程序调用,而且可以被其它的R/3系统、R/2系统甚至是非R/3系统调用(RFC)

函数组

每个函数模块都属于一个函数组
每个函数组里面的函数模块都有相同的主题,实现的功能相互联系
函数组实际上是一个类型为F的ABAP程序,它本身不能够被执行
当一个函数模块被调用的时候,与它同一个函数组的函数都被调到内存区域里面;

函数模块事物码: SE37

函数模块的组成:
- Administration
- Interface
- import parameters:传入参数
- export parameters: 产出参数
- changing parameters: 可修改参数
- tables:程序中用的内表,会被修改
- exceptions: 异常
- interface
- documentation
- Source code
- Documentation

函数模块可以设置对异常的处理,以防止出现运行时候错误,没有处理异常会报错
大概示例:

report
data: free_seats like sflight-seatsmax.
parameters: pa_occ like sflight-seatsocc,
            pa_max like sflihgt-seatsmax.
strat-of-selelction.
    call function 'BC400_FREE_SEATS'
    EXPORTING
        seatsmax = pa_max
        seatsocc = pa_occ
    IMPORTING
        seatsfree = free_seats
    EXCEPTIONS
        occ_gt_max = 1 " 异常后的数字可以将sy-subrc改为这个数字,在function中RAISE —EXPNAME,即可处理异常
        max_eq_0 = 2
        others = 3.
    case sy-subrc.
        when 1.
            write text-ex1.
        when 2.
            write text-ex2.
        when 3.
            write text-oth.
    endcase.

function中是不能写FORM的,但是可以写在endfunction外面,然后在里面使用

  • bapi事物码,这是按照各个模块,应用的标准的function

ALV

ALV――ABAP LIST VIEWER,姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式以及用户接口。
ALV即能显示简单表单(SIMPLE LIST)又能显示有序表单(SEQUENTIAL LIST):
简单表单(SIMPLE LIST)包含一系列不分层次的(NON-HIERARCHICAL),用户自定义的列。
层次表(即有序表SEQUENTIALIST)包含列表头以及它的子行,一个列表头的关键行能带出它下面的一些列项目(我们自己理解的时候可以想到BOM表的层次结构)。我们还可以在简单表单以及关联表单中显示小计和总计

程序的编写

1.在我们写ALV程序的时候,有一个类型组是肯定要用到的:

TYPE-POOLS:SLIS。

在这个类型组中有很多ALV的自定义数据类型以及结构化数据类型(通过TYPE来定义的),我们在写ALV表单的时候需要调用的。我们常用的几个有(蓝色部分)

data: i_fieldcat_alv type slis_t_fieldcat_alv with header line. “用来存储我们将要在表单显示区域显示出来的表单的列名,每个列名对应的字段名以及列表头其他相关属性信息的数据类型
i_layout type slis_layout_alv. “ALV的格式
i_list_comments type slis_t_listheader.“用来填充表单标题区域的数据类型

    “下面这三个数据类型的使用视情况而定
      i_events        type slis_t_event,
      i_event_exit    type slis_t_event_exit,
      i_excluding     type slis_t_extab.   

2.写一个ALV程序的基本流程(主要包括ALV相关的那部分,后面会附上一个ALV源程序的代码):

第一步:定义将要用到的表,即TALBES定义部分,然后定义TYPE-POOLS: SLIS.

第二步:定义“1”中提到的这些数据类型或者内表的实体对象

第三步:定义一些需要用到的变量,比如我们常定义的有:

   Data: w_repid  like  sy-repid,  “ABAP程序,我们一般取当前程序
        w_callback_ucomm   type slis_formname,   "字符型,功能
        w_print            type slis_print_alv,  "类型组
        w_layout           type slis_layout_alv, "类型组
        w_html_top_of_page type  slis_formname,  "字符型
        w_fieldcat_alv     like line of i_fieldcat_alv, “从上面的数据结构类型引用过来的
        w_excluding        like line of i_excluding,    “同上
        w_events           like line of i_events,       “同上
        w_event_exit       like line of i_event_exit,   “同上
        w_list_comments    like line of i_list_comments.“同上

第四步: 定义自己的选择屏幕
第五步: 定义INITIALIZATION部分,在这个部分往往要指定w_repid的值,

        w_repid = sy-repid。

第六步: start-of-selection部分

○1用一个子函数完成对ALV表单标题区域的赋值(i_list_comments)。

○2用一个子函数完成自己所需要数据的抓取

○3用一个子函数完成要显示列表的列名行(第一行)的相关赋值(i_fieldcat_alv)以及设置

○4用一个子函数完成输出格式的设置(i_layout),比如双击一条记录是否弹出对话框啊?是用哪个功能键触发等等

○5用一个子函数FORM DISPLAY_DATA来显示上面我们已经分别封装好的数据,需要调用两个常用的FUNCTION MODULE:
FUNCTION ‘REUSE_ALV_GRID_DISPLAY’ “用来显示表单数据
FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’ “用来显示表单标题

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。&要有不对的地方,请不吝指正。 https://blog.csdn.net/qq_34259584/article/details/79958846
个人分类: ABAP学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

SAP-DY3

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭