多语言展示
当前在线:120今日阅读:61今日分享:18

SAP系统中ST程序的模块化处理

一般编程中,我们知道程序需要根据功能封装成不同的块。JAVA是将程序按功能封装成类和方法;ABAP程序是将代码封装成子程序;SAP系统中的ST程序则可以定义成多个TEMPLATE。其中一个主TEMPLATE,其它的TEMPLATE可以在主TEMPLATE中调用。  本文以销售订单传递的数据为例,解绍TEAMPLATE模块化的功能。销售订单传递的数据主要有二部分:一是订单抬头,二是订单行项目。其中订单抬头数据又包括了三部分,ST程序中,分别将订单抬头的三部分数据和订单行项目数据封装成四个子TEAMPLATE来处理。
工具/原料
1

SAP系统STRANS事务

2

XML文件编辑规则

方法/步骤
1

先用STRANS事务码创建一个ST程序,我们将这个程序命名为ZTESTXUE008。

2

ST程序中定义两个ROOT元素,通过与ABAP的交互将数据传入或传出ST程序。一般情况下,ROOT元素的个数视数据多少来定。本程序中,HEADER部分的数据其实也可以定义成三个独立的ROOT元素来传递数据。   

3

定义一个主模版。在元素中,template 属性所赋的值就是主模版的名称。此处的主模版的名称就是xavery。...

4

主模版调用了其它的子模版,可以很容易看出哪个是主模版。其实子模版也可以调其它的子模版,本程序还不算特别复杂,子模版中没有进行其它的调用。调用子模版的语法是: 

5

定义子模版。子模版与主模版的定义没有任何区别。只是主模版的调用在这个顶层元素中给指定了。而子模版的调用则是通过元素来调用的。要注意的是元素中指定的名字,是与元素中指定的名字一一对应的。                                                . . . . . .      

6

附本次应用到的ST程序全部的代码:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

ABAP程序中调用ST程序
1

ABAP程序中调用ST程序,将内表与结构数据转换成XML文件。  call transformation ztestxue005    source header = gs_so           item   = gt_item[]    result xml gv_xml.  if sy-subrc = 0.    write '转换成功'.    write / gv_xml.  endif.转换成功后,我们可以通过DEBUG查看转换后的XML文件。

2

ABAP程序中调用ST程序,将XML文件转换成内表与结构数据。  call transformation ztestxue005    result header = gs_so             item   = gt_item[]    source xml gv_xml.  if sy-subrc = 0.    write '转换成功'.    write / gv_xml.  endif.转换后可以通过DEBUG查看内表与工作区中的数据。转换前后,被转换的数据或XML文件都是一直存在于内存中的。

注意事项
1

模版定义的时候不能进行嵌套,主模版与子模版都是并列的。

2

模版调用的时候,不要形成递归调用。

3

实际ABAP调用ST程序时,应用使用TRY CATCH来捕捉转换时的异常,否则容易DUMP。

推荐信息