ABAP 如何得到内存中的long text 文本
abap长文本
TEXT长文本的编写大家在编程过程中,一定经常用到READ_TEXT这个函数来读取长文本,下面我介绍的是如果自己定义一个长文本object和ID,自己储存长文本。
在项目中,做了很多功能性开发,用户要写一些备注或者是审批意见和建议,自定义表里面储存字段的长度是有限的,这个时候能自定义长文本就很实用了。
第一步:建长文本的OBJECT,TCODE SE75,选择‘文本对象和识别码’,点击change,这个时候就会看到SAP 系统中存在的所有长文本OBJECT,点‘新建’,输入文本对象,描述,选择保存状态是更新,选择编辑器应用格式是TA,行宽选一下,回车,搞定第二步:建长文本的ID,双击刚刚创建的OBJECT,点新建,就可以创建ID了第三步:先READ_TEXT,如果sy-subrc = 0,说明可以读到,如果不等于0,就说明还没有写长文本,那就可以用INIT_TEXT函数先初始化一下,再EDIT_TEXT编辑一下,最后SAVE_TEXT保存一下就OK了.长文本的编辑能做到:第二次编辑的时候,第一次编辑的内容都是灰色的,这样就可以用来写审批意见。
也可以做到,第二次编辑的时候,第一次的编辑也可以修改,这由几个参数决定。
SAP的标准例子:SDTEXTE,可以参考--------------------------------------------------------------------------------------在屏幕上加一个custom control name ZCBOXPBO事件显示长文本编辑框module mod_custom_control output.data: lv_dmode type xfeld. "Display mode.** Get display mode.if t340-trtyp = 'H'.lv_dmode = space.elseif t340-trtyp = 'V'.lv_dmode = space.elseif t340-trtyp = 'A'.lv_dmode = 'X'.endif.** Get what input in the textedit.perform frm_read_text.** Text editor set.call function 'RH_EDITOR_SET'exportingrepid = sy-repiddynnr = sy-dynnrcontrolname = 'ZCBOX'max_cols = 79show_tool = 'X'show_status = 'X'display_mode = lv_dmodetableslines = gt_linesexceptionscreate_error = 1internal_error = 2others = 3.endmodule. " MOD_CUSTOM_CONTROL OUTPUTform frm_read_text .data: lv_name like thead-tdname. "Name.** Object name.clear: lv_name.lv_name = mgef-stoff.** Read text.if gv_enter_flg eq 'X'.clear gt_lines.call function 'RH_EDITOR_GET'exportingcontrolname = 'ZCBOX'tableslines = gt_linesexceptionsinternal_error = 1others = 2.clear gv_enter_flg.else.call function 'READ_TEXT'exportingid = 'ZHAZ'language = 'E'name = lv_nameobject = 'ZHAZARDMAT'tableslines = gt_textexceptionsid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7others = 8.if sy-subrc eq 0.** Transfer text.loop at gt_text into gs_text.gs_lines = gs_text-tdline.append gs_lines to gt_lines.clear: gs_text, gs_lines.endloop.endif.endif.endform. " FRM_READ_TEXTPAI事件输入后进行保存module mod_save_text input.perform frm_save_text using gv_action_mode.endmodule. " MOD_SAVE_TEXT INPUT"gv_action_mode 是状态V H A tcode的类型代表新建修改或者显示form frm_save_text using iv_mode type c.clear gt_lines.call function 'RH_EDITOR_GET'exportingcontrolname = 'ZCBOX'tableslines = gt_linesexceptionsinternal_error = 1others = 2.data: lv_name like thead-tdname. "Name.data: gs_header like thead. "SAPscript: Text Header.** Transfer data to header.clear: gs_header, lv_name.lv_name = viqmel-qmnum.gs_header-tdobject = 'ZT2O'.gs_header-tdname = lv_name.gs_header-tdid = 'ZTOO'.gs_header-tdspras = 'E'.if iv_mode = 'H'. "Create.gs_header-tdfuser = sy-uname.gs_header-tdfdate = sy-datum.gs_header-tdftime = sy-uzeit.gs_header-tdospras = 'E'.else.gs_header-tdluser = sy-uname.gs_header-tdldate = sy-datum.gs_header-tdltime = sy-uzeit.endif.** Transfer data.clear: gt_text.loop at gt_lines into gs_lines.gs_text-tdformat = '/'.gs_text-tdline = gs_lines.append gs_text to gt_text.clear: gs_text, gs_lines.endloop.** Save text.call function 'SAVE_TEXT'exportingclient = sy-mandtheader = gs_headerinsert = ' 'savemode_direct = ' 'owner_specified = ' 'local_cat = ' 'tableslines = gt_textexceptionsid = 1language = 2name = 3object = 4others = 5.** Check save status.if sy-subrc ne 0.call function 'SAPSCRIPT_MESSAGE'exportingtyp = 'W' "#EC NOTEXT exceptionsothers = 1.else.call function 'COMMIT_TEXT'.endif.endform.。
sap abap 整行读取长文本 函数
SAP ABAP 整行读取长文本函数在SAP ABAP编程中,我们经常需要处理大量的文本数据。
以下是一些常用的函数,用于在ABAP中整行读取长文本。
1. GET_LINE_LENGTH( )```abapGET_LINE_LENGTH( )```这个函数无参数,调用它将会返回当前文本行的长度。
2. GET_LINE( )```abapGET_LINE( )```这个函数无参数,调用它将会读取当前文本行的内容,返回的是文本行的字符串。
3. CONCATENATE( )```abapCONCATENATE( )```此函数接受两个字符串参数,将它们连接在一起并返回结果字符串。
4. SUBSTITUTE( )```abapSUBSTITUTE( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数接受最多五个参数。
它在指定字符串(source string)中查找指定的子字符串(search string),并用指定的替换字符串(replace string)替换它。
可以选择指定替换的特定次数(occurrence),也可以选择指定使用的特定模式类型(pattern type)。
5. TRANSLATE( )```abapTRANSLATE( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数类似于SUBSTITUTE( ),但它还有一个额外的功能:删除源字符串中所有匹配的子字符串。
6. GET_TRANSLATION( )```abapGET_TRANSLATION( source string; search string; replace string [; occurrence [; pattern type ] ] )```此函数类似于SUBSTITUTE( )和TRANSLATE( ),但它返回一个新字符串,其中所有匹配的子字符串都被替换为指定的替换字符串,并且所有其他字符都被删除。
ABAP长文本处理
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = LINES
* OTHERS = 8
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
1.1. 长文本处理
1.1.1. 读取长文本
这里以抓取Delivery Note的Item上的长文本作为例子。
1.1.1.1. 查找长文本的Text ID,Text Object
VL02N修改Delivery Note: 80000023
按回车键或者点击 ,
选中要一行资料,然后点击菜单Goto->Item->Texts
结果显示为:
1.1.3. 删除长文本
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = ID
LANGUAGE = LANGUAGE
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
ABAP语言的常用变量和常用函数
ABAP语言的常用变量和常用函数系统常用变量:SY-SUBRC 执行状态SY-DATUM 服务器日期SY-UZEIT 服务器时间SY-INDEX 循环的次数(DO While)SY-TABIX 当前处理的内表的IndexSY-LINSZ 当前报表宽度SY-UNAME 用户名SY-TCODE 当前的事务代码SY-LANGU 当前登录语言SY-BATCH 后台的程序运行SY-DYNNR 当前屏幕的编号SY-LINCT 当前报表长度SY-LSIND 列表索引页SY-LISTI 上一个列表的索引SY-LILLI 绝对列表中选定行的行号SY-CUCOL 屏幕,PAI 的水平光标位置SY-CUROW 屏幕,PAI 的垂直光标位置SY-CPAGE 列表的当前显示页SY-STARO 真实行号SY-LISEL 选择行的内容,长度为255SY-LINNO 当前行SY-PAGNO 当前页号SY-SLSET 选择屏幕的变式名称SY-MSGID 消息, 消息类SY-MSGTY 消息,消息类型SY-MSGNO 消息, 消息编号SY-MSGV1 消息,消息变量1SY-MSGV2 消息,消息变量2SY-MSGV3 消息,消息变量3SY-MSGV4 消息,消息变量4SY-VLINE 垂直线SY-ULINE 水平线SY-ABCDE 常量,A-Z字母表SY-UCOMM 屏幕,PAI 触发的功能代码系统常用函数21. SHIFT STRING:左移字符串。
长度减1。
22 CONCATENATE 字符合并23. SPLIT:拆分字符串。
24. SEARCH:查询字符串。
25. REPLACE:替换字符串。
26. CONDENSE:删除多余的空格。
27. TRANSLATE:转换字符格式,如将'ABC'转换为'ABC'28. CONVERT TEXT:创建一个可排序的字符串。
29. OVERLAY:用一个字符串覆盖另一个字符串。
ABAP 长文本读取
ABAP 长文本读取用途:常常会用到类似于说明或者备注这样的信息,这些信息就是长文本信息。
long text.查看:比如销售订单中(SO)的表单头和表单行项目都可以进行长文本的备注。
查看途径:VA02-->输入订单号-->goto--->header--->texts-->show detail (一个放大镜的图标)-->goto --->header.到texts这一步就可以看到备注信息,在最后一步可以看到备注的头信息。
Item的备注页可以通过类似的途径来查看,不再赘述。
那么这些长文本信息存在什么地方呢?通过对表的查看,发现SO对应的表VBAP,VBAK,不管是header 信息还是Item信息里面都没有存储相关的数据。
事实上,SAP系统把所有的长文本信息都存在了STXH 和 STXL 这两张表里面。
STXH :STXD SAPscript text file header,长文本的头数据STXL :STXD SAPscript text file lines,长文本的明细数据。
是一张簇表。
通过上面的信息查看,我们在表里面也可以找到数据的数据库存储信息。
对于STXH ,我们可以发现他的关键字有:TDOBJECT 对象很多情况下是表名,但不全是。
TDNAME 名称很多情况下是表单编号&明细号TDID ID 这个就是ID,TDSPRAS 语言。
而这些信息都可以在查看的时候看到。
也就是说通过这些信息我们就可以定位到我们所需要的长文本信息。
那在程序中,我们怎么来取这些数呢?直接取么?我们可以看到STXL-CLUSTD是类似乱码的东西。
怎么成这样的,不清楚,簇表的长字段都是这个鸟样子。
那如果我们来解析,完了。
在程序中,对于长字段,可能的操作大多数是读取。
`在这个时候我们就用: FUNCTION: READ_TEXT。
CALL FUNCTION 'READ_TEXT'EXPORTINGCLIENT = SY-MANDTid = ATlanguage = DEname = 5300000035object = EINA* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER = HEADERtableslines = LINESEXCEPTIONSID = 1LANGUAGE = 2NAME = 3NOT_FOUND = 4OBJECT = 5REFERENCE_CHECK = 6WRONG_ACCESS_TO_ARCHIVE = 7OTHERS = 8.上面的几个传入的参数都是上面讲过的。
mysqllongtext用法
mysqllongtext用法在MySQL中,`LONGTEXT`是一种用于存储非常长文本字符数据的列类型。
它可以存储最大长度为4GB的文本数据。
请注意,`LONGTEXT`只能存储纯文本数据,不能用于存储二进制数据。
使用方法如下:1.在创建表时指定`LONGTEXT`列类型:```sqlCREATE TABLE my_tableid INT PRIMARY KEY AUTO_INCREMENT,text_content LONGTEXT```2.插入文本数据:```sqlINSERT INTO my_table (text_content) VALUES ('This is a very long text...');```3.查询文本数据:```sqlSELECT text_content FROM my_table WHERE id = 1;```4.更新文本数据:```sqlUPDATE my_table SET text_content = 'Updated text...' WHERE id = 1;```5.删除文本数据:```sqlDELETE FROM my_table WHERE id = 1;```请注意,由于`LONGTEXT`能够存储非常大的文本数据,使用它可能会占用较多的存储空间,同时也可能会影响查询和更新的性能。
因此,在设计数据库时,应根据实际需求权衡使用`LONGTEXT`列类型的合理性。
如果只需存储较短的文本数据,可以考虑使用较小的文本列类型,如`VARCHAR`或`TEXT`。
ABAP获取字段的文本描述-查表
HR模块很多提取字段描述的开发要求,但是新手不会找表,刚学会分享一下:
比如需要显示出PA0002-GESCH 对应的文本描述(性别)。
1、按如图按钮进入选择屏幕界面
2、找到字段GESCH,选中输入框单击右边的放大镜进入-------------进入后单击F1打开新对话框------------单击对话框里的如图按钮进入技术信息详情---------就可以看到相应的表名------双击表名就可以进去表一般就能找到文本描述信息了
注:若屏幕中没有需要查找的字段,,,可以单击设置---选择文本,选中需要的字段即可显示在屏幕上。
abap 长文本输入函数
abap 长文本输入函数ABAP(Advanced Business Application Programming)是一种用于SAP应用程序开发的编程语言。
在ABAP中,有一个长文本输入函数,它可以用来处理大段的文字输入。
本文将重点介绍ABAP长文本输入函数的使用方法和注意事项。
在ABAP中,长文本输入函数是通过使用TEXTEDIT控件来实现的。
TEXTEDIT控件可以在屏幕上显示一个多行文本框,用户可以在其中输入大段的文字。
使用长文本输入函数可以让用户方便地输入和编辑长篇文字,比如备注、说明、说明书等。
要使用长文本输入函数,首先需要在屏幕上创建一个TEXTEDIT控件。
可以使用屏幕绘制函数(如SCREEN)或者屏幕绘制对象(如SAP Screen Painter)来创建TEXTEDIT控件。
创建TEXTEDIT控件后,还可以设置控件的属性,如显示行数、输入限制等。
在处理长文本输入时,需要注意以下几点:1. 输入限制:可以通过设置TEXTEDIT控件的属性来限制输入的字符数、行数或者其他条件。
这样可以防止用户输入过多的文字,导致程序性能下降或者屏幕显示异常。
2. 数据存储:在ABAP中,长文本输入的数据一般存储在数据库表中。
可以使用数据库操作函数(如INSERT、UPDATE)来插入或更新文本数据。
在存储文本数据时,需要注意数据库表的字段类型和长度,以免出现数据截断或溢出的问题。
3. 输入校验:在接收用户输入之前,可以进行一些输入校验,以确保输入的内容符合要求。
比如,可以检查输入是否为空、是否包含非法字符或关键词等。
可以使用字符串处理函数(如CONCATENATE、REPLACE)或正则表达式函数(如FIND)来进行输入校验。
4. 输出处理:在将长文本输入的数据显示到屏幕上或者导出到其他系统时,需要进行适当的格式处理。
可以使用字符串处理函数(如CONCATENATE、SPLIT)或者文本处理函数(如FORMAT)来对文本数据进行格式化、分割、合并等操作。
记录ABAP开发的日常——查看对象长文本的方法
记录ABAP开发的日常——查看对象长文本的方法1.使用SE38事务码在SAP系统中,可以通过SE38事务码来查看程序的长文本。
首先,打开SE38事务码,在名称字段输入要查看长文本的对象名称,然后点击"展开"按钮。
在弹出的窗口中,选择"Other Long Texts"选项。
这将打开一个新的窗口,显示对象的长文本。
2.使用SE80事务码另一种查看对象长文本的方法是使用SE80事务码。
打开SE80事务码后,选择要查看长文本的对象类型,比如程序、功能、报表等。
然后,在对象列表中选择要查看长文本的对象,右键点击并选择"Properties"选项。
在弹出的窗口中,选择"Documentation"选项卡。
这将显示对象的长文本。
3.使用SE84事务码4.使用SE24事务码5.使用SE11事务码使用SE11事务码可以查看数据库表的长文本。
在SE11事务码中,输入要查看的表名,然后点击"文本"按钮。
这将打开一个新的窗口,显示表的长文本。
6.在SAPGUI中查看另一种查看对象长文本的方法是使用SAP GUI界面。
在SAP GUI中,选择"System"菜单,然后选择"Services"选项,再选择"Long Text Object"。
在弹出的窗口中,选择要查看长文本的对象类型和对象名称,然后点击"Display"按钮。
这将打开一个新的窗口,显示对象的长文本。
SAP ABAP 长文本处理
1.1.长文本处理1.1.1.读取长文本这里以抓取Delivery Note的Item上的长文本作为例子。
1.1.1.1.查找长文本的Text ID,Text ObjectVL02N修改Delivery Note: 80000023按回车键或者点击,Goto->Item->Texts点击,然后点击菜单:Goto->Header在这里显示的Text ID:0001,Text Object:VBBP,以及Text Name:0080000023000010,这几个字段在后面取值时要使用到1.1.1.2.编写程序*&---------------------------------------------------------------------**& Report Y10028*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT Y10028.DATA IT_DATA TYPE STANDARD TABLE OF TL INE .DATA W_DATA TYPE TLINE.DATA ID LIKE THEAD-TDID.DATA LANGUAGE LIKE THEAD-TDSPRAS. DATA NAME LIKE THEAD-TDNAME.DATA OBJECT LIKE THEAD-TDOBJECT. START-OF-SELECTION.ID = '0001'.LANGUAGE = 'EN'.NAME = '0080000023000010'.OBJECT = 'VBBP'.CALL FUNCTION 'READ_TEXT'EXPORTING* CLIENT = SY -MANDTID = ID LANGUAGE = LA NGUAGENAME = NA MEOBJECT = OB JECT* ARCHIVE_HANDLE = 0 * LOCAL_CAT = ' '* IMPORTING* HEADER =TABLESLINES = IT _DATA* EXCEPTIONS* ID = 1 * LANGUAGE = 2 * NAME = 3* NOT_FOUND = 4 * OBJECT = 5 * REFERENCE_CHECK = 6 * WRONG_ACCESS_TO_ARCHIVE = 7 * OTHERS = 8 .IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NU MBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MS GV3 SY-MSGV4.ENDIF.LOOP AT IT_DATA INTO W_DATA.WRITE:/ W_DATA-TDLINE.ENDLOOP.1.1.1.3.显示结果1.1.2.写入长文本有时需要将其他的系统的资料Upload到长文本字段中,或者将资料从文字档、Excel档Upload到长文本字段中,使用BDC比较麻烦,这个时候可以使用SAVE_TEXT Function来写入长文本。
abap winth as语法
abap winth as语法ABAP(Advanced Business Application Programming)是一种面向SAP系统开发的编程语言,具有高度的可靠性和稳定性。
本文将介绍ABAP语法中的一些常用特性和用法。
一、数据类型和变量声明在ABAP中,可以使用不同的数据类型来声明变量。
常用的数据类型包括整数(INT)、浮点数(FLOAT)、字符(CHAR)、字符串(STRING)等。
变量声明可以使用关键字DATA,如下所示:DATA: lv_num TYPE i, "整数类型lv_name TYPE c LENGTH 10. "字符类型二、条件语句和循环结构ABAP中常用的条件语句包括IF、CASE和WHILE。
IF语句用于判断条件是否成立,根据条件的结果执行相应的代码块。
CASE语句类似于多重IF语句,根据不同的条件执行相应的代码块。
WHILE 语句用于循环执行一段代码,直到条件不满足为止。
三、内置函数和字符串操作ABAP提供了丰富的内置函数来处理各种数据类型。
例如,使用CONCATENATE函数可以将多个字符串拼接在一起,使用SUBSTRING函数可以截取字符串的一部分。
此外,还可以使用FIND和REPLACE函数来查找和替换字符串中的特定字符。
四、结构体和内表ABAP中的结构体类似于其他编程语言中的结构体,用于存储多个相关的数据项。
可以使用关键字TYPES来定义结构体,然后使用关键字DATA声明结构体变量。
内表是一种特殊的数据类型,用于存储一组相同类型的数据。
可以使用关键字TYPES和DATA来定义内表和内表变量。
五、函数模块和方法ABAP中的函数模块类似于其他编程语言中的函数,用于封装一段可重用的代码。
函数模块可以接收输入参数,并返回输出结果。
方法是面向对象编程中的概念,用于封装在类中定义的一组相关操作。
六、异常处理在ABAP中,可以使用TRY...CATCH语句来捕获和处理异常。
abap 基本数据类型
ABAP 基本数据类型一、概述ABAP(Advanced Business Application Programming)是一种用于SAP应用程序开发的编程语言。
在ABAP中,有许多基本数据类型可供使用,这些数据类型用于定义变量、常量和字段,以及进行数据处理和计算。
本文将深入探讨ABAP中的基本数据类型及其特点。
二、ABAP基本数据类型的分类ABAP中的基本数据类型可以分为以下几类:1. 数值类型•整数类型:包括INT1、INT2、INT4和INT8,分别表示1字节、2字节、4字节和8字节的有符号整数。
•浮点类型:包括FLTP、F和D,分别表示单精度浮点数、双精度浮点数和定点数。
2. 字符类型•字符类型:包括CHAR、NCHAR和STRING,分别表示定长字符、Unicode字符和可变长度字符。
•文本类型:包括TEXT和STRING,用于存储长文本。
3. 日期和时间类型•日期类型:包括D和DATS,分别表示日期和日期字符串。
•时间类型:包括T和TIMS,分别表示时间和时间字符串。
•日期时间类型:包括TIMESTAMP和TIMESTAMPL,分别表示时间戳和本地时间戳。
4. 逻辑类型•逻辑类型:包括BOOL,表示逻辑值。
5. 其他类型•二进制类型:包括X和RAW,分别表示十六进制数和原始二进制数据。
•参考类型:包括REF TO,用于引用其他数据对象。
三、ABAP基本数据类型的特点ABAP中的基本数据类型具有以下特点:1. 类型安全ABAP是一种强类型语言,变量在声明时必须指定数据类型,且不允许进行隐式类型转换。
这样可以提高程序的可读性和可维护性,并减少类型相关的错误。
2. 内存管理ABAP中的基本数据类型在内存中占用固定的空间,不受数据的实际长度影响。
这样可以提高数据的读取和处理效率。
3. 字符编码支持ABAP中的字符类型支持多种字符编码,包括ASCII、Unicode等。
这样可以满足不同语言和地区的需求。
用ABAP读取XML文件的内容
XML文件中的内容:<?xml version = "1.0" encoding = "iso-8859-1" ?><CUSTOMERS ><PERSON ><customer_id > 1 </customer_id ><first_name > Jan </first_name ><last_name > Krohn </last_name ></PERSON ><PERSON ><customer_id > 2 </customer_id ><first_name > James </first_name ><last_name > Kirk </last_name ></PERSON ></CUSTOMERS >ABAP代码:*保存XML文件的路径CONSTANTS GS_FILE TYPE STRING VALUE'C:\customers.xml'.* This is the structure for the data from the XML fileTYPES: BEGIN OF TS_PERSON,CUST_ID(4) TYPE N,FIRSTNAME(20) TYPE C,LASTNAME(20) TYPE C,END OF TS_PERSON.* Table for the XML contentDATA: GT_ITAB TYPE STANDARD TABLE OF CHAR2048.* Table and work ares for the data from the XML fileDATA: GT_PERSON TYPE STANDARD TABLE OF TS_PERSON,GS_PERSON TYPE TS_PERSON.* Result table that contains references of the internal tables to be filledDATA: GT_RESULT_XML TYPE ABAP_TRANS_RESBIND_TAB,GS_RESULT_XML TYPE ABAP_TRANS_RESBIND.* For error handlingDATA: GS_RIF_EX TYPE REF TO CX_ROOT,GS_VAR_TEXT TYPE STRING.* Get the XML file from your clientCALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOADEXPORTINGFILENAME = GS_FILECHANGINGDATA_TAB = GT_ITABEXCEPTIONSFILE_OPEN_ERROR = 1FILE_READ_ERROR = 2NO_BATCH = 3GUI_REFUSE_FILETRANSFER = 4INVALID_TYPE = 5NO_AUTHORITY = 6UNKNOWN_ERROR = 7BAD_DATA_FORMAT = 8HEADER_NOT_ALLOWED = 9SEPARATOR_NOT_ALLOWED = 10HEADER_TOO_LONG = 11UNKNOWN_DP_ERROR = 12ACCESS_DENIED = 13DP_OUT_OF_MEMORY = 14DISK_FULL = 15DP_TIMEOUT = 16OTHERS = 17.IF SY-SUBRC <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.* Fill the result table with a reference to the data table.*在XSLT样式表,数据表可以访问* Within the XSLT stylesheet, the data table can be accessed with *“IPERSON”。
ABAP+函数总结+常用函数解释
ABAP 函数总结常用函数解释函数名描述SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VIEW_MAINTENANCE_CALL 维护表视图函数名描述DY_GET_FOCUS 获得屏幕焦点DY_GET_SET_FIELD_VALUE 获得或者设置屏幕字段的值函数名描述F4IF_INT_TABLE_VALUE_REQUEST 显示检索helpREAD_TEXT 读取长文本CONVERSION_EXIT_CUNIT_OUTPUT 单位转换SJIS_DBC_TO_SBC 全角转半角SJIS_SBC_TO_DBC 半角转换为全角CO_R0_CHECK_DECIMAL_POINT 根据单位检查数据的小数位POSTAL_CODE_CHECK 检查邮政编码函数名描述CONVERSION_EXIT_ALPHA_INPUT 全数字则在前面补0CONVERSION_EXIT_ALPHA_INPUT 和上面相反GET_JOB_RUNTIME_INFO 获得job相关信息TERMINAL_ID_GET 获得端末idDATE_CONVERT_TO_FACTORYDATE 把输入日期转为工厂日历日期MESSAGE_TEXT_BUILD 把消息转为文本函数名描述POPUP_TO_CONFIRM 弹出确认窗口函数名描述CONVERSION_EXIT_MATN1_INPUT 物料号码转换函数CONVERSION_EXIT_MATN1_OUTPUT 同上相反CONVERT_TO_LOCAL_CURRENCY 按照指定日期汇率转换金额为指定货币类型SSF_FUNCTION_MODULE_NAME 根据form名取得对应的函数名(SmartForm)函数名描述DATE_CHECK_PLAUSIBILITY 日期CHECKcl_gui_frontend_services=>gui_upload 上传到服务器cl_gui_frontend_services=>gui_download 下载到服本地SSF_FUNCTION_MODULE_NAME SMARTFORMS输出报表时,生成一个函数名称,然后CALL这个名称函数名描述POPUP_TO_DECIDE_LIST 弹出供选择窗口ABAP_DOCU_DOWNLOAD –以HTML格式下载ABAP文档。
ABAP中的字符串操作
ABAP中的字符串操作1,连接字符串:将⼏个字符串连接起来,形成⼀个新的字符串,可以使⽤CONCATENATE语句,SEPARATED BY⽤于指定⼀个字符(串)作为分隔符,在构成新字符串时插⼊s1...sn之间。
语法:CONCATENATE s1 ... sn INTO s_dest [SEPARATED BY sep].其中s_dest也可以是s1...sn中的某个变量。
简单实例:REPORT z_string_con.DATA: s1(9) TYPE c VALUE 'FName',s2(10) TYPE c VALUE 'SName',s3(20),sep(1) TYPE c VALUE '.'.CONCATENATE s1 s2 INTO s3.WRITE / s3.CONCATENATE s1 s2 INTO s3 SEPARATED BY sep.WRITE / s3.输出结果如下:FNameSNameFName.SName注意所有字符串操作将忽略s1...sn中的尾部空格2,拆分字符串:使⽤SPLIT语句将字符串拆分成多个⼩串。
语法:SPLIT s_source AT sep INTO s1 ... sn.在源字符串中搜索分隔符(串)sep,根据该分隔符将源字符串拆分成各个⼩串,然后放到⽬标字段s1 ... sn中,但是⼦字符串中不包括分隔符。
语法:SPLIT s_source AT sep INTO TABLE itab.若源字符串能够拆分的⼦串多过指定数⽬,则使⽤内表操作,该形式根据⼦串数⽣成n⾏的内表简单实例:REPORT z_string_split.DATA: text TYPE string,itab TYPE TABLE OF string.text = 'YOU ARE GOOD BOY'.SPLIT text AT space INTO TABLE itab.LOOP AT itab INTO text.WRITE / text.ENDLOOP.space其实就是text字字符串中的空格,语句LOOP AT⽤于循环出内表的每⼀⾏数据输出结果:YOUAREGOODBOY3,查找⼦串模式:在⼀个字符串中找到⼀个⼦字符串,使⽤SEARCH语句。
记录ABAP开发的日常——查看对象长文本的方法
2.T-CODE:SE37 测 试 文 本
3.T-CODE:SE38 程 序 代 码 实 现
以上就是查看长文本信息以及读取的简略过程,在此以采购申请项目文本举例,其他对象文本的查看方法与此类似。
您使用的浏览器不受支持建议使用新版浏览器
记录 ABAP开发的日常 ——查看对象长文本的方法
前言:在sap系统里面有很多信息是存储在一些对象的长文本里面的,获取长文本的方法是通过READ_TEXT函数获取的,但是调用该函数需 要用到一些参数,这些参数与相应的对象有关,而如何找到这些相关的信息让不少人为止头疼,今天分享一种找文本信息的方法给大家。
关于C#(ASP.net)存取MySQLLongText字段的心得-yahle的技术...
关于C#()存取MySQLLongText字段的心得-yahle的技术...关于C#()存取MySQL LongText字段的心得1.LongText字段是MySQL用于存储超长字符串的数据库类型,有点类似MSSQL的memo。
2.Connector/NET读取LongText的内部实现过程:1)Connector/NET内部将LongText看作字符串,对外以字符串的方式进行读写,不运行调用getBytes的方法。
2)根据MySQL的配置信息,获得MySQL的字符集,并根据字符集信息生成System.Text.Encode对象3)以byte[]的方式从MySQL数据库里将LongText字段信息读取出4)使用System.Text.Encode的GetString方法对字符串进行解码,并返回给用户3.Connector/NET写LongText的内部实现(猜测,没有看过代码)1)根据MySQL的配置信息,获得MySQL的字符集,并根据字符集信息生成System.Text.Encode对象2)System.Text.Encode对象的GetBytes方法对字符串进行编码,转换为byte[]3)将byte[]以二进制流的方式写入数据库对应的LongText字段4.Connector/NET对MySQL数据库默认的字符集1) MySQL 4.1以前的版本(这里特指MySQL 4.0),如果字符集是latin1(拉丁文),则.net 内部的System.Text.Encode对象为Latin1Encoding(.net内部私有对象)。
CodePage=28591(EncodingName = Western European (ISO))2)MySQL 4.1 的版本,如果字符集是latin1,则内部的System.Text.Encode对象为CodePageEncoding。
CodePage=1252(EncodingName = Western European (Windows))3)如果是MySQL的字符集定义为GB2312,或者UTF8(MySQL 4.0不支持),.net内部的编码方式则会根据MySQL的字符集确定。
SAPABAP写时拷贝(CopyonWrite)策略的一个具体例子
SAPABAP写时拷贝(CopyonWrite)策略的一个具体例子值语义(Value semantics)和引用语义(reference semantics)描述了动态内存对象在多个变量引用它时, 可以表现的两种方式。
用于特定类型的动态内存对象的语义, 对该类型的对象如何消耗内存产生了重要影响。
本质上,使用值语义的引用变量总是有它自己的、它所引用的内存对象的唯一副本。
值语义变量类似于静态变量;像静态变量一样,它直接绑定到它所代表的内存对象。
尽管变量只是一个引用,但在语义上它是内存对象本身。
相比之下,使用引用语义的引用变量被理解为指向内存对象的指针。
内存对象在语义上独立于引用变量。
该对象可以在许多这样的变量之间共享。
Value Semantics 的典型代表:•ABAP Internal Tables•Strings•Boxed Components使用值语义解析对 ABAP 内表、字符串或 boxed组件的多次引用。
这意味着:•内表、字符串或boxed 组件的每个变量都指向它自己的内存对象的单独副本。
•将内表、字符串或 boxed 组件分配给第二个 ABAP 变量会触发对象的复制操作,以便每个变量都有自己的对象副本。
•通过特定变量对内表、字符串或装箱组件所做的更改,对于已分配给同一对象的其他变量是不可见的。
由于内部表和字符串可能会变得非常大,ABAP 通过采用惰性复制(有时也称为写时复制)策略 (Copy-On-Write) 来节省复制工作量。
我们来看一个具体的例子。
源代码如下:REPORT z.DATA: lv_size TYPE abap_msize,lv_size1 LIKE lv_size,lv_consumed LIKE lv_size.DATA: lt_table TYPE TABLE OF tadi r,lt_table1 LIKE lt_table.SELECT * INTO TABLE lt_table FROM ta dir.cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = lv_size ).WRITE:/ 'total consumed: ' , lv_size.lt_table1 = lt_t able.cl_abap_memory_utilities=>get_total_used_size( IMPORTIN G size = lv_size1 ).lv_consumed = lv_size1 - lv_size.WRITE:/ 'total consumed after = ' , lv_consumed.APPEND lt_table[ 1 ] TO lt_ta ble.CLEAR: lv_size.cl_abap_memory_utilities=>get_total_used_siz e( IMPORTING size = lv_size ).lv_consumed = lv_size - lv_size1.W RITE:/ 'total consumed after copy on write:', lv_consumed.这个测试程序的5个关键点:1.从数据库表 TADIR 里读取其全部数据,存储到内表 lt_table 内。
abap 正则
ABAP 正则表达式1. 什么是 ABAP 正则表达式?ABAP(Advanced Business Application Programming)是一种在 SAP 系统中使用的编程语言,用于开发企业级应用程序。
正则表达式是一种强大的模式匹配工具,用于在字符串中查找、替换和验证文本。
ABAP 正则表达式是 ABAP 语言中的一种特殊语法,用于处理字符串。
它可以通过定义模式来匹配和操作文本数据。
2. 如何使用 ABAP 正则表达式?在 ABAP 中,可以使用 CL_ABAP_REGEX 类来处理正则表达式。
CL_ABAP_REGEX 类提供了一系列方法来执行正则表达式操作。
以下是使用 ABAP 正则表达式的基本步骤:1.创建一个 CL_ABAP_REGEX 对象。
2.定义一个正则表达式模式。
3.使用 CL_ABAP_REGEX 对象的方法进行匹配、替换或验证操作。
4.根据需要获取匹配结果或处理替换后的文本。
下面将详细介绍每个步骤。
3. 创建 CL_ABAP_REGEX 对象在 ABAP 中,可以使用 NEW 关键字创建一个 CL_ABAP_REGEX 对象,并将其赋值给一个变量。
例如:DATA: regex TYPE REF TO cl_abap_regex.CREATE OBJECT regex.创建对象后,可以使用该对象调用各种方法。
4. 定义正则表达式模式正则表达式模式是一个字符串,用于定义要匹配的文本模式。
它由一系列字符和特殊字符组成,用于表示匹配规则。
以下是一些常用的正则表达式元字符:•.:匹配任意字符。
•*:匹配前面的字符零次或多次。
•+:匹配前面的字符一次或多次。
•:匹配前面的字符零次或一次。
•^:匹配字符串的开头。
•$:匹配字符串的结尾。
•\d:匹配数字字符。
•\w:匹配字母、数字或下划线字符。
要匹配一个由数字组成的字符串,可以使用\d+的正则表达式模式。
在 ABAP 中,可以使用 SET_PATTERN 方法将正则表达式模式设置给CL_ABAP_REGEX 对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何得到内存中的long text 文本
情况描述:
假设在做me21n,va01,mm01,vf01的时候输入了长本文,在保存的时候想要通过增强得到长文本的内容,是不能通过read_text的function来读取的,原因是该信息还在内存里没有写到数据表STXH中,那么有什么办法能够取到呢?
下面通过vf01来举例
如果我在billing head的text ID是‘z004’的文本
Biliing的增强是:
Enhancement : SDVFX002 User exit for A/R line in transfer to accounting Component: EXIT_SAPLV60B_002
所以代码就放到这里面
所放代码的内容是:
DATA BEGIN OF THEADER.
INCLUDE STRUCTURE THEAD.
DATA END OF THEADER.
DATA: LINES LIKE STANDARD TABLE OF TLINE WITH HEADER LINE. DATA: LMEMORY_ID(30) VALUE 'SAPLSTXD'. "do not change
data: CATALOG LIKE TCATALOG OCCURS 0 WITH HEADER LINE. IMPORT CATALOG from MEMORY ID 'SAPLSTXD'.
READ TABLE CATALOG WITH KEY TDID = 'Z004' TDOBJECT = 'VBBK'. CHECK SY-SUBRC = 0.
CONCATENATE LMEMORY_ID CATALOG-ID INTO LMEMORY_ID.
IMPORT THEAD TO THEADER
TLINE TO LINES
FROM MEMORY ID LMEMORY_ID.
通过这段代码可以得到当前的text文本信息
IMPORT CATALOG from MEMORY ID 'SAPLSTXD'.
在catalog里面存放的是各个文本的head信息,主要包含了textID TextObject可以看到下面的debug截图
图中的字段TDOBJECT存放的是billing的head还是item的object, TDID是他的text ID(如果这个ID的text有数值就会包含在这个表中)
这里关键的是‘ID’这个字段,把这个字段的值前面加上SAPLSTXD就可以得到想要的文本的路径,如现在我想要抓取billing header的‘Z004’的文本内容,那么它对应的内存地址就是SAPLSTXD000003
再通过上图的这些信息,调用
IMPORT THEAD TO THEADER
TLINE TO LINES
FROM MEMORY ID ‘SAPLSTXD000003’.就可以得到billing head的text id是‘z004’的文本内容
得到文本内容,文本内容放在lines内表里,如下图
总结,通过这个方法可以有效地查找到所有内存中的text文本,非常适用于增强中的文本读取。