Accounting Docs Automatically Created from MM

This program lists accounting documents that were automatically created from MM, and also lists the MM source documents. It can take several minutes to run, depending on the amount of data in the database, because it has to access (slow) cluster tables.

Accounting Docs Automatically Created from MM

 

*&---------------------------------------------------------------------**& Report  ZFIMMDOC                                                    **& Listing of accounting docs and the material docs from which they    **& were automatically created.                                         **&---------------------------------------------------------------------*REPORT  ZFIMMDOC  MESSAGE-ID Z1 LINE-COUNT 65 NO STANDARD PAGE HEADING.TABLES: BKPF, MSEG, MKPF, T001, BSIM, T001K, MARA, BSEG, SKAT,        MAKT, T156T.INCLUDE: ZFIMMTOP.                     "types mymseg_typePARAMETERS: COMPANYC LIKE BKPF-BUKRS OBLIGATORY, " default '1101',            YEAR LIKE BKPF-GJAHR OBLIGATORY, " default '1998'.            POSTDATE LIKE BKPF-BUDAT OBLIGATORY.SELECT-OPTIONS: VAL_AREA FOR BSIM-BWKEY NO-DISPLAY,                S_MBLNR FOR MSEG-MBLNR NO-DISPLAY,                S_BELNR FOR BSEG-BELNR NO-DISPLAY.DATA: MYBUTXT LIKE T001-BUTXT,      LINES TYPE I,      PREVIOUS_BELNR LIKE BKPF-BELNR,      PREVIOUS_AWKEY LIKE BKPF-AWKEY,      MYTXT50 LIKE SKAT-TXT50,      BEGIN OF X001K OCCURS 20.        INCLUDE STRUCTURE T001K.DATA: END OF X001K.DATA: BEGIN OF MYBKPF OCCURS 100,        BLART LIKE BKPF-BLART,         "doc type        BELNR LIKE BKPF-BELNR,         "doc no        WAERS LIKE BKPF-WAERS,         "currency key        AWKEY LIKE BKPF-AWKEY,      END OF MYBKPF.DATA: BEGIN OF MYBSIM  OCCURS 500.INCLUDE TYPE MYBSIM_TYPE.DATA: END OF MYBSIM.DATA: BEGIN OF MYBSEG OCCURS 1200,        BELNR LIKE BSEG-BELNR,        BUZEI LIKE BSEG-BUZEI,        BSCHL LIKE BSEG-BSCHL,        HKONT LIKE BSEG-HKONT,        WRBTR LIKE BSEG-WRBTR,        SHKZG LIKE BSEG-SHKZG,         "debit/credit      END OF MYBSEG.  DATA:  BEGIN OF MYMSEG OCCURS 500.  INCLUDE TYPE MYMSEG_TYPE.  DATA: END OF MYMSEG.PERFORM GET_BKPF.PERFORM GET_BSIM.PERFORM COLLECT_BELNR.PERFORM GET_BSEG.PERFORM COLLECT_MBLNR.PERFORM GET_MSEG.SORT MYBSIM BY BELNR.SORT MYMSEG BY MBLNR ZEILE.SORT MYBSEG BY BELNR BUZEI.LOOP AT MYBSIM.  IF MYBSIM-SHKZG = 'H'.               "negative value    MYBSIM-DMBTR = ( -1 ) * MYBSIM-DMBTR.  ENDIF.  PERFORM WRITE_BSIM_DATA USING MYBSIM.  AT END OF BELNR.  "new belnr record: get bseg recs      PERFORM WRITE_BSEG_DATA USING MYBSIM-BELNR.  ENDAT.  AT END OF AWKEY.    PERFORM WRITE_MSEG_DATA USING MYBSIM-AWKEY(10).  ENDAT.  WRITE: SY-ULINE.ENDLOOP.WRITE: / 'number of records accessed'.DESCRIBE TABLE MYBKPF LINES LINES.WRITE: / 'bkpf:', LINES.DESCRIBE TABLE MYBSIM LINES LINES.WRITE: / 'bsim:', LINES.DESCRIBE TABLE MYMSEG LINES LINES.WRITE: / 'mseg:', LINES.DESCRIBE TABLE MYBSEG LINES LINES.WRITE: / 'bseg:', LINES.AT SELECTION-SCREEN.* get company text  SELECT SINGLE BUTXT FROM T001 INTO MYBUTXT         WHERE BUKRS = COMPANYC.* get valuation areas from company code  REFRESH VAL_AREA. CLEAR VAL_AREA.  SELECT * FROM T001K INTO TABLE X001K                      WHERE BUKRS = COMPANYC.  LOOP AT X001K.    VAL_AREA-SIGN = 'I'. VAL_AREA-OPTION = 'EQ'.    VAL_AREA-LOW = X001K-BWKEY.    APPEND VAL_AREA.  ENDLOOP.  READ TABLE VAL_AREA INDEX 1.TOP-OF-PAGE.  PERFORM WRITE_HEADER.*&---------------------------------------------------------------------**&      Form  GET_BKPF*&---------------------------------------------------------------------*FORM GET_BKPF.* get bkpf records* should perform authority check here **  SELECT BLART BELNR WAERS AWKEY         INTO CORRESPONDING FIELDS OF TABLE MYBKPF         FROM BKPF         WHERE BUKRS = COMPANYC AND GJAHR = YEAR AND BUDAT = POSTDATE         ORDER BY BELNR.ENDFORM.                               " GET_BKPF*&---------------------------------------------------------------------**&      Form  GET_BSIM*----------------------------------------------------------------------*FORM GET_BSIM.  LOOP AT MYBKPF.    MYBSIM-BLART = MYBKPF-BLART.    MYBSIM-BELNR = MYBKPF-BELNR.    MYBSIM-WAERS = MYBKPF-WAERS.    MYBSIM-AWKEY = MYBKPF-AWKEY.* should perform authority check here ***   select bsim records using conditions gjahr, bwkey, belnr    SELECT BELNR BUZEI DMBTR MATNR BUDAT MENGE MEINS           INTO CORRESPONDING FIELDS OF MYBSIM           FROM BSIM           WHERE GJAHR = YEAR AND              BELNR = MYBKPF-BELNR AND              BWKEY IN VAL_AREA.      APPEND MYBSIM.    ENDSELECT.  ENDLOOP.ENDFORM.                               " GET_BSIM*&---------------------------------------------------------------------**&      Form  get_bseg*&---------------------------------------------------------------------*FORM GET_BSEG.* should perform authority check here ***   select bseg records using conditions bukrs, belnr, gjahr  SELECT BELNR BUZEI BSCHL HKONT WRBTR SHKZG         INTO CORRESPONDING FIELDS OF TABLE MYBSEG         FROM BSEG    WHERE GJAHR = YEAR AND          BUKRS = COMPANYC AND          BELNR IN S_BELNR.ENDFORM.*&---------------------------------------------------------------------**&      Form  GET_MSEG*&---------------------------------------------------------------------*FORM GET_MSEG.* should perform authority check here **    SELECT MBLNR           ZEILE BWART MATNR LGORT MENGE MEINS WAERS SHKZG DMBTR WERKS           KOSTL SOBKZ KZBEW KZZUG KZVBR           INTO CORRESPONDING FIELDS OF TABLE MYMSEG           FROM MSEG           WHERE MJAHR = YEAR AND MBLNR IN S_MBLNR.  WRITE:  SY-ULINE.ENDFORM.                               " GET_AND_WRITE_MATDOC*&---------------------------------------------------------------------**&      Form  WRITE_HEADER*----------------------------------------------------------------------*FORM WRITE_HEADER.  DATA: MYOPTION(11) TYPE C, MYSIGN(7) TYPE C, "explain select criteria        SELECT_TEXT(60) TYPE C, SELECT_POSITION TYPE I.  WRITE: TEXT-000,         TEXT-001.                     "company and report header  IF SY-PAGNO = 1.                     "**** first page    WRITE: / 'Company Code', COMPANYC, MYBUTXT,             'Accounting Year', YEAR, 'Posting Date:', POSTDATE.  ENDIF.                               "**** first page  WRITE: / 'Generated', SY-DATUM, SY-UZEIT,           'Page', SY-PAGNO, SY-ULINE.* format for accounting docs  FORMAT COLOR COL_GROUP.  WRITE: / 'DT',       4 'acct doc',       15 'material',       25 'item',       31 'Posted',       42(12) 'Quantity',          'Unit',       61 '         balance'.  FORMAT COLOR OFF.  WRITE: / 'item' UNDER 'item', 30 'Code', 35 'Account',                45 'Description',          61 '         balance'.* format for material docs  FORMAT COLOR COL_TOTAL.  WRITE: / 'MatrialDoc' UNDER 'acct doc',           'Posted' UNDER 'Posted', 'Entered' UNDER 'Description',            76 ' '.  FORMAT COLOR OFF.  WRITE: /10 'item',             'Material' UNDER 'Material',             25 'Plant',             'Stor' UNDER 'Code',             'Mvmt' UNDER 'Account',             42(12) 'Quantity',             'Unit',          61 '         balance',         /11 'MaterialDesc',             'MovementType' UNDER 'Quantity',          60  'CostCtr'.  WRITE: SY-ULINE.ENDFORM.                               " WRITE_HEADER*&---------------------------------------------------------------------**&      Form  WRITE_MKPF_DATA*&---------------------------------------------------------------------*FORM WRITE_MKPF_DATA USING F_MSEG TYPE MYMSEG_TYPE                           F_MAKTX LIKE MAKT-MAKTX                           F_BTEXT LIKE T156T-BTEXT.  WRITE: /    F_MSEG-ZEILE UNDER 'item',              F_MSEG-MATNR UNDER 'material',              F_MSEG-WERKS UNDER 'Plant',              F_MSEG-LGORT UNDER 'Stor',              F_MSEG-BWART UNDER 'Mvmt',          (12)F_MSEG-MENGE UNDER 'Quantity' DECIMALS 2,              F_MSEG-MEINS UNDER 'Unit',              F_MSEG-DMBTR UNDER '         balance'.  WRITE: /    F_MAKTX UNDER 'MaterialDesc',              F_BTEXT UNDER 'MovementType',              F_MSEG-KOSTL UNDER 'CostCtr'.ENDFORM.                               " WRITE_MKPF_DATA*&---------------------------------------------------------------------**&      Form  WRITE_MKPF_HEADER*&---------------------------------------------------------------------*FORM WRITE_MKPF_HEADER USING P_MBLNR LIKE MKPF-MBLNR.  DATA: MYBUDAT LIKE MKPF-BUDAT, MYCPUDT LIKE MKPF-CPUDT.  SELECT SINGLE BUDAT CPUDT FROM MKPF         INTO (MYBUDAT, MYCPUDT)         WHERE MBLNR = P_MBLNR AND MJAHR = YEAR.  IF SY-SUBRC = 0. "got record    FORMAT COLOR COL_TOTAL.    WRITE: / P_MBLNR UNDER 'acct doc',             MYBUDAT UNDER 'Posted',             MYCPUDT UNDER 'Entered',          76 ' '.    FORMAT COLOR OFF.  ENDIF.ENDFORM.                               " WRITE_MKPF_HEADER*&---------------------------------------------------------------------**&      Form  WRITE_BSIM_DATA*&---------------------------------------------------------------------*FORM WRITE_BSIM_DATA USING F_BSIM TYPE MYBSIM_TYPE.  FORMAT COLOR COL_GROUP.  WRITE: / F_BSIM-BLART UNDER 'DT',           F_BSIM-BELNR UNDER 'acct doc',           F_BSIM-MATNR UNDER 'material',           F_BSIM-BUZEI UNDER 'Plant', "item           F_BSIM-BUDAT UNDER 'Posted',           (12)F_BSIM-MENGE UNDER 'Quantity' DECIMALS 2,           F_BSIM-MEINS UNDER 'Unit',           F_BSIM-DMBTR UNDER '         balance' RIGHT-JUSTIFIED.  FORMAT COLOR OFF.ENDFORM.                               " WRITE_BSIM_DATA*&---------------------------------------------------------------------**&      Form  WRITE_BSEG_DATA*&---------------------------------------------------------------------*FORM WRITE_BSEG_DATA USING P_BELNR.  LOOP AT MYBSEG WHERE BELNR = P_BELNR.    SELECT SINGLE TXT50 INTO MYTXT50 FROM SKAT           WHERE SPRAS = '1' AND KTOPL = 'HFCA' AND                 SAKNR = MYBSEG-HKONT.    IF MYBSEG-SHKZG = 'H'.             "negative value      MYBSEG-WRBTR = ( -1 ) * MYBSEG-WRBTR.    ENDIF.    WRITE: / MYBSEG-BUZEI UNDER 'Plant', "item             MYBSEG-BSCHL UNDER 'Code',             MYBSEG-HKONT UNDER 'Account',             MYTXT50      UNDER 'Description',             MYBSEG-WRBTR UNDER '         balance'.  ENDLOOP.ENDFORM.                               " WRITE_BSEG_DATA*&---------------------------------------------------------------------**&      Form  COLLECT_MBLNR*&---------------------------------------------------------------------*FORM COLLECT_MBLNR.  SORT MYBSIM BY AWKEY.  S_MBLNR-SIGN = 'I'.  S_MBLNR-OPTION = 'EQ'.  LOOP AT MYBSIM.    AT NEW AWKEY.      S_MBLNR-LOW = MYBSIM-AWKEY(10).      APPEND S_MBLNR.    ENDAT.  ENDLOOP.  READ TABLE S_MBLNR INDEX 1.ENDFORM.                    " COLLECT_MBLNR*&---------------------------------------------------------------------**&      Form  COLLECT_BELNR*&---------------------------------------------------------------------*FORM COLLECT_BELNR.  S_BELNR-SIGN = 'I'.  S_BELNR-OPTION = 'EQ'.  SORT MYBSIM BY BELNR.  LOOP AT MYBSIM.    AT NEW BELNR.      S_BELNR-LOW = MYBSIM-BELNR.      APPEND S_BELNR.    ENDAT.  ENDLOOP.  READ TABLE S_BELNR INDEX 1.ENDFORM.                    " COLLECT_BELNR*&---------------------------------------------------------------------**&      Form  WRITE_MSEG_DATA*&---------------------------------------------------------------------*FORM WRITE_MSEG_DATA USING P_MBLNR LIKE MSEG-MBLNR.  DATA: MYBTEXT LIKE T156T-BTEXT,        MYMAKTX LIKE MAKT-MAKTX.  PERFORM WRITE_MKPF_HEADER USING P_MBLNR.  LOOP AT MYMSEG WHERE MBLNR = P_MBLNR.    SELECT SINGLE BTEXT INTO MYBTEXT FROM T156T             WHERE SPRAS = '1' AND                   BWART = MYMSEG-BWART AND                   SOBKZ = MYMSEG-SOBKZ AND                   KZBEW = MYMSEG-KZBEW AND                   KZZUG = MYMSEG-KZZUG AND                  KZVBR = MYMSEG-KZVBR.    SELECT SINGLE MAKTX INTO MYMAKTX FROM MAKT           WHERE SPRAS = '1' AND MATNR = MYMSEG-MATNR.    IF MYMSEG-SHKZG = 'H'.      MYMSEG-DMBTR = ( -1 ) * MYMSEG-DMBTR.    ENDIF.    PERFORM WRITE_MKPF_DATA USING MYMSEG MYMAKTX MYBTEXT.  ENDLOOP.ENDFORM.                    " WRITE_MSEG_DATA* end of ZFIMMDOC program ** begin of ZFIMMTOP include program **----------------------------------------------------------------------**   INCLUDE ZFIMMTOP                                                   **----------------------------------------------------------------------*  TYPES: BEGIN OF MYMSEG_TYPE,          MBLNR LIKE MSEG-MBLNR,          ZEILE LIKE MSEG-ZEILE,          BWART LIKE MSEG-BWART,          MATNR LIKE MSEG-MATNR,          WERKS LIKE MSEG-WERKS,          LGORT LIKE MSEG-LGORT,          MENGE LIKE MSEG-MENGE,          MEINS LIKE MSEG-MEINS,          WAERS LIKE MSEG-WAERS,          SHKZG LIKE MSEG-SHKZG,          DMBTR LIKE MSEG-DMBTR,          KOSTL LIKE MSEG-KOSTL,          SOBKZ LIKE MSEG-SOBKZ,       " for goods movement text          KZBEW LIKE MSEG-KZBEW,       " for goods movement text          KZZUG LIKE MSEG-KZZUG,       " for goods movement text          KZVBR LIKE MSEG-KZVBR,       " for goods movement text        END OF MYMSEG_TYPE.TYPES: BEGIN OF MYBSIM_TYPE,        BLART LIKE BKPF-BLART,         "doc type        BELNR LIKE BKPF-BELNR,         "doc no        WAERS LIKE BKPF-WAERS,        AWKEY LIKE BKPF-AWKEY,        BUZEI LIKE BSIM-BUZEI,         "doc item        MATNR LIKE BSIM-MATNR,        BUDAT LIKE BSIM-BUDAT,        MENGE LIKE BSIM-MENGE,         "quantity        MEINS LIKE BSIM-MEINS,         "unit of measure        SHKZG LIKE BSIM-SHKZG,         "debit/credit        DMBTR LIKE BSIM-DMBTR,         "balance amount      END OF MYBSIM_TYPE.* end of ZFIMMDOC include *
 来源: http://www.geocities.com/SiliconValley/Grid/4858/sap/ABAPCode/FIMMdocs.htm

