I have previously posted three ABAP related articles:

1. Jerry’s ABAP, Java and JavaScript stew

This article contains some insights from my years of working with ABAP, Java and JavaScript in SAP Chengdu Research Institute: a horizontal comparison of some specific technical points in the three languages. Just to name a few:

  • ABAP Load Vs Java Byte code

  • Weak Reference comparison of ABAP and Java

  • ABAP and Java garbage collection comparison

  • ADBC and JDBC

  • Simulate closure/Keriification/dynamic proxy /Spring dependency injection with ABAP

2. What should ABAP developers learn in the future

This article contains some of my personal thoughts on how ABAP developers can stay competitive.

3. Jerry’s 2017 May Day holiday: ABAP implementation of eight classical sorting algorithms


This article is a collection of technical sharing articles I’ve written in the past about pure ABAP. Some of the articles included in this collection are my study notes on the new ABAP knowledge, some thoughts on solving some specific problems, and some articles on how I use ABAP to improve my work efficiency.

There are 59 articles in all.

1. A real example:how to leverage ABAP breakpoint with type “Exception”

This paper introduces a specific application of this type of breakpoint in debugging.

https://blogs.sap.com/2013/11/07/a-real-example-how-to-leverage-abap-breakpoint-with-type-exception/

2. Six kinds of debugging tips to find the source code where the message is raised

The application scenario of the article I wrote in 2013 was that you encountered an error message in SAPGUI and you wanted to know which line of code threw the error message?

The article describes six different approaches. I personally think having the flexibility to use these methods is useful not only for troubleshooting in SAPGUI environments, but also in Web environments such as Fiori or WebClient UI.

Often some friends reflect that CRM middleware reported a lot of error information is not particularly useful, after reading still do not know where to start to avoid. I usually deal with this problem is through the method introduced in this paper to find the specific which one line of code that an error message, and then check logic in general can find nearby, because almost all these error messages are thrown in the inspection after the failure of the ELSE branch, through logic code through reading I can learn the correct logic should be how to, And then you can do the corresponding processing.

https://blogs.sap.com/2013/11/15/six-kinds-of-debugging-tips-to-find-the-source-code-where-the-message-is-raised/

3. Single step debugging on Macro

Single step debugging of ABAP macros.

Macros in many programming languages are impossible to step through. We have SAPGUI to thank for providing macro single-step debugging at the tool level.

https://blogs.sap.com/2013/11/17/single-step-debugging-on-macro/

4. Have fun with system log — Your debugging activity is being recorded by system

SAP does not recommend modifying data directly in the production system through debugging or changing the execution flow of the program through Shift+F12 in the debugger as this may cause inconsistencies in the production system or errors in the program execution. We can’t take the chance that we’re quietly changing the value of a variable in the debugger and no one will know. All of this is recorded in the system log:

https://blogs.sap.com/2013/11/20/have-fun-with-system-log-your-debugging-activity-is-being-recorded-by-system/

5. Four different TEST ISOLATION techniques to build your ABAP unit test

Tips and methodology for designing and implementing ABAP unit tests. SAP standard development has strict requirements for unit testing of new functional code.

https://blogs.sap.com/2013/11/21/four-different-test-isolation-techniques-to-build-your-abap-unit-test/

6. A compare tool: Download and analyze the runtime performance result from SAT

I wrote my own tool for SAP internal projects. For example, I executed the same code with SAT in two systems HN1 and Q2U respectively, and I want to compare the performance of the same code execution in the two systems side by side. The standard transaction code SAT only provides an export function, but there is no import and compare function, so I wrote one myself.

https://blogs.sap.com/2013/11/21/a-compare-tool-download-and-analyze-the-runtime-performance-result-from-sat/

7. ABAP Mesh in 740: Connect your internal table as BO node association

Study notes for ABAP 740’s new syntax, not encountered in the actual project.

https://blogs.sap.com/2013/12/06/abap-mesh-in-740-connect-your-internal-table-as-bo-node-association/

8. New Open SQL Enhancement in 740

ABAP 740 Open SQL

https://blogs.sap.com/2013/12/06/new-open-sql-enhancement-in-740/

9. An example of AMDP( ABAP Managed Database Procedure ) in 740

ABAP stored procedures used this technique in the prototype development mentioned in my public account article.

https://blogs.sap.com/2013/12/10/an-example-of-amdp-abap-managed-database-procedure-in-740/

10. A small tip to find all classes which are registered to A given event — And how I find this tip via SM50

Tip, alternative use of transaction code SM50:

