将ALV程序保存到ztable时出现转储错误。

2020-08-19 03:00发布

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

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


运行时错误PERFORM_NOT_FOUND
除外。 CX_SY_DYN_CALL_ILLEGAL_FORM

短文本
调用(PERFORM)不存在的例程。

错误分析
发生了一个异常,下面将对其进行详细说明。
分配给类'CX_SY_DYN_CALL_ILLEGAL_FORM'的异常未在
过程" USER_COMMAND"中捕获
)",也不会通过RAISING子句传播。
由于该过程的调用者无法预期会发生
异常,因此当前程序将终止。
造成异常的原因是:
程序" SAPLSLVC_FULLSCREEN"用于执行外部性能,
即程序" ZSD_REPORT12"的例程" USER_COMMAND",但
该例程不存在。

可能由于以下原因之一:

1.当前正在开发程序" SAPLSLVC_FULLSCREEN"或" ZSD_REPORT12"之一。
被调用例程的名称" USER_COMMAND"可能是 错误,或者
在程序" ZSD_REPORT12
"中尚未实现例程" USER_COMMAND"。
-

2.如果涉及到程序SAPMSSY1,则i 在运行时错误中,通过RFC调用的功能模块之一未标记为具有远程功能。
(请参见事务SE37转到->管理-> RFC标志)

3.有 系统不一致。
程序" SAPLSLVC_FULLSCREEN"和" ZSD_REPORT12"的版本不匹配。

接口中缺少RAISING子句
程序SAPLSLVC_FULLSC
包括LSLVC_FULLSCREE
第1,122行
模块类型(FORM)
模块名称USER_COMMAND

--------------------------------------------------- - - - - - - - - - 程序 - - - - - - - - - - - - - - - - -----------------------------------------------


*&包括ZSD_DELIVERY_DATA
*&-------------------------------------- ------------------------------- *
TYPE-POOLS SLIS。
表格:VBAK,VBUK,ZVBAK ,VBAP,KNA1。

类型:TY_VBAK的开始,
VBELN类型VBELN,
KUNNR类型的KUNNR,
TY_VBAK的结尾。

类型:BEGIN TY_VBUK,
CMGST类型CMGST,
TY_VBUK的结尾。

类型:TY_VBAP的开始,
vbeln类型vbeln,
WERKS类型的工作,
TY_VBAP的结尾。

类型:TY_KNA1的开头,
KUNNR类型KUNNR,
NAME1 TYPE NAME1_GP,
TY_KNA1的结尾。

数据:TY_KINAL开头0,
TEXT1类型CHAR30 ,
VBELN型VBAK-VBELN,
KUNNR型VBAK-KUNNR,
CMGST型VBUK-CMGST,
WERKS型VBAP-WERKS,
NAME1型KNA1-NAME1,
END OF TY_FINAL。


数据:TY_ZVBAK发生的开始,0,
VBELN型ZVBAK-VBELN,
KUNNR型ZVBAK-KUNNR,
CMGST型ZVBAK-CMGST,
WERKS TYPE ZVBAK-WERKS,
NAME1 TYPE ZVBAK-NAME1,
TY_ZVBAK的结尾,

WA_ZVBAK LIKE TY_ZVBAK线。


