abapgit 安装及使用

abapgit 需求 SA[ BASIS 版本 702 及以上

版本查看路径如下:

 

安装步骤如下:

1. 下载abapgit 独立版本 程序

链接如下:raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap

2.安装开发版本

2.1 在线安装

    前置条件是你首先下载了GitHub 的证书,并且已经上传完成,步骤如下:

   注意:为预防不必要的安全问题发生,要求SAP下载中心的加密图书馆版本尽可能的等级更高

  查看方法如下:STRUST> Environment > Display SSF Version:

   

    ①.下载github的证书

     浏览器中输入 GitHub: Let’s build from here · GitHub

    

     按照顺序依次导出三个证书

     

② STRUST 安装证书

 

都导入成功会会出现中间证书列表。 最后点击保存 

③ SMICM 重启ICM

④ 测试 SSL证书是否安装完成

*&---------------------------------------------------------------------*
*& Report  ZABAPGIT_TEST_SSL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zabapgit_test_ssl.

* See https://docs.abapgit.org

********************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2014 abapGit Contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
********************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK sc_header WITH FRAME TITLE sc_titl1.
  SELECTION-SCREEN SKIP.
  SELECTION-SCREEN COMMENT 1(77) sc_txt1.
  SELECTION-SCREEN SKIP.
  SELECTION-SCREEN COMMENT /1(77) sc_txt2.
  SELECTION-SCREEN COMMENT /1(77) sc_txt3.
  SELECTION-SCREEN COMMENT /1(77) sc_txt4.
SELECTION-SCREEN END OF BLOCK sc_header.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK sc_serv WITH FRAME TITLE sc_titl2.
  PARAMETERS:
    p_url1 TYPE string LOWER CASE DEFAULT 'https://github.com' OBLIGATORY,
    p_url2 TYPE string LOWER CASE DEFAULT 'https://api.github.com',
    p_id   TYPE strustssl-applic DEFAULT 'ANONYM' OBLIGATORY.
* api.github.com is used when pushing code back to github
SELECTION-SCREEN END OF BLOCK sc_serv.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK sc_proxy WITH FRAME TITLE sc_titl3.
* proxy settings, fill if your system is behind a proxy
  PARAMETERS:
    p_proxy TYPE string LOWER CASE,
    p_pport TYPE string LOWER CASE,
    p_puser TYPE string LOWER CASE,
    p_ppwd  TYPE string LOWER CASE.
SELECTION-SCREEN END OF BLOCK sc_proxy.

CLASS lcl_report DEFINITION.

  PUBLIC SECTION.

    METHODS run
      IMPORTING
        iv_url TYPE string.

    METHODS display_response.

    METHODS f4_url
      RETURNING
        VALUE(rv_url) TYPE string.

  PRIVATE SECTION.

    TYPES:
      BEGIN OF ty_server,
        server TYPE w3server,
        url    TYPE w3url,
      END OF ty_server,
      ty_servers TYPE STANDARD TABLE OF ty_server WITH KEY server.

    TYPES:
      BEGIN OF ty_link,
        line     TYPE i,
        response TYPE string,
      END OF ty_link,
      ty_links TYPE STANDARD TABLE OF ty_link WITH NON-UNIQUE KEY line.

    DATA mt_links TYPE ty_links.

    METHODS display_error
      IMPORTING
        iv_text TYPE string.

    METHODS display_messages
      IMPORTING
        iv_response TYPE string.

    METHODS add_response_link
      IMPORTING
        iv_response TYPE string.

    METHODS get_servers
      RETURNING
        VALUE(rt_servers) TYPE ty_servers.

ENDCLASS.

CLASS lcl_report IMPLEMENTATION.

  METHOD run.

    DATA:
      lv_code          TYPE i,
      lv_url           TYPE string,
      li_http_client   TYPE REF TO if_http_client,
      lv_error_message TYPE string,
      lv_reason        TYPE string,
      lv_response      TYPE string.

    IF iv_url IS INITIAL.
      RETURN.
    ENDIF.

    cl_http_client=>create_by_url(
      EXPORTING
        url                 = iv_url
        ssl_id              = p_id
        proxy_host          = p_proxy
        proxy_service       = p_pport
      IMPORTING
        client              = li_http_client
      EXCEPTIONS
        argument_not_found  = 1
        plugin_not_active   = 2
        internal_error      = 3
        OTHERS              = 4 ).

    IF sy-subrc <> 0.
      display_error( 'HTTP Client Create' ).
      RETURN.
    ENDIF.

    IF p_puser IS NOT INITIAL.
      li_http_client->authenticate(
        proxy_authentication = abap_true
        username             = p_puser
        password             = p_ppwd ).
    ENDIF.

    li_http_client->send( ).

    li_http_client->receive(
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        OTHERS                     = 4 ).

    IF sy-subrc <> 0.
      display_error( 'HTTP Client Receive' ).

      li_http_client->get_last_error(
        IMPORTING
          message = lv_response ).

      display_messages( lv_response ).

      WRITE / 'Also check transaction SMICM -> Goto -> Trace File -> Display End'.
      RETURN.
    ENDIF.

* if SSL Handshake fails, make sure to also check https://launchpad.support.sap.com/#/notes/510007

    li_http_client->response->get_status(
      IMPORTING
        code   = lv_code
        reason = lv_reason ).
    IF lv_code = 200.
      WRITE: / iv_url, ': ok'.
    ELSE.
      WRITE: / iv_url, ': Error', lv_code, space, lv_reason.

      lv_response = li_http_client->response->get_cdata( ).

      IF lv_response IS NOT INITIAL.
        add_response_link( lv_response ).
      ENDIF.

      REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf(1) IN lv_response WITH ``.

      display_messages( lv_response ).
    ENDIF.

  ENDMETHOD.

  METHOD display_error.

    WRITE: / iv_text, '- Error Number:', sy-subrc, /.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      DISPLAY LIKE 'I'
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDMETHOD.

  METHOD display_messages.

    DATA:
      lt_lines TYPE TABLE OF string,
      lv_line  TYPE string.

    SPLIT iv_response AT cl_abap_char_utilities=>newline INTO TABLE lt_lines.

    LOOP AT lt_lines INTO lv_line.
      WRITE / lv_line.
    ENDLOOP.
    SKIP.

  ENDMETHOD.

  METHOD add_response_link.

    DATA lv_link TYPE ty_link.

    WRITE / 'Display Error Response as HTML' COLOR = 6 HOTSPOT.

    lv_link-line     = sy-linno.
    lv_link-response = iv_response.
    APPEND lv_link TO mt_links.

  ENDMETHOD.

  METHOD display_response.

    DATA lv_link TYPE ty_link.

    READ TABLE mt_links INTO lv_link WITH TABLE KEY line = sy-curow.
    IF sy-subrc = 0.
      cl_abap_browser=>show_html(
        html_string = lv_link-response
        check_html  = abap_false ).
    ENDIF.

  ENDMETHOD.

  METHOD get_servers.

    DATA ls_server TYPE ty_server.

    ls_server-server = 'GitHub (Read Access)'.
    ls_server-url    = 'https://github.com'.
    INSERT ls_server INTO TABLE rt_servers.
    ls_server-server = 'GitHub (Write Access)'.
    ls_server-url    = 'https://api.github.com'.
    INSERT ls_server INTO TABLE rt_servers.
    ls_server-server = 'GitLab'.
    ls_server-url    = 'https://gitlab.com/test'.
    INSERT ls_server INTO TABLE rt_servers.
    ls_server-server = 'Azure DevOps'.
    ls_server-url    = 'https://dev.azure.com/<org>'.
    INSERT ls_server INTO TABLE rt_servers.
    ls_server-server = 'Bitbucket'.
    ls_server-url    = 'https://bitbucket.org'.
    INSERT ls_server INTO TABLE rt_servers.
    ls_server-server = 'Assembla'.
    ls_server-url    = 'https://git.assembla.com/<org>'.
    INSERT ls_server INTO TABLE rt_servers.

    SORT rt_servers.

  ENDMETHOD.

  METHOD f4_url.

    DATA:
      ls_server  TYPE ty_server,
      lt_servers TYPE TABLE OF ty_server,
      ls_return  TYPE ddshretval,
      lt_return  TYPE TABLE OF ddshretval.

    lt_servers = get_servers( ).

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
        retfield        = 'SERVER'
        window_title    = 'Git Server Selection'
        value_org       = 'S'
      TABLES
        value_tab       = lt_servers
        return_tab      = lt_return
      EXCEPTIONS
        parameter_error = 1
        no_values_found = 2
        OTHERS          = 3.
    IF sy-subrc <> 0.
      display_error( 'Server Value Help' ).
      RETURN.
    ENDIF.

    READ TABLE lt_return INTO ls_return INDEX 1.
    IF sy-subrc = 0.
      READ TABLE lt_servers INTO ls_server WITH KEY server = ls_return-fieldval.
      IF sy-subrc = 0.
        rv_url = ls_server-url.
      ENDIF.
    ENDIF.

  ENDMETHOD.

ENDCLASS.

DATA go_report TYPE REF TO lcl_report.

INITIALIZATION.
  sc_titl1               = 'Description'.
  sc_txt1                = 'This report tests the connection from this system to a Git server'.
  sc_txt2                = 'Select or enter the URL of the Git server and run the report. You can'.
  sc_txt3                = 'test two URLs at the same time, for example, if read and write'.
  sc_txt4                = 'access require different servers.'.
  sc_titl2               = 'Git Server'.
  %_p_url1_%_app_%-text  = 'URL (Read Access)'.
  %_p_url2_%_app_%-text  = 'URL (Write Access)'.
  %_p_id_%_app_%-text    = 'SSL Client Identity'.
  sc_titl3               = 'Proxy Settings (Optional)'.
  %_p_proxy_%_app_%-text = 'Hostname/IP'.
  %_p_pport_%_app_%-text = 'Port'.
  %_p_puser_%_app_%-text = 'Username'.
  %_p_ppwd_%_app_%-text  = 'Password'.

  CREATE OBJECT go_report.

AT SELECTION-SCREEN.
  p_proxy = replace(
    val   = p_proxy
    regex = 'http(s?)://'
    with  = ''
    occ   = 1 ).

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-name = 'P_PPWD'.
      screen-invisible = 1.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_url1.
  p_url1 = go_report->f4_url( ).

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_url2.
  p_url2 = go_report->f4_url( ).

START-OF-SELECTION.
  go_report->run( p_url1 ).
  WRITE: /, '----', /.
  go_report->run( p_url2 ).

AT LINE-SELECTION.
  go_report->display_response( ).

至此 SSL证书安装算是完成了,我们开始在线安装开发版本的abapgit

    (1) 执行ZABAPGIT_STANDALONE 程序然后点击 new online

(2)   输入URL:  https://github.com/abapGit/abapGit/

  输入包名:$ABAPGIT

      如果包不存在,那么就先创建包。再创建连接,最后点击PULL

 2.2 离线安装

然后点击IMPORT ,点击PULL 即可

以上安装完成之后,那么就可以直接执行你的事务代码ZABAPGIT

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用凌鲨管理本地git仓库

把本地git仓库添加到凌鲨后&#xff0c;可以更方便的获取git仓库的信息&#xff0c;比如查看commit记录&#xff0c;统计代码提交量&#xff0c;获取远程仓库的issue等功能。 功能 查看提交/分支/标记列表 查看提交差异 查看远程仓库和相关issue 每天代码量统计 添加本地仓库…

在线yml和properties相互转换

目前搜索到的大部分代码都存在以下问题&#xff1a; 复杂结构解析丢失解析后顺序错乱 所以自己写了一个&#xff0c;经过不充分测试&#xff0c;基本满足使用。可以直接在线使用 在线地址 除了yml和properties互转之外&#xff0c;还可以生成代码、sql转json等&#xff0c;可…

NSSCTF第14页(1)

[suctf 2019]checkin 利用了几种方式&#xff0c;发现都不行 1是修改mime类型&#xff0c;2是修改php标签为js标签&#xff0c;3是修改文件后缀 在试试用配置文件来上传 发现上传.user.ini文件成功 发现上传成功 上传的png图片 访问上传路径发现可以访问&#xff0c;上马成…

「Verilog学习笔记」状态机-非重叠的序列检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 根据题意 定义一个五位的中间变量lock 每次始终上升沿来临时 判断当前寄存器的低四位新数据是否等于10111 如果等于 则下一时刻lock应被清空 否则lock等于当前的lock的低四…

windows+deepin v23 linux 双系统 安装前后 与 删除后 的硬盘efi分区情况,deepin v23 beta2的一些体验

知乎版&#xff1a;https://zhuanlan.zhihu.com/p/669429404 windows下安装deepin v23 beta2 电脑8GB内存&#xff0c;一个256GB固态硬盘&#xff0c;已经安装windows11。 安装双系统前分区情况&#xff1a;主要包含 windows EFI分区 和 系统分区&#xff0c;并预留了64GB给d…

【产品经理】AI在SaaS产品中的应用及挑战

随着ChatGPT大模型在全球的爆火&#xff0c;AI迅速在各个行业内&#xff0c;助力于各行业的效率提升。而SaaS领域&#xff0c;AI同样也大有可为。 AI&#xff08;人工智能&#xff0c;Artificial Intelligence的缩写&#xff09;近一年来一直处于舆论风口&#xff0c;随着ChatG…

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满&#xff0c;查服务器突然发现&#xff0c;日志全部打印到了/tmp/tomcat.xxx.port目录下&#xff0c;后来对应操作时间&#xff0c;和nacos修改配置是同一时间发生的&#xff0c;但是疑惑的点是&#xff0c;nacos配置变更为什么会引起logback的…

Git 是一种分布式版本控制系统常用指令

Git 是一种分布式版本控制系统&#xff0c;用于跟踪文件的变化并协同多人在同一个项目中进行开发。以下是一些常用的 Git 指令和它们的使用介绍&#xff1a; 1. 初始化一个新仓库 git init 用途&#xff1a;在当前目录初始化一个新的 Git 仓库。使用&#xff1a;在项目根目录执…

BLIoTLink软网关,一键解决OT层与IT层的通信

在工业自动化领域&#xff0c;协议转换一直是一个重要的问题。不同的设备、系统往往使用不同的通信协议&#xff0c;这给数据采集、设备接入等带来很大的困扰。为了解决这个问题&#xff0c;各种协议转换软件应运而生。其中&#xff0c;BLIoTLink作为一款功能强大的嵌入式工业协…

动态规划:解决复杂问题的利器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

量子计算:探索未来的计算技术

量子计算:探索未来的计算技术 引言 在过去的几十年里,我们见证了计算机技术从简单的计算和存储发展到复杂的数据处理和人工智能的飞速进步。然而,随着我们进一步探索科技的前沿,传统的计算方法开始显示出其局限性。在这种情况下,量子计算——一种基于量子力学原理的新型计…

一文读懂Asyncio

什么是Asyncio asyncio 是用来编写并发代码的库&#xff0c;使用async/await语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础&#xff0c;包括网络和网站服务&#xff0c;数据库连接库&#xff0c;分布式任务队列等等。 asyncio 往往是构建 IO 密集型和高层级结构化…

值得收藏的15 个好用的 iPad/iPhone 数据恢复工具

有时您需要从移动或平板设备恢复关键数据。 许多人已经开始在手机上存储重要文件&#xff0c;因为他们可以在旅途中或现在几乎在任何情况下轻松访问数据。 不言而喻; 您只需在手机上轻轻一按&#xff0c;即可轻松访问电子邮件、共享图片、编辑和共享文档、支付账单等。一般来…

《数据结构、算法与应用C++语言描述》-优先级队列-大根堆的C++实现

优先级队列 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_25Priority queue 定义 优先级队列&#xff08;priority queue&#xff09;是0个或多个元素的集合&#xff0c;每个元素都有一个优先权或值&#xff0c;对优先级队列执行…

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合&#xff0c;为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞&#xff0c;未经身份认证的攻击者可上传恶意的raq文件…

【前端系列】前端存档术之keep-alive

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Kubernetes技术与架构-安全性

本文主要从不同层面与多个维度描述Kubernetes技术与架构的安全性。 云原生的安全性 从系统分层架构的角度分析&#xff0c;自底向上&#xff0c;云原生的安全性主要包括云、集群、容器以及代码四个层面&#xff0c;简称云原生4C安全&#xff0c;其架构图如下所示&#xff1a;…

万宾科技水环境综合治理监测系统的融合与应用

随着社会经济的快速发展&#xff0c;我国的水环境污染问题日益凸显&#xff0c;这不仅对生态环境造成了严重破坏&#xff0c;也严重威胁到人民群众的健康和生活质量。为了解决这一问题&#xff0c;城市生命线与水环境综合治理监测系统应运而生&#xff0c;二者的结合将为水环境…

【Linux】Linux中git的基本使用(三板斧)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …