ABAP-对象快速命名程序

举报
Mr_blank 发表于 2026/04/02 11:20:40 2026/04/02
【摘要】 告别忙碌低效!本文提供示例,帮助您用更少时间完成更多高质量工作,重获工作与生活平衡。
TABLES sscrfields.
DATA:gv_num      TYPE char3 VALUE '1', "事务代码所用变量
     gv_num2     TYPE char4 VALUE '1000',
     gv_newtcode TYPE char15.

DATA: gv_num3    TYPE char3 VALUE '1', "程序所用变量
      gv_newprog TYPE char15.

DATA: gv_num4      TYPE char3 VALUE '1', "函数组所用变量
      gv_newfungrp TYPE char15.

DATA: gv_num5     TYPE char3 VALUE '1', "函数所用变量
      gv_function TYPE char15.

DATA: gv_num6     TYPE char3 VALUE '1', "自建表所用变量
      gv_newtable TYPE char15.

DATA functxt TYPE smp_dyntxt.

TYPES: BEGIN OF typ_tcode,
         tcode TYPE tstc-tcode,
       END OF typ_tcode.

TYPES: BEGIN OF typ_dlogram,
         progname TYPE reposrc-progname,
       END OF typ_dlogram.

TYPES: BEGIN OF typ_fungroup,
         obj_name TYPE tadir-obj_name,
       END OF typ_fungroup.

TYPES: BEGIN OF typ_function,
         funcname TYPE tftit-funcname,
       END OF typ_function.

TYPES: BEGIN OF typ_table,
         tabname TYPE dd02t-tabname,
       END OF typ_table.

DATA: gt_tcode TYPE TABLE OF typ_tcode,
      gs_tcode LIKE LINE OF gt_tcode.
DATA: gt_program TYPE TABLE OF typ_dlogram,
      gs_program LIKE LINE OF gt_program.

DATA: gt_fungroup TYPE TABLE OF typ_fungroup,
      gs_fungroup LIKE LINE OF gt_fungroup.

DATA: gt_function TYPE TABLE OF typ_function,
      gs_function LIKE LINE OF gt_function.

DATA: gt_table TYPE TABLE OF typ_table.

SELECTION-SCREEN: "设置标签
BEGIN OF TABBED BLOCK p_tab_mat FOR 26 LINES,
TAB (22) t001 USER-COMMAND but1 DEFAULT SCREEN 2100,
TAB (22) t002 USER-COMMAND but2 DEFAULT SCREEN 2200,
TAB (22) t003 USER-COMMAND but3 DEFAULT SCREEN 2300,
TAB (22) t004 USER-COMMAND but4 DEFAULT SCREEN 2400,
TAB (22) t005 USER-COMMAND but5 DEFAULT SCREEN 2500,
END OF BLOCK p_tab_mat.

SELECTION-SCREEN BEGIN OF SCREEN 2100 AS SUBSCREEN ."第一个标签页内容

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t006.
PARAMETERS: p_fi   RADIOBUTTON GROUP gp1,
            p_mm   RADIOBUTTON GROUP gp1,
            p_hr   RADIOBUTTON GROUP gp1,
            p_sd   RADIOBUTTON GROUP gp1,
            p_pm   RADIOBUTTON GROUP gp1,
            p_ps   RADIOBUTTON GROUP gp1,
            p_pp   RADIOBUTTON GROUP gp1,
            p_auth RADIOBUTTON GROUP gp1.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN END OF SCREEN 2100.

SELECTION-SCREEN BEGIN OF SCREEN 2200 AS SUBSCREEN ."第二个标签页内容

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t007.
PARAMETERS: p_fi2   RADIOBUTTON GROUP gp2,
            p_mm2   RADIOBUTTON GROUP gp2,
            p_hr2   RADIOBUTTON GROUP gp2,
            p_sd2   RADIOBUTTON GROUP gp2,
            p_pm2   RADIOBUTTON GROUP gp2,
            p_ps2   RADIOBUTTON GROUP gp2,
            p_pp2   RADIOBUTTON GROUP gp2,
            p_auth2 RADIOBUTTON GROUP gp2.
SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE t008.
PARAMETERS: p_re RADIOBUTTON GROUP gp3,
            p_bt RADIOBUTTON GROUP gp3,
            p_dl RADIOBUTTON GROUP gp3,
            p_fm RADIOBUTTON GROUP gp3.
SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN END OF SCREEN 2200.

SELECTION-SCREEN BEGIN OF SCREEN 2300 AS SUBSCREEN ."第三个标签页内容

SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE t2300.
PARAMETERS: p_fi3   RADIOBUTTON GROUP gp4,
            p_mm3   RADIOBUTTON GROUP gp4,
            p_hr3   RADIOBUTTON GROUP gp4,
            p_sd3   RADIOBUTTON GROUP gp4,
            p_pm3   RADIOBUTTON GROUP gp4,
            p_ps3   RADIOBUTTON GROUP gp4,
            p_pp3   RADIOBUTTON GROUP gp4,
            p_auth3 RADIOBUTTON GROUP gp4.
SELECTION-SCREEN END OF BLOCK b4.

SELECTION-SCREEN END OF SCREEN 2300.

SELECTION-SCREEN BEGIN OF SCREEN 2400 AS SUBSCREEN ."第四个标签页内容

SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME TITLE t2400.
PARAMETERS: p_fun   AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK b5.

SELECTION-SCREEN END OF SCREEN 2400.

SELECTION-SCREEN BEGIN OF SCREEN 2500 AS SUBSCREEN ."第五个标签页内容

SELECTION-SCREEN BEGIN OF BLOCK b6 WITH FRAME TITLE t2500.
PARAMETERS: p_fi4   RADIOBUTTON GROUP gp6,
            p_mm4   RADIOBUTTON GROUP gp6,
            p_hr4   RADIOBUTTON GROUP gp6,
            p_sd4   RADIOBUTTON GROUP gp6,
            p_pm4   RADIOBUTTON GROUP gp6,
            p_ps4   RADIOBUTTON GROUP gp6,
            p_pp4   RADIOBUTTON GROUP gp6,
            p_auth4 RADIOBUTTON GROUP gp6.
SELECTION-SCREEN END OF BLOCK b6.

SELECTION-SCREEN END OF SCREEN 2500.
SELECTION-SCREEN: FUNCTION KEY 1. "选择屏幕按钮

INITIALIZATION.

  t001 = '事务代码'.
  t002 = '程序'.
  t003 = '函数组'.
  t004 = '函数'.
  t005 = '自建表'.
  t006 = '选择模块'.
  t007 = '选择模块'.
  t008 = '程序方式'.
  t2300 = '选择模块'.
  t2400 = '函数'.
  t2500 = '选择模块'.

AT SELECTION-SCREEN OUTPUT.

  CLEAR:functxt.
  functxt-icon_text = 'ABAP开发规范下载'. "按钮文本及图标
  functxt-icon_id = icon_export.
  sscrfields-functxt_01 = functxt.

  CASE sy-dynnr.
    WHEN '2100'.
      %_p_fi_%_app_%-text = 'FICO财务管理'.
      %_p_mm_%_app_%-text = 'MM物料管理'.
      %_p_hr_%_app_%-text = 'HR人力资源管理'.
      %_p_sd_%_app_%-text = 'SD销售管理'.
      %_p_pm_%_app_%-text = 'PM设备管理'.
      %_p_ps_%_app_%-text = 'PS项目管理'.
      %_p_pp_%_app_%-text = 'PP生产管理'.
      %_p_auth_%_app_%-text = 'AUTH权限管理'.
    WHEN '2200'.
      %_p_fi2_%_app_%-text = 'FICO财务管理'.
      %_p_mm2_%_app_%-text = 'MM物料管理'.
      %_p_hr2_%_app_%-text = 'HR人力资源管理'.
      %_p_sd2_%_app_%-text = 'SD销售管理'.
      %_p_pm2_%_app_%-text = 'PM设备管理'.
      %_p_ps2_%_app_%-text = 'PS项目管理'.
      %_p_pp2_%_app_%-text = 'PP生产管理'.
      %_p_auth2_%_app_%-text = 'AUTH权限管理'.
      %_p_re_%_app_%-text = '报表程序'.
      %_p_bt_%_app_%-text = '数据导入程序'.
      %_p_dl_%_app_%-text = 'Dialog程序'.
      %_p_fm_%_app_%-text = 'Form表单程序'.
    WHEN '2300'.
      %_p_fi3_%_app_%-text = 'FICO财务管理'.
      %_p_mm3_%_app_%-text = 'MM物料管理'.
      %_p_hr3_%_app_%-text = 'HR人力资源管理'.
      %_p_sd3_%_app_%-text = 'SD销售管理'.
      %_p_pm3_%_app_%-text = 'PM设备管理'.
      %_p_ps3_%_app_%-text = 'PS项目管理'.
      %_p_pp3_%_app_%-text = 'PP生产管理'.
      %_p_auth3_%_app_%-text = 'AUTH权限管理'.
    WHEN '2400'.
      %_p_fun_%_app_%-text = '函数名称全模块通用'.
    WHEN '2500'.
      %_p_fi4_%_app_%-text = 'FICO财务管理'.
      %_p_mm4_%_app_%-text = 'MM物料管理'.
      %_p_hr4_%_app_%-text = 'HR人力资源管理'.
      %_p_sd4_%_app_%-text = 'SD销售管理'.
      %_p_pm4_%_app_%-text = 'PM设备管理'.
      %_p_ps4_%_app_%-text = 'PS项目管理'.
      %_p_pp4_%_app_%-text = 'PP生产管理'.
      %_p_auth4_%_app_%-text = 'AUTH权限管理'.
    WHEN OTHERS.
  ENDCASE.

