wordpress 自適應(yīng)門戶如何做seo
之前用MMRV,MMPV來一次一個(gè)月來修改會(huì)計(jì)期間。
如果是老的測試機(jī),可能是10幾年前的,一次1個(gè)月,更新到當(dāng)前期間,搞個(gè)100多次,手都抖。
SAP MM學(xué)習(xí)筆記 - 錯(cuò)誤 M7053 - Posting only possible in periods 2010/08 and 2010/07 in company code 1000_sap m7053-CSDN博客
所以就想找那種可以一次搞定的方法,下面來看一下。
TODO:最終也沒搞成,先放這里,給朋友們參考下,以后有空再說
1,MMRV - 查看當(dāng)前會(huì)計(jì)期間
比如這里是 2009/11
2,OMSY - 初期化會(huì)計(jì)年月
修改前:2009/11
啊,出錯(cuò)了
會(huì)社Code 3000 無法初期化。
Msg 番號 MM011
看來也不是隨便能改的哈
我在另一個(gè)會(huì)社Code上更新是可以更新的。
OMSY and OB52 - SAP Community
這個(gè)帖子里大致說了OMSY,MMPV/MMRV,OB52 的用途:
- OMSY - 初期化某個(gè)公司代碼的會(huì)計(jì)期間,只能用一次
? OMSY to fix up the Initial Period and Year for a company code for material management .
? After setting you should touch this setting & used only once.
- MMPV / MMRV:MM中的日常開關(guān)賬期用
? For opening & closing periods in MM side, you used MMPV and MMRV to
? set back posting?? allowed and to check which period is open in SAP system.
- OB52:FI 用
? OB52 is used for FI side only. It control period in all Account Types A, K, D,M, S
? and specially Account Type ?+? which stands for valid for all accounts type .
既然OMSY只能運(yùn)行一次,那就只能從MMPV,MMRV身上著手想辦法了。
3,通過ABAP代碼自動(dòng)批量開關(guān)賬期
SAP ABAP 自動(dòng)批量開關(guān)賬期程序 OB52和MMPV_sap ob52-CSDN博客
TA的代碼里面有幾個(gè)錯(cuò)誤:
a),Type "SLIS_T_FIELDCAT_ALV" 未定義
[ABAP] The type "slis_formname"is unknown._abap slis-CSDN博客
這就需要加上 type-pools,就可以include進(jìn)來了:
type-pools: slis. "調(diào)用類型組
b),不支持関係演算子 "-"
好像也沒啥好辦法,先放到一個(gè)變量里面,再放到關(guān)系演算子里面
c),SELECT * using a JOIN must have an INTO clause.
項(xiàng)目 "@GT_T001" 未定義,相似的名稱是 "GT_T001"
c),v_comp_code,v_process,v_year 這3個(gè)參數(shù),要放到汎用Module的Import參數(shù)里面
實(shí)行前
會(huì)社Code:3000
當(dāng)期:2009/11
運(yùn)行Report
輸入?yún)?shù):
- S_COMP:會(huì)社Code, 比如這里輸入 3000
- S_POPER:當(dāng)期會(huì)計(jì)期間,比如這里輸入 10 (因?yàn)楝F(xiàn)在是2024/10)
- P_EXECUT:選這項(xiàng)表示執(zhí)行批量更新
執(zhí)行完只會(huì)發(fā)現(xiàn)其實(shí)根本沒變:)
TODO:看來還有需要修改的地方,以后有時(shí)間再繼續(xù)改
原文里也說了實(shí)現(xiàn)思路了,我這里把自己的圖貼一貼,有需要的可以參考一下,反正我也沒成。
要是你搞成了,給我發(fā)個(gè)Message告訴哪里錯(cuò)了啊。
3-1,ABAP代碼
a),SE38 Report
*&---------------------------------------------------------------------*
*& REPORT ZTOOLSR0001
*&---------------------------------------------------------------------*
*& 自動(dòng)開賬期程序
*&---------------------------------------------------------------------*
* OB52 參考SAP程序 RFPERIOD_OPEN 和 RFPERIOD_CLOSE
* 直接更新 T001B 這個(gè)表
*--------------------------------------------------------------------*
REPORT ztoolsr0001.TABLES: t001b.
TABLES: t001.type-pools: slis. "調(diào)用類型組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.DATA: lv_dateDiff TYPE i.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. " 查詢財(cái)務(wù)賬期PERFORM frm_select_material_periods." 查詢物料賬期PERFORM frm_set_result_and_alv_show.ELSEIF NOT p_execut IS INITIAL. " 打開賬期IF NOT p_execut IS INITIAL AND NOT s_poper IS INITIAL.lv_dateDiff = s_poper-low+1(2) - sy-datum+4(2) .IF s_poper-low+1(2) LT sy-datum+4(2).MESSAGE '輸入期間不可小于當(dāng)前期間' TYPE 'S' DISPLAY LIKE 'E'.RETURN.ELSEIF lv_dateDiff GT 1 .MESSAGE '輸入期間 - 當(dāng)前期間不可大于 1' TYPE 'S' DISPLAY LIKE 'E'.RETURN.ENDIF.ENDIF.PERFORM frm_select_posting_process.PERFORM frm_set_new_posting_process. " 開財(cái)務(wù)賬期PERFORM frm_post_material_process. " 開物料賬期MESSAGE '執(zhí)行成功,請退出后等待一會(huì)兒(約1min)再重新進(jìn)入查看' TYPE 'S'.ELSEIF NOT p_close IS INITIAL. " 關(guān)閉賬期 - 只針對財(cái)務(wù)賬期PERFORM frm_select_posting_process.PERFORM frm_set_new_posting_process. " 關(guān)財(cái)務(wù)賬期ENDIF.ELSE.MESSAGE '未查詢到公司數(shù)據(jù),請檢查后重試;或聯(lián)系系統(tǒng)管理員維護(hù)ZMASTERT0001表' TYPE 'S' DISPLAY LIKE 'E'.ENDIF.END-OF-SELECTION.FORM frm_select_comp_code.
*--------------------------------------------------------------------*
* 有一個(gè)公司代碼主數(shù)據(jù) ZMASTERT0001
* 如果這個(gè)表忘記維護(hù)怎么辦
* 加一個(gè)不更新賬期的字段
*--------------------------------------------------------------------*SELECT*FROMt001INNER JOIN zmastert0001 ON t001~bukrs EQ zmastert0001~bukrsINTO CORRESPONDING FIELDS OF TABLE gt_t001WHERE t001~ktopl EQ 'CAUS'AND zmastert0001~not_up_acc_date NE 'X'AND t001~bukrs IN s_comp.ENDFORM.FORM frm_select_posting_process.IF NOT gt_t001 IS INITIAL.SELECT*FROMt001bINTO CORRESPONDING FIELDS OF TABLE gt_t001bFOR ALL ENTRIES IN gt_t001WHERE bukrs EQ gt_t001-bukrs.ENDIF.
ENDFORM.FORM frm_select_material_periods.SELECT*FROMmarvINTO CORRESPONDING FIELDS OF TABLE gt_marvFOR ALL ENTRIES IN gt_t001WHERE bukrs EQ gt_t001-bukrs.
ENDFORM.FORM frm_set_new_posting_process.DATA: ls_t001b LIKE LINE OF gt_t001b.DATA: lv_from_year_1 TYPE t001b-frye1,lv_from_process_1 TYPE t001b-frpe1,lv_to_year_1 TYPE t001b-toye1,lv_to_process_1 TYPE t001b-tope1,lv_from_year_2 TYPE t001b-frye2,lv_from_process_2 TYPE t001b-frpe2,lv_to_year_2 TYPE t001b-toye2,lv_to_process_2 TYPE t001b-tope2,lv_year TYPE t001b-frye1.FIELD-SYMBOLS: <lfs_t001b> LIKE LINE OF gt_t001b.*--------------------------------------------------------------------*
* 初始化值
*--------------------------------------------------------------------*lv_year = sy-datum+0(4).IF NOT p_close IS INITIAL. " 關(guān)閉賬期lv_from_year_1 = lv_year.lv_from_process_1 = sy-datum+4(2).ENDIF.lv_to_year_1 = lv_year.IF s_poper IS INITIAL.lv_to_process_1 = sy-datum+4(2).ELSEIF s_poper-low+1(2) GE sy-datum+4(2).lv_to_process_1 = s_poper-low+1(2).ENDIF.lv_from_year_2 = lv_year.lv_from_process_2 = '13'.lv_to_year_2 = lv_year.lv_to_process_2 = '16'.LOOP AT gt_t001b ASSIGNING <lfs_t001b>.IF NOT p_close IS INITIAL.<lfs_t001b>-frye1 = lv_from_year_1.<lfs_t001b>-frpe1 = lv_from_process_1.ENDIF.<lfs_t001b>-toye1 = lv_to_year_1.<lfs_t001b>-tope1 = lv_to_process_1.<lfs_t001b>-frye2 = lv_from_year_2.<lfs_t001b>-frpe2 = lv_from_process_2.<lfs_t001b>-toye2 = lv_to_year_2.<lfs_t001b>-tope2 = lv_to_process_2.ENDLOOP.MODIFY t001b FROM TABLE gt_t001b. " 更新 T001B 表
ENDFORM.*--------------------------------------------------------------------*
* 開物料賬期
*--------------------------------------------------------------------*
FORM frm_post_material_process.DATA: ls_t001 TYPE t001.DATA: lv_year TYPE lfgja,lv_process TYPE nperi.
*--------------------------------------------------------------------*
* 初始化值
*--------------------------------------------------------------------*lv_year = sy-datum+0(4).IF s_poper IS INITIAL.lv_process = sy-datum+4(2).ELSEIF s_poper-low+1(2) GE sy-datum+4(2).lv_process = s_poper-low+1(2).ENDIF.LOOP AT gt_t001 INTO ls_t001.CALL FUNCTION 'ZTOOLSFM04_MMPV_JOB'EXPORTINGv_comp_code = ls_t001-bukrsv_year = lv_yearv_process = lv_process.ENDLOOP.
ENDFORM.FORM frm_set_result_and_alv_show.DATA: ls_result TYPE ty_result,ls_t001b TYPE t001b,ls_marv TYPE marv.SORT gt_t001b BY bukrs mkoar.LOOP AT gt_t001b INTO ls_t001b.MOVE-CORRESPONDING ls_t001b TO ls_result.AT NEW bukrs.READ TABLE gt_marv INTO ls_marv WITH KEY bukrs = ls_t001b-bukrs.IF sy-subrc EQ 0.MOVE-CORRESPONDING ls_marv TO ls_result.ENDIF.ENDAT.APPEND ls_result TO gt_result.CLEAR: ls_result, ls_t001b, ls_marv.ENDLOOP.SORT gt_result BY bukrs mkoar.PERFORM frm_init_layout.PERFORM frm_set_fieldcat.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'FRM_ALV_PF_STATUS'i_callback_user_command = 'FRM_ALV_USER_COMMAND'is_layout = gs_layoutit_fieldcat = gt_fieldcatTABLESt_outtab = gt_resultEXCEPTIONSprogram_error = 1OTHERS = 2.
ENDFORM.FORM frm_init_layout.gs_layout-colwidth_optimize = 'X'.gs_layout-zebra = 'X'.
ENDFORM.FORM frm_set_fieldcat.DATA: ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv.PERFORM frm_init_fieldcat USING:'BUKRS' '公司代碼','MKOAR' '賬戶類型','BKONT' '終止科目','VKONT' '起始科目','FRYE1' '年度','FRPE1' '從','TOYE1' '年度','TOPE1' '到','FRYE2' '年度','FRPE2' '從','TOYE2' '年度','TOPE2' '到','BLANKCELL' '財(cái)務(wù)賬和物料賬分隔列','LFGJA' '當(dāng)期會(huì)計(jì)年度','LFMON' '當(dāng)期過賬期間','VMGJA' '上期會(huì)計(jì)年度','VMMON' '上期過賬期間'.ENDFORM.FORM frm_init_fieldcat USING fieldname TYPE slis_fieldcat_alv-fieldnameseltext TYPE slis_fieldcat_alv-seltext_l.DATA: ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv.ls_fieldcat-fieldname = fieldname.ls_fieldcat-seltext_s = seltext.ls_fieldcat-seltext_m = seltext.ls_fieldcat-seltext_l = seltext.ls_fieldcat-no_zero = 'X'.APPEND ls_fieldcat TO gt_fieldcat.
ENDFORM.FORM frm_alv_pf_status USING lt_extab TYPE slis_t_extab.SET PF-STATUS 'ZTOOLSR0001'.
ENDFORM.FORM frm_alv_user_command USING lv_ucomm LIKE sy-ucommls_selfield TYPE slis_selfield.DATA: lr_grid TYPE REF TO cl_gui_alv_grid.DATA: ls_layout TYPE lvc_s_layo.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->check_changed_data.ls_selfield-refresh = 'X'.ls_selfield-row_stable = 'X'.ls_selfield-col_stable = 'X'.CALL METHOD lr_grid->get_frontend_layoutIMPORTINGes_layout = ls_layout.ls_layout-cwidth_opt = 'X'.CALL METHOD lr_grid->set_frontend_layoutEXPORTINGis_layout = ls_layout.IF lv_ucomm EQ 'ZUPDATE'.PERFORM frm_set_new_posting_process. " 開財(cái)務(wù)賬期PERFORM frm_post_material_process. " 開物料賬期MESSAGE '執(zhí)行成功,請退出后等待一會(huì)兒(約1min)再重新進(jìn)入查看' TYPE 'S'.ENDIF.CALL METHOD lr_grid->refresh_table_display.
ENDFORM.
b),SE37 共通Module
本質(zhì)上是在共通Module里面調(diào)用了MMRV/MMPV來1次一個(gè)月進(jìn)行更新
FUNCTION ztoolsfm04_mmpv_job .
*"----------------------------------------------------------------------
*"*"ローカルインタフェース:
*" IMPORTING
*" REFERENCE(V_COMP_CODE) TYPE BUKRS
*" REFERENCE(V_PROCESS) TYPE NPERI
*" REFERENCE(V_YEAR) TYPE LFGJA
*"----------------------------------------------------------------------
* DATA: v_mode TYPE rfpdo-allgazmd.
* DATA: wa_bdcdata TYPE bdcdata,
* it_bdcdata TYPE STANDARD TABLE OF bdcdata.
*
* v_mode = 'N'.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-program = 'RMMMPERI'.
* wa_bdcdata-dynpro = '1000'.
* wa_bdcdata-dynbegin = 'X'.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'BDC_CURSOR'.
* wa_bdcdata-fval = 'I_XCOMP'.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'BDC_OKCODE'.
* wa_bdcdata-fval = '=ONLI'.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'I_VBUKR'.
* wa_bdcdata-fval = v_comp_code.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'I_LFMON'.
* wa_bdcdata-fval = v_process.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'I_LFGJA'.
* wa_bdcdata-fval = v_year.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'I_XCOMP'.
* wa_bdcdata-fval = 'X'.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CLEAR wa_bdcdata.
* wa_bdcdata-fnam = 'I_XMOVE'.
* wa_bdcdata-fval = ''.
* APPEND wa_bdcdata TO it_bdcdata.
*
* CALL TRANSACTION 'MMPV' USING it_bdcdata MODE v_mode.
*
* COMMIT WORK AND WAIT.
*--------------------------------------------------------------------*
* 使用 BDC 錄屏并不能實(shí)現(xiàn)
* 只能直接調(diào)用程序 RMMMPERI
* 直接調(diào)用程序 RMMPERI 會(huì)返回日志屏幕
* 所以還得去后臺(tái)調(diào)用
*--------------------------------------------------------------------*
* JobDATA: v_start_time LIKE sy-uzeit,v_report TYPE sy-repid,v_jobcount TYPE tbtcjob-jobcount,v_jobname TYPE tbtcjob-jobname.* v_jobname = 'ZMMPVJOB' && sy-datum.CONCATENATE 'ZMMPVJOB' sy-datum INTO v_jobname.v_report = 'ZREPORTXXX'.v_start_time = sy-uzeit + 7. " 系統(tǒng)當(dāng)期時(shí)間后21s* 定義后臺(tái)作業(yè)CALL FUNCTION 'JOB_OPEN'EXPORTINGjobname = v_jobnamejobclass = 'A'IMPORTINGjobcount = v_jobcount.SUBMIT rmmmperiWITH i_vbukr = v_comp_codeWITH i_bbukr = v_comp_codeWITH i_lfmon = v_processWITH i_lfgja = v_yearWITH i_xcomp = 'X'WITH i_xinco = ''WITH i_xmove = ''USER sy-unameVIA JOB v_jobnameNUMBER v_jobcountAND RETURN.CALL FUNCTION 'JOB_CLOSE'EXPORTINGjobcount = v_jobcountjobname = v_jobnamesdlstrtdt = sy-datumsdlstrttm = v_start_time
* strtimmed = 'X'.
ENDFUNCTION.
c),SE11 新規(guī)Table ZMASTERT0001
該表用于控制具體要執(zhí)行哪些公司的賬期。
比如我這里填了 會(huì)社Code 3000,表示要執(zhí)行會(huì)社Code3000 的賬期
?
3-2,SE38 執(zhí)行
說是成功了
TODO:其實(shí)沒有成功
以上代碼的原文請參照如下文章:
SAP ABAP 自動(dòng)批量開關(guān)賬期程序 OB52和MMPV_sap ob52-CSDN博客
以上就是本章的內(nèi)容。
更多SAP顧問業(yè)務(wù)知識請點(diǎn)擊下面目錄鏈接
https://blog.csdn.net/shi_ly/category_12216766.html