SAP ABAP 自动批量开关账期程序 OB52和MMPV

本文介绍如何编写一个SAP ABAP程序,自动批量处理财务账期(通过RFPERIOD_OPEN和RFPERIOD_CLOSE)及物料账期(MMPV事务码),包括自定义函数ZTOOLSFM04_MMPV_JOB和公司代码表ZMASTERT0001的配置。通过维护T001B表实现自动开账,避免人工操作的疏漏。

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

SAP ABAP 自动批量开关账期程序 OB52和MMPV

前言

在SAP系统运行中 每个月经常会忘记同时也是极其重要的工作就是开关财务、物料账期
如果能有一个程序帮我们自动完成这个工作,那得是多么美好的事情
现在我们就在做这件美好的事

会计凭证过账期间

SAP 自己也做了程序来更新账期 RFPERIOD_OPEN 和 RFPERIOD_CLOSE
我看了下这两个程序的源码 - 直接更新的 T001B 这个表
同理 OB52 其实也就是一个视图维护 T001B 这个表
于是我们就可以写一个程序来维护 T001B 达到批量或自动开账期的效果

物料凭证过账期间

开物料账期的事务码是 MMPV
查看物料账期的事务码是 MMRV
一开始我的想法是通过BDC录屏的方式实现自动开账期的效果
但是MMPV执行完会有一个消息日志,在BDC录屏时并不会显示,从而打开账期失败
直接调用MMPV对应的程序 RMMMPERI 和使用录屏是一样的效果
所以我们只有将 RMMMPERI 程序的执行放到后台去,后台回去获取到对应的日志消息,进而打开账期成功
同时我们也可以通过查看日志消息来获取此次打开账期的执行过程

完整代码

主程序 ZTOOLSR0001

这个报表同时展示该公司的财务账期和物料账期
输入公司和期间
选择查询账期、执行打开账期、执行关闭账期等功能
报表中涉及到自定义开物料账期函数 ZTOOLSFM04_MMPV_JOB
以及自定义公司代码表 ZMASTERT0001 用以配置哪些公司需要更新账期

*&---------------------------------------------------------------------*
*& REPORT ZTOOLSR0001
*&---------------------------------------------------------------------*
*& 自动开账期程序
*&---------------------------------------------------------------------*
* OB52 参考SAP程序 RFPERIOD_OPEN 和 RFPERIOD_CLOSE
* 直接更新  T001B 这个表
*--------------------------------------------------------------------*
REPORT ztoolsr0001.

TABLES: t001b.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: s_comp FOR t001b-bukrs,
                  s_poper FOR t001b-frpe1 MODIF ID ty1 NO INTERVALS NO-EXTENSION.

  SELECTION-SCREEN SKIP 1.

  PARAMETERS: p_select RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X',
              p_execut RADIOBUTTON GROUP g1,
              p_close  RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK blk1.

TYPES: BEGIN OF ty_result,
         bukrs     TYPE t001-bukrs,
         mkoar     TYPE t001b-mkoar,
         bkont     TYPE t001b-bkont,
         vkont     TYPE t001b-vkont,
         frye1     TYPE t001b-frye1,
         frpe1     TYPE t001b-frpe1,
         toye1     TYPE t001b-toye1,
         tope1     TYPE t001b-tope1,
         frye2     TYPE t001b-frye2,
         frpe2     TYPE t001b-frpe2,
         toye2     TYPE t001b-toye2,
         tope2     TYPE t001b-tope2,
         lfgja     TYPE marv-lfgja,
         lfmon     TYPE marv-lfmon,
         vmgja     TYPE marv-vmgja,
         vmmon     TYPE marv-vmmon,
         blankcell TYPE c,
       END OF ty_result.

DATA: gt_result TYPE STANDARD TABLE OF ty_result.
DATA: gt_t001  TYPE STANDARD TABLE OF t001,
      gt_t001b TYPE STANDARD TABLE OF t001b,
      gt_marv  TYPE STANDARD TABLE OF marv.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
      gs_layout   TYPE slis_layout_alv.

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF screen-group1 EQ 'TY1' AND p_execut EQ 'X'.
      screen-active = 1.
    ELSEIF screen-group1 EQ 'TY1' AND p_execut NE 'X'.
      screen-active = 0.
    ENDIF.

    MODIFY SCREEN.
  ENDLOOP.

START-OF-SELECTION.
  PERFORM frm_select_comp_code.

  IF NOT gt_t001 IS INITIAL.
    IF NOT p_select IS INITIAL.     " 查询账期
      PERFORM frm_select_posting_process. " 查询财务账期
      PERFO
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值