AT SELECTION-SCREEN.
  CASE sy-dynnr.
    WHEN '2100' OR '2200' OR '2300' OR '2400' OR '2500'.
      CASE sscrfields-ucomm.
        WHEN 'FC01'.
          PERFORM download_excel USING 'ZIT_NAME'. " 下载模板
      ENDCASE.
    WHEN OTHERS.
  ENDCASE.


START-OF-SELECTION.

  PERFORM frm_set_tcode.    "事务代码
  PERFORM frm_set_program.  "程序
  PERFORM frm_set_fungroup. "函数组
  PERFORM frm_set_function. "函数
  PERFORM frm_set_table.    "自建表

*&---------------------------------------------------------------------*
*& Form frm_set_tcode
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_tcode .
  IF p_tab_mat-dynnr = '2100'.
    IF p_fi = 'X'.

      PERFORM frm_get_data_tcode USING 'ZFI'.

    ELSEIF p_mm ='X'.

      PERFORM frm_get_data_tcode USING 'ZMM'.

    ELSEIF p_hr ='X'.

      PERFORM frm_get_data_tcode USING 'ZHR'.

    ELSEIF p_sd ='X'.

      PERFORM frm_get_data_tcode USING 'ZSD'.

    ELSEIF p_pm ='X'.

      PERFORM frm_get_data_tcode USING 'ZPM'.

    ELSEIF p_ps ='X'.

      PERFORM frm_get_data_tcode USING 'ZPS'.

    ELSEIF p_pp ='X'.

      PERFORM frm_get_data_tcode USING 'ZPP'.

    ELSEIF p_auth ='X'.

      PERFORM frm_get_data_tcode USING 'ZAUTH'.

    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA_TCODE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data_tcode USING lv_mode TYPE string.

  DATA: lv_mohu TYPE string.

  CONCATENATE '%' lv_mode '%' INTO lv_mohu.

  SELECT tcode FROM tstc INTO TABLE gt_tcode WHERE tcode LIKE lv_mohu.

  PERFORM frm_add_name USING lv_mode.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_add_name
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_add_name USING lv_mode TYPE string.

  DATA: lv_yn TYPE string.

  IF gv_num NE '999'.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = gv_num
      IMPORTING
        output = gv_num.

    CONCATENATE lv_mode gv_num INTO gv_newtcode.

    READ TABLE gt_tcode INTO gs_tcode WITH KEY tcode = gv_newtcode.

    IF sy-subrc = 0.

      gv_num = gv_num + 1.
      PERFORM frm_add_name USING lv_mode.

    ELSE.

      CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
        EXPORTING
          titel          = '请您使用以下事务码'
          textline1      = gv_newtcode
          cancel_display = 'X'
        IMPORTING
          answer         = lv_yn.

      IF lv_yn = 'J'.
        SET PARAMETER ID 'TCD' FIELD gv_newtcode.
        CALL TRANSACTION 'SE93'.
      ENDIF.


    ENDIF.
  ELSE.

    CONCATENATE lv_mode gv_num2 INTO gv_newtcode.

    READ TABLE  gt_tcode INTO gs_tcode WITH KEY tcode = gv_newtcode.

    IF sy-subrc = 0.

      gv_num2 = gv_num2 + 1.

      PERFORM frm_add_name USING lv_mode.

    ELSE.

