ABAP-自动开启财务SAP账期功能
OA->SAP系统流程申请开启账期
1、开启财务账期(OB52)
1 CALL FUNCTION 'ZFM_FI_OB52' 2 EXPORTING 3 IV_BUKRS = LV_BUKRS 4 IV_GJAHR = LV_GJAHR 5 IV_POPER = LV_POPER 6 IMPORTING 7 EV_TYPE = LV_STATUS 8 EV_MESSAGE = LV_MESSAGE
1 DATA: LS_T001B TYPE T001B. 2 DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, 3 GV_MODE VALUE 'N', 4 LT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE, 5 LV_MSG TYPE STRING. 6 7 DEFINE BDC_DYNPRO. 8 CLEAR BDCDATA. 9 BDCDATA-PROGRAM = &1. 10 BDCDATA-DYNPRO = &2. 11 BDCDATA-DYNBEGIN = 'X'. 12 APPEND BDCDATA. 13 END-OF-DEFINITION. 14 15 DEFINE BDC_FIELD. 16 CLEAR BDCDATA. 17 BDCDATA-FNAM = &1. 18 BDCDATA-FVAL = &2. 19 CONDENSE BDCDATA-FVAL. 20 APPEND BDCDATA. 21 END-OF-DEFINITION. 22 23 BDC_DYNPRO 'SAPLSPO4' '0300'. 24 BDC_FIELD: 'BDC_CURSOR' 'SVALD-VALUE(01)', 25 'BDC_OKCODE' '=FURT', 26 'SVALD-VALUE(01)' IV_BUKRS. 27 BDC_DYNPRO 'SAPL0F00' '0068'. 28 BDC_FIELD: 'BDC_CURSOR' 'V_T001B_COFIB-TOYE1(06)', 29 'BDC_OKCODE' '=SAVE', 30 'V_T001B_COFIB-TOPE1(01)' IV_POPER, 31 'V_T001B_COFIB-TOPE1(02)' IV_POPER, 32 'V_T001B_COFIB-TOPE1(03)' IV_POPER, 33 'V_T001B_COFIB-TOPE1(04)' IV_POPER, 34 'V_T001B_COFIB-TOPE1(05)' IV_POPER, 35 'V_T001B_COFIB-TOPE1(06)' IV_POPER, 36 'V_T001B_COFIB-TOYE1(01)' IV_GJAHR, 37 'V_T001B_COFIB-TOYE1(02)' IV_GJAHR, 38 'V_T001B_COFIB-TOYE1(03)' IV_GJAHR, 39 'V_T001B_COFIB-TOYE1(04)' IV_GJAHR, 40 'V_T001B_COFIB-TOYE1(05)' IV_GJAHR, 41 'V_T001B_COFIB-TOYE1(06)' IV_GJAHR. 42 BDC_DYNPRO 'SAPL0F00' '0068'. 43 BDC_FIELD: 'BDC_CURSOR' 'V_T001B_COFIB-TOYE1(06)', 44 'BDC_OKCODE' '=BACK'. 45 46 REFRESH LT_MESSTAB. 47 CALL TRANSACTION 'OB52' USING BDCDATA 48 MODE GV_MODE 49 UPDATE 'S' 50 MESSAGES INTO LT_MESSTAB. 51 52 READ TABLE LT_MESSTAB WITH KEY MSGTYP = 'S'. 53 IF SY-SUBRC = 0. 54 CLEAR LS_T001B. 55 SELECT SINGLE * INTO LS_T001B FROM T001B WHERE BUKRS = IV_BUKRS. 56 IF LS_T001B-TOYE1 = IV_GJAHR AND LS_T001B-TOPE1 = IV_POPER. 57 EV_TYPE = 'S'. 58 EV_MESSAGE = '财务账期' && IV_GJAHR && '年' && IV_POPER && '已打开'. 59 ELSE. 60 EV_TYPE = 'E'. 61 EV_MESSAGE = '财务账期开启失败,请查看是否被其它账号锁定后重新传输!'. 62 ENDIF. 63 ELSE. 64 LOOP AT LT_MESSTAB WHERE MSGTYP = 'E'. 65 CALL FUNCTION 'MESSAGE_TEXT_BUILD' "消息编号及变量使用函数转换为消息内容输出 66 EXPORTING 67 MSGID = LT_MESSTAB-MSGID 68 MSGNR = LT_MESSTAB-MSGNR 69 MSGV1 = LT_MESSTAB-MSGV1 70 MSGV2 = LT_MESSTAB-MSGV2 71 MSGV3 = LT_MESSTAB-MSGV3 72 MSGV4 = LT_MESSTAB-MSGV4 73 IMPORTING 74 MESSAGE_TEXT_OUTPUT = LV_MSG. 75 CLEAR LT_MESSTAB . 76 ENDLOOP. 77 78 IF LV_MSG IS INITIAL . 79 READ TABLE LT_MESSTAB INDEX 1. 80 IF SY-SUBRC = 0. 81 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO LV_MSG. 82 ENDIF. 83 ENDIF. 84 85 EV_TYPE = 'E'. 86 EV_MESSAGE = LV_MSG. 87 ENDIF. 88 89 REFRESH BDCDATA.
2、开启物料账期(MMPV)
1 CALL FUNCTION 'ZFM_FI_MMPV' 2 EXPORTING 3 IV_BUKRS = LV_BUKRS 4 IV_GJAHR = LV_GJAHR 5 IV_POPER = LV_LFMON 6 IMPORTING 7 EV_TYPE = LV_STATUS 8 EV_MESSAGE = LV_MESSAGE
1 DATA: LS_MARV TYPE MARV, 2 LS_OPTIONS TYPE CTU_PARAMS. 3 DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, 4 LT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE, 5 LV_MSG TYPE STRING. 6 7 DEFINE BDC_DYNPRO. 8 CLEAR BDCDATA. 9 BDCDATA-PROGRAM = &1. 10 BDCDATA-DYNPRO = &2. 11 BDCDATA-DYNBEGIN = 'X'. 12 APPEND BDCDATA. 13 END-OF-DEFINITION. 14 15 DEFINE BDC_FIELD. 16 CLEAR BDCDATA. 17 BDCDATA-FNAM = &1. 18 BDCDATA-FVAL = &2. 19 CONDENSE BDCDATA-FVAL. 20 APPEND BDCDATA. 21 END-OF-DEFINITION. 22 23 BDC_DYNPRO 'RMMMPERI' '1000'. 24 BDC_FIELD: 'BDC_CURSOR' 'I_LFMON', 25 'BDC_OKCODE' '=ONLI', 26 'I_VBUKR' IV_BUKRS, 27 'I_BBUKR' IV_BUKRS, 28 'I_LFMON' IV_POPER, 29 'I_LFGJA' IV_GJAHR, 30 'I_XCOMP' 'X'. 31 32 LS_OPTIONS-DISMODE = 'N'. "设置显示模式为'N'(无显示) 33 LS_OPTIONS-UPDMODE = 'S'. "设置更新模式为'S'(同步更新) 34 LS_OPTIONS-RACOMMIT = 'X'. "设置RACOMMIT为'X'(提交后不等待) 35 36 REFRESH LT_MESSTAB. 37 CALL TRANSACTION 'MMPV' USING BDCDATA 38 OPTIONS FROM LS_OPTIONS 39 MESSAGES INTO LT_MESSTAB. 40 41 READ TABLE LT_MESSTAB WITH KEY MSGTYP = 'S'. 42 IF SY-SUBRC = 0. 43 CLEAR LS_MARV. 44 SELECT SINGLE * FROM MARV INTO LS_MARV WHERE BUKRS = IV_BUKRS. 45 IF LS_MARV-LFGJA = IV_GJAHR AND LS_MARV-LFMON = IV_POPER. 46 EV_TYPE = 'S'. 47 EV_MESSAGE = '公司代码' && IV_BUKRS && '物料账期已开启'. 48 ELSE. 49 EV_TYPE = 'E'. 50 EV_MESSAGE = '公司代码' && IV_BUKRS && '物料账期开启失败'. 51 ENDIF. 52 ELSE. 53 LOOP AT LT_MESSTAB WHERE MSGTYP = 'E'. 54 CALL FUNCTION 'MESSAGE_TEXT_BUILD' "消息编号及变量使用函数转换为消息内容输出 55 EXPORTING 56 MSGID = LT_MESSTAB-MSGID 57 MSGNR = LT_MESSTAB-MSGNR 58 MSGV1 = LT_MESSTAB-MSGV1 59 MSGV2 = LT_MESSTAB-MSGV2 60 MSGV3 = LT_MESSTAB-MSGV3 61 MSGV4 = LT_MESSTAB-MSGV4 62 IMPORTING 63 MESSAGE_TEXT_OUTPUT = LV_MSG. 64 CLEAR LT_MESSTAB . 65 ENDLOOP. 66 67 IF LV_MSG IS INITIAL . 68 READ TABLE LT_MESSTAB INDEX 1. 69 IF SY-SUBRC = 0. 70 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO LV_MSG. 71 ENDIF. 72 ENDIF. 73 74 EV_TYPE = 'E'. 75 EV_MESSAGE = LV_MSG. 76 ENDIF. 77 78 REFRESH BDCDATA.

浙公网安备 33010602011771号