数据:TY_VBAK的IT_VBAK类型标准表,
TY_VBAK的WA_VBAK类型标准表TY_VBUK,
WA_VBUK类型TY_VBAK类型 TY_VBAP的标准表,
WA_VBAP TY_VBAP的标准表,
IT_KNA1 TY_KNA1的标准表,
WA_KNA1 TY_KNA1的标准表,
IT_FINAL像TY_FINAL OCCURS 0,
br>
数据:IT_FCAT类型SLIS_T_FIELDCAT_ALV,
WA_FCAT类似于IT_FCAT的产品线。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S52 {color:#0000FF; } *&----------------------------------------------- ---------------------- *
*&包括ZSD_DELIVERY_STATEMENT
*&--------------- -------------------------------------------------- ---- *
带有标题标题文本001的B1块的选择屏幕开始。

选择选项:VBAK-VBELN的P_VBELN。
选择选项:VBAP-WERKS的P_WERKS 。
选择选项:VBAK-KUNNR的P_KUNNR。

B1块的选择屏幕结尾。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S52 {color:#0000FF; } *&----------------------------------------------- ---------------------- *
*&包括ZSD_DELIVERY_DATA_NEW
*&--------------- -------------------------------------------------- ---- *
表格GET_DATA。

选择VBELN"销售订单
KUNNR"从VBAK出售给派对
到表IT_VBAK
中,P_VBELN中的VBELN AND < br> KUNNR IN P_KUNNR。


从VBAP中选择VBELN"销售订单
WERKS"工厂

到表IT_VBAP
中,在P_WERKS中工作。

>选择KUNNR"客户编号
NAME1" PARTY NAME
从KNA1到表IT_KNA1中。

ENDFORM。


FINAL_DATA形式。
* LOOP。
如果IT_VBAK 不是初始的。

将IT_VBAK插入WA_VBAK。

用键VBELN = WA_VBAP-VBELN将表IT_VBAK读入WA_VBAK。
使用键KUNNR = WA_VB将表IT_KNA1读入WA_KNA1 。
用键VBELN = WA_VBAK-VBELN将表IT_VBAP读入WA_VBAP。
WA_FINAL-VBELN = WA_VBAK-VBELN。
WA_FINAL-KUNNR = WA_VBAK-KUNNR。
WA_FINAL-CMG ST = WA_VBUK-CMGST。
WA_FINAL-WERKS = WA_VBAP-WERKS。
WA_FINAL-NAME1 = WA_KNA1-NAME1。
将WA_FINAL附加到IT_FINAL。
清除:WA_FINAL,WA_VBAK,WA_KNA1,WA_VBAP。 br>
*要从VBAK将数据插入ZVBAK *

将IT_FINAL循环到WA_FINAL。
将WA_FINAL-VBELN移至WA_ZVBAK-VBELN。
将WA_FINAL-KUNNR移至WA_ZVBAK-KUNNR。
将WA_FINAL-CMGST移至WA_ZVBAK-CMGST。
将WA_FINAL-WERKS移至WA_ZVBAK-WERKS。
将WA_FINAL-NAME1移至WA_ZVBAK-NAME1。
从WA_FINAL插入ZVBAK。

ENDLOOP。

ENDLOOP。
ENDIF。
ENDFORM。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; }选择开始。



执行GET_DATA。
执行FINAL_DATA。
执行保存数据。




END-OF- 选择。

执行FIELD_CAT。
*&---------------------------------- ----------------------------------- *
*&表格FIELD_CAT
*&- -------------------------------------------------- ----------------- *
*文字
* ----------------------- ----------------------------------------------- *
*-> p1文本
* <-p2文本
* ------------------------------ ---------------------------------------- *
FORM FIELD_CAT。

WA_FCAT-FIELDNAME ='VBELN'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='销售订单'。
将WA_FCAT附加到IT_FCAT。

WA_FCAT- FIELDNAME ='WERKS'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='PLANT'。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='KUNNR'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='已出售给聚会'。
将WA_FCAT附加到IT_FCA T.

WA_FCAT-FIELDNAME ='NAME1'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='PARTY NAME'。
将WA_FCAT附加到IT_FCAT。


调用函数'REUSE_ALV_GRID_DISPLAY'
导出
i_callback_program = sy-repid
it_fieldcat = it_fcat"通向ALV的目录目录
I_CALLBACK_PF_STATUS_SET ='PF_STATUS_SET'(003)
AND_USER ='USER_COMMAND'(002)


t_outtab = it_final。


ENDFORM。 " FIELD_CAT

表单保存数据。

设置PF-状态'SAVE'。
案例SY-UCOMM。
当'SAVE'(004)时。
从中插入ZVBAK 表IT_FINAL。
ENDCASE。

ENDFORM。

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

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


运行时错误PERFORM_NOT_FOUND
除外。 CX_SY_DYN_CALL_ILLEGAL_FORM

短文本
调用(PERFORM)不存在的例程。

错误分析
发生了一个异常,下面将对其进行详细说明。
分配给类'CX_SY_DYN_CALL_ILLEGAL_FORM'的异常未在
过程" USER_COMMAND"中捕获
)",也不会通过RAISING子句传播。
由于该过程的调用者无法预期会发生
异常,因此当前程序将终止。
造成异常的原因是:
程序" SAPLSLVC_FULLSCREEN"用于执行外部性能,
即程序" ZSD_REPORT12"的例程" USER_COMMAND",但
该例程不存在。

可能由于以下原因之一:

1.当前正在开发程序" SAPLSLVC_FULLSCREEN"或" ZSD_REPORT12"之一。
被调用例程的名称" USER_COMMAND"可能是 错误,或者
在程序" ZSD_REPORT12
"中尚未实现例程" USER_COMMAND"。
-

2.如果涉及到程序SAPMSSY1,则i 在运行时错误中,通过RFC调用的功能模块之一未标记为具有远程功能。
(请参见事务SE37转到->管理-> RFC标志)

3.有 系统不一致。
程序" SAPLSLVC_FULLSCREEN"和" ZSD_REPORT12"的版本不匹配。

接口中缺少RAISING子句
程序SAPLSLVC_FULLSC
包括LSLVC_FULLSCREE
第1,122行
模块类型(FORM)
模块名称USER_COMMAND

