10

SAPGUI SQLCONSOLE Utility Hosted on github

 1 year ago
source link: https://blogs.sap.com/2023/01/11/sapgui-sqlconsole-utility-hosted-on-github/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
January 11, 2023 3 minute read

SAPGUI SQLCONSOLE Utility Hosted on github

0 5 288

This Blog post is to share a ABAP Utility Tcode YOSQL to test complex OpenSQLs from inside SAPGUI.

Most often you would use Eclipse ADT SQLCONSOLE but once in a while this will be very useful for 2 main reasons:
1. Excel download as it takes output using SALV grid
2. WITH  subqueries or CTE Common Table Expressions are fully supported

Another lateral objective is to popularize ABAPGIT a open source package I much admire. Still “open source” for on-premise but official SAP version for Cloud.

How to install my YOSQL:

This is published in github and needs you to install minimal ABAPGIT

Head over to abapGit documentation – Installation

Read only and Install only the standalone monolith version

Now visit my repository https://github.com/ojnc/yes4sql

Click on green Code button and download the zip.
yes4sql-master.zip in Downloads

Use tcode SE38 and execute ZABAPGIT_STANDALONE
Import Zip
(my zip) into staging AreaThereafter Pull the zip; this does the differential updates

How to runl my YOSQL utility:

Execute  tcode YOSQL and give pass word ojnc
Note YOSQL checks you can only do SELECT and WITH
DELETE INSERT UPDATE not allowed

For WITH  subqueries or CTEs; read
ABAP News for Release 7.51 – Common Table Expressions (CTE) in Open SQL | SAP Blogs
by Horst Keller

WITH 
  +connections AS ( 
    SELECT spfli~carrid, carrname, connid, cityfrom, cityto 
           FROM spfli 
           INNER JOIN scarr 
             ON scarr~carrid = spfli~carrid 
           WHERE spfli~carrid = 'LH' ), 
  +sum_seats AS ( 
    SELECT carrid, connid, SUM( seatsocc ) AS sum_seats 
           FROM sflight 
           WHERE sflight~carrid = 'LH' 
           GROUP BY carrid, connid ), 
  +result( name, connection, departure, arrival, occupied ) AS ( 
    SELECT carrname, c~connid, cityfrom, cityto, sum_seats 
           FROM +connections AS c 
             INNER JOIN +sum_seats AS s 
               ON c~carrid = s~carrid AND 
                  c~connid = s~connid ) 
  SELECT * 
         FROM +result 
         ORDER BY name, connection

Trick SQL for singleton count(*)

    WITH +a AS (
      SELECT
        t~formname,
        t~caption,
        d~ddtext
      FROM
        stxfadmt AS t
        INNER JOIN stxfadm AS f ON (
          t~formname = f~formname
          AND t~langu = 'E'
        )
        INNER JOIN DD07T AS d ON (
          f~formtype = d~domvalue_l
          AND d~domname = 'TDSFTYPE'
          AND d~ddlanguage = 'E'
        )
    ), 
    +result AS (
    SELECT
      COUNT(*) as kount FROM +a )
    SELECT *
      FROM +result
  WITH +a AS (
    SELECT
     COUNT(*) AS kount
    FROM
      stxfadmt )
    SELECT kount
      FROM +a

PATH EXPRESSION also works example

SELECT connid      as FlightConnectionNo,
       airpfrom    as AirportFrom,
\_sflight-fldate   as FlightDate,
\_sflight-price    as AirFare,
\_sflight-currency as LocalCurrency
 FROM DEMO_CDS_ASSOC_SPFLI
 WHERE airpfrom = 'SIN

_______________________________________________________

Second ABAP Utility is Tcode Y4SQL
This does both native and openSql
I used this a lot since 2005  in era when Opensql was not as powerful

Y4SQL needs BEGIN END to define ALV Grid as native SQL can have complex CASE and expressions besides Native SQL cannot use @DATA
People who use AMDP may find this useful

OpenSQL example

BEGIN "OPEN"
    NAME         S_CARRNAME
    CONNECTION   S_CONN_ID
    CITYFROM     S_FROM_CIT
    CITYTO       S_TO_CITY
    SEATSOCC     S_SEATSOCC "SUM SEATS
END
WITH 
  +connections AS ( 
    SELECT spfli~carrid, carrname, connid, cityfrom, cityto 
           FROM spfli 
           INNER JOIN scarr 
             ON scarr~carrid = spfli~carrid 
           WHERE spfli~carrid = 'LH' ), 
  +sum_seats AS ( 
    SELECT carrid, connid, SUM( seatsocc ) AS sum_seats 
           FROM sflight 
           WHERE sflight~carrid = 'LH' 
           GROUP BY carrid, connid ), 
  +result( name, connection, departure, arrival, occupied ) AS ( 
    SELECT carrname, c~connid, cityfrom, cityto, sum_seats 
           FROM +connections AS c 
             INNER JOIN +sum_seats AS s 
               ON c~carrid = s~carrid AND 
                  c~connid = s~connid ) 
  SELECT * 
         FROM +result 
         ORDER BY name, connection

Native Example

Native SQL with Oracle Database

begin "Tables Rows Usage Oracle Native
    tblnam      char30     "TableName
    numrows     int4       "NumRows
    avgrowlen   int4       "AvgRowLen
    lastdt      dats       "LastDate
    contflag    char1      "Type
end
             select a.table_name,
                    a.num_rows,
                    a.avg_row_len,
                    TO_CHAR(a.last_analyzed,'YYYYMMDD') As last_analyzed,
                    NVL(s.contflag,'A') as contflag
               from USER_tables a, DD02L s
              where a.table_name = s.tabname (+)
                and s.contflag not in ('S','W')
                and a.num_rows is not NULL
                and a.num_rows > 0
              order by num_rows desc, table_name

To summarize Y4SQL of 2005 was in era where OPEN SQL was “weak”
Now YOSQL is way to go with OPEN SQL very powerful

Y4SQL will be useful if you use AMDP or ECC6 with “old” ABAP version

_______________________________________________________

There have been so many SQL utilities but this new kid on the block will please!

I really look forward to your feedback and more SAP BLOGs writers sharing code via ABAPGIT.

ABAPGIT supports most of the SAP Technical objects like CDS SHLP
Full list in abapGit documentation – Supported Object Types


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK