在SAP脚本中,如何定义将哪些数据发送到元素

时间:2017-11-09 15:05:48

标签: forms sap abap sapscript

我需要对SAPScript进行一些更改。我有程序和表单名称

计划:RBOSORDER01 表格:RBOSORDER02

我希望更改表单中显示的一些数据。我调试了程序,然后看到写入表单的调用,例如:

 CALL FUNCTION 'WRITE_FORM'
       EXPORTING
            ELEMENT = 'ITEM_TEXT'
       EXCEPTIONS
            ELEMENT = 1
            WINDOW  = 2.

但是如何在程序和表单之间传递数据。我无法在每个之间建立联系。我希望看到一个结构或数据元素与'ITEM_TEXT'一起传递,然后这个数据打印在表单中的元素“ITEM_TEXT”,但链接对我来说不清楚。

我在SE71中也看过这个表格,看不到你在哪里定义它。这里的链接在哪里,我错过了什么?

2 个答案:

答案 0 :(得分:2)

这是形式,因此SE71就是您所需要的。您必须首先找到显示此元素(ITEM_TEXT)的窗口,而不是查找元素并查看内部显示的内容。默认情况下,SAPSript表单直接使用打印程序的全局变量(结构,内部表)(还有一些其他选项,例如INCLUDE文本)。因此,例如,如果在打印程序中声明了全局变量gv_text,并且它在SAPScript中显示,那么它看起来就像& GV_TEXT&在表格中。

如果在SE71中打开调试,也可以调试SAPScript(如果表单很大,可能很痛苦。)

答案 1 :(得分:1)

在这种情况下,函数'WRITE_FORM'只调用表格的入口点(SE71 / RBOSORDER02),ELEMENT ='ITEM_TEXT'。

所以你最终会在MAIN-Window:

/E      ITEM_TEXT
/:      INCLUDE &VBDPA-TDNAME& OBJECT VBBP ID 0001 PARAGRAPH IT

在这种情况下,您必须在此时调试“VBDPA-TDNAME”,然后您将通过事务“SO10”(标准文本)找到其值

INCLUDE可以是一个复杂的文本,可以有自己的格式字符串。

正如Jozsef之前所说,VBDPA-TDNAME在打印程序中被定义为全局。 (SE38n / RBOSORDER01)