--------------------------------------------------- - - - - - - - - - 程序 - - - - - - - - - - - - - - - - -----------------------------------------------


*&包括ZSD_DELIVERY_DATA
*&-------------------------------------- ------------------------------- *
TYPE-POOLS SLIS。
表格:VBAK,VBUK,ZVBAK ,VBAP,KNA1。

类型:TY_VBAK的开始,
VBELN类型VBELN,
KUNNR类型的KUNNR,
TY_VBAK的结尾。

类型:BEGIN TY_VBUK,
CMGST类型CMGST,
TY_VBUK的结尾。

类型:TY_VBAP的开始,
vbeln类型vbeln,
WERKS类型的工作,
TY_VBAP的结尾。

类型:TY_KNA1的开头,
KUNNR类型KUNNR,
NAME1 TYPE NAME1_GP,
TY_KNA1的结尾。

数据:TY_KINAL开头0,
TEXT1类型CHAR30 ,
VBELN型VBAK-VBELN,
KUNNR型VBAK-KUNNR,
CMGST型VBUK-CMGST,
WERKS型VBAP-WERKS,
NAME1型KNA1-NAME1,
END OF TY_FINAL。


数据:TY_ZVBAK发生的开始,0,
VBELN型ZVBAK-VBELN,
KUNNR型ZVBAK-KUNNR,
CMGST型ZVBAK-CMGST,
WERKS TYPE ZVBAK-WERKS,
NAME1 TYPE ZVBAK-NAME1,
TY_ZVBAK的结尾,

WA_ZVBAK LIKE TY_ZVBAK线。


