1100
+ GITD
+ %BACK
+ %EX
+ ABBR
+ ADDCURTP
+ AUFU
+ BACK
+ CHCK
+ COPY
+ EEV4
+ ENDE
+ ENTE
+ EXIT
+ FIND
+ FND+
+ GPAN
+ INFO
+ MERV
+ MKAL
+ MKBL
+ MKFL
+ MKNO
+ P+
+ P++
+ P-
+ P--
+ PG+
+ PG++
+ PG-
+ PG--
+ PLEB
+ PROP
+ RADD
+ RDEL
+ REFR
+ RINS
+ SELA
+ SELK
+ SFVW
+ SRT+
+ SRT-
+ TECH
+ UPLC
+ UPLD
+ VADE
+ VAHO
+ VAHO
+ VASI
+ VASI
+ VATR
+ VAWR
+ VCAL
+ VPSL
+ WERT
+ XIVL
+ XTXT
+ XWDT
+ 000001
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000003
+ 000004
+ 000004
+ 000004
+ 000004
+ 000005
+ 000005
+ 000005
+ 000005
+ 000005
+ 000005
+ 000006
+ 000006
+ 000006
+ 000006
+ 000006
+ 000006
+ 000007
+ 000007
+ 000007
+ 000007
+ 000008
+ 000008
+ 000008
+ 000008
+ 000008
+ 000008
+ 000008
+ 000009
+ 000009
+ 000009
+ 000009
+ 000009
+ 000009
+ 000010
+ 000010
+ 000010
+ 000010
+ 000010
+ 000010
+ 000001
+ 000002
+ 000003
+ 000004
+ 000005
+ 000006
+ 000007
+ 000008
+ 000009
+ 000010
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000002
+ 000002
+ 000002
+ 000002
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 0001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000001
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 000002
+ 105
+ . + + DATA: s_rkb1x LIKE rkb1x, + s_sel LIKE LINE OF gs_bpsel-t_sel1, + new_low LIKE cedst-low, + new_high LIKE cedst-high, + subrc LIKE sy-subrc, + tabix LIKE sy-tabix, + compname(36) TYPE c. + +*** get current screen line + LOOP AT g_planmerk WHERE eline = g_index_200. + EXIT. + ENDLOOP. + IF sy-subrc <> 0. + MESSAGE x385. + ENDIF. + +*** convert data from screen into internal format + +** don't store # (initial value on the screen) in table GS_BPSEL-T_SEL1 + IF cepl4a-low = '#'. + CLEAR cepl4a-low. + ENDIF. + +** CEPL4A-LOW external value -> LOW internal value + PERFORM evaluate_entry_input USING g_planmerk + new_low + cepl4a-low. + +** CEPL4A-HIGH external value -> HIGH internal value + IF cepl4a-mhigh IS NOT INITIAL. + PERFORM evaluate_entry_input USING g_planmerk + new_high + cepl4a-mhigh. + ENDIF. + + READ TABLE g_fieldtab WITH KEY fieldname = g_planmerk-fnam. + IF sy-subrc <> 0. + MESSAGE x899. + ENDIF. + +** validate single value (no intervall and no compound chars) + IF g_fieldtab-depfl IS INITIAL AND new_high IS INITIAL. + + CONCATENATE g_ce0name '-' g_planmerk-fnam INTO compname. + + ASSIGN new_low TO
CASTING TYPE (compname). + IF new_low <> '*'. + s_rkb1x-erkrs = g_erkrs. + s_rkb1x-kokrs = g_kokrs. + s_rkb1x-pa_type = g_pa_type. + + CALL FUNCTION 'RKD_SHORT_TEXT_SINGLE' + EXPORTING + applclass = kepp_c_applclass + characteristic = new_low + criteria = g_planmerk-fnam + i_rkb1x = s_rkb1x + mode = 'C' + EXCEPTIONS + key_not_found = 1. + + IF sy-subrc = 1. + MESSAGE e018 WITH g_fieldtab-scrtext_m new_low. + ENDIF. + ENDIF. + + ENDIF. + +** check for correct sequence of entered data + IF new_low > new_high AND new_high <> space AND g_fieldtab-datatype = 'CHAR'. + MESSAGE e650(db). + ENDIF. + +** check TKEBPFM and TKEBPSF + READ TABLE g_tkebpfm WITH KEY event = '20'. + IF sy-subrc = 0. + CALL FUNCTION g_tkebpfm-funcmo + EXPORTING + i_erkrs = g_erkrs + i_kokrs = g_kokrs + i_pa_type = g_pa_type + i_func = g_func + i_tkeb = gs_tkeb + i_low = new_low + i_fnam = g_planmerk-fnam + i_tdmerk = cepl4a-tdmerk + is_bpsel = gs_bpsel + TABLES + pt_fieldtab = g_fieldtab. + ENDIF. + + PERFORM check_activ USING 'LOW' + g_dnum + kepp_c_cepl4anam + subrc. + +*** delete all 'selection' entries (SORT = 200) + IF subrc <> 0. + DELETE gs_bpsel-t_sel1 + WHERE sort = kepp_c_sort_0200 AND + fnam = g_planmerk-fnam. + +*** update first 'selection' entry from GS_BPSEL-T_SEL1 + ELSE. + + READ TABLE gs_bpsel-t_sel1 INTO s_sel + WITH KEY sort = kepp_c_sort_0200 + fnam = g_planmerk-fnam. + tabix = sy-tabix. + +** no such entry so far > add new one + IF sy-subrc <> 0. + s_sel-sort = kepp_c_sort_0200. + s_sel-fnam = g_planmerk-fnam. + s_sel-sign = 'I'. + s_sel-low = new_low. + s_sel-high = new_high. + IF s_sel-low = '*'. + CLEAR s_sel-high. + ENDIF. + IF s_sel-high IS INITIAL. + s_sel-option = 'EQ'. + ELSE. + s_sel-option = 'BT'. + ENDIF. + APPEND s_sel TO gs_bpsel-t_sel1. + +** update existing entry + ELSE. + +* high-value changed > new option necessary + IF s_sel-high IS INITIAL AND new_high IS NOT INITIAL OR + new_high IS INITIAL AND s_sel-high IS NOT INITIAL. + CLEAR s_sel-option. + ENDIF. + + s_sel-low = new_low. + s_sel-high = new_high. + + IF s_sel-sign IS INITIAL. + s_sel-sign = 'I'. + ENDIF. + + IF s_sel-low = '*'. + CLEAR s_sel-high. + CLEAR s_sel-option. + ENDIF. + + IF s_sel-option IS INITIAL. + IF s_sel-high IS INITIAL. + s_sel-option = 'EQ'. + ELSE. + s_sel-option = 'BT'. + ENDIF. + ENDIF. + + MODIFY gs_bpsel-t_sel1 FROM s_sel + INDEX tabix. + ENDIF. + ENDIF. + + SORT gs_bpsel-t_sel1 STABLE BY sort fnam. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form check_activ +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> P_ +*& --> G_DNUM +*& --> KEPP_C_CEPL4ANAM +*& --> SUBRC +*&---------------------------------------------------------------------* +FORM check_activ USING VALUE(v_fnam) TYPE c + VALUE(v_dnum) LIKE tkebpsf-dnum + VALUE(v_tnam) LIKE tkebpsf-tnam + p_subrc LIKE sy-subrc. + +* Strukturen + DATA: tkebpsfkey TYPE kepp_tkebpsfkey. + + + tkebpsfkey-applclass = kepp_c_applclass. + tkebpsfkey-subclass = kepp_c_subclass. + tkebpsfkey-func = g_func. + tkebpsfkey-prog = kepp_c_prog. + tkebpsfkey-dnum = v_dnum. + tkebpsfkey-tnam = v_tnam. + tkebpsfkey-fnam = v_fnam. + READ TABLE g_tkebpsf WITH KEY tkebpsfkey BINARY SEARCH. + IF sy-subrc EQ 0 AND g_tkebpsf-active = '1'. + p_subrc = 0. + ELSE. + p_subrc = 4. + ENDIF. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form EVALUATE_ENTRY_INPUT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_PLANMERK +*& --> NEW_LOW +*& --> CEPL4A_LOW +*&---------------------------------------------------------------------* +FORM evaluate_entry_input USING VALUE(v_planmerk) STRUCTURE cepl5 + p_int LIKE gt_chartab-low + VALUE(v_ext) LIKE cepl4a-mlow. + FIELD-SYMBOLS:
. + DATA: l_compname(36) TYPE c. + +* Unicode improvement +* ASSIGN P_INT(V_PLANMERK-INTLEN) +* TO
TYPE V_PLANMERK-INTTYPE. + CONCATENATE g_ce0name '-' v_planmerk-fnam INTO l_compname. + ASSIGN p_int TO
CASTING TYPE (l_compname). + + IF v_ext EQ '*' OR v_ext EQ '#'. + p_int = v_ext. + ELSE. + IF v_ext IS INITIAL. + CLEAR
. + ELSE. + g_fieldtabkey-tabname = g_ce0name. + g_fieldtabkey-fieldname = v_planmerk-fnam. + READ TABLE g_fieldtab WITH KEY g_fieldtabkey. + IF sy-subrc GT 0. + MESSAGE x385. + ENDIF. + + CALL FUNCTION 'G_CONVERT_INPUT' + EXPORTING + converted_length = g_fieldtab-leng + convexit = g_fieldtab-convexit + datatype = g_fieldtab-datatype + input_length = g_fieldtab-outputlen + input_value = v_ext + IMPORTING + converted_value = p_int. + + ENDIF. + ENDIF. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form HELP_LOW +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_BEGIN_200 +*&---------------------------------------------------------------------* +FORM help_low USING VALUE(i_begin) LIKE sy-tabix. + + DATA: cursor_line TYPE i, + h_index LIKE sy-tabix, + fieldname_for_help LIKE help_info-fieldname, + tabname_for_help LIKE help_info-tabname. + + + GET CURSOR LINE cursor_line. + h_index = i_begin + cursor_line - 1. + LOOP AT g_planmerk WHERE eline = h_index. + EXIT. + ENDLOOP. + fieldname_for_help = g_planmerk-fnam. + tabname_for_help = g_ce0name. + + CALL FUNCTION 'HELP_DOCU_SHOW_FOR_FIELD' + EXPORTING + fieldname = fieldname_for_help + tabname = tabname_for_help. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form VAL_LOW_201 +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_BEGIN_200 +*& --> KEPP_C_SORT_0200 +*&---------------------------------------------------------------------* +FORM val_low_201 USING VALUE(i_begin) LIKE sy-tabix + VALUE(i_sort) TYPE kepp_s_sort-sort. + + DATA: cursor_line TYPE i, + h_index LIKE sy-tabix, + subrc LIKE sy-subrc, + display, + more. + + GET CURSOR LINE cursor_line. + h_index = i_begin + cursor_line - 1. + LOOP AT g_planmerk WHERE eline = h_index. + EXIT. + ENDLOOP. + IF sy-subrc NE 0. + MESSAGE x385(kg). + ENDIF. + + CLEAR display. + +* get 'ready for input' status from variant + PERFORM check_input USING i_sort g_planmerk-fnam subrc. + IF subrc NE 0. + display = 'X'. + ENDIF. + +* check attributes from G_PLANMERK + IF g_planmerk-status EQ '3'. + display = 'X'. + ENDIF. + +* display mode if complex selection is available + IF i_sort = kepp_c_sort_0200. + PERFORM check_complex_sel USING kepp_c_sort_0200 + g_planmerk-fnam + more. + IF more EQ 'X'. +* DISPLAY = 'X'. + ENDIF. + ENDIF. + +* call popup F4 help + PERFORM val_criteria_value USING cepl4a-low + g_planmerk + display + cursor_line + 'CEPL4A-LOWTX'. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form LOOP_PBO_100 +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM loop_pbo_100 . + + DATA: s_sel1 LIKE LINE OF gs_bpsel-t_sel1, + field_is_active LIKE sy-subrc, + icon TYPE icon_d, + more, + addselref, + chartype. + +*** check characteristic active for this function + g_loopc_200 = sy-loopc. + LOOP AT g_planmerk WHERE eline = g_index_200. + EXIT. + ENDLOOP. + field_is_active = sy-subrc. + +*** check if complex selection is available + PERFORM check_complex_sel + USING + kepp_c_sort_0200 + g_planmerk-fnam + more. + +*** check if additional selection for reference base is available + PERFORM check_sel_for_ref + USING + g_planmerk-fnam + CHANGING + addselref. + +*** adjust screen fields + LOOP AT SCREEN. + + IF screen-group2 = 'INP'. + screen-length = g_planmerk-outputlen. + +** set input attributes (from characteristic groups) + CASE g_planmerk-status. + WHEN 1. " Kann-Eingabe + WHEN 2. " Muss-Eingabe + screen-required = 1. + WHEN 3. " keine Eingabe + screen-input = 0. + ENDCASE. + + ENDIF. + +** disable characteristics not active for this function + IF screen-group1 = 'MER' AND field_is_active <> 0. + screen-active = 0. + ENDIF. + +** disable characteristics protected by variant or set as +** 'distribution level' + IF screen-name = 'CEPL4A-LOW' + OR screen-name = 'CEPL4A-MHIGH' + OR screen-name = 'CEPL4A-ICON_MORE' + OR screen-name = 'CEPL4A-SECNDCOLTXT'. + + READ TABLE gt_fnam WITH KEY sort = kepp_c_sort_0200 + fnam = g_planmerk-fnam. + IF sy-subrc = 0 AND gt_fnam-fieldprot = true. + screen-input = 0. + ENDIF. + + READ TABLE gs_bpsel-t_sel1 INTO s_sel1 + WITH KEY sort = kepp_c_sort_0201 + fnam = g_planmerk-fnam. + IF sy-subrc = 0 AND s_sel1-low = 'X'. " distribution level + screen-input = 0. + ENDIF. + ENDIF. + + MODIFY SCREEN. + + ENDLOOP. " loop at screen + +*** set the icon for 'complex selection' + IF more = true. + CALL FUNCTION 'ICON_CREATE' + EXPORTING + name = 'ICON_DISPLAY_MORE' + IMPORTING + result = cepl4a-icon_more. + ELSE. + CALL FUNCTION 'ICON_CREATE' + EXPORTING + name = 'ICON_ENTER_MORE' + IMPORTING + result = cepl4a-icon_more. + ENDIF. + +*** set the icon for 'additional selection reference base' + IF addselref = true. + CALL FUNCTION 'ICON_CREATE' + EXPORTING + name = 'ICON_DISPLAY_MORE' + IMPORTING + result = cepl4a-icon_add_slct. + ELSE. + CALL FUNCTION 'ICON_CREATE' + EXPORTING + name = 'ICON_ENTER_MORE' + IMPORTING + result = cepl4a-icon_add_slct. + ENDIF. + + CHECK field_is_active = 0. + + +*** fill screen fields of CEPL4A + CLEAR cepl4a-lowtx. + CLEAR cepl4a-mhightx. + +** set the icon for char classification + PERFORM get_char_type USING g_planmerk-fnam + CHANGING chartype. + CASE chartype. + WHEN kepp_c_chartype-dis. + cepl4a-firstcoltxt = icon_wd_controller. + WHEN kepp_c_chartype-ret. + cepl4a-firstcoltxt = icon_mass_change. + WHEN kepp_c_chartype-sum. + cepl4a-firstcoltxt = icon_negative. + ENDCASE. + +** get field name & long text from field catalogue + g_fieldtabkey-tabname = g_ce0name. + g_fieldtabkey-fieldname = g_planmerk-fnam. + READ TABLE g_fieldtab WITH KEY g_fieldtabkey. + IF sy-subrc <> 0. + MESSAGE x385. + ENDIF. + cepl4a-artfnam = g_planmerk-fnam. + cepl4a-merktx = g_fieldtab-scrtext_m. + +** get first selection entry for this fieldname + CLEAR cepl4a-lowtx. + LOOP AT gs_bpsel-t_sel1 INTO s_sel1 + WHERE sort = kepp_c_sort_0200 + AND fnam = g_planmerk-fnam. + EXIT. + ENDLOOP. + + IF sy-subrc = 0. +** convert to output format & get texts + IF NOT s_sel1-low IS INITIAL. + PERFORM evaluate_entry_output + USING + g_planmerk + s_sel1-low + cepl4a-low + cepl4a-lowtx. + ENDIF. + IF NOT s_sel1-high IS INITIAL. + PERFORM evaluate_entry_output + USING + g_planmerk + s_sel1-high + cepl4a-mhigh + cepl4a-mhightx. + ENDIF. + ELSE. + CLEAR cepl4a-low. + CLEAR cepl4a-mhigh. + ENDIF. + + IF cepl4a-low = space + AND cepl4a-mhigh = space. +* use # as representation of initial value on the screen + cepl4a-low = '#'. + ENDIF. + +** set the appropriate "select option" icon + IF s_sel1-low = '*' AND s_sel1-high IS INITIAL. + cepl4a-secndcoltxt = icon_selection. + ELSE. + CALL FUNCTION 'RKE_TD_SELOPT' + EXPORTING + i_sign = s_sel1-sign + i_option = s_sel1-option + i_display = ' ' + IMPORTING + e_icon = icon. + cepl4a-secndcoltxt = icon. + ENDIF. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form CHECK_COMPLEX_SEL +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> KEPP_C_SORT_0200 +*& --> G_PLANMERK_FNAM +*& --> MORE +*&---------------------------------------------------------------------* +FORM check_complex_sel USING VALUE(v_sort) LIKE kpp1lf-lfdnr + VALUE(v_fnam) LIKE cepl5-fnam + p_more TYPE c. + + DATA: s_sel1 LIKE LINE OF gs_bpsel-t_sel1, + count TYPE i. + + CLEAR count. + CLEAR p_more. + + LOOP AT gs_bpsel-t_sel1 INTO s_sel1 + WHERE sort = v_sort + AND fnam = v_fnam. + ADD 1 TO count. + ENDLOOP. + + IF count > 1. + p_more = 'X'. + ENDIF. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form check_sel_for_ref +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_PLANMERK_FNAM +*& <-- ADDSELREF +*&---------------------------------------------------------------------* +FORM check_sel_for_ref USING p_fnam + CHANGING p_addselref. + + DATA: ls_sel TYPE kepp_s_sel1. + + READ TABLE gs_bpsel-t_sel1 WITH KEY sort = kepp_c_sort_assgn_ref + fnam = p_fnam + INTO ls_sel. + IF sy-subrc EQ 0. + p_addselref = true. + ELSE. + p_addselref = false. + ENDIF. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form get_data +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM get_data . + CREATE OBJECT g_topdown. + + DATA : ls_covad TYPE covad. + + " 1. 변형 정보 조회 +* SELECT SINGLE +* applclass, +* subclass, +* tabname, +* func, +* variant +* FROM covad +* WHERE variant = @p_varint +* AND tabname = 'CE11000' +* INTO CORRESPONDING FIELDS OF @ls_covad. + + " 2. 표준 변형 세팅 정보(KE28) +* CALL FUNCTION 'RKE_BP_VARIANT_READ_DIRECT' +* EXPORTING +* i_applclass = ls_covad-applclass +* i_subclass = ls_covad-subclass +* i_tabname = ls_covad-tabname +* i_func = ls_covad-func +* i_variant = 'PA001' +* IMPORTING +* es_bpsel = gs_bpsel +* TABLES +* et_fnam = gt_fnam +* EXCEPTIONS +* not_found = 1 +* OTHERS = 2. + + + DATA : lt_bpsel TYPE TABLE OF ty_distinfo, + t_sel1 TYPE kepp_s_sel1. + + SELECT sort, fnam, sign, optionn, low, high, lowtx, hightx + FROM (gv_distinfo) + WHERE erkrs = @p_erkrs + AND perio = @p_perio + AND variant = @p_varint + INTO CORRESPONDING FIELDS OF TABLE @lt_bpsel. + + IF lt_bpsel[] IS INITIAL. + MESSAGE s006(ztopdown). + RETURN. + ENDIF. + + LOOP AT lt_bpsel INTO DATA(ls_val). + t_sel1-sort = ls_val-sort. + t_sel1-fnam = ls_val-fnam. + t_sel1-sign = ls_val-sign. + t_sel1-option = ls_val-optionn. + t_sel1-low = ls_val-low. + t_sel1-high = ls_val-high. + t_sel1-lowtx = ls_val-lowtx. + t_sel1-hightx = ls_val-hightx. + + APPEND t_sel1 TO gs_bpsel-t_sel1. + ENDLOOP. + + +* TYPES: BEGIN OF KEPP_S_SEL1, + + + + CALL FUNCTION 'RKE_FILL_PLANMERK' + EXPORTING + erkrs = '1000' + pa_type = '1' + TABLES + planmerk = g_planmerk. + + PERFORM set_eline_default. + + + CALL FUNCTION 'RKE_FILL_PLANWERTGP' + EXPORTING + erkrs = '1000' + pa_type = '1' + TABLES + planwertgp = g_planwert. + + +* costing based = call classic function module + CALL FUNCTION 'RKE_FILL_FIELD_TABLE' + EXPORTING + erkrs = G_erkrs + tabname = g_ce0name + pa_type = if_fco_copa_type_of_pa_c=>gc_costing_based + TABLES + fieldtab = g_fieldtab + et_dependencies = g_ftab_dep. + + SELECT * FROM tkebpsf INTO TABLE g_tkebpsf + WHERE applclass EQ kepp_c_applclass AND + subclass EQ kepp_c_subclass AND + func EQ g_func. + SORT g_tkebpsf. +* SELECT * FROM tkebpfm INTO TABLE g_tkebpfm +* WHERE applclass EQ kepp_c_applclass AND +* subclass EQ kepp_c_subclass AND +* func EQ g_func. +* SELECT SINGLE * FROM tkebpfl INTO g_tkebpfl +* WHERE applclass EQ kepp_c_applclass AND +* subclass EQ kepp_c_subclass AND +* func EQ g_func. + +ENDFORM. +*&---------------------------------------------------------------------* +*& Form get_char_type +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_PLANMERK_FNAM +*& <-- CHARTYPE +*&---------------------------------------------------------------------* +FORM get_char_type USING p_fnam + CHANGING p_chartype. + + DATA: s_sel1 LIKE LINE OF gs_bpsel-t_sel1. + +* check for 'distribution level' char + LOOP AT gs_bpsel-t_sel1 INTO s_sel1 + WHERE sort = kepp_c_sort_0201 + AND fnam = p_fnam. + EXIT. + ENDLOOP. + IF sy-subrc = 0 AND s_sel1-low = true. + p_chartype = kepp_c_chartype-dis. + RETURN. + ENDIF. + +* check for 'retain' char + LOOP AT gs_bpsel-t_sel1 INTO s_sel1 + WHERE sort = kepp_c_sort_uebe + AND fnam = p_fnam. + EXIT. + ENDLOOP. + IF sy-subrc = 0 AND s_sel1-low = true. + p_chartype = kepp_c_chartype-ret. + RETURN. + ENDIF. + +* check for 'summarize' char + LOOP AT gs_bpsel-t_sel1 INTO s_sel1 + WHERE sort = kepp_c_sort_verd + AND fnam = p_fnam. + EXIT. + ENDLOOP. + IF sy-subrc = 0 AND s_sel1-low = true. + p_chartype = kepp_c_chartype-sum. + ENDIF. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form SET_ELINE_DEFAULT +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> p1 text +*& <-- p2 text +*&---------------------------------------------------------------------* +FORM set_eline_default . + LOOP AT g_planmerk. + g_planmerk-eline = sy-tabix. + g_planmerk-status = '1'. "kann + MODIFY g_planmerk. + ENDLOOP. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form evaluate_entry_output +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> G_PLANMERK +*& --> S_SEL1_LOW +*& --> CEPL4A_LOW +*& --> CEPL4A_LOWTX +*&---------------------------------------------------------------------* +FORM evaluate_entry_output USING VALUE(v_planmerk) STRUCTURE cepl5 + VALUE(v_int) LIKE gt_chartab-low + p_ext LIKE cepl4a-mlow + p_text LIKE cepl4a-mlowtx. + + FIELD-SYMBOLS:
. + DATA: l_compname(36) TYPE c. + + + g_fieldtabkey-tabname = g_ce0name. + g_fieldtabkey-fieldname = v_planmerk-fnam. + READ TABLE g_fieldtab WITH KEY g_fieldtabkey. + IF sy-subrc GT 0. + MESSAGE x385. + ENDIF. + CLEAR p_text. + IF v_int EQ '*'. + p_ext = v_int. + ELSE. + IF v_int EQ '#'. + p_ext = v_int. + PERFORM read_text USING kepp_c_sort_0200 v_planmerk-fnam v_int + p_text. + ELSE. +* Unicode improvement +* ASSIGN V_INT(V_PLANMERK-INTLEN) +* TO
TYPE V_PLANMERK-INTTYPE. + CONCATENATE g_ce0name '-' v_planmerk-fnam INTO l_compname. + ASSIGN v_int TO
CASTING TYPE (l_compname). + IF
IS INITIAL. + CLEAR p_ext. + ELSE. + + CALL FUNCTION 'G_CONVERT_OUTPUT' + EXPORTING + convexit = g_fieldtab-convexit + datatype = g_fieldtab-datatype + length_to_convert = g_fieldtab-leng + output_length = g_fieldtab-outputlen + value_to_convert =
+ IMPORTING + output_value = p_ext. + + PERFORM read_text USING kepp_c_sort_0200 v_planmerk-fnam v_int + p_text. + ENDIF. + ENDIF. + ENDIF. +ENDFORM. +*&---------------------------------------------------------------------* +*& Form read_text +*&---------------------------------------------------------------------* +*& text +*&---------------------------------------------------------------------* +*& --> KEPP_C_SORT_0200 +*& --> V_PLANMERK_FNAM +*& --> V_INT +*& --> P_TEXT +*&---------------------------------------------------------------------* +FORM read_text USING VALUE(i_sort) TYPE kepp_s_fnam-sort + VALUE(i_fnam) TYPE kepp_s_fnam-fnam + VALUE(i_int) TYPE kepp_s_sel1-low + e_textm TYPE c. + + FIELD-SYMBOLS:
. + + DATA: lth_dd07v LIKE dd07v OCCURS 0 WITH HEADER LINE. + + DATA: s_rkb1x LIKE rkb1x. + + DATA: prpfl LIKE cepl4b-prpfl, + pfitx LIKE t440p-pfitx, + fnam LIKE dd03p-fieldname, + vtl LIKE cepl4b-vtl, + reval LIKE cepl4b-reval, + l_compname(38) TYPE c, + value LIKE i_int, + l_qschem LIKE tkequs1t-qschem, + l_type LIKE tkepszk-type, + l_plsz LIKE tkepszk-plsz, + l_text LIKE tkepszkt-text, + lv_choice TYPE flag. + +* Logpoint for SFIN Unified Journal Entry -> For account-based top-down-distribution +* enable reading the text for WOGBTR in the reference value or quantity fields by +* adding a new choice "Z" + LOG-POINT ID fins_udoc. + + CLEAR e_textm. + IF i_sort EQ kepp_c_sort_0001. +* Globale Daten + CASE i_fnam. + WHEN 'KOKRS'. + PERFORM get_text USING 'KOKRS' i_int e_textm. + ENDCASE. + ELSEIF i_sort EQ kepp_c_sort_0200 OR i_sort EQ kepp_c_sort_erse. +* Merkmalsbild + s_rkb1x-erkrs = g_erkrs. + s_rkb1x-kokrs = g_kokrs. + s_rkb1x-pa_type = g_pa_type. + + IF NOT i_int EQ '*'. + READ TABLE g_fieldtab WITH KEY fieldname = i_fnam. + IF sy-subrc = 0. + +* Klammerung mit Kokrs zulässig + value = i_int. + IF g_fieldtab-depfl IS NOT INITIAL. + READ TABLE g_ftab_dep TRANSPORTING NO FIELDS + WITH KEY fieldname = i_fnam dpfie = 'KOKRS'. + CHECK sy-subrc = 0. + value = |{ g_kokrs }{ value }|. + ENDIF. + + CONCATENATE g_ce0name '-' i_fnam INTO l_compname. + ASSIGN i_int TO
CASTING TYPE (l_compname). + IF NOT
IS INITIAL.
+
+ CALL FUNCTION 'RKD_SHORT_TEXT_SINGLE'
+ EXPORTING
+ applclass = kepp_c_applclass
+ characteristic = value
+ criteria = i_fnam
+ i_rkb1x = s_rkb1x
+ mode = 'T'
+ IMPORTING
+ characteristic_text = e_textm
+ EXCEPTIONS
+ criteria_not_found = 1
+ key_not_found = 2
+ table_not_found = 3
+ OTHERS = 4.
+
+ ENDIF.
+ ENDIF.
+ ENDIF.
+ ELSEIF i_sort EQ kepp_c_sort_0100.
+* Einstiegsbild
+ CASE i_fnam.
+ WHEN 'VERSI'.
+ PERFORM get_text USING 'VERSI' i_int e_textm.
+ WHEN 'VRGAR'.
+ PERFORM get_text USING 'VRGAR' i_int e_textm.
+ WHEN 'REVERSI'.
+ PERFORM get_text USING 'VERSI' i_int e_textm.
+ WHEN 'REVRGAR'.
+ PERFORM get_text USING 'VRGAR' i_int e_textm.
+ WHEN 'ARTFNAM'.
+ fnam = i_int.
+ PERFORM get_fnam_text USING 'A'
+ fnam
+ e_textm.
+ WHEN 'MNGFNAM'.
+ fnam = i_int.
+ PERFORM get_fnam_text USING 'Q'
+ fnam
+ e_textm.
+ WHEN 'WKOFNAM'.
+ CLEAR lv_choice.
+ IF g_pa_type = if_fco_copa_pa_type_c=>gc_account_based.
+ lv_choice = if_fco_copa_types=>gc_choice_z.
+ ELSE.
+ lv_choice = if_fco_copa_types=>gc_choice_v.
+ ENDIF.
+ fnam = i_int.
+ PERFORM get_fnam_text USING lv_choice
+ fnam
+ e_textm.
+ WHEN 'PRPFL'.
+ prpfl = i_int.
+
+ CALL FUNCTION 'RKE_PRPFL_CHECK'
+ EXPORTING
+ prpfl = prpfl
+ IMPORTING
+ pfitx = pfitx.
+
+ e_textm = pfitx.
+ WHEN 'VTL'.
+ vtl = i_int.
+ SELECT SINGLE * FROM t821t WHERE langu = sy-langu
+ AND spred = vtl.
+ IF sy-subrc EQ 0.
+ e_textm = t821t-txt.
+ ENDIF.
+ WHEN 'REVAL'.
+ reval = i_int.
+ SELECT SINGLE * FROM tkepc WHERE applclass = kepp_c_applclass
+ AND subclass = kepp_c_subclass
+ AND tabname = g_ce1name
+ AND reval = reval
+ AND langu = sy-langu.
+ IF sy-subrc EQ 0.
+ e_textm = tkepc-txt.
+ ENDIF.
+ WHEN 'TDVERF'.
+
+ CALL FUNCTION 'DD_DOMVALUES_GET'
+ EXPORTING
+ domname = 'CEPLTDVERF'
+ text = 'X'
+ TABLES
+ dd07v_tab = lth_dd07v
+ EXCEPTIONS
+ wrong_textflag = 1
+ OTHERS = 2.
+
+ READ TABLE lth_dd07v WITH KEY domvalue_l = i_int.
+ IF sy-subrc EQ 0.
+ e_textm = lth_dd07v-ddtext.
+ ENDIF.
+ WHEN 'QSCHEM'.
+ l_qschem = i_int.
+ SELECT SINGLE * FROM tkequs1t
+ WHERE applclass = kepp_c_applclass
+ AND subclass = kepp_c_subclass
+ AND tabname = g_ce1name
+ AND qschem = l_qschem
+ AND langu = sy-langu.
+
+ IF sy-subrc EQ 0.
+ e_textm = tkequs1t-text.
+ ENDIF.
+ WHEN 'REVERSI2'.
+ PERFORM get_text USING 'VERSI' i_int e_textm.
+ WHEN 'REVRGAR2'.
+ PERFORM get_text USING 'VRGAR' i_int e_textm.
+ WHEN 'EXITNR' OR 'EXITNR2'.
+ SELECT SINGLE * FROM tkeplexitt
+ WHERE applclass = kepp_c_applclass
+ AND subclass = kepp_c_subclass
+ AND tabname = g_tabname
+ AND exitnr = i_int
+ AND langu = sy-langu.
+
+ IF sy-subrc EQ 0.
+ e_textm = tkeplexitt-text.
+ ENDIF.
+ WHEN 'PRPFL_PLSZ' OR 'VTL_PLSZ' OR 'REVAL_PLSZ' OR 'TREVAL_PLSZ'.
+ CASE i_fnam.
+ WHEN 'PRPFL_PLSZ'.
+ l_type = g_c_forec.
+ WHEN 'VTL_PLSZ'.
+ l_type = g_c_distri.
+ WHEN 'REVAL_PLSZ'.
+ l_type = g_c_reval.
+ WHEN 'TREVAL_PLSZ'.
+ l_type = g_c_treval.
+ ENDCASE.
+
+ l_plsz = i_int.
+
+ CALL FUNCTION 'RKE_ACCESS_KEY_CHECK'
+ EXPORTING
+ i_applclass = kepp_c_applclass
+ i_subclass = kepp_c_subclass
+ i_tabname = g_tabname
+ i_type = l_type
+ i_plsz = l_plsz
+ IMPORTING
+ e_text = l_text
+ EXCEPTIONS
+ invalid_value = 1
+ OTHERS = 2.
+
+ IF sy-subrc EQ 0.
+ e_textm = l_text.
+ ENDIF.
+ WHEN 'TREVAL'.
+ SELECT SINGLE * FROM tkeptrt
+ WHERE applclass = kepp_c_applclass
+ AND subclass = kepp_c_subclass
+ AND tabname = g_tabname
+ AND treval = i_int
+ AND langu = sy-langu.
+ IF sy-subrc EQ 0.
+ e_textm = tkeptrt-text.
+ ENDIF.
+ ENDCASE.
+ ENDIF.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form GET_FNAM_TEXT
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> P_
+*& --> FNAM
+*& --> E_TEXTM
+*&---------------------------------------------------------------------*
+FORM get_fnam_text USING VALUE(v_auswahl) LIKE cepl5-flag
+ VALUE(v_fnam) LIKE dd03p-fieldname
+ p_fnamtx LIKE dd03p-scrtext_m.
+
+ CALL FUNCTION 'RKE_FIELDNAMES_CHECK'
+ EXPORTING
+ auswahl = v_auswahl
+ erkrs = g_erkrs
+ fnam = v_fnam
+ pa_type = g_pa_type
+ IMPORTING
+ scrtext_m = p_fnamtx
+ EXCEPTIONS
+ inv_auswahl = 1
+ no_erkrs_defined = 2
+ OTHERS = 3.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form GET_TEXT
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> P_
+*& --> I_INT
+*& --> E_TEXTM
+*&---------------------------------------------------------------------*
+FORM get_text USING VALUE(v_fnam) LIKE dd03p-fieldname
+ VALUE(v_characteristic) LIKE rkb1t-character
+ p_text TYPE c.
+
+ DATA: i_rkb1x LIKE rkb1x.
+
+
+ i_rkb1x-erkrs = g_erkrs.
+ i_rkb1x-kokrs = g_kokrs.
+ i_rkb1x-pa_type = g_pa_type.
+
+ IF v_characteristic IS INITIAL.
+ CLEAR p_text.
+ ELSE.
+ CALL FUNCTION 'RKD_SHORT_TEXT_SINGLE'
+ EXPORTING
+ applclass = kepp_c_applclass
+* BUFFER = 'X'
+ characteristic = v_characteristic
+ criteria = v_fnam
+* DATE = '00000000'
+* DATE_TO = '00000000'
+ i_rkb1x = i_rkb1x
+* LANGUAGE_KEY = SY-LANGU
+ mode = 'T'
+* TABLE = ' '
+ IMPORTING
+ characteristic_text_l = p_text
+ EXCEPTIONS
+ criteria_not_found = 1
+ key_not_found = 2
+ table_not_found = 3
+ OTHERS = 4.
+
+ ENDIF.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form check_input
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> I_SORT
+*& --> G_PLANMERK_FNAM
+*& --> SUBRC
+*&---------------------------------------------------------------------*
+FORM check_input USING VALUE(i_sort) LIKE gt_fnam-sort
+ VALUE(i_fnam) LIKE gt_fnam-fnam
+ e_subrc LIKE sy-subrc.
+
+ CLEAR e_subrc.
+ READ TABLE gt_fnam WITH KEY sort = i_sort
+ fnam = i_fnam.
+ IF sy-subrc NE 0.
+ MESSAGE x899.
+ ENDIF.
+ IF gt_fnam-fieldprot EQ 'X'.
+ e_subrc = 4.
+ ENDIF.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form val_criteria_value
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> CEPL4A_LOW
+*& --> G_PLANMERK
+*& --> DISPLAY
+*& --> CURSOR_LINE
+*& --> P_
+*&---------------------------------------------------------------------*
+FORM val_criteria_value USING p_val LIKE cepl4a-mlow
+ VALUE(v_planmerk) STRUCTURE cepl5
+ VALUE(v_display) TYPE c
+ VALUE(v_cursor_line) TYPE i
+ VALUE(v_dynpfield)
+ LIKE dynpread-fieldname.
+
+ DATA: i_rkb1x LIKE rkb1x.
+
+ DATA: valtx LIKE cepl4a-mlowtx.
+
+* F4 aufrufen. Selektierter Wert kommt in P_VAL in der externen
+* Darstellung zurück
+ i_rkb1x-erkrs = g_erkrs.
+ i_rkb1x-pa_type = g_pa_type.
+ i_rkb1x-kokrs = g_kokrs.
+
+ CALL FUNCTION 'RKE_HELP_VALUES_GET'
+ EXPORTING
+ i_fieldname = v_planmerk-fnam
+ i_display = v_display
+ is_rkb1x = i_rkb1x
+ IMPORTING
+ e_selected_value = p_val.
+
+ IF NOT p_val IS INITIAL.
+* Text lesen und Textfeld auf dem Dynpro updaten.
+ PERFORM read_text USING kepp_c_sort_0200 v_planmerk-fnam p_val
+ valtx.
+
+ PERFORM dynp_values_update USING v_dynpfield
+ v_cursor_line valtx.
+ ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form dynp_values_update
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> V_DYNPFIELD
+*& --> V_CURSOR_LINE
+*& --> VALTX
+*&---------------------------------------------------------------------*
+FORM dynp_values_update USING
+ VALUE(v_dynpfield) LIKE dynpread-fieldname
+ VALUE(v_stepl) LIKE sy-stepl
+ VALUE(v_text) TYPE c.
+
+ DATA: dynpfields LIKE dynpread OCCURS 1 WITH HEADER LINE.
+
+ REFRESH dynpfields.
+ CLEAR dynpfields.
+ dynpfields-fieldname = v_dynpfield.
+ dynpfields-stepl = v_stepl.
+ dynpfields-fieldvalue = v_text.
+ APPEND dynpfields.
+
+ CALL FUNCTION 'DYNP_VALUES_UPDATE'
+ EXPORTING
+ dyname = 'SAPLKEPP'
+ dynumb = sy-dynnr
+ TABLES
+ dynpfields = dynpfields.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form val_high_201
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> G_BEGIN_200
+*& --> KEPP_C_SORT_0200
+*&---------------------------------------------------------------------*
+FORM val_high_201 USING VALUE(i_begin) LIKE sy-tabix
+ VALUE(i_sort) TYPE kepp_s_sort-sort.
+
+ DATA: cursor_line TYPE i,
+ h_index LIKE sy-tabix,
+ subrc LIKE sy-subrc,
+ display,
+ more.
+
+ GET CURSOR LINE cursor_line.
+ h_index = i_begin + cursor_line - 1.
+ LOOP AT g_planmerk WHERE eline = h_index.
+ EXIT.
+ ENDLOOP.
+ IF sy-subrc NE 0.
+ MESSAGE x385.
+ ENDIF.
+
+ CLEAR display.
+
+* get 'ready for input' status from variant
+ PERFORM check_input USING i_sort g_planmerk-fnam subrc.
+ IF subrc NE 0.
+ display = 'X'.
+ ENDIF.
+
+* check attributes from G_PLANMERK
+ IF g_planmerk-status EQ '3'.
+ display = 'X'.
+ ENDIF.
+
+* display mode if complex selection is available
+ IF i_sort = kepp_c_sort_0200.
+ PERFORM check_complex_sel USING kepp_c_sort_0200
+ g_planmerk-fnam
+ more.
+ IF more EQ 'X'.
+* DISPLAY = 'X'.
+ ENDIF.
+ ENDIF.
+
+* call popup F4 help
+ PERFORM val_criteria_value USING cepl4a-mhigh
+ g_planmerk
+ display
+ cursor_line
+ 'CEPL4A-MHIGHTX'.
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form OK_CODE_201
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM ok_code_201 .
+
+ DATA: fcode LIKE kpp0i-ok_code,
+ h_index LIKE sy-index.
+
+ fcode = ok_code.
+ g_fcode = fcode.
+ CLEAR ok_code.
+
+ CASE fcode.
+* WHEN kepp_c_okcode-ebaz.
+* PERFORM show_erkrs.
+* WHEN kepp_c_okcode-pagp.
+* tctd_sk-top_line = tctd_sk-top_line + g_loopc_200.
+* IF tctd_sk-top_line > g_tfill_200.
+* tctd_sk-top_line = g_tfill_200.
+* ENDIF.
+* WHEN kepp_c_okcode-pagm.
+* tctd_sk-top_line = tctd_sk-top_line - g_loopc_200.
+* IF tctd_sk-top_line < 1.
+* tctd_sk-top_line = 1.
+* ENDIF.
+* WHEN kepp_c_okcode-plas.
+* tctd_sk-top_line = g_tfill_200.
+* WHEN kepp_c_okcode-pfir.
+* tctd_sk-top_line = 1.
+ WHEN kepp_c_okcode-vasi.
+ PERFORM check_combination.
+ PERFORM check_all USING ' '.
+ PERFORM call_save_variant.
+ WHEN kepp_c_okcode-chck.
+ PERFORM check_combination.
+ PERFORM check_all USING 'X'.
+ WHEN kepp_c_okcode-back.
+ g_exit = 'X'.
+ SET SCREEN 0. LEAVE SCREEN.
+ WHEN kepp_c_okcode-ende.
+ PERFORM popup_exit.
+ IF g_exit = 'X'.
+ SET SCREEN 0. LEAVE SCREEN.
+ ENDIF.
+ WHEN kepp_c_okcode-abbr.
+ PERFORM popup_exit.
+ IF g_exit = 'X'.
+ SET SCREEN 0. LEAVE SCREEN.
+ ENDIF.
+ WHEN kepp_c_okcode-xtxt.
+ IF gs_0201-show_text = true.
+ gs_0201-show_text = false.
+ ELSE.
+ gs_0201-show_text = true.
+ ENDIF.
+ WHEN 'FIND'.
+ PERFORM find_0201 USING false. "new search
+ WHEN 'FND+'.
+ PERFORM find_0201 USING true. "find next
+
+* WHEN space.
+* stay on dynpro
+* WHEN 'OPTION'.
+* set the 'select option' icon
+* PERFORM set_sel_option_201.
+ WHEN OTHERS.
+ IF fcode(1) EQ 'M' AND fcode+1(3) CO '0123456789'.
+* call popup 'complex selection'
+ h_index = fcode+1(3).
+ PERFORM complex_sel USING h_index.
+ ELSEIF fcode(1) EQ 'R' AND fcode+1(3) CO '0123456789'.
+* call screen 'additional selection reference base'
+ h_index = fcode+1(3).
+ PERFORM add_sel_for_ref USING h_index.
+* ELSE.
+* PERFORM check_combination.
+* SET SCREEN 0. LEAVE SCREEN.
+ ENDIF.
+ ENDCASE.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form complex_sel
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> H_INDEX
+*&---------------------------------------------------------------------*
+FORM complex_sel USING VALUE(i_index).
+
+ DATA: s_sel1 LIKE LINE OF gs_bpsel-t_sel1,
+ s_selfield TYPE se16n_selfields,
+ t_se16n_multi TYPE se16n_selfields OCCURS 0 WITH HEADER LINE,
+ t_backup TYPE se16n_selfields OCCURS 0 WITH HEADER LINE,
+ h_index LIKE sy-tabix,
+ display.
+
+* get right field name
+ h_index = g_begin_200 + i_index - 1.
+ LOOP AT g_planmerk WHERE eline = h_index.
+ EXIT.
+ ENDLOOP.
+ IF sy-subrc NE 0.
+ MESSAGE x385.
+ ENDIF.
+
+** call SUPER-DUPI-MULTI-POPUP SE16N_MULTI_FIELD_INPUT
+ READ TABLE g_fieldtab WITH KEY fieldname = g_planmerk-fnam.
+
+* fill T_SE16N_MULTI with matching entries from GS_BPSEL-T_SEL1
+ REFRESH t_se16n_multi.
+ CLEAR t_se16n_multi.
+ LOOP AT gs_bpsel-t_sel1 INTO s_sel1
+ WHERE sort = kepp_c_sort_0200
+ AND fnam = g_planmerk-fnam.
+ t_se16n_multi-tabname = g_fieldtab-tabname.
+ t_se16n_multi-fieldname = s_sel1-fnam.
+ t_se16n_multi-sign = s_sel1-sign.
+ t_se16n_multi-option = s_sel1-option.
+ t_se16n_multi-low = s_sel1-low.
+ IF s_sel1-low = space
+ AND s_sel1-high = space.
+* use # as representation of initial value on the screen
+ t_se16n_multi-low = '#'.
+ ENDIF.
+ t_se16n_multi-high = s_sel1-high.
+ t_se16n_multi-type = g_planmerk-inttype.
+ t_se16n_multi-outputlen = g_planmerk-outputlen.
+ t_se16n_multi-intlen = g_planmerk-intlen.
+ t_se16n_multi-convexit = g_fieldtab-convexit.
+ t_se16n_multi-scrtext_m = g_fieldtab-scrtext_m.
+ t_se16n_multi-scrtext_l = g_fieldtab-scrtext_l.
+ t_se16n_multi-datatype = g_fieldtab-datatype.
+ t_se16n_multi-rollname = g_fieldtab-rollname.
+ APPEND t_se16n_multi.
+ ENDLOOP.
+
+* fill structure SELFIELD
+ s_selfield-tabname = g_fieldtab-tabname.
+ s_selfield-fieldname = g_planmerk-fnam.
+ s_selfield-type = g_planmerk-inttype.
+ s_selfield-outputlen = g_planmerk-outputlen.
+* S_SELFIELD-INTLEN = g_planmerk-INTLEN.
+ s_selfield-convexit = g_fieldtab-convexit.
+ s_selfield-datatype = g_fieldtab-datatype.
+ s_selfield-rollname = g_fieldtab-rollname.
+
+ CLEAR display.
+* display mode if field is protected in variant ...
+ READ TABLE gt_fnam WITH KEY sort = kepp_c_sort_0200
+ fnam = g_planmerk-fnam.
+ IF sy-subrc = 0 AND gt_fnam-fieldprot = 'X'.
+ display = 'X'.
+ ENDIF.
+* ... or because of char group attributes in G_PLANMERK
+ IF g_planmerk-status = '3'.
+ display = 'X'.
+ ENDIF.
+
+ t_backup[] = t_se16n_multi[].
+
+* call multi popup for complex selection
+ CALL FUNCTION 'SE16N_MULTI_FIELD_INPUT'
+ EXPORTING
+ ls_selfields = s_selfield
+ ld_display = display
+ ld_check_input_funcname = 'RKD_CHECK_MULTI_FIELD_INPUT'
+ TABLES
+ lt_multi_select = t_se16n_multi.
+
+ IF sy-subrc = 0 AND t_se16n_multi[] <> t_backup[].
+** update of customizing table GS_BPSEL-T_SEL1 for given field name
+
+* delete all earlier entries from GS_BPSEL-T_SEL1
+ LOOP AT gs_bpsel-t_sel1 INTO s_sel1
+ WHERE sort = kepp_c_sort_0200
+ AND fnam = g_planmerk-fnam.
+ DELETE gs_bpsel-t_sel1.
+ ENDLOOP.
+
+* rebuild GS_BPSEL-T_SEL1 with the entries from multi popup
+ LOOP AT t_se16n_multi.
+ CLEAR s_sel1.
+ s_sel1-sort = kepp_c_sort_0200.
+ s_sel1-fnam = t_se16n_multi-fieldname.
+ s_sel1-sign = t_se16n_multi-sign.
+ IF t_se16n_multi-sign IS INITIAL
+ OR t_se16n_multi-option IS INITIAL.
+* set default SIGN value
+ s_sel1-sign = 'I'.
+ ENDIF.
+ s_sel1-option = t_se16n_multi-option.
+ IF s_sel1-option IS INITIAL.
+* set default OPTION values
+ IF t_se16n_multi-low <> space
+ AND t_se16n_multi-high = space.
+ s_sel1-option = 'EQ'.
+ ELSEIF t_se16n_multi-low <> space
+ AND t_se16n_multi-high <> space.
+ s_sel1-option = 'BT'.
+ ENDIF.
+ ENDIF.
+ IF t_se16n_multi-low = '#'.
+* don't store # (as representation of initial value on the screen)
+* in table GS_BPSEL-T_SEL1
+ CLEAR t_se16n_multi-low.
+ ENDIF.
+ s_sel1-low = t_se16n_multi-low.
+ s_sel1-high = t_se16n_multi-high.
+ APPEND s_sel1 TO gs_bpsel-t_sel1.
+ ENDLOOP.
+
+ IF t_se16n_multi[] IS INITIAL.
+* set default entry (value '*')
+ s_sel1-low = '*'.
+ s_sel1-sign = 'I'.
+ s_sel1-option = 'EQ'.
+ CLEAR s_sel1-high.
+ APPEND s_sel1 TO gs_bpsel-t_sel1.
+ ENDIF.
+
+ SORT gs_bpsel-t_sel1 STABLE BY sort fnam.
+ ENDIF.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form add_sel_for_ref
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> H_INDEX
+*&---------------------------------------------------------------------*
+FORM add_sel_for_ref USING VALUE(i_index).
+
+ DATA: s_sel1 LIKE LINE OF gs_bpsel-t_sel1,
+ sel TYPE kepp_t_sel1 WITH HEADER LINE,
+ h_index LIKE sy-tabix,
+ display.
+
+* get right field name
+ h_index = g_begin_200 + i_index - 1.
+ LOOP AT g_planmerk WHERE eline = h_index.
+ EXIT.
+ ENDLOOP.
+ IF sy-subrc NE 0.
+ MESSAGE x385.
+ ENDIF.
+
+* provide data from GS_BPSEL-T_SEL1 for screen 1100
+ REFRESH sel.
+ CLEAR sel.
+ LOOP AT gs_bpsel-t_sel1 INTO sel
+ WHERE sort = kepp_c_sort_0200
+ AND fnam = g_planmerk-fnam.
+ APPEND sel.
+ ENDLOOP.
+
+ g_display = false.
+ g_fnam = g_planmerk-fnam.
+ gs_1100-show_text = true.
+ gs_1100-show_from_to = true.
+ gs_1100-col_optimize = true.
+ gt_chartab[] = sel[].
+
+* initialize tables GT_REF and GT_MULTI from screen 1100
+ CLEAR gt_ref[].
+ CLEAR gt_multi[].
+
+* set variable so that GT_REF is updated only at FIRST
+* processing of PBO after screen 1100 has been called
+ g_first_pbo_1100 = 'X'.
+
+* call screen with additional selection for reference base
+ CALL SCREEN 1100.
+
+ IF sy-subrc = 0.
+* update of customizing table GS_BPSEL-T_SEL1
+ LOOP AT gs_bpsel-t_sel1 INTO s_sel1
+ WHERE sort = kepp_c_sort_0200
+ AND fnam = g_planmerk-fnam.
+ DELETE gs_bpsel-t_sel1.
+ ENDLOOP.
+ LOOP AT sel.
+ s_sel1 = sel.
+ s_sel1-sort = kepp_c_sort_0200.
+ APPEND s_sel1 TO gs_bpsel-t_sel1.
+ ENDLOOP.
+ ENDIF.
+
+ SORT gs_bpsel-t_sel1 STABLE BY sort fnam.
+
+ENDFORM.
+*&---------------------------------------------------------------------*
+*& Form INIT_1100
+*&---------------------------------------------------------------------*
+*& text
+*&---------------------------------------------------------------------*
+*& --> p1 text
+*& <-- p2 text
+*&---------------------------------------------------------------------*
+FORM init_1100 .
+ DATA: length TYPE i,
+ num_ref TYPE i,
+ t_ass_src_ref TYPE kepp_t_ass_src_ref WITH HEADER LINE,
+ s_sel1 LIKE LINE OF gs_bpsel-t_sel1,
+ s_ref TYPE kepp_s_ref,
+ icon TYPE icon_d,
+ tab_fcodes(4) OCCURS 0,
+ l_src_low LIKE cedst-low,
+ l_src_high LIKE cedst-high,
+ l_ref_low LIKE cedst-low,
+ l_ref_high LIKE cedst-high.
+
+ FIELD-SYMBOLS: