[ABAP] ALV column header

DATA: o_salv TYPE REF TO cl_salv_table.

cl_salv_table=>factory( IMPORTING r_salv_table = o_salv
                        CHANGING  t_table      = l_lines ).

LOOP AT o_salv->get_columns( )->get( ) REFERENCE INTO DATA(l_column).
  DATA(lo_column) = CAST cl_salv_column( l_column->r_column ).
  lo_column->set_fixed_header_text( 'L' ).
ENDLOOP.

o_salv->get_columns( )->get_column( 'TEST1' )->set_long_text( 'Test1 Header' ).
o_salv->get_columns( )->get_column( 'TEST2' )->set_long_text( 'Test2 Header' ).

[Hardware] ASUS TUF GAMING B550M-PLUS and RTL8125B Realtek

Just switched some hardware parts in my main PC:

I moved from Intel to an AMD build. I kept my boot disk with Linux Mint 20 and everything was running out of the box, except there was no ethernet connection available. The RTL8125B Realtek network card is not yet supported on a Kernel < 5.9. Since I’m running Kernel 5.6.14, I had to manual install it.

Go to: https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software

Download the “2.5G Ethernet LINUX driver r8125 for kernel up to 5.6”, untar and follow the installation instructions from the README. In fact you only have to run

sudo ./autorun.sh
#check with
lsmod | grep r8125
ifconfig -a

[Fiori] Debug standard Fiori App

When opening the Dev-Tools for a SAP standard Fiori App, it will look like this:

You won’t see any controller.js to debug.
What to do? Close the Debugger-Tools and press CTRL+ALT+SHIFT+P

Check the Checkbox and reload the app.

It reloads with a new URL parameter and if you open the Dev-Tools, you will now see the controller.js.

[HR] Infotype – add PBO or PAI logic

There are many ways to add custom logic when processing an Infotype. Here are just a few:

SMOD
PBAS0001
PBAS0002

ZXPADU01 – when an infotype is called
ZXPADU02 – when an action is performed on an infotype

https://regotz.jimdofree.com/abap/dynpro/infotypen-pai-pbo/

BAdI’s

  • HRPAD00INFTY (method IN_UPDATE) is called by the old infotype framework (PA30, SAP50UPR)
  • HRPAD00INFTYDB (method UPDATE_DB) is called in the decoupled infotype framework

BAdI: HRPAD00INFTY – Verbucher / Infotyp-Pflege

This image has an empty alt attribute; its file name is image-1.png
This image has an empty alt attribute; its file name is image-2.png
Interface: IF_EX_HRPAD00INFTY

BAdI: HRPAD00INFTYDB – HR: Stammdaten, Infotype DB Update Logik

“The BAdI is called, after the decoupled infotype framework writes the infotype data to the database. This is done during method FLUSH.”
Note: The Infotypes 2000-2999 are not decoupled yet! More here and here.

IF_EX_HRPAD00INFTYBL
IF_EX_HRPAD00INFTYDB

Megarac SP Gui / IPMI

In meinem NAS nutze ich seit vielen Jahren als Motherboard ein ASRock C2550D4I mit einer recht stromsparsamen on-Board CPU und einer BMC/IPMI Schnittstelle, welche Fernwartung über einen separaten LAN Port möglich macht.

BMC = Baseboard Management Controllers
IPMI = Intelligence Platform Management Interface

Bei einem BMC Update hat sich leider die WebGui verabschiedet und ich musste mir die Sache auf der Konsole anschauen. Dafür habe ich IPMITOOL installiert und verwendet. Dabei stellte sich heraus, dass lediglich die Netzwerkeinstellungen verloren gegangen sind.

Hier einige hilfreiche Befehle im Umgang mit dem IPMITOOL, welche mir geholfen haben. Über diesen Weg lässt sich ebenfalls das Passwort des Admin Users zurücksetzen.

# install 
sudo apt install ipmitool

# display sensor & network settings
sudo ipmitool sensor
sudo ipmitool lan print 1

#set network settings
sudo ipmitool lan set 1 ipsrc static
sudo ipmitool lan set 1 ipaddr 192.168.178.3
sudo ipmitool lan set 1 defgw ipaddr 192.168.178.1


