SAP播放本地视频及音频(仅限于window MediaPlayer可播放文件)详解编程语言

这个是从SCN上看到的,自己稍加修改,编制,做的还可以,可以播放视频,音频,唯一的不足就是不能控制播放视频的显示窗口大小,希望有人能帮忙解决,感激!

视频播放类:(新建类Z_CL_MEDIA,点击基于原代码,复制下面代码进去,激活)

class Z_CL_MEDIA definition 
  public 
  inheriting from CL_GUI_CONTROL 
  final 
  create public . 
 
public section. 
  type-pools CNTL . 
 
  methods CONSTRUCTOR 
    importing 
      !PARENT type ref to CL_GUI_CONTAINER . 
  methods SETDATASOURCE 
    importing 
      !FILENAME type STRING . 
 
  methods DISPATCH 
    redefinition . 
  methods SET_HEIGHT 
    redefinition . 
  methods SET_WIDTH 
    redefinition . 
  methods SET_POSITION 
    redefinition . 
protected section. 
ENDCLASS. 
 
 
 
CLASS Z_CL_MEDIA IMPLEMENTATION. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->CONSTRUCTOR 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] PARENT                         TYPE REF TO CL_GUI_CONTAINER 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
    METHOD constructor. 
      CALL METHOD super->constructor 
        EXPORTING 
          clsid    = 'MediaPlayer.MediaPlayer' 
          parent   = parent 
          lifetime = 2 
        EXCEPTIONS 
          OTHERS   = 1. 
 
    ENDMETHOD. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->DISPATCH 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] CARGO                          TYPE        SYUCOMM 
* | [--->] EVENTID                        TYPE        I 
* | [--->] IS_SHELLEVENT                  TYPE        CHAR1 
* | [--->] IS_SYSTEMDISPATCH              TYPE        CHAR1(optional) 
* | [EXC!] CNTL_ERROR 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
    METHOD dispatch. 
      CALL METHOD cl_gui_cfw=>flush. 
    ENDMETHOD. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->SETDATASOURCE 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] FILENAME                       TYPE        STRING 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
    METHOD setdatasource. 
      CALL METHOD set_property 
        EXPORTING 
          property = 'FileName' 
          value    = filename. 
 
*      CALL METHOD set_width 
*        EXPORTING 
*          width = 500. 
*      CALL METHOD set_height 
*        EXPORTING 
*          height = 200. 
      CALL METHOD me->set_position 
        EXPORTING 
          height            = 200 
          left              = 10 
          top               = 10 
          width             = 500 
        EXCEPTIONS 
          cntl_error        = 1 
          cntl_system_error = 2 
          OTHERS            = 3. 
      IF sy-subrc <> 0. 
      ENDIF. 
 
 
      CALL METHOD cl_gui_cfw=>flush. 
    ENDMETHOD. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->SET_HEIGHT 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] HEIGHT                         TYPE        I 
* | [EXC!] CNTL_ERROR 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
  METHOD set_height. 
    CALL METHOD super->set_height 
      EXPORTING 
        height     = height 
      EXCEPTIONS 
        cntl_error = 1 
        OTHERS     = 2. 
    IF sy-subrc <> 0. 
* Implement suitable error handling here 
    ENDIF. 
  ENDMETHOD. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->SET_POSITION 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] HEIGHT                         TYPE        I(optional) 
* | [--->] LEFT                           TYPE        I(optional) 
* | [--->] TOP                            TYPE        I(optional) 
* | [--->] WIDTH                          TYPE        I(optional) 
* | [EXC!] CNTL_ERROR 
* | [EXC!] CNTL_SYSTEM_ERROR 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
  METHOD set_position. 
    CALL METHOD super->set_position 
      EXPORTING 
        height            = height 
        left              = left 
        top               = top 
        width             = width 
      EXCEPTIONS 
        cntl_error        = 1 
        cntl_system_error = 2 
        OTHERS            = 3. 
    IF sy-subrc <> 0. 
    ENDIF. 
  ENDMETHOD. 
 
 
* <SIGNATURE>---------------------------------------------------------------------------------------+ 
* | Instance Public Method Z_CL_MEDIA->SET_WIDTH 
* +-------------------------------------------------------------------------------------------------+ 
* | [--->] WIDTH                          TYPE        I 
* | [EXC!] CNTL_ERROR 
* +--------------------------------------------------------------------------------------</SIGNATURE> 
  METHOD set_width. 
    CALL METHOD super->set_width 
      EXPORTING 
        width      = width 
      EXCEPTIONS 
        cntl_error = 1 
        OTHERS     = 2. 
    IF sy-subrc <> 0. 
    ENDIF. 
  ENDMETHOD. 
ENDCLASS.



程序ZMEDIA_PLAY
TOP:
TYPES:BEGIN OF ty_list, 
        sel(1), 
        name(50), 
        string   TYPE string, 
      END OF ty_list. 
DATA:gv_con TYPE REF TO cl_gui_custom_container. 
DATA:gl_meida      TYPE REF TO z_cl_media, 
     cl_control    TYPE REF TO i_oi_container_control, 
     cl_error      TYPE REF TO i_oi_error, 
     g_has_activex TYPE c, 
     cl_errors     TYPE REF TO i_oi_error OCCURS 0 WITH HEADER LINE. 
 
DATA:gt_list TYPE TABLE OF ty_list. 
DATA:gw_list LIKE LINE OF gt_list. 
 
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_9876' ITSELF 
CONTROLS: tc_9876 TYPE TABLEVIEW USING SCREEN 9876. 
 
*&SPWIZARD: LINES OF TABLECONTROL 'TC_9876' 
DATA:     g_tc_9876_lines  LIKE sy-loopc. 
 
DATA:     ok_code LIKE sy-ucomm.

PBO:

*----------------------------------------------------------------------* 
***INCLUDE ZMEIDA_PBO. 
*----------------------------------------------------------------------* 
*&---------------------------------------------------------------------* 
*&      Module  STATUS_9876  OUTPUT 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
MODULE status_9876 OUTPUT. 
  SET PF-STATUS 'MEDIA'. 
  "  SET TITLEBAR 'xxx'. 
ENDMODULE. 
*&---------------------------------------------------------------------* 
*&      Module  MOD_INI_CON  OUTPUT 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
MODULE mod_ini_con OUTPUT. 
  DATA:gv_width TYPE i. 
  DATA:gv_height TYPE i. 
 
  IF gv_con IS INITIAL. 
    CREATE OBJECT gv_con 
      EXPORTING 
*       parent                      = 
        container_name              = 'GV_CON' 
*       style                       = 
*       lifetime                    = lifetime_default 
*       repid                       = 
*       dynnr                       = 
*       no_autodef_progid_dynnr     = 
      EXCEPTIONS 
        cntl_error                  = 1 
        cntl_system_error           = 2 
        create_error                = 3 
        lifetime_error              = 4 
        lifetime_dynpro_dynpro_link = 5 
        OTHERS                      = 6. 
    IF sy-subrc <> 0. 
    ENDIF. 
 
  ENDIF. 
 
 
  IF gl_meida IS INITIAL. 
    CREATE OBJECT gl_meida 
      EXPORTING 
        parent = gv_con. 
  ENDIF. 
 
 
  IF gt_list IS INITIAL. 
    gw_list-string = 'C:/Wildlife.wmv'. 
    gw_list-name = 'Wildlife.wmv'. 
    APPEND gw_list TO gt_list. 
    gw_list-string = 'C:/123.mp4'. 
    gw_list-name = '123.mp4'. 
    APPEND gw_list TO gt_list. 
    gw_list-string = 'C:/正业之歌.mp3'. 
    gw_list-name = '正业之歌.mp3'. 
    APPEND gw_list TO gt_list. 
  ENDIF. 
 
  CALL METHOD cl_gui_cfw=>flush. 
 
 
ENDMODULE. 
 
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9876'. DO NOT CHANGE THIS LINE! 
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR 
MODULE tc_9876_change_tc_attr OUTPUT. 
  DESCRIBE TABLE gt_list LINES tc_9876-lines. 
ENDMODULE. 
 
*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_9876'. DO NOT CHANGE THIS LINE! 
*&SPWIZARD: GET LINES OF TABLECONTROL 
MODULE tc_9876_get_lines OUTPUT. 
  g_tc_9876_lines = sy-loopc. 
