程序调用SM30维护表

DATA:lth_functxt TYPE smp_dyntxt.

TABLES:rlgrap,bkpf,bseg,ztfi0017,lfa1,kna1.

SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  PARAMETERS:p1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND uex, "银行流水导入
             p2 RADIOBUTTON GROUP g1, "银行流水查询
             p3 RADIOBUTTON GROUP g1, "银行流水认领
             p4 RADIOBUTTON GROUP g1, "银行流水过账
             p5 RADIOBUTTON GROUP g1. "银行流水取消过账
SELECTION-SCREEN:END OF BLOCK b1.

SELECTION-SCREEN:BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002.
  PARAMETERS:p_file  LIKE rlgrap-filename MODIF ID p1,
             p_bukrs TYPE bkpf-bukrs DEFAULT '1000' OBLIGATORY MODIF ID p2,
             p_zacct TYPE ztfi0017-zaccount MODIF ID p2.
  SELECT-OPTIONS:s_hkont FOR bseg-hkont MODIF ID p2,
                 s_budat FOR bkpf-budat MODIF ID p2,
                 s_date  FOR bkpf-bldat MODIF ID p2,
                 s_belnr FOR bkpf-belnr MODIF ID p2,
                 s_lifnr FOR lfa1-lifnr MODIF ID p2,
                 s_kunnr FOR kna1-kunnr MODIF ID p2.
SELECTION-SCREEN:END OF BLOCK b2.

SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.

INITIALIZATION .
  CLEAR lth_functxt.
  lth_functxt-icon_id   = icon_edit_file.
  lth_functxt-icon_text = '配置表'.
  lth_functxt-quickinfo = '配置表'.
  sscrfields-functxt_01 = lth_functxt.

  lth_functxt-icon_id   = icon_export.
  lth_functxt-icon_text = '下载模板'.
  lth_functxt-quickinfo = '下载模板'.
  sscrfields-functxt_02 = lth_functxt.


AT SELECTION-SCREEN.
  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      PERFORM frm_skip_table.
    WHEN 'FC02'.
      PERFORM frm_download_temp.
    WHEN OTHERS.
  ENDCASE.

AT SELECTION-SCREEN OUTPUT.
  IF p1 = 'X'.
    LOOP AT SCREEN.
      IF screen-group1 = 'P2'.
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ELSE.
    LOOP AT SCREEN.
      IF screen-group1 = 'P1'.
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = ' '
    IMPORTING
      file_name     = p_file.

IF p_file IS INITIAL.
      MESSAGE '导入文件不能为空' TYPE 'S' DISPLAY LIKE 'E'.
      LEAVE LIST-PROCESSING.
    ELSE.
      PERFORM frm_upload_data.
      PERFORM frm_display_alv.
    ENDIF.



*&---------------------------------------------------------------------*
*& Form FRM_SKIP_TABLE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_skip_table .
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action                       = 'U'
      view_name                    = 'ZTFI0017'
      no_warning_for_clientindep   = 'X'
    EXCEPTIONS
      client_reference             = 1
      foreign_lock                 = 2
      invalid_action               = 3
      no_clientindependent_auth    = 4
      no_database_function         = 5
      no_editor_function           = 6
      no_show_auth                 = 7
      no_tvdir_entry               = 8
      no_upd_auth                  = 9
      only_show_allowed            = 10
      system_failure               = 11
      unknown_field_in_dba_sellist = 12
      view_not_found               = 13
      OTHERS                       = 14.
ENDFORM.

*&---------------------------------------------------------------------*
*& Form frm_download_temp
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_download_temp .
  DATA:lo_objdata     LIKE wwwdatatab,
       lo_mime        LIKE w3mime,
       ls_destination LIKE rlgrap-filename,
       ls_objnam      TYPE string,
       li_rc          LIKE sy-subrc,
       ls_errtxt      TYPE string.
  DATA:p_objid    TYPE wwwdatatab-objid,
       p_dest     LIKE sapb-sappfad,
       l_fullpath LIKE rlgrap-filename.
  DATA:gc_fullpath LIKE rlgrap-filename.
  p_objid  = 'ZFIR0011'.
  CONCATENATE p_objid '.XLS' INTO ls_objnam.
  CONDENSE ls_objnam NO-GAPS.
  SELECT SINGLE relid objid INTO CORRESPONDING FIELDS OF lo_objdata
  FROM wwwdata  WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.
  IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
    CONCATENATE '模板文件' ls_objnam '不存在,请用TCODE:SMW0进行加载' INTO ls_errtxt.
    MESSAGE ls_errtxt TYPE 'I'.
  ELSE.
    "文件保存路径
    PERFORM frm_select_filepath CHANGING gc_fullpath.
    CHECK gc_fullpath IS NOT INITIAL .
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lo_objdata
        destination = gc_fullpath
      IMPORTING
        rc          = li_rc.
    IF li_rc NE 0.
      CONCATENATE '模板文件:' ls_objnam '下载失败' INTO ls_errtxt.
      MESSAGE ls_errtxt TYPE 'E'.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_select_filepath
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- GC_FULLPATH
*&---------------------------------------------------------------------*
FORM frm_select_filepath  CHANGING p_fullpath.
  DATA: rc  TYPE string,
        rc1 TYPE string,
        rc2 TYPE string.
  rc = 'Bank_Statement' && sy-datum .
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
*     window_title         =
      default_extension    = '*.XLS|*.XLSX'
      default_file_name    = rc
*     with_encoding        =
      file_filter          = 'XLS (*.XLS)|*.XLS|XLSX (*.XLSX)|*.XLSX'
*     initial_directory    =
*     prompt_on_overwrite  = 'X'
    CHANGING
      filename             = rc
      path                 = rc1
      fullpath             = rc2
*     user_action          =
*     file_encoding        =
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  p_fullpath = rc2.
ENDFORM.

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值