Accounting Docs Automatically Created from MM

该程序列出从物料管理(MM)模块自动生成的会计凭证,并显示这些凭证对应的 MM 原始凭证。程序运行时长取决于数据库中的数据量,因为它需要访问较慢的集群表。

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

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_type

PARAMETERS: 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
### 自动化设计卷积神经网络架构的方法与工具 自动化设计卷积神经网络(CNN)架构旨在通过算法和框架来优化模型结构,从而提高性能并减少人工干预。当前的研究和技术主要集中在以下几个方面: #### 神经架构搜索 (Neural Architecture Search, NAS) NAS 是一种用于自动发现高效神经网络架构的技术。该方法通常涉及三个核心组件:搜索空间、搜索策略以及评估指标。 - **搜索空间**定义了可以探索的不同层类型及其连接方式。对于 CNN 来说,这可能包括不同类型的卷积操作、池化层和其他常见的构建模块。 - **搜索策略**决定了如何遍历这个巨大的可能性集合。常用的方法有强化学习、进化算法和基于梯度的优化等[^1]。 - **评估指标**用来衡量候选架构的好坏。一般会考虑准确性、计算成本等因素,在某些情况下也会引入特定任务的需求如延迟时间或内存占用量。 ```python import nni # NNI是一个流行的AutoML库,支持多种NAS算法实现 from nni.algorithms.nas import enas, darts # 使用ENAS进行神经架构搜索的例子 model = enas.search() ``` #### 可视化一致性分析 研究显示,在不同的 CNN 架构之间存在所谓的 "sweet spots",即参数配置使得多个架构表现出相似的最佳表现区间。这种现象有助于缩小 NAS 的搜索范围,并指导手动调整超参数的过程。 #### 结合先验知识的设计原则 除了完全依赖于数据驱动的方式外,还可以利用领域专家的经验来进行更有效的架构设计。例如,在处理图像识别问题时,可以选择具有较好归纳偏置特性的基础单元;而在其他应用场景下,则应根据具体需求定制相应的解决方案[^3]。 #### 工具推荐 为了简化这一过程,一些开源项目提供了易于使用的接口和支持多样的硬件平台: - AutoKeras 提供了一个高层次 API 接口,允许用户快速启动 NAS 实验; - Neural Architecture Optimization Toolkit (NAO) 集成了多种先进的 NAS 技术; - Google Vizier 和 TensorFlow Model Analysis 则侧重于实验管理和结果可视化功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值