https://blogs.sap.com/2013/12/10/a-small-tip-to-find-all-classes-which-are-registered-to-a-given-event-and-how-i-find-th is-tip-via-sm50/

11. ABAP Class documentation generator

How to automatically generate a document for ABAP class. Click the button in SAPGUI to see the generated document:

https://blogs.sap.com/2013/12/12/class-documentation-generator/

12. ABAP static analysis tool SQF

Transaction code SQF introduction, powerful static code analysis tool

https://blogs.sap.com/2013/12/23/abap-static-analysis-tool-sqf/

13. A small tip of class cl_system_transaction_state

Cl_system_transaction_state

https://blogs.sap.com/2014/01/03/a-small-tip-of-class-clsystemtransactionstate/

14. A small tip to get a list of changed objects at the given time period

Productivity tip: I often need to quickly find out which ABAP code I changed during a given period of time when my work needs to be done.

https://blogs.sap.com/2014/02/07/a-small-tip-to-get-a-list-of-changed-objects-at-the-given-time-period/

15. Use report RSDEPEND to analyze ABAP load dependencies

This section introduces the ABAP load dependency management principle with the help of standard Report RSDEPEND

Why does the following program get this strange error message when checking syntax?

https://blogs.sap.com/2014/02/07/use-report-rsdepend-to-analyze-abap-load-dependencies/

16. Generate QRCode (QRCode) with ABAP

https://blogs.sap.com/2014/02/24/%E7%94%A8abap-%E7%94%9F%E6%88%90%E4%BA%8C%E7%BB%B4%E7%A0%81/

17. Introduction to ABAP Dynamic Type Creation

I wrote a Tool to dynamically create new data types at run time (RTTC Tool) for internal Tool development.

https://blogs.sap.com/2014/02/28/a-handy-rttc-tool/

18. How to add a view into favourite

How do I add views to SAPGUI favorites

https://blogs.sap.com/2014/03/06/how-to-add-a-view-into-favourite/

19. General properties of ABAP Classes / Interfaces

Introduce these CCDEF, CCIMP, CCMAC, etc.

https://blogs.sap.com/2014/03/14/general-properties-of-abap-classes-interfaces/

20. A small tip of viewing RAWSTRING field in SE16

The contents of RAWSTRING fields cannot be viewed directly in transaction code SE16.

https://blogs.sap.com/2014/03/25/a-small-tip-of-viewing-rawstring-field-in-se16/

21. Favorite List Management Tool

Favorites management tool in SAPGUI, I need this feature but SAPGUI does not provide it, so I had to write one myself.

https://blogs.sap.com/2014/04/24/favorite-list-management-tool/

22. Step by step to create, consume and trace web service in ABAP system

How to create, consume, and monitor Web Services in ABAP

https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/

23. Learn more detail about Standard logon procedure

Describes some of the details of the login process.

https://blogs.sap.com/2014/05/21/learn-more-detail-about-standard-logon-procedure/

24. Manipulate Docx document with ABAP

Edit Word documents using ABAP

https://blogs.sap.com/2014/05/28/manipulate-docx-document-with-abap/

25. Create word attachment which consumes external web service

Consuming Web Services using Word documents:

https://blogs.sap.com/2014/06/05/create-word-attachment-which-consumes-external-web-service/

26. One approach to trace a dedicated workprocess

Report RSTRC000

https://blogs.sap.com/2014/07/08/one-approach-to-trace-a-dedicated-workprocess/

27. An issue caused by implicit conversion during RFC call

Blood case caused by writing 15 as ’15’ :

https://blogs.sap.com/2014/08/09/an-issue-caused-by-implicit-conversion-during-rfc-call/

28. An example to help you understand how does ADT work

ABAP in Eclipse foreground Java code and background ABAP Server interaction principle

https://blogs.sap.com/2014/08/12/an-example-to-help-you-understand-how-does-adt-work/

29. A Small tip to get all transparent tables used in ABAP code

Tip: How do I get a list of all Transparent tables used in ABAP code

https://blogs.sap.com/2015/06/15/a-small-tip-to-get-all-transparent-tables-used-in-abap-code/

30. Useful tips regarding ABAP code inspector that you may not know

The ABAP Code Inspector also recommends that ABAP developers browse this article to learn about these hidden features

https://blogs.sap.com/2015/06/15/useful-tips-regarding-abap-code-inspector-that-you-may-not-know/

31. Do SAT trace on applications which could not be launched by SAT

Use transaction code SAT to monitor the performance of UI applications