ENDMODULE.

PAI:

*----------------------------------------------------------------------* 
***INCLUDE ZMEIDA_PAI. 
*----------------------------------------------------------------------* 
*&---------------------------------------------------------------------* 
*&      Module  USER_COMMAND_9876  INPUT 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
MODULE user_command_9876 INPUT. 
  CASE sy-ucomm. 
    WHEN 'BACK'. 
      LEAVE TO SCREEN 0. 
    WHEN 'CANL' OR 'EXIT'. 
      LEAVE PROGRAM. 
    WHEN 'PLAY'. 
      READ TABLE gt_list INTO gw_list WITH KEY sel = 'X'. 
      IF sy-subrc = 0. 
        CALL METHOD gl_meida->setdatasource 
          EXPORTING 
            filename = gw_list-string. 
      ENDIF. 
    WHEN 'ADD'. 
      PERFORM prm_add_list. 
    WHEN OTHERS. 
  ENDCASE. 
  CLEAR:sy-ucomm. 
ENDMODULE. 
 
*&SPWIZARD: INPUT MODUL FOR TC 'TC_9876'. DO NOT CHANGE THIS LINE! 
*&SPWIZARD: MARK TABLE 
MODULE tc_9876_mark INPUT. 
  DATA: g_tc_9876_wa2 LIKE LINE OF gt_list. 
  IF tc_9876-line_sel_mode = 1 
  AND gw_list-sel = 'X'. 
    LOOP AT gt_list INTO g_tc_9876_wa2 
      WHERE sel = 'X'. 
      g_tc_9876_wa2-sel = ''. 
      MODIFY gt_list 
        FROM g_tc_9876_wa2 
        TRANSPORTING sel. 
    ENDLOOP. 
  ENDIF. 
  MODIFY gt_list 
    FROM gw_list 
    INDEX tc_9876-current_line 
    TRANSPORTING sel. 
ENDMODULE. 
 
*&SPWIZARD: INPUT MODULE FOR TC 'TC_9876'. DO NOT CHANGE THIS LINE! 
*&SPWIZARD: PROCESS USER COMMAND 
MODULE tc_9876_user_command INPUT. 
  ok_code = sy-ucomm. 
  PERFORM user_ok_tc USING    'TC_9876' 
                              'GT_LIST' 
                              'SEL' 
                     CHANGING ok_code. 
  sy-ucomm = ok_code. 
ENDMODULE.

frm:

*----------------------------------------------------------------------* 
*   INCLUDE TABLECONTROL_FORMS                                         * 
*----------------------------------------------------------------------* 
 
*&---------------------------------------------------------------------* 
*&      Form  USER_OK_TC                                               * 
*&---------------------------------------------------------------------* 
 FORM user_ok_tc USING    p_tc_name TYPE dynfnam 
                          p_table_name 
                          p_mark_name 
                 CHANGING p_ok      LIKE sy-ucomm. 
 
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* 
   DATA: l_ok     TYPE sy-ucomm, 
         l_offset TYPE i. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
*&SPWIZARD: Table control specific operations                          * 
*&SPWIZARD: evaluate TC name and operations                            * 
   SEARCH p_ok FOR p_tc_name. 
   IF sy-subrc <> 0. 
     EXIT. 
   ENDIF. 
   l_offset = strlen( p_tc_name ) + 1. 
   l_ok = p_ok+l_offset. 
*&SPWIZARD: execute general and TC specific operations                 * 
   CASE l_ok. 
     WHEN 'INSR'.                      "insert row 
       PERFORM fcode_insert_row USING    p_tc_name 
                                         p_table_name. 
       CLEAR p_ok. 
 
     WHEN 'DELE'.                      "delete row 
       PERFORM fcode_delete_row USING    p_tc_name 
                                         p_table_name 
                                         p_mark_name. 
       CLEAR p_ok. 
 
     WHEN 'P--' OR                     "top of list 
          'P-'  OR                     "previous page 
          'P+'  OR                     "next page 
          'P++'.                       "bottom of list 
       PERFORM compute_scrolling_in_tc USING p_tc_name 
                                             l_ok. 
       CLEAR p_ok. 
