REPORT Z_NEBP_RAHMEN.

Ähnliche Dokumente
Stichworte zu Programmiertechniken am Beispiel der nebp-bestellungen

A.4 Beispiel zum -Versand über Smart Forms

10.6 Programmier-Exits für Workitems

Standardtext ins PDF-Format konvertieren

Generischer Excel-Upload

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

Kurzbeschreibung. Quelltext

Installation MySQL Replikationsserver

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

G.I.B Success Days. Siegen, High Performance Analytics. Performance - Was bedeutet das? Theorie - Performancedefinitionen bei SAP

1. Schritt: Anlegen des Musters

Datenmigration. Tipps und Tricks

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

5.8 Bibliotheken für PostgreSQL

Übungsblatt 8- Lösungsvorschlag

EXCEL VBA Cheat Sheet

Vergessene (?) SQL- und PL/SQL- Funktionen

Prozedurale Datenbank- Anwendungsprogrammierung

Transaktionen in der Praxis. Dr. Karsten Tolle

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Datenbankablage für ArchiveLink einrichten

ajanzen.com Aufruf eines Pop-Up-Containers

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac.

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

SAP-Daten per HTML anzeigen

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Kontrollstrukturen in PL/SQL

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

PLC-5- und SLC-Prozessoren im DH+ Verbund (SLC 5/04 -Prozessoren)

QMF Tabelle Q.OBJECT_DATA in DB2

Kapitel 4 Dynamisches SQL

Objektrelationale, erweiterbare Datenbanken WS 04/05

SelectLine Auftrag. ab Version 13. Beschreibung zur Paketverfolgung

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Die Datenmanipulationssprache SQL

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

desk.modul : WaWi- Export

FIVE1 GmbH & Co. KG SAP Partner Port Altrottstraße Walldorf T: FIVE1 GmbH & Co. KG Essence of quality

Table of Contents. SAP_Tips. 1. Performant programmieren Vorwort Open SQL Native SQL...3

1 - FortProg ist: [ ] objekt-orientiert; [ ] funktional; [ ] logisch; [ ] manchmal nicht auszuhalten

Übung 4 ABAP. Übung Business Process Management" (MW31.2) Lisa Wenige SS2016

if ($rows == 0) { save_new(); } }

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

DataTables LDAP Service usage Guide

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:


1 Einsatz des SAP Code Inspectors Konfiguration und Funktionen des SAP Code Inspectors... 67

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Datenbankentwicklung mit PureBasic

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

MySQL: Einfaches Rechnen.

THEMA: GUT VORBEREITET IST HALB ZERTIFIZIERT ANTWORTEN ZUR SAS VISUAL ANALYTICS-ZERTIFIZIERUNG" THOMAS WENDE

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik

Restschmutzanalyse Residual Dirt Analysis

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Zeilen in SAS-Datensatz einfügen

C R 2025 C LOSE PUSH OPEN

analoge Ein- und Ausgänge

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

Abteilung Internationales CampusCenter

NoSQL mit Postgres 15. Juni 2015

10. Datenbanken und DBI Ties BerkeleyDB Datenbanken und DBI Oracle, Mysql und Proxy Server Ties tie

Therefore the respective option of the password-protected menu ("UPDATE TUBE DATA BASE") has to be selected:

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

Embedded SQL in PostgreSQL

Modellierung und Programmierung 1

<body> <h1>testseite für HTML-Parameter-Übergabe<br>50 Parameter werden übergeben</h1>

Kuriositäten in der Oracle-Datenbank

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

Abfragen (Queries, Subqueries)

Steuerungsstrukturen. Ablaufsteuerung der PL/SQL Ausführung. IF Anweisungen. Einfaches IF

Unterabfragen (Subqueries)

MySQL 101 Wie man einen MySQL-Server am besten absichert

infrastructure definitions example versioning

Introduction to Data and Knowledge Engineering. 6. Übung SQL

X83-Konverter Instructions

Hands-on für UI5-Anwendung auf HANA

Datenbankadministration

105.3 SQL-Datenverwaltung

The app the crashes, before the breakpoint is reached: Code to the event:

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Exercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

Modul 122 VBA Scribt.docx

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio /9

Tag 4 Inhaltsverzeichnis

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

ajanzen.com Vorgehen zum Erstellen eines Dynpro- Splitters

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Transkript:

*&---------------------------------------------------------------------* *& Report Z_NEBP_RAHMEN *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT Z_NEBP_RAHMEN. TABLES: ZNEBP_BELEGE. DATA: PARAM TYPE TPARA-PARAMID VALUE 'BES', I_BES TYPE EKPO-EBELN, II_BES TYPE EKPO-EBELN, I_BEST TYPE SEQG3-GARG, I_SPERR TYPE EKKO, ENQ LIKE TABLE OF SEQG3 WITH HEADER LINE, I_ZNEBP_BELEGE LIKE TABLE OF ZNEBP_BELEGE WITH HEADER LINE, SAVE_FLAG, SAVE_FLAG_FB60, NEBP_EBELN TYPE ZNEBP_BELEGE-NEBP_EBELN, NB_EBELN TYPE ZNEBP_BELEGE-NB_EBELN, I_VPROZ TYPE P LENGTH 3 DECIMALS 2 VALUE '1.99', NUMBER LIKE SY-TABIX, SUBRC LIKE SY-SUBRC. DATA: TEKPO LIKE TABLE OF BEKPO WITH HEADER LINE, TEKET LIKE TABLE OF BEKET WITH HEADER LINE, TEKKN LIKE TABLE OF EKKNU WITH HEADER LINE, TKOMV LIKE TABLE OF KOMV WITH HEADER LINE, POITEM LIKE TABLE OF BAPIMEPOITEM WITH HEADER LINE, I_EKKO TYPE EKKO, EXPPURCHASEORDER LIKE BAPIMEPOHEADER-PO_NUMBER, TBEST_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE, SD_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE. DATA: VBELN LIKE VBAK-VBELN, NETWR LIKE VBAK-NETWR, I_BSART LIKE I_EKKO-BSART, I_KART LIKE I_EKKO-BSTYP, I_FILTER LIKE TABLE OF ZNEBP_FILTER WITH HEADER LINE, I_TAB_COND TYPE C LENGTH 255, LINK TYPE C LENGTH 3, LINK_AD TYPE C LENGTH 3, SUCCESS, COUNTER TYPE I, TRANSACTION TYPE C LENGTH 6. DATA: CODE TYPE TABLE OF ZRSSOURCE-LINE, PROG TYPE C LENGTH 8, MSG TYPE C LENGTH 120, LIN TYPE C LENGTH 3, WRD TYPE C LENGTH 10, OFF TYPE C LENGTH 3, TRUE TYPE C LENGTH 1. FIELD-SYMBOLS: <COND> TYPE C. DATA ZEILEN TYPE I. DATA: BEGIN OF I_VBELN OCCURS 0, VBELN TYPE C LENGTH 18, END OF I_VBELN. DATA: BEGIN OF T_BEDAT OCCURS 0, SIGN TYPE C LENGTH 1,