This is a powerful feature THAT I really like, and performance monitoring is just one of its uses. Another use introduced in this article is when I get an unfamiliar UI application, whether it is Fiori, C4C UI or CRM WebClient UI. Suppose I need to know what ABAP code is executed in an operation background, but I don’t know anything about the background implementation of the application. At this point, I can use SAT to run the UI application once, so the code executed in the background is faithfully recorded by SAT, which is very convenient for me to study. Here’s an example:

This technique has helped me successfully complete many research tasks assigned to me.

https://blogs.sap.com/2015/07/11/do-sat-trace-on-applications-which-could-not-be-launched-by-sat/

32. ABAP keyword syntax diagram

Describes syntax diagrams in the ABAP help document

https://blogs.sap.com/2015/09/10/abap-keyword-syntax-diagram/

33. Step by Step to generate ABAP code automatically using Code Composer

This section describes the concepts of ABAP Code Composer

https://blogs.sap.com/2015/09/11/step-by-step-to-generate-abap-code-automatically-using-code-composer/

34. One order document application log read optimization

A case of API performance optimization, performance comparison before and after optimization:

https://blogs.sap.com/2015/12/12/one-order-document-application-log-read-optimization/

35. A simple performance comparison against different types of internal tables

A simple performance measure: compare read and write performance of standard, ordered, and hash tables

https://blogs.sap.com/2015/12/19/a-simple-performance-comparison-against-different-types-of-internal-tables/

36. An ABAP tool to get ABAP source codes line number

Count the total lines of ABAP code for a specified condition, such as the total lines of all ABAP code under a Package or a function group, as shown below:

https://blogs.sap.com/2016/04/03/an-abap-tool-to-get-abap-source-codes-line-number/

37. Three ways to achieve conditional break point in your ABAP program

There are three ways to implement ABAP conditional breakpoints: this is a question from SAP colleagues in Chengdu. The requirement is that breakpoints are only triggered when certain conditions are met.

https://blogs.sap.com/2016/05/26/three-ways-to-achieve-conditional-break-point-in-your-abap-program/

38. Some more technical details about SAP note

SAP note is familiar to every SAP practitioner. This article covers some of the technical details behind SAP Note and how to develop gadgets to use SAP Note more efficiently.

https://blogs.sap.com/2016/06/19/some-more-technical-details-about-sap-note/

39. Display content in table DDLOG

How do I access a field of type LRAW through code

https://blogs.sap.com/2016/06/22/display-content-in-table-ddlog/

40. An example of Database deadlock in SAP table

SAP ABAP Developer interview question: Write ABAP code with deadlocks. Before you look at the code, do you have any ideas?

https://blogs.sap.com/2016/06/27/an-example-of-database-deadlock-in-sap-table/

41. ABAP development interview questions

Name the output of the following four print statements.

https://blogs.sap.com/2016/11/02/can-you-answer-this-simple-question-regarding-conversion-rule-correctly-without-hesitat ion/

42. Two specific use cases of ABAP debug scripts

Use ABAP debugger script to view BOL entity content in an efficient way:https://blogs.sap.com/2016/11/03/use-abap-debugger-script-to-view-bol-entity-content-in-an-efficient-way/

Use ABAP debugger script to view dynamic query service selection parameter in an efficient way: https://blogs.sap.com/2016/11/04/use-abap-debugger-script-to-view-dynamic-query-service-selection-parameter-in-an-effici ent-way/

43. CL_OBJECT_COLLECTION, iterator and Polymorphism

At the end of the article other netizens reply there are dry goods.

https://blogs.sap.com/2016/11/05/cl_object_collection-iterator-and-polymorphism/

44. Use ABAP multi-” Thread “programming to deal with a real performance issue

Parallel Programming for ABAP

https://blogs.sap.com/2017/02/10/use-abap-multi-thread-programming-to-deal-with-a-real-performance-issue/

45. Some small ABAP tools I write to improve daily work efficiency or just for fun

Some of the ABAP gadgets I’ve written are for productivity and some are for pranks.

For example, print the number of times a user has used transaction codes in the past time period, in descending order.

For example, in March 2017, I used transaction code SAT 692 times, which makes it easy to recall that I was dealing with a performance-related ticket this month last year.

Or fill in a dialog box in a SAPGUI window advising a colleague to get up and take a break while he or she concentrates on debugging code?

https://blogs.sap.com/2017/03/25/some-small-abap-tools-i-write-to-improve-daily-work-efficiency-or-just-for-fun/

46. There are three groups of keywords in ABAP

  • IS BOUND

  • IS INITIAL

  • IS ASSIGNED

