Fehler im Fremdenprogamm korrigieren

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
43 Beiträge • Seite 1 von 3 (current) Nächste
43 Beiträge Seite 1 von 3 (current) Nächste

Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Hallo zusammen! Habe wiedermal ein kleines Problem.

Dies ist ein etwas älteres Programm welche mir die Liefermangelmeldung generiert welche zum Kunden geschickt werden sollte. Das Programm Funktioniert soweit gut, ausgenommen wenn es zu einer Änderung des Kunden (Email od. Ansprechpartner) kommt.

In diesem Moment wird in VIQMEL eine neue Adressnummer vergeben. (siehe Screenshot LMM.jpg QMNUM 109805)

Nach längerem suchen fand ich das Programm welches mir die Ausgabe steuert und änderte dieses ( Zeilen 566-573 ). Der Zweck meiner sollte Änderung sollte eigentlich sein dass wenn das Feld VIQMEL-ADRNR befüllt ist sollte gleich diese nummer genommen werden und mit dieser Nummer die Emailadresse aus der ADR6 gezogen werden. Nur wenn dieses Feld frei ist (nicht befüllt ist) sollte das Programm wie bisher ablaufen.

Es hat sich trotz meiner Änderung nicht geändert. Hat jemand eine Ahnung wieso? Ich bin leider noch nicht der stärkste Entwickler sondern noch beim Lernen.

Hier kommt nun das Coding:

Code: Alles auswählen.

REPORT RQQMRB01 .


************************************************************************
* Druckprogramm für ein Reklamationsschreiben in Qualitätsmeldungssystem
*                                                                      *
* Standard FORMULAR ist ZQM_COMPLAIN                                  *
*A.Schneider AII, 22.09.99 => AII-SCH
*                                                                  *
************************************************************************

* 2011-04-11 SLU: Zusätzlich E-Mail selektieren

*$*$  D A T A    S E C T I O N    I N C L U D E S ---------------------*
************************************************************************
*zusätzliche Daten                    "aii-sch
TABLES: T024.
TABLES:  EKKO,
        pa0001,
        pa0032.
data: h_qname like pa0001-sname,
      h_qtel01(5).

********************Ende AII-SCH****************************************
INCLUDE ZIPRID01.                     " Enthält DATA und TABLE Anweisung

TABLES: LFA1,                                "Lieferantenadresse
        SADR,                                "spez. Adresse
        T001,                                "Absenderland
        MEICO,                               "Einkaufsinfosatz
        EINA,                                "Einkaufsinfosatz
        T024E.                              "Einkaufsorganisationen

DATA: G_ANZAHL TYPE I.


DATA:   BEGIN OF G_INDEX_TAB OCCURS 10.
        INCLUDE STRUCTURE  TOA_DARA.
DATA:   END   OF G_INDEX_TAB.


DATA:   BEGIN OF G_PARAMS_TAB OCCURS 10.
        INCLUDE STRUCTURE  ARC_PARAMS.
DATA:   END   OF G_PARAMS_TAB.

* 2011-04-11 SLU
TABLES: adr6.
DATA: email like adr6-smtp_addr.

*------------------*
START-OF-SELECTION.
*------------------*

  PERFORM PRINT_PAPER.      "ABAP kann direkt oder über Formular auf-
  "gerufen werden
*$*$ ................ M A I N     F O R M .............................*
*... DATA STRUCTURE: ..................................................*
*...                                                                   *
*...    VIQMEL (QMEL ILOA und QMIH in einer View) Meldungskopf         *
*...     !                                                             *
*...     !-- WQMFE/WQMUR           Fehlerposition                      *
*...     !   !                                                         *
*...     !-- !-- WQMMA             Aktionen zum Kopf/Fehler            *
*...     !   !                                                         *
*...     !-- !-- WQMSM             Maßnahmen zum Kopf/Fehler           *
*...                                                                   *
*......................................................................*



