Funktionscode im Batchlauf senden

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Funktionscode im Batchlauf senden

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo,

ich habe mit dem FuBau 'REUSE_ALV_GRID_DISPLAY_LVC' einen ALV gebaut, der eine 'berechnende' Spalte enthält. Der Wert ermittelt sich aus dem Wert der Vorgängerzeile.
Dadurch wird ein Neuberechnen der Spalte bei zB. Sortierung oder Layoutwechsel erforderlich.

Das funktioniert auch soweit.


Das Problem ist jetzt folgendes:
Die User können am Selektionsscreen ein Layout für die ALV-anzeige auswählen.
Der Report läuft dann in etwa so.
- ermitteln der Daten
- Spalte berechnen
- ALV ausgeben
- ALV stellt sich um auf das neue Layout.
----> und die berechnende Spalte ist falsch.

Dazu hab ich folgenden Lösungsansatz gefunden:
vor dem Aufruf des ALV:

Code: Alles auswählen.

    CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
         EXPORTING                                         
             functioncode                      = 'FIRST'         
         EXCEPTIONS                                          
             function_not_supported     = 1                
             OTHERS                             = 2.         
- ermitteln der Daten
- Spalte berechnen
- ALV ausgeben
- ALV stellt sich um auf das neue Layout.
- Usercommand des ALV wird ausgelöst
- Spalte wird neu berchnet

Code: Alles auswählen.

    WHEN 'FIRST'.      " Programmstart 
*     Rüstwechsel ermitteln                            
      IF p_konfig = 'X'.                                   
        PERFORM calc_ruestwechsel CHANGING it_output_alv.  
        rs_selfield-refresh = 'X'.                       
      ENDIF.                                              

Funktioniert ja auch super :lol: :lol: :lol:

bis der Report das erste mal im Batch gestartet wurde :cry:
ABAP Control Framework kann nicht initialisiert werden ...
ABAP-Prozessor: RAISE_EXCEPTION
Job wurde abgebrochen


hat jemand eine Idee, wie man den ALV dazu bewegen kann, daß er nach der Anzeige eine FORM-Routine aufruft - bzw. in den Usercommand läuft ?????
und das Ganze auch im Batch ??????

mfg
Richard

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


Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
Dir ist schon klar, dass dein Ansatz schon in die falsche Richtung läuft, oder?

Warum liest du dir das Layout nicht vorher ein und manipulierst deine Tabelle gleich vor der ersten Ausgabe entsprechend der Sortier/Filterkriterien?

Dann brauchst du gar keinen Usercommand mehr absetzen weil die Tabelle gleich korrekt angezeigt wird.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

da hab ich aber trotzdem, daß gleiche problem.

bevor der alv nicht angezeigt wird, kann ich auch nicht mit dem FuBau 'REUSE_ALV_GRID_LAYOUT_INFO_GET' die Sortier/Filtertabelle lesen.

mfg
richard

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Hallo,

Ich hab noch mal 2 Fragen zu dem Problem, wahrscheinlich hab ich das Problem falsch verstanden.
Wie soll das ALV sich im Batch denn anzeigen?
Funktioniert der Report ohne den Funktionscode im Batch fehlerfrei?

Gruß,
Flo

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo flo,

also: online läuft der report, und verhält sich genau so, wie ich will.

im batch: natürlich zeigt sich der ALV im batch nicht - aber die spoolliste schaut so aus, wie der ALV sie online anzeigen würde.
das problem ist jetzt, daß der FuBau 'SAPGUI_SET_FUNCTIONCODE' im batchlauf einen dump erzeugt :cry:

mfg
richard

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Hallo,

der Baustein sieht auch abenteuerlich aus unter 4.6C. Die Fehlerbehandlung sieht irgendwie auskommentiert aus;)
Hast du mal die Methode cl_gui_cfw=>set_new_ok_code ausprobiert oder liefert das die selben Probleme wie der FuBa.

Gruß,
Flo

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

