使用计划功能激活数据片

来源:互联网 发布:小苍外设淘宝店网址 编辑:程序博客网 时间:2024/05/20 07:52

BPS里的DATASLICE,用来锁定指定条件的计划数据。

本代码大部分来源于网上资料,做了简化,重点是参考其中对BUFFER的处理。


计划功能出口调用的SE37函数,标准的导入导出参数几乎是固定的几个,如果你需要对计划数据进行读写,那还得加一个XTH_DATA的Changing参数。

具体概念看看计划功能出口的标准F1帮助也能了解大概了。


实现的功能:通过执行计划功能,实现对数据片的激活或取消激活。

工作内容:

1,配置计划功能

2,写ABAP函数

---------------------------------------------------------------------------------

计划功能 这里定义好要调用的Function,要给Function传递哪些自定义参数 包括:计划范围,数据片的名字,激活/取消激活

参数组,定义具体的参数值 ,我指定A表示激活,D表示取消激活。

ABAP函数

-----------------------------------------------

FUNCTION Z_BPS_DATASLICE_ACTIVE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_AREA) TYPE  UPC_Y_AREA
*"     REFERENCE(I_PLEVEL) TYPE  UPC_Y_PLEVEL
*"     REFERENCE(I_PACKAGE) TYPE  UPC_Y_PACKAGE
*"     REFERENCE(I_METHOD) TYPE  UPC_Y_METHOD
*"     REFERENCE(I_PARAM) TYPE  UPC_Y_PARAM
*"     REFERENCE(IT_EXITP) TYPE  UPF_YT_EXITP
*"     REFERENCE(ITO_CHASEL) TYPE  UPC_YTO_CHASEL
*"     REFERENCE(ITO_CHA) TYPE  UPC_YTO_CHA
*"     REFERENCE(ITO_KYF) TYPE  UPC_YTO_KYF
*"  EXPORTING
*"     REFERENCE(ET_MESG) TYPE  UPC_YT_MESG
*"----------------------------------------------------------------------
DATAtb_UPC_DATASLICET TYPE UPC_DATASLICET OCCURS 0.
DATAwa_UPC_DATASLICET LIKE LINE OF tb_UPC_DATASLICET.
DATAwa_UPC_DATASLICE TYPE UPC_DATASLICE.

TYPESBEGIN OF YS_SLICE,
  SORT TYPE UPC_DATASLICE-SORT,
  GUID TYPE UPC_DATASLICE-GUID,
  INACTIVE TYPE UPC_DATASLICE-INACTIVE,
  TEXT TYPE UPC_DATASLICET-TEXT,
  T_OPTIOS TYPE UPC_YT_OPTIOS,
  R_CHASEL TYPE REF TO IF_SEM_CHASEL,
  STATUS(1TYPE C,
  END OF YS_SLICE.
DATAwa_SLICE TYPE YS_SLICE.
TYPESYTO_SLICE TYPE SORTED TABLE OF YS_SLICE WITH UNIQUE KEY SORT.
TYPESBEGIN OF YS_AREA_SLICE,
  AREA TYPE UPC_Y_AREA,
  TO_SLICE TYPE YTO_SLICE,
  ENQMODE TYPE ENQMODE,
  END OF YS_AREA_SLICE.
DATAES_AREA_SLICE TYPE YS_AREA_SLICE.
DATAwa_et_mesg TYPE upc_ys_mesg.

* Parameters of Parameters Group
DATAwa_INACTIVE TYPE C.
DATAwa_AREA TYPE UPC_Y_AREA.
DATAwa_PATH TYPE UPC_Y_DATASLICETXT.
DATAls_exitp TYPE upf_ys_exitp.

* Get State / Param of DataSlices
READ TABLE it_exitp INTO ls_exitp WITH KEY parnm 'DS_STATE'.
IF sy-subrc 0.
  CASE ls_exitp-chavl.
    WHEN 'A'" DataSlices must be Activated.
      wa_INACTIVE ''.
    WHEN 'D'" DataSlices must be DE-Activated.
      wa_INACTIVE 'X'.
  ENDCASE.
ENDIF.

READ TABLE it_exitp INTO ls_exitp WITH KEY parnm 'DS_AREA'.
IF sy-subrc 0.
  wa_AREA ls_exitp-chavl.
ENDIF.
READ TABLE it_exitp INTO ls_exitp WITH KEY parnm 'DS_PATH'.
IF sy-subrc 0.
  wa_PATH ls_exitp-chavl.
ENDIF.

SELECT SINGLE FROM UPC_DATASLICET
  INTO wa_UPC_DATASLICET
  WHERE AREA EQ wa_AREA
  AND TEXT EQ wa_PATH  .

SELECT SINGLE INTO wa_UPC_DATASLICE
  FROM UPC_DATASLICE
  WHERE AREA EQ wa_AREA
  AND SORT EQ wa_UPC_DATASLICET-SORT.

PERFORM BUFFER_DATASLICE_GET IN PROGRAM SAPLUPC_DATASLICE
  USING wa_UPC_DATASLICE-AREA 'E'
  CHANGING ES_AREA_SLICE.

LOOP AT ES_AREA_SLICE-TO_SLICE INTO wa_SLICE
  WHERE SORT wa_UPC_DATASLICE-SORT AND GUID wa_UPC_DATASLICE-GUID.
  wa_SLICE-INACTIVE wa_INACTIVE.
  wa_SLICE-STATUS 'M'.
  MODIFY ES_AREA_SLICE-TO_SLICE FROM wa_SLICE.
ENDLOOP.

PERFORM BUFFER_DATASLICE_UPDATE IN PROGRAM SAPLUPC_DATASLICE
  CHANGING ES_AREA_SLICE.

CALL FUNCTION 'UPC_DATASLICE_COMMIT'.
CALL FUNCTION 'UPC_DATASLICE_SAVE'.
CLEAR ES_AREA_SLICE.

wa_et_mesg-MSGID 'UPC_FW'.
wa_et_mesg-MSGTY 'I'.
wa_et_mesg-MSGNO '001'.

wa_et_mesg-MSGV1 wa_UPC_DATASLICET-TEXT.
wa_et_mesg-MSGV2 wa_UPC_DATASLICET-AREA.
wa_et_mesg-MSGV3 wa_INACTIVE.
append wa_et_mesg to et_mesg.

ENDFUNCTION.


计划文件夹中的效果

点击取消激活按钮(e) ,数据片变为不活动,锁定取消,数据可编辑

点击激活按钮(i) ,数据片变为活动,数据锁定,不可编辑


原创粉丝点击