打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用工厂还是分割评估?

REPORT ZML_QJ MESSAGE-ID c+.

tables: CKMLRUNPLANT .

 

data: ITAB_MSG like   BDCMSGCOLL  OCCURS 0 with header line.

***1.Define an internal table with BDCDATA structure  ***

DATA  BEGIN  OF  INT_BDC  OCCURS  0.

      INCLUDE  STRUCTURE  BDCDATA.

DATA  END  OF INT_BDC.

refresh INT_BDC.

***2. Define Key Figure Internal Table ***

DATA: BEGIN OF ITAB_MLQJ  OCCURS 0,

      WERKS LIKE CKMLRUNPLANT-WERKS,

      END OF ITAB_MLQJ.

 

***3. Define  BDC Program and  Screen   ***

FORM BDC_SCREEN TABLES P_BDC STRUCTURE BDCDATA

     USING P_PROGRAM P_SCREEN.

  CLEAR  P_BDC.

  P_BDC-PROGRAM  =  P_PROGRAM.

  P_BDC-DYNPRO   =  P_SCREEN.

  P_BDC-DYNBEGIN = 'X'.

  APPEND  P_BDC.

ENDFORM.                    "BDC_SCREEN

***4.Define BDC Field Data ***

FORM BDC_FIELD TABLES P_BDC STRUCTURE BDCDATA

     USING P_NAME  P_VALUE.

  CLEAR P_BDC.

  CASE  P_VALUE.

    WHEN ''.

    WHEN OTHERS.

      P_BDC-FNAM  =  P_NAME.

      P_BDC-FVAL  =  P_VALUE.

      APPEND  P_BDC.

  ENDCASE.

ENDFORM.

***5.selection screen   ***

selection-screen begin of block zmlqj with frame title text1.

  select-options i_WERKS for CKMLRUNPLANT-WERKS no intervals .

  parameters:    P_GJAHR like CKMLRUNPLANT-GJAHR OBLIGATORY

                     default sy-datum+0(4),

                 P_POPER  like  CKMLRUNPLANT-POPER OBLIGATORY

                     default sy-datum+4(2) .

selection-screen end of block zmlqj.

***6.执行BDC 屏幕,循环工厂打开期间.

INITIALIZATION.

text1 = '批量允许工厂进行物料帐结帐' .

AT SELECTION-SCREEN.

START-OF-SELECTION.

*判断工厂是否错误且激活启用了物料帐

  select BWKEY  into table ITAB_MLQJ from t001k

    where BWKEY IN i_WERKS

      and MLBWA ne 'X' .

  if sy-subrc eq space .

     loop at itab_mlqj.

       concatenate '工厂:' itab_mlqj-werks '物料帐未启动或无效工厂!'

         into itab_msg .

       message I001(00) with itab_msg .

     endloop .

  endif .

*************************************

   refresh itab_MLQJ .

   select BWKEY  into table ITAB_MLQJ from t001K

      where BWKEY IN i_WERKS .

Loop  at  ITAB_MLQJ.

*执行ML_ALLOW_SETTLEMENT,即Tcode:CKMF

   AUTHORITY-CHECK OBJECT 'K_ML_VA'

           ID 'ACTVT' FIELD '45'

           ID 'BWKEY' FIELD ITAB_MLQJ-WERKS.

  IF sy-subrc ne 0.

    MESSAGE e054 WITH ITAB_MLQJ-WERKS.

* 检查工厂授权,不同公司代码用户只能操作自己工厂

  ENDIF.

 

   refresh INT_BDC.

   perform BDC_SCREEN  TABLES  INT_BDC       using

      'ML_ALLOW_SETTLEMENT'  '1000 ' .

   perform BDC_FIELD  TABLES  INT_BDC :

          using 'BDC_CURSOR'   'P_BDATJ',

          using 'BDC_OKCODE'    '=ONLI' ,

          using 'P_WERKS'  ITAB_MLQJ-WERKS,

          using  'P_POPER'  P_POPER,

          using  'P_BDATJ'  P_GJAHR .

    perform BDC_SCREEN  TABLES  INT_BDC       using

      'ML_ALLOW_SETTLEMENT'  '1000 ' .

    perform BDC_FIELD  TABLES  INT_BDC :

          using 'BDC_CURSOR'   'P_WERKS',

          using 'BDC_OKCODE'    '/EE' .

   CALL  TRANSACTION  'CKMF'

       USING  INT_BDC

       MODE  'E'

       UPDATE 'S'

       MESSAGES INTO   ITAB_MSG .

*执行ML_ALLOW_CLOSING,即Tcode:CKMG

    refresh INT_BDC.

   perform BDC_SCREEN  TABLES  INT_BDC       using

      'ML_ALLOW_CLOSING'  '1000 ' .

   perform BDC_FIELD  TABLES  INT_BDC :

          using 'BDC_CURSOR'   'P_BDATJ',

          using 'BDC_OKCODE'    '=ONLI' ,

          using 'P_WERKS'  ITAB_MLQJ-WERKS,

          using  'P_POPER'  P_POPER,

          using  'P_BDATJ'  P_GJAHR .

    perform BDC_SCREEN  TABLES  INT_BDC       using

      'ML_ALLOW_CLOSING'  '1000 ' .

    perform BDC_FIELD  TABLES  INT_BDC :

          using 'BDC_CURSOR'   'P_WERKS',

          using 'BDC_OKCODE'    '/EE' .

     CALL  TRANSACTION  'CKMG'

       USING  INT_BDC

       MODE  'E'

       UPDATE 'S'

       MESSAGES INTO   ITAB_MSG .

Endloop .

*列举出被允许价格确定和结算的工厂+会计年度/期间情况.

write : 'CKMF/CKMG:允许价格确定/结算,工厂/期间细清单如下:'.

write :    / '----------------------------------------------------'.

write :    / '|工  厂|会计年度|会计期间|备                   注  |'.

Loop  at  ITAB_MLQJ.

   write : / '----------------------------------------------------'.

   write : /  '|',ITAB_MLQJ-WERKS,'| ',P_GJAHR,' |  ',P_POPER,' |',

'该期价格确定和结算被允许|'.

ENDLOOP.

 write :   / '----------------------------------------------------'.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
SAP 之内表
一步一步教你写SAP RFC (实战项目)
多阶BOM展开
简单的 alv_list
C# 直接在DataSet(数据集)中分页
批量删除记录
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服