die methode hab ich schon ausprobiert. da funktioniert das ganze nicht mehr (auch online nicht). es kommt zwar keine fehlermeldung - es wird aber auch kein funktionscode ausgelöst.

mfg
richard

Beitrag von black_adept (Top Expert / 3946 / 105 / 886 ) »
RiffRaff hat geschrieben:hallo,

da hab ich aber trotzdem, daß gleiche problem.

bevor der alv nicht angezeigt wird, kann ich auch nicht mit dem FuBau 'REUSE_ALV_GRID_LAYOUT_INFO_GET' die Sortier/Filtertabelle lesen.

mfg
richard
So geht das tatsächlich nicht - aber ein anderer Ansatz schon.
Ich schreib dir mal eine Minimaldemo hier rein. Hoffe das reicht dir aus um weiterzukommen.

Code: Alles auswählen.

REPORT.
TYPE-POOLS: slis.
DATA: gt_daten       TYPE STANDARD TABLE OF usr02 WITH NON-UNIQUE DEFAULT KEY,
      is_variant     TYPE disvariant,
      et_sort        TYPE slis_t_sortinfo_alv,
      et_filter      TYPE slis_t_filter_alv,
      it_def_fc      TYPE slis_t_fieldcat_alv,
      is_layout      TYPE slis_layout_alv.


END-OF-SELECTION.
  SELECT *
      INTO TABLE gt_daten FROM usr02.

  is_variant-report = sy-repid.
  is_variant-handle = '0001'.


* Zum Testen habe ich eine Variant STEFAN2 angelegt mit eingestellten Filtern
  is_variant-variant = 'STEFAN2'.

* Dummerweise musst du einen Feldkatalog mitgeben - am besten den nehmen,
* den du sowieso zum Anzeigen des Grid verwendest.  Dann kannst du dir
* den hiesigen Aufruf mit ...._MERGE sparen, da du ja den FC irgendwo schon hast.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'USR02'
      i_bypassing_buffer     = 'X'
    CHANGING
      ct_fieldcat            = it_def_fc
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.

  CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
    EXPORTING
      i_dialog            = ''
      i_user_specific     = 'X'
      it_default_fieldcat = it_def_fc
      i_layout            = is_layout
      i_bypassing_buffer  = 'X'
    IMPORTING
      et_sort             = et_sort
      et_filter           = et_filter
    CHANGING
      cs_variant          = is_variant
    EXCEPTIONS
      wrong_input         = 1
      fc_not_complete     = 2
      not_found           = 3
      program_error       = 4
      OTHERS              = 5.

* Hier mal im Debugger schauen -
  BREAK-POINT.
* Wenn die Variante existiert und du du Filter/Sortierungen eingestellt hast
* solltest du die hier sehen können in ET_SORT und ET_FILTER


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_structure_name   = 'USR02'
      i_save             = 'A'
      is_variant         = is_variant
    TABLES
      t_outtab           = gt_daten
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
P.S. - hatte ich eben vergessen.
Die Variante hatte ich benutzerspezifisch angelegt. Wenn du allgemeine Varianten verwendest bitte im Aufruf von REUSE_ALV_VARIANT_SELECT das entsprechende Feld nicht mit 'X' belegen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2050
Views
Auftrag kopieren und Partnerschema im Batchlauf ändern
von Matse66 » 24.02.2007 01:49 • Verfasst in Sales and Distribution
4
Antw.
4695
Views
Funktionscode auslösen
von RiffRaff » 17.12.2004 12:14 • Verfasst in ABAP® Core
9
Antw.
13801
Views
Funktionscode (GUI-Status)
von Charadin » 27.10.2005 16:35 • Verfasst in Dialogprogrammierung
2
Antw.
889
Views
Funktionscode ALV, Zeichen ändern
von BMWi801 » 24.07.2018 14:53 • Verfasst in ABAP® für Anfänger
2
Antw.
2455
Views
TA: FD32 - Funktionscode nicht auswählbar
von stoi » 16.01.2006 15:24 • Verfasst in Financials

Ü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.