SAP Jobsuche bei DV-Treff


Suchen
Roger70
  • Roger70
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo,

 

ich versuche gerade krampfhaft obigen include beim anlegen von kreditoren zu entwickeln.

 

*&---------------------------------------------------------------------*

*& Include ZXF05U01 *

*&---------------------------------------------------------------------*

tables: LFA1.

if LFA1-SPERQ = ''.

SET CURSOR FIELD 'LFA1-SPERQ'.

message E024(MEDCM).

endif.

 

ich möchte, dass beim sichern des stammsatzes eine fehlermeldung erscheint, wenn das feld LFA1-SPERQ nicht gefüllt ist.

dann soll der cursor genau an diese stelle springen und es muss eine eingabe gemacht werden.

allerdings passiert nun folgendes: der cursor springt nicht an die stelle und die fehlermeldung erscheint zwar, aber das programm kann nie verlassen werden (auch nicht, wenn das feld gefüllt ist)

kann mir jemand sagen , was ich hier falsch gemacht habe?

danke.

 

 

guenterlidl
vor 14 Jahre
Hallo,

also abgesehen davon, dass du innerhalb des EXITS den Cursor vorr. nicht setzen kannst, benutzt du die falschen Variablen!

Die Schnittstelle des Exist ist die I_LFA1! Du frägst die LFA1 ab und die ist in dem Exit immer SPACE, daher auch die immer wiederkehrende Fehlermeldung!

Deine Abfrage muß also lauten:

IF I_LFA1-SPERQ IS INITIAL.
  SET CURSOR FIELD 'LFA1-SPERQ'.    " Hier wäre LFA1 korrekt, aber ob das tut?!?!?
   message e024(medcm).
ENDIF.

Eine andere Möglichkeit wäre über einen Fieldexit!! (alte Technik, aber tut nach wie vor, auch unter dem neuesten Release!!)

Gruß
Günter
Roger70
  • Roger70
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo Günter,

 

danke für deinen Tip.

Leider bin ich nicht so der große Programmierer....

Soweit paßt das auch alles.

Allerdings: Wenn ich nun den Kreditor "freigeben" möchte (MK02), also das Sperrkennzeichen rausnehmen möchte, kann ich wiederum nicht sichern, da das System immer ein Sperrkennzeichen haben möchte.

Hast du eine Idee, wie ich diese Schleife umgehen kann, so dass ich bei Kreditor ändern ohne Sperrkennzeichen sichern kann?

Danke.

Gruß Roger

 

Chriz
  • Chriz
  • SAP Forum - Experte
vor 14 Jahre
Hi,

frag noch ab, ob du gerade in der entsprechenden Transaktion bist ...

SY-TCODE

Gruß

Chriz

guenterlidl
vor 14 Jahre
HI Roger,

exakt!

Bau einfach zuvor einen CHECK auf den TCODE ein:

z. Bsp:

CHECK sy-tcode+1(3) CS 'K01'.

Damit hast du alle Transaktionen damit erschlagen, also MK01, XK01 und FK01, falls du das möchtest!

Gruß
Günter
Roger70
  • Roger70
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo ihr beiden,

 

vielen Dank für eure Tips.

Ich habe den Code nun nach bestem Wissen angepaßt, allerdings funktioniert die Logik nur bei der XK01 und auch nur, wenn alle Sperrfelder angekreuzt sind.

In der MK01 und FK01 entsteht  eine Endlosschleife.

An sich soll ja nur je nach gewählter Transaktion eines der möglichen Sperrkennzeichen gesetzt werden müssen und nicht gleich alle. 

 

Was mache ich hier gedanklich falsch?

 

tables: LFA1, LFB1, LFM1.

* Check auf Transaktion MK01; FK01; XK01

CHECK sy-tcode+1(3) CS 'K01'.

 

*if sy-tcode CS 'MK01'.

if I_LFA1-SPERQ is initial.

message e024(medcm).

*CHECK sy-tcode+1 CS 'FK01'.

if sy-tcode EQ 'FK01' and I_LFA1-SPERR is initial or I_LFB1-SPERR is initial.

message e024(medcm).

*CHECK sy-tcode+1 CS 'XK01'.

if sy-tcode EQ 'XK01' and I_LFM1-SPERM is initial or I_LFA1-SPERR is initial or I_LFB1-SPERR is initial or I_LFA1-SPERM is initial or I_LFA1-SPERQ is initial .

message e024(medcm).

else.

endif.

else.

endif.

else.

endif.

 

Roger70
  • Roger70
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Hallo ihr beiden,

 

vielen Dank für eure Tips.

Ich habe den Code nun nach bestem Wissen angepaßt, allerdings funktioniert die Logik nur bei der XK01 und auch nur, wenn alle Sperrfelder angekreuzt sind.

In der MK01 und FK01 entsteht  eine Endlosschleife.

An sich soll ja nur je nach gewählter Transaktion eines der möglichen Sperrkennzeichen gesetzt werden müssen und nicht gleich alle. 

 

Was mache ich hier gedanklich falsch?

 

tables: LFA1, LFB1, LFM1.

* Check auf Transaktion MK01; FK01; XK01

*if sy-tcode CS 'MK01'.

if I_LFA1-SPERQ is initial.

message e024(medcm).

endif.

message e024(medcm).

endif..

if sy-tcode EQ 'XK01' and I_LFM1-SPERM is initial or I_LFA1-SPERR is initial or I_LFB1-SPERR is initial or I_LFA1-SPERM is initial or I_LFA1-SPERQ is initial .

message e024(medcm).

endif.

 

 

 

 

 

*CHECK sy-tcode+1 CS 'XK01'.

*CHECK sy-tcode+1 CS 'FK01'.

 

if sy-tcode EQ 'FK01' and I_LFA1-SPERR is initial or I_LFB1-SPERR is initial.

CHECK sy-tcode+1(3) CS 'K01'.

 

Roger70
  • Roger70
  • SAP Forum - Guru Thema Starter
vor 14 Jahre

Sorry,

so sieht mein Code aus.

tables: LFA1, LFB1, LFM1.

*CHECK sy-tcode+1(3) CS 'K01'.

 

* Check auf Transaktion MK01; FK01; XK01

CHECK sy-tcode+1(3) CS 'K01'.

 

*if sy-tcode CS 'MK01'.

if I_LFA1-SPERQ is initial.

*SET CURSOR FIELD 'LFA1-SPERQ'.

message e024(medcm).

else.

endif.

 

*CHECK sy-tcode+1 CS 'FK01'.

if sy-tcode EQ 'FK01' and I_LFA1-SPERR is initial or I_LFB1-SPERR is initial.

*SET CURSOR FIELD 'LFA1-SPERQ'.

message e024(medcm).

else.

endif.

*CHECK sy-tcode+1 CS 'XK01'.

if sy-tcode EQ 'XK01' and I_LFM1-SPERM is initial or I_LFA1-SPERR is initial or I_LFB1-SPERR is initial or I_LFA1-SPERM is initial or I_LFA1-SPERQ is initial .

*SET CURSOR FIELD 'LFA1-SPERQ'.

message e024(medcm).

else.

endif.

guenterlidl
vor 14 Jahre
Ich denke, du musst deine IF-Abfragen auch klammern!!

z. Bsp.

if sy-tcode EQ 'FK01' and (I_LFA1-SPERR is initial or I_LFB1-SPERR is initial).
.....