形式递归

2020-09-20 08:21发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好 我的程序使用循环构建一棵对象树。 如何使用递归构建对象树。 我知道我需要创建一个子例程并自己执行此子例程,但是我不了解如何创建新的内部表并将该表传递给perform。 请帮助。

报告z_my_program。
 数据:n_level TYPE I,
 n_count类型i,
 计数类型

 类型:始于ty_hrp1001,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 stext类型hrp1000-stext,
 objid1类型hrp1001-objid,
 结束于ty_hrp1001。
 数据:ty_hrp1001的it_hrp1001类型表。
 数据:wa_hrp1001类型ty_hrp1001。
 FIELD-SYMBOLS:类似于it_hrp1001的行。

 类型:始于ty_hrp1002,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 stext类型hrp1000-stext,
 objid1类型hrp1001-objid,
 结束于ty_hrp1002。
 数据:ty_hrp1002的it_hrp1002类型表。
 数据:wa_hrp1002类型ty_hrp1002。
 FIELD-SYMBOLS:类似于it_hrp1002的行。

 类型:始于ty_hrp1003,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 objid1类型hrp1001-objid,
 stext类型hrp1000-stext,
 结束于ty_hrp1003。
 数据:ty_hrp1003的it_hrp1003类型表。
 数据:wa_hrp1003类型ty_hrp1003。
 FIELD-SYMBOLS:类似于it_hrp1003的行。

 *** FM RS_TREE_CONSTRUCT的数据表整理
 数据:SNODETEXT的IT_NODE TYPE标准表,
 WA_NODE TYPE SNODETEXT。
 **声明树的常量
 常数:
 C_COL_KEY类型C长度1值COL_KEY,
 C_COL_FIELD类型C长度1值COL_NORMAL,
 C_COL_OBJID类型C长度1值COL_KEY,
 C_COL_SOBID类型C长度1值COL_POSITIVE。
 **选择画面


 select-options:wa_hrp1001-objid的s_objid。


 选择开始。


 **从表中获取数据


 从HRP1001选择对象对象到表IT_HRP1001中,对象对象在S_OBJID中并且SUBTY ='B030'。
 在it_hrp1001循环并分配 -objid1 =  -sobid。
 结束循环。
 对于对象OBJID = IT_HRP1001-OBJID1且SUBTY ='B030'的IT_HRP1001中的所有条目,从HRP1001选择对象OBJID到表IT_HRP1002中。
 在it_hrp1002循环并分配 -objid1 =  -sobid。
 结束循环。
 对于对象OBJID = IT_HRP1002-OBJID1且SUBTY ='B030'的IT_HRP1002中的所有条目,从HRP1001选择对象OBJID到表IT_HRP1003中。
 在it_hrp1003循环并分配 -objid1 =  -sobid。
 结束循环。


 "第一个节点
 WA_NODE-TLEVEL = 1。
 WA_NODE-NAME ='目录'。
 WA_NODE-NLENGTH = 20。
 WA_NODE-COLOR = C_COL_KEY。
 WA_NODE-TEXT ='文本'。
 WA_NODE-TLENGTH = 50。
 将WA_NODE附加到IT_NODE。


 "第二个节点
 将IT_HRP1001环入WA_HRP1001。
 清除WA_NODE。
 WA_NODE-TLEVEL = 2。
 WA_NODE-NAME = WA_HRP1001-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_OBJID。
 将WA_NODE附加到IT_NODE。


 "第三个节点
 在目标对象= WA_HRP1001-OBJID1的IT_HRP1002处插入WA_HRP1002。
 清除WA_NODE。
 WA_NODE-TLEVEL = 3。
 WA_NODE-NAME = WA_HRP1002-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_SOBID。
 将WA_NODE附加到IT_NODE。


 "第4个节点
 在目标对象= WA_HRP1002-OBJID1的IT_HRP1003处插入WA_HRP1003。
 清除WA_NODE。
 WA_NODE-TLEVEL = 4。
 WA_NODE-NAME = WA_HRP1003-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_SOBID。
 将WA_NODE附加到IT_NODE。

 结局。
 结局。
 结局。


 **构造树
 通话功能'RS_TREE_CONSTRUCT'
 *出口
 * INSERT_ID ='000000'
 *关系=''
 *日志=
 桌子
 NODETAB = IT_NODE
 例外情况
 TREE_FAILURE = 1
 ID_NOT_FOUND = 2
 WRONG_RELATIONSHIP = 3
 其他= 4。
 如果SY-SUBRC <> 0。
 写"树构造错误"。
 万一。

 **显示树
 通话功能'RS_TREE_LIST_DISPLAY'
 出口
 CALLBACK_PROGRAM = SY-REPID。


 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好 我的程序使用循环构建一棵对象树。 如何使用递归构建对象树。 我知道我需要创建一个子例程并自己执行此子例程,但是我不了解如何创建新的内部表并将该表传递给perform。 请帮助。

