为什么我的包含程序不起作用?

2020-08-17 03:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我是"包含程序"的新手。 我已经在主程序中添加了它们。 主程序和包含程序的代码如下所示。 我已经使用了全局结构(zabap_vbrk)和表类型(zabap_tb_vbrp):

 REPORT z_abap_practice_1。

 包括ZABAP_INCLUDE_TOP。

 执行get_data。

 通话功能'ZABAP_DEMO_FM'
  出口
     im_vbeln = p_vbeln
  输入
    EX_VBRK = st_vbrk
    EX_IT_VBRP = it_vbrp
  例外情况
    INVALID_DOCUMENT = 1
    INVALID_CUSTOMER = 2
    其他= 3
           。
 如果sy-subrc <> 0。
 *在这里实施适当的错误处理
   IF sy-subrc公式1。
   信息"无效文档",类型为" E"。
   万一。
 万一。



 WRITE:/'开票凭证:',25 st_vbrk-vbeln,
        /'结算日期:',25 st_vbrk-fkdat,
       /'净值 ;  ',25 st_vbrk-netwr左对齐,
        /'付款人:',25 st_vbrk-kunrg。

 跳跃。

 写:/'项目',
        15"材料编号",
        30"说明",
        55'数量',
        67'UoM',
        75'税额'。

 循环到it_vbrp进入wa_vbrp。

   写:/wa_vbrp-posnr,
           15 wa_vbrp-matnr,
           30 wa_vbrp-arktx,
           55 wa_vbrp-fkimg左对齐,
           67 wa_vbrp-vrkme,
           75 wa_vbrp-mwsbp左对齐。
 结局。

 包括zabap_include_sub。
 *&---------------------------------------------  ------------------------ *
 *&包括ZABAP_INCLUDE_TOP
 *&------------------------------------------------  --------------------- *

 数据:st_vbrk TYPE zabap_vbrk,
        it_vbrp TYPE zabap_tb_vbrp,
        wa_vbrp喜欢it_vbrp的线,
        it_makt类型标准表。

 参数p_vbeln TYPE vbeln_vf。
 * ----------------------------------------------  ------------------------ *
 ***包含ZABAP_INCLUDE_SUB。
 * -------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&表格GET_DATA
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 FORM get_data。
 SELECT * FROM makt INTO TABLE it_makt在哪里matnr EQ p_matnr。
 ENDFORM。  " GET_DATA 
 FUNCTION ZABAP_DEMO_FM。
 *" ------------------------------------------------  ----------------------
 *" *"本地接口:
 *"正在导入
 *" REFERENCE(IM_VBELN)TYPE VBELN_VF
 *"汇出
 *" REFERENCE(EX_VBRK)TYPE ZABAP_VBRK
 *" REFERENCE(EX_IT_VBRP)TYPE ZABAP_TB_VBRP
 *"例外情况
 *" INVALID_DOCUMENT
 *" INVALID_CUSTOMER
 *" ------------------------------------------------  ----------------------
 *获取开票凭证抬头数据。
   单选
               vbeln
               fkdat
               网络
               昆格
                    来自vbrk
                    进入EX_VBRK
                    在vbeln EQ IM_VBELN中。

   如果sy-subrc不是INITIAL。
       提升INVALID_DOCUMENT。
   万一。

 *获取开票凭证项目数据。
   选择vbeln posnr fkimg vrkme matnr arktx mwsbp FROM vbrp
                                                    插入表EX_IT_VBRP
                                                    在vbeln EQ IM_VBELN中。




 ENDFUNCTION。

当我检查ZABAP_INCLUDE_TOP的语法错误时,出现以下错误:

为什么程序类型为"包含"时会出现此错误?