*----------------------------------------------------------------------*
*       FORM PRINT_PAPER                                               *
*----------------------------------------------------------------------*
*       Hauptform des Drucks                                           *
*       Alle Daten werden aus dem MEMORY importiert                    *
*----------------------------------------------------------------------*
*  -->  FORM        Name des SAPSCRIPT                                 *
*  -->  WWORKPAPER  Druckoptionen für SAPSCRIPT.                       *
*  -->  DATA STRUCTURES   Siehe Form DATA_IMPORT INCLUDE RIPRID01      *
*----------------------------------------------------------------------*
FORM PRINT_PAPER.
  PERFORM DATA_IMPORT.              " Siehe INCLUDE RIPRID01
  PERFORM EXTRA_DATEN.              "aii-sch
  PERFORM ABSENDERLAND.             " Absenderland ermitteln
  PERFORM SENDER.                   " Anschrift ermitteln
  PERFORM INFOSATZ.                 " Einkaufsinfosatz
  PERFORM PARTNER                   " Sachbearbeiter
          TABLES NOTIF_IHPAD_TAB.   "
  PERFORM READ_CATALOGUE_TABLES     " Kontroll Tabellen des QM lesen
          USING VIQMEL-QMART.       "
  PERFORM READ_VIEW_TEXT_TABLES.    " Tabellen zu VIQMEL lesen
  PERFORM MAIN_PRINT.               " Brief-Druck

ENDFORM.


*$*$ MAIN PRINT SECTION CONTROLLED HERE................................
*... If you are making changes to Print ABAPS, (Naturally a copied
*... version) here is the place you can alter the logic and
*... and data supplied to the form.   You should not alter logic
*... before this point if you wish it to operate successfully
*... with the standard transactions
*... However if you wish the PRINT LOG to work you must take
*... care to make sure the LOG records are written to PMPP.
*......................................................................

FORM MAIN_PRINT.
*... Es wird ein Schreiben gedruck, das dafür gedacht ist es als
*... Reklamationsbericht an den Lieferanten zu versenden

  PERFORM LOCK_AND_SET         " Enque and determine copy number
          USING C_HEADER.      " Overview logged at header level
  PERFORM OPEN_FORM USING G_ARC_TYPE    "archive type
                          VIQMEL-QMNUM  "notif number as key
                          ' '.          " New form for each position
*... Variable PRINT_LANGUAGE setzen
  PERFORM DEFINE_VARIABLE USING 'PRINT_LANGUAGE' PRINT_LANGUAGE.

  PERFORM REPEAT.              " Wiederholungsdruck
  PERFORM TEXT1.               " 1. Text des Hauptteils
*aii-sch: Daten für Infofenster Lieferant:
  PERFORM PRINT_INFO3.
*ende aii-sch
*... um zu verhindern, das die folgenden Textelemente nicht aus-
*... einandergerissen werden
  PERFORM SAPSCRIPT_COMMAND USING  'PROTECT'.  "Nicht übersetzen
  DESCRIBE TABLE IVIQMFE LINES G_ANZAHL.
  IF G_ANZAHL GT 0.
    PERFORM FINDINGS.                 " Überschrift für Fehlerliste

    MOVE SPACE  TO IVIQMFE.
    LOOP AT IVIQMFE
             WHERE KZLOESCH = SPACE.       " deleted position.
*... drucke jeden Fehler
      MOVE-CORRESPONDING IVIQMFE TO WQMFE.
*... die workarea für QMFE ist nun gefüllt (WQMFE)
      IF SY-TABIX > 1.
        PERFORM SKIP_AUSFUEHREN.
      ENDIF.
      IF NOT PRINT_LANGUAGE IS INITIAL.
        break aii-sch.
        PERFORM READ_CODE_TEXT USING TQ80-FEKAT
                                     WQMFE-FEGRP
                                     WQMFE-FECOD
                                     WQMFE-FEVER
                            CHANGING WQMFE-TXTCDGR.

      ENDIF.







*aii-sch: 23.05.2000: Kein Andruck der Fehlerpositionen
      PERFORM DEFECTS.                " Druckt die Fehler
*ende aii_sch.
    ENDLOOP.
