1

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

程序:RBOSORDER01 表格:RBOSORDER02

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

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

但是程序和表单之间的数据是如何传递的。我无法在每个之间建立联系。我期待看到使用“ITEM_TEXT”传递的结构或数据元素,然后在表单中的“ITEM_TEXT”元素处打印此数据,但我不清楚链接。

我也在 SE71 中查看过表单,但看不到您在哪里定义它。这里的链接在哪里,我错过了什么?

4

2 回答 2

2

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

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

于 2017-11-09T21:28:11.950 回答
1

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

所以你最终会在主窗口中:

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

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

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

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

于 2017-11-11T21:33:30.287 回答