ABAPFunction 之 Read_Text函数的使用方法
ABAP语法讲解二(s e l e c t语句)

SELECTBasic formSELECT select clause [INTO clause] FROM from clause [WHERE cond1] [GROUP BY fields1] [HAVING cond2] [ORDER BY fields2].EffectReads a selection and/or a summary of data from one or more database tables and/or views (see relational database). SELECT is an OPEN SQL statement.Each SELECT statement consists of a series of clauses, each with a differen task:The SELECT clause select clause describes∙Whether the result of the selection should be a single record or a table,∙Which columns should be contained in the result,∙Whether identical lines may occur in the result.The INTO clause INTO clause determines the target area into which the selected data is read. If the target area is an internal table, the INTO clause specifies:∙Whether you want to overwrite the contents of the internal table or∙Append the results to the internal table, and∙Whether you want to place the data in the internal table in a single step, or in a series of packages.The INTO clause can also occur after the FROM clause. You may omit it if∙The SELECT clause contains a "*",∙The FROM clause does not contain a JOIN, and∙You have declared a table work area dbtab in your program using TABLES.The data, if it exists in the database, is then made available using the table work area dbtab. The statement is then processed further like the SELECT * INTO dbtab FROM dbtab statement, which has the same effect.If the result of the selection is a table, the data is normally read line by line (for further information, see INTO clause) in a processing loop, which is introduced with SELECT and concludes with ENDSELECT. The loop is processed once for each line that is read. If you want the result of the selection to be a single record, there is no concluding ENDSELECT statement.The FROM clause FROM clause specifies the source of the data (database tables or views), from which you want to select the data. It also specifies the∙Client handling,∙Behavior for buffered tables, and∙The maximum number of lines that you want to read.The WHERE clause cond1 specifies the conditions that the result of the selection must satisfy. By default, only data from the current client is selected (without you having to specify the client field specifically in the WHERE clause). If you want to select data from several clients, you must use the ... CLIENT SPECIFIED addition in the FROM clause.The GROUP BY clause fields1 combines groups of lines into single lines of the result table.A group is a set of records with the same value of each database field listed in the GROUP BY clause.The HAVING clause cond2 specifies conditions for the combined lines of the result table.The ORDER BY clause fields2 specifies how the records in the result table should be arranged.The system field SY-DBCNT contains the number of lines read so far ecah time the SELECT statement is executed. After ENDSELECT, SY-DBCNT contains the total number of records read.The return code is set as follows:SY-SUBRC = 0:The result table contains at least one record.SY-SUBRC = 4:The result table is empty.SY-SUBRC = 8:Applies only to SELECT SINGLE FOR UPDATE: You did not specify all of the primary key fields in the WHERE condition. The result table is empty.NoteThe SELECT COUNT( * ) FROM ... statement returns a result table containing a single line with the result 0 if there are no records in the database table that meet the selection criteria. In an exception to the above rule, SY-SUBRC is set to 4 in this case, and SY-DBCNTto zero.ExampleDisplaying the passenger list for Lufthansa flight 0400 on 2/28/1995:DATA: WA_SBOOK TYPE SBOOK.SELECT * FROM SBOOK INTO WA_SBOOKWHERECARRID = 'LH ' ANDCONNID = '0400' ANDFLDATE = '19950228'ORDER BY PRIMARY KEY.WRITE: / WA_SBOOK-BOOKID, WA_SBOOK-CUSTOMID,WA_SBOOK-CUSTTYPE, WA_SBOOK-SMOKER,WA_SBOOK-LUGGWEIGHT, WA_SBOOK-WUNIT,WA_SBOOK-INVOICE.ENDSELECT.NotePerformance:Storing database tables in a local buffer (see SAP buffering) can lead to considerable time savings in a client/server environment, since the access time across the network is considerably higher than that required to access a locally-buffered table.Notes1. A SELECT statement on a table for which SAP buffering has been declared in theABAP Dictionary usually reads data from the SAP buffer without accessing thedatabase. This does not apply when you use:- SELECT SINGLE FOR UPDATE or- SELECT DISTINCT in the SELECT clause,- BYPASSING BUFFER in the FROM clause,- ORDER BY f1 ... fn in the ORDER BY clause,- Aggregate functions in the SELECT clause,- When you use IS [NOT] NULL in the WHERE condition,or when the table has generic buffering and the appropriate section of the key is not specified in the WHERE condition.2. The SELECT statement does not perform its own authorization checks. You shouldwrite your own at program level.3. Proper synchronization of simultaneous access by several users to the same set ofdata cannot be assured by the database lock mechanism. In many cases, you will need to use the SAP locking mechanism.4. Changes to data in the database are not made permanent until a database commit(see LUW) occurs. Up to this point, you can undo any changes using a databserollback (see Programming Transactions). At the lowest isolation level (see lock mechanism ), the "Uncommitted Read", it can sometimes be the case that dataselected by a SELECT statement was never written to the database. While a program is selecting data, a second program could be adding data to, changing data in, or deleting data from the database at the same time. If the second program thenexecutes a rollback, the first program has selected a set of data that may onlyrepresent a temporary state from the database. If this kind of "phantom data" isunacceptable in the context of your application, you must either use the SAP locking mechanism or change the isolation level of the database system to at least"Committed Read" (see locking mechanism).5. In a SELECT - ENDSELECT loop, the CONTINUE statement terminates the currentloop pass and starts the next.6. If a SELECT - ENDSELECT loop contains a statement that triggers a databasecommit, the cursor belonging to the loop is lost and a program termination andruntime error occur. Remote Function Calls and changes of screen always lead to adatabase commit. The following statements are consequently not allowed wihtin aSELECT-ENDSELECT loop: CALL FUNCTION ... STARTING NEW TASK, CALLFUNCTION ... DESTINATION, CALL FUNCTION ... IN BACKGROUND TASK,CALL SCREEN, CALL DIALOG, CALL TRANSACTION, and MESSAGE.7. On some database systems (for example DB2/390)locking conflicts can be caused even by read access. You can prevent this problemfrom occurring using regular database commits.SELECT ClauseVariants:1. SELECT [SINGLE [FOR UPDATE] | DISTINCT] *2. SELECT [SINGLE [FOR UPDATE] | DISTINCT] s1 ... sn3. SELECT [SINGLE [FOR UPDATE] | DISTINCT] (itab)EffectThe result of a SELECT statement is itself a table. The SELECT clause, along with the database tables and/or views in the FROM clause, specifies the sequence, name, database type, and length of the columns of the result table.You can also use the optional additions SINGLE or DISTINCT to indicate that only certain lines in the result set should be visible to the program:SINGLEThe result of the selection should be a single entry. If it is not possible to identify a unique entry, the system uses the first line of the selection. If you use the FOR UPDATE addition, the selected entry is protected against parallel updates from other transactions until the next database commit (see LUW and database lock mechanism). If the database system identifies a deadlock, a runtime error occurs. DISTINCTDuplicate entries in the result set are automatically deleted.NoteTo ensure that an entry can be uniquely identified, you can specify all of the fields in the primary key using AND expressions in the WHERE condition.NotePerformance:1. The additions SINGLE FOR UPDATE and DISTINCT bypass the SAP buffering.2. The addition DISTINCT forces a sort on the database server. You should thereforeonly use it if you are really expecting duplicates in the result set.Variant 1SELECT [SINGLE [FOR UPDATE] | DISTINCT] *EffectThe columns of the result set will have exactly the same sequence, names, database type, and length as the fields of the database table or view specified in the FROM clause.ExamplesExample to display all flights from Frankfurt to New York:DATA WA_SPFLI TYPE SPFLI.SELECT * FROM SPFLI INTO WA_SPFLIWHERECITYFROM = 'FRANKFURT' ANDCITYTO = 'NEW YORK'.WRITE: / WA_SPFLI-CARRID, WA_SPFLI-CONNID.ENDSELECT.Example to display the free seats on Lufthansa flight 0400 on 02.28.1995:DATA WA_SFLIGHT TYPE SFLIGHT.DATA SEATSFREE TYPE I.SELECT SINGLE *FROM SFLIGHT INTO WA_SFLIGHTWHERECARRID = 'LH ' ANDCONNID = '0400' ANDFLDATE = '19950228'.SEATSFREE = WA_SFLIGHT-SEATSMAX - WA_SFLIGHT-SEATSOCC.WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,WA_SFLIGHT-FLDATE, SEATSFREE.NoteIf you specify more than one table in the FROM clause and the INTO clause contains an internal table or work area instead of a field list, the fields are placed into the target area from left to right in the order in which they occur in the tables in the FROM clause. Gaps may occur between the table work areas for the sake of alignment. For this reason, you should define the target work area by referring to the types of database tables instead of simply listing the fields. For an example, refer to the documentation of the FROM clause.Variant 2SELECT [SINGLE [FOR UPDATE] | DISTINCT] s1 ... snEffectThe columns of the result table will have the same format as the column references s1 ... sn.If si stands for a field f, MAX( f ), MIN( f ), or SUM( f ), the corresponding column in the result set will have the same ABAP Dictionary format as f. For COUNT( f ) orCOUNT( * ) the column has the type INT4. For AVG( f ) it has the type FLTP.If you use aggregate functions with one or more database fields in the SELECT clause, you must include all of the database fields that are not used in the aggregate function in the GROUP BY clause. The result of the selection in this case is a table.If the SELECT clause only contains aggregate functions, the result of the selection will be a single entry. In this case, SELECT does not have a corresponding ENDSELECT statement.Notes1. You can only use this variant for pool and cluster tables if the SELECT clause doesnot contain any aggregate functions.2. As a rule, aggregate functions used together with the FOR ALL ENTRIES addition donot return the desired values. The result is only correct if the fields in the WHEREcondition that are linked with AND and tested for equality with the aggregated fieldscan identify the table line uniquely.3. If you use a database field with type LCHAR or LRAW in the SELECT clause, you mustspecify the corresponding length field immediately before it in the SELECT clause. NotesPerformance:1. When you use aggregate functions, the system bypasses the SAP buffer.2. Since not all database systems can store the number of lines in a table in theircatalog, and therefore retrieving them is time-consuming, the COUNT( * ) functionis not suitable for testing whether a table contains any entries at all. Instead, youshould use SELECT SINGLE f ... for any table field f.3. If you only want to select certain columns of a database table, use a field list in theSELECT clause or a view.ExamplesExample to display all destinations served by Lufthansa from Frankfurt:TABLES SPFLI.DATA TARGET LIKE SPFLI-CITYTO.SELECT DISTINCT CITYTOINTO TARGET FROM SPFLIWHERECARRID = 'LH ' ANDCITYFROM = 'FRANKFURT'.WRITE: / TARGET.ENDSELECT.Example to display the number of airlines that fly to New York:TABLES SPFLI.DATA COUNT TYPE I.SELECT COUNT( DISTINCT CARRID )INTO COUNTFROM SPFLIWHERECITYTO = 'NEW YORK'.WRITE: / COUNT.Example to find the number of passengers, the total luggage weight, and the average weight of the luggage for all Lufthansa flights on 02.28.1995:TABLES SBOOK.DATA: COUNT TYPE I, SUM TYPE P DECIMALS 2, AVG TYPE F.DATA: CONNID LIKE SBOOK-CONNID.SELECT CONNID COUNT( * ) SUM( LUGGWEIGHT ) AVG( LUGGWEIGHT ) INTO (CONNID, COUNT, SUM, AVG)FROM SBOOKWHERECARRID = 'LH ' ANDFLDATE = '19950228'GROUP BY CONNID.WRITE: / CONNID, COUNT, SUM, AVG.ENDSELECT.Variant 3SELECT [SINGLE [FOR UPDATE] | DISTINCT] (itab)EffectWorks like SELECT [SINGLE [FOR UPDATE] | DISTINCT] s1 ... sn, if the internal table itab contains the list s1 ... sn as ABAP source code, and works like SELECT [SINGLE [FOR UPDATE] | DISTINCT] *, if itab is empty. The internal table itab may only contain one field, which must have type C and not be longer than 72 characters. Youmust specify itab in parentheses. Do not include spaces between the parentheses and the table name.NoteThe same restrictions apply to this variant as to SELECT [SINGLE [FOR UPDATE] | DISTINCT] s1 ... sn.ExampleExample to display all Lufthansa routes:DATA WA_SPFLI TYPE SPFLI,WA_FTAB(72) TYPE C, FTAB LIKE TABLE OF WA_FTAB.CLEAR FTAB. FTAB = 'CITYFROM'. APPEND WA_FTAB TO FTAB. FTAB = 'CITYTO'. APPEND WA_FTAB TO FTAB. SELECT DISTINCT (FTAB) INTO CORRESPONDING FIELDS OF WA_SPFLIFROM SPFLIWHERECARRID = 'LH'. WRITE: / WA_SPFLI-CITYFROM, WA_SPFLI-CITYTO. ENDSELECT.。
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长文本

