SAP ALV报表展示案例以及错误解决方案

本文简单介绍alv报表的开发,以及在开发过程中遇见的细节性及错误

1.定义alv所用到的类型池

type-pools : slis

2.分为四小部

2.1引用你所用到的透明表

tables: vbak.

2.2定义你应用该表中想要的字段

TYPES: BEGIN OF  gty_alv,
         vkorg TYPE vbak-vkorg , "销售组织
         vtweg TYPE vbak-vtweg , "分销渠道
         vkgrp TYPE vbak-vkgrp , "销售组
         auart TYPE vbak-auart , "订单类型
         erdat TYPE vbak-erdat , "订单日期
         vbeln TYPE vbak-vbeln , "订单号
       END OF gty_alv.

2.3定义透明表的内表

data gt_vbak type table of gty_alv.

2.4定义透明表的工作区

data gs_vbak type gty_alv

3.定义alv所需要的对象

DATA gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA gs_fieldcat TYPE slis_fieldcat_alv.

DATA gs_layout TYPE slis_layout_alv.

*宏定义
DEFINE  %%append_fieldcat.
  CLEAR gs_fieldcat.
  gs_fieldcat-fieldname = &1.
  gs_fieldcat-seltext_m = &2.
    APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.

4.定义选择屏幕

SELECTION-SCREEN : BEGIN OF BLOCK vie WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS s_vbeln FOR vbak-vbeln.

*单选
PARAMETERS: p_1 RADIOBUTTON GROUP grp1 DEFAULT 'X' .
PARAMETERS: p_2 RADIOBUTTON GROUP grp1 .

SELECTION-SCREEN:END OF BLOCK vie.

5.对数据进行处理(取数,显示,alv输出,layout输出)

start-of-selection.
	perfoem get_data. "取数
	 IF gt_vbak IS NOT INITIAL.
    PERFORM show_data.  "显示数据
  ELSE.
    MESSAGE s000 WITH '没数据'.

FORM get_data . "取数
  IF p_1 = 'X'.
    SELECT
       vkorg  "销售组织
       vtweg  "分销渠道
       vkgrp  "销售组
       auart  "订单类型
       erdat  "订单日期
       vbeln  "订单号
    FROM vbak
    INTO CORRESPONDING FIELDS OF TABLE gt_vbak
    WHERE vbeln IN s_vbeln.
  ELSE.
    MESSAGE s000 WITH '暂无'.
  ENDIF.

ENDFORM.

FORM show_data . "显示数据

   PERFORM bulid_fieldcat. "字段显示
   PERFORM build_alv. "alv显示
   PERFORM bulid_layout. "layout显示

ENDFORM.

FORM build_alv .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
     I_CALLBACK_PROGRAM                =  sy-repid
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME                  =
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE  =
*     I_GRID_SETTINGS                   =
      is_layout     = gs_layout
      it_fieldcat   = gt_fieldcat
*     IT_EXCLUDING  =
*     IT_SPECIAL_GROUPS                 =
*     IT_SORT       =
*     IT_FILTER     =
*     IS_SEL_HIDE   =
*     I_DEFAULT     = 'X'
*     I_SAVE        = ' '
*     IS_VARIANT    =
*     IT_EVENTS     =
*     IT_EVENT_EXIT =
*     IS_PRINT      =
*     IS_REPREP_ID  =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     I_HTML_HEIGHT_TOP                 = 0
*     I_HTML_HEIGHT_END                 = 0
*     IT_ALV_GRAPHICS                   =
*     IT_HYPERLINK  =
*     IT_ADD_FIELDCAT                   =
*     IT_EXCEPT_QINFO                   =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*  IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab      = gt_vbak
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.

FORM bulid_fieldcat .

  %%append_fieldcat:
     'vkorg'  '销售组织',
     'vtweg'  '分销渠道',
     'vkgrp'  '销售组',
     'auart'  '订单类型',
     'erdat'  '订单日期',
     'vbeln'  '订单号'.

ENDFORM.

FORM bulid_layout .
  gs_layout-colwidth_optimize = 'X'.
  gs_layout-zebra = 'X'.
ENDFORM.

6.最终效果

在这里插入图片描述

7.遇到的一些错误

7.1.这个错误是"字段目录没找到"

原因:在调用"REUSE_ALV_GRID_DISPLAY"时忘记给 " it_fieldcat " 赋值
解决方案: 把字段it_fieldcat = gt_fieldcat
在这里插入图片描述

7.2. 第37行 append 的应该是列属性,不应该是内表

在这里插入图片描述

7.3. 在区间时用 in

非区间用 =
要不然会查不出数据的

在这里插入图片描述

7.4.这个错误算是细节"字段显示"

注意一下就行了.不然容易出错.子程序的顺序出错了,下面箭头指的的是正确的…
之前写的是build_alv在build_fieldcat前面报的就是下面的错误
在这里插入图片描述
欢迎补充说明.以上仅个人开发经验,仅供参考!!!

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值