本研究基于扩展卡尔曼滤波(EKF)方法,构建了一套用于航天器姿态与轨道协同控制的仿真系统。该系统采用参数化编程设计,具备清晰的逻辑结构和详细的代码注释,便于用户根据具体需求调整参数。所提供的案例数据可直接在MATLAB环境中运行,无需额外预处理步骤,适用于计算机科学、电子信息工程及数学等相关专业学生的课程设计、综合实践或毕业课题。 在航天工程实践中,精确的姿态与轨道控制是保障深空探测、卫星组网及空间设施建设等任务成功实施的基础。扩展卡尔曼滤波作为一种适用于非线性动态系统的状态估计算法,能够有效处理系统模型中的不确定性与测量噪声,因此在航天器耦合控制领域具有重要应用价值。本研究实现的系统通过模块化设计,支持用户针对不同航天器平台或任务场景进行灵活配置,例如卫星轨道维持、飞行器交会对接或地外天体定点着陆等控制问题。 为提升系统的易用性与教学适用性,代码中关键算法步骤均附有说明性注释,有助于用户理解滤波器的初始化、状态预测、观测更新等核心流程。同时,系统兼容多个MATLAB版本(包括2014a、2019b及2024b),可适应不同的软件环境。通过实际操作该仿真系统,学生不仅能够深化对航天动力学与控制理论的认识,还可培养工程编程能力与实际问题分析技能,为后续从事相关技术研究或工程开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值