TE XT长文本的编写大家在编程过程中,一定经常用到RE AD_TEXT这个函数来读取长文本,下面我介绍的是如果自己定义一个长文本object和ID,自己储存长文本。
在项目中,做了很多功能性开发,用户要写一些备注或者是审批意见和建议,自定义表里面储存字段的长度是有限的,这个时候能自定义长文本就很实用了。
第一步:建长文本的OBJECT,TCODE SE75,选择‘文本对象和识别码’,点击change,这个时候就会看到S AP 系统中存在的所有长文本OBJECT,点‘新建’,输入文本对象,描述,选择保存状态是更新,选择编辑器应用格式是T A,行宽选一下,回车,搞定第二步:建长文本的ID,双击刚刚创建的OBJECT,点新建,就可以创建ID了第三步:先RE AD_TE XT,如果sy-subrc = 0,说明可以读到,如果不等于0,就说明还没有写长文本,那就可以用INIT_TE XT函数先初始化一下,再E DIT_TE XT编辑一下,最后S AVE_TE XT保存一下就OK了.长文本的编辑能做到:第二次编辑的时候,第一次编辑的内容都是灰色的,这样就可以用来写审批意见。
也可以做到,第二次编辑的时候,第一次的编辑也可以修改,这由几个参数决定。
SAP的标准例子:SDTE XTE,可以参考--------------------------------------------------------------------------------------在屏幕上加一个custom control name ZCBOXP BO事件显示长文本编辑框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 w hat 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 'RE AD_TE XT'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_RE AD_TE XTP AI事件输入后进行保存module mod_save_text input.perform frm_save_text using gv_action_mode.endmodule. " MOD_SAVE_TE XT INPUT"gv_action_mode 是状态V H A tcode的类型代表新建修改或者显示form frm_save_text using i v_mode type c.clear gt_lines.call function 'RH_EDITOR_GE T'exportingcontrolname = 'ZCBOX'tableslines = gt_linesexceptionsinternal_error = 1others = 2.data: lv_name like thead-tdname. "Name.data: gs_header like thead. "SAP script: Text Header.** Transfer data to header.clear: gs_header, l v_name.lv_name = viqmel-qmnum.gs_header-tdobject = 'Z T2O'.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_TE XT'exportingclient = sy-mandtheader = gs_headerinsert = ' 'savemode_direct = ' 'ow ner_speci f ied = ' 'local_cat = ' 'tableslines = gt_textexceptionsid = 1language = 2name = 3object = 4others = 5.** Check save status.if sy-subrc ne 0.call function 'SAP SCRIPT_ME SSAGE'exportingtyp = 'W' "#E C NOTE XTexceptionsothers = 1.else.call function 'COMMIT_TEXT'.endif.endform.教你如何用WORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:WORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。
Read_Text函数的使用方法

Read_Text函数的使用方法在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢?第一反应是找对应表的字段,那么你可能要失望了。
在SAP系统中,可以供我们使用的数据库字段最大长度是255个文本字符(注:此处可能不正确),对于很长的文本肯定是不能直接保存到某个表的字段中的(注:至于具体保存在何处,还需要请教)。
因此我们要使用系统函数Read_Text来进行读取,以下是该函数的调用方法:DATA: il_tline LIKE tline OCCURS 0 WITH HEADER LINE.vl_tdname LIKE thead-tdname.CALL FUNCTION 'READ_TEXT'EXPORTINGclient = sy-mandtid = 'Z001'language = '1'name = vl_tdnameobject = 'VBBK'* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER =TABLESlines = il_tlineEXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.在上面的示例代码中,红色字体部分是需要输入以及输出的参数,调用这个函数的关键就是在于如何找到各输入参数应该填写的内容,下面就以销售发货/外向交货(VL03N)为例,介绍读取[计划员备注]文本是如何查找对应参数的。
abap 内外码转换新语法

abap 内外码转换新语法ABAP内外码转换新语法ABAP是一种面向SAP系统开发的编程语言,用于处理企业应用程序。
在ABAP编程中,内外码转换是一项常见的任务,通常用于将不同字符集编码之间的数据进行转换。
近年来,ABAP引入了一种新的语法来简化内外码转换的过程,本文将介绍这种新语法以及其使用方法。
一、背景在跨国企业的应用系统中,经常会涉及到不同字符集编码之间的数据交换和转换。
比如,在SAP系统中,往往需要将外部系统传入的数据从其它字符集编码(如UTF-8、GBK等)转换为SAP系统所用的内码(如SAP官方编码UTF-16);或者将SAP系统中的数据转换为外部系统所需的字符集编码。
在过去的ABAP编程中,内外码转换通常需要使用一系列函数来完成,如CONVERT_TO_UNICODE、CONVERT_TO_CODEPAGE等。
这些函数的使用相对繁琐,而且容易出错。
为了简化内外码转换的过程,ABAP引入了一种新的语法。
二、新语法介绍新的内外码转换语法是通过使用关键字CONVERT来实现的。
具体用法如下:1. 将外部编码转换为内码:DATA(lv_text) = '外部编码文本'.DATA(lv_utf16) = CONVERT string( lv_text ) TO utf-16.2. 将内码转换为外部编码:DATA(lv_utf16) = '内码文本'.DATA(lv_text) = CONVERT string( lv_utf16 ) FROM utf-16.通过这种新的语法,我们可以用更简洁的方式实现内外码转换,提高开发效率。
三、使用示例下面我们通过一个实际的示例来演示如何使用新的内外码转换语法。
假设我们需要将一个外部系统传入的GBK编码的文本转换为SAP系统使用的内码(UTF-16)。
使用新的语法,我们可以这样实现:DATA(lv_gbk) = '外部系统传入的文本'.DATA(lv_utf16) = CONVERT string( lv_gbk ) TO utf-16.通过以上代码,我们就把外部系统传入的文本从GBK编码转换为了SAP系统使用的UTF-16编码。
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.上面的几个传入的参数都是上面讲过的。
text函数的使用方法年月日

【主题】text函数的使用方法【内容】一、text函数的概述text函数是一种用于在编程中处理文本的函数。
它可以用于字符串的匹配、替换、连接等操作,是编程中常用的文本处理工具之一。
二、text函数的基本语法text函数的基本语法如下:text(文本内容, 参数1, 参数2, ...)其中,文本内容是需要进行处理的字符串,参数1、参数2等是用于指定具体操作的参数。
三、text函数的常用操作1. 字符串匹配text函数可以用于字符串的匹配操作。
可以使用它来查找某个字符串在文本内容中出现的位置,或者判断某个字符串是否包含在文本中等操作。
2. 字符串替换text函数还可以用于字符串的替换操作。
通过指定替换的规则和内容,可以实现对文本内容中特定字符串的替换操作。
3. 字符串连接text函数可以将多个字符串连接起来,形成一个新的字符串。
这对于需要动态生成字符串的场景非常有用。
4. 字符串分割text函数也可以用于字符串的分割操作。
通过指定分割的规则,可以将文本内容分割成多个部分,方便后续的处理。
四、text函数的示例代码下面是一些使用text函数的示例代码:1. 字符串匹配示例:text("Hello, world", "world") // 返回6,表示"world"在文本中的起始位置2. 字符串替换示例:text("Hello, name", "name", "John") // 返回"Hello, John",将"Hello, name"中的"name"替换为"John"3. 字符串连接示例:text("Hello, " + "world") // 返回"Hello, world",将"Hello, "和"world"连接起来形成新的字符串4. 字符串分割示例:text("apple,orange,banana", ",") // 返回["apple", "orange", "banana"],将文本内容按逗号分割成多个部分五、text函数的注意事项在使用text函数时,需要注意以下几点:1. 参数的顺序和类型需要符合要求,否则会导致函数执行出错。
abap 语法手册

abap 语法手册ABAP语法手册ABAP(Advanced Business Application Programming)是一种用于SAP软件开发的编程语言。
这份手册将介绍ABAP语言的基本语法和常用用法,为开发人员提供一个参考指南。
1. 数据类型和变量声明:ABAP支持多种数据类型,例如整数(INT),浮点数(FLOAT),字符串(STRING)和日期(DATE)。
变量声明可以通过关键字DATA进行,例如:DATA: my_integer TYPE i.DATA: my_string TYPE string.2. 控制结构:ABAP支持常见的控制结构,如条件语句(IF...ELSE...ENDIF)和循环语句(DO...ENDDO,WHILE...ENDWHILE)。
例如:IF my_integer > 10.WRITE: 'The value is greater than 10'.ELSE.WRITE: 'The value is less than or equal to 10'.ENDIF.3. 函数和方法:ABAP允许定义函数和方法来实现特定的功能。
函数可以通过关键字FUNCTION和ENDFUNCTION来定义,而方法可以通过关键字METHOD和ENDMETHOD来定义。
例如:FUNCTION my_function.WRITE: 'Hello, world!'.ENDFUNCTION.4. 数据表和内表:ABAP中的数据表可以通过关键字DATA和TABLE来声明,内表可以通过关键字INTERNAL TABLE和TYPES来声明。
例如:DATA: my_table TYPE TABLE OF my_structure.DATA: my_internal_table TYPE TABLE OF my_structure.5. 数据访问:ABAP提供了方便的数据访问方法,例如通过SELECT语句从数据库中检索数据,或者通过READ TABLE语句从内表中检索数据。
记录ABAP开发的日常——查看对象长文本的方法

2.T-CODE:SE37 测 试 文 本
3.T-CODE:SE38 程 序 代 码 实 现
以上就是查看长文本信息以及读取的简略过程,在此以采购申请项目文本举例,其他对象文本的查看方法与此类似。
您使用的浏览器不受支持建议使用新版浏览器
记录 ABAP开发的日常 ——查看对象长文本的方法
前言:在sap系统里面有很多信息是存储在一些对象的长文本里面的,获取长文本的方法是通过READ_TEXT函数获取的,但是调用该函数需 要用到一些参数,这些参数与相应的对象有关,而如何找到这些相关的信息让不少人为止头疼,今天分享一种找文本信息的方法给大家。
ABAP常用函数

abap函数荟萃2009年04月02日星期四08:331 .函数WS_UPLOAD功能﹕将TXT文件转换成SAP中的内表定义的数据表格文件注意﹕1函数将按参数data_tab的实际参数(假设为table1) table1定义的各个字段的长度来依次将TXT文件间隔开﹐并依次将对应的值付给table1的字段,table中的各个字段必须为C型2 TXT文件中﹐各个字段值之间不能有空格事例: ZBC400_JOHN_262 .函数TH_POPUP功能:向函数入口参数client , user决定的用户发送信息(信息为入口参数message决定的信息)事例﹕ZBC_LSL_0173.函数HELP_V ALUES_GET_WITH_TABLE功能﹕弹出用户所需要的信息﹐让用户选择﹐并把选种的信息付给输入框﹐相当与建立起SEARCH HELP注意: 1 tables的参数fields , valuetab需要固定的内表结构2 importing的参数select_value有高﹐低两个值﹐即用户选种的值付给相应的输入框的最小值﹐最大值3 tables的参数fields , valuetab的实际参数(假设为tab_field, field_value)tab_field, field_value的付值,其tab_field内表中﹐有且仅有一个字段的selectflag = 'X’事例﹕ZPP0002934 .函数Z_UDARBID功能﹕根据工单号﹐当前工作中心代号﹐读出上一工作中心代号﹐上一工作中心名称﹐下一工作中心代号﹐下一工作中心名称事例﹕ZPP000224_EDIT说明﹕取得上下组别的函数更正确的函数z_udarbid_change(可以解决组别循环问题)示例﹕ZBAK_ZPP000222_LSL5 .函数Z_COLORANDSIZE功能﹕根据该物料的组态﹐得出该物料的颜色尺码.注意﹕入口参数IP_SPRAS = 'E’表示本厂款号﹐’M’表示客户款号6 .函数Z_PRINTTITLE功能﹕打印标准报表头事例﹕ZBC_LSL_7777 .函数Z_PAGECHANGE功能﹕许多记录时﹐进行翻叶操作8 .函数READ_TEXT功能﹕读取内文假设﹕FORM get_pitext USING pn LIKE thead-tdname .REFRESH tabline.CALL FUNCTION 'READ_TEXT'EXPORTINGclient = sy-mandtid = '0006'language = 'M'object = 'VBBK'name = pnarchive_handle = 0IMPORTINGheaders = theadTABLESlines = tablineEXCEPTIONSnot_found = 2.注意﹕1 tabline必须为固定格式, headers的实际参数必须为thead name的实际参数必须为thead-tdname形式,靠它来确定取谁的内文2 client , language , archive_handle的入口值基本固定如上3 id为va03?转到?表头?内文?(双击要读取的内文项)?goto?headertext id既是参数id的值text object既是参数object的值事例﹕ZPP0002209 .函数Z_CURR_TO_CHAR .功能﹕把curr型的数据转化成char型的数据﹐转化后的数据仍然按curr型数据显示(“###,###,###.##”)并可以在char型数前后添加固定个特殊字符(“**12,111,456.23”, ”**********12.45”)假设p_curr为CURR型﹐p_char = '*’CALL FUNCTION 'Z_CURR_TO_CHAR'EXPORTINGp_curr_i = p_curr* p_char_i = p_char* p_num_i = 2* p_bore_i =* p_nums_i = 20IMPORTINGp_char_o = t_chrEXCEPTIONno_p_curr_i = 1curr_type_wrong = 2not_bore_i = 3OTHERS = 4.说明﹕p_curr :必须输入参数﹐不能超过15个长度,被转化的参数p_char :可线参数﹐须添加的特殊字符p_num_I :可线参数﹐当参数p_nums_I为空时有效﹐要添加的特殊字符的个数p_bore_I:可线参数﹐决定是在前/后添加特殊字符,b?前﹐e?后﹐默认为b,只能输入b/e否则函数不转化p_nums_I:可线参数﹐决定转化成固定个字符长度的﹐若参数p_char_I有值﹐则不足位时补特殊字符﹐若参数p_char_I为空时﹐该参数无效﹐若该参数输入值﹐则参数p_num_I无效。
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读取采购申请的项目文本READ_TEXT

IF sy-subrc = 0 AND it_texttable[] IS NOT INITIAL.
READ TABLE it_texttable INTO hk_text INDEX 1.
ENDIF.
ENDFORM.
"FRM_READ_TEXT
= fobject
TABLES
lines
= flines
EXCEPTIONS
id
=1
language
=2
name
=3
not_found
=4
object
=5
reference_check
=6
wrong_access_to_archive = 7
OTHERS
= 8.
LOOP AT flines. it_tem_table-tdline = flines-tdline. APPEND it_tem_table.
E长文本中<(>&<)>符号转换成正确的'&'符号
CALL FUNCTION 'CONVERT_ITF_TO_STREAM_TEXT'
EXPORTING
language = sy-langu
TABLES
itf_text = it_tem_table
text_stream = it_texttable.
LOOP AT tab_5 ASSIGNING <fs>.
"tab_5 内表
CLEAR ebelnkp.
CONCATENATE <fs>-banfn <fs>-bnfpo INTO ebelnkp. "banfn采购申请号
ABAP常用FUNCTION2

PRICING 获得定价条件
PROFILE_GET 从INI文件读取一条记录
PROFILE_SET 往INI文件写一条记录
READ_TEXT 读取长文本
SAVE_TEXT 上传长文本
REGISTRY_GET 从注册表读取一条记录
REGISTRY_SET 在注册表里设置一条记录
RFC_ABAP_INSTALL_AND_RUN 当MODE参数值为‘F’时运行PROGRAM表中的程序'.
SXPG_COMMAND_EXECUTE-检查用户是否有执行某个命令的权限,拥有授权则执行命令
TERMINAL_ID_GET–返回终端ID
TH_DELETE_USER–剔除一个用户,效果同SM04
TH_ENVIRONMENT–获得UNIX环境
TH_POPUP–在特定用户屏幕上显示一个系统消息
RH_GET_ACTIVE_WF_PLVAR 获得激活的HR计划
RH_START_EXCEL_WITH_DATA 启动Excel并用内表给文件赋值
RH_STRUC_GET 返回所有相关的组织信息
RP_CALC_DATE_IN_INTERVAL 年月日加减
DATE_CHECK_PLAUSIBILITY 日期有效性检查
POPUP_TO_SELECT_MONTH – 弹出一个对话框供选择月。
POPUP_WITH_TABLE_DISPLAY - Provide a display of a table for user to select one, with the value of the table line returned when selected。
DYNP_VALUES_READ – 读取SCREEN字段的值,也可以用来读取报表SELECTION SCREEN。
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来写入长文本。
SAP ABAP 长文本处理(word文档良心出品)

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中的字符串操作

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语句。
read-text函数

函数read_text,怎么使用DATA: BEGIN OF flines OCCURS 0.INCLUDE STRUCTURE tline.DATA: END OF flines.DATA: textname LIKE thead-tdname.DATA: flines1(100) .DATA: flines2(100) .textname = i_vbe-vbelv ."变更格式CALL FUNCTION 'READ_TEXT' " 抬头备注EXPORTINGclient = sy-mandtlanguage = '1'id = '0001'name = textnameobject = 'VBBK'TABLESlines = flines " LIKE TLINE EXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5referenc_check = 6wrong_access_to_archive = 7OTHERS = 8.IF sy-subrc <> 0.* MESSAGE ID sy-msgid* TYPE sy-msgty* NUMBER sy-msgno* WITH sy-msgv1* sy-msgv2* sy-msgv3* sy-msgv4.ELSE.* loop at flines.* endloop.ENDIF.READ TABLE flines INDEX 1.flines1 = flines-tdline.READ TABLE flines INDEX 2.flines2 = flines-tdline.这是一个读了两行文本的例子,当然如果只有一行,第二个变量就是空值。
读出来的TEXT是一个内表,有可能有很多行,后面的自已想怎么处理都行,你读一个就知道了。
sap abap read 语句

sap abap read 语句SAP ABAP是一种企业级应用开发语言,用于开发和定制SAP系统。
其中,READ语句是ABAP语言中用于从数据库表中读取数据的关键字。
下面列举了10个关于SAP ABAP READ语句的相关内容。
1. READ语句用于从数据库表中读取单行数据。
通过指定主键或唯一索引的值,可以准确定位需要读取的数据。
2. READ语句可以用于读取所有字段或指定的字段。
通过指定字段列表,可以只读取需要的数据,提高效率。
3. READ语句可以在内部表中进行读取。
通过指定内部表和WHERE 条件,可以将符合条件的数据读取到内部表中,方便后续处理。
4. READ语句可以使用WITH KEY子句进行读取。
通过指定主键或唯一索引的值,可以直接读取指定的数据行,而无需遍历整个表。
5. READ语句可以使用INTO子句将读取的数据赋值给变量。
通过指定变量列表,可以将读取的数据赋值给对应的变量,方便后续处理和显示。
6. READ语句可以使用BINARY SEARCH子句进行二分查找。
通过在有序表上使用BINARY SEARCH,可以提高查找效率。
7. READ语句可以使用TABLES子句指定需要读取的数据库表。
通过指定数据库表列表,可以同时读取多个表的数据,方便关联查询。
8. READ语句可以使用FOR ALL ENTRIES子句进行多表关联查询。
通过在WHERE条件中使用FOR ALL ENTRIES,可以根据另一个内部表的值进行过滤,实现多表查询。
9. READ语句可以使用ORDER BY子句进行排序。
通过在ORDER BY 子句中指定排序字段,可以按照指定的顺序读取数据,方便后续处理和显示。
10. READ语句可以使用INDEX子句指定读取的数据行序号。
通过在INDEX子句中指定行号,可以只读取指定行号的数据,方便分页查询。
以上是关于SAP ABAP READ语句的一些相关内容。
通过了解READ语句的用法和特点,可以更好地进行数据读取和处理,提高开发效率和数据查询准确性。
sap abap read 语句

sap abap read 语句SAP ABAP中的READ语句是一种用于从数据库表中读取数据的功能。
通过READ语句,可以根据给定的条件从数据库表中检索一条或多条数据。
下面是关于SAP ABAP READ语句的一些重要内容。
1. READ语句的基本语法在ABAP中,使用READ语句需要指定目标表和WHERE条件。
基本语法如下:```abapREAD TABLE <目标表> WITH KEY <WHERE条件>.```其中,目标表是要读取数据的数据库表,WHERE条件是要满足的查询条件。
2. 使用READ语句读取单条数据如果目标表中满足WHERE条件的数据存在,则可以使用READ语句将数据读取到一个可以存储数据的变量中。
下面是一个示例:```abapDATA: lv_data TYPE <数据类型>.READ TABLE <目标表> WITH KEY <WHERE条件> INTO lv_data.```其中,lv_data是一个变量,用于存储读取到的数据。
3. 使用READ语句读取多条数据如果目标表中存在多条满足WHERE条件的数据,可以使用READ语句的循环结构来读取所有数据。
下面是一个示例:```abapDATA: lt_data TYPE TABLE OF <数据类型>.READ TABLE <目标表> WITH KEY <WHERE条件> TRANSPORTING NO FIELDS.DO.READ TABLE <目标表> WITH KEY <WHERE条件> TRANSPORTING NO FIELDS.IF sy-subrc = 0.APPEND <目标表>-field TO lt_data.ELSE.EXIT.ENDIF.ENDDO.```其中,lt_data是一个内表,用于存储读取到的多条数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ABAP:Function 之Read_Text函数的使用方法
在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢?
第一反应是找对应表的字段,那么你可能要失望了。
在SAP系统中,可以供我们使用的数据库字段最大长度是255个文本字符(注:此处可能不正确),对于很长的文本肯定是不能直接保存到某个表的字段中的(注:至于具体保存在何处,还需要请教)。
因此我们要使用系统函数Read_Text来进行读取,以下是该函数的调用方法:
DATA: il_tline LIKE tline OCCURS 0 WITH HEADER LINE.
vl_tdname LIKE thead-tdname.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'Z001'
language = '1'
name = vl_tdname
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = il_tline
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 NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
在上面的示例代码中,红色字体部分是需要输入以及输出的参数,调用这个函数的关键就是在于如何找到各输入参数应该填写的内容,下面就以销售发货/外向交货(VL03N)为例,介绍读取[计划员备注]文本是如何查找对应参数的。
1、输入TCODE:VL03N,显示一个凭证
2、在[概览]的[文本]处,进入修改状态,输入相应的段落文字,双击文本内容。
3、进入文本内容行编辑器界面,点击菜单[转到]-->[表头]
4、见下图,上面的四行就是需要输入的参数,其中:
文本名:’011000218’,为凭证号,对应name参数
语言:ZH,但是此处参数类型为C(1),不能直接使用SY-LANGU变量,根据系统配置不同,在我的系统中使用1,对应language参数,
标识:Z001,该标识由SAP系统配置而来,对应ID参数
文本对象:VBBK,对应object参数
相对于Read_Text函数,有一个Save_Text正好是用来往系统中写文本字段,具体用户和Read_Text基本相似.。