https://blogs.sap.com/2017/04/01/is-bound-is-initial-and-is-assigned/

47. Implement Custom Syntax Check in SAP GUI

Describes how to enhance syntax checking in SAPGUI. I made an example that enforces the method source code to be no more than 100 lines per class. When you click the SAPGUI syntax check button or the shortcut Ctrl+F2, you will see my custom error message once you exceed it:

https://blogs.sap.com/2017/04/13/implement-custom-syntax-check-in-sap-gui/

48. Bitwise operation ( OR, AND, XOR ) on ABAP Integer

ABAP bit operations, simulated with ABAP inner tables, can only be used for educational purposes because of poor performance. However, the development of ABAP applications rarely requires the kind of bit-manipulation functionality that Java supports.

https://blogs.sap.com/2017/04/28/bitwise-operation-or-and-xor-on-abap-integer/

49. An interview question: Compare two integers without +,-,*,/ or > and <

A method that implements the size comparison of two integers requires that no addition, subtraction, multiplication, or division or size comparison symbols be used within the method body.

https://blogs.sap.com/2017/04/29/an-interview-question-compare-two-integers-without-or-and/

50. Replicate ABAP database table definition to PostgreSQL

Import ABAP table definitions into the PostgreSQL database

https://blogs.sap.com/2017/05/08/replicate-abap-database-table-definition-to-postgresql/

51. Locators in ABAP Open SQL

A new way to read database table data using a Locator

This article describes where Locator is used and how it compares with traditional OPEN SQL.

https://blogs.sap.com/2017/05/11/locators-in-abap-open-sql/

52. Export ABAP transparent table content to PostgreSQL table

Import the contents of ABAP tables into the PostgreSQL database

https://blogs.sap.com/2017/05/12/export-abap-transparent-table-content-to-postgresql-table/

53. CL_ABAP_CORRESPONDING, CL_JAVA_CORRESPONDING and CL_JS_CORRESPONDING

CL_ABAP_CORRESPONDING was a standard ABAP tool class. The last two were rewritten by Java and JavaScript with reference to its ideas. ABAPer could only focus on ABAP tool classes.

https://blogs.sap.com/2017/05/14/cl_abap_corresponding-cl_java_corresponding-and-cl_js_corresponding/

54.  A real case to use REDUCE to finish a task in daily work

ABAP 740 provides a new keyword REDUCE that I’ve been trying to use at work. This article introduces an example.

https://blogs.sap.com/2017/05/14/a-real-case-to-use-reduce-to-finish-a-task-in-daily-work/

55. Use ABAP Channels to build a trace tool used in my daily work

There are some introductions of ABAP Channel technology on SAP Community, and this article is one of my attempts to improve my work efficiency by using this technology.

There are a variety of trace tools in Netweaver. One common feature of these trace tools is that you need to first open the working Trace state, then run the application in the Trace state, close the trace after the application is finished, and then view the trace file. Typical examples are transaction codes ST05, ST12 and SAT.

I think it’s too much trouble. Is it possible that the trace will be displayed in the browser in real time while the application is running? You can! Just use ABAP Channel.

https://blogs.sap.com/2017/05/16/use-abap-channels-to-build-a-trace-tool-used-in-my-daily-work/

56. A list of some “magic” tables and reports I collect in my daily work for ABAP development

Some ABAP widgets

https://blogs.sap.com/2017/06/18/a-list-of-some-magic-tables-and-reports-i-collect-in-my-daily-work-for-abap-development /

57. A Github repository issue tool developed by ABAP

Write your own gadget. Github’s built-in warehouse backup tool is too difficult for me to use, so I wrote one by myself using ABAP, which can meet my needs: to back up the issues in the personal warehouse on the public network to the ABAP server.

https://blogs.sap.com/2017/07/14/a-github-repository-issue-tool-developed-by-abap/

58. Regarding cookie manipulation in CL_HTTP_CLIENT to avoid CSRF token validation failure issue

A cookie trap to avoid using CL_HTTP_CLIENT:

https://blogs.sap.com/2017/08/04/regarding-cookie-manipulation-in-cl_http_client-to-avoid-csrf-token-validation-failure- issue/

59. Just for fun — Implement a + B using pure bitwise operation in ABAP

Add two integers using pure bit operations in ABAP

https://blogs.sap.com/2017/10/13/just-for-fun-implement-a-b-using-pure-bitwise-operation-in-abap/

For more of Jerry’s original technical articles, please follow the public account “Wang Zixi” or scan the following QR code: