关于DOI,"文档界面中发生内存保护错误"

2020-08-16 19:26发布

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

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


关于DOI,错误消息"文档界面中发生内存保护故障"的原因是什么,它并不总是发生,请帮助

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

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


关于DOI,错误消息"文档界面中发生内存保护故障"的原因是什么,它并不总是发生,请帮助

付费偷看设置
发送
5条回答
CJones
1楼-- · 2020-08-16 19:36

https://people.sap.com/sandra.rossi,help 请!我只知道错误消息出现在set_ranges_data中,但是我不知道它是什么问题,

编码:data:gdr_container类型引用到cl_gui_container,gdr_control类型引用到i_io_container_control,gdr_document类型引用到i_oi_document_proxy,gdr_spreadsheet类型引用到i_io_spreadsheet,gdt_errors类型引用到i_io_error出现0>

gcf_true ='x'

数据ldr_spliter类型对cl_gui_spliter_container的引用。

(1)。 调用方法ldr_spliter导出parent = cl_gui_container => screen0行= 1列= 1。

调用方法ldr_spliter-> set_border导出boder = cl_gui_cfw => false。

gdr_container = ldr_spliter-> get_container(row = 1列= 2)

(2)。 *创建容器控件调用方法C_OI_CONTAINER_CONTROL_CREATOR => GET_CONTAINER_CONTROL导入控件= GDR_CONTROL错误= GDT_ERRORS。 *将错误对象保存在集合中

APPEND GDT_ERRORS。

*初始化控件

调用方法GDR_CONTROL-> INIT_CONTROL导出* INPLACE_ENABLED = GCF_TRUE"值'X'

INPLACE_ENABLED =''"值'X'

INPLACE_SCROLL_DOCUMENTS = GCF_TRUE"值'X'REGISTER_ON_CLOSE_EVENT = GCF_TRUE"值'X'REGISTER_ON_CUSTOM_EVENT = GCF_TRUE"值'X'TEXT-006" V" R3_APPLICATION_NAME ='基础'#EC" CONTEXT PARENT = G" >

NO_FLUSH ='x'

导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

(3)。数据:LDT_DOC_COMPONENTS类型SBDST_COMPONENTS,LDT_DOC_SIGNATURE类型SBDST_SIGNATURE,LDT_BDS_URIS类型SBDST_URI,LDS_BDS_URL LDT_BDS_URIS类型,LDF_CLASS_NAME类型类型SBDST_CLASS "密钥LDF_CLASSNAME = GCF_CLASSNAME。LDF_CLASSTYPE = GCF_CLASSTYPE_OT。LDF_OBJECTKEY = GCF_OBJECTKEY。

*获取有关文档的信息呼叫方法CL_BDS_DOCUMENT_SET => GET_INFO EXPORTING CLASSNAME = LDF_CLASSNAME" Name CLASSTYPE = LDF_CLASSTYPE

类型OBJECT_KEY = LDF_OBJECTKEY"键更改组件= LDT_DOC_COMPONENTS签名= LDT_DOC_SIGNATURE。

*通过传输URL返回文档

呼叫的方法CL_BDS_DOCUMENT_SET => GET_WITH_URL EXPORTING CLASSNAME = LDF_CLASSNAME "名称CLASSTYPE = LDF_CLASSTYPE" 类型OBJECT_KEY = LDF_OBJECTKEY"密钥变更URIS = LDT_BDS_URIS SIGNATURE = LDT_DOC_SIGNATURE。SORT LDT_BDS_URIS BY DOC_COUNT DESCENDING。READ TABLE LDT_BDS_URIS INTO LDS_BDS_URL INDEX 1. PRF_TEMPLATE_URL = LDS_BDS_URL -URI。

数据:LDF_AVAILABLE类型I.呼叫方法GDR_CONTROL-> GET_DOCUMENT_PROXY EXPORTING DOCUMENT_TYPE ='Excel.Sheet'" TEXT-007"值'Excel.Sheet'NO_FLUSH = GCF_TRUE"值'X'REGISTER_CONTAINER = GCF_TRUE"值'X' IMPORTING DOCUMENT_PROXY = GDR_DOCUMENT ERROR = GDT_ERRORS。 *将错误对象保存在集合APPEND GDT_ERRORS中。 呼叫方法GDR_DOCUMENT-> OPEN_DOCUMENT导出

OPEN_INPLACE =''"

DOCUMENT_URL = PVF_TEMPLATE_URL

导入错误= GDT_ERRORS。

APPEND GDT_ERRORS。

调用方法GDR_DOCUMENT-> HAS_SPREADSHEET_INTERFACE EXPORTING

NO_FLUSH =''"

导入

IS_AVAILABLE = LDF_AVAILABLE E

RROR = GDT_ERRORS。

*将错误对象保存在集合APPEND GDT_ERRORS中。 呼叫方法GDR_DOCUMENT-> GET_SPREADSHEET_INTERFACE导出

NO_FLUSH =''"

导入

SHEET_INTERFACE = GDR_SPREADSHEET

错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

尝试。 调用方法GDR_SPREADSHEET-> SELECT_SHEET导出名称= TEXT-008"值'SHEET1'

NO_FLUSH =''"

导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

捕获CX_SY_REF_IS_INITIAL。

消息S017(ZCS01)显示类似GCF_MSGTY_E。 离开屏幕。

ENDTRY。

(4)。数据LDS_RANGE类型SOI_RANGE_ITEM。 LDS_RANGE-NAME = GCF_CELL。