*     WHEN 'L--'.                       "total left 
*       PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME. 
* 
*     WHEN 'L-'.                        "column left 
*       PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME. 
* 
*     WHEN 'R+'.                        "column right 
*       PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME. 
* 
*     WHEN 'R++'.                       "total right 
*       PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME. 
* 
     WHEN 'MARK'.                      "mark all filled lines 
       PERFORM fcode_tc_mark_lines USING p_tc_name 
                                         p_table_name 
                                         p_mark_name   . 
       CLEAR p_ok. 
 
     WHEN 'DMRK'.                      "demark all filled lines 
       PERFORM fcode_tc_demark_lines USING p_tc_name 
                                           p_table_name 
                                           p_mark_name . 
       CLEAR p_ok. 
 
*     WHEN 'SASCEND'   OR 
*          'SDESCEND'.                  "sort column 
*       PERFORM FCODE_SORT_TC USING P_TC_NAME 
*                                   l_ok. 
 
   ENDCASE. 
 
 ENDFORM.                              " USER_OK_TC 
 
*&---------------------------------------------------------------------* 
*&      Form  FCODE_INSERT_ROW                                         * 
*&---------------------------------------------------------------------* 
 FORM fcode_insert_row 
               USING    p_tc_name           TYPE dynfnam 
                        p_table_name             . 
 
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* 
   DATA l_lines_name       LIKE feld-name. 
   DATA l_selline          LIKE sy-stepl. 
   DATA l_lastline         TYPE i. 
   DATA l_line             TYPE i. 
   DATA l_table_name       LIKE feld-name. 
   FIELD-SYMBOLS <tc>                 TYPE cxtab_control. 
   FIELD-SYMBOLS <table>              TYPE STANDARD TABLE. 
   FIELD-SYMBOLS <lines>              TYPE i. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
   ASSIGN (p_tc_name) TO <tc>. 
 
*&SPWIZARD: get the table, which belongs to the tc                     * 
   CONCATENATE p_table_name '[]' INTO l_table_name. "table body 
   ASSIGN (l_table_name) TO <table>.                "not headerline 
 
*&SPWIZARD: get looplines of TableControl                              * 
   CONCATENATE 'G_' p_tc_name '_LINES' INTO l_lines_name. 
   ASSIGN (l_lines_name) TO <lines>. 
 
*&SPWIZARD: get current line                                           * 
   GET CURSOR LINE l_selline. 
   IF sy-subrc <> 0.                   " append line to table 
     l_selline = <tc>-lines + 1. 
*&SPWIZARD: set top line                                               * 
     IF l_selline > <lines>. 
       <tc>-top_line = l_selline - <lines> + 1 . 
     ELSE. 
       <tc>-top_line = 1. 
     ENDIF. 
   ELSE.                               " insert line into table 
     l_selline = <tc>-top_line + l_selline - 1. 
     l_lastline = <tc>-top_line + <lines> - 1. 
   ENDIF. 
*&SPWIZARD: set new cursor line                                        * 
   l_line = l_selline - <tc>-top_line + 1. 
 
*&SPWIZARD: insert initial line                                        * 
   INSERT INITIAL LINE INTO <table> INDEX l_selline. 
   <tc>-lines = <tc>-lines + 1. 
*&SPWIZARD: set cursor                                                 * 
   SET CURSOR LINE l_line. 
 
 ENDFORM.                              " FCODE_INSERT_ROW 
 
*&---------------------------------------------------------------------* 
*&      Form  FCODE_DELETE_ROW                                         * 
*&---------------------------------------------------------------------* 
 FORM fcode_delete_row 
               USING    p_tc_name           TYPE dynfnam 
                        p_table_name 
                        p_mark_name   . 
 
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* 
   DATA l_table_name       LIKE feld-name. 
 
   FIELD-SYMBOLS <tc>         TYPE cxtab_control. 
   FIELD-SYMBOLS <table>      TYPE STANDARD TABLE. 
   FIELD-SYMBOLS <wa>. 
   FIELD-SYMBOLS <mark_field>. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
   ASSIGN (p_tc_name) TO <tc>. 
 
