GUI Status

Getting started ... Alles für einen gelungenen Start.
21 Beiträge • Seite 1 von 2 (current) Nächste
21 Beiträge Seite 1 von 2 (current) Nächste

GUI Status

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Zusammen!

Ich habe leider noch nie einen GUI Status angelegt.

Mein Programm arbeitet mit Dynpro 1000. Wenn in meinem Programm der sy-subrc <> 0 ist, ist die ALV Ausgabe leer und das Programm sollte man nun mittels Zürück, Exit, Cancel verlassen können. Nun brauche ich einen GUI Status, damit man das Programm beenden kann.

Wie gehe ich hier am besten vor? Muß ich mir ein zweites Dynpro anlegen dafür?

Habe nach Start-of-Selection

set pf-status 'T_SOHA'.

Dieses dann angelegt und bedingt. Jetzt weis ich leider nicht weiter, wie ich den Status übergebe.

Hoffe Ihr könnt mir helfen.

Vielen Dank

Robin

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


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Da ich davon ausgehe, das dein ALV in einem COSTUM CONTROL auf einem Dynpro (nennen wir es 0100) liegt, musst du folgendes machen:

- Im PBO von 0100 den Status setzen (am besten ein eigenes Module wo du "SET PF-STATUS 'NAME_PF_STATUS' reinmachst)
- den Status pflegen und den Zurückbutton z.B. mit "BACK" belegen
- Im PAI den SY-UCOMM (Usercommand) prüfen (IF SY-UCOMM EQ 'BACK'. LEAVE TO SCREEN 0. ENDIF.)

Beitrag von Gast ( / / 0 / 3 ) »
Was für ein Programm ist das denn? Eins Modulpool, ein Include-Programm?

Ich mahce es zumindest immer so.

Links in der Liste, Rechtsklick auf den obersten Ordner.
Anlegen-GUI-Status.

Öffnen den Gui-Status klicke auf Funktionstasten
und gebe dann für die Symbole die du brauchst einen OK-Code ein.

Nicht vergessen beim Dynpro unter Elementliste bei deinem Typ 'Ok' z.B. 'ok_code' als Name einzugeben.
Den 'ok_code' must du dann noch in DATA definieren.

So dann brauchst du noch

Code: Alles auswählen.

SET PF-STATUS 'STANDARD'.
Standard ist der Name für meinen GUI-Status.

Und zu guter letzt brauchst du dann noch einen 'OK-Handler'.

Code: Alles auswählen.

CASE ok_code.
    WHEN 'SPEICHERN'.
    WHEN 'ZURÜCK'.
      LEAVE PROGRAM.
    WHEN 'BEENDEN'.
      LEAVE PROGRAM.
    WHEN 'ABBRECHEN'.
      LEAVE PROGRAM.
    WHEN 'TAB_FORM'.
      CALL SCREEN '1100' STARTING AT 20 5.
  ENDCASE.
Das wars schoN! :)

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Death!

Habe nun folgendes in meinem Coding, nur leider sind die Icon´s immer noch inaktiv. :(

Code: Alles auswählen.

*---------------------------------------------------------------------*
*       MODULE status_0100 OUTPUT                                     *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'S_SOHA'.
ENDMODULE.

*---------------------------------------------------------------------*
*       MODULE user_command_0100 INPUT                                *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  IF sy-ucomm = 'BACK' OR
     sy-ucomm = 'EXIT' OR
     sy-ucomm = 'CANCEL'.
    LEAVE TO SCREEN 0.
  ENDIF.
ENDMODULE.

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Gast!

Habe das so gemacht, aber da komme ich dann von meiner Selektionsmaske gar nicht weiter.
Öffnen den Gui-Status klicke auf Funktionstasten
und gebe dann für die Symbole die du brauchst einen OK-Code ein.

Was meinst Du denn mit dem OK-Code? Muß ich den bei den Funktionstasten auch wo übergeben?

Danke

Robin

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
HI Robin,

den status hast schon auf dem Dynpro wo auch dein Alv ist?
Wenn ja, hast den PF-STATUS auch angelegt? (Doppelclick)

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Death!

Ja, habe den pf-status mit doppelklick angelegt.

Ich habe nur ein Dynpro mit der Nummer 1000.

Muß das Module dann auch 1000 sein?

Danke

Robin

Beitrag von Grey_M (ForumUser / 21 / 0 / 0 ) »
Wenn du einen Knopf drückst, dann muss das Programm ja irgendwie wissen welchen Knopf du gedrückt hast.

Dafür bruchst du einen 'ok_code'.

Bei Funktionstasten steht dafür Funktionscode.

Der Gast. :)

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Okay Grey! :)