# Reset password
# https://support.oneidentity.com/de-de/kb/261220/reset-the-bmc-ipmi-password
sudo ipmitool user list 1
ID  Name	     Callin  Link Auth	IPMI Msg   Channel Priv Limit
1                    false   false      true       ADMINISTRATOR
2   admin            true    true       true       ADMINISTRATOR
3                    true    false      false      NO ACCESS
4                    true    false      false      NO ACCESS
5                    true    false      false      NO ACCESS
6                    true    false      false      NO ACCESS
7                    true    false      false      NO ACCESS
8                    true    false      false      NO ACCESS
9                    true    false      false      NO ACCESS
10                   true    false      false      NO ACCESS
sudo ipmitool user set password 2
Password for user 2: 
Password for user 2: 
Set User Password command successful (user 2)


# IPMI reseten
# https://www.thomas-krenn.com/de/wiki/IPMI_BMC_reset_bei_IPMI_Problemen
sudo ipmitool mc reset cold

# Wenn das nicht hilft, ggf. hier schauen:
# https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000CrKRCA0

[HR] Abrechnungsergebnisse lesen

Reports:

RPCLSTRD – Anzeige des Clusters RD (Abrechnungsergebnisse Deutschland), Tcode: PC_PAYRESULT
H99_DISPLAY_PAYRESULT – Anzeigen von Abrechnungsergebnissen

Abrechnungsergebnistabelle:

Eine sehr schöne Übersicht über die Tabellen: https://l3consulting.de/die-tabellen-im-abrechnungscluster-des-sap-hcm-verstehen/
Die Tabelle RT enthält die Ergebnislohnarten der ausgewählten Abrechnungsperiode. (RT_ = komprimierte Darstellung)

Funktionsbausteine:

HR_GET_PAYROLL_RESULTS – Lesen von Abrechnungsergebnissen für Monats- und Jahresreports
PYXX_READ_PAYROLL_RESULT – Generischer Import von Abrechnungsergebnissen
HRCM_PAYROLL_RESULTS_GET – Abrechnungsdaten einer Person ermitteln

Hinweise zu Bausteinen: https://blog.hr-manager.de/2011/09/abap-abrechnungsergebnisse-lesen-per.html

Logische Datenbank:

Eine weitere Möglichkeit ist die Nutzung der logischen Datenbank PNP. Die Verwendung logischer Datenbanken ist jedoch obsolet und sollten daher nicht mehr verwendet werden.

*&---------------------------------------------------------------------*
*& Report  ZGETPAYROLL
*& Eigenschaften: Selektionsbildvariante 900, HR-Reportklasse PY_DEF.
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZGETPAYROLL.

TABLES: PERNR, PYORGSCREEN, PYTIMESCREEN.

INFOTYPES: 0002.

NODES: PAYROLL TYPE PAYDE_RESULT.

DATA: WA_RT TYPE PC207.

START-OF-SELECTION.

GET PERNR.

RP_PROVIDE_FROM_LAST P0002 SPACE PN-BEGDA PN-ENDDA.

WRITE:/ PERNR-PERNR, P0002-VORNA, P0002-NACHN.

GET PAYROLL.

  LOOP AT PAYROLL-INTER-RT INTO WA_RT.
    WRITE:/ WA_RT-LGART, WA_RT-BETRG.
  ENDLOOP.

END-OF-SELECTION.

Oder in Kombination mit einem Fuba:

*&---------------------------------------------------------------------*
*& Report  ZGETPAYROLL
*& Eigenschaften: HR-Reportklasse __M00001.
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZGETPAYROLL.

TABLES: pernr.               "Necessary for get pernr

INFOTYPES: 0001,             "Organisatorische Zuord
           0002,             "Daten zur Person
           0006,             "Anschrift
           0057.             "Mitgliedschaften

DATA: l_payroll_result TYPE payat_result OCCURS 0 WITH HEADER LINE.


START-OF-SELECTION.

GET pernr.

rp_provide_from_last p0001 '' pn-begda pn-endda.

CALL FUNCTION 'HR_GET_PAYROLL_RESULTS'
    EXPORTING
      pernr                         = pernr-pernr
      permo                         = pn-permo
      pabrj                         = pn-pabrj
      pabrp                         = pn-pabrp
      actual                        = space         "X actual, ' ' retro-differences
      waers                         = 'EUR'
    TABLES
      result_tab                    = l_payroll_result
    EXCEPTIONS
      no_results                    = 0
      wrong_structure_of_result_tab = 2
      OTHERS                        = 4.
  IF sy-subrc NE 0.
    RETURN. "nächste Pernr
  ENDIF.

