还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
以簇方式存储数据对象概览内容ABAP/4内存中的数据簇1在ABAP/4内存中存储数据对象2从内存中读取数据对象2删除内存中的数据簇4数据库中的数据簇5簇数据库5在簇数据库中存储数据对象7创建数据簇目录表9从簇数据库中读取数据对象10从簇数据库中删除数据簇12用开放式SQL语句访问簇数据库13可以用数据簇方式对ABAP/4程序的任何复杂内部数据对象进行分组保存,并将其临时存储在ABAP/4内存中,或长时间存储在数据库中在下列主题中,您将学到更多有关在内存和数据库中存储数据簇的知识ABAP/4内存中的数据簇可以在ABAP/4内存中存储数据簇ABAP/4内存是分配给特定事务的存储区,任何模块都是用关键词CALL或SUBMIT从中进行调用的关于事务流的详细信息,参见编写ABAP/4事务页Error!Notavalidlink.ABAP/4内存与在事务期间生成该内存的ABAP/4程序或程序模块无关这意味着在同一事务中,存储在ABAP/4内存中的对象可由任何ABAP/4程序重新读取但本节所说的ABAP/4内存与不受事务限制的全局SAP内存不同对于示例,参见将SPA/GPA参数传送到事务页Error!Notavalidlink.ABAP/4内存允许跨越多个程序层次,在不同模块化单元之间进行数据传递例如,可以在下列单元之间传递数据_报表和其他SUBMIT调用的报表_事务和报表_不同对话模块_程序和功能模块寸寸O离开事务后,就释放该内存PROGRAMSAPMZTS
2.TABLESINDX.DATADIRTABLIKECDIROCCURS10WITHHEADERLINE.IMPORTDIRECTORYINTODIRTABFROMDATABASEINDXHKID!Table
1.IFSY-SUBRC=
0.WRITE:/1AEDAT:INDX-AEDAT/PSERA:IINDX-USERA/1PGMID:1INDX-PGMID.WRITE/*Directory:*.LOOPATDIRTAB.WRITE:/DIRTAB-NAMEDIRTAB-OTYPEzDIRTAB-FTYPEDIRTAB-TFILLDIRTAB-FLENG.ENDLOOP.ELSE.WRITE!Notfound
1.ENDIF.此程序创建数据簇的目录表,该数据簇是用在簇数据库中存储数据对象页7中的示例程序存储的其输出如下所示内容DIRTAB的表含有一行,该行表明数据簇包含名为ITAB的内表,表具有3000个长度为8个字节的已填写行从簇数据库中读取数据对象要将数据对象从ABAP/4簇数据库读入ABAP/4程序中,请使用下列语句语法IMPORTF1[TOgi]F2[TOg2]FROMDATABASEdbtabar[CLIENTcli]IDkey|MAJOR-IDmaid[MINOR-IDmiid].此语句从数据库<dbtab>中的数据簇中读取列表中指定的数据对象必须用TABLES语句声明<dbtab>o如果不附加TOvg>则将数据库的数据对象<fi>分配给程序中的同名数据对象如果不附加此选项,则将数据库的数据对象<fi>写入字段vg>要将数据簇存储到数据库中,通常使用EXPORTTODATABASE语句(参见在簇数据库中存储数据对彖(页7))关于数据库表<dbtab>结构的详细信息,参见簇数据库的结构顷6)o<ar>是即将存储数据库的簇的两字符区域IDo<key>标识数据库中的数据,其最大长度取决于<dbtab>中名称字段的长度可以用MAJOR-ID<maid>代替附加ID<key>o然后,就选定名称的第一部分与vmaid>相符的数据簇如果指定具有MAJOR-ID的附加MINOR-ID<miid>则选择名称的第二部分(也就是vmaid>长度之后的位置)大于或等于vmiid>的数据簇在处理特定客户簇数据库时,可以使用选项CLIENT<cli>关闭自动客户处理,然后自己指定客户必须在输入数据库名之后立即指定此选项IMPORT语句也自动从数据库表中读取表工作区<dbtab>的用户字段内容不必读取存储在特殊名称vkey>之下的所有对象,但可以使用名称<fi>作出选择如果数据库不包含具有指定关键字<ar>、<key>和vcli>的对象,则将SY-SUBRC设置为4但是,如果数据库中存在具有这些关键字的数据簇,那么,无论是否存在数据对象<fi>SY-SUBRC之值总是为Oo如果簇中没有数据对象<fi>则目标字段保持不变运行时,系统检查此语句以查看数据库中对象的结构是否与要写入的结构相符如果不符合,将出现运行时间错误类型C字段是此规则的例外,也可显示在结构数据字段结尾可以加长、缩短、附加或忽略PROGRAMSAPMZTS
3.TABLESINDX.OFJTABOCCURS100TYPEITYPEIJTAB.IMPORTITABTOJTABFROMDATABASEINDXHKID!Table
1.WRITE:/1AEDAT:INDX-AEDAT/USERA:IINDX-USERA/PGMID:INDX-PGMID.SKIP.WRITE1JTAB:
1.LOOPATJTABFROM1TO
5.WRITE:/JTAB-COLlJTAB-COL
2.ENDLOOP.此程序将内表JTAB(用在簇数据库中存储数据对象(页7)中的示例程序存储)从簇数据库INDX读入内表JTABoINDX的某些用户字段输出和JTAB的头五行如下所示从簇数据库中删除数据簇要从簇数据库中删除数据簇,请使用下列语句:语法DELETEFROMDATABASEdbtabar[CLIENTcli]IDkey.此语句删除数据库表dbtab中区域为var和名称为vkey的整个数据簇必须用TABLES语句对dbtab进行声明在处理特定客户簇数据库时,可以使用选项CLIENTcli关闭自动客户处理,然后自己指定客户必须在输入数据库名称之后立即指定此选项要将数据簇存储到数据库中,通常使用EXPORTTODATABASE语句参见在簇数据库中存储数据对象页7o关于数据库表vdbtab结构的详细信息,参见簇数据库的结构回6o此DELETE语句从簇数据库中删除被指定数据簇覆盖的所有行如果可以删除具有指定关键字的数据簇,则把SY-SUBRC设置为Oo否则,其值为4oPROGRAMSAPMZTS
4.TABLESINDX.DATADIRTABLIKECDIROCCURS
10.IMPORTDIRECTORYINTODIRTABFROMDATABASEINDXHKID1Table!.WRITE:/1SY-SUBRCIMPORT:1ASY-SUBRC.DELETEFROMDATABASEINDXHKID*Table
1.WRITE:/1SY-SUBRCDELETE:SY-SUBRC.IMPORTDIRECTORYINTODIRTABFROMDATABASEINDXHKID1Table
1.WRITE:/fSY-SUBRCIMPORT:1SY-SUBRC.此程序删除用在簇数据库中存储数据对象页7中的示例程序存储的数据簇如果启动程序时存在数据簇,则输出如下所示SY-SUBRCIMPORT:0SY-SUBRCDELETE:0SY-SUBRCIMPORT:4在第一个IMPORT语句中,数据簇依然存在然后成功地执行DELETE语句在第二个IMPORT语句中,数据簇不再存在用开放式SQL语句访问簇数据库簇数据库是在ABAP/4词典中定义的关系数据库,ABAP/4以特殊方法使用该词典因此,原则上说,也可以使用蓼(
4._数据库表回11-1)中介绍的开放式SQL语句对其进行访问对簇数据库表,为了有意义地使用开放式SQL语句,必须清楚数据库表的特殊结构(参见簇数据库的结构®6))例如,用SELECT语句读取字段CLUSTR和CLUSTID或用UPDATE语句对其进行更改,都毫无意义这些字段包含由系统进行编码的数据簇,要对其进行正确的处理,只能使用EXPORTTODATABASE和IMPORTFROMDATABASE语句如果数据簇语句的特定组合导致超时运行,则只应使用开放式SQL语句UPDATE.MODIFY和DELETEo一定不要在数据簇中使用开放式SQL语句INSERT可以使用开放式SQL语句维护簇数据库例如,SELECT语句允许从簇数据库表中查看特定数据簇其中,也可以使用用户数据字段中的信息(参见在簇数据库中存储数据对象(页7)中的示例)oIMPORTFROMDATABASE语句不适合此目的PROGRAMSAPMZTS
5.DATACOUNTTYPEIVALUE
0.TABLESINDX.SELECT*FROMINDXWHERERELID=ANDSRTF2=0ANDUSERA=SY-UNAME.DELETEFROMDATABASEINDXHKIDINDX-SRTFD.IFSY-SUBRC=
0.COUNT=COUNT+
1.ENDIF.ENDSELECT.WRITE:/COUNTCluster(s)deleted
1.此示例程序从表INDX中删除区域“HK”(其中的字段USERA包含当前程序用户名称)中的所有数据簇用SELECT语句填写表工作区INDX的字段SRTFD并在DELETE语句中使用在WHERE子句中指定SRTF2=0可以保证只对每个数据簇进行一次处理请不要混淆开放式SQL命令集中的DELETE语句(参见从数据库表中删除行(页11-35))和数据簇的DELETE语句(参见从簇数据库中删除数据簇(页12))删除数据簇中的数据时,应该始终是删除所有行,而不仅仅指特定行下例说明如何使用开放式SQL语句UPDATE更改数据库表中的数据簇名称和区域用簇语句EXPORT^IMPORT和DELETE来解决此问题显得太繁琐PROGRAMSAPMZTS
5.TABLESINDX.DATADIRTABLIKECDIROCCURS10WITHHEADERLINE.UPDATEINDXSETRELID=NWSRTFD=!InternalWHERERELID=HKANDSRTFD=!Table
1.WRITE:/UPDATE:/SY-SUBRC:ISY-SUBRC/*SY-DBCNT:ISY-DBCNT.IMPORTDIRECTORYINTODIRTABFROMDATABASEINDXNWIDfInternal
1.WRITE:/IMPORT:/SY-SUBRC:SY-SUBRC.此程序更改了使用在簇数据库中存储数据对象页7中的示例程序存储的数据簇启动程序时,如果存在数据簇,并且在UPDATE语句中没有其他错误,则输出如下所示UPDATE:SY-SUBRC:0SY-DBCNT:6IMPORT:SY-SUBRC:0UPDATE语句更改属于指定数据簇的数据库表INDX的六行,正如更改嘈_(页11-31)中所述然后,MPORTDIRECTORY语句在名称“内部”之下的区域“NW”中查找数据簇使用EXPORTTOMEMORY语句在内存中存储数据对象使用IMPORTFROMMEMORY语句从内存中读取数据对象使用FREEMEMORY语句从内存中删除数据簇在ABAP/4内存中存储数据对象要将数据对象从ABAP/4程序写入ABAP/4内存,请使用下列语句语法EXPORTF1[FROMgi]F2[FROMg2]...TOMEMORYIDkey.此语句将列表中指定的数据对象存储为ABAP/4内存中的数据簇如果忽略选项FROMg±则将数据对象fi存储到自己的名称之下如果使用该选项,则将数据对象vg存储到下面IDkey用于标识内存数据,不得超过32个字符EXPORT语句总是完全改写IDkey相同的任何现有数据簇的内容对于有表头行的内表,只可以存储表本身,而不能存储表头行在EXPORT语句中,将表名解释为表这是例外通常情况下,语句将表名解释为表工作区(参见访问内表(页8-4))oPROGRAMSAPMZTS
1.DATATEXTllOVALUE1Exporting
1.DATAITABLIKESBOOKOCCURS10WITHHEADERLINE.DO5TIMES.ITAB-BOOKID=100+SY-INDEX.APPENDITAB.ENDDO.EXPORTTEXT1TEXT2FROM1Literal1TOMEMORYID1text
1.EXPORTITABTOMEMORYIDtable.在此示例中,文本字段TEXT1和TEXT2存储到程序SAPMZTS1的ABAP/4内存的ID“文本”之下,内表ITAB则存储到ID“表”中从内存中读取数据对象要将ABAP/4内存中的数据对象读到ABAP/4程序中,请使用下列语句:语法IMPORTF1[TOgi]F2[TOg2]...FROMMEMORYIDkey.此语句从ABAP/4内存的数据簇中读取列表中指定的数据对象如果忽略选项TOgi则将内存中的数据对象fi赋给程序中的同名数据对象如果使用此选项,则将内存中的数据对象fi写入字段vg中IDkey用于标识内存数据,不得超过32个字符不必读取存储在特定IDkey下的所有对象相反,可以从名称fi中进行选择如果内存中不包含指定IDkey下的对象,则将SY-SUBRC设置为4但是,如果内存中存在带此ID的数据簇,无论数据对象fi是否也存在,SY-SUBRC之值总是为Oo如果簇中不存在数据对象fi则目标字段保持不变此语句不进行这种检查即内存中的对象结构与要写入的结构是否匹配因为数据是按位进行传送的,所以不匹配的结构可能会引起不一致PROGRAMSAPMZTS
1.DATATEXTllOVALUE1Exporting
1.DATAITABLIKESBOOKOCCURS10WITHHEADERLINE.DO5TIMES.ITAB-BOOKID=100+SY-INDEX.APPENDITAB.ENDDO.EXPORTTEXT1TEXT2FROM1Literal1TOMEMORYID1text
1.EXPORTITABTOMEMORYID1table.SUBMITSAPMZTS2ANDRETURN.SUBMITSAPMZTS
3.程序的第一部分对应于在内存中存储数据对象页2中的示例当前示例也以SUBMIT调用程序SAPMZTS1和SAPMZTS2通过在ABAP/4编辑器中双击程序名生成和维护SUBMIT后面指定的程序关于SUBMIT的详细信息,参见调用报表页Error!Notavalidlink.SAPMZTS2的示例PROGRAMSAPMZTS
2.DATA:TEXT110zTEXT3LIKETEXT1VALUE1Initial.IMPORTTEXT3FROMMEMORYIDtext.WRITE:/SY-SUBRCTEXT
3.IMPORTTEXT2TOTEXT1FROMMEMORYID1text
1.WRITE:/SY-SUBRCTEXT
1.SAPMZTS3的示例PROGRAMSAPMZTS
3.DATAJTABLIKESBOOKOCCURS10WITHHEADERLINE.IMPORTITABTOJTABFROMMEMORYIDtable
1.LOOPATJTAB.WRITE/JTAB-BOOKID.ENDLOOP.输出位于两个连续的屏幕上,如下所示SAPMZTS2试图从数据簇“文本”中读取不存在的数据对象TEXT3o因此,目标字段TEXT3保持不变现有数据对象TEXT2被放到TEXT1之后两种情况中,因为簇“文本”包含数据,SY-SUBRC都被设置为0oSAPMZTS3将内表ITAB从簇“表”中写入内表JTAB两个表结构一样,同为ABAP/4词典表SBOOK结构删除内存中的数据簇要删除ABAP/4内存中的数据对象,请使用下列语句语法FREEMEMORY[IDkey].如果不附加IDvkey则此语句删除整个内存,包括此前用EXPORT存储到ABAP/4内存中的所有数据簇附加IDkey之后,该语句只删除用此名称命名的数据簇因为删除整个内存会导致任何系统例程内存内容的丢失,所以只应使用附加有ID的FREEMEMORY语句PROGRAMSAPMZTST.DATA:TEXT10VALUE.0123456789IDEN3VALUE1XYZ
1.EXPORTTEXTTOMEMORYIDIDEN.TEXT=xxxxxxxxxx.IMPORTTEXTFROMMEMORYIDIDEN.WRITE:/SY-SUBRCTEXT.FREEMEMORY.TEXT=1xxxxxxxxxx.IMPORTTEXTFROMMEMORYIDIDEN.WRITE:/SY-SUBRCTEXT.此示例的输出为001234567894xxxxxxxxxxFREEMEMORY语句删除数据簇“XYZ”因此,在下一个IMPORT语句之后,系统字段SY-SUBRC被设置为4而目标字段保持不变数据库中的数据簇可以将数据簇存储到ABAP/4词典的特定数据库中就是所谓的ABAP/4簇数据库,其预定义结构为该方法允许单步存储任何具有深结构的复杂数据对象,而不必将其调整为关系数据库的平面结构这样,在整个系统中都可使用该数据对象,并且每个用户都可对其进行访问要使访问成功,必须知道存储对象的数据类型在簇数据库中存储数据,对于支持有关关系数据库信息的分析结果十分有用例如,如果要从所有分支机构的人员数据中生成销售额最高的客户清单或者完整的通讯录,就可以编写ABAP/4程序让程序来解决此类问题,并将结果存储为数据簇如果需要刷新存储的数据簇,可以在后台定期运行这些程序要使用该结果,可以使用只访问该数据簇的其他程序因为不必在每次使用结果时都访问关系数据库中的分布式数据,并且也不必每次都重新生成结果,所以,此方法可以很大程度上减少系统的响应时间存储数据簇是专就ABAP/4而言尽管也可以使用SQL语句访问簇数据库,但是,只有ABAP/4语句能够对已存储的数据簇结构进行解码使用EXPORTTODATABASE语句将数据对象存储到簇数据库中使用IMPORTFROMDATABASE语句为数据簇生成目录表,并从簇数据库中读取数据对象使用DELETEFROMDATABASE语句从簇数据库中删除数据簇关于使用开放式SQL语句访问簇数据库的信息,参见簇数据库簇数据库是ABAP/4词典中的特殊数据库用于存储数据簇其行结构被划分为部分标准化的开始区(由多个字段组成)和一个用于存储数据的大的区域下列主题介绍建立簇数据库的规则,同时还就系统定义的簇数据库INDX进行讨论簇数据库的结构簇数据库的结构如下所示:建立簇数据库的规则如下所述必须创建第一点到第四点中列出的关键字段上述数据类型都是ABAP/4词典类型.如果该表是针对客户的,第一个字段必须这样定义名称为MANDT类型为CHAR长度为3字节,用于存储客户IDo存储数据簇时,系统既可自动使用当前客户填写字段MANDT还可使用EXPORT语句中显式指定的客户进行填写.下一字段(对于与客户无关的表,这是第一个字段)必须这样定义名称为RELID类型为CHAR长度为2字节该字段包含区域ID簇数据库被分成不同的区域存储数据簇时,系统用EXPORT语句中指定的区域ID填写字段RELIDo.下一字段类型为CHAR长度可变它包含簇的名称key存储数据簇时、在程序中用EXPORT语句的附加ID指定了该簇因为后面的字段要对齐,所以系统应最多使用3个未用字节填充在字段RELID的结尾如果创建自己的簇数据库,应该相应地定义此字段的长度.下一字段必须名称为SRTF2类型为INT4长度为4单个数据簇可以扩展到数据库表的好几行中在理论上,每个簇可能有2**31行字段SRTF2包含存储的数据簇内行的顺序号码,可以是0和2**31-1之间的任何值存储数据簇时,系统自动填写此字段(参见第7点).SRTF2的后面可以是任何数目的数据字段,这些字段名称和类型可任意交换存储数据簇时,系统并不自动填写这些字段必须在程序中的EXPORT语句之前将值显式分配到这些字段通常包含诸如程序名、用户ID等控制信息.行上的倒数第二个字段名称必须为CLUSTR类型为INT2并且长度必须为2o它包含后面的字段CLUSTD中的数据长度存储数据簇时,系统自动填写此字段.行上的最后一个字段必须名称为CLUSTD类型为VARCo其长度可以任意但通常为1000个字节左右存储数据簇时,系统按压缩格式用实际数据填写此字段如果CLUSTD的长度不足以存储簇数据,则数据就被分布到多行上这些行在字段SRTF2中进行编号(参见上面的第4点)既可以按照上述规则创建自己的簇数据库(此时参见文档ABAP/4词典(页Error!Notavalidlink.))也可以使用系统定义的簇数据库INDX簇数据库的示例87)簇数据库的示例数据库INDX是簇数据库的示例,是系统中所包含的标准安装的一部分从用户应用的角度考虑由于没有必要先创建新的簇数据库,所以,比较实用而且,所有用户都可以访问存储在这里的数据,并且还可更改或删除要在ABAP/4编辑器中查看数据库INDX的结构,请选择“编辑-详细功能-命令条目”,然后输入showindx或者双击INDX例如在TABLES语句中对于每个字段,都将看到ABAP/4词典数据类型和相应的ABAP/4编程语言的数据类型(也就是TABLES生成的表工作区中的组件数据类型)头四个字段是表INDX的关键字段,并且与簇数据库的结构56)中介绍的完全相同此处簇名的第三个字段的名称是SRTFD长度为22字节,也就是说,对于INDXABAP/4程序中以EXPORT语句的附加ID指定的名称vkey最多可以有22个字符后七个字段是非标准字段,用于用户输入,例如_AEDAT最后修改的日期_USERA用户名_PGMID程序名最后两个字或也是预定义的在表INDX中,存储实际数据簇的字段CLUSTD的长度为2886个字节有关表INDX用法的示例,参见在簇数据库中存储数据对象(页7)创建数据簇目录表(页9)从簇数据库中读取数据对象(页10)从簇数据库中删除数据肝(页12)在簇数据库中存储数据对象要在簇数据库中存储ABAP/4程序的数据对象,请使用下列语句语法EXPORTF1[FROMgi]F2[FROMg2]TODATABASEdbtab(ar)[CLIENTcli]IDkey.此语句将列表中指定的数据对象存储为簇数据库dbtab中的簇必须用TABLES语句对dbtab加以声明如果不附加FROMvg则将数据对象fi存储在自己的名称之下如果有附件项,则将数据对象vg存储到名称fi之下ar是存储数据库的簇的两字符区域IDo(参见簇数据库的结构(页Error!Notavalidlink.)簇数据库的结构(页Error!Notavalidlink.)下的第2点)<key>标识数据库中的数据,其最大长度取决于<dbtab>中名称字段的长度(参见簇数据库的结构56)下面的第3点)在处理特定客户的簇数据库时可以使用选项CLIENT<cli>关闭自动客户处理然后自己指定客户必须在指定数据库名称之后立即指定此选项(参见簇数据库的结构86)下面的第1点)EXPORT语句也将表工作区<dbtab>的用户字段内容传输到数据库表根据需要,可以预先填写这些字段(参见簇数据库的结构回6)下面的第5点)在具有相同名称<key>的相同工作区<ar>和相同客户系统<cli>中,EXPORT语句总是完全改写任何现有数据簇的内容对于含有表头行的内表,只可以存储表本身,而不能存储表头行在EXPORT语句中,将表名解释为表这是例外通常将表名解释为表工作区(参见访问内表(页8-4))oPROGRAMSAPMZTS
1.TABLESINDX.OFITABOCCURS100TYPE工,TYPE工,ITAB.DO3000TIMES.ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX**
2.APPENDITAB.ENDDO.INDX-AEDAT=SY-DATUM.INDX-USERA=SY-UNAME.INDX-PGMID=SY-REPID.EXPORTITABTODATABASEINDXHKID1Table
1.WRITE:1SRTF2AT201AEDAT1AT351USERA1AT501PGMID
1.ULINE.SELECT*FROMINDXWHERERELID=HKANDSRTFD=Table.WRITE:/INDX-SRTF2UNDER1SRTF21INDX-AEDATUNDERTAEDATINDX-USERAUNDER1USERA1zINDX-PGMIDUNDER1PGMID
1.ENDSELECT.使用3000行填写了内表ITAB并且,在给INDX的某些用户字段赋值之后ITAB被输出到INDX因为INDX是关系数据库,所以可以使用开放式SQL语句定位单独行使用SELECT语句,辅以适当的WHERE条件就可选择用EXPORT存储的行数据库字段的输出如下所示其中,输出表明用户字段AEDAT、USERA和PGMID由EXPORT传送,并且包含ITAB的数据簇扩展了6行如果在DO语句中更改数目3000则此数据簇占用的行数也会发生变化创建数据簇目录表要从ABAP/4簇数据库中创建数据簇目录表,请使用下列语句语法IMPORTDIRECTORYINTO<dirtab>FROMDATABASE<dbtab>(<ar>)[CLIENT<cli>]ID<key>.此语句在存储于数据库<dbtab>中的数据簇中创建一系列数据对象,并将其放到表<dirtab>中必须使用TABLES语句声明vdbtab>要将数据簇存储到数据库中,通常使用EXPORTTODATABASE语句(参见在簇数据库中存储数据对象(页7))o关于数据库表vdbtab>结构的详细信息,参见簇数据库的结构(页6)<ar>是即将存储数据库的簇的两字符IDo<key>标识数据库中的数据,其最大长度取决于<dbtab>中名称字段的长度在处理特定客户的簇数据库时,可以使用选项CLIENT<cli>关闭自动客户处理,然后自己指定客户必须在指定数据库名称之后立即指定此选项IMPORT语句也自动从数据库表中读取表工作区<dbtab>的用户字段内容如果可以创建某个目录表,则把SY-SUBRC设置为0o否则,设置为4O必须按照ABAP/4词典结构CDIR建立内表vdirtab〉为此,请使用DATA语句的附件LIKE(参见DATA语句的基本格式(页3-14))结构CDIR包含下列组件FTYPECHAR对象的数据类型结构化的数据类型是类型CoTFILLINT4已填写行的数目(针对内表)FLENGINT2字段或结构的长度字段名类型说明NAMECHAR在簇中存储的对象名称OTYPECHAR对象类型F表示基本字段R表示字段串T表示内表。