*aii-sch: 23.05.2000: Kein Andruck der Fehlerpositionen
    PERFORM ULINE.                  " Unterstreichungslinie

  ENDIF.
*... beenden des Seitenumbruchschutzes
  PERFORM SAPSCRIPT_COMMAND USING  'ENDPROTECT'.      "

*... um zu verhindern, das der Langtext und die Ulines nicht durch
*... einen Seitenumbruch auseinandergerissen werden
  PERFORM SAPSCRIPT_COMMAND USING  'PROTECT'.  "Nicht übersetzen

  PERFORM REMARKS.                  " Langtext zur Q-Meldung

*... beenden des Seitenumbruchschutzes
  PERFORM SAPSCRIPT_COMMAND USING  'ENDPROTECT'.      "

  PERFORM TEXT2.                   " 2. Text des Hauptteils
  PERFORM TEXT3.                   " 3. Text des Hauptteils

  PERFORM CLOSE_FORM.             " Schließt das Formular
  PERFORM UNLOCK_AND_LOG.         " Dequeue and Log print

ENDFORM.



*$*$   F O R M    R O U T I N E S -------------------------------------*

*...   Spezielle Formroutinen

INCLUDE ZIPRIF01.                     " General PRINT routines
INCLUDE ZZPRIFQM.                     " Special QM routines

*.......................................................................



*$*$ G E N E R A L     F O R M     R O U T I N E S ....................*



*&---------------------------------------------------------------------*
*&      Form  FINDINGS
*&---------------------------------------------------------------------*
FORM FINDINGS.

  CALL FUNCTION 'WRITE_FORM'  " Druckt die Überschrift für den Befund
       EXPORTING
            ELEMENT   = 'FINDINGS'
            WINDOW    = 'MAIN'.

ENDFORM.                    " FINDINGS

*&---------------------------------------------------------------------*
*&      Form  REMARKS
*&---------------------------------------------------------------------*
*  Druck den Langtexdt der Q-Meldung                                   *
*----------------------------------------------------------------------*
FORM REMARKS.


*... Langtext zum Meldungskopf
  IF NOT VIQMEL-INDTX IS INITIAL.   "gibt es überhaupt einen Langtext

    CALL FUNCTION 'WRITE_FORM'   " Druckt eine Überschrift zum Langtext
         EXPORTING
              ELEMENT   = 'REMARKS'
              WINDOW    = 'MAIN'.


*... setzt den Textnamen zusammen
    TEXT_OBJECT_NAME = VIQMEL-QMNUM.
    CONDENSE TEXT_OBJECT_NAME NO-GAPS.

*... druckt den Langtext
    PERFORM PRINT_LONGTEXT USING C_QMEL
                                 TEXT_OBJECT_NAME
                                 VIQMEL-KZMLA
                                 LTXT_ID
                                 C_MAIN
                                 C_START_LINE_NR
                                 C_LAST_LINE_NR
                                 NO.   "with underline around text


  ENDIF.



ENDFORM.                    " BEMERKUNG

*&---------------------------------------------------------------------*
*&      Form  DEFECTS
*&---------------------------------------------------------------------*
*  Listet die Fehlersätze auf                                          *
*----------------------------------------------------------------------*
FORM DEFECTS.

  PERFORM TEXTKEY_QMFE.
  CALL FUNCTION 'WRITE_FORM'  " Druckt eine Fehlerliste
       EXPORTING
            ELEMENT   = 'DEFECTS'
            WINDOW    = 'MAIN'.


ENDFORM.                    " FEHLERLISTE

*&---------------------------------------------------------------------*
*&      Form  TEXT1
*&---------------------------------------------------------------------*
*       Gibt einen Text aus                                            *
*----------------------------------------------------------------------*
FORM TEXT1.

  CALL FUNCTION 'WRITE_FORM'  " Druckt einen Text
       EXPORTING
            ELEMENT   = 'TEXT1'
            WINDOW    = 'MAIN'.

ENDFORM.                                                    " TEXT1