LDS_RANGE-ROWS = PVF_ROW。

LDS_RANGE-COLUMNS = PVF_COLUMN。

LDS_RANGE-CODE = GDR_SPREADSHEET-> SPREADSHEET_INSERTALL。

将LDS_RANGE附加到PRT_RANGE。

调用方法GDR_SPREADSHEET-> INSERT_RANGE_DIM导出名称= GCF_CELL"值'cell'

NO_FLUSH =''"值'X'TOP = 1左= 1行= PVF_LINE1列= PVF_LINE2导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。 数据LDS_CONTENT类型SOI_GENERIC_ITEM。

LDS_CONTENT-ROW = PVF_ROW。 LDS_CONTENT-COLUMN = PVF_COLUMN。 LDS_CONTENT-VALUE = PVF_VALUE。 将LDS_CONTENT附加到PRT_CONTENT。

呼叫方法GDR_SPREADSHEET-> SET_RANGES_DATA导出范围= LDT_RANGE目录= LDT_CONTENT * NO_FLUSH = GCF_TRUE"值'X'NO_FLUSH =''"值'X'更新= -1导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

*设置框架

调用方法GDR_SPREADSHEET-> SET_FRAME EXPORTING RANGENAME = GCF_CELL

TYP = 127颜色= 1 NO_FLUSH = GCF_TRUE"值'X'导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

数据:LDF_SHEET TYPE CHAR20。

调用方法GDR_SPREADSHEET-> FIT_WIDEST导出名称=空间NO_FLUSH = GCF_TRUE"值'X'导入错误= GDT_ERRORS。

*将错误对象保存在集合中

APPEND GDT_ERRORS。

*更新名称

LDF_SHEET = TEXT-008。 "值'SHEET1'

(5)。调用方法GDR_SPREADSHEET-> SET_SHEET_NAME EXPORTING NEWNAME = LDF_SHEET OLDNAME ='SHEET1'"值'Main'IMPORTING ERROR = GDT_ERRORS。*将错误对象保存在集合APPEND GDT_ERRORS中。

(6)。数据:LDF_ID类型SY-MSGID,LDF_NUM类型SY-MSGNO,LDF_P1类型SY-MSGV1,LDF_P2类型SY-MSGV2,LDF_P3类型SY-MSGV3,LDF_P4类型SY-MSGV4,LDS 。

将GDT_ERRORS循环到LDS_ERROR。 调用方法LDS_ERROR-> GET_MESSAGE导入MESSAGE_ID = LDF_ID MESSAGE_NUMBER = LDF_NUM

PARAM1 = LDF_P1 PARAM2 = LDF_P2 PARAM3 = LDF_P3 PARAM4 = LDF_P4。

*发生错误时(例如一次运行程序)

如果LDF_ID不是INITIAL并且LDF_NUM不是INITIAL。 消息ID LDF_ID TYPE GCF_MSGTY_S"值'S'编号LDF_NUM与LDF_P1 LDF_P2 LDF_P3 LDF_P4显示类似GCF_MSGTY_E。"值'E'离开列表处理。

*清除GDF_DOWNLOAD。

ENDIF。

ENDLOOP。

路亽曱_Ryan
2楼-- · 2020-08-16 19:39

在前端,SAP GUI或Microsoft Office级别,"内存保护错误"似乎是一个非常低级的错误。

所以 ,也许重新安装最新的SAP GUI版本或Office应用程序。

或在控件" Office Integration"上激活您的SAP GUI跟踪以收集有关该错误的更多信息,并联系SAP支持。

# p #
Nan4612
3楼-- · 2020-08-16 19:37

先生sandra.rossi,感谢您的回答,我有一个问题是,正常情况下(99行* 179列)数据可以在本地下载,但是一旦我删除主数据到99以下 通过调试或编码的行,错误消息"内存保护故障发生在文档接口中",首先,我认为原因是主内部表或调试占用了内存,但主内部表是模板内部表,并且 我通过编码删除数据的情况也同样发生,现在我想知道何时以及多少数据将导致程序无法加载。

天桥码农
4楼-- · 2020-08-16 19:35

您知道内部99行179列的表占用的内存吗? 它可能非常低,因此无法解释DOI中的错误。 只有您遇到了这样的问题,因此,如果您在此论坛上请求进一步的帮助,则应该发布一个可复制的示例(还应该研究如何始终复制-尚不清楚为什么"它并不总是发生")。

注意:如果要定位某人,请复制/粘贴超链接的名称,例如 Sandra Rossi ,以便 我有机会收到您的邮件通知(复制/粘贴也有助于避免姓名打错)。

渐行渐远_HoldOn
5楼-- · 2020-08-16 19:56

不幸的是,如果我不能 重现您的问题。 您的代码无法编译。

我看到您定义了GCF_TRUE ='x'而不是'X'。 也许是你的问题。 最好使用常量abap_true。

我建议您创建最简单的程序。 如果SET_RANGES_DATA适用于此最简单的程序,则可以确定与当前程序的差异。 一种解决方案是将复杂程序的每个功能集成到您的简单程序中,直到再次出现该错误,以便您确定问题的原因。

NB:

  • 请不要创建答案,只需编辑问题或添加评论即可。 添加答案会阻止操作人员编辑他/她的问题,并阻止每个人纠正他们的评论
  • 请使用" CODE"按钮很好地格式化代码

一周热门 更多>