1,SAP-GUI的脚本和普通脚本有很大区别,在录制成功之后,脚本每一步的操作,都是格式化的,例如:
sapgui_set_text("合同编号", "20010494", ctxtRMF672, BEGIN_OPTIONAL, "AdditionalInfo=sapgui5018", END_OPTIONAL);
这是一个在“合同编号” 中输入参数的一部操作,在这一操作中,通过LR自带的SAPgui的函数集中的set_text函数来控制输入
合同编号:是这个text框的标题;
20010494:是输入款的内容;
ctxtRMF672:是这个输入框的属性id,在脚本的globals.h的头文件中:
SAPgui的函数集大概如下,覆盖所有gui页面的操作:
这支业务做成功之后,会返回一个提示页面信息:
sapgui_status_bar_get_text("paramStatusBarText", BEGIN_OPTIONAL, "Recorded status bar text: 合同 20012770已在公司代码 1000 中创建", "AdditionalInfo=sapgui5056", END_OPTIONAL);
表名合同已经创建成功了,但是 string paramStatusBarText = “合同 20012770已在公司代码 1000 中创建”
SAPgui的函数集范围内没有截取合同号20012770的函数,但是Lr是兼容C语言的,所以用c的字符串处理函数库,可以处理这个
char str1[100]; char str2[100]; char * str3; strcpy(str1,lr_eval_string("{paramStatusBarText}")); //将guiBarText的text值赋值给str1 lr_output_message("========str1返回信息为:%s,",str1); strncpy(str2,str1,13); // 截取str1的前13位赋值给str2,前13位=“合同 20012770” lr_output_message("========str2返回信息为:%s,",str4); str3=(char *)strchr(str2,'2'); //截取str2的从2开始至最后的字符,也就是20012770并转化成char类型赋值给str3 lr_output_message("========str3返回信息为:%s,",str3); lr_convert_string_encoding( str3,LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"newstr3" );//这一步是转化成LR可以直接参数化使用的{newstr3}格式
返回内容:
Action.c(178): ========str1返回信息为:合同 20012970已在公司代码 1000 中创建, Action.c(181): ========str2返回信息为:合同 20012970, Action.c(183): ========str3返回信息为:20012970,
以上。
在引入c的库函数过程中,变异一开始提示未定义错误:illegal statement termination
具体原因是,在action里面,定义char之类的操作,应该放在最上面,把 lr_start_transaction("fnv1合同创建");移到char定义后面就行了。