Code: Alles auswählen.
SET PF-STATUS 'STANDARD'.
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.
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.
Ö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
Du hast nur ein Dynpro?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
Code: Alles auswählen.
DATA: ok_code like sy-ucomm.
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.