数据:TY_VBAK的IT_VBAK类型标准表,
TY_VBAK的WA_VBAK类型标准表TY_VBUK,
WA_VBUK类型TY_VBAK类型 TY_VBAP的标准表,
WA_VBAP TY_VBAP的标准表,
IT_KNA1 TY_KNA1的标准表,
WA_KNA1 TY_KNA1的标准表,
IT_FINAL像TY_FINAL OCCURS 0,
br>
数据:IT_FCAT类型SLIS_T_FIELDCAT_ALV,
WA_FCAT类似于IT_FCAT的产品线。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S52 {color:#0000FF; } *&----------------------------------------------- ---------------------- *
*&包括ZSD_DELIVERY_STATEMENT
*&--------------- -------------------------------------------------- ---- *
带有标题标题文本001的B1块的选择屏幕开始。

选择选项:VBAK-VBELN的P_VBELN。
选择选项:VBAP-WERKS的P_WERKS 。
选择选项:VBAK-KUNNR的P_KUNNR。

B1块的选择屏幕结尾。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S52 {color:#0000FF; } *&----------------------------------------------- ---------------------- *
*&包括ZSD_DELIVERY_DATA_NEW
*&--------------- -------------------------------------------------- ---- *
表格GET_DATA。

选择VBELN"销售订单
KUNNR"从VBAK出售给派对
到表IT_VBAK
中,P_VBELN中的VBELN AND < br> KUNNR IN P_KUNNR。


从VBAP中选择VBELN"销售订单
WERKS"工厂

到表IT_VBAP
中,在P_WERKS中工作。

>选择KUNNR"客户编号
NAME1" PARTY NAME
从KNA1到表IT_KNA1中。

ENDFORM。


FINAL_DATA形式。
* LOOP。
如果IT_VBAK 不是初始的。

将IT_VBAK插入WA_VBAK。

用键VBELN = WA_VBAP-VBELN将表IT_VBAK读入WA_VBAK。
使用键KUNNR = WA_VB将表IT_KNA1读入WA_KNA1 。
用键VBELN = WA_VBAK-VBELN将表IT_VBAP读入WA_VBAP。
WA_FINAL-VBELN = WA_VBAK-VBELN。
WA_FINAL-KUNNR = WA_VBAK-KUNNR。
WA_FINAL-CMG ST = WA_VBUK-CMGST。
WA_FINAL-WERKS = WA_VBAP-WERKS。
WA_FINAL-NAME1 = WA_KNA1-NAME1。
将WA_FINAL附加到IT_FINAL。
清除:WA_FINAL,WA_VBAK,WA_KNA1,WA_VBAP。 br>
*要从VBAK将数据插入ZVBAK *

将IT_FINAL循环到WA_FINAL。
将WA_FINAL-VBELN移至WA_ZVBAK-VBELN。
将WA_FINAL-KUNNR移至WA_ZVBAK-KUNNR。
将WA_FINAL-CMGST移至WA_ZVBAK-CMGST。
将WA_FINAL-WERKS移至WA_ZVBAK-WERKS。
将WA_FINAL-NAME1移至WA_ZVBAK-NAME1。
从WA_FINAL插入ZVBAK。

ENDLOOP。

ENDLOOP。
ENDIF。
ENDFORM。

SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; }选择开始。



执行GET_DATA。
执行FINAL_DATA。
执行保存数据。




END-OF- 选择。

执行FIELD_CAT。
*&---------------------------------- ----------------------------------- *
*&表格FIELD_CAT
*&- -------------------------------------------------- ----------------- *
*文字
* ----------------------- ----------------------------------------------- *
*-> p1文本
* <-p2文本
* ------------------------------ ---------------------------------------- *
FORM FIELD_CAT。

WA_FCAT-FIELDNAME ='VBELN'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='销售订单'。
将WA_FCAT附加到IT_FCAT。

WA_FCAT- FIELDNAME ='WERKS'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='PLANT'。
将WA_FCAT附加到IT_FCAT。

WA_FCAT-FIELDNAME ='KUNNR'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='已出售给聚会'。
将WA_FCAT附加到IT_FCA T.

WA_FCAT-FIELDNAME ='NAME1'。
WA_FCAT-REF_TABNAME ='IT_FINAL'。
WA_FCAT-SELTEXT_L ='PARTY NAME'。
将WA_FCAT附加到IT_FCAT。


调用函数'REUSE_ALV_GRID_DISPLAY'
导出
i_callback_program = sy-repid
it_fieldcat = it_fcat"通向ALV的目录目录
I_CALLBACK_PF_STATUS_SET ='PF_STATUS_SET'(003)
AND_USER ='USER_COMMAND'(002)


t_outtab = it_final。


ENDFORM。 " FIELD_CAT

表单保存数据。

设置PF-状态'SAVE'。
案例SY-UCOMM。
当'SAVE'(004)时。
从中插入ZVBAK 表IT_FINAL。
ENDCASE。

ENDFORM。

付费偷看设置
发送
4条回答
昵称总是被占用
1楼-- · 2020-08-19 03:36
调用函数" REUSE_ALV_GRID_DISPLAY"
   出口
     i_callback_program = sy-repid
     it_fieldcat = it_fcat"通过字段目录到ALV
     I_CALLBACK_PF_STATUS_SET ='PF_STATUS_SET'(003)
     I_CALLBACK_USER_COMMAND ='USER_COMMAND'(002)
   桌子
 t_outtab = it_final。
 

您的"错误"始于您的上述编码。

参数I_CALLBACK_USER_COMMAND要求ALV-Grid形成表单例程,以通过定义的回调程序处理用户命令 在I_CALLBACK_PROGRAM中。

您已分配了文本值'USER_COMMAND'(002),并且基于错误,该文本的本地化值也是'USER_COMMAND'。 (为什么要为表单例程的名称分配一个可以转换的文本值?我必须假设您在运行SAP检查时不知道自己在做什么,并且建议文本可翻译,因此添加了 文本符号(002)和(003)。)

但是您尚未在程序" ZSD_REPORT12"中实现表单例程user_command,因此,一旦从 ALV被触发。 此表单将具有这样的布局。

 FORM user_command使用iv_ucomm TYPE salv_de_function
                         it_alv_messages TYPE bapiret2_t。
   案例iv_ucomm。
     何时x。
       "做一个
     当Y。
       做b
     当别人。
   结束。

 ENDFORM。
 

解决方案:

A)如果您不需要自己处理ALV中的用户命令,则不必为其分配表单例程,这不是强制性的。 另外,我假设您也没有创建称为" PF_STATUS_SET"的PF状态或其文本值后面的实际文本,因此在这种情况下,请不要为其分配值。

B)如果 需要使用ALV之外的其他功能来增强ALV,请熟悉测试报告SALV_DEMO_TABLE_EVENTS和许多其他SALV_DEMO_ *报告。

ZJXianG
2楼-- · 2020-08-19 03:50

Mohit Mantoo ,请继续处理您提出的问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
打个大熊猫
3楼-- · 2020-08-19 03:35

嗨,

从运行时错误文本中可以很清楚地看出程序正在尝试调用一个不存在的子例程。 我确定通过浏览错误文本,您可以找到它是哪个子例程。

GK

hongfeng1314
4楼-- · 2020-08-19 03:55
 FORM SAVE_DATA。
   将PF状态设置为"保存"。
   案例SY-UCOMM。
     当``保存''(004)时。
       从表IT_FINAL插入ZVBAK。
   结束。
 ENDFORM。

这部分代码确实很奇怪。 您声明PF-STATUS并尝试在同一位置捕获事件。 举例说明此FM with事件的用法。

(下次使用SALV,它确实更简单且功能强大)

一周热门 更多>