到目前为止,如果SAP RFC函数中的某些内容出错,我只会收到一条错误消息
pyrfc._exception.ABAPRuntimeError: RFC_ABAP_MESSAGE (rc=4): key=No authorization,
message=No authorization [MSG: class=00, type=E, number=001, v1-4:=No authorization;;;]如果我能得到一个ABAP函数的堆栈跟踪,它将大大提高开发速度。有没有办法获得堆栈跟踪,比如在Python中?

相关:https://softwarerecs.stackexchange.com/questions/52350/sentry-event-from-exception-to-html
Sentry使用特定的JSON来表示堆栈跟踪和局部变量的内容。上面的链接包含一个示例。
发布于 2019-08-28 19:17:22
可以使用类cl_abap_get_call_stack调用ABAP中的堆栈跟踪。局部变量不包括在由类cl_abap_get_call_stack返回的堆栈跟踪中。但是您可以使用日志点来监视本地变量和堆栈跟踪。可以在transaction saab中创建、更改和查看日志点。示例代码片段:
DATA(formatted_stack) =
cl_abap_get_call_stack=>format_call_stack_with_struct(
cl_abap_get_call_stack=>get_call_stack( ) ).
LOG-POINT ID my_log_point FIELDS formatted_stack
local_variable1 local_variable2.有关授权错误,请检查transaction su53。当您看到红色的授权对象S_RFC时,这意味着您不能以任何方式调用函数模块!
发布于 2020-10-29 21:05:32
随着ABAP753的发布,引入了EPP扩展Passport等结构。
它似乎正在做你想要做的事情,比如显示被调用系统的踪迹。我写“似乎是”是因为我手头没有753+系统,所以我不能在实践中检查。
From the description它应该做你想做的事情:
是一种可以从客户端发送到服务器的数据结构,用于分析调用堆栈。框架和分析工具可以使用扩展密码来跟踪客户端和服务器之间超出系统边界的通信中的外部调用堆栈。EPP组件的值可以保存到日志文件中并用于监控。这方面的一个例子是短转储,它们都显示最重要的EPP组件。
DEMO_EPP给出了EPP的以下使用模式:
cl_demo_epp=>init( ).
"this program
cl_demo_epp=>append( ).
"Calling RFC to remote instance
CALL FUNCTION 'DEMO_RFM_EPP_1' DESTINATION instance.
"New SAP LUW
CALL FUNCTION 'DEMO_UPDATE_DELETE' IN UPDATE TASK
EXPORTING
values = VALUE demo_update_tab( ).
COMMIT WORK.
cl_demo_epp=>append( ).
cl_demo_output=>new(
)->begin_section( `Extended Passport (EPP)`
)->display( name = 'EPP Trace'
data = cl_demo_epp=>get( ) ).https://stackoverflow.com/questions/53595739
复制相似问题