Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7127958
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2008-12-04 22:14:02

很多兄弟问我如何在SAP里面实现对本地OCX的调用,希望能有个例子,不才写了一个在GUI里面调用Flash播放器的例子,希望能抛砖引玉,如果有好的想法,请不吝留言,让大家分享一下,谢谢!
 
REPORT  z_barry_flash NO STANDARD PAGE HEADING.
 
DATA: cont TYPE REF TO cl_gui_custom_container .
 
CLASS cl_flash DEFINITION DEFERRED .
DATA: o_flash TYPE REF TO cl_flash .
 
*---------------------------------------------------------------------*
* CLASS cl_flash DEFINITION
*---------------------------------------------------------------------*
CLASS cl_flash DEFINITION INHERITING FROM cl_gui_control .
  PUBLIC SECTION .
    METHODS:
      constructor
        IMPORTING
          value(shellstyle) TYPE i OPTIONAL
          value(disp_mode) TYPE i OPTIONAL
          value(life_time) TYPE i OPTIONAL
          value(name) TYPE string OPTIONAL
        EXCEPTIONS
          cntl_error
          cntl_install_error .
ENDCLASS .                    "cl_flash DEFINITION
 
*----------------------------------------------------------------------*
*       CLASS cl_flash IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS cl_flash IMPLEMENTATION .
  METHOD constructor.
    DATA: ctrl_name(80) TYPE c ,
    wf_clsid(100) TYPE c .
    IF NOT cl_gui_object=>activex IS INITIAL .
      wf_clsid = '{D27CDB6E-AE6D-11cf-96B8-444553540000}' .
    ELSE .
      RAISE cntl_error .
    ENDIF .
    CALL METHOD super->constructor
      EXPORTING
        clsid             = wf_clsid
        parent            = cont
        shellstyle        = shellstyle
        lifetime          = life_time
        name              = name
      EXCEPTIONS
        cntl_system_error = 1
        OTHERS            = 2.
    CASE sy-subrc .
      WHEN 1 .
        RAISE cntl_install_error .
      WHEN 2 .
        RAISE cntl_error .
    ENDCASE .
    CALL METHOD set_property
      EXPORTING
        property          = 'Movie'
        value             = 'c:\test.swf'
      EXCEPTIONS
        cntl_system_error = 1
        cntl_error        = 2
        OTHERS            = 3.
    CALL METHOD cl_gui_cfw=>subscribe
      EXPORTING
        ref     = me
        shellid = me->h_control-shellid
      EXCEPTIONS
        OTHERS  = 1.
    IF sy-subrc NE 0 .
      RAISE cntl_error .
    ENDIF .
  ENDMETHOD . "constructor
ENDCLASS . "cl_flash IMPLEMENTATION
 
START-OF-SELECTION.
  CALL SCREEN 100 .
 
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'MAIN'.
  IF cont IS INITIAL.
    CREATE OBJECT cont
      EXPORTING
        container_name = 'CON1'.
    CREATE OBJECT o_flash .
  ENDIF.
ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE PROGRAM.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
阅读(8150) | 评论(13) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-02-15 21:59:35

执行后屏幕是空白,请问是什么原因呢 ?

chinaunix网友2008-12-21 00:47:02

这里虽然只写了set_property,不过类cl_gui_control 里面能看到还有get_property和call_method等,如 call method call_method exporting method = 'Open' p_count = 1 p1 = file_name exceptions others = 1. if sy-subrc ne 0. raise error. endif.

chinaunix网友2008-12-20 14:46:53

就这个例子而言,请问老白如何在运行过程中执行播放另一个swf文件和如何暂停flash的播放? 暂停或继续播放在VFP中的语法是:Object.playing = .F. 或 .T.

chinaunix网友2008-12-13 02:05:21

把读取地磅秤读重量的VB程序封装成OCX,然后在SAP中用SOLE注册,再写ABAP语句,类似create object obj class...的格式应该就能搞定吧? 由于是不带界面的,我想可以参考:http://blog.chinaunix.net/u1/40527/showart_1096269.html

wusj5212008-12-12 09:58:42

最近我一直在为SAP能不能调用OCX的事发愁,您这里写的真好,真是高人呀。 我目前有这样的问题,我想把地磅秤的重量读到dialog中的显示。 目前我的想法是这样,用其它如VB写个读地磅秤的重量以exe的形式运行在WIN进程中,同时在这个exe中call RFC把数据送到sap中的对话中显示。请您指点一下我应如何参照你的程序来实现?多谢了