Dieses Programm zeigt den Absprung in die Tabellenpflege per SM30 für Pushbuttons.
Kern ist der FuBa VIEW_MAINTENANCE_CALL.
*&---------------------------------------------------------------------*
*& Report ZTEST45
*&---------------------------------------------------------------------*
*& basiert auf einen Report ZHR_AZP
*&---------------------------------------------------------------------*
*
* Schöne Verwendung der Pushbuttons und des Fuba zur Pflege von Tabellen
* VIEW_MAINTENANCE_CALL
*
*
*
*
REPORT ZTEST45.
TABLES: sscrfields.
DATA: view_name LIKE dd02v-tabname,
* gv_ugr(2),
gt_sel TYPE STANDARD TABLE OF vimsellist WITH HEADER LINE.
DATA: gs_id TYPE RANGE OF hident WITH HEADER LINE,
gv_id TYPE hident.
SELECTION-SCREEN BEGIN OF BLOCK b01
WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS: gv_ugr(2).
SELECTION-SCREEN END OF BLOCK b01.
SELECTION-SCREEN BEGIN OF BLOCK b02
WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z01 USER-COMMAND z01.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z02 USER-COMMAND z02.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z03 USER-COMMAND z03.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z04 USER-COMMAND z04.
SELECTION-SCREEN SKIP !.
SELECTION-SCREEN END OF BLOCK b02.
SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME.
* WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-r01 USER-COMMAND r01.
SELECTION-SCREEN END OF BLOCK b03.
SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE TEXT-004.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z10 USER-COMMAND z10.
SELECTION-SCREEN END OF BLOCK b04.
SELECTION-SCREEN BEGIN OF BLOCK b05 WITH FRAME TITLE TEXT-005.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 10(35) TEXT-z11 USER-COMMAND z11.
SELECTION-SCREEN END OF BLOCK b05.
AT SELECTION-SCREEN.
CASE sscrfields.
WHEN 'Z01'.
view_name = 'V_T550P'. "Pausenpläne
gt_sel-viewfield = 'MOTPR'.
gt_sel-operator = 'EQ'.
gt_sel-value = gv_ugr.
APPEND gt_sel.
PERFORM get_settings.
PERFORM call_view.
WHEN 'Z02'.
view_name = 'V_T550A'. "Tagesarbeitszeitpläne
gt_sel-viewfield = 'MOTPR'.
gt_sel-operator = 'EQ'.
gt_sel-value = gv_ugr.
APPEND gt_sel.
PERFORM get_settings.
PERFORM call_view.
WHEN 'Z03'.
view_name = 'V_T551A'. "Periodenarbeitszeitpläne
gt_sel-viewfield = 'MOTPR'.
gt_sel-operator = 'EQ'.
gt_sel-value = gv_ugr.
APPEND gt_sel.
PERFORM get_settings.
PERFORM call_view.
WHEN 'Z04'.
view_name = 'V_T508A'. "Arbeitszeitplanregel
gt_sel-viewfield = 'ZEITY'.
gt_sel-operator = 'EQ'.
gt_sel-value = '1'.
gt_sel-and_or = 'OR'.
APPEND gt_sel.
gt_sel-viewfield = 'ZEITY'.
gt_sel-operator = 'EQ'.
gt_sel-value = '2'.
gt_sel-and_or = 'AND'.
APPEND gt_sel.
"Einschränkung auf den Feiertagskalender
PERFORM get_settings.
SELECT ident INTO gv_id FROM thoci WHERE ident IN gs_id.
gt_sel-viewfield = 'MOFID'.
gt_sel-operator = 'EQ'.
gt_sel-value = gv_id.
gt_sel-and_or = 'OR'.
APPEND gt_sel.
ENDSELECT.
PERFORM call_view.
WHEN 'Z10'.
* view_name = 'V_T552W'. "Periodenarbeitszeitpläne
view_name = 'V_T552V'.
gt_sel-viewfield = 'MOTPR'.
gt_sel-operator = 'EQ'.
gt_sel-value = gv_ugr.
APPEND gt_sel.
PERFORM get_settings.
PERFORM call_view.
WHEN 'R01'.
* PERFORM check_t551c.
* PERFORM check_existing.
* CALL TRANSACTION 'OG00'.
data: lv_pbeg(6),
lv_pend(6).
concatenate '01' sy-datum(4) into lv_pbeg.
concatenate '01' sy-datum(4) into lv_pend.
add 1 to lv_pend.
SUBMIT RPTSHF00 AND RETURN
* with PRD01 = '012018'
* with PRD02 = '012019'
with PRD01 = lv_pbeg
with PRD02 = LV_Pend
with ONLINE = 'N'
VIA SELECTION-SCREEN.
when 'Z11'.
PERFORM check_t551c.
PERFORM check_existing.
message 'Erledigt!' type 'S'.
ENDCASE.
INITIALIZATION.
GET PARAMETER ID 'MOL' FIELD gv_ugr.
START-OF-SELECTION.
MESSAGE 'Bitte Auswahlbutton verwenden' TYPE 'I'.
*&---------------------------------------------------------------------*
*& Form GET_SETTINGS
*&---------------------------------------------------------------------*
* Allgemeine Einstellungen
*----------------------------------------------------------------------*
FORM get_settings.
"Feiertagskalender
CASE gv_ugr.
WHEN '01'.
gs_id-sign = 'I'.
gs_id-option = 'BT'.
gs_id-low = '00'.
gs_id-high = '98'.
APPEND gs_id.
WHEN '03'.
gs_id-sign = 'I'.
gs_id-option = 'EQ'.
gs_id-low = 'AT'.
APPEND gs_id.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_VIEW
*&---------------------------------------------------------------------*
* View aufrufen
*----------------------------------------------------------------------*
FORM call_view.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U'
* CORR_NUMBER = ' '
* GENERATE_MAINT_TOOL_IF_MISSING = ' '
* SHOW_SELECTION_POPUP = ' '
view_name = view_name
* NO_WARNING_FOR_CLIENTINDEP = ' '
* RFC_DESTINATION_FOR_UPGRADE = ' '
* CLIENT_FOR_UPGRADE = ' '
* VARIANT_FOR_SELECTION = ' '
* COMPLEX_SELCONDS_USED = ' '
* CHECK_DDIC_MAINFLAG = ' '
* SUPPRESS_WA_POPUP = ' '
TABLES
dba_sellist = gt_sel[] "Hier können Selektionen vorgenommen werden!
* EXCL_CUA_FUNCT =
* EXCEPTIONS
* CLIENT_REFERENCE = 1
* FOREIGN_LOCK = 2
* INVALID_ACTION = 3
* NO_CLIENTINDEPENDENT_AUTH = 4
* NO_DATABASE_FUNCTION = 5
* NO_EDITOR_FUNCTION = 6
* NO_SHOW_AUTH = 7
* NO_TVDIR_ENTRY = 8
* NO_UPD_AUTH = 9
* ONLY_SHOW_ALLOWED = 10
* SYSTEM_FAILURE = 11
* UNKNOWN_FIELD_IN_DBA_SELLIST = 12
* VIEW_NOT_FOUND = 13
* MAINTENANCE_PROHIBITED = 14
* OTHERS = 15
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
REFRESH gt_sel.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHECK_T551C
*&---------------------------------------------------------------------*
* Überprüfung und Ergänzung der T551C
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_t551c .
TABLES: t551c.
DATA: lv_zmond TYPE dzmodn,
lv_begda TYPE begda,
ls_t551c TYPE t551c.
lv_begda = sy-datum.
lv_begda+4(4) = '0101'. "Jahresbeginn
SELECT zmodn INTO lv_zmond FROM t551a WHERE motpr = gv_ugr.
SELECT SINGLE * FROM t551c INTO ls_t551c WHERE zmodn = lv_zmond
and motpr = gv_ugr.
IF sy-subrc NE 0.
"Neuer Eintrag
CLEAR ls_t551c.
ls_t551c-motpr = gv_ugr.
ls_t551c-zmodn = lv_zmond.
ls_t551c-begda = lv_begda.
ls_t551c-endda = '99991231'.
ls_t551c-zmodk = 0.
ls_t551c-urlzk = 1.
*append t551c from ls_t551c.
INSERT t551c FROM ls_t551c.
ENDIF.
ENDSELECT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHECK_EXISTING
*&---------------------------------------------------------------------*
* Überprüfung und Ergänzung der T551C
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_existing .
TABLES: T550A, TMW_TDTYPE, TMW_TD_SUBLA.
DATA: lt_tazp TYPE STANDARD TABLE OF T550A,
ls_tazp LIKE LINE OF lt_tazp,
lv_langu TYPE tmw_tdlangu,
lt_tdtype TYPE STANDARD TABLE OF tmw_tdtype,
ls_tdtype LIKE LINE OF lt_tdtype,
lv_desc TYPE c,
lv_maxEnt TYPE tmw_entnr,
lv_tdold TYPE tdtype,
lv_maxEnt2 TYPE tmw_entnr,
lv_tdold2 TYPE tdtype,
lt_subla TYPE STANDARD TABLE OF tmw_td_subla,
ls_subla LIKE LINE OF lt_subla.
check gv_ugr = 03.
SELECT * FROM T550A INTO TABLE lt_tazp
WHERE MOTPR = gv_ugr.
CASE gv_ugr.
WHEN '01'.
lv_langu = 'ZHR_DE_001'.
WHEN '03'.
lv_langu = 'ZHR_AT'.
WHEN '18'.
lv_langu = 'SET_CZ'.
ENDCASE.
sort lt_tazp by TPROG.
LOOP AT lt_tazp INTO ls_tazp.
SELECT * FROM tmw_tdtype
WHERE TDLANGU = lv_langu
AND TPROG = ls_tazp-tprog
and varia = ls_tazp-varia.
ENDSELECT.
IF SY-SUBRC = 4.
lv_desc = ls_tazp-tprog(1).
ls_tdtype-tdtype = 'TAZP'.
* CASE lv_desc.
* WHEN 'F'.
* ls_tdtype-tdtype = 'XFR'.
* WHEN 'G'.
* ls_tdtype-tdtype = 'XGL'.
* WHEN 'N'.
* ls_tdtype-tdtype = 'XNA'.
* WHEN 'S'.
* ls_tdtype-tdtype = 'XSP'.
* WHEN 'T'.
* ls_tdtype-tdtype = 'XTE'.
* when 'L'.
* ls_tdtype-tdtype = 'XLE'.
* WHEN OTHERS.
* CONTINUE.
* ENDCASE.
ls_tdtype-tdlangu = lv_langu.
ls_tdtype-tprog = ls_tazp-tprog.
ls_tdtype-motpr = gv_ugr.
ls_tdtype-category = 'IT'.
ls_tdtype-type = '2003'.
ls_tdtype-VARIA = ls_tazp-VARIA.
IF NOT ls_tdtype-tdtype = lv_tdold.
SELECT max( entnr ) from tmw_tdtype INTO lv_maxEnt
WHERE tdlangu = lv_langu AND tdtype = ls_tdtype-tdtype.
ENDIF.
ADD 1 TO lv_maxEnt.
ls_tdtype-entnr = lv_maxEnt.
INSERT tmw_tdtype FROM ls_tdtype.
lv_tdold = ls_tdtype-tdtype.
SELECT * FROM tmw_td_subla
WHERE tdlangu = lv_langu
AND tdtype = ls_tdtype-tdtype
AND entnr = ls_tdtype-entnr
AND tdsubla = '001'.
ENDSELECT.
IF sy-subrc = 4.
ls_subla-tdlangu = lv_langu.
ls_subla-tdsubla = '001'.
ls_subla-psign = 'U'.
ls_subla-tdtype = ls_tdtype-tdtype.
IF NOT ls_subla-tdtype = lv_tdold2.
SELECT max( entnr ) from tmw_td_subla INTO lv_maxEnt2
WHERE tdlangu = lv_langu AND tdtype = ls_subla-tdtype.
ENDIF.
ADD 1 TO lv_maxEnt2.
ls_subla-entnr = lv_maxEnt2.
INSERT tmw_td_subla FROM ls_subla.
lv_tdold2 = ls_subla-tdtype.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.