*&SPWIZARD: get the table, which belongs to the tc                     * 
   CONCATENATE p_table_name '[]' INTO l_table_name. "table body 
   ASSIGN (l_table_name) TO <table>.                "not headerline 
 
*&SPWIZARD: delete marked lines                                        * 
   DESCRIBE TABLE <table> LINES <tc>-lines. 
 
   LOOP AT <table> ASSIGNING <wa>. 
 
*&SPWIZARD: access to the component 'FLAG' of the table header         * 
     ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>. 
 
     IF <mark_field> = 'X'. 
       DELETE <table> INDEX syst-tabix. 
       IF sy-subrc = 0. 
         <tc>-lines = <tc>-lines - 1. 
       ENDIF. 
     ENDIF. 
   ENDLOOP. 
 
 ENDFORM.                              " FCODE_DELETE_ROW 
 
*&---------------------------------------------------------------------* 
*&      Form  COMPUTE_SCROLLING_IN_TC 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->P_TC_NAME  name of tablecontrol 
*      -->P_OK       ok code 
*----------------------------------------------------------------------* 
 FORM compute_scrolling_in_tc USING    p_tc_name 
                                       p_ok. 
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* 
   DATA l_tc_new_top_line     TYPE i. 
   DATA l_tc_name             LIKE feld-name. 
   DATA l_tc_lines_name       LIKE feld-name. 
   DATA l_tc_field_name       LIKE feld-name. 
 
   FIELD-SYMBOLS <tc>         TYPE cxtab_control. 
   FIELD-SYMBOLS <lines>      TYPE i. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
   ASSIGN (p_tc_name) TO <tc>. 
*&SPWIZARD: get looplines of TableControl                              * 
   CONCATENATE 'G_' p_tc_name '_LINES' INTO l_tc_lines_name. 
   ASSIGN (l_tc_lines_name) TO <lines>. 
 
 
*&SPWIZARD: is no line filled?                                         * 
   IF <tc>-lines = 0. 
*&SPWIZARD: yes, ...                                                   * 
     l_tc_new_top_line = 1. 
   ELSE. 
*&SPWIZARD: no, ...                                                    * 
     CALL FUNCTION 'SCROLLING_IN_TABLE' 
       EXPORTING 
         entry_act      = <tc>-top_line 
         entry_from     = 1 
         entry_to       = <tc>-lines 
         last_page_full = 'X' 
         loops          = <lines> 
         ok_code        = p_ok 
         overlapping    = 'X' 
       IMPORTING 
         entry_new      = l_tc_new_top_line 
       EXCEPTIONS 
*        NO_ENTRY_OR_PAGE_ACT  = 01 
*        NO_ENTRY_TO    = 02 
*        NO_OK_CODE_OR_PAGE_GO = 03 
         OTHERS         = 0. 
   ENDIF. 
 
*&SPWIZARD: get actual tc and column                                   * 
   GET CURSOR FIELD l_tc_field_name 
              AREA  l_tc_name. 
 
   IF syst-subrc = 0. 
     IF l_tc_name = p_tc_name. 
*&SPWIZARD: et actual column                                           * 
       SET CURSOR FIELD l_tc_field_name LINE 1. 
     ENDIF. 
   ENDIF. 
 
*&SPWIZARD: set the new top line                                       * 
   <tc>-top_line = l_tc_new_top_line. 
 
 
 ENDFORM.                              " COMPUTE_SCROLLING_IN_TC 
 
*&---------------------------------------------------------------------* 
*&      Form  FCODE_TC_MARK_LINES 
*&---------------------------------------------------------------------* 
*       marks all TableControl lines 
*----------------------------------------------------------------------* 
*      -->P_TC_NAME  name of tablecontrol 
*----------------------------------------------------------------------* 
 FORM fcode_tc_mark_lines USING p_tc_name 
                                p_table_name 
                                p_mark_name. 
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------* 
   DATA l_table_name       LIKE feld-name. 
 
   FIELD-SYMBOLS <tc>         TYPE cxtab_control. 
   FIELD-SYMBOLS <table>      TYPE STANDARD TABLE. 
   FIELD-SYMBOLS <wa>. 
   FIELD-SYMBOLS <mark_field>. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
   ASSIGN (p_tc_name) TO <tc>. 
 
