20.26.        下载文件 ... 257

20.26.1.             以 BIN 二进制下载 ... 257

20.26.2.             以字符模式下载 ... 258

20.26.              下载文件

20.26.1.       以 BIN 二进制下载

DATA : xstr TYPE xstring .
DATA :  l_codepage ( 4 ) TYPE n .
DATA :  l_encoding ( 20 ).
********** 字符集名与内码转换
" 将外部字符集名转换为内部编码
CALL FUNCTION ' SCP_CODEPAGE_BY_EXTERNAL_NAME '
  EXPORTING
    external_name = 'UTF-8'
  IMPORTING
    sap_codepage  = l_codepage .
l_encoding = l_codepage .
********** 编码
DATA : convout TYPE REF TO cl_abap_conv_out_ce .
" 创建编码对象
convout = cl_abap_conv_out_ce => create ( encoding = l_encoding ).
convout -> write ( data = ' 江正军 ' ). " 编码
xstr =  convout -> get_buffer ( ). " 获取二进制码流
WRITE : / xstr . "E6B19FE6ADA3E5869B
********** 解码
DATA : convin TYPE REF TO cl_abap_conv_in_ce .
" 创建解码对象
convin = cl_abap_conv_in_ce => create ( encoding = l_encoding input = xstr ).
DATA : str TYPE string .
CALL METHOD convin -> read " 解码
  IMPORTING data = str .
WRITE : / str . " 江正军

TYPES : xx ( 100 ) TYPE x .
DATA : xtab TYPE STANDARD TABLE OF xx WITH HEADER LINE .
xtab = xstr .
APPEND xtab .

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
  filename                        = 'c:\2.txt'
  filetype                        = 'BIN'
TABLES
  "data_tab 的类型为 ANY ,所以 xtab 是一列还是多列,都会写到
  " 文件中去,这里还只有一列,而且还没有列名,这也没有关系
  data_tab                        = xtab[] .

20.26.2.       以字符模式下载

DATA : BEGIN OF strc OCCURS 0 ,
    c1 ( 2 ) TYPE c ,
    c2 ( 1 ) TYPE c ,
  END OF strc .
strc - c1 = ' 中 ' .
strc - c2 = ' 国 ' .
APPEND strc .
APPEND strc .

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
*   BIN_FILESIZE          =
    filename              = 'c:\1.txt'
    filetype              = 'DAT' " 列与列之间会使用 TAB 分隔
*   APPEND                = ' '
*   WRITE_FIELD_SEPARATOR = ' '
*   HEADER                = '00'
*   codepage              = '8400' "GBK
*   codepage              = '8450' "GB2312
    codepage              = '4110' "utf-8
*   CODEPAGE              = '4102'"UTF-16BE
*   CODEPAGE              = '4103'"UTF-16LE
  TABLES
    data_tab              = strc[] .

  CODEPAGE

l   Description

Use parameter CODEPAGE to specify the desired target codepage. If this parameter is not set, the codepage of the SAP GUI is used as the target codepage. 如果不指定,则使用 SAP GUI 所使用的 Codepage 。

l   Value range

4-digit number of the SAP codepage. The function module SCP_CODEPAGE_BY_EXTERNAL_NAME returns the SAP codepage number for an external character set name, for example, "iso-8859-1". The function module NLS_GET_FRONTEND_CP returns the appropriate non-Unicode frontend codepage for a language.

You can determine the desired codepage interactively, if the parameter with_encoding of method file_save_dialog is set by cl_gui_frontend_services.

SPACE: Codepage of the SAP GUI

l   Default

SPACE

SCP_CODEPAGE_BY_EXTERNAL_NAME

该函数可将字符集名称转换为 CODEPAGE ,也可以直接查看 TCP00A 表

另外,发现 TCP00 表里也存储了 CODEPAGE ,而且该表有一个 CPCOMPANY 字段标示该代码是由哪个组织定义的(一般我们使用 ISO 国际标准),可以将 TCP00A 与 TCP00 通过 CODEPAGE 联合起来查询, TCP00A 可以根据字符集名称(如 GBK 、 UTF-8 ) TCP00A-CPATTR 来查询,而 TCP00 可以根据字符集描述(如: Chinese )来查询 TCP00- CPCOMMENT 。