error1.jpg (23.8 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我是"包含程序"的新手。 我已经在主程序中添加了它们。 主程序和包含程序的代码如下所示。 我已经使用了全局结构(zabap_vbrk)和表类型(zabap_tb_vbrp):

 REPORT z_abap_practice_1。

 包括ZABAP_INCLUDE_TOP。

 执行get_data。

 通话功能'ZABAP_DEMO_FM'
  出口
     im_vbeln = p_vbeln
  输入
    EX_VBRK = st_vbrk
    EX_IT_VBRP = it_vbrp
  例外情况
    INVALID_DOCUMENT = 1
    INVALID_CUSTOMER = 2
    其他= 3
           。
 如果sy-subrc <> 0。
 *在这里实施适当的错误处理
   IF sy-subrc公式1。
   信息"无效文档",类型为" E"。
   万一。
 万一。



 WRITE:/'开票凭证:',25 st_vbrk-vbeln,
        /'结算日期:',25 st_vbrk-fkdat,
       /'净值 ;  ',25 st_vbrk-netwr左对齐,
        /'付款人:',25 st_vbrk-kunrg。

 跳跃。

 写:/'项目',
        15"材料编号",
        30"说明",
        55'数量',
        67'UoM',
        75'税额'。

 循环到it_vbrp进入wa_vbrp。

   写:/wa_vbrp-posnr,
           15 wa_vbrp-matnr,
           30 wa_vbrp-arktx,
           55 wa_vbrp-fkimg左对齐,
           67 wa_vbrp-vrkme,
           75 wa_vbrp-mwsbp左对齐。
 结局。

 包括zabap_include_sub。
 *&---------------------------------------------  ------------------------ *
 *&包括ZABAP_INCLUDE_TOP
 *&------------------------------------------------  --------------------- *

 数据:st_vbrk TYPE zabap_vbrk,
        it_vbrp TYPE zabap_tb_vbrp,
        wa_vbrp喜欢it_vbrp的线,
        it_makt类型标准表。

 参数p_vbeln TYPE vbeln_vf。
 * ----------------------------------------------  ------------------------ *
 ***包含ZABAP_INCLUDE_SUB。
 * -------------------------------------------------  --------------------- *
 *&------------------------------------------------  --------------------- *
 *&表格GET_DATA
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 FORM get_data。
 SELECT * FROM makt INTO TABLE it_makt在哪里matnr EQ p_matnr。
 ENDFORM。  " GET_DATA 
 FUNCTION ZABAP_DEMO_FM。
 *" ------------------------------------------------  ----------------------
 *" *"本地接口:
 *"正在导入
 *" REFERENCE(IM_VBELN)TYPE VBELN_VF
 *"汇出
 *" REFERENCE(EX_VBRK)TYPE ZABAP_VBRK
 *" REFERENCE(EX_IT_VBRP)TYPE ZABAP_TB_VBRP
 *"例外情况
 *" INVALID_DOCUMENT
 *" INVALID_CUSTOMER
 *" ------------------------------------------------  ----------------------
 *获取开票凭证抬头数据。
   单选
               vbeln
               fkdat
               网络
               昆格
                    来自vbrk
                    进入EX_VBRK
                    在vbeln EQ IM_VBELN中。

   如果sy-subrc不是INITIAL。
       提升INVALID_DOCUMENT。
   万一。

 *获取开票凭证项目数据。
   选择vbeln posnr fkimg vrkme matnr arktx mwsbp FROM vbrp
                                                    插入表EX_IT_VBRP
                                                    在vbeln EQ IM_VBELN中。




 ENDFUNCTION。

当我检查ZABAP_INCLUDE_TOP的语法错误时,出现以下错误:

为什么程序类型为"包含"时会出现此错误?

error1.jpg (23.8 kB)
付费偷看设置
发送
6条回答
打个大熊猫
1楼-- · 2020-08-17 03:35

不要仅对include进行语法检查-使用include激活所有报告,然后系统可以检查语法-它必须知道以这种方式编写的整个报告代码(没有类,没有子例程池)。

SAP小菜
2楼-- · 2020-08-17 03:29

您好,

尝试在SE80上激活主程序,右键单击报告z_abap_practice_1。

关于提高代码可读性的一项建议,请将所有包含的内容放在报告的顶部。

致谢

Deenesh

葫芦娃快救爷爷
3楼-- · 2020-08-17 03:34

Hi

必须将包含的顺序放在一起。

报告z_abap_practice_1。

 包括ZABAP_INCLUDE_TOP。
 包括zabap_include_sub。

 执行get_data。
 ....
 ....

 

第二,

您需要一起激活所有内容。 使用SE80,然后在左侧面板z_abap_practice_1上右键单击您的报告名称。 -并激活

Cikesha
4楼-- · 2020-08-17 03:36

我试图通过SE80进行激活,但是它给出了以下语句无法访问的错误。

 PERFORM get_data。
hengyuye
5楼-- · 2020-08-17 03:46
  1. 如果程序的上下文未知,则对include的语法检查不起作用。
    语法检查必须在例如 使用包含的可执行报告。 在您的情况下,这将是您的REPORT z_abap_practice_1。
  2. 在定义INCLUDE zabap_include_sub定义存储get_data表单的位置之前,尝试在主报表中使用" PERFORM get_data"。 包含项需要包含在需要的地方。 在您的情况下,至少在调用第一个表单之前,必须包含include。 并且由于您的"包含"仅包含一个表单,因此您应该将其包含在"报告"和其他"包含"之后的顶部。 包含内容的顺序取决于某个包含内容是否必须访问例如 来自其他包含的数据或表格。 对于您而言,就可以像Venkat已经提到的那样完成此操作:
报告z_abap_practice_1。
 包括ZABAP_INCLUDE_TOP。
 包括zabap_include_sub。  ",其中包括" FORM get_data"。
                            "必须在" PERFORM get_data"之前声明。 叫做 !

 执行get_data。
 " ... 
6楼-- · 2020-08-17 03:51

HS ,似乎还有更多的编码 p_matnr在哪里定义?如果我在Top-Include中将p_matnr和p_vbeln一起包括,那么您要做的就是设置正确的报告事件。

请查看事件块,尤其是报告 事件:

因此,最后,请使用 事件START-OF-SELECTION以在选择屏幕之后运行报告:

 REPORT z_abap_practice_1。

 包括zabap_include_top。  "包含参数,因此报告从选择屏幕开始
 包括zabap_include_sub。

 选择开始。 从选择屏幕执行报告时启动该过程的必要事件

   执行get_data。
   " ...
 

一周热门 更多>