通用导入导出程序内有完整代码.docx
- 文档编号:24028392
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:33
- 大小:424.89KB
通用导入导出程序内有完整代码.docx
《通用导入导出程序内有完整代码.docx》由会员分享,可在线阅读,更多相关《通用导入导出程序内有完整代码.docx(33页珍藏版)》请在冰豆网上搜索。
通用导入导出程序内有完整代码
通用导入导出程序(可以自动生成模板)
在SAP实施和运维过程中经常有需要批量将数量导入到透明表的场景。
这时如何往往需要开发一些导入的程序。
因为透明表的结构不同,所以这些导入程序往往只能对一个透明表进行导入,并且由于这些程序相当多,所以没有完整的下载备份数据和生成模板的功能。
为了省时,作者开发这个通用导入导出程序,可以对所有的透明进行导出导入并且自动生成导入模板。
另外提供跨CLIENT选项,用户可以选择只处理当前CLIENT的数据(这时模板中不会有MANDT字段)。
-------------------------------------<这是详细说明的分割线(内有广告)>---------------------------------------
功能一:
下载导入模板和下载数据(可选)
选择路径和文件名
生成的模板打开之后的样子
如果带数据的话是这个样子
如果选择跨CLIENT的话
功能二:
上传数据
如果是导入系统透明表会有提示
如果选择确定导入->还是会打开文件选择器
选择了本地的模板文件就可导入了(注意跨CLIENT选择项,选择了跨CLIENT要使用带MANDT字段的模板。
希望能对整数据的XDJM们有所帮助
-------------------------------------<这是详细代码的分割线(木有广告)>---------------------------------------
(以下是完整代码,COPY到系统中激活即可)
*&---------------------------------------------------------------------*
*& Report ZRP_BC_GENERAL_IMPEXP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrp_bc_general_impexp.
TYPES:
gtyt_fieldcat TYPE lvc_t_fcat.
*FIELD-SYMBOLS:
*
CONSTANTS:
gc_x TYPE char1 VALUE 'X',
gc_lp VALUE '(',
gc_rp VALUE ')',
gc_is VALUE '-'.
DATA:
gr_excl TYPE RANGE OF lvc_fname WITH HEADER LINE.
PARAMETERS:
gp_tn TYPE tabname MEMORY ID ztctm OBLIGATORY.
SELECTION-SCREEN BEGIN OF BLOCK gc1 WITH FRAME TITLE g_gc1tx.
PARAMETERS gp_dload RADIOBUTTON GROUP rg1 DEFAULT 'X' USER-COMMAND gc1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(20) g_icdat MODIF ID gc1.
PARAMETERS gp_icda AS CHECKBOX MODIF ID gc1.
SELECTION-SCREEN END OF LINE.
PARAMETERS gp_uload RADIOBUTTON GROUP rg1.
SELECTION-SCREEN END OF BLOCK gc1.
SELECTION-SCREEN SKIP 1.
PARAMETERS gp_mandt AS CHECKBOX .
LOAD-OF-PROGRAM.
PERFORM sub_init_screen.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
PERFORM sub_pbo_1000.
AT SELECTION-SCREEN.
IF sy-ucomm = 'ONLI'.
PERFORM sub_check_screen.
PERFORM sub_init_object.
CASE gc_x.
WHEN gp_dload.
PERFORM sub_download_1000 CHANGING sy-subrc.
WHEN gp_uload.
PERFORM sub_upload_1000 CHANGING sy-subrc.
ENDCASE.
IF sy-subrc <> 0.
MESSAGE '出现错误!
' TYPE 'E' .
ELSE.
CASE gc_x.
WHEN gp_dload.
MESSAGE '下载成功!
' TYPE 'S' .
WHEN gp_uload.
MESSAGE '上传成功!
' TYPE 'S' .
ENDCASE.
ENDIF.
ENDIF.
*START-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form sub_init_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_init_screen.
g_gc1tx = '你想干什么?
'.
g_icdat = '同时下载数据(仅限于表)'.
ENDFORM . "sub_init_screen
*&---------------------------------------------------------------------*
*& Form sub_pbo_1000
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_pbo_1000.
* break-point.
LOOP AT SCREEN.
IF screen-group1 = 'GC1'.
IF gp_dload = gc_x.
CLEAR screen-invisible.
ELSE.
screen-invisible = 1.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. "sub_pbo_1000
*&---------------------------------------------------------------------*
*& Form sub_check_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_check_screen.
TRANSLATE gp_tn TO UPPER CASE.
IF gp_uload = gc_x
AND ( gp_tn
(1) <> 'Z'
OR gp_tn
(1) <> 'Y' ).
DATA:
l_answer.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = sy-title
* DIAGNOSE_OBJECT = ' '
text_question = '你导入的表是系统标准表,随意修改有可以导致系统崩溃'
text_button_1 = '确定导入'(001)
icon_button_1 = 'ICON_IMPORT'
text_button_2 = '不导算了'
icon_button_2 = 'ICON_CANCEL'
default_button = '2'
display_cancel_button = space
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
answer = l_answer
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF l_answer = '2'.
LEAVE SCREEN.
ELSE.
MESSAGE '导入系统标准表功能暂时取消,请等待项目组通知再开放使用!
' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "sub_check_screen
*&---------------------------------------------------------------------*
*& Form sub_init_object
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_init_object.
REFRESH gr_excl.
gr_excl-sign = 'I'. gr_excl-option = 'EQ'. gr_excl-low = 'ZZZZZZZZ99999999'. APPEND gr_excl.
IF gp_mandt <> gc_x.
gr_excl-sign = 'I'. gr_excl-option = 'EQ'. gr_excl-low = 'MANDT'. APPEND gr_excl.
ENDIF.
ENDFORM. "sub_init_object
*&---------------------------------------------------------------------*
*& Form sub_download_1000
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_download_1000 CHANGING value(p_subrc) LIKE sy-subrc.
DATA:
lt_fct TYPE gtyt_fieldcat,
lt_fcts TYPE gtyt_fieldcat.
DATA:
lt_ref TYPE REF TO data,
lt_ref2 TYPE REF TO data,
l_path LIKE rlgrap-filename,
l_len TYPE c LENGTH 6.
FIELD-SYMBOLS:
p_subrc = 4.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = gp_tn
CHANGING
ct_fieldcat = lt_fct
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
lt_fcts = lt_fct.
DELETE lt_fcts WHERE fieldname IN gr_excl.
LOOP AT lt_fcts ASSIGNING
CLEAR:
IF
ENDIF.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fcts
IMPORTING
ep_table = lt_ref
EXCEPTIONS
generate_subpool_dir_full = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ASSIGN lt_ref->* TO
APPEND INITIAL LINE TO
LOOP AT lt_fcts ASSIGNING
READ TABLE lt_fct ASSIGNING
ASSIGN COMPONENT
IF sy-subrc = 0.
* IF
*
* ELSE.
CLEAR l_len.
WRITE
CONDENSE l_len NO-GAPS.
CONCATENATE
* ENDIF.
ENDIF.
ENDLOOP.
APPEND INITIAL LINE TO
LOOP AT lt_fcts ASSIGNING
ASSIGN COMPONENT
IF sy-subrc = 0.
PERFORM frm_repeat_char
USING
gc_is
CHANGING
ENDIF.
ENDLOOP.
IF gp_icda = gc_x.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fct
IMPORTING
ep_table = lt_ref2
EXCEPTIONS
generate_subpool_dir_full = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ASSIGN lt_ref2->* TO
IF gp_mandt = gc_x.
SELECT * FROM (gp_tn) CLIENT SPECIFIED APPENDING CORRESPONDING FIELDS OF TABLE
ELSE.
SELECT * FROM (gp_tn) APPENDING CORRESPONDING FIELDS OF TABLE
ENDIF.
LOOP AT
APPEND INITIAL LINE TO
MOVE-CORRESPONDING
ENDLOOP.
FREE:
lt_ref2,
ENDIF.
* BREAK-POINT.
PERFORM get_localfilepath
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 导入 导出 程序 完整 代码