*&---------------------------------------------------------------------*
*&      Form  UNDERLINE
*&---------------------------------------------------------------------*
*      Gibt eine ULINE aus                                             *
*----------------------------------------------------------------------*
FORM UNDERLINE.

  DATA: L_UNDERSCORE_STR(80) VALUE
  '______________________________________________________________'.


  WRITE L_UNDERSCORE_STR  TO WIPRT-COLHD.    " Underline
  CALL FUNCTION 'WRITE_FORM'
       EXPORTING
            ELEMENT = 'UNDERLINE'
            WINDOW  = 'MAIN'.


ENDFORM.                    " UNDERLINE

*&---------------------------------------------------------------------*
*&      Form  TEXT2
*&---------------------------------------------------------------------*
*       Gibt einen Text aus                                            *
*----------------------------------------------------------------------*
FORM TEXT2.

  CALL FUNCTION 'WRITE_FORM'  " Druckt einen Text
       EXPORTING
            ELEMENT   = 'TEXT2'
            WINDOW    = 'MAIN'.

ENDFORM.                                                    " TEXT2

*&---------------------------------------------------------------------*
*&      Form  TEXTKEY_QMFE
*&---------------------------------------------------------------------*
* generiert den Textschlüssel für Positionen                           *
*----------------------------------------------------------------------*
FORM TEXTKEY_QMFE.

*... Langtext zur Position

*... Textschlüssel zusammen bauen
  TEXT_OBJECT_NAME+0(12) = WQMFE-QMNUM.
  TEXT_OBJECT_NAME+12(4) = WQMFE-FENUM.
  CONDENSE TEXT_OBJECT_NAME NO-GAPS.

  PERFORM DEFINE_VARIABLE USING 'TEXT_QMFE' TEXT_OBJECT_NAME.


ENDFORM.                    " TEXTKEY_QMFE

*&---------------------------------------------------------------------*
*&      Form  DEFINE_VARIABLE
*&---------------------------------------------------------------------*
* Textschlüssel ans Formular schicken                                  *
*----------------------------------------------------------------------*
* --> P_NAME     name of the DEFINE                                    *
* --> P_CONTENT  Value of the defined variable                         *
*----------------------------------------------------------------------*
FORM DEFINE_VARIABLE USING VALUE(P_NAME)
                          VALUE(P_CONTENT).
*
  DATA: BEGIN OF COMMAND,
          X1(8)              VALUE 'DEFINE',
          X2(30),
          X3(3)              VALUE ' = ',
          X4 LIKE THEAD-TDNAME,
        END OF COMMAND,
        LENGTH TYPE I.
  FIELD-SYMBOLS: <L_F>.
*
  MOVE P_NAME TO COMMAND-X2.
  SHIFT COMMAND-X2 RIGHT.
  MOVE '&' TO COMMAND-X2(1).
  LENGTH = STRLEN( COMMAND-X2 ).
  ASSIGN COMMAND-X2+LENGTH(1) TO <L_F>.
  MOVE '&' TO <L_F>.
*
  MOVE P_CONTENT TO COMMAND-X4.
  SHIFT COMMAND-X4 RIGHT.
  MOVE '''' TO COMMAND-X4(1).
  LENGTH = STRLEN( COMMAND-X4 ).
  ASSIGN COMMAND-X4+LENGTH(1) TO <L_F>.
  MOVE '''' TO <L_F>.
*
  CALL FUNCTION 'CONTROL_FORM'
       EXPORTING
            COMMAND = COMMAND.
*

ENDFORM.                    " DEFINE_VARIABLE

*&---------------------------------------------------------------------*
*&      Form  ABSENDERLAND
*&---------------------------------------------------------------------*
* Absenderland ermitteln                                               *
*----------------------------------------------------------------------*
FORM ABSENDERLAND.

  SELECT SINGLE * FROM T024E WHERE EKORG EQ VIQMEL-EKORG.
  SELECT SINGLE * FROM T001 WHERE BUKRS EQ T024E-BUKRS.

ENDFORM.                    " ABSENDERLAND

