\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Raffael Herrmann (r.herrmann)} \pdfinfo{ /Title (sap-xi-pi-po.pdf) /Creator (Cheatography) /Author (Raffael Herrmann (r.herrmann)) /Subject (SAP XI/PI/PO Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{4D4D4D} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{SAP XI/PI/PO Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Raffael Herrmann (r.herrmann)} via \textcolor{DarkBackground}{\uline{cheatography.com/60897/cs/15800/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Raffael Herrmann (r.herrmann) \\ \uline{cheatography.com/r-herrmann} \\ \uline{\seqsplit{www}.linkedin.com/in/raffael-herrmann/} \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 23rd March, 2021.\\ Updated 22nd April, 2023.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{XI/PI/PRO/CPI - CheatSheet}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{17.67cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/r-herrmann_1526967499_cpi-po-pi.jpg}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{5.0083 cm} x{12.2617 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-shopping-cart\}\} Product Overview}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{SAP~PI}} & \{\{noshy\}\}(Formerly known as: SAP XI, SAP Exchange Infrastructure); stands for {\emph{SAP Process Integration}}. \{\{nl\}\}It is a NetWeaver coponent which acts as an EAI and lets you build interfaces with mapping and routing. \tn % Row Count 8 (+ 8) % Row 1 \SetRowColor{white} {\bf{SAP~PRO}} & \{\{noshy\}\}(Formerly known as: SAP PO); stands for {\emph{SAP Process Orchestration}}.\{\{nl\}\}SAP PRO is a bundle of SAP PI, SAP BRM and SAP BPM. \tn % Row Count 13 (+ 5) % Row 2 \SetRowColor{LightBackground} {\bf{SAP~CPI}} & \{\{noshy\}\}(Formerly known as: SAP HCI, SAP HCP-IS, SAP Hana Cloud Platform Integration); stands for {\emph{SAP Cloud Platform Integration}}.\{\{nl\}\}The CPI is a cloud-based (hosted in SAP Cloud Platform) integration platform built up on the OSS Apache Camel framework. \tn % Row Count 23 (+ 10) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-unlock-alt\}\} SSL, TLS, PGP, ... (All Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to check quickly if TLS 1.2 is enabled?}}\{\{nl\}\}A good indicator is the version of the used iSaSiLk library. If version is 4.5, the PI doesn't support TLS 1.1/1.2. If iSaSiLk has version 5.104 there are good chances, that TLS 1.2 is supported (because 5.104 usually will be installed, when doing the TLS 1.2 patches).} \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to activate TLS 1.2 in AS Java?}}\{\{nl\}\}To enable TLS 1.1 and TLS 1.2 support for SAP PI (AS Java) read the contents of SAP note \{\{link="https://launchpad.support.sap.com/\#/notes/2417205"\}\}2417205\{\{/link\}\}. It contains further notes which explain to check and update TLS support.} \tn % Row Count 13 (+ 6) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to activate TLS 1.2 in AS ABAP}}\{\{nl\}\}Ensure that the used {\emph{CommonCryptoLib}} has release 8.4.3.1 or later. (Update infos in note \{\{link="https://launchpad.support.sap.com/\#/notes/1848999"\}\}1848999\{\{/link\}\}.) If you want to force TLS 1.2, read note \{\{link="https://launchpad.support.sap.com/\#/notes/2384243"\}\}2384243\{\{/link\}\}.} \tn % Row Count 20 (+ 7) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to force TLS 1.2?}}\{\{nl\}\}If your SAP PI is TLS 1.2 ready, and you want the HTTP receiver channel to use explicitly TLS 1.2, then you can add the parameter `httpsProtocols` with value `TLSv1.2` in the channels module tab. Further explanation can be found in note \{\{link="https://launchpad.support.sap.com/\#/notes/2393811"\}\}2393811\{\{/link\}\}.} \tn % Row Count 27 (+ 7) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to support ECDHE chipher suites?}}\{\{nl\}\}As explained in Note \{\{link="https://launchpad.support.sap.com/\#/notes/2538934"\}\}2538934\{\{/link\}\} none of the SAP PI/PRO releases supports any kind of ECDHE ciphersuites. Either ask the partner to allow a non-ECDHE cipher suite or use an external SSL-handler like mitmproxy (\{\{link="https://goo.gl/yemrrV"\}\}https://goo.gl/yemrrV\{\{/link\}\}) for example.} \tn % Row Count 35 (+ 8) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-unlock-alt\}\} SSL, TLS, PGP, ... (All Stacks) (cont)}} \tn % Row 5 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{What cipher suites are supported by SAP PI?}}\{\{nl\}\}The ciphersuites which are activated by default can be seen in SAP note \{\{link="https://launchpad.support.sap.com/\#/notes/2538934"\}\}2538934\{\{/link\}\}. Instructions on how to change the supported ciphersuites can be found in note \{\{link="https://launchpad.support.sap.com/\#/notes/2616983"\}\}2616983\{\{/link\}\}.} \tn % Row Count 8 (+ 8) % Row 6 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to get SSL certificate from...}}\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{HTTP;}} open the website in a browser, click the {\emph{lock}}-icon and save certificate or use the {\emph{Realcore Support Tools for SAP PI/PO}}.\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{Mail, SFTP;}} use the OpenSSL commandline utilities or the {\emph{Realcore Support Tools for SAP PI/PO}}.\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{FTPs;}} use the OpenSSL commandline utilities with command: `openssl s\_client -connect \textless{}ip-of-server\textgreater{}:\textless{}port\textgreater{} -showcerts -starttls ftp`\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{Other;}} try to use {\emph{OpenSSL}} toolset. Otherwise \{\{fa-chevron-right\}\} Google.} \tn % Row Count 20 (+ 12) % Row 7 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to convert OpenSSH key to PKCS12?}}\{\{nl\}\}To create a PKCS12 keystore from OpenSSH key, you need the OpenSSL commandline tools.\{\{nl\}\}\{\{fa-caret-right\}\} First create a certificate from the private key: `openssl req -new -x509 -key \textless{}private-key-filename\textgreater{} -days 3650 -out x509\_certificate.pem`\{\{nl\}\}\{\{fa-caret-right\}\} Now create PKCS12 from private key and certificate: `openssl pkcs12 -export -in \textless{}x509-certificate-filename\textgreater{} -inkey \textless{}private-key-filename\textgreater{} -out pkcs12\_keystore.p12`} \tn % Row Count 30 (+ 10) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-unlock-alt\}\} SSL, TLS, PGP, ... (All Stacks) (cont)}} \tn % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to update TrustedCAs?}}\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{AS Java;}} open \{\{link="/nwa/key-storage"\}\}/nwa/key-storage\{\{/link\}\}, select {\emph{TrustedCAs}} keystore and click import. After import, stop and start the affected communication channel.\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{AS ABAP;}} open transaction `STRUST` and add the certificate to the (TrustedCAs). If there's no store like that, choose SSL (anonymous/default).} \tn % Row Count 9 (+ 9) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{What is "{\emph{peer certificate rejected by chainverifier}}"-error?}}\{\{nl\}\}This error usually occurs, when at least one certificate in the chain is invalid. Keep in my, that server certificates are chained (=trusted by higher authorities). You have to import the whole chain into SAP PI!} \tn % Row Count 15 (+ 6) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{What is a "{\emph{SSL common name mismatch}}"-error?}}\{\{nl\}\}This error occurs if the value of the field `CN` (common name) doesn't match the hostname. E.g. server has a cert that matches `server.com`, but is called via IP address. Either call service with matching hostname or change the certificate on the server.} \tn % Row Count 22 (+ 7) % Row 11 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Can a SSL certificate be issued for an IP address?}}\{\{nl\}\}In theory SSL/TLS certs can be issued for IP addresses. Nevertheless this is "bad practice" and should be avoided in any case.} \tn % Row Count 26 (+ 4) % Row 12 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to set-up PGP?}}\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{Create PGP keypair;}} To create a PGP keypair you can use {\emph{Kleopatra}} which can be downloaded at \{\{link="https://gnupg.org/"\}\}https://gnupg.org/\{\{/link\}\}.\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{Save key on PI;}} the private key has to be stored in SAP PI's filesystem. The standard path is: `/usr/sap/\textless{}System ID\textgreater{}/\textless{}Instance ID\textgreater{}/sec`\{\{nl\}\}\{\{fa-caret-right\}\} {\bf{Configure bean;}} set-up the bean as described in this article: \{\{link="https://goo.gl/R325Xv"\}\}https://goo.gl/R325Xv\{\{/link\}\}} \tn % Row Count 37 (+ 11) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-unlock-alt\}\} SSL, TLS, PGP, ... (All Stacks) (cont)}} \tn % Row 13 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Common PGP errors}}\{\{nl\}\}\{\{fa-caret-right\}\} `PGP Encryption Module: Could not extract private key \seqsplit{(org.bouncycastle.openpgp.PGPException:} checksum mismatch at 0 of 20)`\{\{nl\}\}Either the password setup in the parameter `pwdOwnPrivateKey` is wrong or the key contains invalid chars. Try to set a simpler key in {\emph{Kleopatra}}, re-import the key and try again.\{\{nl\}\}\{\{fa-caret-right\}\} `\{\{lang-java\}\}PGP Encryption Module: Could not process message, Internal PGP Error \seqsplit{(org.bouncycastle.openpgp.PGPException:} exception encrypting session key)Cause: Illegal key size or default parameters`\{\{nl\}\}The JCE unlimited strength policy isn't correct. Check \{\{link="/BC/VerifyJCE"\}\}/BC/VerifyJCE\{\{/link\}\} if all is green. Otherwise fix like explained here: \{\{link="https://goo.gl/Rt3F7n"\}\}https://goo.gl/Rt3F7n\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} `You have requested an application that is currently stopped.`\{\{nl\}\}If this occurs when checking \{\{link="/BC/VerifyJCE"\}\}/BC/VerifyJCE\{\{/link\}\}, enable the application as explained in note \{\{link="https://launchpad.support.sap.com/\#/notes/2606771"\}\}2606771\{\{/link\}\}.} \tn % Row Count 22 (+ 22) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-terminal\}\} Unix 101}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Test HTTP connection;}} to test a HTTP(S) connection, use the {\emph{wget}}-tool:\{\{nl\}\}`wget http(s)://\textless{}myserver.de\textgreater{}:\textless{}port\textgreater{}/\textless{}path\textgreater{}`} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Test non-HTTP connection;}} to test a non-HTTP(S) connection, use the {\emph{telnet}}-tool:\{\{nl\}\}`telnet \textless{}myserver.de\textgreater{} \textless{}port\textgreater{}`} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Test HTTP connection via proxy;}} to test a HTTP(S) connection via proxy server, use the {\emph{wget}}-tool:\{\{nl\}\}`wget -e use\_proxy=yes -e https\_proxy=\textless{}myproxy.de\textgreater{}:\textless{}proxy-port\textgreater{} http(s)://\textless{}myserver.de\textgreater{}:\textless{}port\textgreater{}/\textless{}path\textgreater{}`} \tn % Row Count 11 (+ 5) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Test HTTP connection via proxy with auth;}} to test a HTTP(S) connection via proxy server with user authentication, use the {\emph{telnet}}-tool:\{\{nl\}\}`wget -e use\_proxy=yes -e https\_proxy=\textless{}myproxy.de\textgreater{}:\textless{}proxy-port\textgreater{} -e proxy\_user=\textless{}proxy user\textgreater{} -e proxy\_password=\textless{}proxy pass\textgreater{} http(s)://\textless{}myserver.de\textgreater{}:\textless{}port\textgreater{}/\textless{}path\textgreater{}`} \tn % Row Count 18 (+ 7) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Get SFTP-fingerprint;}} to get the server-fingerprint fo an SFTP server, use:\{\{nl\}\}`sftp -vv -oPort=\textless{}port\textgreater{} \textless{}user\textgreater{}@\textless{}myserver.de\textgreater{}`} \tn % Row Count 21 (+ 3) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Show number of cpus;}} to show used cpu and number of cores, use:\{\{nl\}\}`lscpu`} \tn % Row Count 23 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Show amount of ram;}} to show amount of ram, swap and current memory status, use:\{\{nl\}\}`cat /proc/meminfo`} \tn % Row Count 26 (+ 3) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Show disk space;}} to show used, free and total diskspace, use:\{\{nl\}\}`df -h`} \tn % Row Count 28 (+ 2) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Get SSL/TLS certificate from a FTPs server;}} to get the certificate, used by an SFTP server, use openssl toolkit:\{\{nl\}\}`openssl s\_client -connect \textless{}server ip\textgreater{}:\textless{}server port\textgreater{} -showcerts -starttls ftp`} \tn % Row Count 32 (+ 4) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-terminal\}\} Unix 101 (cont)}} \tn % Row 9 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Delete files older than X days;}} to delete files (e.g. logs) that are older than X days, use:\{\{nl\}\}`find . -name '\textless{}filename\textgreater{}' -type f -mtime +\textless{}days\textgreater{} -delete`\{\{nl\}\}Hints: {\emph{In `\textless{}filename\textgreater{}`-tag a `*` can be used as wildcard. Remove `-delete` to do a test-run without deletion.}}} \tn % Row Count 6 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{The `\textless{}` and `\textgreater{}` symbols mark placeholders. You have to replace them with the actual values of your use-case.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.0488 cm} x{2.1931 cm} x{10.6281 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-puzzle-piece\}\} API \& Automation (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{API}} & {\bf{OS*}} & {\bf{Description}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{Directory} API & JS & {\bf{What?}} The DirectoryAPI provides a set of over 50 {\emph{SOAP webservices}} to control, monitor and edit Integration Directory objects.\{\{nl\}\}{\bf{Where?}} To browse through the available APIs open the path `/wsnavigator` on your Java stack, switch to {\emph{Provider-System}} and click search. On the following wizard pages, you can retrieve the WSDL to test the API e.g. in SoapUI.\{\{nl\}\}{\bf{When?}} Use the DirAPI when you want to download payloads, get monitoring results, edit channels, ...\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} Tutorial: \{\{link="https://goo.gl/6hgNFP"\}\}https://goo.gl/6hgNFP\{\{/link\}\} \tn % Row Count 26 (+ 24) % Row 2 \SetRowColor{LightBackground} Simple Query & JS & {\bf{What?}} The Simple Query is an unofficial {\emph{HTTP/Post-based web-api}} that allows to view and download Integration Directory as also Enterprise Service Repository objects.\{\{nl\}\}{\bf{Where?}} To browse through the available methods open the path \seqsplit{`/dir/support/SimpleQuery`} for Directory objects or \seqsplit{`/rep/support/SimpleQuery`} for Respository objects on your Java stack.\{\{nl\}\}{\bf{When?}} Use the Simple Query when you want to access repository objects like Mappings, etc.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} Tutorial: \{\{link="https://goo.gl/js6Tde"\}\}https://goo.gl/js6Tde\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} To use the API, the API user needs the roles \seqsplit{`SAP\_XI\_API\_DISPLAY\_J2EE`} and \seqsplit{`SAP\_XI\_API\_DEVELOP\_J2EE`}. \tn % Row Count 55 (+ 29) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.0488 cm} x{2.1931 cm} x{10.6281 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-puzzle-piece\}\} API \& Automation (Both Stacks) (cont)}} \tn % Row 3 \SetRowColor{LightBackground} Channel Control & JS & {\bf{What?}} The ChannelAdmin-Servlet is a subset of DirAPI that allows to start and stop channels via webservice call.\{\{nl\}\}{\bf{Where?}} Call the following url: \seqsplit{`/AdapterFramework/ChannelAdminServlet}?party={\emph{\&service=}}\&channel=\textless{}name\textgreater{}\&action=\textless{}action\textgreater{}`. Replace `\textless{}name\textgreater{}` with channelname and `\textless{}action\textgreater{}` with either {\emph{start}}, {\emph{stop}} or {\emph{status}}.\{\{nl\}\}{\bf{When?}} Use this API to programmatically start/stop/query channels.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} \{\{link="https://goo.gl/o6oAdJ"\}\}https://goo.gl/o6oAdJ\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} General tutorial: \{\{link="https://goo.gl/9ML4Vn"\}\}https://goo.gl/9ML4Vn\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} Use in ABAP: To use the API, the API user needs the roles \seqsplit{`SAP\_XI\_API\_DISPLAY\_J2EE`} and \seqsplit{`SAP\_XI\_API\_DEVELOP\_J2EE`}. \tn % Row Count 31 (+ 31) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.0488 cm} x{2.1931 cm} x{10.6281 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-puzzle-piece\}\} API \& Automation (Both Stacks) (cont)}} \tn % Row 4 \SetRowColor{LightBackground} RFC via NCO/JCO & AS & {\bf{What?}} RFC isn't a real API but a protocol/technique to access the ABAP stack from outer systems. You can either call specific function modules via RFC or use generic modules like `RFC\_GET\_TABLE\_DATA` to read any table.\{\{nl\}\}{\bf{Where?}} Use a platform-specific RFC connector library like {\emph{SAP JCO}} for Java or {\emph{SAP NCO}} for .NET-applications.\{\{nl\}\}{\bf{When?}} Use it e.g. to call function or retrieve data from ABAP stack in C\# or Java applications.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} NCO tutorial: \{\{link="https://goo.gl/DhvUAM"\}\}https://goo.gl/DhvUAM\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} JCO tutorial: \{\{link="https://goo.gl/K2SyEC"\}\}https://goo.gl/K2SyEC\{\{/link\}\} \tn % Row Count 27 (+ 27) % Row 5 \SetRowColor{white} SAP Gui Script & AS & {\bf{What?}} SAP GUI scripting allows to write scripts which automate tasks in the SAP GUI. Scripts can either be written manually or recorded via a macro recorder.\{\{nl\}\}{\bf{Where?}} Open SAP Logon, log into SAP system, click {\emph{Customize Local Layout}} button (`Alt+F12`) and choose {\emph{Script Recording and Playback...}}.\{\{nl\}\}{\bf{When?}} Use it for recurring tasks in SAP GUI, which can't be handled with an Z-program or via another API.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} Base setup: \{\{link="https://goo.gl/V4dwkc"\}\}https://goo.gl/V4dwkc\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} Macro tutorial: \{\{link="https://goo.gl/eqgVwK"\}\}https://goo.gl/eqgVwK\{\{/link\}\} \tn % Row Count 53 (+ 26) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.0488 cm} x{2.1931 cm} x{10.6281 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-puzzle-piece\}\} API \& Automation (Both Stacks) (cont)}} \tn % Row 6 \SetRowColor{LightBackground} SAPSHCUT & AS & {\bf{What?}} The sapshcut.exe is commandline tool, which allows to launch SAP Gui with predefined commands and parameters.\{\{nl\}\}{\bf{Where?}} The {\emph{sapshcut.exe}} is placed in SAP Logon install dir, which is usually located in: `C:\textbackslash{}Program Files (x86)\textbackslash{}SAP\textbackslash{}FrontEnd\textbackslash{}SAPgui`. To see all parameters call sapshcut with {\emph{-?}}-parameter from commandline like: `sapshcut.exe -?`\{\{nl\}\}{\bf{When?}} Use it to launch SAP GUI with a predefined transaction and (optional) predefined input data.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} sapshcut.exe usage: \{\{link="https://goo.gl/WYWqgP"\}\}https://goo.gl/WYWqgP\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} Shortcut file tutorial: \{\{link="https://goo.gl/jM5A5y"\}\}https://goo.gl/jM5A5y\{\{/link\}\} \tn % Row Count 29 (+ 29) % Row 7 \SetRowColor{white} REST Api & CPI & {\bf{What?}} The OData-API is a REST-based web api to control, manage and edit Cloud Integration Content. It can be seen as counterpart to SAP PI's Directory API.\{\{nl\}\}{\bf{Where?}} The api endpoint itself can be reached via `https://\textless{}tmn\textgreater{}/api/v1` whereby the {\emph{\textless{}tmn\textgreater{}}} has to be replaced by your tenant's hostname. API testing can be done with REST-API tools like {\emph{Postman}}.\{\{nl\}\}{\bf{When?}} Use it to build your own monitoring or automate administation tasks.\{\{nl\}\}{\bf{More?}}\{\{nl\}\}\{\{fa-caret-right\}\} Documentation: \{\{link="https://goo.gl/t4u3dB"\}\}https://goo.gl/t4u3dB\{\{/link\}\}\{\{nl\}\}\{\{fa-caret-right\}\} API discovery tool: \{\{link="https://goo.gl/Wy8Y1B"\}\}https://goo.gl/Wy8Y1B\{\{/link\}\} \tn % Row Count 56 (+ 27) \hhline{>{\arrayrulecolor{DarkBackground}}---} \SetRowColor{LightBackground} \mymulticolumn{3}{x{17.67cm}}{{\bf{*}}OS = Operational stack; system where the API is available. JS = Java stack, AS = ABAP stack, CPI = Cloud Platform Integration.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-area-chart\}\} Monitoring (ABAP Stack)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Transaction code}} & {\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} SXMB\_MONI & Integration engine message monitoring tools. \tn % Row Count 4 (+ 3) % Row 2 \SetRowColor{LightBackground} SXI\_MONITOR & Message monitor entry. \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} SXMB\_MONI\_BPE & Integration process monitoring tools for Business Processing Engine (BPE) / ccBPM. \tn % Row Count 11 (+ 5) % Row 4 \SetRowColor{LightBackground} SXMS\_LMS\_ CONF & Configuration of user-defined custom search. \tn % Row Count 14 (+ 3) % Row 5 \SetRowColor{white} SA38 \{\{fa-chevron-right\}\} SXMS\_ EXTRACT\_ MESSAGES & (Re-)index messages after changing the user-defined custom search parameters. \tn % Row Count 18 (+ 4) % Row 6 \SetRowColor{LightBackground} SMQ1 & Monitor {\emph{outbound}} message queue. \tn % Row Count 20 (+ 2) % Row 7 \SetRowColor{white} SMQ2 & Monitor {\emph{inbound}} message queue. \tn % Row Count 22 (+ 2) % Row 8 \SetRowColor{LightBackground} SMQR & Check if queues are registered correctly. \tn % Row Count 25 (+ 3) % Row 9 \SetRowColor{white} SM58 & Transactional RFC monitoring. \tn % Row Count 27 (+ 2) % Row 10 \SetRowColor{LightBackground} SMICM & Internet Communication Manager (ICM) monitoring tools. \tn % Row Count 30 (+ 3) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-area-chart\}\} Monitoring (ABAP Stack) (cont)}} \tn % Row 11 \SetRowColor{LightBackground} SMGW & SAP Gateway monitoring tools. \tn % Row Count 2 (+ 2) % Row 12 \SetRowColor{white} ST06 & Monitoring of system resources. For checking e.g. database space. \tn % Row Count 6 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-area-chart\}\} Monitoring (Java Stack)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Path}} & {\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} /pimon \{\{fa-chevron-right\}\} Adapter Engine \{\{fa-chevron-right\}\} Message Monitor & AAE message monitoring. \tn % Row Count 5 (+ 4) % Row 2 \SetRowColor{LightBackground} /pimon \{\{fa-chevron-right\}\} Adapter Engine \{\{fa-chevron-right\}\} Communication Channel Monitor & New communication channel monitoring. \tn % Row Count 10 (+ 5) % Row 3 \SetRowColor{white} /rwb & {\emph{Classic}} runtime workbench \tn % Row Count 12 (+ 2) % Row 4 \SetRowColor{LightBackground} \seqsplit{/mdt/channelmonitorservlet} & RWB-based channel monitoring. \tn % Row Count 14 (+ 2) % Row 5 \SetRowColor{white} \seqsplit{/MessagingSystem/monitor/monitor}.jsp & "Classic" message system monitoring. \tn % Row Count 16 (+ 2) % Row 6 \SetRowColor{LightBackground} /mdt/amtServlet & Java proxy runtime (JPR) monitoring \tn % Row Count 18 (+ 2) % Row 7 \SetRowColor{white} \seqsplit{/rwb/sub/cache\_monitoring/status\_table} & Cache monitoring status. \tn % Row Count 20 (+ 2) % Row 8 \SetRowColor{LightBackground} /nwa/pi-bcgnd-proc & Show status of background jobs (e.g. clean-up, ...) \tn % Row Count 23 (+ 3) % Row 9 \SetRowColor{white} /nwa/scheduler & Java scheduler monitoring. \tn % Row Count 25 (+ 2) % Row 10 \SetRowColor{LightBackground} \seqsplit{/AdapterFramework/scheduler/scheduler}.jsp & Pt. I - Java scheduler monitoring (fallback). \tn % Row Count 28 (+ 3) % Row 11 \SetRowColor{white} \seqsplit{/AdapterFramework/scheduler/monitorscheduler}.jsp & Pt. II - Java scheduler monitoring (fallback). \tn % Row Count 31 (+ 3) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-area-chart\}\} Monitoring (Java Stack) (cont)}} \tn % Row 12 \SetRowColor{LightBackground} \seqsplit{/CPACache/monitor.jsp} & CPA cache monitoring. \tn % Row Count 2 (+ 2) % Row 13 \SetRowColor{white} \seqsplit{/MessagingSystem/monitor/locks}.jsp & View locked messages in Java stack. \tn % Row Count 4 (+ 2) % Row 14 \SetRowColor{LightBackground} /nwa/logs & AAE log viewer. \tn % Row Count 5 (+ 1) % Row 15 \SetRowColor{white} \seqsplit{/nwa/java-sys-reports} & Quick status overview of system logs. \tn % Row Count 7 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Paths on the left column, beginning with / have to be appended to the base uri of the PI/PRO system: {\emph{http(s)://\textless{}hostname\textgreater{}:\textless{}port\textgreater{}}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.1169 cm} x{9.1531 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-wrench\}\} Administration Tools (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Path}} & {\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{/rep/support/public/LockAdminService} & View and remove ESR object locks. \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} /nwa/locks & View general Java locks. \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} /useradmin & User administration (Java). \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} /nwa/identity & Identity management and user administration. \tn % Row Count 10 (+ 3) % Row 5 \SetRowColor{white} /nwa/start-stop & Starting, stopping and re-starting of Java instances, services and processes. \tn % Row Count 14 (+ 4) % Row 6 \SetRowColor{LightBackground} /nwa/key-storage & Certificate handling and keystore administration. (Java) \tn % Row Count 17 (+ 3) % Row 7 \SetRowColor{white} /nwa/destinations & Configure and administrate destionations (e.g. HTTP, IDOC, etc.) in Java stack. \tn % Row Count 21 (+ 4) % Row 8 \SetRowColor{LightBackground} /BC/VerifyJCE & Tool to check supported keysize / encryption strength of PI. Needed e.g. for PGP. \tn % Row Count 25 (+ 4) % Row 9 \SetRowColor{white} /xpi\_inspector & Powerful logging and analysis. More information in \{\{popup="https://launchpad.support.sap.com/\#/notes/0001514898"\}\}S-Note 0001514898\{\{/popup\}\}. Setup files in \{\{popup="https://launchpad.support.sap.com/\#/notes/2010715"\}\}S-Note 0002010715\{\{/popup\}\} \tn % Row Count 37 (+ 12) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.1169 cm} x{9.1531 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-wrench\}\} Administration Tools (Both Stacks) (cont)}} \tn % Row 10 \SetRowColor{LightBackground} \seqsplit{/CPACache/refresh?mode=delta} & Trigger CPA cache {\emph{delta}} refresh. \tn % Row Count 2 (+ 2) % Row 11 \SetRowColor{white} \seqsplit{/CPACache/refresh?mode=full} & Trigger CPA cache {\emph{full}} refresh. \tn % Row Count 4 (+ 2) % Row 12 \SetRowColor{LightBackground} /ftpjdbc & JDBC-, FTP- and XML-Parser test tools. Can be used to show JDBC driver version for example. (You need note \{\{link="https://launchpad.support.sap.com/\#/notes/1085539"\}\}1085539\{\{/link\}\}.) \tn % Row Count 13 (+ 9) % Row 13 \SetRowColor{white} {\bf{Transaction code}} & {\bf{Description}} \tn % Row Count 15 (+ 2) % Row 14 \SetRowColor{LightBackground} SU01 & User administration (ABAP). \tn % Row Count 17 (+ 2) % Row 15 \SetRowColor{white} STRUST & Certificate handling and keystore administration. (ABAP) \tn % Row Count 20 (+ 3) % Row 16 \SetRowColor{LightBackground} SM59 & Configure and administrate destionations (e.g. HTTP, IDOC, etc.) in ABAP stack. \tn % Row Count 24 (+ 4) % Row 17 \SetRowColor{white} SLDCHECK & Test SLD connection. \tn % Row Count 25 (+ 1) % Row 18 \SetRowColor{LightBackground} SLDAPICUST & Configure SLD connection. \tn % Row Count 27 (+ 2) % Row 19 \SetRowColor{white} SXMB\_ADM & Administration of Integration Engine. \tn % Row Count 29 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Paths on the left column, beginning with /, have to be appended to the base uri of the PI/PRO system: {\emph{http(s)://\textless{}hostname\textgreater{}:\textless{}port\textgreater{}}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.4261 cm} x{9.8439 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-lightbulb-o\}\} Useful Reports (ABAP Stack)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Transaction code}} & {\bf{Description}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{SXMS\_EXTRACT\_MESSAGES} & Re-indexes messages for user-defined custom search. \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} \seqsplit{RSXMB\_CANCEL\_NO\_COMMIT\_MSG} & Cancel non-restartable messages. \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{RSXMB\_CANCEL\_NOT\_REST\_MESSAGES} & Cancel messages which are missing their `commit`. \tn % Row Count 10 (+ 3) % Row 4 \SetRowColor{LightBackground} RSBDCOS0 & Execute a system command (OS level). \tn % Row Count 12 (+ 2) % Row 5 \SetRowColor{white} RSPARAM & Show profile parameters. \tn % Row Count 14 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{{\bf{Be aware:}} If you are not sure how the programs behave, you should open them first in `SE38` or `SE80` and check their source code. Only run them directly via `SA38` if you know, what you are doing!} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{3.1086 cm} x{14.1614 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-cloud\}\} Configure system proxy (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Stack}} & {\bf{How to}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Java & {\emph{Check:}}\{\{nl\}\}To do a quick check of the global proxy settings, open the following path on your PI/PO/PRO: \{\{link="/proxy\_settings.jsp"\}\}/proxy\_settings.jsp\{\{/link\}\}\{\{nl\}\}\{\{nl\}\}{\emph{Configure:}}\{\{nl\}\}To configure the global proxy settings, open the path: \{\{link="/nwa/middleware-setting"\}\}/nwa/middleware-settings\{\{/link\}\} \tn % Row Count 12 (+ 10) % Row 2 \SetRowColor{LightBackground} ABAP & {\emph{Check \& Configure:}}\{\{nl\}\}Open transaction `SICF` and press `F8`. Go to the {\emph{Client}}-menu entry and then select {\emph{Proxy-Settings}}. \tn % Row Count 17 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-key\}\} Readout Passwords (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Passwords from SAP PI users}}\{\{nl\}\}There is no universal way to grab passwords from PI users, but as long as there is an interface, sending data to the PI via SOAP or HTTP there is a good chance of getting the password. Even here you have two options:\{\{nl\}\}\{\{fa-caret-right\}\} Open the receiving SOAP sender channel in the Integration Directory/NWDS. Switch to the {\emph{Modules}}-tab and add a parameter to the adapter's own module with the following values: Parameter Name=`TraceHTTP`, Parameter Value=`plain`. The resulting logs with all header data can be found in \{\{link="/nwa/logs"\}\}/nwa/logs\{\{/link\}\}. Search for the `Authorization:`-header which should contain the user's password as Base64 string.\{\{nl\}\}\{\{fa-caret-right\}\} If the adaptermodule isn't available, you could trace the incoming requests with \{\{link="/xpi\_inspector"\}\}/xpi\_inspector\{\{/link\}\}. After creating the traces, search for the `Authorization`-header as explained above.} \tn % Row Count 19 (+ 19) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-life-saver\}\} NWDS Lifesaver}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Where can I get NWDS 7.5 quick and easy?}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Following the click instructions from this article: \{\{popup="https://goo.gl/RQ7fW3"\}\}https://goo.gl/RQ7fW3\{\{/popup\}\}} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{NWDS doesn't start and does not show anything while opening.}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}The NWDS can't find a suitable JRE/JDK. Add the `-vm`-paramter into the NWDS .ini-file.} \tn % Row Count 8 (+ 4) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{NWDS throws an exception during the startup and then closes again.}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}NWDS needs a 32-bit (x86) jdk. (Even if your Windows installation is x64!)} \tn % Row Count 12 (+ 4) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{NWDS complains about a wrong JDK (non-SAP) version.}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Either click "cancel" and simply ignore the error or search in OneNote for the "JVM vendor not supported" article.} \tn % Row Count 17 (+ 5) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{NWDS crashes with {\emph{"Unhandled event loop exception - Java heap space"}} exception.}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Raise the values `Xmx` and `XX:MaxPermSize` in the NWDS .ini-file which lays beneath the NWDS-/Eclipse.exe file.} \tn % Row Count 22 (+ 5) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to avoid the annoying re-login dialogs?}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Open NWDS and follow the menu path: {\emph{Preferences \{\{fa-chevron-right\}\} PI Tools Configuration \{\{fa-chevron-right\}\} Tool-Specific \{\{fa-chevron-right\}\} Session-Timeout}}. Raise the timeout value.} \tn % Row Count 28 (+ 6) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{How to set-up a Java mapping?}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Read the following step-by-step tutorial: \{\{popup="https://goo.gl/n9JCaU"\}\}https://goo.gl/n9JCaU\{\{/popup\}\}} \tn % Row Count 32 (+ 4) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-life-saver\}\} NWDS Lifesaver (cont)}} \tn % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Using "XPath containing whitespaces" doesn't work.}}} \tn \mymulticolumn{1}{x{17.67cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Be sure to just add one XPath by double-clicking. This is necessary to add the namespaces. (You can remove the added XPath after the action.)} \tn % Row Count 5 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.7353 cm} x{10.5347 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-chain\}\} Adapter Modules (Java Stack)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Module Name}} & {\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{17.67cm}}{{\bf{{\emph{General beans}}}}} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \seqsplit{DynamicConfigurationBean} & Mod.-Name: `AF\_Modules/DynamicConfigurationBean`\{\{nl\}\}{\emph{Used to append, edit or delete entries of the DynamicConfiguration section of the XI3.0 header.}} \tn % Row Count 9 (+ 7) % Row 3 \SetRowColor{white} \seqsplit{PayloadSwapBean} & Mod.-Name: `AF\_Modules/PayloadSwapBean`\{\{nl\}\}{\emph{Used to switch the main message payload with an message attachment, defined by the module's parameters.}} \tn % Row Count 16 (+ 7) % Row 4 \SetRowColor{LightBackground} PayloadZipBean & Mod.-Name: `AF\_Modules/PayloadZipBean`\{\{nl\}\}{\emph{Used to zip or unzip a payload. Whn unzipping an archive with multiple files, those will be added as attachments.}}\{\{nl\}\}\{\{fa-exclamation-circle\}\} Pro tip: {\emph{Use the undocumented parameter `gunzip` to unzip .gz (GZip) files.}} \tn % Row Count 28 (+ 12) % Row 5 \SetRowColor{white} \seqsplit{MessageTransformBean} & Mod.-Name: `AF\_Modules/MessageTransformBean`\{\{nl\}\}{\emph{Used to transform messages, change the XML, add/edit MIME-types, etc. The module can load custom/external Java tranformation classes.}} \tn % Row Count 36 (+ 8) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.7353 cm} x{10.5347 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-chain\}\} Adapter Modules (Java Stack) (cont)}} \tn % Row 6 \SetRowColor{LightBackground} \seqsplit{StrictXml2PlainBean} & Mod.-Name: `AF\_Modules/StrictXml2PlainBean`\{\{nl\}\}{\emph{Used to convert XML payload to plain(text) files. Became obsolete in some way by the `MessageTranformBean`.}} \tn % Row Count 7 (+ 7) % Row 7 \SetRowColor{white} \seqsplit{TextCodepageConversionBean} & Mod.-Name: `AF\_Modules/TextCodepageConversionBean`\{\{nl\}\}{\emph{Used to swap the code page of the main payload of the XI message and also convert its content.}} \tn % Row Count 14 (+ 7) % Row 8 \SetRowColor{LightBackground} \seqsplit{XiHeaderValidationBean} & Mod.-Name: `XiHeaderValidationBean`\{\{nl\}\}{\emph{Used to validate header information of outbound messages.}} \tn % Row Count 19 (+ 5) % Row 9 \SetRowColor{white} \seqsplit{XMLAnonymizerBean} & Mod.-Name: `AF\_Modules/XMLAnonymizerBean`\{\{nl\}\}{\emph{Used to anonymize XML elements/attributes by removing namespaces or namespace prefixes. Also the encoding attribute of the XML declaration can be changed.}} \tn % Row Count 28 (+ 9) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{{\bf{{\emph{Sync-Async-Bridge beans}}}}} \tn % Row Count 29 (+ 1) % Row 11 \SetRowColor{white} \seqsplit{RequestResponseBean} & Mod.-Name: `AF\_Modules/RequestResponseBean`\{\{nl\}\}{\emph{Used in async-sync bridges to convert the asynchronous request to a synchronous one. Used in combination with RequestOnewayBean.}} \tn % Row Count 37 (+ 8) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{6.7353 cm} x{10.5347 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-chain\}\} Adapter Modules (Java Stack) (cont)}} \tn % Row 12 \SetRowColor{LightBackground} \seqsplit{RequestOnewayBean} & Mod.-Name: `AF\_Modules/RequestOnewayBean`\{\{nl\}\}{\emph{Used in async-sync bridges to redirect a synchronous response to an sync interface.}} \tn % Row Count 6 (+ 6) % Row 13 \SetRowColor{white} \seqsplit{NotifyResponseBean} & Mod.-Name: `AF\_Modules/NotifyResponseBean`\{\{nl\}\}{\emph{Used in sync-async bridges to sent out (create) a response message.}} \tn % Row Count 11 (+ 5) % Row 14 \SetRowColor{LightBackground} \seqsplit{WaitResponseBean} & Mod.-Name: `AF\_Modules/WaitResponseBean`\{\{nl\}\}{\emph{Used in sync-async bridges to wait for a response message.}} \tn % Row Count 16 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{To develop your own module, read the section "Module Development" on this SAP page: \{\{popup="https://goo.gl/1mmyxz"\}\}https://goo.gl/1mmyxz\{\{/popup\}\} and also check the sources of this open-source project: \{\{popup="https://goo.gl/We4ghm"\}\}https://goo.gl/We4ghm\{\{/popup\}\}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-file-text-o\}\} IDOC Handling (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Path}} & {\bf{Description}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} /pimon \{\{fa-chevron-right\}\} Adapter Engine \{\{fa-chevron-right\}\} IDOC adapter monitor & IDOC message monitoring. \tn % Row Count 6 (+ 5) % Row 2 \SetRowColor{LightBackground} /pimon \{\{fa-chevron-right\}\} Adapter Engine \{\{fa-chevron-right\}\} IDOC adapter monitor \{\{fa-chevron-right\}\} Metadata monitor & Maintenance of IDOC metadata. \tn % Row Count 13 (+ 7) % Row 3 \SetRowColor{white} {\bf{Transaction code}} & {\bf{Description}} \tn % Row Count 14 (+ 1) % Row 4 \SetRowColor{LightBackground} IDX\_NOALE & Configuration (including suppression) of IDOC acknowledgements. \tn % Row Count 18 (+ 4) % Row 5 \SetRowColor{white} IDX1 & Maintenance of port configuration. \tn % Row Count 20 (+ 2) % Row 6 \SetRowColor{LightBackground} IDX2 & Maintenance of IDOC metadata. \tn % Row Count 22 (+ 2) % Row 7 \SetRowColor{white} IDX5 & IDOC message monitoring. \tn % Row Count 24 (+ 2) % Row 8 \SetRowColor{LightBackground} WE02 & Display IDOCs. \tn % Row Count 25 (+ 1) % Row 9 \SetRowColor{white} WE05 & List IDOCs. \tn % Row Count 26 (+ 1) % Row 10 \SetRowColor{LightBackground} WE20 & Configure partner agreements. (Mostly done on ERP system side, but nevertheless helpful.) \tn % Row Count 31 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{To use the Java-stack IDOC monitoring, you need either the \seqsplit{`NWA\_SUPERADMIN\_PI\_IDOC`} or the \seqsplit{`NWA\_READONLY\_PI\_IDOC`} role.\{\{nl\}\}\{\{nl\}\}\{\{fa-exclamation-circle\}\} If Java-IDOC-monitoring doesn't show any messages, you have to activate it first. Go to \{\{link="/nwa"\}\}/nwa\{\{/link\}\} \{\{fa-chevron-right\}\} Configuration \{\{fa-chevron-right\}\} Infrastructure \{\{fa-chevron-right\}\} Application Resources. Then choose "Resource adapters", then "JavaIdocAdapter" and then set the {\emph{persistance}}-property to {\emph{true}}.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-files-o\}\} IDOC Setup (Java Stack)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{SAP PI to ERP}} (configuration on PI)\{\{nl\}\}\{\{fa-caret-right\}\}Create default IDOC destination in \{\{link="/nwa"\}\}/nwa\{\{/link\}\} with name scheme `XI\_IDOC\_DEFAULT\_DEST\_\textless{}SID\textgreater{}\_\textless{}CLNT\textgreater{}`. After creating the destination check it with the {\emph{ping destination}} button.\{\{nl\}\}\{\{fa-caret-right\}\}Use this destination in the IDOC receiver channels.} \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{SAP PI to ERP}} (configuration on ERP)\{\{nl\}\}\{\{fa-caret-right\}\}Create a user for the SAP PI system, which can be used in the SAP PI destination. (As explained above.) Usually this user is named: `Z\_CPIC`.} \tn % Row Count 12 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{ERP to SAP PI}} (configuration on PI)\{\{nl\}\}\{\{fa-caret-right\}\}You have to create a IDOC-resource-adapter on PI. Go to \{\{link="/nwa"\}\}/nwa\{\{/link\}\} \{\{fa-chevron-right\}\} Configuration \{\{fa-chevron-right\}\} Infrastructure \{\{fa-chevron-right\}\} Application Resources. Click {\emph{Create New Resource}} \{\{fa-chevron-right\}\} {\emph{New Resource Adapter}}.\{\{nl\}\}\{\{fa-caret-right\}\}Choose {\emph{SAPJRATemplate}} and name the adapter like this: `inboundRA\_\textless{}SID\textgreater{}\_\textless{}CLNT\textgreater{}`.\{\{nl\}\}\{\{fa-caret-right\}\}Define the values for {\emph{ProgramId}}, {\emph{GatewayServer}} and {\emph{GatewayService}} in the resource adapter's properties. Afterwards give those values to the ERP administrator.\{\{nl\}\}\{\{fa-caret-right\}\}Use this resource adapter in the IDOC sender channels.} \tn % Row Count 27 (+ 15) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{ERP to SAP PI}} (configuration on ERP)\{\{nl\}\}\{\{fa-caret-right\}\}Open transaction `SM59` and create a destination of type `T`.\{\{nl\}\}\{\{fa-caret-right\}\}Set the fields {\emph{ProgramId}}, {\emph{GatewayServer}} and {\emph{GatewayService}} with the values received from the SAP PI administrator.\{\{nl\}\}\{\{fa-caret-right\}\}Activate {\emph{Unicode}} in the destination's settings.\{\{nl\}\}\{\{fa-caret-right\}\}Use the newly configured destination in the partner agreement/ALE configuration in transaction `WE20`.} \tn % Row Count 37 (+ 10) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-hotel\}\} Fight Timeouts (Both Stacks)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Where / What}} & {\bf{How to set?}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Soap-Adapter | Sender & Open channel. Add parameter to the adapter's own module at the module tab. If {\emph{Module Name}} is `CallSapAdapter` name the parameter `syncTimeout`. If {\emph{Module Name}} is \seqsplit{`...XISOAPAdapterBean`} then name the parameter `XI.Timeout`. Give the timeout in milliseconds as parameter value. \tn % Row Count 14 (+ 13) % Row 2 \SetRowColor{LightBackground} Soap-Adapter | Receiver & Open channel. Add parameter to the adapter's own module at the module tab. Use `XMBWS.Timeout` as parameter name and set the timeout in milliseconds as parameter value. \tn % Row Count 22 (+ 8) % Row 3 \SetRowColor{white} JDBC-Adapter | Receiver & There are two points to configure timeout: 1 - module tab, 2 - Advanced Mode parameters.\{\{nl\}\}1) Switch to module tab, add a paramter-set to the adapter's own module. Use `syncTimeout` as parameter name and set the timeout in milliseconds as parameter value.\{\{nl\}\}2) Switch to {\emph{Advanced}}-tab, check {\emph{Advanced Mode}} and add the following two parameters to the {\emph{Additional Parameters}}-table: `queryTimeout` with timeout in seconds (e.g. `600` for 10 minutes). `sqlquerytimeout` with timeout in seconds (e.g. `600` for 10 minutes). \tn % Row Count 46 (+ 24) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-hotel\}\} Fight Timeouts (Both Stacks) (cont)}} \tn % Row 4 \SetRowColor{LightBackground} Adapter Engine | Sender & Introduction: {\emph{Useful for sync ABAP proxy interface from ERP to Single Stack. SOAP Sender timeout only configures how long the sender channel will wait for response from PI pipeline. To define how long the SOAP sender channel will keep the connection to the sending ERP/ABAP proxy open, you can use the following setup.}}\{\{nl\}\}Go to \{\{link="/nwa"\}\}/nwa\{\{/link\}\} \{\{fa-chevron-right\}\} Configuration \{\{fa-chevron-right\}\} Infrastructure \{\{fa-chevron-right\}\} Java System Properties \{\{fa-chevron-right\}\} Services. Choose the entry `XPI Adapter: XI`, switch to its `Properties`-tab and set the timeout in milliseconds for the parameter named \seqsplit{`xiadapter.inbound.timeout.default`}.\{\{nl\}\}\{\{fa-exclamation-circle\}\} Be careful this affects all incoming synchronous SOAP/XI communication!\{\{nl\}\}To trigger the new parameter, restart the adapter. Therefore go to \{\{link="/nwa"\}\}/nwa\{\{/link\}\} \{\{fa-chevron-right\}\} Operations \{\{fa-chevron-right\}\} Systems \{\{fa-chevron-right\}\} Start \&Stop \{\{fa-chevron-right\}\} Java Services. Select `XPI Adapter: XI` and click {\emph{restart}}-button. \tn % Row Count 49 (+ 49) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-hotel\}\} Fight Timeouts (Both Stacks) (cont)}} \tn % Row 5 \SetRowColor{LightBackground} Integration Engine | Receiver & Introduction: {\emph{If you're sending data from Integration Engine or ERP, etc. systems, usually the default ICM timeout is used. You have two options to raise this timeout.}}\{\{nl\}\}1) Open transaction `sm59`, open the appropriate destination, switch to the {\emph{Special Options}}-tab and configure the `Set timeout` option.\{\{nl\}\}2) Raise the global ICM timeout by opening transaction `RZ11`, then open the parameter `icm/conn\_timeout` and change its value. In addition open the RZ11-parameter `icm/server\_port\_\textless{}xx\textgreater{}` and set the parameter `TIMEOUT=\textless{}timeout in s\textgreater{}`.\{\{nl\}\}\{\{fa-exclamation-circle\}\} Attention: This change is system-wide and needs a restart of the ABAP-stack afterwards. \tn % Row Count 31 (+ 31) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{7.5988 cm} x{9.6712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-hotel\}\} Fight Timeouts (Both Stacks) (cont)}} \tn % Row 6 \SetRowColor{LightBackground} Integration Engine | Processing & Introduction: {\emph{Besides network timeouts also processing timeouts can occur when processing in IE/AAE takes longer than configured.}}\{\{nl\}\}To raise the global ICM processing timeout, open transaction `RZ11`, then open the parameter `icm/server\_port\_\textless{}xx\textgreater{}` and append the following value-pair to its parameter `PROCTIMEOUT=\textless{}timeout in s\textgreater{}`.\{\{nl\}\}\{\{fa-exclamation-circle\}\} Attention: This change is system-wide and needs a restart of the ABAP-stack afterwards. Learn more over here: \{\{link="https://goo.gl/Sh5Jfp"\}\}https://goo.gl/Sh5Jfp\{\{/link\}\}\{\{nl\}\} \{\{fa-lightbulb-o\}\}Hint: *If you want to test this changes without restart, you can make them temporary (until next restart) by opening transaction `smicm`, opening "Services" (`Shift+F1`) and doing the changes there. \tn % Row Count 35 (+ 35) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-rocket\}\} Tools to rocket your productivity}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Realcore Developer Suite for PI/PO:}} Helps to compare ESR object or create mapping or interface documentations. {\emph{Available via SAP Appstore or Realcore Sales Team.}}} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Realcore Support Tools for PI/PO:}} Helps to quickly create support/error mails with payload attachments, download payloads to disk, solve SSL errors and much more. {\emph{Available via Realcore Sales Team.}}} \tn % Row Count 9 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{SoapUI:}} Useful for SOAP webservice testing and for creation of SOAP/REST webservices (=mockup services). Choose OpenSource/Community edition. \{\{link="https://goo.gl/qD42Z9"\}\}https://goo.gl/qD42Z9\{\{/link\}\}} \tn % Row Count 14 (+ 5) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Postman:}} Helps to test REST apis including header and payload handling. \{\{link="https://goo.gl/7pgbFV"\}\}https://goo.gl/7pgbFV\{\{/link\}\}} \tn % Row Count 17 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{DBeaver:}} Helps to view, edit and work with nearly any database. Runs without installation. \{\{link="https://goo.gl/zqGDA9"\}\}https://goo.gl/zqGDA9\{\{/link\}\}} \tn % Row Count 21 (+ 4) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{{\bf{Notepad++ (+ XML Tools):}} The XML swissknife/editor. Go to plugin manager and install "XML Tools". \{\{link="https://goo.gl/zAsd4N"\}\}https://goo.gl/zAsd4N\{\{/link\}\}} \tn % Row Count 25 (+ 4) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Fiddler:}} Sniffing proxy to view raw HTTP requests. Is even able to decrypt and view HTTPS traffic. Useful for analysis. \{\{link="https://goo.gl/rSWeFA"\}\}https://goo.gl/rSWeFA\{\{/link\}\}} \tn % Row Count 29 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{17.67cm}}{\bf\textcolor{white}{\{\{fa-external-link\}\} Helpful Resources}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{Overview of NWA short links: \{\{popup="https://goo.gl/YB3CYU"\}\}https://goo.gl/YB3CYU\{\{/popup\}\}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{17.67cm}}{List of useful transactions and short-urls: \{\{popup="https://goo.gl/ky1m5F"\}\}https://goo.gl/ky1m5F\{\{/popup\}\}} \tn % Row Count 5 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{17.67cm}}{{\bf{Note}}: {\emph{The entries above contain links to helpful web-resources. For better readability all links were shortened.}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \end{document}