OPTION TYPE C LENGTH 2, LOW TYPE C LENGTH 8, HIGH TYPE C LENGTH 8, END OF T_BEDAT. SELECT-OPTIONS P_BSART FOR I_EKKO-BSART NO-DISPLAY. SELECT-OPTIONS P_BEDAT FOR I_EKKO-BEDAT NO-DISPLAY. SELECT-OPTIONS P_EKGRP FOR I_EKKO-EKGRP NO-DISPLAY. DO. * Bei der externen Aufwandbuchung keine Endlosschleife IF TRANSACTION = 'FB60'. EXIT. SAVE_FLAG = ''. " Flag zurücksetzen COUNTER = COUNTER + 1. * BREAK PBOLLIG. EXPORT SAVE_FLAG TO MEMORY ID 'NEBP_SAVE'. SET PARAMETER ID PARAM FIELD I_BES. IMPORT TRANSACTION FROM MEMORY ID 'TCFB60'. * Absprung zu Bestellung * SUBMIT RM_MEPO_GUI AND RETURN. IF SY-TCODE = 'ZME21N' AND TRANSACTION NE 'FB60'. TRANSACTION = 'ZME21N'. EXPORT TRANSACTION TO MEMORY ID 'TCODE'. CALL TRANSACTION 'ME21N'. ELSEIF SY-TCODE = 'ZME22N' AND TRANSACTION NE 'FB60'. TRANSACTION = 'ZME22N'. EXPORT TRANSACTION TO MEMORY ID 'TCODE'. * Warten, damit der Sperreintrag sicher entfernt ist WAIT UP TO 1 SECONDS. CALL TRANSACTION 'ME22N'. ELSEIF TRANSACTION = 'FB60'. TRANSACTION = 'FB60'. EXPORT TRANSACTION TO MEMORY ID 'TCODE'. * Der Dynpro-Parameter soll die originäre Bestellnummer behalten, sonst * sieht man in ähnlichen Transaktionen die interne Bestellnummer. * z.b. würde die Transaktion ME9f (Drucken) die interne Bestellung drucken. GET PARAMETER ID PARAM FIELD II_BES. IF NOT II_BES BETWEEN 8100000000 AND 8199999999. I_BES = II_BES. ELSE. SET PARAMETER ID PARAM FIELD I_BES. *----------------------------------------------------------------------* * Aus der externen Aufwandbuchung zur Kreditorenrechnung soll der interne Prozess * NEBP-like durchlaufen werden. D.h. erstellen einer int. Bestellung, anlegen * eines SD-Auftrages, Faktura, Fakturaübernahme und anschließend die * interne Aufwandsbuchung. *----------------------------------------------------------------------* * Nur die Dialogverarbeitung legt eine externe Bestellung an, der Aufruf über die FB60 (Kreditorenrechnung) * springt gleich zur Anlage der internen Bestellung. IMPORT TEKPO FROM MEMORY ID 'NEBP_TEKPO'. IMPORT TEKET FROM MEMORY ID 'NEBP_TEKET'. IMPORT TEKKN FROM MEMORY ID 'NEBP_TEKKN'. IMPORT TKOMV FROM MEMORY ID 'NEBP_TKOMV'.

IMPORT I_EKKO FROM MEMORY ID 'NEBP_I_EKKO'. IMPORT SAVE_FLAG FROM MEMORY ID 'NEBP_SAVE'. IMPORT SAVE_FLAG_FB60 FROM MEMORY ID 'NEBP_FB60'. " wenn die Bestellung nicht gesichert werden soll, verlasse die Schleife IF SAVE_FLAG IS INITIAL AND SAVE_FLAG_FB60 IS INITIAL. EXIT. * eine interne Bestellung wird nur angelegt, wenn die Filterbedingungen stimmen * 1. Belegart * 1.1 Filterbedingung lesen CLEAR I_FILTER[]. CLEAR P_BSART. SELECT ZNEBP_FILTER~ZSIGN ZNEBP_FILTER~ZOPTION ZNEBP_FILTER~LOW ZNEBP_FILTER~HIGH FROM ZNEBP_FILTER INTO (P_BSART-SIGN, P_BSART-OPTION, P_BSART-LOW, P_BSART-HIGH) WHERE FART = 'BSART'. APPEND P_BSART. ENDSELECT. * 1.2 Filterbedingung anwenden CLEAR CODE[]. CLEAR TRUE. CLEAR LINK_AD. CLEAR I_TAB_COND. IF NOT I_EKKO-BSART IN P_BSART. CONTINUE. * 2. Belegdatum CLEAR P_BEDAT. SELECT ZNEBP_FILTER~ZSIGN ZNEBP_FILTER~ZOPTION ZNEBP_FILTER~LOW ZNEBP_FILTER~HIGH FROM ZNEBP_FILTER INTO (T_BEDAT-SIGN, T_BEDAT-OPTION, T_BEDAT-LOW, T_BEDAT-HIGH) WHERE FART = 'BELDAT'. APPEND T_BEDAT. ENDSELECT. * Die Typkonvertierung mit WRITE LOOP AT T_BEDAT. WRITE T_BEDAT TO P_BEDAT. APPEND P_BEDAT. ENDLOOP. IF NOT I_EKKO-BEDAT IN P_BEDAT. CONTINUE. * 3. Die Einkäufergruppe für die der Prozess relevant ist SELECT ZNEBP_FILTER~ZSIGN ZNEBP_FILTER~ZOPTION ZNEBP_FILTER~LOW ZNEBP_FILTER~HIGH FROM ZNEBP_FILTER INTO (P_EKGRP-SIGN, P_EKGRP-OPTION, P_EKGRP-LOW, P_EKGRP-HIGH) WHERE FART = 'EKGRP'. APPEND P_EKGRP. ENDSELECT. IF NOT I_EKKO-EKGRP IN P_EKGRP. CONTINUE. * Weitere Filter werden während der Verarbeitung der internen Bestellung durchlaufen * Der Beleg ist zunächst noch Unvollständig bis auch die interne Bestellung * und der Sd-Beleg erfolgreich angelegt wurden. Dadurch wird verhindert, dass * ein WE oder RE gebucht werden kann.