*&---------------------------------------------------------------------*
*&      Form  SENDER
*&---------------------------------------------------------------------*
* Absender ermittel                                                    *
*----------------------------------------------------------------------*
FORM SENDER.

  IF VIQMEL-ADRNR IS INITIAL.
    SELECT SINGLE * FROM LFA1 WHERE
          LIFNR = VIQMEL-LIFNUM.
    IF WWORKPAPER-PRINT_LANG IS INITIAL.
      MOVE LFA1-SPRAS TO WWORKPAPER-PRINT_LANG.
    ENDIF.
    IF WWORKPAPER-TDTELENUM IS INITIAL.
      MOVE LFA1-TELFX TO WWORKPAPER-TDTELENUM.
    ENDIF.
  ELSE.
    CALL FUNCTION 'ADDRESS_GET_DATA'
         EXPORTING
              ENTRY_ADRNR  = VIQMEL-ADRNR
         IMPORTING
              COMPANY_DATA = SADR.
    IF WWORKPAPER-PRINT_LANG IS INITIAL.
      MOVE SADR-SPRAS TO WWORKPAPER-PRINT_LANG.
    ENDIF.
    IF WWORKPAPER-TDTELENUM IS INITIAL.
      MOVE SADR-TELFX TO WWORKPAPER-TDTELENUM.
    ENDIF.
  ENDIF.


ENDFORM.                    " SENDER
*&---------------------------------------------------------------------*
*&      Form  INFOSATZ
*&---------------------------------------------------------------------*
* Einkaufsinfosatz                                                     *
*----------------------------------------------------------------------*
FORM INFOSATZ.

  MEICO-LIFNR = VIQMEL-LIFNUM.
  MEICO-MATNR = VIQMEL-MATNR.

  CALL FUNCTION 'ME_READ_INFORECORD'
       EXPORTING
          INCOM             = MEICO
*         INPREISSIM        = ' '
       IMPORTING
*         daten             =
          EINADATEN         = EINA
*         einedaten         =
*         excom             =
*         expreissim        =
       EXCEPTIONS
          BAD_COMIN         = 1
          BAD_MATERIAL      = 2
          BAD_MATERIALCLASS = 3
          BAD_SUPPLIER      = 4
          NOT_FOUND         = 5
          OTHERS            = 6.

ENDFORM.                    " INFOSATZ
*&---------------------------------------------------------------------*
*&      Form  TEXT3
*&---------------------------------------------------------------------*
*       Gibt einen Text aus
*----------------------------------------------------------------------*
FORM TEXT3.

  CALL FUNCTION 'WRITE_FORM'  " Druckt einen Text
       EXPORTING
            ELEMENT   = 'TEXT3'
            WINDOW    = 'MAIN'.

ENDFORM.                                                    " TEXT3
*&---------------------------------------------------------------------*
*&      Form  REPEAT
*&---------------------------------------------------------------------*
* Wiederholungsdruck                                                   *
*----------------------------------------------------------------------*
FORM REPEAT.

  IF G_REPEAT GT 1.
    CALL FUNCTION 'WRITE_FORM'  " Druckt einen Text
        EXPORTING
           ELEMENT   = 'REPEAT'
           WINDOW    = 'REPEAT'.
  ENDIF.

ENDFORM.                    " REPEAT
*&---------------------------------------------------------------------*
*&      Form  SKIP_AUSFUEHREN
*&---------------------------------------------------------------------*
FORM SKIP_AUSFUEHREN.

  CALL FUNCTION 'WRITE_FORM'  " Druckt eine Leerzeile
      EXPORTING
         ELEMENT   = 'SKIP'
         WINDOW    = 'MAIN'.

ENDFORM.                    " SKIP_AUSFUEHREN
*&---------------------------------------------------------------------*
*&      Form  PARTNER
*&---------------------------------------------------------------------*
* Sachbearbeiter ermitteln                                             *
* das Programm ermittelt als verantwortlichen Sachbearbeiter den       *
* Partner, der als erster die Partnerrolle besitzt, die in der Tabelle *
* TQ80 als Verantwortlicher angegeben ist                              *
*----------------------------------------------------------------------*
FORM PARTNER TABLES IHPAD_LOC STRUCTURE IHPAD.
*AII-SCH: Änderung Andruck Sachbearbeiter immer 'AUSSTELLER' (A1)
* loop at ihpad_loc                          "aii-sch
*    where parvw = tq80-parvw_vera.          "aii-sch
  LOOP AT IHPAD_LOC                            "aii-sch neu
       WHERE PARVW = 'A1'                      "aii-sch neu
       AND KZLOESCH ne 'X'.                    "aii-feld,08.10.02

    break aii-feld.

