ABAP-对象快速命名程序
【摘要】 告别忙碌低效!本文提供示例,帮助您用更少时间完成更多高质量工作,重获工作与生活平衡。
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)