• 创建会计凭证


    AB类会计凭证 计提

    *&---------------------------------------------------------------------*
    *&      Form  FRM_CREATE_JT_BELNR
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM FRM_CREATE_JT_BELNR .
      DATA: L_INDEX  TYPE I,
            L_DMBTR1 TYPE BSEG-DMBTR,
            L_DMBTR2 TYPE BSEG-DMBTR,
            L_DMBTR3 TYPE BSEG-DMBTR,
            L_DMBTR4 TYPE BSEG-DMBTR.
    
      CLEAR L_INDEX.
    
    *调用BAPI生成类型为AB的会计凭证
      DOCUMENTHEADER-DOC_TYPE   = 'AB'.
      DOCUMENTHEADER-DOC_DATE   = P_BLDAT.
      DOCUMENTHEADER-PSTNG_DATE = P_BUDAT.
      DOCUMENTHEADER-FIS_PERIOD = P_BUDAT+4(2).
      DOCUMENTHEADER-COMP_CODE  = P_BUKRS.
      DOCUMENTHEADER-USERNAME   = SY-UNAME.
      DOCUMENTHEADER-BUS_ACT = 'RFBU'.
      DOCUMENTHEADER-HEADER_TXT = '珠宝工资分配'.
    
      SORT IT_OUTPUT_ITAB BY KOSTL.
    
      LOOP AT IT_OUTPUT_ITAB.
        MOVE IT_OUTPUT_ITAB TO WA_OUTPUT_LINE.
        AT NEW KOSTL.
          CLEAR: L_DMBTR1, L_DMBTR2.
        ENDAT.
    
        L_DMBTR1 = L_DMBTR1 + WA_OUTPUT_LINE-DMBTR1.
    *    l_dmbtr2 = l_dmbtr1 + wa_output_line-dmbtr9.
        L_DMBTR2 = L_DMBTR2 + WA_OUTPUT_LINE-DMBTR2 + WA_OUTPUT_LINE-DMBTR3 + WA_OUTPUT_LINE-DMBTR4 + WA_OUTPUT_LINE-DMBTR5
                            + WA_OUTPUT_LINE-DMBTR6 + WA_OUTPUT_LINE-DMBTR7 + WA_OUTPUT_LINE-DMBTR8.
    
        AT END OF KOSTL.
          ADD 1 TO L_INDEX.
          ACCOUNTGL-ITEMNO_ACC  = L_INDEX.
          IF WA_OUTPUT_LINE-KOSTL EQ 'C2I000012I'."Change By Ly 20150323
    *      IF wa_output_line-kostl EQ 'C202000006'.
            ACCOUNTGL-GL_ACCOUNT  = '5001030000'.
    *       ELSEif wa_output_line-kostl eq 'C202000005'.“DELETE BY LY 20150304
    *        accountgl-gl_account  = '5101010000'.
          ELSE.
            ACCOUNTGL-GL_ACCOUNT  = '6601010000'.
          ENDIF.
          ACCOUNTGL-COSTCENTER  = WA_OUTPUT_LINE-KOSTL.
          ACCOUNTGL-ITEM_TEXT   = '珠宝工资分配'.
          APPEND ACCOUNTGL.
          CLEAR ACCOUNTGL.
    
          CURRENCYAMOUNT-ITEMNO_ACC = L_INDEX.
          CURRENCYAMOUNT-AMT_DOCCUR = L_DMBTR1.
          CURRENCYAMOUNT-CURRENCY = 'CNY'.
          APPEND CURRENCYAMOUNT.
          CLEAR CURRENCYAMOUNT.
    
          CLEAR: ZACC_DOCUMENT.
          ZACC_DOCUMENT-POSNR = L_INDEX.
    *      zacc_document-bschl = '40'.Changed By Ly 20150323
          IF L_DMBTR1 < 0.                            "更改  shirumeng  20150506
            ZACC_DOCUMENT-BSCHL = '50'.
            ZACC_DOCUMENT-XNEGP = 'X'.
          ELSE.
            ZACC_DOCUMENT-BSCHL = '40'.
          ENDIF.
          EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
          EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
          APPEND EXTENSION2.
          CLEAR EXTENSION2.
    
          ADD 1 TO L_INDEX.
          ACCOUNTGL-ITEMNO_ACC  = L_INDEX.
          ACCOUNTGL-GL_ACCOUNT  = '2211010100'.                "更改   shiruemng  20150429
          ACCOUNTGL-COSTCENTER  = WA_OUTPUT_LINE-KOSTL.
          ACCOUNTGL-ITEM_TEXT   = '珠宝工资分配'.
          APPEND ACCOUNTGL.
          CLEAR ACCOUNTGL.
    
          CURRENCYAMOUNT-ITEMNO_ACC = L_INDEX.
          CURRENCYAMOUNT-AMT_DOCCUR = L_DMBTR2.
          CURRENCYAMOUNT-CURRENCY = 'CNY'.
          APPEND CURRENCYAMOUNT.
          CLEAR CURRENCYAMOUNT.
    
          CLEAR: ZACC_DOCUMENT.
          ZACC_DOCUMENT-POSNR = L_INDEX.
    *      zacc_document-bschl = '40'.
          IF L_DMBTR2 < 0.
            ZACC_DOCUMENT-BSCHL = '50'.
            ZACC_DOCUMENT-XNEGP = 'X'.
          ELSE.
            ZACC_DOCUMENT-BSCHL = '40'.
          ENDIF.
          EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
          EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
          APPEND EXTENSION2.
          CLEAR EXTENSION2.
    
          ADD 1 TO L_INDEX.
          ACCOUNTGL-ITEMNO_ACC  = L_INDEX.
          ACCOUNTGL-GL_ACCOUNT  = '2211010100'.      "更改   shiruemng  20150429
          ACCOUNTGL-COSTCENTER  = WA_OUTPUT_LINE-KOSTL.
          ACCOUNTGL-ITEM_TEXT   = '珠宝工资分配'.
          APPEND ACCOUNTGL.
          CLEAR ACCOUNTGL.
    
          CURRENCYAMOUNT-ITEMNO_ACC = L_INDEX.
          CURRENCYAMOUNT-AMT_DOCCUR = L_DMBTR1 * -1.
          CURRENCYAMOUNT-CURRENCY = 'CNY'.
          APPEND CURRENCYAMOUNT.
          CLEAR CURRENCYAMOUNT.
    
          CLEAR: ZACC_DOCUMENT.
          ZACC_DOCUMENT-POSNR = L_INDEX.
    *  和  6601010000  效果相反。
          IF L_DMBTR1 < 0.
            ZACC_DOCUMENT-BSCHL = '40'.
            ZACC_DOCUMENT-XNEGP = 'X'.
          ELSE.
            ZACC_DOCUMENT-BSCHL = '50'.
          ENDIF.
          " ZACC_DOCUMENT-BSCHL = '50'.
          EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
          EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
          APPEND EXTENSION2.
          CLEAR EXTENSION2.
        ENDAT.
      ENDLOOP.
    
      READ TABLE IT_TOTAL_ITAB INDEX 1.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241010100' IT_TOTAL_ITAB-DMBTR2.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241010200' IT_TOTAL_ITAB-DMBTR3.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241010300' IT_TOTAL_ITAB-DMBTR4.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241010500' IT_TOTAL_ITAB-DMBTR5.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241010600' IT_TOTAL_ITAB-DMBTR7.
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2241019900' IT_TOTAL_ITAB-DMBTR8.      "更改   shiruemng  20150429
      ADD 1 TO L_INDEX.
      PERFORM FRM_FILL_ITEM USING L_INDEX '2221110000' IT_TOTAL_ITAB-DMBTR6.
    
      CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
        EXPORTING
          DOCUMENTHEADER    = DOCUMENTHEADER
        TABLES
          ACCOUNTRECEIVABLE = ACCOUNTRECEIVABLE
          ACCOUNTPAYABLE    = ACCOUNTPAYABLE
          ACCOUNTGL         = ACCOUNTGL
          CURRENCYAMOUNT    = CURRENCYAMOUNT
          EXTENSION2        = EXTENSION2
          RETURN            = RETURN.
    ENDFORM.                    " FRM_CREATE_JT_BELNR
    *&---------------------------------------------------------------------*
    *&      Form  FRM_FILL_ITEM
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_L_INDEX  text
    *      -->P_1149   text
    *      -->P_IT_TOTAL_ITAB_DMBTR4  text
    *----------------------------------------------------------------------*
    FORM FRM_FILL_ITEM  USING    P_L_INDEX
                                 VALUE(P_1149)
                                 P_IT_TOTAL_ITAB_DMBTR4.
      ACCOUNTGL-ITEMNO_ACC  = P_L_INDEX.
      ACCOUNTGL-GL_ACCOUNT  = P_1149.
      ACCOUNTGL-ITEM_TEXT   = '珠宝工资分配'.
      APPEND ACCOUNTGL.
      CLEAR ACCOUNTGL.
    
      CURRENCYAMOUNT-ITEMNO_ACC = P_L_INDEX.
      CURRENCYAMOUNT-AMT_DOCCUR = P_IT_TOTAL_ITAB_DMBTR4 * -1.
      CURRENCYAMOUNT-CURRENCY = 'CNY'.
      APPEND CURRENCYAMOUNT.
      CLEAR CURRENCYAMOUNT.
    
      CLEAR: ZACC_DOCUMENT.
      ZACC_DOCUMENT-POSNR = P_L_INDEX.
      IF P_IT_TOTAL_ITAB_DMBTR4 < 0.
        ZACC_DOCUMENT-BSCHL = '40'.
        ZACC_DOCUMENT-XNEGP = 'X'.
      ELSE.
        ZACC_DOCUMENT-BSCHL = '50'.
      ENDIF.
      EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
      EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
      APPEND EXTENSION2.
      CLEAR EXTENSION2.
    ENDFORM.                    " FRM_FILL_ITEM

    创建类型为SK的会计凭证

    *&---------------------------------------------------------------------*
    *&      Form  FRM_CREATE_FF_BELNR
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *  -->  p1        text
    *  <--  p2        text
    *----------------------------------------------------------------------*
    FORM FRM_CREATE_FF_BELNR .
      DATA: L_INDEX  TYPE I,
            L_DMBTR1 TYPE BSEG-DMBTR,
            L_DMBTR2 TYPE BSEG-DMBTR,
            L_DMBTR3 TYPE BSEG-DMBTR,
            L_DMBTR4 TYPE BSEG-DMBTR.
      DATA:LV_DMBTR5 TYPE BSEG-DMBTR.
    
      CLEAR L_INDEX.
    *调用BAPI生成类型为SK会计凭证
      DOCUMENTHEADER-DOC_TYPE   = 'SK'.
      DOCUMENTHEADER-DOC_DATE   = P_BLDAT.
      DOCUMENTHEADER-PSTNG_DATE = P_BUDAT.
      DOCUMENTHEADER-FIS_PERIOD = P_BUDAT+4(2).
      DOCUMENTHEADER-COMP_CODE  = P_BUKRS.
      DOCUMENTHEADER-USERNAME   = SY-UNAME.
      DOCUMENTHEADER-BUS_ACT = 'RFBU'.
      DOCUMENTHEADER-HEADER_TXT = '珠宝工资发放'.
    
      CHECK IT_TOTAL_ITAB[] IS NOT INITIAL.
    
      SORT IT_TOTAL_ITAB[] BY KOSTL.
      LOOP AT IT_TOTAL_ITAB.
        ADD 1 TO L_INDEX.
    *  read table it_total_itab index 1.
    
        ACCOUNTGL-ITEMNO_ACC  = L_INDEX."1.
        ACCOUNTGL-GL_ACCOUNT  = '2211010100'.    "更改  shiruemng  20150429
        ACCOUNTGL-COSTCENTER  = IT_TOTAL_ITAB-KOSTL.
        ACCOUNTGL-ITEM_TEXT   = '珠宝工资发放'.
        APPEND ACCOUNTGL.
        CLEAR ACCOUNTGL.
    
        CURRENCYAMOUNT-ITEMNO_ACC = L_INDEX."1.
        CURRENCYAMOUNT-AMT_DOCCUR = IT_TOTAL_ITAB-DMBTR1 - IT_TOTAL_ITAB-DMBTR2 - IT_TOTAL_ITAB-DMBTR3 - IT_TOTAL_ITAB-DMBTR4
                                    - IT_TOTAL_ITAB-DMBTR5 - IT_TOTAL_ITAB-DMBTR6 - IT_TOTAL_ITAB-DMBTR7 - IT_TOTAL_ITAB-DMBTR8.
        CURRENCYAMOUNT-CURRENCY = 'CNY'.
        APPEND CURRENCYAMOUNT.
    
    
        CLEAR: ZACC_DOCUMENT.
        ZACC_DOCUMENT-POSNR = L_INDEX."1.
        IF CURRENCYAMOUNT-AMT_DOCCUR < 0.
          ZACC_DOCUMENT-BSCHL = '50'.
          ZACC_DOCUMENT-XNEGP = 'X'.
        ELSE.
          ZACC_DOCUMENT-BSCHL = '40'.
        ENDIF.
    *    zacc_document-bschl = '40'.
        ZACC_DOCUMENT-RSTGR = '-07'.
        EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
        EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
        APPEND EXTENSION2.
        CLEAR EXTENSION2.
        CLEAR CURRENCYAMOUNT.                                   "20150506
    *    add 1 to l_index.
    *    accountgl-itemno_acc  = l_index.
    *    accountgl-gl_account  = p_saknr.
    *    accountgl-item_text   = '珠宝工资发放'.
    *    append accountgl.
    *    clear accountgl.
    *
    *    currencyamount-itemno_acc = l_index.
    **  currencyamount-amt_doccur = it_total_itab-dmbtr1 * -1.
    *    currencyamount-amt_doccur = ( it_total_itab-dmbtr1 - it_total_itab-dmbtr2 - it_total_itab-dmbtr3 - it_total_itab-dmbtr4
    *                                - it_total_itab-dmbtr5 - it_total_itab-dmbtr6 - it_total_itab-dmbtr7 - it_total_itab-dmbtr8 ) * -1.
        LV_DMBTR5 = IT_TOTAL_ITAB-DMBTR1 - IT_TOTAL_ITAB-DMBTR2 - IT_TOTAL_ITAB-DMBTR3 - IT_TOTAL_ITAB-DMBTR4
                     - IT_TOTAL_ITAB-DMBTR5 - IT_TOTAL_ITAB-DMBTR6 - IT_TOTAL_ITAB-DMBTR7 - IT_TOTAL_ITAB-DMBTR8 + LV_DMBTR5.
    *    currencyamount-currency = 'CNY'.
    *    append currencyamount.
    *    clear currencyamount.
    *
    *    clear: zacc_document.
    *    zacc_document-posnr = l_index.
    *    zacc_document-bschl = '50'.
    *    extension2-structure = 'ZACC_DOCUMENT'.
    *    extension2-valuepart1 = zacc_document.
    *    append extension2.
    *    clear extension2.
    *    clear it_total_itab.
      ENDLOOP.
    
      "Changed by ly 20150311
      ADD 1 TO L_INDEX.
      ACCOUNTGL-ITEMNO_ACC  = L_INDEX.
      ACCOUNTGL-GL_ACCOUNT  = P_SAKNR.
      ACCOUNTGL-ITEM_TEXT   = '珠宝工资发放'.
      APPEND ACCOUNTGL.
      CLEAR ACCOUNTGL.
    
      CURRENCYAMOUNT-ITEMNO_ACC = L_INDEX.
      CURRENCYAMOUNT-AMT_DOCCUR = LV_DMBTR5 * -1.
    *    currencyamount-amt_doccur = ( it_total_itab-dmbtr1 - it_total_itab-dmbtr2 - it_total_itab-dmbtr3 - it_total_itab-dmbtr4
    *                                - it_total_itab-dmbtr5 - it_total_itab-dmbtr6 - it_total_itab-dmbtr7 - it_total_itab-dmbtr8 ) * -1.
      CURRENCYAMOUNT-CURRENCY = 'CNY'.
      APPEND CURRENCYAMOUNT.
    
    
      CLEAR: ZACC_DOCUMENT.
      ZACC_DOCUMENT-POSNR = L_INDEX.
      IF LV_DMBTR5 < 0.
        ZACC_DOCUMENT-BSCHL = '40'.
     "   ZACC_DOCUMENT-XNEGP = 'X'.
      ELSE.
        ZACC_DOCUMENT-BSCHL = '50'.
      ENDIF.
      " ZACC_DOCUMENT-BSCHL = '50'.
      EXTENSION2-STRUCTURE = 'ZACC_DOCUMENT'.
      EXTENSION2-VALUEPART1 = ZACC_DOCUMENT.
      APPEND EXTENSION2.
      CLEAR EXTENSION2.
      CLEAR IT_TOTAL_ITAB.
      CLEAR CURRENCYAMOUNT.                                     "20150506
      "Changed by ly 20150311
    
    
    
      CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
        EXPORTING
          DOCUMENTHEADER    = DOCUMENTHEADER
        TABLES
          ACCOUNTRECEIVABLE = ACCOUNTRECEIVABLE
          ACCOUNTPAYABLE    = ACCOUNTPAYABLE
          ACCOUNTGL         = ACCOUNTGL
          CURRENCYAMOUNT    = CURRENCYAMOUNT
          EXTENSION2        = EXTENSION2
          RETURN            = RETURN.
    ENDFORM.                    " FRM_CREATE_FF_BELNR

    会计凭证增强:

    BADI:ACC_DOCUMENT

    IF:IF_EX_ACC_DOCUMENT

    属性:多次使用,过滤器相关   过滤器类型   AWTYP

    过滤器值:BKPFF

    METH:IF_EX_ACC_DOCUMENT~CHANGE

      method if_ex_acc_document~change.
        data: wa_extension   type        bapiparex,
              ext_value(960) type        c,
              wa_accit       type        accit,
              l_ref          type ref to data.
    
        field-symbols: <l_struc> type any,
                       <l_field> type any.
    
        sort c_extension2 by structure.
    
        loop at c_extension2 into wa_extension.
          at new structure.
            create data l_ref type (wa_extension-structure).
            assign l_ref->* to <l_struc>.
          endat.
          concatenate wa_extension-valuepart1 wa_extension-valuepart2
                      wa_extension-valuepart3 wa_extension-valuepart4
                 into ext_value.
          move ext_value to <l_struc>.
          assign component 'POSNR' of structure <l_struc> to <l_field>.
          read table c_accit with key posnr = <l_field>
                into wa_accit.
          if sy-subrc is initial.
            move-corresponding <l_struc> to wa_accit.
            modify c_accit from wa_accit index sy-tabix.
          endif.
        endloop.
      endmethod.
  • 相关阅读:
    RK Android7.1 电池电量
    Bat
    RK: 调试 4G模块移远 EC600S-CN
    RK: 调试4G模块 合宙Air720
    关系代数 wiki
    大端与小端的区别
    Microsoft 365 解决方案:如何基于已存在的列表或Excel新建列表
    Microsoft 365 新功能速递:Teams的会议记录将支持对内外部用户共享等新用户体验
    Microsoft 365 解决方案:Office 365 ATP 使用户的收件箱免受钓鱼攻击
    O365事件ID MO222965 -无法访问 Microsoft 365服务
  • 原文地址:https://www.cnblogs.com/sapSB/p/6014832.html
Copyright © 2020-2023  润新知