Code: Alles auswählen.
FORM help USING c_help.
CASE c_help.
WHEN 'MM01' OR 'MM02' OR 'MM03'.
REFRESH bdc_tab.
PERFORM dynpro USING:
'X' 'SAPLMGMM' '0060',
* ' ' 'BDC_OKCODE' ' ',
' ' 'RMMG1-MATNR' mat_io.
WHEN 'ME11' OR 'ME12' OR 'ME13'.
REFRESH bdc_tab.
PERFORM dynpro USING:
'X' 'SAPMM06I' '0100',
* ' ' 'BDC_OKCODE' ' ',
' ' 'EINA-INFNR' mat_io.
WHEN 'MK03'.
REFRESH bdc_tab.
PERFORM dynpro USING:
'X' 'SAPMF02K' '0108',
* ' ' 'BDC_OKCODE' ' ',
' ' 'RF02K-LIFNR' mat_io.
ENDCASE.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'
DESTINATION 'NONE'
EXPORTING
tcode = c_help
TABLES
using_tab = bdc_tab.
ENDFORM. "help
Thanatos82 hat geschrieben: check doch mal bitte die SU53 nachdem du aus deinem Programm in die Transaktion abspringst. Sind doch eventuell Berechtigungsprüfungen fehlgeschlagen?
Die Transaktion wird ganz normal durchgeführt, aktiv ist allerdings nur der grüne Zurück-Button. Bei bestätigen von Selbigem komme ich in meine eigene Transaktion zurück (also nicht in mk03).Thanatos82 hat geschrieben:Was passiert wenn du im Einstiegsfenster mit Return oder dem grünen häkchen bestätigst?
Ich rufe ja die Transaktion über den FuBa ABAP4_CALL_TRANSACTION auf:black_adept hat geschrieben: Irgendwo in deinem Programm wird ja dann "CALL TRANSACTION ... USING bdc_tab OPTIONS from opt..." stehen.
Code: Alles auswählen.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'
DESTINATION 'NONE'
EXPORTING
tcode = c_help
TABLES
using_tab = bdc_tab.
Code: Alles auswählen.
FORM dynpro USING dynbegin fnam fval.
CASE dynbegin.
WHEN 'X'.
CLEAR bdc_tab.
bdc_tab-program = fnam.
bdc_tab-dynpro = fval.
bdc_tab-dynbegin = dynbegin.
APPEND bdc_tab.
WHEN OTHERS.
CLEAR bdc_tab.
bdc_tab-fnam = fnam.
bdc_tab-fval = fval.
APPEND bdc_tab.
ENDCASE.
ENDFORM.
Code: Alles auswählen.
CASE c_help.
WHEN 'MM01' OR 'MM02' OR 'MM03'.
REFRESH bdc_tab.
PERFORM dynpro USING:
'X' 'SAPLMGMM' '0060',
* ' ' 'BDC_OKCODE' ' ',
' ' 'RMMG1-MATNR' mat_io.
Code: Alles auswählen.
FORM help USING c_help mat_io.
CASE c_help.
WHEN 'MM03'.
SET PARAMETER ID 'MAT' FIELD mat_io.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN 'ME13'.
SET PARAMETER ID 'INF' FIELD mat_io.
CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. "help
Der von dir verwendete FuBa bietet nich alle Optionen für CALL TRANSACTION. Aus der Hilfe zu CALL TRANSACTION:maraminden hat geschrieben:Ich komme leider nicht darauf, wie ich auf diesem Wege an dieses Options-Feld komme
Code: Alles auswählen.
SET PARAMETER ID 'MAT' FIELD mat_io.
CALL TRANSACTION 'MM03'
OPTIONS FROM opt
opt-nobinpt = "X"
opt-nobiend = "X"
AND SKIP FIRST SCREEN.
nein, dein Beispiel passt nicht ganz. Einen Vorschlag für einen einfachen Aufruf der MM03 habe ich ja bereits unterbreitet. Es ist ein Zweizeiler, mehr ist an dieser Stelle auch nicht nötig. In deinem Code mischst du die Anweisungen OPTIONS FROM und SKIP FIRST SCREEN. Bei denen verhält es sich aber wie bei dem Highländer - es kann nur einen gebenmaraminden hat geschrieben: Sähe das dann ungefähr so aus (?):
Code: Alles auswählen.
"Parameter-ID´s für den Transaktionsaufruf
DATA: l_spagpa TYPE STANDARD TABLE OF rfc_spagpa,
wa_spagpa LIKE LINE OF l_spagpa,
l_msgtext(80) TYPE c. "Nachricht aus dem TA-Aufruf
"Flag für das Überspringen des Selektionsbildes
CONSTANTS: con_skip TYPE c VALUE 'X'.
"Parameter-ID füllen
refresh l_spagpa.
wa_spagpa-parid = 'MAT'.
wa_spagpa-parval = mat_io.
APPEND wa_spagpa TO l_spagpa.
CASE c_help.
WHEN 'MM01'.
PERFORM call_ta USING l_spagpa
'MM01'
'' "<-- Selektionsbild wird angezeigt
CHANGING l_msgtext.
WHEN 'MM02'.
PERFORM call_ta USING l_spagpa
'MM02'
con_skip
CHANGING l_msgtext.
WHEN 'MM03'.
PERFORM call_ta USING l_spagpa
'MM03'
con_skip
CHANGING l_msgtext.
ENDCASE.
*&---------------------------------------------------------------------*
*& Form CALL_TA
*&---------------------------------------------------------------------*
* ruft eine Transaktion im neuen Modus auf
*----------------------------------------------------------------------*
* -->U_SPAGPA - Tabelle mit SPA/GPPA-Parametern
* -->U_TCODE - aufzurufende Transaktion
* <--C_MSGTEXT - Fehlernachricht
*----------------------------------------------------------------------*
FORM call_ta USING u_spagpa TYPE STANDARD TABLE
u_tcode LIKE tstc-tcode
u_skip TYPE c
CHANGING c_msgtext TYPE c.
AUTHORITY-CHECK OBJECT 'S_TCODE'
ID 'TCD' FIELD u_tcode.
IF sy-subrc <> 0.
MESSAGE w011(co) WITH u_tcode INTO c_msgtext.
MESSAGE w011(co) WITH u_tcode.
EXIT.
ENDIF.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK u_tcode
DESTINATION 'NONE'
EXPORTING
tcode = u_tcode
skip_screen = u_skip
TABLES
spagpa_tab = u_spagpa
EXCEPTIONS
communication_failure = 1 MESSAGE c_msgtext
system_failure = 2 MESSAGE c_msgtext.
IF sy-subrc NE 0.
WRITE: c_msgtext.
ELSE.
c_msgtext = 'TA erfogreich aufgerufen'.
ENDIF.
ENDFORM. "call_ta
CALL TRANSACTION startet immer im selben Modus. Den neuen Modus bekommst du über STARTING NEW TASK beim FuBa ABAP4_CALL_TRANSACTION hin. Der FuBa hat aber nicht die von black_adept angegeben Paramter, um SAP mit zuteilen, das die TA nicht im BatchInput aufgerufen wird.maraminden hat geschrieben:die Aufgabenstellung sah vor, dass die Transaktionen in einem neuen Modus aufgerufen werden. Der Weg über den FuBa war der einzige, den ich dafür gefunden habe. Wenn jemand weiß wie das ohne geht, bin ich für jegliche Lösungen komplett offen!