*&SPWIZARD: get the table, which belongs to the tc                     * 
   CONCATENATE p_table_name '[]' INTO l_table_name. "table body 
   ASSIGN (l_table_name) TO <table>.                "not headerline 
 
*&SPWIZARD: mark all filled lines                                      * 
   LOOP AT <table> ASSIGNING <wa>. 
 
*&SPWIZARD: access to the component 'FLAG' of the table header         * 
     ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>. 
 
     <mark_field> = 'X'. 
   ENDLOOP. 
 ENDFORM.                                          "fcode_tc_mark_lines 
 
*&---------------------------------------------------------------------* 
*&      Form  FCODE_TC_DEMARK_LINES 
*&---------------------------------------------------------------------* 
*       demarks all TableControl lines 
*----------------------------------------------------------------------* 
*      -->P_TC_NAME  name of tablecontrol 
*----------------------------------------------------------------------* 
 FORM fcode_tc_demark_lines USING p_tc_name 
                                  p_table_name 
                                  p_mark_name . 
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* 
   DATA l_table_name       LIKE feld-name. 
 
   FIELD-SYMBOLS <tc>         TYPE cxtab_control. 
   FIELD-SYMBOLS <table>      TYPE STANDARD TABLE. 
   FIELD-SYMBOLS <wa>. 
   FIELD-SYMBOLS <mark_field>. 
*&SPWIZARD: END OF LOCAL DATA------------------------------------------* 
 
   ASSIGN (p_tc_name) TO <tc>. 
 
*&SPWIZARD: get the table, which belongs to the tc                     * 
   CONCATENATE p_table_name '[]' INTO l_table_name. "table body 
   ASSIGN (l_table_name) TO <table>.                "not headerline 
 
*&SPWIZARD: demark all filled lines                                    * 
   LOOP AT <table> ASSIGNING <wa>. 
 
*&SPWIZARD: access to the component 'FLAG' of the table header         * 
     ASSIGN COMPONENT p_mark_name OF STRUCTURE <wa> TO <mark_field>. 
 
     <mark_field> = space. 
   ENDLOOP. 
 ENDFORM.                                          "fcode_tc_mark_lines 
*&---------------------------------------------------------------------* 
*&      Form  PRM_ADD_LIST 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
 FORM prm_add_list . 
   DATA:lt_file TYPE filetable. 
   DATA:ls_file LIKE LINE OF lt_file. 
   DATA:gv_return TYPE i. 
   CALL METHOD cl_gui_frontend_services=>file_open_dialog 
*  EXPORTING 
*    window_title            = 
*    default_extension       = 
*    default_filename        = 
*    file_filter             = 
*    with_encoding           = 
*    initial_directory       = 
*    multiselection          = 
     CHANGING 
       file_table              = lt_file 
       rc                      = gv_return 
*      user_action             = 
*      file_encoding           = 
     EXCEPTIONS 
       file_open_dialog_failed = 1 
       cntl_error              = 2 
       error_no_gui            = 3 
       not_supported_by_gui    = 4 
       OTHERS                  = 5. 
   IF sy-subrc <> 0. 
   ENDIF. 
 
   IF lt_file IS NOT INITIAL. 
     LOOP AT lt_file INTO ls_file. 
       gw_list-string = ls_file-filename. 
 
       SPLIT ls_file-filename AT '/' INTO ls_file-filename gw_list-name. 
       WHILE gw_list-name CS '/'. 
         SPLIT ls_file-filename AT '/' INTO ls_file-filename gw_list-name. 
       ENDWHILE. 
 
       APPEND gw_list TO gt_list. 
     ENDLOOP. 
 
     SORT gt_list BY name. 
     DELETE ADJACENT DUPLICATES FROM gt_list COMPARING name. 
   ENDIF. 
 
 ENDFORM.

在屏幕上分两块,左边为视频或音频播放栏,右边为文件列表,可新增本地文件,可点击文件播放

SAP播放本地视频及音频(仅限于window MediaPlayer可播放文件)详解编程语言

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18636.html

(0)
上一篇 2021年7月19日 21:20
下一篇 2021年7月19日 21:20

相关推荐

发表回复

登录后才能评论