*&\---------------------------------------------------------------------*
*& BDC 调用 MMPV 批量 开物料帐账期
*&\---------------------------------------------------------------------*
REPORT zmmpv NO STANDARD PAGE HEADING .TABLES : t000 , marv .
DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE .
DATA : BEGIN OF messtab OCCURS 0 .
INCLUDE STRUCTURE bdcmsgcoll .DATA : END OF messtab .
DATA : BEGIN OF itab_log OCCURS 0 ,
message ( 132 ) TYPE c ,
END OF itab_log .DATA : datum TYPE sy \- datum .
PARAMETERS : p_bukrs TYPE bukrs OBLIGATORY MEMORY ID buk ,
p_frdat TYPE sy \- datum ,
p_todat TYPE sy \- datum ,
p_mode LIKE ctu_params \- dismode AS LISTBOX DEFAULT 'E' VISIBLE
LENGTH 16 OBLIGATORY .
INITIALIZATION .
CONCATENATE sy \- datum ( 6 ) '01' INTO p_todat .
AT SELECTION-SCREEN OUTPUT .
%_p_bukrs_%_app_% \- text = ' 公司代码 ' .
%_p_frdat_%_app_% \- text = ' 当前期间 ' .
%_p_todat_%_app_% \- text = ' 开到期间 ' .
%_p_mode_%_app_% \- text = 'BDC 运行模式 ' .
AT SELECTION-SCREEN ON p_bukrs .
ON CHANGE OF p_bukrs .
SELECT SINGLE * FROM marvWHERE bukrs = p_bukrs .
IF sy \- subrc = 0 .CONCATENATE marv \- lfgja marv \- lfmon '01' INTO p_frdat .
ELSE .
MESSAGE e000 ( oo ) WITH ' 公司代码 ' p_bukrs ' 不存在物料帐数据 ' .
ENDIF .LEAVE SCREEN .
ENDON .START-OF-SELECTION .
IF p_frdat IS INITIAL OR p_frdat = '' ORp_todat IS INITIAL OR p_todat = '' .
MESSAGE e000 ( oo ) WITH ' 日期不可以为空 ' .
ENDIF .SELECT SINGLE * FROM t000WHERE mandt = sy \- mandt AND
cccategory = 'P' .
IF sy \- subrc = 0 .MESSAGE s000 ( oo ) WITH ' 不可以在生产系统使用本程序 ' .
RETURN .
ENDIF .p_frdat = p_frdat + 32 .
CONCATENATE p_frdat ( 6 ) '01' INTO datum .
WHILE datum ( 6 ) <= p_todat ( 6 ).
PERFORM bdc .
datum = datum + 32 .
datum+6 ( 2 ) = '01' .
ENDWHILE .MESSAGE s000 ( oo ) WITH ' 完毕,请使用 MMRV 查看结果 ' .
LOOP AT itab_log .WRITE / itab_log .
ENDLOOP .*&\---------------------------------------------------------------------*
*& Form bdc
*&\---------------------------------------------------------------------*
FORM bdc .DATA : option TYPE ctu_params .
option \- dismode = p_mode .
option \- racommit = 'X' .
CLEAR : bdcdata , bdcdata[] .
PERFORM bdc_dynpro USING 'RMMMPERI' '1000' .
PERFORM bdc_field USING 'BDC_OKCODE' '=ONLI' .
PERFORM bdc_field USING 'I_VBUKR' p_bukrs .
PERFORM bdc_field USING 'I_BBUKR' p_bukrs .
PERFORM bdc_field USING 'I_DATUM' datum .
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120' .
PERFORM bdc_field USING 'BDC_OKCODE' '=&F03' .
PERFORM bdc_dynpro USING 'RMMMPERI' '1000' .
PERFORM bdc_field USING 'BDC_OKCODE' '/EE' .
CALL TRANSACTION 'MMPV' USING bdcdataOPTIONS FROM option MESSAGES INTO messtab .
LOOP AT messtab .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTING
msgid = messtab \- msgid
msgnr = messtab \- msgnr
msgv1 = messtab \- msgv1
msgv2 = messtab \- msgv2
msgv3 = messtab \- msgv3
msgv4 = messtab \- msgv4
IMPORTING
message_text_output = itab_log \- message .
APPEND itab_log .CLEAR itab_log .
ENDLOOP .
ENDFORM . "bdc*----------------------------------------------------------------------*
• Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro .CLEAR bdcdata .
bdcdata \- program = program .
bdcdata \- dynpro = dynpro .
bdcdata \- dynbegin = 'X' .
APPEND bdcdata .
ENDFORM . "BDC_DYNPRO*----------------------------------------------------------------------*
• Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval .CLEAR bdcdata .
bdcdata \- fnam = fnam .
bdcdata \- fval = fval .
CONDENSE bdcdata \- fval .
APPEND bdcdata .
ENDFORM . "BDC_FIELD