收藏 分销(赏)

SAP模块化技术与异常处理.doc

上传人:仙人****88 文档编号:11895349 上传时间:2025-08-19 格式:DOC 页数:14 大小:279KB 下载积分:10 金币
下载 相关 举报
SAP模块化技术与异常处理.doc_第1页
第1页 / 共14页
SAP模块化技术与异常处理.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
模块化技术与异常处理 模块化: a) 好处有三: i. 使程序更加的清晰,易读,易于维护。 ii. 实现代码的复用。 iii. 实现数据封装,数据或功能仅通过接口与模块外部发生联系,这也相应地增加了程序的可读写和可维护性。 b) 分类: i. 子程序 ii. 功能模块 子程序: 子程序的定义方式: Form (子程序名) [ using 参数名 type 类型] Form (子程序名) [ using 参数名] Form (子程序名) [ using 参数名 changing 参数名] ………… <subr codes> ………… Endform. 在调用此form时,调用的方式为: Perform 子程序名. 注意: 当定义的子程序有输入和输出参数的时候。一定要保持调用时传入的参数和在定义子程序的参数的类型要一致。 功能模块: 功能模块建立的方法与过程: 1. 进入功能函数的界面(t-code: se37 或者 se80 一下以se80为准) 2. 先将建立的类型选择为一个函数组: 3. 如果在以有的函数组下建立function group的话。直接输入所要建立的函数组名或者是已有的名字。 输入短文本,保存到本地对象。保存以后直接active本函数组。 错误提示: REPORT/PROGRAM statement missing, or program type is I (INCLUDE). 如果出现此错误。那么函数组肯定是没有active,进入se80对函数组active一下。就可以了。 4. 进入se37建立function group。 输入已有的函数组。保存到本地对象。 5. 进行对function group 的import 、export、changing 、tablelen进行设置。最后进入source code标签进行对此function group 进行代码的编辑。 6. 编码结束,active后执行程序进行调试。 7. 在se38程序中调用此function group 时的方式为: CALL FUNCTION 'Z_SAP4_TEST_YY'   EXPORTING     INPUT_1        =     INPUT_2        = * IMPORTING *   OUTPUT_1       = 变量的生存周期: 在程序中可以定义全局变量和局部变量。当全局变量和局部变量同名时,局部变量起作用,而全局变量的值不改变。还有一点就是如果当调用一个form并且传入其参数时,而form中对其值进行修改,那么在另一个form中调用全局变量时,其值不变。也就是说,在form中对全局变量进行修改以后,其修改的值值存在于此form中。 还可以建立静态变量,建立的方式为: Static 变量名 type 类型。 在程序中建立一个静态变量以后。无论时在程序中任何一个位置对其进行修改,那么其值会直接更新为修改以后的值。 代码的复用: 代码的复用可以大量的降低程序的耦合度,也可以让程序更加的清晰,易于维护,在开发的代码量也会相应的减少。 主要使用的方式有include程序、宏程序、function group等方式。主要说一下宏程序。 宏程序的建立方式: Define <宏的名字>. <statements> End-of-definition. 在一个宏中可以调用多个宏,方式为。 Define <宏名字> <statements>. <调用宏的名字> <并给他所需要的占位符的个数> End-of-definition. Define <之前调用的宏名字> <statements>. End-of-definition. 注意:在一个宏中最多可以定义9个占位符。而占位符的方式是&1,&2……&9. 不可以递归调用,可以调用其他宏。 异常处理: 1. 静态异常 这种异常引起的原因基本上是语法的错误,因此比较容易更改。 2. 运行时异常 运行时异常的捕获与处理: 将需要处理异常的语句块放在,非类异常如下: Catch system-exceptions 非类异常的名字 = 数字. Endcatch. if sy-subrc = 数字. 进行异常处理. Endif. 类的异常: data MYREF type ref to CX_SY_ARITHMETIC_ERROR. “定义一个异常类的对象 data ERR_TEXT type STRING.  data RESULT type I.  try.      RESULT = 1 / 0.    catch cx_sy_arithmetic_error into MYREF.      ERR_TEXT = MYREF->GET_TEXT( ).  endtry.  类异常的异常类型与名字和从属的关系: (Associated superclass: CX_SY_ARITHMETIC_ERROR) BCD_ZERODIVIDE CX_SY_ZERODIVIDE COMPUTE_FLOAT_ZERODIVIDE CX_SY_ZERODIVIDE COMPUTE_INT_ZERODIVIDE CX_SY_ZERODIVIDE ADDF_INT_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_COSH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_EXP_RANGE CX_SY_ARITHMETIC_OVERFLOW COMPUTE_FLOAT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_FLOAT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_FLOAT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_FLOAT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_INT_ABS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_INT_DIV_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_INT_MINUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_INT_PLUS_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_INT_TIMES_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_LOG10_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_LOG_ERROR CX_SY_ARITHMETIC_OVERFLOW, CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_MATH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_POW_RANGE CX_SY_ARITHMETIC_OVERFLOW COMPUTE_SINH_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW COMPUTE_ACOS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_ASIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_ATAN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_COSH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_COS_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_EXP_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_MATH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_POW_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_SINH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_SIN_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_SQRT_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_TANH_DOMAIN CX_SY_ARG_OUT_OF_DOMAIN COMPUTE_COS_LOSS CX_SY_PRECISION_LOSS COMPUTE_MATH_LOSS CX_SY_PRECISION_LOSS COMPUTE_SIN_LOSS CX_SY_PRECISION_LOSS COMPUTE_TAN_LOSS CX_SY_PRECISION_LOSS BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW   Exception group: CONVERSION_ERRORS (Associated superclass: CX_SY_CONVERSION_ERROR) BCD_FIELD_OVERFLOW CX_SY_CONVERSION_OVERFLOW CONVT_OVERFLOW CX_SY_CONVERSION_OVERFLOW CONVT_CODEPAGE CX_SY_CONVERSION_CODEPAGE CONVT_NO_NUMBER CX_SY_CONVERSION_NO_NUMBER BCD_OVERFLOW CX_SY_ARITHMETIC_OVERFLOW   Exception group: CREATE_DATA_ERRORS (Associated superclass: CX_SY_CREATE_ERROR) This group contains runtime errors that may occur during the creation of data objects. CREATE_DATA_UNKNOWN_TYPE CX_SY_CREATE_DATA_ERROR CREATE_DATA_NOT_ALLOWED_TYPE CX_SY_CREATE_DATA_ERROR CREATE_DATA_LEN_NOT_ALLOWED CX_SY_CREATE_DATA_ERROR CREATE_DATA_ILLEGAL_LENGTH CX_SY_CREATE_DATA_ERROR CREATE_DATA_ILLEGAL_DECIMALS CX_SY_CREATE_DATA_ERROR CREATE_DATA_ILLEGAL_INIT_SIZE CX_SY_CREATE_DATA_ERROR   Exception group: CREATE_OBJECT_ERRORS (Associated superclass: CX_SY_CREATE_ERROR) This group contains runtime errors that may occur during the creation of objects. CREATE_OBJECT_CLASS_NOT_FOUND CX_SY_CREATE_OBJECT_ERROR CREATE_OBJECT_CLASS_ABSTRACT CX_SY_CREATE_OBJECT_ERROR CREATE_OBJECT_CREATE_PRIVATE CX_SY_CREATE_OBJECT_ERROR CREATE_OBJECT_CREATE_PROTECTED CX_SY_CREATE_OBJECT_ERROR   Exception group: DATA_ACCESS_ERRORS (Associated superclass: CX_SY_DATA_ACCESS_ERROR) This group contains runtime errors that may occur during subfield access (with offset/length) to data objects. DATA_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS DATA_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS DATA_LENGTH_0 CX_SY_RANGE_OUT_OF_BOUNDS DATA_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS DATA_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS REFI_WRONG_SECTION CX_SY_RANGE_OUT_OF_BOUNDS STRING_OFFSET_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS STRING_OFFSET_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS STRING_LENGTH_NEGATIVE CX_SY_RANGE_OUT_OF_BOUNDS STRING_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS STRING_OFFSET_LENGTH_TOO_LARGE CX_SY_RANGE_OUT_OF_BOUNDS DATA_OFFSET_LENGTH_NOT_ALLOWED CX_SY_OFFSET_NOT_ALLOWED   Since a subfield access can occur in almost all statements, no keywords can be assigned. Exception group: DYNAMIC_CALL_METHOD_ERRORS (Associated superclass: CX_SY_DYN_CALL_ERROR) This group contains runtime errors that may occur during a dynamic method call. These are normally errors that trigger a syntax error if the call is static. DYN_CALL_METH_CLASS_ABSTRACT CX_SY_DYN_CALL_ILLEGAL_CLASS DYN_CALL_METH_CLASS_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_CLASS DYN_CALL_METH_CLASSCONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_CONSTRUCTOR CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_NOT_FOUND CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_NO_CLASS_METHOD CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_PRIVATE CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_PROTECTED CX_SY_DYN_CALL_ILLEGAL_METHOD DYN_CALL_METH_EXCP_NOT_FOUND CX_SY_DYN_CALL_EXCP_NOT_FOUND DYN_CALL_METH_PARAM_KIND CX_SY_DYN_CALL_ILLEGAL_TYPE DYN_CALL_METH_PARAM_LITL_MOVE CX_SY_DYN_CALL_ILLEGAL_TYPE DYN_CALL_METH_PARAM_TAB_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE DYN_CALL_METH_PARAM_TYPE CX_SY_DYN_CALL_ILLEGAL_TYPE DYN_CALL_METH_PARAM_MISSING CX_SY_DYN_CALL_PARAM_MISSING DYN_CALL_METH_PARREF_INITIAL CX_SY_DYN_CALL_PARAM_MISSING DYN_CALL_METH_PARAM_NOT_FOUND CX_SY_DYN_CALL_PARAM_NOT_FOUND DYN_CALL_METH_REF_IS_INITIAL CX_SY_REF_IS_INITIAL   The following keywords are assigned to this exception group: CALL METHOD Exception group: FILE_ACCESS_ERRORS (Associated superclass: CX_SY_FILE_ACCESS_ERROR) This group contains runtime errors that may occur during file access. Typical examples are if the system cannot find the file, if no more space is available to write or create the file, or if the authorization to access the file is missing. DATASET_CANT_CLOSE CX_SY_FILE_CLOSE DATASET_CANT_OPEN CX_SY_FILE_OPEN EXPORT_DATASET_CANNOT_OPEN CX_SY_FILE_OPEN DATASET_WRITE_ERROR CX_SY_FILE_IO DATASET_READ_ERROR CX_SY_FILE_IO EXPORT_DATASET_WRITE_ERROR CX_SY_FILE_IO DATASET_SEEK_ERROR CX_SY_FILE_POSITION DATASET_NO_POSITION CX_SY_FILE_POSITION DATASET_READ_ONLY CX_SY_FILE_OPEN_MODE DATASET_NOT_OPEN CX_SY_FILE_OPEN_MODE OPEN_DATASET_NO_AUTHORITY CX_SY_FILE_AUTHORITY OPEN_PIPE_NO_AUTHORITY CX_SY_FILE_AUTHORITY DATASET_TOO_MANY_FILES CX_SY_TOO_MANY_FILES DATASET_NO_PIPE CX_SY_PIPES_NOT_SUPPORTED   Exception group: IMPORT_MISMATCH_ERRORS (Common class: CX_SY_IMPORT_MISMATCH_ERROR) This group contains runtime errors that may occur during the import of data · from the ABAP memory, · from the database, · from the SHARED BUFFER, or · from a file if the type or the length of the data stored is not identical with that of the target type. CONNE_IMPORT_WRONG_COMP_DECS CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_COMP_LENG CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_COMP_TYPE CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_FIELD_DECS CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_FIELD_LENG CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_FIELD_TYPE CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_OBJECT_TYPE CX_SY_IMPORT_MISMATCH_ERROR CONNE_IMPORT_WRONG_STRUCTURE CX_SY_IMPORT_MISMATCH_ERROR IMPORT_ALIGNMENT_MISMATCH CX_SY_IMPORT_MISMATCH_ERROR IMPORT_WRONG_END_POS CX_SY_IMPORT_MISMATCH_ERROR   Exception group: LOCALIZATION_ERRORS (Common class: CX_SY_LOCALIZATION_ERROR) This group contains runtime errors that may occur when you switch to another text environment. Typical examples are if the required language is not allowed or if the system wants to switch to a character set which has not been released. TEXTENV_CODEPAGE_NOT_ALLOWED CX_SY_LOCALIZATION_ERROR TEXTENV_INVALID CX_SY_LOCALIZATION_ERROR TEXTENV_KEY_INVALID CX_SY_LOCALIZATION_ERROR   Exception group: REMOTE_CALL_ERRORS (Associated superclass: CX_SY_REMOTE_CALL_ERROR) This group contains runtime errors that may occur during calls in remote systems (currently only CALL METHOD). Typical examples are network errors or the unexpected termination of the connection. RMC_COMMUNICATION_FAILURE CX_SY_RMC_COMM_FAILURE RMC_INVALID_STATUS CX_SY_RMC_INVALID_STATUS RMC_SYSTEM_FAILURE CX_SY_RMC_SYSTEM_FAILURE   CALL METHOD Not assigned to an exception group: ASSIGN_CASTING_ILLEGAL_CAST CX_SY_ASSIGN_CAST_ILLEGAL_CAST ASSIGN_CASTING_UNKNOWN_TYPE CX_SY_ASSIGN_CAST_UNKNOWN_TYPE ASSIGN_FIELD_NOT_IN_RANGE CX_SY_ASSIGN_OUT_OF_RANGE DATASET_OFFSET_TOO_LARGE CX_SY_FILE_POSITION DYN_CALL_METH_NOT_IMPLEMENTED CX_SY_DYN_CALL_ILLEGAL_METHOD EXPORT_BUFFER_NO_MEMORY CX_SY_EXPORT_BUFFER_NO_MEMORY GENERATE_SUBPOOL_DIR_FULL CX_SY_GENERATE_SUBPOOL_FULL MOVE_CAST_ERROR CX_SY_MOVE_CAST_ERROR PERFORM_PROGRAM_NAME_TOO_LONG CX_SY_PROGRAM_NOT_FOUND REPLACE_INFINITE_LOOP CX_SY_REPLACE_INFINITE_LOOP  6、类异常类树 CX_SY_ROOT   |   |--CX_STATIC_CHECK   |   |--CX_DYNAMIC_CHECK   |    |   |    |--CX_SY_ARITHMETIC_ERROR   |    |    |   |    |    |--CX_SY_ZERODIVIDE   |    |    |   |    |    |--CX_SY_ARITHMETIC_OVERFLOW   |    |    |   |    |    |--CX_SY_ARG_OUT_OF_DOMAIN   |    |    |   |    |    |--CX_SY_PRECISION_LOSS   |    |   |    |--CX_SY_ASSIGN_ERROR   |    |    |   |    |    |--CX_SY_ASSIGN_CAST_ERROR   |    |    |    |   |    |    |    |--CX_SY_ASSIGN_CAST_ILLEGAL_CAST   |    |    |    |   |    |    |    |--CX_SY_ASSIGN_CAST_UNKNOWN_TYPE   |    |    |   |    |    |--CX_SY_ASSIGN_OUT_OF_RANGE   |    |   |    |--CX_SY_CODEPAGE_CONVERTER_INIT   |    |   |    |--CX_SY_CONVERSION_ERROR   |    |    |   |    |    |--CX_SY_CONVERSION_OVERFLOW   |    |    |   |    |    |--CX_SY_CONVERSION_NO_NUMBER   |    |    |   |    |    |--CX_SY_CONVERSION_CODEPAGE   |    |    |   |    |    |--CX_SY_CONVERSION_BASE64   |    |    |   |    |    |--CX_SY_CONV_ILLEGAL_DATE_TIME   |    |   |    |--CX_SY_CREATE_ERROR   |    |    |   |    |    |--CX_SY_CREATE_OBJECT_ERROR   |    |    |   |    |    |--CX_SY_CREATE_DATA_ERROR   |    |   |    |--CX_SY_DATA_ACCESS_ERROR   |    |    |   |    |    |--CX_SY_RANGE_OUT_OF_BOUNDS   |    |    |   |    |    |--CX_SY_OFFSET_NOT_ALLOWED   |    |   |    |--CX_SY_DYN_CALL_ERROR   |    |    |   |    |    |--CX_SY_DYN_CALL_ILLEGAL_CLASS   |    |    |   |    |    |--CX_SY_DYN_CALL_ILLEGAL_FUNC   |    |    |   |    |    |--CX_SY_DYN_CALL_ILLEGAL_METHOD   |    |    |   |    |    |--CX_SY_DYN_CALL_PARAMETER_ERROR   |    |         |   |    |         |--CX_SY_DYN_CALL_EXCP_NOT_FOUND   |    |         |   |    |         |--CX_SY_DYN_CALL_ILLEGAL_TYPE   |    |         |   |    |         |--CX_SY_DYN_CALL_PARAM_MISSING   |    |         |   |    |         |--CX_SY_DYN_CALL_PARAM_NOT_FOUND   |    |   |    |--CX_SY_FILE_ACCESS_ERROR   |    |    |   |    |    |--CX_SY_FILE_AUTHORITY   |    |    |   |    |    |--CX_SY_FILE_CLOSE   |    |    |   |    |    |--CX_SY_FILE_IO   |    |    |   |    |    |--CX_SY_FILE_POSITION   |    |    |   |    |    |--CX_SY_FILE_OPEN_MODE   |    |    |   |    |    |--CX_SY_FILE_OPEN   |    |   |    |--CX_SY_GEN_SOURCE_TOO_WIDE   |    |   |    |--CX_SY_IMPORT_MISMATCH_ERROR   |    |   |    |--CX_SY_MOVE_CAST_ERROR   |    |   |    |--CX_SY_PROGRAM_NOT_FOUND   |    |   |    |--CX_SY_PROVIDE_EXCEPTION   |    |    |   |    |    |--CX_SY_PROVIDE_INTERVAL_OVERLAP   |    |    |   |    |    |--CX_SY_PROVIDE_TABLE_NOT_SORTED   |    |   |    |--CX_SY_READ_SRC_LINE_TOO_LONG   |    |   |    |--CX_SY_REF_IS_INITIAL   |    |   |    |--CX_SY_REPLACE_INFINITE_LOOP   |    |   |    |--CX_SY_SCAN_SOURCE_TOO_WIDE   |    |   |    |--CX_SY_SQL_ERROR   |    |    |   |    |    |--CX_SY_OPEN_SQL_ERROR   |    |    |    |   |    |    |    |--CX_SY_OPEN_SQL_DB   |    |    |    |   |    |    |    |--CX_SY_DYNAMIC_OSQL_ERROR   |    |    |         |   |    |    |         |--CX_SY_DYNAMIC_OSQL_SEMANTICS   |    |    |         |   |    |    |         |--CX_SY_DYNAMIC_OSQL_SYNTAX   |    |    |   |    |    |--CX_SY_NATIVE_SQL_ERROR   |    |   |    |--CX_SY_WRITE_SRC_LINE_TOO_LONG   |   |--CX_NO_CHECK        |        |--CX_SY_EXPORT_NO_SHARED_MEMORY        |        |--CX_SY_EXPORT_BUFFER_NO_MEMORY        |        |--CX_SY_GENERATE_SUBPOOL_FULL        |        |--CX_SY_LOCALIZATION_ERROR        |        |--CX_SY_NO_HANDLER        |        |--CX_SY_PIPES_NOT_SUPPORTED        |        |--CX_SY_PIPE_REOPEN        |        |--CX_SY_REMOTE_CALL_ERROR        |    |        |    |--CX_SY_RMC_COMM_FAILURE        |    |        |    |--CX_SY_RMC_INVALID_STATUS        |    |        |    |--CX_SY_RMC_SYSTEM_FAILURE        |        |--CX_SY_TOO_MANY_
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服