READ TABLE TEKPO INDEX 1 INTO TEKPO. "erste Zeile in den Arbeitsbereich * UPDATE EKKO SET MEMORY = 'X' WHERE * EBELN = TEKPO-EBELN OR * EBELN = I_BES. * COMMIT WORK AND WAIT. * Merke mir die Bestellnummer in der Tabelle ZNEBP_BELEGE * Es kann sein, dass die 45...-Bestellung noch nicht committet ist, * deswegen frage auch den Parameter BES ab. LOOP AT TEKPO. CLEAR I_ZNEBP_BELEGE. CLEAR I_ZNEBP_BELEGE[]. SELECT SINGLE * FROM ZNEBP_BELEGE INTO I_ZNEBP_BELEGE WHERE NB_EBELN EQ TEKPO-EBELN AND NEBP_EBELN GT '1' AND NB_POS EQ TEKPO-EBELP " IS NOT NULL funktioniert hier nicht OR NB_EBELN EQ I_BES AND NEBP_EBELN GT '1' AND NB_POS EQ TEKPO-EBELP. " noch nicht vorhanden dann schreibe neu IF I_ZNEBP_BELEGE-NB_EBELN IS INITIAL. * MOVE TEKPO-EBELN TO I_ZNEBP_BELEGE-NB_EBELN. * LOOP AT TEKET. IF TRANSACTION = 'FB60'. MOVE I_EKKO-EBELN TO I_ZNEBP_BELEGE-NB_EBELN. MOVE I_BES TO I_ZNEBP_BELEGE-NB_EBELN. MOVE TEKPO-EBELP TO I_ZNEBP_BELEGE-NB_POS. APPEND I_ZNEBP_BELEGE. * ENDLOOP. INSERT INTO ZNEBP_BELEGE VALUES I_ZNEBP_BELEGE. COMMIT WORK. ENDLOOP. * Gehört zur externen Bestellung bereits eine * interne, wenn nicht dann wollen wir sie neu anlegen * Wenn eine neue Position an eine bestehende Bestellung angehängt wird, so kann diese natürlich * nicht in der Tabelle ZNEBP_BELEGE gefunden werden. In der Kopfzeile kann hier also die Belegnummer leer * sein, obwohl es eine interne Bestellung gibt - deshalb ein Read Table mit Ergebnis in die Kopfzeile - * READ TABLE I_ZNEBP_BELEGE WITH KEY NEBP_EBELN = TEKPO-EBELN INTO I_ZNEBP_BELEGE. NEBP_EBELN = I_ZNEBP_BELEGE-NEBP_EBELN. IF I_ZNEBP_BELEGE-NEBP_EBELN IS INITIAL. "nachschauen ob es überhaupt eine int.bestellung dazu gibt SELECT SINGLE * FROM ZNEBP_BELEGE INTO I_ZNEBP_BELEGE WHERE NB_EBELN EQ TEKPO-EBELN AND NEBP_EBELN GT '1' OR NB_EBELN EQ I_BES AND NEBP_EBELN GT '1'. NEBP_EBELN = I_ZNEBP_BELEGE-NEBP_EBELN. NB_EBELN = I_ZNEBP_BELEGE-NB_EBELN. PERFORM INT_BEST IN PROGRAM Z_NEBP_UE TABLES TEKPO TEKET TEKKN TKOMV USING I_EKKO NEBP_EBELN NB_EBELN. * Rückgabeparameter der internen Bestellung IMPORT EXPPURCHASEORDER FROM MEMORY ID 'NEBP_EXPPURCHASEORDER'. IMPORT POITEM FROM MEMORY ID 'NEBP_NB_POITEM'.

