ABAP自用代码

这篇博客展示了如何在ABAP中实现文件选择对话框,用户可以选择路径保存文件和上传文件。代码包括了使用CL_GUI_FRONTEND_SERVICES进行文件对话框调用,以及从选择的文件中读取数据到内部表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

&---------------------------------------------------------------------
*& Report
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT

DATA GT_VBAP TYPE STANDARD TABLE OF VBAP.
DATA GT_VBAP_UP TYPE STANDARD TABLE OF VBAP.
DATA GS_VBELN TYPE VBAP-VBELN.
DATA:
VG_FILENAME TYPE STRING,
VG_PATH TYPE STRING,
VG_FULLPATH TYPE STRING.

DATA:
VG_STRING TYPE XSTRING,
TBL_FILETABLE TYPE FILETABLE,
WG_FILETABLE TYPE FILE_TABLE,
VG_RC TYPE I.

CONSTANTS
CNS_M01 TYPE CHAR3 VALUE ‘M01’.

CONSTANTS
CNS_M02 TYPE CHAR3 VALUE ‘M02’.

SELECT-OPTIONS:
S_VBELN FOR GS_VBELN.

PARAMETERS:
P_RA1 TYPE C RADIOBUTTON GROUP R1 DEFAULT ‘X’,
P_PATH TYPE STRING MODIF ID M01.

PARAMETERS:
P_RA2 TYPE C RADIOBUTTON GROUP R1,
P_UP TYPE STRING MODIF ID M02.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN CNS_M01.
IF P_RA1 IS INITIAL.
SCREEN-INPUT = 0.
CLEAR: P_PATH.
ENDIF.
WHEN CNS_M02.
IF P_RA2 IS INITIAL.
SCREEN-INPUT = 0.
CLEAR : P_UP.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG

  • EXPORTING
  • WINDOW_TITLE =
  • DEFAULT_EXTENSION =
  • DEFAULT_FILE_NAME =
  • WITH_ENCODING =
  • FILE_FILTER =
  • INITIAL_DIRECTORY =
  • PROMPT_ON_OVERWRITE = ‘X’
    CHANGING
    FILENAME = VG_FILENAME
    PATH = VG_PATH
    FULLPATH = VG_FULLPATH
  • USER_ACTION =
  • FILE_ENCODING =
    EXCEPTIONS
    CNTL_ERROR = 1
    ERROR_NO_GUI = 2
    NOT_SUPPORTED_BY_GUI = 3
    INVALID_DEFAULT_FILE_NAME = 4
    OTHERS = 5
    .
    IF SY-SUBRC = 0.
    P_PATH = VG_FULLPATH.
    ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UP.

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 = TBL_FILETABLE
    RC = VG_RC
  •  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.
    READ TABLE TBL_FILETABLE INTO WG_FILETABLE INDEX 1.
    P_UP = WG_FILETABLE-FILENAME.
    ENDIF.

START-OF-SELECTION.

IF P_PATH IS NOT INITIAL.

SELECT *
FROM VBAP "
INTO TABLE GT_VBAP
WHERE VBELN IN S_VBELN.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
  •   BIN_FILESIZE                    =
      FILENAME                        = P_PATH
    
  •   FILETYPE                        = 'ASC'
    
  •   APPEND                          = ' '
    

    WRITE_FIELD_SEPARATOR = ‘X’

  •   HEADER                          = '00'
    
  •   TRUNC_TRAILING_BLANKS           = ' '
    
  •   WRITE_LF                        = 'X'
    
  •   COL_SELECT                      = ' '
    
  •   COL_SELECT_MASK                 = ' '
    
  •   DAT_MODE                        = ' '
    
  •   CONFIRM_OVERWRITE               = ' '
    
  •   NO_AUTH_CHECK                   = ' '
       CODEPAGE                        = '8404'
    
  •   IGNORE_CERR                     = ABAP_TRUE
    
  •   REPLACEMENT                     = '#'
    
  •   WRITE_BOM                       = ' '
    
  •   TRUNC_TRAILING_BLANKS_EOL       = 'X'
    
  •   WK1_N_FORMAT                    = ' '
    
  •   WK1_N_SIZE                      = ' '
    
  •   WK1_T_FORMAT                    = ' '
    
  •   WK1_T_SIZE                      = ' '
    
  •   WRITE_LF_AFTER_LAST_LINE        = ABAP_TRUE
    
  •   SHOW_TRANSFER_STATUS            = ABAP_TRUE
    
  •   VIRUS_SCAN_PROFILE              = '/SCET/GUI_DOWNLOAD'
    
  • IMPORTING
    
  •   FILELENGTH                      =
    TABLES
      DATA_TAB                        = GT_VBAP
    
  •   FIELDNAMES                      =
    

    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6
    HEADER_NOT_ALLOWED = 7
    SEPARATOR_NOT_ALLOWED = 8
    FILESIZE_NOT_ALLOWED = 9
    HEADER_TOO_LONG = 10
    DP_ERROR_CREATE = 11
    DP_ERROR_SEND = 12
    DP_ERROR_WRITE = 13
    UNKNOWN_DP_ERROR = 14
    ACCESS_DENIED = 15
    DP_OUT_OF_MEMORY = 16
    DISK_FULL = 17
    DP_TIMEOUT = 18
    FILE_NOT_FOUND = 19
    DATAPROVIDER_EXCEPTION = 20
    CONTROL_FLUSH_ERROR = 21
    OTHERS = 22
    .
    IF SY-SUBRC = 19.

  • Implement suitable error handling here
    ENDIF.

    ELSE.
    CALL FUNCTION ‘GUI_UPLOAD’
    EXPORTING
    FILENAME = P_UP

  •   FILETYPE                      = 'ASC'
     HAS_FIELD_SEPARATOR           = 'X'
    
  •   HEADER_LENGTH                 = 0
    
  •   READ_BY_LINE                  = 'X'
    
  •   DAT_MODE                      = ' '
    
  •   CODEPAGE                      = ' '
    
  •   IGNORE_CERR                   = ABAP_TRUE
    
  •   REPLACEMENT                   = '#'
    
  •   CHECK_BOM                     = ' '
    
  •   VIRUS_SCAN_PROFILE            =
    
  •   NO_AUTH_CHECK                 = ' '
    
  • IMPORTING
    
  •   FILELENGTH                    =
    
  •   HEADER                        =
    TABLES
      DATA_TAB                      = GT_VBAP_UP
    
  • CHANGING
    
  •   ISSCANPERFORMED               = ' '
    
  • EXCEPTIONS
    
  •   FILE_OPEN_ERROR               = 1
    
  •   FILE_READ_ERROR               = 2
    
  •   NO_BATCH                      = 3
    
  •   GUI_REFUSE_FILETRANSFER       = 4
    
  •   INVALID_TYPE                  = 5
    
  •   NO_AUTHORITY                  = 6
    
  •   UNKNOWN_ERROR                 = 7
    
  •   BAD_DATA_FORMAT               = 8
    
  •   HEADER_NOT_ALLOWED            = 9
    
  •   SEPARATOR_NOT_ALLOWED         = 10
    
  •   HEADER_TOO_LONG               = 11
    
  •   UNKNOWN_DP_ERROR              = 12
    
  •   ACCESS_DENIED                 = 13
    
  •   DP_OUT_OF_MEMORY              = 14
    
  •   DISK_FULL                     = 15
    
  •   DP_TIMEOUT                    = 16
    
  •   OTHERS                        = 17
            .
    

    IF SY-SUBRC <> 0.

  • Implement suitable error handling here
    ENDIF.

    ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵奕升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值