*ende aii-sch
    IHPAD = IHPAD_LOC.        " only can pass ddic fields to SAPSCRIPT
* Aii-sch, 07. Mai 2001 : Ansprechpartner Qualitätsprüfung
    clear: h_qname, h_qtel01.
    select single * from PA0001 where pernr = ihpad-parnr
*                                     and endda ge sy-datum
*                                     and begda le sy-datum.
and endda ge viqmel-erdat   "Aii-feld,08.10.02
and begda le viqmel-erdat.  "Aii-feld,08.10.02
    if sy-subrc = 0.
      move Pa0001-ename to h_qname.
    endif.
    select single * from Pa0032 where pernr = ihpad-parnr
*                                     and endda ge sy-datum
*                                     and begda le sy-datum.
and endda ge viqmel-erdat   "Aii-feld,08.10.02
and begda le viqmel-erdat.  "Aii-feld,08.10.02
    if sy-subrc = 0.
      move pa0032-tel01 to h_qtel01.
    endif.
*ende aii-sch, 07.Mai 2001
    EXIT.
  ENDLOOP.
ENDFORM.                    " PARTNER
*&---------------------------------------------------------------------*
*&      Form  ULINE
*&---------------------------------------------------------------------*
* UNTERSTRICH                                                          *
*----------------------------------------------------------------------*
FORM ULINE.

  CALL FUNCTION 'WRITE_FORM'  " Druckt eine Leerzeile
      EXPORTING
         ELEMENT   = 'ULINE'
         WINDOW    = 'MAIN'.

ENDFORM.                    " ULINE
*&---------------------------------------------------------------------*
*&      Form  EXTRA_DATEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM EXTRA_DATEN.
  SELECT SINGLE * FROM EKKO WHERE EBELN = VIQMEL-ZZEBELN.
  SELECT SINGLE * FROM T024 WHERE EKGRP EQ EKKO-EKGRP.

ENDFORM.                    " EXTRA_DATEN
*&---------------------------------------------------------------------*
*&      Form  PRINT_INFO3
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PRINT_INFO3.


**********************************                               "  geändert BW 12.06.2012 + Anfang
  if viqmel-ADRNR is initial.                                    "  BW +
     select single * from adr6 where addrnumber = viqmel-adrnr.  "  BW +
email = adr6-smtp_addr.                                          "  BW +

else.                                                            "  BW +

**********************************                               "  geändert BW 12.06.2012 + Ende
  SELECT SINGLE * FROM LFA1 WHERE LIFNR = VIQMEL-LIFNUM.

* 2011-04-11 SLU Email

  select single * from adr6 where addrnumber = lfa1-adrnr and
                                  flgdefault = 'X'.

  email = adr6-smtp_addr.
endif.                                                           "  BW +
  

  CALL FUNCTION 'WRITE_FORM'
      EXPORTING
           ELEMENT       = 'LIEFERANTENDATEN'
*         FUNCTION      = 'SET'
*         TYPE          = 'BODY'
           WINDOW        = 'INFO3'
*    IMPORTING
*         PENDING_LINES =
       EXCEPTIONS
            ELEMENT       = 1
            FUNCTION      = 2
            TYPE          = 3
            UNOPENED      = 4
            UNSTARTED     = 5
            WINDOW        = 6
            OTHERS        = 7.

ENDFORM.                    " PRINT_INFO3
Vielleicht kann mir jemand helfen.
Am besten wäre mit einer kurzen Erklährung damit ich in Zukunft solche Fehler selber beseititgen kann und nicht immer dieses Forum benötige :P

Danke!!

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