Das habe ich schon gemacht.

Werde es nocheinmal von vorne probieren ...

Danke

Robin

Beitrag von Zaphod Beeblebrox (ForumUser / 3 / 0 / 0 ) »
Hast Du in Deinem GUI Status, den Icons bzw. den Menüpunkten, überhaupt Werte zugewiesen?

mit besten Grüßen,
Zaphod
--
Life's too short to read boring signatures

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
robin1at hat geschrieben:Hallo Death!

Ja, habe den pf-status mit doppelklick angelegt.

Ich habe nur ein Dynpro mit der Nummer 1000.

Muß das Module dann auch 1000 sein?

Danke

Robin
Du hast nur ein Dynpro?
Und zwar nur das 1000?
1000 ist doch der Selectionscreen.
Heisst das, das du einen ALV per FUBA hast?

Schick mal dein Quellcode!

Beitrag von Grey_M (ForumUser / 21 / 0 / 0 ) »
MHh ich hab das noch nie über das sy-ucomm gemacht.

deklarier mal folgendes im Top-Include

Code: Alles auswählen.

DATA:  ok_code like sy-ucomm.
Bei deinem Dynpro unter Elementliste bei 'OK' ok_code.

Siehe Anhang 1.jpg

und dann eine case Abfrage mit ok_code = 'EGALWAS'.

Beitrag von robin1at (Specialist / 190 / 0 / 0 ) »
Hallo Death!

Ja, kommando zurück.

Bekomme das Dynpro 1000 erst dann, wenn ich beginne den GUI Status anzulegen.

Verwende im Moment gar kein Dynpro.

Danke

Robin


Hier mein Coding ...

Code: Alles auswählen.

TYPE-POOLS slis.

TABLES: lfa1, bseg, bkpf, bsik, bsak, zdlkz_t.

DATA: BEGIN OF itab_sumla OCCURS 10,
        lifnr LIKE lfa1-lifnr,
        land1 LIKE lfa1-land1,
        diekz LIKE bsak-diekz,
        belnr LIKE bsak-belnr,
        zuonr LIKE bsak-zuonr,
        blart LIKE bsak-blart,
        bukrs LIKE bsak-bukrs,
        monat LIKE bsak-monat,
        gjahr LIKE bsak-gjahr,
        shkzg LIKE bsak-shkzg,
        bschl LIKE bsak-bschl,
        dmbtr LIKE bsak-dmbtr,
        wrbtr LIKE bsak-wrbtr,
        zdlkz LIKE zdlkz_t-zdlkz,
        bezeichnung LIKE zdlkz_t-bezeichnung,
        soha TYPE p DECIMALS 2,
        soll TYPE p DECIMALS 2,
        haben TYPE p DECIMALS 2,
        zahler TYPE i,
      END OF itab_sumla.

* Zweite interne Tabelle für "READ" - Spalten Vergleich

DATA: BEGIN OF itab_zdlkz_t OCCURS 10,
        zdlkz LIKE zdlkz_t-zdlkz,
        bezeichnung LIKE zdlkz_t-bezeichnung,
      END OF itab_zdlkz_t.

DATA: wa_soha LIKE LINE OF itab_sumla.

DATA: wa_zdlkz LIKE LINE OF itab_zdlkz_t.

DATA: lv_subrc TYPE sy-subrc.

DATA: my_fieldcat TYPE slis_t_fieldcat_alv,
      wa_layout   TYPE slis_layout_alv,
      wa_fieldcat LIKE LINE OF my_fieldcat,
      repid TYPE sy-repid.

SELECT-OPTIONS: so_land FOR lfa1-land1,
                so_perio FOR bkpf-monat.

PARAMETERS pa_gj LIKE bseg-gjahr.

SELECT-OPTIONS: so_dlkz FOR zdlkz_t-zdlkz.

RANGES: range FOR bseg-gjahr.
IF NOT pa_gj IS INITIAL.
  range-sign = 'I'.
  range-option = 'EQ'.
  range-low = pa_gj .
  APPEND range.
ELSE.
  REFRESH range.
ENDIF.

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

* GUI-Titel anlegen

  SET TITLEBAR 'T_SOHA'.

  SELECT zdlkz bezeichnung
  FROM zdlkz_t INTO CORRESPONDING FIELDS OF TABLE itab_zdlkz_t
  WHERE zdlkz IN so_dlkz.

 SELECT a~lifnr a~land1 b~diekz b~belnr b~zuonr b~blart b~bukrs b~monat
        b~gjahr b~shkzg b~bschl b~dmbtr b~wrbtr
            INTO CORRESPONDING FIELDS OF TABLE itab_sumla
                    FROM ( lfa1 AS a
                       INNER JOIN bsak AS b
                       ON a~lifnr = b~lifnr )
                       WHERE bukrs IN ('1001')
                       AND blart IN ('A1', 'A2', 'A3')
                       AND land1 IN so_land
                       AND gjahr IN range
                       AND monat IN so_perio.
  IF sy-subrc <> 0.
    lv_subrc = sy-subrc.
  ENDIF.

 SELECT a~lifnr a~land1 b~diekz b~belnr b~zuonr b~blart b~bukrs b~monat
        b~gjahr b~shkzg b~bschl b~dmbtr b~wrbtr
            APPENDING CORRESPONDING FIELDS OF TABLE itab_sumla
                    FROM ( lfa1 AS a
                       INNER JOIN bsik AS b
                       ON a~lifnr = b~lifnr )
                       WHERE bukrs IN ('1001')
                       AND blart IN ('A1', 'A2', 'A3')
                       AND land1 IN so_land
                       AND gjahr IN range
                       AND monat IN so_perio.

  IF sy-subrc <> 0 OR lv_subrc <> 0.
    MESSAGE e819(3f).
*   Keine Daten im gewählten Zeitraum vorhanden
  ENDIF.

* wa_soha-.... weil durch DATA Deklaration wa_soha

  LOOP AT itab_sumla INTO wa_soha.


    IF wa_soha-shkzg = 'H'.
      wa_soha-haben = wa_soha-dmbtr.
    ELSE.
      wa_soha-soll = wa_soha-dmbtr.
    ENDIF.

    wa_soha-soha = wa_soha-haben - wa_soha-soll.

* Spalten Vergleich

    IF wa_soha-zuonr = space.
      wa_soha-zdlkz = space.
    ELSE.
      READ TABLE itab_zdlkz_t INTO wa_zdlkz WITH KEY zdlkz =
      wa_soha-zuonr.
      IF sy-subrc = 0.
        wa_soha-zdlkz = wa_zdlkz-zdlkz.
        wa_soha-bezeichnung = wa_zdlkz-bezeichnung.
      ENDIF.
    ENDIF.

* Zähler für keine Einträge in DlKz

    IF wa_soha-zdlkz = space.
      wa_soha-zahler = 1.
    ELSE.
      wa_soha-zahler = 0.
    ENDIF.

    MODIFY itab_sumla FROM wa_soha TRANSPORTING soll haben soha zahler
    zdlkz bezeichnung.

  ENDLOOP.