IMPORT TBEST_RETURN FROM MEMORY ID 'NEBP_EX_RETURN'. * War die Anlage der internen Bestellung erfolgreich? * IF EXPPURCHASEORDER IS INITIAL. CALL FUNCTION 'Z_POPUP_RETURN_PARAM' TABLES RETURN = TBEST_RETURN. CLEAR SUCCESS. IF NOT EXPPURCHASEORDER = 'NV' OR NOT EXPPURCHASEORDER IS INITIAL. PERFORM CREATE_SD IN PROGRAM Z_NEBP_UE TABLES TKOMV USING EXPPURCHASEORDER SUCCESS TRANSACTION. SUCCESS = 'X'. IMPORT SD_RETURN FROM MEMORY ID 'NEBP_SD_RETURN'. IMPORT VBELN FROM MEMORY ID 'NEBP_SD_VBLEN'. * War die Anlage des SD-Auftrags erfolgreich? IF SUCCESS IS INITIAL. * CALL FUNCTION 'Z_POPUP_RETURN_PARAM' * TABLES * RETURN = SD_RETURN. * Hier könnte man eine e-mail versenden lassen * na, dann ist ja alles glatt gelaufen * Der Beleg ist nun vollständig * UPDATE EKKO SET MEMORY = ' ' WHERE * EBELN = TEKPO-EBELN. * COMMIT WORK AND WAIT. " Bei Änderung der Bestellung - Fehlerfall wird keine interne Bestellnummer zurückgeliefert. " Dann soll die Verknüpfung zur ursprünglichen Bestellung auch nicht verloren gehen. IF EXPPURCHASEORDER IS INITIAL. MOVE I_ZNEBP_BELEGE-NEBP_EBELN TO EXPPURCHASEORDER. " Das gleiche gilt auch für den SD-Auftrag * IF VBELN IS INITIAL. * MOVE I_ZNEBP_BELEGE-NEBP_SD TO VBELN. * * Alle drei Belegnummern in die Tabelle znebp_belege LOOP AT POITEM. IF POITEM-PO_ITEM > 0. MOVE NB_EBELN TO I_ZNEBP_BELEGE-NB_EBELN. * IF NEBP_EBELN eq 'NV'. * MOVE NEBP_EBELN TO EXPPURCHASEORDER. * MOVE EXPPURCHASEORDER TO I_ZNEBP_BELEGE-NEBP_EBELN. MOVE POITEM-PO_ITEM TO I_ZNEBP_BELEGE-NB_POS. * MOVE VBELN TO I_ZNEBP_BELEGE-NEBP_SD. UPDATE ZNEBP_BELEGE SET NEBP_EBELN = EXPPURCHASEORDER WHERE NB_EBELN EQ I_ZNEBP_BELEGE-NB_EBELN AND NB_POS EQ I_ZNEBP_BELEGE-NB_POS. IF SY-SUBRC <> 0.

INSERT INTO ZNEBP_BELEGE VALUES I_ZNEBP_BELEGE. ENDLOOP. COMMIT WORK AND WAIT. ENDDO.