FUNCTION-POOL kpp0 MESSAGE-ID k9.
---- function-pool:里面定义的都是全局性变量
---- SAP Function Group KPP0
---- k9:
ABAP-程序开始语句(Introductory Statements)(三)——函数池
ABAP开始语句包含以下6种:
---- CLASS-POOL:开始一个类池
---- FUNCTION-POOL:开始一个函数组
---- INTERFACE-POOL:开始一个接口池
---- PROGRAM:开始一个模块池或者子例程池
---- REPORT:开始一个可执行程序
---- TYPE-POOL:开始一个类型池
函数池是一个ABAP程序,该程序只用于包含函数模块,通常通过函数模块的使用来加载。当前函数组可以只包含最多99个函数模块。支持自己的屏幕。
语法:FUNCTION-POOL fpool [list_options] [MESSAGE-ID mid]
FUNCTION-POOL语句引入一个函数组。在任何已存在的包含程序展开后,它必须是独立程序的第一个语句。对于FUNCTION-POOL语句,附加的条件同REPORT后面有同样的含义。
函数组可以使用ABAP工作台的函数构建器维护。工作台自动生成了一个框架程序和下面列出的包含程序。FUNCTION-POOL语句在top inlcude里被创建。
- Includes
INCLUDE kppxi001. "Allgemeine Konstanten
INCLUDE kppxi002. "Allgemeine Variablen
INCLUDE kppxi003. "Allgemeine Typen
TYPE-POOLS: kpp, vrm, abap.
INCLUDE kpp0comm. "Common-Part
class CL_ABAP_CHAR_UTILITIES definition load.
DATA: generator_versn LIKE sy-saprl
VALUE ‘013’.
-
Änderungshistorie: 008 3.0F EC303
-
009 3.0D+ Attribute im CO-OM umgelegt
-
010 4.0 Attribute im CO-OM umgelegt
-
Feldname_werte teilweise translated '&_'
-
011 4.0C Vorzeichengerechtes Summieren im EC-CS
-
012 4.6A ab Hot-Package 09, 4.6A Hot Package 01
-
wg. gen Forms ec301, ec303
-
013 4.7 wg Unicode Anpassungen im kpp0gsch
-
Tabellen
TABLES: dfies, "DDIC Feldinformationen
kpp0b, "Dynprofelder U02
kpp1b, "Dynprofelder U02, ohne Loop
tkes2, "Dynprofelder U02
kpp0m, "Struktur Verprob.tab.
kpp0r, "Reportkatalog
mesg, "Struktur Message-Ausgabe
tkes1, "Katalog Zeilen-/Spaltenstr.
tka51, "Planerprofil für VTL
tka52, "Vorparametrisierung
trdir, "Reportdirectory
kpp1l_key. -
Typen
TYPES: chaintype(1) TYPE n, "Kettentypen
number(4) TYPE n. "Kettennummer
DATA: BEGIN OF itslhc_struc, "Tab. der zuletzt gültigen
fieldname LIKE kpp0d-fieldname, "Kopfkombination
value LIKE kpp0d-value,
init LIKE kpp0d-init,
END OF itslhc_struc.
-
Hilfstabelle mit Konvertierungsinfos für den Upload
TYPES: BEGIN OF ys_conv_table,
ratio LIKE kpp1l-ratio,
col LIKE kpp1l-col,
intlen LIKE kpp1l-intlen,
leng LIKE kpp1l-leng,
outputlen LIKE kpp1l-outputlen,
inttype LIKE kpp1l-inttype,
datatype LIKE kpp1l-datatype,
convexit LIKE kpp1l-convexit,
db_decim LIKE kpp1l-db_decim,
END OF ys_conv_table,
yt_conv_table TYPE ys_conv_table OCCURS 0. -
Konstanten
DATA: chaintype_mdc TYPE chaintype "Kettentypen
VALUE ‘1’,
chaintype_cls TYPE chaintype
VALUE ‘2’,
chaintype_atr TYPE chaintype
VALUE ‘3’,
chaintype_vtl TYPE chaintype
VALUE ‘4’,
chaintype_pfo TYPE chaintype
VALUE ‘5’,
count_reports LIKE sy-tfill "Anz. mögl. Planreports
VALUE ‘999’. "pro Reportwurzel
DATA: row_1lg_for_single_column LIKE "Zeilennr. in KPP1LG bei
kpp1lg-row VALUE ‘001’, "Einfachspalten
col_1lg_for_complex_column LIKE "Spaltennr. in KPP1LG für
kpp1lg-col VALUE ‘001’. "die komplexe Spalte
*
-
Festwerte für Routine SAVE/LOAD_HEADER_COMBI
DATA: slhc_save TYPE char1 VALUE ‘S’,
slhc_load TYPE char1 VALUE ‘L’.
-
Festwerte des Feldes ITEIBIND-VALUETYPE
DATA: valuetype_empty VALUE ‘1’, "kein Wert in 1LA
valuetype_fixed VALUE ‘2’, "fester Wert in 1LA
valuetype_noroot VALUE ‘3’, "keine Wurzelvar. in 1LA
valuetype_root VALUE ‘4’. "Wurzelvariable in 1LA
-
Konstante für die Dezimalstellen des Wertes aus dem Pop-Up zur
-
zur Funktion “Werte ändern”.
CONSTANTS popup_decim_umwe LIKE kpp1l-db_decim VALUE 2.
DATA popup_decim_aktp TYPE kpp1l-scr_decim VALUE 2. -
Variablen
DATA: subscreen_prog LIKE d020s-prog,
subscreen_dnum LIKE d020s-dnum,
subscreen_prog_dummy LIKE subscreen_prog VALUE ‘SAPLKPP0’,
subscreen_dnum_dummy LIKE subscreen_dnum VALUE ‘1100’.
DATA: input_from, "Von-Wert eingabebereit?
input_to, "Bis-Wert eingabebereit?
input_set, "Set-Wert eingabebereit?
active_from, "Von-Wert aktiv?
active_to, "Bis-Wert aktiv?
active_set. "Set-Wert aktiv?
DATA: acheck(1) TYPE c, "Kz.:Spezieller Appl.-Check?
answer(1) TYPE c, "schnittstelle zu pop-Up
buchen(1) TYPE c, "Kz.: Soll gebucht werden?
buchen_for_ec016(1) TYPE c, "Kz.: Ist gebucht worden?
bildtyp_erfassung LIKE kpp2d-bildtyp, "Bildtyp der Erfassungsm.
"(Übersicht oder Perioden)
g_bildtyp_o99 LIKE kpp2d-bildtyp, "Pseudo lokale Variable
chain_vtl_lfdnr TYPE number, "lfde. Nr. für Kettentyp
chain_cls_lfdnr TYPE number,
chain_atr_lfdnr TYPE number,
chain_mdc_lfdnr TYPE number,
count_itdtree LIKE sy-tfill, "Anz. Einträge ITDTREE
count_itleadcol LIKE sy-tfill, "Anz. Einträge ITLEADCOL
counter LIKE sy-tfill. "lokaler Zähler
DATA: current_entry_tka52 LIKE sy-tabix, "Eintrag in der tka52
last_entry_tka52 LIKE sy-tabix, "letzter Eintrag in der tka5
new_while_einstieg. "Neue Schleife Einstiegsb.
-
(falls der Fehler auf dem Dynpro im i02 auftritt, kann man
-
keinen Returncode zurückgeben)
DATA: dmac_for_help LIKE kpp0d-dmac, "fuer pf1, pf4
dummy_value_to LIKE kpp0d-value, "für EC002
dummy_init LIKE kpp0b-init, "
entry_required, "Kz.: Eintrag erzeugen?
entry_found, "Kz.: Eintrag gefunden?
error_mode, "Kz Front-End im Fehlerdial.
error_exists, "Kz.: Fehler aufgetreten?
exists(1) TYPE c, "Kz.: Eintrag existiert?
exit_code LIKE kpp0d-dobli, "Kz.: Exit-Command ausgel?
f4pr_for_help LIKE kpp0d-f4pr, "fuer pf1, pf4
f4fm_for_help LIKE kpp0d-f4fm, "fuer pf1, pf4
fieldname_for_help
LIKE help_info-fieldname, "fuer pf1, pf4
tabname_for_help
LIKE help_info-tabname, "fuer pf1, pf4
program_for_help
LIKE help_info-program, "fuer pf1, pf4
dynp_for_help
LIKE help_info-dynpro, "fuer pf1, pf4
dynprofld_for_help
LIKE help_info-dynprofld, "fuer pf1, pf4
links_for_help LIKE tline OCCURS 0, "fuer pf1, pf4
first_chain_cls_lfdnr "Nr. der 1. neuen Kette
LIKE chain_cls_lfdnr,
first_chain_atr_lfdnr
LIKE chain_atr_lfdnr,
first_chain_vtl_lfdnr
LIKE chain_vtl_lfdnr,
first_line_to_show LIKE kpp1l-row,
fuespa_komplex(1) TYPE c, "Kz: Komplexe Führungsspalte
formula_in_rows(1) TYPE c, "Kz: Zeilenformel(n) vorh.?
formula_in_cols(1) TYPE c, "Kz: Spaltenformel(n) vorh.?
forpl_new LIKE tka52-forpl, "Kz.:Formularpl.?
forpl_determined LIKE tka52-forpl, "Formularplanung bestimmt?
generate_input_flag(1) TYPE c. "für Reportgenerierung
DATA: help_input LIKE kpp0a-input,
help_modify LIKE kpp1l-modify,
help_calcm LIKE kpp0a-calcm,
help_calcd LIKE kpp0a-calcd,
h_value LIKE kpp0b-value,
-
kann man nicht HELP_VALUE nennen, da eine Inttab mauch so heißt,
-
die im programm ebenfalls verwendet wird help_init LIKE kpp0b-init, help_setuse, help_btype LIKE kpp1lva-btype, highest_pointr LIKE kpp1lg-pointr, "höchster Pointer Z/SpStrukt kpp1l_cursor LIKE kpp1l_key, "schnittstelle zu kpp2 identifier_missing(1), "Eintrag fehlt in ITDTREE? level_act LIKE sy-tabix, "aktueller Level in ITDTREE level_new LIKE sy-tabix, "nächster Level in ITDTREE level_old LIKE sy-tabix, "vorheriger Level in ITDTREE like_reportname LIKE sy-repid, "für Gen. Zugriff auf KPP0R mc_object LIKE dd23l-mconame, "Matchcode-Objekt modus_call LIKE kpp0s-modus, "gecalled?
- wird derzeit noch unsauber gesetzt; hier muß noch nachgebessert werden
modus_insert LIKE kpp0s-modus, "Einfügen von Einträgen erl?
new_dtyperatio LIKE kpp0r-dtyperatio, "Feld für Reportgenerieung
new_entry(1), "Kz.: Neuer Eintrag?
no_variables_in_screen(1) TYPE c, "Kz.: Keine Variablen?
ok_code LIKE rseu1-func_1. "OK-Code
DATA: parsing_formula_necessary, "Kz.: es muß geparst werden
plandata_exists(1) TYPE c, "Kz: Plandaten gefunden?
poper_from LIKE kpp0z-poper, "Von-Zeiteinheit
poper_to LIKE kpp0z-poper, "Bis-Zeiteinheit
value_umwe LIKE kpp1b-popup_val, "Wert aus Pop-Up, umwerten
value_aktp LIKE kpp1b-popup_val, "Wert aus Pop-Up, Aktion +
internal_value_umwe LIKE kpp1b-popup_val, "s.o., internes Format
internal_value_aktp LIKE kpp1b-popup_val, "s.o., internes Format
internal_popup_value LIKE kpp1b-popup_val,
"Wert aus Pop-Up, intern
povstepl LIKE sy-stepl,
ratio_act LIKE kpp0d-ratio, "akt. Kennzahlenbereich
root(1) TYPE c, "Kz.: Variable=Wurzel?
rowbegin LIKE sy-stepl,
row_first_new LIKE kpp1l-row, "1. neue Zeile im PAI
row_period_screen LIKE kpp1l-row. "ausgew. Zeile f. Periodb.
DATA: save_formula_in_rows(1) TYPE c, "Für Übersichts-/Periodbild
save_perflag LIKE t821s-perflag, "Für Verteilung der kum.
save_periv LIKE t821s-periv, "Werte in Periodenwerte
save_copa_extension(1), " dto.
save_anzbp LIKE kpp0zg-anzbp,
save_bildtyp LIKE bildtyp,
save_datar LIKE sy-datar,
save_export_ok_code LIKE rseu1-func_1, "für Übergabe nach außen - Variable wurde zu 4.0 neu eingeführt, wegen Bug in der Umstellungs-
- aktion der globalen Schnittstelle des k_plan_dialog in eine lokale
- Schnittstelle
save_fieldname LIKE kpp1la-fieldname,
save_first_line_to_show_ueb LIKE first_line_to_show,
save_cursor_ueb LIKE kpp1l_key,
save_headlines_hide_ueb,
save_delete_double_val,
save_forpl_ueb LIKE kpp1b-forpl,
save_form LIKE tkes1-form,
save_index LIKE sy-index,
save_loopc LIKE sy-loopc,
save_opt LIKE kpp1la-opt,
save_scrtext_1 LIKE kpp0dd-scrtext_m,
save_scrtext_2 LIKE kpp0dd-scrtext_m,
save_subrc LIKE sy-subrc,
save_subrc2 LIKE sy-subrc,
save_tabix LIKE sy-tabix,
save_tabix_1la LIKE sy-tabix,
save_value LIKE kpp0b-value,
save_variable LIKE kpp0b-value.
DATA: send_s034(1), "Kz.: Message schon gesendet
set_heading(1), "Kz.: Überschrift gesetzt?
stop_after_first(1), "für EC002
tab_count LIKE sy-tabix,
tabix_stepl LIKE sy-tabix,
tabix_kpp0b LIKE sy-tabix,
tabix_kpp0d LIKE sy-tabix,
tabix_kpp1la LIKE sy-tabix,
memoryid_proz(32), "id für memory Proz.Daten
memoryid_grep(32), "id für memory Gen. Report
memoryid_appl(32), "id für memory Applikat.Dat
memoryid_kpp2(32), "id für memory KPP2
memoryid_call_grep(32), "id Call-Fähigk. gen. Report
memoryid_call_post(32), "id Call-Fähigk. Verb.kontext
last_version_stack LIKE sy-tabix, "für zurückladen im Fehlerf.
g_stack_filled_in_pbo, -
wird aus KPP2 übergeben, weil dort die Verwaltung ist use_zeit(1) TYPE c, "Kz, in welcher Dim Zeit? values_get_retcode LIKE sy-subrc, vorpara_datar LIKE sy-datar, "Save SY-DATAR work(30). "lokales Arbeitsfeld
DATA: gen_report_in_any_case. "Kz in jedem Fall gen (Mastercode)