因为 Smartform 没有版本,所以在写完代码或者程序之后没有消息调试,而在一些情况下,需要进行 Debug 测试。
本文分享记录一下工作上使用 SmartForm 调试的步骤,方便后续查阅:
设置 SmartForms 断点的步骤
- 先转到 Tcode—— smartforms,然后输入需要调试的 SmartForm 名称,然后点击显示:
- 然后转到 环境 -> 功能模块名称:
- 此时会弹出一个信息框,里面的信息就是次 SmartForm 对应的函数,复制该功能模块名称:
- 转到 Tcode:SE37(函数构建器),输入上一步中复制的功能模块名称,点击 显示:
- 输入功能模块的名称,然后转到菜单 转到 -> 主程序(R) :
- 在主程序中,单击 查找 以搜索要设置断点的语句:
- 这里以一个搜索 LV_ADD_CLAUSE 变量为例:
- 在想要进行分析的位置设置断点:
最后,现在运行调用该 SmartForm 的驱动程序,会控制该程序停止在断点的位置,之后可以分析 SmartForm 是否正确了!
分析 SmartForm 函数模块
*******************************************************************
* System-defined Include-files. *
*******************************************************************
INCLUDE /1BCDWB/LSF000000XXXTOP. " Global Declarations
INCLUDE /1BCDWB/LSF000000XXXUXX. " Function Modules
*******************************************************************
* User-defined Include-files (if necessary). *
*******************************************************************
* INCLUDE /1BCDWB/LSF00000088F... " Subroutines
* INCLUDE /1BCDWB/LSF00000088O... " PBO-Modules
* INCLUDE /1BCDWB/LSF00000088I... " PAI-Modules
* INCLUDE /1BCDWB/LSF00000088E... " Events
* INCLUDE /1BCDWB/LSF00000088P... " Local class implement.
* INCLUDE /1BCDWB/LSF00000088T99. " ABAP Unit tests
INCLUDE /1BCDWB/LSF000000XXXF01.
Top 包含文件
在 TOP 的包含文件,拥有已经在全局定义选项卡中声明的所有全局数据和类型
FUNCTION-POOL /1BCDWB/SF00000088. "MESSAGE-ID ..
* INCLUDE /1BCDWB/LSF00000088D... " Local class definition
* INTERNAL GLOBAL DATAS
TABLES: STXFCONTR.
INCLUDE SSF_ERRORS.
CLASS LCL_CALCULATION DEFINITION DEFERRED.
DATA: %VARIANT TYPE TDVARIANT,
%WEXIT TYPE TDBOOL,
%SECTION TYPE SSFSECTION,
%ADDRPAR TYPE SSFADRCTRL.
DATA: %LANGUAGES TYPE SSFRLANG,
%TEXT TYPE TSFTEXT,
%TEXTMODULE TYPE TDSFNAME,
%TLANG TYPE SPRAS,
%TEXTKEY TYPE SSFTKEY,
%GRAPHICKEY TYPE STXBITMAPS,
%PRINTCONTROL TYPE RSPOPRCTL,
%SPOOLATTR TYPE TRSPOATTR WITH HEADER LINE,
%IFIELD TYPE SSFINPUT,
%INPUTFIELDS TYPE TSFINPUT,
%TEXTAREA TYPE SSFTXTAREA,
%HEADER TYPE SSFFORMHD,
%REFTAB TYPE TSFREF,
%DOCSTRUC TYPE TSFDOCSTRC,
%TABDEFS TYPE TSFTABDEF,
BEGIN OF %CALCU,
CNT TYPE I,
OBJ TYPE REF TO LCL_CALCULATION,
END OF %CALCU,
%CALCULATIONS LIKE TABLE OF %CALCU,
%TEXTSTYLE TYPE TDSSNAME,
%DYNTEXT TYPE TSFTEXT.
CONSTANTS: %OPEN(1) VALUE 'X',
%CLOSE(1) VALUE SPACE.
DATA: %DYNRESULT(100).
DATA: BEGIN OF COMMON PART %_SMARTFORM,
SFSY TYPE SFSY,
INTSFSY TYPE INTSFSY,
END OF COMMON PART %_SMARTFORM.
DEFINE USER_EXCEPTION.
PERFORM RESET_ALL IN PROGRAM SAPLSTXBC.
INTSFSY-EXCEPTION = '&1'.
RAISE ERROR.
END-OF-DEFINITION.
TYPES:
BEGIN OF TY_TEXTSTYLE,
NAME TYPE TDSFNAME,
TLANG TYPE SPRAS,
STYLE TYPE TDSSNAME,
END OF TY_TEXTSTYLE,
TY_TEXTSTYLE_TABLE TYPE SORTED TABLE OF TY_TEXTSTYLE
WITH UNIQUE KEY NAME TLANG.
DATA: %TEXTSTYLE_TAB TYPE TY_TEXTSTYLE_TABLE.
* TYPES AND CONSTANTS
* GLOBAL DATAS
DATA GS_HEADER TYPE ZMMF001_ST .
DATA GS_HLINE_PI TYPE ZMMF001_HTEXT_ST .
DATA GT_HLINE_PI TYPE TABLE OF ZMMF001_HTEXT_ST .
DATA GS_HIST TYPE ZMMF001_HS_ST .
DATA GS_MA TYPE ZMMF001_MA_ST .
DATA L_MENGE TYPE MENGE_D .
DATA L_NETWR TYPE NETWR .
DATA L_ZTTCTN TYPE ZTTCTN .
DATA L_ZTTCBM TYPE ZTTCBM .
DATA GS_PRINT1 TYPE ZMMF001_ST .
DATA L_MENGE1 TYPE P .
DATA GS_BOMCOST TYPE TY_BOMCOST .
DATA GT_BOMCOST TYPE TABLE OF TY_BOMCOST .
DATA GS_PRINT TYPE ZMMF001_ST .
DATA GT_PRINT1 TYPE TABLE OF ZMMF001_ST .
DATA GV_BUTXT TYPE T001-BUTXT .
DATA GV_ADDR TYPE ADRC-STREET .
DATA GV_TELNO TYPE ADRC-TEL_NUMBER .
DATA GV_CHECKCODE TYPE EKKO-CHECK_CODE .
DATA GV_ORDER TYPE STRING .
DATA GV_DATE TYPE EKET-EINDT .
DATA GS_HLINE TYPE ZMMF001_HTEXT_ST .
DATA L_LAND1 TYPE LFA1-LAND1 .
DATA LV_FLAG TYPE C .
DATA LV_BUTXT TYPE T001-BUTXT .
DATA LV_ADD_CLAUSE TYPE C .
F01 包含文件
所有执行(ABAP Form 例程)都包含在 F01 当中,刚刚我们设置的 Debug 断点位置也在这个程序中,关于 SmartForm 生成的代码基本都能在这个包含文件中找到。
Ps:请注意,有些版本的英文环境下的 SAP 系统在 SmartForm 下文本可能会不显示中文。
总结
本文分享了 SmartForm 的调试步骤,希望对你有所帮助!
参考链接:
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 19 天,点击查看活动详情