二维码

SAP ABAP分页功能通用代码  

Twilight发表于 2016-06-02 09:58tongxiaoxing 最后回复于 2024-03-15 09:02 [复制链接] 24557 60

我们在SAP中开发使用Table control功能就能自动分页,但是我们在做接口时,就会遇到这样的需求:前端java或.net系统通过接口调用查询SAP中的数据,为了单次调用减轻宽带压力,所有要求没有调用接口查询时,只要传输单页数据,所以我们需要用到分页功能。

  1. PERFORM frm_split_page TABLES et_item[]
  2.                        USING page rows ep_head-re_count
  3.                        CHANGING ep_head-status ep_head-message.


  4. FORM frm_split_page TABLES p_table          "需要分页的table数据传入,form里处理好的分页数据也是通过这个参数传出(引用传递)
  5.                      USING VALUE(p_page)    "mpos-页码
  6.                            VALUE(p_rows)    "mpos-web每页显示的行数
  7.                            VALUE(p_count)   "传入table的记录数
  8.                      CHANGING p_status      "查询状态
  9.                                p_message.   "返回消息

  10.   DATA: lv_start TYPE int4.
  11.   DATA: lv_end TYPE int4.
  12.   DATA: lv_message TYPE char40.
  13. *******由于table:p_table参数类型是不确定的,只用动态获取类型
  14.   DATA: tr_table  TYPE REF TO cl_abap_tabledescr,
  15.         tr_struct TYPE REF TO cl_abap_structdescr,
  16.         tr_type   TYPE REF TO cl_abap_typedescr,
  17.         fs_table  TYPE REF TO data,
  18.         fs_struct TYPE REF TO data,
  19.         td_comp   TYPE cl_abap_structdescr=>component_table.
  20.   FIELD-SYMBOLS:
  21.         <fs_table>  TYPE ANY TABLE,
  22.         <fs_struct> TYPE any.
  23.   tr_struct ?= cl_abap_structdescr=>describe_by_data( p_table ).
  24.   td_comp = tr_struct->get_components( ).
  25.   CALL METHOD cl_abap_structdescr=>create
  26.     EXPORTING
  27.       p_components = td_comp
  28.     RECEIVING
  29.       p_result     = tr_struct.
  30.   CALL METHOD cl_abap_tabledescr=>create
  31.     EXPORTING
  32.       p_line_type = tr_struct
  33.     RECEIVING
  34.       p_result    = tr_table.

  35.   CREATE DATA fs_table  TYPE HANDLE  tr_table.
  36.   CREATE DATA fs_struct TYPE HANDLE  tr_struct.
  37.   ASSIGN fs_table->* TO <fs_table>.
  38.   ASSIGN fs_struct->* TO <fs_struct>.
  39. *******由于table:p_table参数类型是不确定的,只用动态获取类型
  40.   <fs_table> = p_table[].
  41.   REFRESH p_table.
  42.   lv_start = ( p_page - 1 ) * p_rows + 1.  "当前页开始记录数
  43.   lv_end   = p_page * p_rows.          "当前页结束记录数
  44.   IF p_count < lv_start.  "  如果sap查询到的记录数<当前页开始记录数
  45.     p_status = 'False'.
  46.     p_message = '没有符合条件的页码'.
  47.   ELSE.
  48.     LOOP AT <fs_table> ASSIGNING <fs_struct>.
  49.       IF sy-tabix BETWEEN lv_start AND lv_end.
  50.         APPEND <fs_struct> TO p_table.
  51.       ENDIF.
  52.     ENDLOOP.
  53.   ENDIF.
  54. ENDFORM.
复制代码


如果内表结果不确定,可通过上面代码实现,如果内表结构都是确定的,则直接通过下面的几句代码就可以实现:
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

uniqueanswer

RE: SAP ABAP分页功能通用代码

正好项目上有这个需求,学习下
回复 支持 反对

使用道具 举报

teyun2222
學習了,感謝分享
回复

使用道具 举报

zzxbat007
新人一枚 受教了
SAP Business One 凭借单一系统 优化你的整个业务  www.iwilley.com
回复

使用道具 举报

晓月之影

RE: SAP ABAP分页功能通用代码

这个功能不错
回复

使用道具 举报

时光太浅

RE: SAP ABAP分页功能通用代码

请指教smartforms使用命令如何强制分页。
回复 支持 反对

使用道具 举报

Twilight

RE: SAP ABAP分页功能通用代码

时光太浅 发表于 2016-7-29 17:08
请指教smartforms使用命令如何强制分页。

command命令 强制分页选中,然后就是逻辑判断,什么时候执行这个command,然后就冷分页了,关键点在于分页逻辑的判断
回复 支持 反对

使用道具 举报

494939637

RE: SAP ABAP分页功能通用代码

学习一下  谢谢分享
回复 支持 反对

使用道具 举报

mckz8888

RE: SAP ABAP分页功能通用代码

感谢分享 学习 学习
回复

使用道具 举报

东方不亮西方亮
感谢分享,学习了。
回复

使用道具 举报

吃不胖的胖子
學習了,感謝分享
回复

使用道具 举报

涛神的歌
学习下,感谢分享
回复

使用道具 举报

cheng333456
支持楼主,支持SAP顾问圈,以后经常来!
回复 支持 反对

使用道具 举报

pung4pung
好像没什么用~~~~~~~~~~~~
回复

使用道具 举报

huangshy
学习了,感谢分享
回复

使用道具 举报

GD小鬼
ABAP分页功能通用代码
回复 支持 反对

使用道具 举报

lhx7300886

RE: SAP ABAP分页功能通用代码

这个是在程序中分好页,不是在smartform中分吧
回复 支持 反对

使用道具 举报

yaohuaileqq

RE: SAP ABAP分页功能通用代码

学习记录!!!!!
回复

使用道具 举报

bobo520

RE: SAP ABAP分页功能通用代码

学习了 谢谢
回复

使用道具 举报

Timor

RE: SAP ABAP分页功能通用代码

学习中
回复

使用道具 举报

1234下一页

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表