Re: Fehler im Fremdenprogamm korrigieren

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
guten Morgen Bernhardt,
Es hat sich trotz meiner Änderung nicht geändert. Hat jemand eine Ahnung wieso?
ich habe da eine Vermutung, siehe Zeile 566-567:

Code: Alles auswählen.

  IF viqmel-adrnr IS INITIAL.
    SELECT SINGLE * FROM adr6 WHERE addrnumber = viqmel-adrnr.
sprich, wenn das Feld mit der Adressnummer nicht gefüllt ist, willst du aus adr6 etwas passend zu der Adressnummer selektieren. Das Ergebnis kann eigentlich nichts brauchbares sein. Kann es sein, dass du hier IS NOT INITIAL schreiben wolltest?

Hast du dir das Programm an dieser Stelle im Debugger angeschaut? Wie verhält es sich, wenn du einen Ausdruck zur Meldung 109805 erstellst?

Grüße
Alexander
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Morgen Alexander!

Mein Problem ist mit dem Debugger dass ich ihn nicht starten kann. Habe sowohl externe als auch interne Breakpoints gesetzt komme aber leider nicht in den Debugger ( weder über das Programm direkt noch über das Formular).

Das mit dem Initial ist scheinbar nicht ganz mein Ding. Wenn es für mich logisch ist Initial zu nehmen ist es zu 99,99% dass ich Is not Initial verwenden sollte.

Danke, werd es gleich probieren.

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
commolus hat geschrieben:Mein Problem ist mit dem Debugger dass ich ihn nicht starten kann. Habe sowohl externe als auch interne Breakpoints gesetzt komme aber leider nicht in den Debugger ( weder über das Programm direkt noch über das Formular).
als Entwicklerwerkzeug ist es eigentlich unverzichtbar. Ich würde daher versuchen die Ursache dafür zu finden, dass es nicht funktioniert. Hast du z.B. die dafür notwendigen Berechtigungen?
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Mein Ansatz war dieser wenn das Feld viqmel-ADRNR befüllt ist, nimm diesen Wert für die ADR6.

Wenn dieses Feld leer ist besorg dir diese Nummer aus den selects unterhalb der ELSE Anweisung.

Hmm, dieses Verflixte Initial

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Berechtigungen habe ich alle. Ich habe schon aus Verzweiflung einen Breakpoint zu beginn des Programmes gesetzt damit, so war meine Hoffnung, er startet sobald das Formular aufgerufen wird. Aber leider NIX.

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
commolus hat geschrieben:Mein Ansatz war dieser wenn das Feld viqmel-ADRNR befüllt ist, nimm diesen Wert für die ADR6.

Wenn dieses Feld leer ist besorg dir diese Nummer aus den selects unterhalb der ELSE Anweisung.

Hmm, dieses Verflixte Initial
ok, dann hast du es wirklich vertauscht. Ist aber eigentlich leicht zu merken: wenn das Feld viqmel-ADRNR befüllt ist --> ADRNR ist nicht leer --> ADRNR IS NOT INITIAL
Berechtigungen habe ich alle. Ich habe schon aus Verzweiflung einen Breakpoint zu beginn des Programmes gesetzt damit, so war meine Hoffnung, er startet sobald das Formular aufgerufen wird. Aber leider NIX.
bist du sicher, dass das Programm an dieser Stelle überhaupt durchläuft? Passiert es nicht mal bei PERFORM print_paper?
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Nein leider. Weder ein Session.- noch ein externe Breakpoint wird angesprochen.

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
commolus hat geschrieben:Nein leider. Weder ein Session.- noch ein externe Breakpoint wird angesprochen.
Wie startest du den Druck?
Direkt über das o.g. Programm oder über die Nachrichtenfindung in der Anwendung?

Die Nachrichtenverarbeitung in der Anwendung läuft im Verbucher, ergo mußt du vor dem Speichern in der Anwendung das Verbuchungsdebugging aktivieren.
Einfacher ist es aber die Nachricht über o.g. Programm zu starten, was laut der Kommentare auch gehen sollte.
Gruß Hendrik

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Ich kann das Programm leider nicht direkt Ausführen. Dabei kommt es zum Absturz.

Leider hat aber die Änderung von is intial auf is not initial keinerlei Auswirkungen auf mein Programm. Es kommt immer zur gleichen Fehlermeldung.

Die Adressnummer XY existiert nicht.

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
im Debugger wüsste man jetzt mehr, aber du kannst auch so prüfen, ob das Programm eine Adresse hätte selektieren müssen. Schau dir die Tabellen an, ob du manuell über SE16N zu der Adresse kommst. Also, was steht in der QMEL-ADRNR, QMEL-LIFNUM, LFA1 passend zur QMEL-LIFNUM und ADR6 passend zur LFA1-ADRNR

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
commolus

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
Also
VIQMEL-ADRNR = 37044
VIQMEL-LIFNUM = 933268
LFA1 passend zur QMEL-LIFNUM = 35062
ADR6 passend zur LFA1-ADRNR ( 35062 ) = Email alt
ADR6 passend zur LFA1-ADRNR ( 37044 ) = Email neu (Hier sollte nun die Fehlermeldung vermieden werden)

Anstatt der Anzeige erscheint die Fehlermeldung: Addressnummer 37044 existiert nicht.

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von commolus (Specialist / 153 / 32 / 0 ) »
QMEL ist gleich wie VIQMEL

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
hi!

Wenn das mit dem Debugger nachwievor nicht hinhaut gibts nen super Trick:
1) Bau eine Endlosschleife ein

Code: Alles auswählen.

sy-subrc = 0.
WHILE sy-subrc EQ 0. 
  sy-subrc = 1. "<-- Nur dass hier überhaupt was abgearbeitet wird
  sy-subrc = 0.
ENDWHILE.
2) Starte dein Programm
3) Ruf in einem anderen Modus die SM51/SM50 auf
4) Wähle den Prozess unter dem dein Programm läuft
5) Im Menü auf Administation->Programm->Debugging
6) Es sollte nun der Debugger für dein Programm starten

lg ADT

P.S.: Du könntest die betroffenen Felder auch zur Laufzeit mitloggen. Schau dir dazu die Hilfe von LOG-POINT bzw. ASSERT an. Sofern ihr schon 7.0 habt kann man die und auch BREAK-POINTS mittels CHECKPOINT-Gruppen sogar gesteuert ein- bzw. ausschalten.

EDIT: Hoppla! Die Endlosschleife war wirklich endlos! Habs korrigiert!
Zuletzt geändert von a-dead-trousers am 13.06.2012 12:38, insgesamt 1-mal geändert.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Fehler im Fremdenprogamm korrigieren

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
commolus hat geschrieben:Anstatt der Anzeige erscheint die Fehlermeldung: Addressnummer 37044 existiert nicht.
und, hat SAP mit der Fehlermeldung Recht? Hast du nachgeschaut ob die Adressen 35062 bzw. 37044 in ADR6 vorhanden sind? ADR6 enthält nur Emailadressen, da muss nicht unbedingt zu jeder ADDRNUMBER ein Datensatz existieren!
schöne Grüße
Alexander

ECC 6.0 EHP 7

Vergleichbare Themen

1
Antw.
2034
Views
Mahnstufe 2-Datumsbezug auf 1. Mahnung korrigieren
von sapit » 04.06.2008 13:19 • Verfasst in Basis
0
Antw.
2118
Views
Meldung F5 060Buchung ist nur bei Saldo Null möglich (Bitte Beleg korrigieren)
von mazu » 15.05.2019 14:31 • Verfasst in Financials
0
Antw.
1327
Views
Fehler
von Romantica » 09.07.2007 14:15 • Verfasst in ABAP® für Anfänger
3
Antw.
1240
Views
Fehler in der Ausgabe
von hmaxi96 » 20.11.2015 08:27 • Verfasst in ABAP® für Anfänger
6
Antw.
3567
Views
SD_CUSTOMER_MAINTAIN_ALL und Fehler
von HH_ABAP » 30.04.2018 08:37 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 769
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2391
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8976