LKKP0TOP-S

本文介绍了SAP Function Pool KPP0,包括其在ABAP程序中的作用,如何开始一个函数组,以及函数池的使用和维护。内容涉及FUNCTION-POOL语句的语法和限制,以及与之相关的包含程序和数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新和团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算和编程软件,广泛应用于数学建模、数据分析和科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型和实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法和结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟和结果可视化等一系列工作。然而,具体的建模细节和解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
以下是关于三种绘制云图或等高线图算法的介绍: 一、点距离反比插值算法 该算法的核心思想是基于已知数据点的值,计算未知点的值。它认为未知点的值与周围已知点的值相关,且这种关系与距离呈反比。即距离未知点越近的已知点,对未知点值的影响越大。具体来说,先确定未知点周围若干个已知数据点,计算这些已知点到未知点的距离,然后根据距离的倒数对已知点的值进行加权求和,最终得到未知点的值。这种方法简单直观,适用于数据点分布相对均匀的情况,能较好地反映数据在空间上的变化趋势。 二、双线性插值算法 这种算法主要用于处理二维数据的插值问题。它首先将数据点所在的区域划分为一个个小的矩形单元。当需要计算某个未知点的值时,先找到该点所在的矩形单元,然后利用矩形单元四个顶点的已知值进行插值计算。具体过程是先在矩形单元的一对对边上分别进行线性插值,得到两个中间值,再对这两个中间值进行线性插值,最终得到未知点的值。双线性插值能够较为平滑地过渡数据值,特别适合处理图像缩放、地理数据等二维场景中的插值问题,能有效避免插值结果出现明显的突变。 三、面距离反比 + 双线性插值算法 这是一种结合了面距离反比和双线性插值两种方法的算法。它既考虑了数据点所在平面区域对未知点值的影响,又利用了双线性插值的平滑特性。在计算未知点的值时,先根据面距离反比的思想,确定与未知点所在平面区域相关的已知数据点集合,这些点对该平面区域的值有较大影响。然后在这些已知点构成的区域内,采用双线性插值的方法进行进一步的插值计算。这种方法综合了两种算法的优点,既能够较好地反映数据在空间上的整体分布情况,又能保证插值结果的平滑性,适用于对插值精度和数据平滑性要求较高的复杂场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值