[ABAP] 修改SAP网页端登录界面

文章目录

  • 前言
  • 一、配置服务
  • 二、Class实现
    • 1. 创建类
    • 2. 重写方法
  • 三、测试
  • 四、附 - 自动登录


前言

我们在SICF配置一些HTTP服务使用之后使用时,打开网页会提示输入账号密码,但是这个会以弹窗形式出现。
这对客户体验是很不友好的,这篇文章将会介绍如何修改自定义验证页面。
在这里插入图片描述


一、配置服务

  • 事务代码:SICF, 定义一个新服务LOGIN
    在这里插入图片描述
  • 点击Error Pages中的Configuration在这里插入图片描述
  • 选择Service-Specific Settings并如下设置
    我们会在YYCL_CUSTOM_LOGIN_HTM_DEMO中实现方法
    在这里插入图片描述

二、Class实现

1. 创建类

  • 我们需要继承CL_ICF_SYSTEM_LOGIN类
    在这里插入图片描述

2. 重写方法

  • 下面几个方法我们都需要重写(因为是abstract方法),但是只需要把HTM_LOGIN里实现逻辑就可以,别的方法不用实现
    HTM_CHANGE_PASSWD
    HTM_LOGIN
    HTM_MESSAGE_BOX
    HTM_SESSION_QUERY
    HTM_SYSTEM_MESSAGE
    在这里插入图片描述
  • HTM_LOGIN里我们需要返回HTML页面代码。
method HTM_LOGIN.data: ls_mes    like line of me->m_logmessages[],e_message type string.*--------------------------------------------------------------------*free: e_message.clear: e_message.*--if me->m_logmessages[] is not initial.loop at me->m_logmessages into ls_mes.concatenate e_messagels_mes-messageinto e_message separated by space.endloop.rv_html = `{"error":"` && e_message && `"}`.*    RETURN.endif.*
**-- 登录界面 HTML+CSSconcatenate`<!DOCTYPE html>`
`<html>``<head>``<title>Login Page</title>``<style>``* {``margin: 0;``padding: 0;``box-sizing: border-box;``}``body {``background: #191919;``font-family: sans-serif;``}``.login-box {``width: 280px;``position: absolute;``top: 50%;``left: 50%;``transform: translate(-50%, -50%);``color: #fff;``}``.login-box2 {``width: 600px;``position: absolute;``top: 65%;``left: 50%;``transform: translate(-50%, -50%);``color: #fff;``text-align: center;``}``.login-box h2 {``text-align: center;``margin-bottom: 30px;``}``.user-box {``position: relative;``margin-bottom: 30px;``}``.user-box input {``width: 100%;``padding: 10px 0;``font-size: 16px;``color: #fff;``border: none;``border-bottom: 1px solid #fff;``outline: none;``background: transparent;``}``.user-box label {``position: absolute;``top: 0;``left: 0;``padding: 10px 0;``font-size: 16px;``color: #fff;``pointer-events: none;``transition: 0.5s;``}``.user-box input:focus~label,``.user-box input:valid~label {``top: -20px;``left: 0;``color: #03a9f4;``font-size: 12px;``}``a {``display: inline-block;``text-align: center;``padding: 14px 110px;``margin-top: 1px;``color: #fff;``text-transform: uppercase;``text-decoration: none;``position: relative;``overflow: hidden;``transition: 0.5s;``}``a:hover {``background: #03a9f4;``cursor: pointer;``}``a span {``position: absolute;``display: block;``}``a span:nth-child(1) {``top: 0;``left: -100%;``width: 100%;``height: 2px;``background: linear-gradient(90deg, transparent, #03a9f4);``animation: animate1 1s linear infinite;``}``@keyframes animate1 {``0% {``left: -100%;``}``50%,``100% {``left: 100%;``}``}``a span:nth-child(2) {``top: -100%;``right: 0;``width: 2px;``height: 100%;``background: linear-gradient(180deg, transparent, #03a9f4);``animation: animate2 1s``}``</style>``</head>``<body>``<div class="login-box">``<h2>Login Here</h2>``<form name="main" id="main" method="post">``<div class="user-box">``<input type="text" name="sap-user" required="true">``<label>Username</label>``</div>``<div class="user-box">``<input type="password" name="sap-password" required="true">``<label>Password</label>``</div>``<a  onClick="login()">``<span></span>``<span></span>``<span></span>``<span></span>``Submit``</a>``<input type="hidden" name="sap-reload" value="get" >``</form>``</div>``<div class="login-box2">`   e_message  `</div>``<script>``function login(){``document.getElementById('main').submit();``}``</script>`
`</body>``</html>`into rv_html.endmethod.

这个方法是没法设置外部断点的,有问题没法调试。


三、测试

  • 成功渲染页面
    在这里插入图片描述
  • 登录成功
    在这里插入图片描述

四、附 - 自动登录

  • 如果想在某些场景下输入链接时直接登录(免验证),可以使用如下代码实现。(其实就是onload时提交表单)
    这样做会有安全隐患,所以不推荐使用。
  data: ls_mes    like line of me->m_logmessages[],e_message type string.*--------------------------------------------------------------------*free: e_message.clear: e_message.data:sid type string,spw type string.sid = '账号'.spw = '密码'.*--Errorif me->m_logmessages[] is not initial.loop at me->m_logmessages into ls_mes.concatenate e_messagels_mes-messageinto e_message separated by space.endloop.rv_html = `{"error":"` && e_message && `"}`.return.endif.*
**-- 自动登录concatenate`<!DOCTYPE html>`
`<html>``<head>``<title>Login Page</title>`
`</head>``<body>``<form name="main" id="main" method="post">``<input type="hidden" id="sap-user" name="sap-user" value="">``<input type="hidden" id="sap-password" name="sap-password" value="">``<input type="hidden" id="sap-reload" name="sap-reload" value="get" >``</form>``<script>``window.onload = function(){``document.getElementById('sap-user').value = "` sid `";``document.getElementById('sap-password').value = "` spw `";``document.getElementById('main').submit();``};``</script>`
`</body>``</html>`into rv_html.
  • 看看效果(不用登录直接显示页面)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/323662.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

经典目标检测YOLO系列(一)实现YOLOV1网络(1)总体架构 实现原版的YOLOv1并没有多大的意义&#xff0c;因此&#xff0c;根据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;在不脱离YOLOv1的大部分核心理念的前提下&#xff0c;重构一款较新的YOLOv1检测器&#xff0c;来…

web学习笔记(九)

目录 1.初识JS(JavaScript) 1.1什么是JavaScript&#xff1f; 1.2HTML5 CSS3 javaScript三者的关系 1.3 JAVAScript的作用 1.4JAVAScript的组成部分 1.5JS注释 1.6补充知识 2.JS的引入方法 2.1行内式 2.2嵌入式&#xff08;内嵌式&#xff09; 2.3外链式 3.输入和…

支持API文档生成,API管理工具:Apipost

随着数字化转型的加速&#xff0c;API&#xff08;应用程序接口&#xff09;已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中&#xff0c;API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台&#xff0c;旨在解决这些问题&#xf…

LeetCode(31) 下一个排列

整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&#xf…

centos 7.9安装RocketMQ4.6.1版本

1.先下载二进制文件 下载 | RocketMQ 2.下载后&#xff0c;进行解压 unzip rocketmq-all-4.6.1-bin-release.zip 3.修改JVM配置 进到/datadrive/rocketmq-all-4.6.1-bin-release/bin下编辑runserver.sh 与 runbroker.sh文件 根据个人虚拟机大小进行修改 vi runserver.sh J…

ubuntu 22 virt-manger(kvm)安装winxp

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 &#xff1a; 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

【银行测试】银行放款测试点+提现测试点+保险测试(超细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、银行放款测试点…

插入排序详解!!!(简单排序),基本功排序C语言版

目录 1.什么是插入排序 2.插入排序的源代码 3.源代码详解 1.什么是插入排序 这是一个插入排序的流程图&#xff0c;插入排序 很像我们玩斗地主&#xff0c;玩牌&#xff0c;斗地主在开始前&#xff0c;我们是不是要给我们手上的牌排序啊&#xff0c;假设我们理牌有一个规矩就…

17周刷题(6~10)

编写int fun(char s[])函数&#xff0c;将八进制参数串s转换为十进制整数返回&#xff0c;若传入"77777"返回32767。 #include<string.h> int fun(char s[]) {int i strlen(s)-1, h 0, q 1;while (i>0) {h (s[i] - 0) * q;q * 8;i--;}return h; } …

Pytest自动化的坑

1、封装pytest的类型&#xff0c;名称的开头需要使用Test开头命名类&#xff0c;否则会出现运行pytest找不到类的情况 2、函数被pytest.fixtrue装饰之后&#xff0c;就不能再直接引用函数方法&#xff0c;需要把函数名称当作参数传到其他的函数中使用 3、conftest的全局变量名称…

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统 随着油气工业的发展&#xff0c;管道泄漏成为一个严峻的安全问题。本文介绍了一种基于LabVIEW的分布式光纤油气管道泄漏检测及预警系统的设计思路和组成结构。系统包括硬件和软件两部分&#xff0c;其中硬件部分详细阐述了分…

网络安全最正确的自学顺序!(小白福音)

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…