我们以质量管理中检验批的数字签名为例,演示可配置实现的数字签名配置步骤:一、时间设定。签名的文档中需要记录签名的时间,本地时间和全球时间。 1. 时区设定这个在 SAP 安装的时候 basis 都已经设定好了的。路径:spro->img->SAP NetWeaver->常规设置->时区->维护时区。如图 1、2 所示
图1
图2 2. 用户时区分配Tcode:SU01。如图 3 所示
图3 二、定义签名方法签名方法,也就是控制在哪个环节需要签名,通过怎样的方法进行签名,SAP 内部账号签名还是外部电子签名产品签名。路径:spro->img->sap 用户化实施指南->质量管理->环境->中央功能->权限管理->定义权限组和数字签字。如图 4、5 所示。
图4
图5 我们以检查结果记录和使用决策进行数字签名为例,如图 6 所示:
图6 三、定义授权组授权组跟签名的方法进行关联,这样只要拥有这个授权组的物料都将需要进行按照指定的签名方法进行签名。路径:spro->img->sap 用户化实施指南->质量管理->环境->中央功能->权限管理->定义权限组和数字签字。如图 7、8 所示。
图7
图8 图 8 中参数的详解:授权组编号和短文本——自己输入;赞同检验批——不要求同意;在结果记录中的数字信号——终于结果记录;使用决策的数字签名——需要制定使用决策;确认实际采样图表的数字信号——不需要。四、维护物料主数据的签名授权组Tcode:MM02/MM01。如图 9、10、11 所示。
图9
图 10
图 11,因为这个系统配的业务属于重复制造,所以这里选择 13-重复制造五、结果测试为了测试数字签名的效果,这里创建了一个检验批号,下面进行检验结果的录入并保存,如图 12 所示:
图 12 从图 12 中可见,签字原因一栏自动带出来的是我们配置数字签名方法的操作内容,备注一栏自动带出来的是检验批号、工序号,下面还有的就是账号和密码的输入验证。使用决策并保存,如图 13 所示:
图 13 六、审计追踪Tcode:DSAL。如图 14、15 所示: 图 14
图 15,本例中登录账号为 LUFY,签名账号为 DQTEST。
第二部分:SAP 电子签名的原理
SAP 的电子签名使用的函数为: SIGN_CREATE 、 SIGN_SAVE 。数据的保存都只 IN UPDATE TASK,需要最后 commit。接口中存在第一部分中提到的七种业务参数,其中一个公共参数就是签名对象,也就是签名方法中的签名对象类型(如图 16),是用于决定哪些业务过程需要签名,它保存于数据域 SIG_OBJ 中,这个在执行过程中时需要验证的。
图 16 确认数字校验的时候,系统再去判断基本对象是否拥有数字签名的授权。例如 QM 中的检验批号,系统会校验物料主数据是否拥有授权的权限。最后验证通过之后,系统将验证过程信息保存于各个模块对应的数字签名表头( QM 是 TC73)和共同数据表 TC71 中,以供审计追踪。所以,总结起来说,SAP 数字签名的逻辑就是根据操作模块业务去判断操作的业务对象是否拥有数字签名的授权,然后再判断确认的用户密码是否正确,验证通过之后系统产生数字签名的凭证抬头和明细并保存于数据库中。
第三部分:增强数字签名
从第二部分分析的逻辑来看,SAP 的数字签名其实很简单,我们完全可以定制化的在 SAP 任意地方进行数字签名增强。只要能够清楚在哪个环节需要数字签名(哪里需要就在哪里增强),哪种基本对象需要签名(例如在物料主数据中添加一个字段/多个字段用于标记物料的数字签名需求),我们
就可以二次开发增强实施。按照基本的验证逻辑,验证相关联的对象是否拥有授权,调用 SAP 标准账号验证函数(主程序: SAPLCJ00 屏幕 1100 PAI 中的 MODULE PASSWORD_CHECK_1000)验证用户名和密码,通过之后,将数据保存于 TC71 中(可通过tcode:DSAL 追踪),或者自建表(报表需自己开发)。数字签名的编码对象为 SIGNATURE(tcode:snro)。编号读取函数: CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING object = c_numberrange-object nr_range_nr = c_numberrange-interval IMPORTING number = l_sign_noreturncode = l_get_number_rc EXCEPTIONS interval_not_found = 1 number_range_not_intern = 2 object_not_found =3 quantity_is_0 =4 quantity_is_not_1 =5 interval_overflow =6 OTHERS = 7. 以下为 QM lot 数字签名的开发测试代码: REPORT ZDS_TEST. parameters: p_obj type sig_obj, p_qplos type qplos. data: cs_rc73 type rc73, l_sign_reason_ktxt type rc71-reason_ktxt. cs_rc73-sign_obj = p_obj. cs_rc73-numb_cur = '01'. cs_rc73-numb_tot = '01'. cs_rc73-prueflos = p_qplos. l_sign_reason_ktxt = '决策 TEST'. call function 'SIGN_CREATE' exporting object_imp = cs_rc73-sign_obj key_lot_imp = cs_rc73 signer_imp = sy-uname * FLG_COMMENT_REQ_IMP =''
flg_signer_changeable_imp = '0' "if_ex_digital_signature_ud~mc_kreuzsign_reason_ktxt = l_sign_reason_ktxt exceptions cancelled_by_user =2 pse_info_not_found =4 password_wrong_3_times = 5 no_authority =6 others = 7. ifsy-subrc ne 0. ifsy-subrcge 2. message id sy-msgid type 'I' number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. endif. *-- Transaction has to be called again ...!leave. leave to transaction sy-tcode. else. *-- Authority check was successful -> call for update !call function 'SIGN_SAVE' exporting object_imp = cs_rc73-sign_obj key_lot_imp = cs_rc73. commit WORK AND WAIT. endif.
慧知文库是互联网分享学习的开放平台,汇集亿份高价值的文档资料,涵盖档下载,程序开发文档,教育文档,医药文档,办公文档,考试文档,营销文档,工程文档,分享文档等行业。为您提供愉悦的分享学习体验。
我们以质量管理中检验批的数字签名为例,演示可配置实现的数字签名配置步骤:一、时间设定。签名的文档中需要记录签名的时间,本地时间和全球时间。 1. 时区设定这个在 SAP 安装的时候 basis 都已经设定好了的。路径:spro->img->SAP NetWeaver->常规设置->时区->维护时区。如图 1、2 所示
图1
图2 2. 用户时区分配Tcode:SU01。如图 3 所示
图3 二、定义签名方法签名方法,也就是控制在哪个环节需要签名,通过怎样的方法进行签名,SAP 内部账号签名还是外部电子签名产品签名。路径:spro->img->sap 用户化实施指南->质量管理->环境->中央功能->权限管理->定义权限组和数字签字。如图 4、5 所示。
图4
图5 我们以检查结果记录和使用决策进行数字签名为例,如图 6 所示:
图6 三、定义授权组授权组跟签名的方法进行关联,这样只要拥有这个授权组的物料都将需要进行按照指定的签名方法进行签名。路径:spro->img->sap 用户化实施指南->质量管理->环境->中央功能->权限管理->定义权限组和数字签字。如图 7、8 所示。
图7
图8 图 8 中参数的详解:授权组编号和短文本——自己输入;赞同检验批——不要求同意;在结果记录中的数字信号——终于结果记录;使用决策的数字签名——需要制定使用决策;确认实际采样图表的数字信号——不需要。四、维护物料主数据的签名授权组Tcode:MM02/MM01。如图 9、10、11 所示。
图9
图 10
图 11,因为这个系统配的业务属于重复制造,所以这里选择 13-重复制造五、结果测试为了测试数字签名的效果,这里创建了一个检验批号,下面进行检验结果的录入并保存,如图 12 所示:
图 12 从图 12 中可见,签字原因一栏自动带出来的是我们配置数字签名方法的操作内容,备注一栏自动带出来的是检验批号、工序号,下面还有的就是账号和密码的输入验证。使用决策并保存,如图 13 所示:
图 13 六、审计追踪Tcode:DSAL。如图 14、15 所示: 图 14
图 15,本例中登录账号为 LUFY,签名账号为 DQTEST。
第二部分:SAP 电子签名的原理
SAP 的电子签名使用的函数为: SIGN_CREATE 、 SIGN_SAVE 。数据的保存都只 IN UPDATE TASK,需要最后 commit。接口中存在第一部分中提到的七种业务参数,其中一个公共参数就是签名对象,也就是签名方法中的签名对象类型(如图 16),是用于决定哪些业务过程需要签名,它保存于数据域 SIG_OBJ 中,这个在执行过程中时需要验证的。
图 16 确认数字校验的时候,系统再去判断基本对象是否拥有数字签名的授权。例如 QM 中的检验批号,系统会校验物料主数据是否拥有授权的权限。最后验证通过之后,系统将验证过程信息保存于各个模块对应的数字签名表头( QM 是 TC73)和共同数据表 TC71 中,以供审计追踪。所以,总结起来说,SAP 数字签名的逻辑就是根据操作模块业务去判断操作的业务对象是否拥有数字签名的授权,然后再判断确认的用户密码是否正确,验证通过之后系统产生数字签名的凭证抬头和明细并保存于数据库中。
第三部分:增强数字签名
从第二部分分析的逻辑来看,SAP 的数字签名其实很简单,我们完全可以定制化的在 SAP 任意地方进行数字签名增强。只要能够清楚在哪个环节需要数字签名(哪里需要就在哪里增强),哪种基本对象需要签名(例如在物料主数据中添加一个字段/多个字段用于标记物料的数字签名需求),我们
就可以二次开发增强实施。按照基本的验证逻辑,验证相关联的对象是否拥有授权,调用 SAP 标准账号验证函数(主程序: SAPLCJ00 屏幕 1100 PAI 中的 MODULE PASSWORD_CHECK_1000)验证用户名和密码,通过之后,将数据保存于 TC71 中(可通过tcode:DSAL 追踪),或者自建表(报表需自己开发)。数字签名的编码对象为 SIGNATURE(tcode:snro)。编号读取函数: CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING object = c_numberrange-object nr_range_nr = c_numberrange-interval IMPORTING number = l_sign_noreturncode = l_get_number_rc EXCEPTIONS interval_not_found = 1 number_range_not_intern = 2 object_not_found =3 quantity_is_0 =4 quantity_is_not_1 =5 interval_overflow =6 OTHERS = 7. 以下为 QM lot 数字签名的开发测试代码: REPORT ZDS_TEST. parameters: p_obj type sig_obj, p_qplos type qplos. data: cs_rc73 type rc73, l_sign_reason_ktxt type rc71-reason_ktxt. cs_rc73-sign_obj = p_obj. cs_rc73-numb_cur = '01'. cs_rc73-numb_tot = '01'. cs_rc73-prueflos = p_qplos. l_sign_reason_ktxt = '决策 TEST'. call function 'SIGN_CREATE' exporting object_imp = cs_rc73-sign_obj key_lot_imp = cs_rc73 signer_imp = sy-uname * FLG_COMMENT_REQ_IMP =''
flg_signer_changeable_imp = '0' "if_ex_digital_signature_ud~mc_kreuzsign_reason_ktxt = l_sign_reason_ktxt exceptions cancelled_by_user =2 pse_info_not_found =4 password_wrong_3_times = 5 no_authority =6 others = 7. ifsy-subrc ne 0. ifsy-subrcge 2. message id sy-msgid type 'I' number sy-msgno with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. endif. *-- Transaction has to be called again ...!leave. leave to transaction sy-tcode. else. *-- Authority check was successful -> call for update !call function 'SIGN_SAVE' exporting object_imp = cs_rc73-sign_obj key_lot_imp = cs_rc73. commit WORK AND WAIT. endif.
慧知文库是互联网分享学习的开放平台,汇集亿份高价值的文档资料,涵盖档下载,程序开发文档,教育文档,医药文档,办公文档,考试文档,营销文档,工程文档,分享文档等行业。为您提供愉悦的分享学习体验。