SAP Smartform Debug 设置断点调试的步骤

1,219 阅读3分钟

因为 Smartform 没有版本,所以在写完代码或者程序之后没有消息调试,而在一些情况下,需要进行 Debug 测试。

本文分享记录一下工作上使用 SmartForm 调试的步骤,方便后续查阅:

设置 SmartForms 断点的步骤

  1. 先转到 Tcode—— smartforms,然后输入需要调试的 SmartForm 名称,然后点击显示:

图片.png

  1. 然后转到 环境 -> 功能模块名称

图片.png

  1. 此时会弹出一个信息框,里面的信息就是次 SmartForm 对应的函数,复制该功能模块名称:

图片.png

  1. 转到 Tcode:SE37(函数构建器),输入上一步中复制的功能模块名称,点击 显示

图片.png

  1. 输入功能模块的名称,然后转到菜单 转到 -> 主程序(R)

图片.png

  1. 在主程序中,单击 查找 以搜索要设置断点的语句:

图片.png

  1. 这里以一个搜索 LV_ADD_CLAUSE 变量为例:

图片.png

  1. 在想要进行分析的位置设置断点:

图片.png

最后,现在运行调用该 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.

图片.png

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 .

图片.png

F01 包含文件

所有执行(ABAP Form 例程)都包含在 F01 当中,刚刚我们设置的 Debug 断点位置也在这个程序中,关于 SmartForm 生成的代码基本都能在这个包含文件中找到。

Ps:请注意,有些版本的英文环境下的 SAP 系统在 SmartForm 下文本可能会不显示中文。

总结

本文分享了 SmartForm 的调试步骤,希望对你有所帮助!

参考链接:

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 19 天,点击查看活动详情