*    WRITE GV_NEWTCODE.
      CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
        EXPORTING
          titel     = '请您使用以下事务码'
          textline1 = gv_newtcode
        IMPORTING
          answer    = lv_yn.

      IF lv_yn = 'J'.
        SET PARAMETER ID 'TCD' FIELD gv_newtcode.
        CALL TRANSACTION 'SE93'.
      ENDIF.

      CLEAR gv_num2.

    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_program
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_program .
  IF p_tab_mat-dynnr = '2200'.

    IF p_fi2 = 'X'.

      PERFORM frm_get_program USING 'ZFI'.

    ENDIF.

    IF p_mm2 = 'X'.

      PERFORM frm_get_program USING 'ZMM'.

    ENDIF.

    IF p_hr2 = 'X'.

      PERFORM frm_get_program USING 'ZHR'.

    ENDIF.

    IF p_sd2 = 'X'.

      PERFORM frm_get_program USING 'ZSD'.

    ENDIF.

    IF p_pm2 = 'X'.

      PERFORM frm_get_program USING 'ZPM'.

    ENDIF.

    IF p_ps2 = 'X'.

      PERFORM frm_get_program USING 'ZPS'.

    ENDIF.

    IF p_pp2 = 'X'.

      PERFORM frm_get_program USING 'ZPP'.

    ENDIF.

    IF p_auth2 = 'X'.

      PERFORM frm_get_program USING 'ZAUTH'.

    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_program
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_program USING lv_mode TYPE string.
  DATA: lv_type TYPE string.
  DATA: lv_mohu TYPE string.
  IF p_re = 'X'.

    lv_type = 'R'.

  ELSEIF  p_bt = 'X'.

    lv_type = 'B'.

  ELSEIF  p_dl = 'X'.

    lv_type = 'D'.

  ELSEIF  p_fm = 'X'.

    lv_type = 'F'.

  ENDIF.

  CONCATENATE lv_mode lv_type INTO lv_mode.
  CONCATENATE '%' lv_mode '%' INTO lv_mohu.

  SELECT progname FROM reposrc INTO TABLE gt_program WHERE progname LIKE lv_mohu.

  PERFORM frm_add_program USING lv_mode.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ADD_PROGRAM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LV_MODE
*&---------------------------------------------------------------------*
FORM frm_add_program  USING lv_mode.
  DATA:lv_yn TYPE string.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = gv_num3
    IMPORTING
      output = gv_num3.

  CONCATENATE lv_mode gv_num3 INTO gv_newprog.

  READ TABLE gt_program INTO gs_program WITH KEY progname = gv_newprog.

  IF sy-subrc = 0.

    gv_num3 = gv_num3 + 1.
    PERFORM frm_add_program USING lv_mode.

  ELSE.

    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
      EXPORTING
        titel          = '请您使用以下程序名'
        textline1      = gv_newprog
        cancel_display = 'X'
      IMPORTING
        answer         = lv_yn.

    IF lv_yn = 'J'.
      SET PARAMETER ID 'RID' FIELD gv_newprog.
      CALL TRANSACTION 'SE38'.
    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FUNGROUP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_fungroup .
  IF p_tab_mat-dynnr = '2300'.
    IF p_fi3 = 'X'.
      PERFORM frm_get_fungroup USING 'ZFG_FI'.
    ENDIF.

    IF p_mm3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_MM'.

    ENDIF.

    IF p_hr3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_HR'.

    ENDIF.

    IF p_sd3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_SD'.

    ENDIF.

    IF p_pm3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_PM'.

    ENDIF.

    IF p_ps3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_PS'.

    ENDIF.

    IF p_pp3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_PP'.

    ENDIF.

    IF p_auth3 = 'X'.

      PERFORM frm_get_fungroup USING 'ZFG_AUTH'.

    ENDIF.

  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_FUNGROUP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_fungroup USING lv_mode TYPE string.

  DATA: lv_mohu TYPE string.

  CONCATENATE '%' lv_mode '%' INTO lv_mohu.

  SELECT obj_name FROM tadir INTO TABLE gt_fungroup WHERE object = 'FUGR' AND obj_name LIKE lv_mohu.

  PERFORM frm_add_fungroup USING lv_mode.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ADD_FUNGROUP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LV_MODE
