ABAP OO

Wie hier beschrieben PDF Dokumente in ABAP zusammenführen soll ein bestehendes PDF Dokument aus dem KPRO auf der Rückseite eines anderen PDF Dokuments, welches mittels ADS erstellt wird, eingebettet werden. Das auf der genannten Seite beschriebene Vorgehen funktioniert nur dann zuverlässig, wenn beide PDF Dokumente das gleiche Papierformat verwenden.

Im vorliegenden Fall wird ein PDF im DIN-A4 Format erstellt. Das einzubettende PDF Dokument liegt jedoch im DIN-A2 Format vor. Das Zusammenführen der Dokumente funktioniert zwar, der spätere Ausdruck auf einem DIN-A4 Drucker hingegen nicht. Die Zeichnung wird nicht skaliert ausgegeben.

Lösung

Wenn die Zeichnung als Bildformat vorliegt, kann die Ausgabe in einem Image Container im ADS erfolgen. Die Bilder werden in diesem Fall passend in den Container skaliert.

Mittels der Klasse ZCL_BC_PDF_CONVERTER kann ein existierendes PDF Dokument in ein Bildformat konvertiert werden. Die Klasse nimmt das PDF als XSTRING entgegen. Die Konvertierung selbst wird auf dem Application Server mittels System Kommando durchgeführt. Dabei wird das Tool pdftoppm (poppler-utils), welches bereits in der Linux Distribution des Application Server enthalten ist, genutzt.

Voraussetzung

Mit der Transaktion SM69 wird ein Systemkommando wie folgt definiert

Nutzung der Klasse

Die Konvertierung kann wie folgt durchgeführt werden

data: lv_data type xstring,
      lv_result type xstring,
     
      " auslesen des PDF aus dem kpro, Spool oder andere Quelle.
      " das PDF muss als Binärdaten vorliegen, nicht als Datei
     
          DATA(lo_converter) = NEW zcl_bc_pdf_converter(  ).
          lo_converter->set_source_data( lv_data ).
          lo_converter->convert(  ).
          lv_result = lo_converter->get_conversion_result(  ).

Zur Konvertierung werden temporäre Dateien auf dem Application Server angelegt und nach der Konvertierung gelöscht.

Verweis

Bei Interesse finden Sie die Klasse unter folgendem Repository

https://github.com/sap-weberpatrick/zcl_bc_pdf_converter

Wie in dem vorherigen Beispiel beschrieben, kann über die SharePoint API auch ein Listenelement erstellt werden. Dazu wird ein HTTP Post Methodenaufruf verwendet. Dieser Aufruf erwartet im Header zwingend die Angabe eines X-RequestDigest. Dieser Wert kann mit der API /_api/contextinfo ermittelt werden.

Das folgende Beispiel zeigt, wie man ein Listenelement aus SAP heraus erstellen kann.
... weiterlesen

Hier war es lange still, Zeit für einen neuen Beitrag. Das Thema hat mich einige Stunden gekostet. Ich hoffe es hilft dem ein oder anderen.

SharePoint bietet eine umfassende REST-API mit CRUD (Create Read Update Delete) Methoden an. Mit dieser API können z.B. Listenelemente gelesen und erstellt werden. Diese lässt sich auch in ABAP verwenden.

... weiterlesen

Um eine Sortierung oder Summen in der ALV Ausgabe per Code zu setzen, gibt es zwei Möglichkeiten.

  1. Vorherige Definition eines Benutzerlayouts und anschließendes Setzen des Layouts im Code (siehe diesen Beitrag)
  2. Setzen der Sortierung und der Summen per Code

Hier wird beschrieben, wie die Sortierung und die Summe per Code vorbelegt werden kann. Der Benutzer kann anschließend wie gewohnt die Ausgabe verändern. Das Setzen der Sortierung erfolgt in der Methode ADD_SORT, das Setzen der Summe in der Methode ADD_AGGREGATION der Klasse Z_TEST_VIEW.

... weiterlesen

Um einen Filter in der ALV Ausgabe per Code zu setzen, gibt es zwei Möglichkeiten.

  1. Vorherige Definition eines Benutzerlayouts und anschließendes Setzen des Layouts im Code (siehe diesen Beitrag)
  2. Setzen des Filters per Code

Hier wird beschrieben, wie der Filter per Code vorbelegt werden kann. Der Benutzer kann anschließend wie gewohnt den Filter verändern und löschen. Das Setzen des Filters erfolgt in der Methode SET_ALV_FILTER der Klasse Z_TEST_VIEW.

... weiterlesen

Der Benutzer kann das gewünschte Anzeigelayout eines ALV Grid (Spalten, Filter etc.) auswählen, sobald das ALV Grid in der Standardansicht angezeigt wird. Mit wenigen Codezeilen kann man die Auswahl des Layouts bereits auf dem Selektionsbild des Reports ermöglichen. Auf dieser Seite ist beschrieben, wie ein Matchcode auf das Layout realisiert werden kann. ... weiterlesen