二维码

[ooalv] 在屏幕上建立custom control控件,实现oolav输出报表

Twilight发表于 2014-01-18 16:31Twilight 最后回复于 2014-01-18 16:31 [复制链接] 5530 0

oo(oriented object)面向对象,现行流行的编程方式,sap labs用的多,一般在项目上还是用面向过程的方式。

oolav程序运行效果图:
ALV_SET_TABLE_FOR_FIRST_PLAY.jpg

1.创建screen(se80新建程序右击)
creat_screen.jpg

2.在屏幕上创建一个custom control控件和一个pushbutton 控件(点击screen屏幕上layout按钮进入)
dialog_customer_container.jpg
CANCEL_BUTTON.jpg


3.定义逻辑流(flow logic里面不能直接写代码,必须写在module里)
  1. PROCESS BEFORE OUTPUT.
  2. MODULE CLEAR_OK_CODE.
  3. MODULE STATUS_0100.
  4. MODULE DISPLAY_OOALV.
  5. *
  6. PROCESS AFTER INPUT.
  7. MODULE USER_COMMAND_0100.
复制代码

4.定义ok_code
alv_ok_code.jpg


5.主程序coding
  1. REPORT  ZDEMON_003.
  2. DATA OK_CODE TYPE SY-UCOMM. " SY-UCOMM:Function code that PAI triggered
  3. DATA IT_SPFLI TYPE TABLE OF SPFLI.
  4. DATA:S_CONTAINER TYPE SCRFNAME VALUE 'ALVDATA',  " SCRFNAME: Name of a Screen Element  只能为该类型
  5.       ALV_GRID TYPE REF TO CL_GUI_ALV_GRID, "参考CL_GUI_ALV_GRID类,定义对象ALV_GRID
  6.       LO_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

  7. SELECT *
  8.   INTO CORRESPONDING FIELDS OF TABLE IT_SPFLI
  9.   FROM SPFLI.

  10. CALL SCREEN 100.

  11. MODULE STATUS_0100 OUTPUT.
  12.   SET PF-STATUS 'STATUS1'.
  13.   SET TITLEBAR 'ALV TITLEBAR'.
  14. ENDMODULE.                 " STATUS_0100  OUTPUT

  15. MODULE USER_COMMAND_0100 INPUT.
  16. CASE OK_CODE.
  17.   WHEN 'CANCEL'.
  18.     LEAVE PROGRAM.
  19.   WHEN 'BACK' OR 'EXIT'.
  20.     LEAVE TO SCREEN 0.
  21. ENDCASE.
  22. ENDMODULE.                 " USER_COMMAND_0100  INPUT

  23. MODULE CLEAR_OK_CODE OUTPUT.
  24.   CLEAR OK_CODE.
  25. ENDMODULE.                 " CLEAR_OK_CODE  OUTPUT

  26. MODULE DISPLAY_OOALV OUTPUT.
  27.   IF LO_CUSTOM_CONTAINER IS INITIAL. "如果LO_CUSTOM_CONTAINE RDialog容器对象不存在,实例化该对象
  28.     CREATE OBJECT LO_CUSTOM_CONTAINER
  29.            EXPORTING CONTAINER_NAME = S_CONTAINER.
  30.     CREATE OBJECT ALV_GRID "实例化alv对象
  31.            EXPORTING I_PARENT = LO_CUSTOM_CONTAINER.
  32.     CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY "调用alv对象的方法显示报表
  33.          EXPORTING I_STRUCTURE_NAME = 'SPFLI'
  34.            CHANGING IT_OUTTAB = IT_SPFLI.
  35.   ENDIF.
  36. ENDMODULE.                 " DISPLAY_OOALV  OUTPUT
复制代码
注:create object 也可以用pattern call出来,不用手写(pattern->abap objects->patterns 出现如下界面,可以call method / object ....)
create_object.jpg


6.双击主程序中的STATUS1 创建toolbar back和exit菜单
TOOL_BAR.jpg

7.激活所有(包括屏幕、控件、菜单、程序等)
activate_all.jpg





回复

使用道具 举报

快速回帖

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

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