[gelöst] SAPScript PERFORM Problem

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

[gelöst] SAPScript PERFORM Problem

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hallo Forum,

ich möchte in einem SAPScript eine Subroutine in einem anderen Programm aufrufen. Aber der Aufruf scheint nicht zu funktionieren. Das Feld, welches ich ändern möchte erscheint nicht auf dem Formular.

Im SapScript sieht es folgendermaßen aus:

Code: Alles auswählen.

/:   IF &EKKO-BSART& EQ 'UB'
/*   DEFINE &GET_BRGEW_WERT& = '--------------'
/*   PERFORM_ABAP
/:   PERFORM GET_BRGEW IN PROGRAM Z_ZISD_BRGEW_UML_BESTELLUNG
/:   USING &EKKO-BELN&
/:   CHANGING &GET_BRGEW_WERT&
/:   ENDPERFORM
I2   Bruttogewicht: &GET_BRGEW_WERT& KG
/*   ---------------------------------------------------------
/:   ENDIF
Wie man sieht habe ich schon ein wenig herumprobiert. Es wird nur
Bruttogewicht: KG
ausgegeben.

Der ABAP Report sieht wie folgt aus:

Code: Alles auswählen.

REPORT  Z_ZISD_BRGEW_UML_BESTELLUNG                                 .


FORM GET_BRGEW TABLES IN_PAR STRUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY.

* Datendefinition
  DATA BestNr like EKKO-EBELN.

  DATA: BEGIN OF brutto_gew,
      BRGEW LIKE EKPO-BRGEW,
      GEWEI LIKE EKPO-GEWEI,
      END OF brutto_gew.

  DATA wa_brutto_gew LIKE TABLE OF brutto_gew.

  DATA gs_kopf-brgew like ekpo-brgew.
  data: lc_kg type meins.

* Auslesen der übergebenen Bestellnummer

  READ TABLE IN_PAR WITH KEY 'EKPO-EBELN'.

* Datensatz gefunden?
  IF SY-SUBRC = 0.
    BestNr = IN_PAR-VALUE.
    lc_kg = 'KG'.

    SELECT brgew gewei from EKPO
    INTO brutto_gew
    WHERE EBELN = BestNr AND LOEKZ = ''.

      if sy-subrc = 0.
        CALL FUNCTION 'GEWICHT_VOLUMEN_ADDIEREN'
          EXPORTING
            m1    = gs_kopf-brgew
            meh1  = lc_kg
            m2    = brutto_gew-brgew
            meh2  = brutto_gew-gewei
          IMPORTING
            SUM   = gs_kopf-brgew
            SUMEH = lc_kg
          .  " <<-- PUNKT, ende des calls
      endif.


    endselect.


*  Rückgabe an Caller

    out_par-value = gs_kopf-brgew.

    modify out_par INDEX sy-tabix.

  ENDIF.

ENDFORM.                    "GET_BRGEW
Es handelt sich übrigends hierbei um die TA ME22N.

Da wäre noch was. Wie kann ich Formulare debuggen? Unter Hilfsmittel gibts nichts dergleichen, obwohl ich oft gelesen habe, dort könnte man dies machen.

Vielen Dank für eure Hilfe
Zuletzt geändert von codierknecht am 05.10.2006 12:17, insgesamt 1-mal geändert.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
1. OUTPAR ist auch ein Tabellenparameter. Ich sehe in deinem Coding aber nirgends ein READ TABLE outpar ???

2. Debuggen: In solchen Fällen habe ich als Notbehelf schon mal einen Kurzdump im aufgerufenen Coding bewußt erzeugt (z.B. mit MESSAGE x). Aus dem Kurzdump heraus kann man in den Debugger springen und so zumindest die Variableninhalte kontrollieren

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hallo,

erstmal vielen Dank für den Hinweis. Das war genau der richtige Ansatz.

Aber damit noch nicht genug. Nun habe ich ein Problem bei der Wertzuweisung.

Wenn ich folgendes Versuche:

Code: Alles auswählen.

READ TABLE OUT_PAR WITH KEY 'GET_BRGEW_WERT'.
  if sy-subrc = 0.

    out_par-value = '0'. .

    modify out_par INDEX sy-tabix.
  endif.

Steht im Formular auch die 0.

Wenn ich jedoch

Code: Alles auswählen.

gs_brgew = '0'.

  READ TABLE OUT_PAR WITH KEY 'GET_BRGEW_WERT'.
  if sy-subrc = 0.

    out_par-value =  gs_brgew.

    modify out_par INDEX sy-tabix.
  endif.
Schreibe, dann steht nichts im Formular. Worin besteht denn hier der Unterschied?

Das Feld ist so definiert

Code: Alles auswählen.

DATA gs_brgew type p decimals 2.

Ich dachte, dass ABAP über implizite Typkonvertierung verfügt....

[EDIT] Ich habe das Feld nun mal als Typ C definiert, dann funktioniert es. Aber ich möchte ja Berechnungen machen. Wie muss ich vorgehen?

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Ein Ansatzu wäre, das du einmal ein Textfeld übergibst und einmal eine Nummerische Feld.

Testweise kannst du auch ein write ... to ... machen, das könnte das Problem lösen.

In deinem ErstenPosting, steht im USING parameter die Belegnummer falsch (EKKO-BELN) Richtig EKKO-EBELN.

Gruß

Thomas

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hallo Thomas,

hast Recht mit der Belegnummer. Ich habe auch im Formular das Feld falsch genannt.

Aber das Problem mit den Wertzuseisungen bleibt. Ich kann OUT_PAR-VALUE nur einen Charakterwert zuweisen. Ich habe es mit packed und integer versucht, aber dann wird nie was angedruckt. Ich habe auch mal ein

Code: Alles auswählen.

WRITE gs_brgew TO OUT_PAR-VALUE. versucht
aber das ändert leider nichts.

GELÖST

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Ich habe das Problem mit der Wertzuweisung gelöst, indem ich den gepackten Wert zunächst in ein anderes Charakter Feld übergebe und anschließend in den OUT_PAR-Value.

Dann kommt der Wert korrekt rüber.


Vielen Dank für eure Unterstützung

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2913
Views
Perform Problem in SapScript
von Trulchen » 05.01.2016 11:56 • Verfasst in ABAP® für Anfänger
6
Antw.
1492
Views
Perform in Sapscript
von dkast » 18.10.2017 13:34 • Verfasst in ABAP® für Anfänger
2
Antw.
1648
Views
SAPSCRIPT PERFORM
von NEON » 07.12.2005 12:54 • Verfasst in ABAP® Core
8
Antw.
5994
Views
[gelöst] XML-Problem...
von ewx » 06.03.2009 16:24 • Verfasst in ABAP® Core
7
Antw.
6383
Views
Problem mit Adressaufbereitung SAPscript
von ralf.wenzel » 18.09.2004 14:07 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.