*&---------------------------------------------------------------------*
FORM frm_add_fungroup  USING lv_mode TYPE string.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = gv_num4
    IMPORTING
      output = gv_num4.

  CONCATENATE lv_mode gv_num4 INTO gv_newfungrp.

  READ TABLE gt_fungroup INTO gs_fungroup WITH KEY obj_name = gv_newfungrp.

  IF sy-subrc = 0.

    gv_num4 = gv_num4 + 1.

    PERFORM frm_add_fungroup USING lv_mode.

  ELSE.

    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
      EXPORTING
        titel          = '请您使用以下函数组名'
        textline1      = gv_newfungrp
        cancel_display = 'X'.

    CLEAR gv_num2.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_FUNCTION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_function .
  IF p_tab_mat-dynnr = '2400'.

    SELECT funcname FROM tftit INTO TABLE gt_function WHERE funcname LIKE '%ZFUN%'.

    PERFORM frm_add_function.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ADD_FUNCTION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_add_function .
  DATA: lv_yn TYPE string.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = gv_num5
    IMPORTING
      output = gv_num5.

  CONCATENATE 'ZFUN' gv_num5 INTO gv_function.

  READ TABLE gt_function INTO gs_function WITH KEY funcname = gv_function.

  IF sy-subrc = 0.

    gv_num5 = gv_num5 + 1.

    PERFORM frm_add_function.

  ELSE.

    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
      EXPORTING
        titel          = '请您使用以下函数名'
        textline1      = gv_function
        cancel_display = 'X'
      IMPORTING
        answer         = lv_yn.

    IF lv_yn = 'J'.
      SET PARAMETER ID 'LIB' FIELD gv_function.
      CALL TRANSACTION 'SE37'.
    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_TABLE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_table .

  IF p_tab_mat-dynnr = '2500'.
    IF p_fi4 = 'X'.

      PERFORM frm_get_table USING 'ZTFI'.

    ELSEIF p_mm4 ='X'.

      PERFORM frm_get_table USING 'ZTMM'.

    ELSEIF p_hr4 ='X'.

      PERFORM frm_get_table USING 'ZTHR'.

    ELSEIF p_sd4 ='X'.

      PERFORM frm_get_table USING 'ZTSD'.

    ELSEIF p_pm4 ='X'.

      PERFORM frm_get_table USING 'ZTPM'.

    ELSEIF p_ps4 ='X'.

      PERFORM frm_get_table USING 'ZTPS'.

    ELSEIF p_pp4 ='X'.

      PERFORM frm_get_table USING 'ZTPP'.

    ELSEIF p_auth4 ='X'.

      PERFORM frm_get_table USING 'ZTAUTH'.

    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_TABLE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&---------------------------------------------------------------------*
FORM frm_get_table  USING lv_mode TYPE string.
  DATA: lv_yn TYPE string.
  DATA: lv_mohu TYPE string.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = gv_num6
    IMPORTING
      output = gv_num6.

  CONCATENATE lv_mode gv_num6 INTO gv_newtable.

  SELECT tabname FROM dd02t INTO TABLE gt_table WHERE tabname = gv_newtable.

  IF sy-subrc = 0.

    gv_num6 = gv_num6 + 1.
    PERFORM frm_get_table USING lv_mode.

  ELSE.

    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
      EXPORTING
        titel          = '请您使用以下自建表名'
        textline1      = gv_newtable
        cancel_display = 'X'
      IMPORTING
        answer         = lv_yn.

    IF lv_yn = 'J'.
      SET PARAMETER ID 'DTB' FIELD gv_newtable.
      CALL TRANSACTION 'SE11'.
    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      FORM  DOWNLOAD_EXCEL
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->P_OBJECTID TEXT
*----------------------------------------------------------------------*
FORM download_excel USING p_objectid TYPE wwwdatatab-objid.
  DATA: lo_objdata    LIKE wwwdatatab,
        ls_objnam     TYPE string,
        li_rc         LIKE sy-subrc,
        ls_errtxt     TYPE string,
        l_filename    TYPE string,
        l_dest        TYPE sapb-sappfad,
        l_path        TYPE string,
        l_fullpath    TYPE string,
        l_destination TYPE rlgrap-filename.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog "调用保存对话框
    EXPORTING
      default_extension    = 'DOC'
      default_file_name    = 'ABAP开发规范'
    CHANGING
      filename             = l_filename
      path                 = l_path
      fullpath             = l_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF l_fullpath = ''.
    MESSAGE  '不能打开WORD' TYPE 'E'.
  ENDIF.
  IF sy-subrc = 0.
    l_dest = l_fullpath.
*判断上载的文件是否存在
    CONDENSE ls_objnam NO-GAPS.
    SELECT SINGLE relid objid FROM wwwdata
      INTO CORRESPONDING FIELDS OF lo_objdata
        WHERE srtf2 = 0
          AND relid = 'MI'
          AND objid = p_objectid.
    IF sy-subrc <> 0 OR lo_objdata-objid EQ space.
      CONCATENATE '文件' ls_objnam '不存在' INTO ls_errtxt.
      MESSAGE ls_errtxt TYPE 'I'.
    ENDIF.
    l_destination = l_dest. "保存路径
*下载
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lo_objdata
        destination = l_destination
      IMPORTING
        rc          = li_rc.
    IF li_rc NE 0.
      CONCATENATE 'ABAP开发规范:' ls_objnam '下载失败' INTO ls_errtxt.
      MESSAGE ls_errtxt TYPE 'E'.
    ENDIF.
  ENDIF.
  STOP.
ENDFORM.
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。