[SAP ABAP开发技术总结]以二进制、字符模式下载文件相关推荐

  1. [SAP ABAP开发技术总结]选择屏幕——SELECT-OPTIONS

    12.4.         SELECT-OPTIONS. 89 12.4.1.     输入ABAP程序默认值时,需要加上"=". 89 12.4.2.     选择条件内表多条 ...

  2. [SAP ABAP开发技术总结]ABAP读写、解析XML文件

    20.6.         XML. 236 20.6.1.     生成... 237 20.6.2.     解析... 240 20.6.     XML if_ixml if_ixml_doc ...

  3. [SAP ABAP开发技术总结]ABAP调优——Open SQL优化

    11.1.     数据库编程方面优化 1.   不要使用 SELECT * ...,选择需要的字段, SELECT * 既浪费CPU,又浪费网络带宽资源,还需占用大量的ABAP内存 2.   不要使 ...

  4. [SAP ABAP开发技术总结]ABAP调优——代码优化

    11.2.     程序 1.   READ TABLE ...WITH [TABLE] KEY...BINARY SEARCH读取标准内表使用二分查找 2.   在循环(LOOP AT ...WHE ...

  5. [SAP ABAP开发技术总结]SD销售订单定价过程

    16.3.2.     定价过程 16.3.2.1.           条件技术七要素 16.3.2.2.           条件表V/03.V/04.V/05 16.3.2.3.         ...

  6. [SAP ABAP开发技术总结]EXIT-COMMAND

    12.8.     EXIT-COMMAND 12.8.1.           MODULE <mod> AT EXIT-COMMAND 对话屏幕中,对于E类型的Function Cod ...

  7. [SAP ABAP开发技术总结]动态语句、动态程序

    在ABAP中写动态的程序,灵活的程序,一定要知道的 1.13.         动态语句 1.13.1.     内表动态访问 1.13.2.     动态类型 1.13.3.     动态SQL 1 ...

  8. [SAP ABAP开发技术总结]屏幕跳转

    12.18.             屏幕跳转 LEAVE SCREEN. or LEAVE TO SCREEN <next screen>. LEAVE SCREEN语句会结束当前屏幕并 ...

  9. [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别

    1.8.  CLEAR.REFRESH.FREE 内表:如果使用有表头行的内表,CLEAR 仅清除表格工作区域.要重置整个内表而不清除表格工作区域,使用REFRESH语句或 CLEAR 语句CLEAR ...

  10. [SAP ABAP开发技术总结]权限对象检查

    20.14.             权限检查 AT SELECTION-SCREEN.   DATA: BEGIN OF lt_bukrs OCCURS 0,     bukrs TYPE t001 ...

最新文章

  1. 渐进式web应用程序_渐进式Web应用程序简介
  2. GridControl摘录
  3. 8. Java 中的运算符 【连载 8】
  4. 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
  5. 怎么让html 整体加大,让一个Html元素撑满整个屏幕可以这样玩
  6. java的两种运行机制_Java☞JVM工作原理
  7. ms project(第一篇笔记)
  8. js解析顺序了解一下??
  9. Debug Pytorch: ValueError: Expected more than 1 value per channel when training, got input size tor
  10. php面向接口编程思想,面向接口编程 - Laravel 实践
  11. java context.xml_java-context.xml的解释
  12. 你能理解、不能理解和不需要理解的量子计算
  13. Kibana6.x.x源码结构分析笔记
  14. WordPress学习笔记(二)插件安装
  15. android同步服务器时间同步,Android时间与服务器同步方案
  16. i5 9400f和i3 9100f哪个好
  17. Docker - 常见操作命令篇
  18. windows 下删除EFI分区方法
  19. 让机器人懂感情:表情符与深度学习
  20. 有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,第四个8 ,棋盘上放的所有芝麻的重量(后一个是前一个两倍)。循环练习题。

热门文章

  1. Linux测试磁盘能力
  2. 关于matlab中get和set的用法
  3. 全新版本的SoundSource for Mac 优质的音频控制软件
  4. iOS底层探索之多线程(十七)——通过 Swift的Foundation源码分析锁(NSLock、NSCondition、NSRecursiveLock)
  5. 会声会影编辑面板常用功能介绍
  6. 系统引导管理 之 以WinGrub 引导安装Fedora 4.0 为例,详述用WinGrub来引导Linux的安装...
  7. Python- 索引 B+数 比如书的目录
  8. Hadoop-2.0命令手册
  9. Ubuntu 16 安装JDK1.8
  10. Split Animation Clip From FBX and Multiply Mode Sprite