* Zusätzliche Spalten für Haben - Soll Berechnung, ...

  wa_fieldcat-fieldname = 'ZUONR'.
  wa_fieldcat-col_pos = 14.
  wa_fieldcat-seltext_l = 'ZUONR'.
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'BEZEICHNUNG'.
  wa_fieldcat-col_pos = 15.
  wa_fieldcat-seltext_l = 'BEZEICHNUNG'.
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'SOLL'.
  wa_fieldcat-col_pos = 16.
  wa_fieldcat-seltext_l = 'Soll'.
  wa_fieldcat-no_zero = 'X'.  " Es werden keine Einträge mit 0 angezeigt
  wa_fieldcat-do_sum = 'X'.   " Spalte summieren
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'HABEN'.
  wa_fieldcat-col_pos = 17.
  wa_fieldcat-seltext_l = 'Haben'.
  wa_fieldcat-no_zero = 'X'.
  wa_fieldcat-do_sum = 'X'.
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'SOHA'.
  wa_fieldcat-col_pos = 18.
  wa_fieldcat-seltext_l = 'Haben - Soll'.
  wa_fieldcat-do_sum = 'X'.
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'BELNR'.
  wa_fieldcat-col_pos = 19.
  wa_fieldcat-seltext_l = 'BELNR'.
  APPEND wa_fieldcat TO my_fieldcat.

  wa_fieldcat-fieldname = 'ZAHLER'.
  wa_fieldcat-col_pos = 20.
  wa_fieldcat-seltext_l = 'keine Einträge DlKz'.
  wa_fieldcat-do_sum = 'X'.
  APPEND wa_fieldcat TO my_fieldcat.

* Tabelle sortieren

  SORT itab_sumla BY gjahr monat land1.

* Spaltenbreite optimieren

  wa_layout-colwidth_optimize = 'X'.
  wa_layout-zebra = 'X'.

  repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name         = sy-repid
            i_structure_name       = 'ZMYSTRUKTUR'
       CHANGING
            ct_fieldcat            = my_fieldcat
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
            OTHERS                 = 3.

  IF sy-subrc <> 0.
    MESSAGE e707(69).
*   Lesefehler
  ENDIF.

  DELETE my_fieldcat WHERE NOT ( fieldname = 'BLART'
                               OR  fieldname = 'ZDLKZ'
                               OR  fieldname = 'LAND1'
                               OR  fieldname = 'GJAHR'
*                              OR  fieldname = 'ZUONR'
                               OR  fieldname = 'BEZEICHNUNG'
*                              OR  fieldname = 'SHKZG'
*                              OR  fieldname = 'DMBTR'
*                              OR  fieldname = 'WRBTR'
                               OR  fieldname = 'BELNR'
                               OR  fieldname = 'SOLL'
                               OR  fieldname = 'HABEN'
                               OR  fieldname = 'SOHA'
                               OR  fieldname = 'ZAHLER'
                               OR  fieldname = 'MONAT' ).

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout     = wa_layout
            it_fieldcat   = my_fieldcat
       TABLES
            t_outtab      = itab_sumla
       EXCEPTIONS
            program_error = 1
            OTHERS        = 2.

  IF sy-subrc <> 0.
    MESSAGE e707(69).
*   Lesefehler
  ENDIF.

Beitrag von Zaphod Beeblebrox (ForumUser / 3 / 0 / 0 ) »
Dein Porgramm ist schon ein Modulpool, oder?
--
Life's too short to read boring signatures

Beitrag von Zaphod Beeblebrox (ForumUser / 3 / 0 / 0 ) »
ok, ok das coding kam gerade als ich das andere Posting abgeschickt habe :-(
--
Life's too short to read boring signatures

Vergleichbare Themen

5
Antw.
835
Views
GUI-Status
von il.ost » 10.04.2019 08:57 • Verfasst in ABAP® für Anfänger
3
Antw.
2081
Views
PF Status + Sprachen
von jensschladitz » 28.07.2017 13:44 • Verfasst in ABAP® Core
5
Antw.
3864
Views
sap pf-status erweitern
von Mrs. Hilflos » 18.06.2007 16:28 • Verfasst in Dialogprogrammierung
2
Antw.
2451
Views
Status von Transportaufträgen
von cali » 09.03.2007 11:15 • Verfasst in Basis
3
Antw.
2451
Views
GUI-Status mit FB aktivieren
von Suti » 14.02.2007 16:25 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1776
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

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.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1776
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 350
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 946
MS-Word als Editor
letzen Monat von tekko 1 / 4457