ich habe einen Z-Report ZVA02 und in diesem rufe ich per Batch Input die VA02 auf und ändere darin Daten und Sichere den Auftrag.
Beim Sichern im Userexit MV45AFZZ möchte ich jetzt wissen, ob der Aufruf der VA02 über die übergeordnete Transaktion ZVA02 vorgenommen wurde.
Denn wenn, ja, dann soll eine Aktion im User Exit nicht ausgeführt werden.
Geht sowas?
Grüße,
markus1234
DaTA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
data: w_mode(1).
w_mode = 'E'
refresh bdcdata.
clear: bdcdata.
perform bdc_dynpro using 'SAPMV45A' '0102'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VBELN'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-VBELN'
idat-vbeln.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POCO'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPLCEI0' '0109'.
perform bdc_field using 'BDC_CURSOR'
'RCTMS-MWERT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RCTMS-MNAME(01)'
idat-atnam.
perform bdc_field using 'RCTMS-MWERT(01)'
idat-atwrt.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
call transaction 'VA02' using bdcdata mode w_mode update 'S'.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
Ich glaube nicht, dass sich das einfach aus der SY Variable auslesen lassen wird. SY-REPID, SY-CPROG und SY-TCODE dürften nach dem CALL TRANSACTION alle auf die VA02 zeigen.
Das wäre meines Erachtens ein klassicher Anwendungsfall von ABAP-Memory oder Set-/Get-Parametern die ja einige der wenigen Dinge sind, die über Transaktionsgrenzen hinweg funktionieren.
Einfach in deinem Z-Programm mit
EXPORT ... TO MEMORY ID ..
bzw.
SET PARAMETER ID ... FIELD ...
einen x-bel. Wert setzen und im User Exit mit
IMPORT ... FROM MEMORY ID ...
bzw.
GET PARAMETER ID ... FIELD ...
den gesetzten Wert auslesen.
Am Ende
FREE MEMORY ID ...
bzw.
SET PARAMETER ID ... FIELD space
zum Löschen der gesetzen Informationen nicht vergessen.
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.
Hallo,
u.U. könnte der Exit ja auch nur prüfen, ob er im Batch läuft.
Reicht natürlich nur aus, wenn diese auszuschaltende Funktionalität nur Online laufen soll...