2020-09-01 00:41发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
朋友,
谁能告诉我如何从sap脚本中调用子例程。
谢谢。
马赫什语
hi ..
调用ABAP子例程:PERFORM
您可以使用PERFORM命令从任何程序中调用ABAP子例程(表单),但要遵循常规的ABAP运行时授权 检查。 您可以使用对子例程的此类调用来执行计算,从数据库中获取显示或打印时所需的数据,格式化数据等。
PERFORM命令和所有控制命令一样,是在格式化文档以进行显示或打印时执行的。 调用的子例程与文档之间的通信是通过符号来实现的,这些符号的值在子例程中设置。
系统不会在SAPscript替换模块(例如TEXT_SYMBOL_REPLACE或TEXT_INCLUDE_REPLACE)内执行PERFORM命令。 替换模块只能替换符号值或解析包含文本,而不能解释SAPscript控制命令。
在表单窗口中的语法:
/:在程序 >
/:使用&INVAR1&
/:使用&INVAR2&
......
/:更改&OUTVAR1&
/:更改&OUTVAR2&
...
/:ENDPERFORM
INVAR1和INVAR2是变量符号,可以是以下任何一种 四种SAPscript符号类型。
OUTVAR1和OUTVAR2是本地文本符号,因此必须是字符串。
必须在ABAP报告程序中定义通过上述命令行调用的ABAP子例程,如下所示:
FORM
OUT_TAB结构ITCSY。
ENDFORM。
通过/:USING ...传递的SAPscript符号的值现在存储在内部 表IN_TAB。 请注意,由于结构ITCSY中的字段Feld VALUE具有域TDSYMVALUE(CHAR 80),因此系统将这些值作为字符串传递给子例程。 请参见下面的示例,了解如何访问变量。
内部表OUT_TAB包含PERFORM语句中CHANGING参数的名称和值。 这些参数是本地文本符号,即字符字段。 请参阅下面的示例,了解如何在子例程中返回变量。
从SAPscript形式中,调用了ABAP程序QCJPERFO中的子例程GET_BARCODE。 然后,其中包含的简单条形码("首页","下一页","最后一页")被打印为局部变量符号。
SAPscript形式的定义:
/:在程序QCJPERFO中执行GET_BARCODE
/:使用&page&
/:使用&NEXTPAGE&
/:更改&BARCODE&
/
/&BARCODE&
调用ABAP程序的代码:
报告QCJPERFO。
FORM GET_BARCODE表IN_PAR结构ITCSY
OUT_PAR结构ITCSY。
数据:PAGNUM LIKE SY-TABIX,"页码
类似于SY-TABIX的下一页。"下一页的数目
使用键" PAGE"读取表IN_PAR。
检查SY-SUBRC = 0。
PAGNUM = IN_PAR-VALUE。
使用键" NEXTPAGE"读取表IN_PAR。
NEXTPAGE = IN_PAR-VALUE。
使用键"条形码"读取表OUT_PAR。
如果PAGNUM = 1。
OUT_PAR -VALUE =‘|’。 "首页
ELSE。
OUT_PAR-VALUE =‘||’。"下一页
ENDIF。
如果NEXTPAGE = 0。
OUT_PAR-VALUE + 2 =" L"。 "标志:最后一页
修改OUT_PAR索引的SY-TABIX。
问候
veeresh
PERFORM ... ENDPERFORM命令
SAP注释号:41302
症状
使用新的Release 3.0C命令PERFORM .. ENDPERFORM从SAPscript布局集中调用的FORM例程的接口语法应如何显示?
在表单程序中如何处理输入值或返回值?
其他关键字
PERFORM,ENDPERFORM,SAPscript,用户出口
原因和先决条件
在CD在线文档中,描述了从SAPscript启动FORM例程,但没有描述ABAP/4程序中FORM例程定义的确切语法。
解决方案
ABAP/4中的表单例程,可通过以下命令行调用:
/:在程序prog/中执行表格:使用&invar1&
/:使用&invar2&.../:更改&outvar1&/:更改&outvar2&.../:ENDPERFORM
必须在ABAP/4报告中定义如下:
FORM表格表格IN_TAB结构ITCSY OUT_TAB结构ITCSY .... ENDFORM。
重要:
以'/:USING ...'传递的变量invar1,invar2等是任何类型的SAPscript符号。 它们的名称和值可以在内部表IN_TAB中找到。 请记住,由于字段VALUE在结构ITCSY中拥有域TDSYMVALUE,因此将这些值作为字符串传输到FORM例程。 在FORM例程中访问变量invar1的示例; 然后将invar1的值以例程形式传递给变量LOC_INVAR1:
...使用键名='INVAR1'读取表IN_TAB.LOC_INVAR1 = IN_TAB值。
内部表OUT_TAB包含PERFORM命令中CHANGING参数的名称和值。 这些参数是本地文本符号,即字符字段。
在FORM例程中返回变量OUTVAR1的示例; 值outvar1的值来自LOC_OUTVAR1:
...使用键名='OUTVAR1'读表OUT_TAB。
如果SY-SUBRC =0。OUT_TAB-VALUE = LOC_OUTVAR1。 修改OUT_TAB索引SY-TABIX。ENDIF。
在SAP脚本替换模块(例如TEXT_SYMBOL_REPLACE或TEXT_INCLUDE_REPLACE)中未执行PERFORM命令。 替换模块只能替换符号值或扩展包含文本,但不能解释SAPscript控制命令。
警告:您不应该在ITCSY-VALUE字段中使用数字字段(例如,键入I),因为这些字段在此处显示为右对齐。 为了安全起见,请限制长度
致谢
sathish
Hi ..
n您的脚本使用perform语句并在SE38程序中定义了形式。 使用类似布局的命令
/:在程序ZPROGNAME中执行
/:使用'VAR1'。
/:使用'VAR2' p>
/:更改'VAR3'
/:ENDPERFORM。
使用USING传递的所有参数及其名称和值都可以在内部表中找到 IN_TAB。
请注意,由于结构ITCSY中的字段Feld VALUE具有域TDSYMVALUE(CHAR 80),因此系统将这些值作为字符串传递给子例程。
内部表 OUT_TAB包含PERFORM语句中CHANGING参数的名称和值。
转到SE38事务并创建程序ZPROGNAME。
使用FM SPELL_AMOUNT。 此FM用于以字为单位
FORM 表格IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY。
* ...... ..data声明
* ..............
呼叫功能'SPELL_AMOUNT'
导出
AMOUNT = PAMOUNT
CURRENCY =
FILLER = SPACE
LANGUAGE ='E'
IMPORTING
IN_WORDS = T_SPELL
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
其他= 3。
注意,
sai ramesh
嗨,
您可以在文本元素级别使用以下代码。
/:在程序<程序名称>
/:使用
/:更改
谢谢
Madhukar
/:在程序<程序名称>中执行,受实际参数限制。
最多设置5个标签!
hi ..
调用ABAP子例程:PERFORM
您可以使用PERFORM命令从任何程序中调用ABAP子例程(表单),但要遵循常规的ABAP运行时授权 检查。 您可以使用对子例程的此类调用来执行计算,从数据库中获取显示或打印时所需的数据,格式化数据等。
PERFORM命令和所有控制命令一样,是在格式化文档以进行显示或打印时执行的。 调用的子例程与文档之间的通信是通过符号来实现的,这些符号的值在子例程中设置。
系统不会在SAPscript替换模块(例如TEXT_SYMBOL_REPLACE或TEXT_INCLUDE_REPLACE)内执行PERFORM命令。 替换模块只能替换符号值或解析包含文本,而不能解释SAPscript控制命令。
在表单窗口中的语法:
/:在程序 >
/:使用&INVAR1&
/:使用&INVAR2&
......
/:更改&OUTVAR1&
/:更改&OUTVAR2&
...
/:ENDPERFORM
INVAR1和INVAR2是变量符号,可以是以下任何一种 四种SAPscript符号类型。
OUTVAR1和OUTVAR2是本地文本符号,因此必须是字符串。
必须在ABAP报告程序中定义通过上述命令行调用的ABAP子例程,如下所示:
FORM
PERFORM ... ENDPERFORM命令
SAP注释号:41302
症状
使用新的Release 3.0C命令PERFORM .. ENDPERFORM从SAPscript布局集中调用的FORM例程的接口语法应如何显示?
在表单程序中如何处理输入值或返回值?
其他关键字
PERFORM,ENDPERFORM,SAPscript,用户出口
原因和先决条件
在CD在线文档中,描述了从SAPscript启动FORM例程,但没有描述ABAP/4程序中FORM例程定义的确切语法。
解决方案
ABAP/4中的表单例程,可通过以下命令行调用:
/:在程序prog/中执行表格:使用&invar1&
/:使用&invar2&.../:更改&outvar1&/:更改&outvar2&.../:ENDPERFORM
必须在ABAP/4报告中定义如下:
FORM表格表格IN_TAB结构ITCSY OUT_TAB结构ITCSY .... ENDFORM。
重要:
以'/:USING ...'传递的变量invar1,invar2等是任何类型的SAPscript符号。 它们的名称和值可以在内部表IN_TAB中找到。 请记住,由于字段VALUE在结构ITCSY中拥有域TDSYMVALUE,因此将这些值作为字符串传输到FORM例程。 在FORM例程中访问变量invar1的示例; 然后将invar1的值以例程形式传递给变量LOC_INVAR1:
...使用键名='INVAR1'读取表IN_TAB.LOC_INVAR1 = IN_TAB值。
重要:
内部表OUT_TAB包含PERFORM命令中CHANGING参数的名称和值。 这些参数是本地文本符号,即字符字段。
在FORM例程中返回变量OUTVAR1的示例; 值outvar1的值来自LOC_OUTVAR1:
...使用键名='OUTVAR1'读表OUT_TAB。
如果SY-SUBRC =0。OUT_TAB-VALUE = LOC_OUTVAR1。 修改OUT_TAB索引SY-TABIX。ENDIF。
重要:
在SAP脚本替换模块(例如TEXT_SYMBOL_REPLACE或TEXT_INCLUDE_REPLACE)中未执行PERFORM命令。 替换模块只能替换符号值或扩展包含文本,但不能解释SAPscript控制命令。
警告:您不应该在ITCSY-VALUE字段中使用数字字段(例如,键入I),因为这些字段在此处显示为右对齐。 为了安全起见,请限制长度
致谢
sathish
Hi ..
n您的脚本使用perform语句并在SE38程序中定义了形式。 使用类似布局的命令
/:在程序ZPROGNAME中执行
/:使用'VAR1'。
/:使用'VAR2' p>
/:更改'VAR3'
/:ENDPERFORM。
使用USING传递的所有参数及其名称和值都可以在内部表中找到 IN_TAB。
请注意,由于结构ITCSY中的字段Feld VALUE具有域TDSYMVALUE(CHAR 80),因此系统将这些值作为字符串传递给子例程。
内部表 OUT_TAB包含PERFORM语句中CHANGING参数的名称和值。
转到SE38事务并创建程序ZPROGNAME。
使用FM SPELL_AMOUNT。 此FM用于以字为单位
FORM表格IN_TAB STRUCTURE ITCSY
OUT_TAB STRUCTURE ITCSY。
* ...... ..data声明
* ..............
呼叫功能'SPELL_AMOUNT'
导出
AMOUNT = PAMOUNT
CURRENCY =
FILLER = SPACE
LANGUAGE ='E'
IMPORTING
IN_WORDS = T_SPELL
EXCEPTIONS
NOT_FOUND = 1
TOO_LARGE = 2
其他= 3。
ENDFORM。
ENDFORM。
注意,
sai ramesh
嗨,
您可以在文本元素级别使用以下代码。
/:在程序<程序名称>
中执行<子程序名称>/:使用
/:更改
谢谢
Madhukar
/:在程序<程序名称>中执行,受实际参数限制。
谢谢
一周热门 更多>