[ABAP] Download internal table as TXT or CSV

DATA: l_output_line    TYPE ty_output,
      l_output_lines   TYPE tt_output,  
      l_csv_output     TYPE truxs_t_text_data,
      l_txt_output     TYPE TABLE OF string,

PARAMETERS: p_alv   RADIOBUTTON GROUP rb1 DEFAULT 'X' USER-COMMAND radio,
            p_csv   RADIOBUTTON GROUP rb1,
            p_flcsv TYPE rlgrap-filename DEFAULT 'c:\temp\file.csv',
            p_txt   RADIOBUTTON GROUP rb1,
            p_fltxt TYPE rlgrap-filename DEFAULT 'c:\temp\file.txt'.

" fill table l_output_lines

  IF p_csv = abap_true.

    CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
      TABLES
        i_tab_sap_data       = l_output_lines
      CHANGING
        i_tab_converted_data = l_csv_output.

    TRY.
        cl_gui_frontend_services=>gui_download( EXPORTING filename = CONV #( p_flcsv )
                                                          filetype = 'ASC'
                                                CHANGING  data_tab = l_csv_output ).  " Übergabetabelle
      CATCH cx_root INTO DATA(e_text).
        MESSAGE e_text->get_text( ) TYPE 'I'.
    ENDTRY.


  ELSEIF p_txt = abap_true.

    LOOP AT l_output_lines INTO l_output_line.
      CALL FUNCTION 'SO_STRUCT_TO_CHAR'
        EXPORTING
          ip_struct = l_output_line
        IMPORTING
          ep_string = l_string.
      APPEND l_string TO l_txt_output.
    ENDLOOP.

    TRY.
        cl_gui_frontend_services=>gui_download( EXPORTING filename = CONV #( p_fltxt )
                                                          filetype = 'ASC'
                                                CHANGING  data_tab = l_txt_output ).  " Übergabetabelle
      CATCH cx_root INTO e_text.
        MESSAGE e_text->get_text( ) TYPE 'I'.
    ENDTRY.

  ENDIF.

[SAP] Install SAP Gui for Java 7.50 on Linux Mint 20

Download

First have a look at the Requirements and FAQ.
Find the download link to the SAP Support Portal here. You will need a valid S-User and download permissions.

If you are not able to download the installer in the Support Portal, there is a little workaround. Both, the installer for SAP Gui for Windows and SAP Gui for Java are also delivered with the AS ABAP 752 SP04, developer edition:

“The actual download (in the form of several .rar files), along with more information is available from the SAP Community Trials and Downloads page. Search for “7.52 SP04″ for convenience.”

You will have to download all 11 .rar files (about 14,6GB). When unziping, you’ll find a folder called client (about 1,2GB) containing both installers.

Installation

Since SAP Gui 7.50 Rev 5, Oracles JDKs is not necessary to run SAP Gui for Java, instead you are able to use OpenJDK. Read more about it here. And since version 7.50 Rev 8 the installer includes SapMachine and OpenJFX. Read more about it here. In this case, you don’t even have to install OpenJKD and OpenJFX by yourself and don’t have specify the module path, because it comes containerized within the SAP Gui.
So better first check the version of your downloaded gui. I’ve got SAP Gui 750 rev 5 within the AS ABAP 752 SP04. So let’s install openJDK & openJFX.

sudo apt-get install openjdk-11-jre openjfx
java --version

Finally lets install the SAP Gui:

cd JavaGUI/
java -jar PlatinGUI750_5-80002496.JAR install

The important step during the installation of SAP Gui for Java Rev 5 is to define the option for the module path. The module path hast to point to the OpenJFX lib-path:

/usr/share/openjfx/lib

Now you should be able to run the SAP Gui on Linux Mint 20

Eclipse ADT

When using Eclipse with ADT in combination with SAP Gui for Java and receiving the following error:

"The system reqirements are not met.Could not find: javafx.propertiesin: /usr/lib/jvm/java-11-openjdk-amd64/libYour Java Virtual Machine seems not to support JavaFX, required to run the SAPGUI for Java 7.50 rev 5.Please make sure you provide a valid path to the Java FX modules during guiinstallation."

You also have to add the OpenJFX path to the eclipse.ini file. Read more about it here.

--module-path=/usr/share/openjfx/lib
--add-modules=ALL-MODULE-PATH