报告z_my_program。
 数据:n_level TYPE I,
 n_count类型i,
 计数类型

 类型:始于ty_hrp1001,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 stext类型hrp1000-stext,
 objid1类型hrp1001-objid,
 结束于ty_hrp1001。
 数据:ty_hrp1001的it_hrp1001类型表。
 数据:wa_hrp1001类型ty_hrp1001。
 FIELD-SYMBOLS:类似于it_hrp1001的行。

 类型:始于ty_hrp1002,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 stext类型hrp1000-stext,
 objid1类型hrp1001-objid,
 结束于ty_hrp1002。
 数据:ty_hrp1002的it_hrp1002类型表。
 数据:wa_hrp1002类型ty_hrp1002。
 FIELD-SYMBOLS:类似于it_hrp1002的行。

 类型:始于ty_hrp1003,
 objid类型为hrp1001-objid,
 稳定型hrp1001-sobid,
 objid1类型hrp1001-objid,
 stext类型hrp1000-stext,
 结束于ty_hrp1003。
 数据:ty_hrp1003的it_hrp1003类型表。
 数据:wa_hrp1003类型ty_hrp1003。
 FIELD-SYMBOLS:类似于it_hrp1003的行。

 *** FM RS_TREE_CONSTRUCT的数据表整理
 数据:SNODETEXT的IT_NODE TYPE标准表,
 WA_NODE TYPE SNODETEXT。
 **声明树的常量
 常数:
 C_COL_KEY类型C长度1值COL_KEY,
 C_COL_FIELD类型C长度1值COL_NORMAL,
 C_COL_OBJID类型C长度1值COL_KEY,
 C_COL_SOBID类型C长度1值COL_POSITIVE。
 **选择画面


 select-options:wa_hrp1001-objid的s_objid。


 选择开始。


 **从表中获取数据


 从HRP1001选择对象对象到表IT_HRP1001中,对象对象在S_OBJID中并且SUBTY ='B030'。
 在it_hrp1001循环并分配 -objid1 =  -sobid。
 结束循环。
 对于对象OBJID = IT_HRP1001-OBJID1且SUBTY ='B030'的IT_HRP1001中的所有条目,从HRP1001选择对象OBJID到表IT_HRP1002中。
 在it_hrp1002循环并分配 -objid1 =  -sobid。
 结束循环。
 对于对象OBJID = IT_HRP1002-OBJID1且SUBTY ='B030'的IT_HRP1002中的所有条目,从HRP1001选择对象OBJID到表IT_HRP1003中。
 在it_hrp1003循环并分配 -objid1 =  -sobid。
 结束循环。


 "第一个节点
 WA_NODE-TLEVEL = 1。
 WA_NODE-NAME ='目录'。
 WA_NODE-NLENGTH = 20。
 WA_NODE-COLOR = C_COL_KEY。
 WA_NODE-TEXT ='文本'。
 WA_NODE-TLENGTH = 50。
 将WA_NODE附加到IT_NODE。


 "第二个节点
 将IT_HRP1001环入WA_HRP1001。
 清除WA_NODE。
 WA_NODE-TLEVEL = 2。
 WA_NODE-NAME = WA_HRP1001-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_OBJID。
 将WA_NODE附加到IT_NODE。


 "第三个节点
 在目标对象= WA_HRP1001-OBJID1的IT_HRP1002处插入WA_HRP1002。
 清除WA_NODE。
 WA_NODE-TLEVEL = 3。
 WA_NODE-NAME = WA_HRP1002-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_SOBID。
 将WA_NODE附加到IT_NODE。


 "第4个节点
 在目标对象= WA_HRP1002-OBJID1的IT_HRP1003处插入WA_HRP1003。
 清除WA_NODE。
 WA_NODE-TLEVEL = 4。
 WA_NODE-NAME = WA_HRP1003-SOBID。
 WA_NODE-NLENGTH = 50。
 WA_NODE-COLOR = C_COL_SOBID。
 将WA_NODE附加到IT_NODE。

 结局。
 结局。
 结局。


 **构造树
 通话功能'RS_TREE_CONSTRUCT'
 *出口
 * INSERT_ID ='000000'
 *关系=''
 *日志=
 桌子
 NODETAB = IT_NODE
 例外情况
 TREE_FAILURE = 1
 ID_NOT_FOUND = 2
 WRONG_RELATIONSHIP = 3
 其他= 4。
 如果SY-SUBRC <> 0。
 写"树构造错误"。
 万一。

 **显示树
 通话功能'RS_TREE_LIST_DISPLAY'
 出口
 CALLBACK_PROGRAM = SY-REPID。


 
付费偷看设置
发送
3条回答
95年老男孩
1楼-- · 2020-09-20 08:27

嗨,霍斯特,

为什么FORM已过时? 使用FORM适用于一些特殊的(小)任务。

clever101
2楼-- · 2020-09-20 08:30

只需在ABAP文档中搜索FORM。

Haoba3210
3楼-- · 2020-09-20 08:49

以前的会员请让 我知道您是否想更改问题。 恐怕您尝试这样做的方式是不允许的,并且不会为其他社区成员增加价值。

一周热门 更多>