ABAP 是否允许写入标准输出和标准错误?我需要编写小程序来测试通过作业调度程序(Cronacle)与 SAP 系统的接口连接。例如,开始/编写“Hello World!” + 日期 + 时间到标准输出/退出。我是一名 .net 程序员,负责处理这个看似琐碎的程序,但我被困住了。
4 回答
我假设您在带有 ABAP 堆栈的基于 UNIX/Linux 的系统上运行 SAP。SAP 试图尽可能多地抽象出底层操作系统。这种技术将在 Windows 上进行一些小的修改。
要与操作系统交互,请查看此处的 SM49“外部操作系统命令”,您可以设置一个命令来运行 cat 并将您想要写出的值传递到控制台。
我认为您最好通过将消息写入主机系统上的文件。要做到这一点;
OPEN DATASET i_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
然后使用将数据写入文件;
TRANSFER wa_text TO i_file.
那么当你完成时不要忘记
CLOSE DATASET i_file.
然后,您可以查看 AL11 中文件的内容或直接从主机中获取。如果您想查看在 unix 主机上打印的消息。使用控制台连接并使用 less +F /var/log/ 或 tail。在 Windows 上,我相信有一个同等的替代品。
Appliaction Log (Transaction SLG0, SLG1) Tables BAL*, 非常非常适合追踪...非常有趣,因为它甚至适用于后台任务、不同的用户帐户、用户不可见以及旧追踪的擦除条目可以在创建时定义。这对我来说是天堂,我不必再调试了。
有几个选项可以像您所询问的那样编写“调试信息”。前面的答案中提到的两种可能性是应用程序日志(SLG1 和 SBAL* 功能模块)和写入文件。
但是,对于您的情况,您提到在后台运行程序。在这种情况下,最好的办法是简单地使用 MESSAGE 发出消息(您可以通过检查 SY-BATCH 的值将消息的发出限制为后台处理)。
当您转到 SM37 时,可以在作业日志中看到后台运行的程序发出的消息。
查看应用程序日志记录 - http://help.sap.com/saphelp_nw04/helpdata/en/d3/1fa03940fab918e10000000a114084/frameset.htm