首页 > 其他分享 >DEMO:F-02固定资产 BAPI_ACC_DOCUMENT_POST 完整demo

DEMO:F-02固定资产 BAPI_ACC_DOCUMENT_POST 完整demo

时间:2022-10-14 23:34:09浏览次数:77  
标签:02 ACC BAPI GT GS CUR GL TYPE

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段


下面开始干货:


之前发了一篇文章:

《​​DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST​​》


有读者留言说最重要的增强部分没有写。

最初以为这个增强是最常规的增强,FICO项目机会都会用到就没有赘述。


可能确实有部分同行对这块不是很熟悉,所以重新调整这篇文章,加上增强部分:


新建结构:ZLM_ENHANCE_ACC_DOC

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_码农_02

代码 主要修改部分:

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段_03

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段_04

另外完善了下代码:

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_码农_05

SE19创建增强实例(大部分项目应该有已经实现的增强实例,不见得需要新建)。

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段_06

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_码农_07

添加过滤器值:BKPFF

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段_08

激活

DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_码农_09


DEMO:F-02固定资产  BAPI_ACC_DOCUMENT_POST 完整demo_字段_10

代码部分 (仅做参考):

METHOD IF_EX_ACC_DOCUMENT~CHANGE.

    DATA:LS_VALUE TYPE ZLM_ENHANCE_ACC_DOC.

    FIELD-SYMBOLS <LS_ACCIT> LIKE LINE OF C_ACCIT.

    DATA:LS_EXTENSION LIKE LINE OF C_EXTENSION2.


    CHECK SY-UNAME = 'LIUM'.


    LOOP AT C_EXTENSION2 INTO LS_EXTENSION WHERE STRUCTURE = 'ZLM_ENHANCE_ACC_DOC'.

      CLEAR LS_VALUE.
      MOVE LS_EXTENSION-VALUEPART1 TO LS_VALUE.

      READ TABLE C_ACCIT ASSIGNING <LS_ACCIT>
        WITH KEY POSNR =  LS_VALUE-POSNR.
      CHECK SY-SUBRC = 0.

      IF LS_VALUE-BSCHL = '50'.
        <LS_ACCIT>-RSTGR = LS_VALUE-RSTGR."101
      ELSEIF LS_VALUE-BSCHL = '70'.
        <LS_ACCIT>-ANBWA = LS_VALUE-ANBWA."100
      ENDIF.
    ENDLOOP.
  ENDMETHOD.


另外注意下是否原有增强实例会对这个有影响。

因为很多项目 这个增强内代码都会写成动态通用的。可能会有影响,自己查看下吧。


下面是程序完整代码:

*&---------------------------------------------------------------------*
*& Report  ZLM_DEMO_F02_ANLN1
*&
*&---------------------------------------------------------------------*
REPORT ZLM_DEMO_F02_ANLN1.


PARAMETERS:
P_BUKRS TYPE BUKRS DEFAULT '9160'.

DATA:GS_HEADER TYPE BAPIACHE09.
DATA:GV_KEY TYPE BAPIACHE09-OBJ_KEY.
DATA:GT_GL TYPE TABLE OF BAPIACGL09.
DATA:GS_GL TYPE          BAPIACGL09.

DATA:GT_CUR TYPE TABLE OF BAPIACCR09.
DATA:GS_CUR TYPE   BAPIACCR09.

DATA:GT_EXT TYPE TABLE OF BAPIPAREX.
DATA:GS_EXT TYPE  BAPIPAREX.

DATA:GT_RETURN TYPE TABLE OF BAPIRET2.
DATA:GS_RETURN TYPE        BAPIRET2.


DATA:GS_ACC_POST TYPE ZLM_ENHANCE_ACC_DOC.

GS_HEADER-OBJ_TYPE     =       'BKPFF     '."参考交易
GS_HEADER-OBJ_KEY      =       'RFBU      '."字段参考关键
GS_HEADER-USERNAME     =       SY-UNAME."用户名
GS_HEADER-HEADER_TXT   =       'TEST      '."凭证抬头文本
GS_HEADER-COMP_CODE    =       P_BUKRS."公司代码
GS_HEADER-DOC_DATE     =       SY-DATUM."凭证中的凭证日期
GS_HEADER-PSTNG_DATE   =       SY-DATUM."凭证中的过帐日期
GS_HEADER-TRANS_DATE   =       SY-DATUM."换算日期
GS_HEADER-FISC_YEAR    =       SY-DATUM(4)."会计年度
GS_HEADER-FIS_PERIOD   =       SY-DATUM+4(2).."会计期间
GS_HEADER-DOC_TYPE     =       'SA        '."凭证类型



CLEAR:GT_GL[],GT_CUR[],GT_EXT[],GT_RETURN[].

CLEAR GS_GL.
GS_GL-ITEMNO_ACC = 1.
GS_GL-GL_ACCOUNT = '1601000060'.
GS_GL-ITEM_TEXT = '现支_固定资产测试'.
GS_GL-ACCT_TYPE = 'A'.
GS_GL-PROFIT_CTR = '0000999999'.
GS_GL-ALLOC_NMBR = '现支_固定资产测试'.
GS_GL-ASSET_NO = '600000000003'.
GS_GL-SUB_NUMBER = '0000'.
GS_GL-COMP_CODE = P_BUKRS.

APPEND GS_GL TO GT_GL.

CLEAR GS_ACC_POST.
GS_ACC_POST-POSNR = GS_GL-ITEMNO_ACC.
GS_ACC_POST-BSCHL = '70'.
GS_ACC_POST-ANBWA = '100'.
GS_EXT-STRUCTURE  = 'ZLM_ENHANCE_ACC_DOC'.
GS_EXT-VALUEPART1 = GS_ACC_POST.
APPEND GS_EXT TO GT_EXT[].


CLEAR GS_GL.
GS_GL-ITEMNO_ACC = 2.
GS_GL-GL_ACCOUNT = '1002001002'.
GS_GL-ITEM_TEXT = '现支_固定资产测试'.
GS_GL-VALUE_DATE = SY-DATUM.
GS_GL-PROFIT_CTR = '0000999999'.
GS_GL-ALLOC_NMBR = '现支_固定资产测试'.
GS_GL-COMP_CODE = P_BUKRS.

APPEND GS_GL TO GT_GL.

CLEAR GS_ACC_POST.
GS_ACC_POST-POSNR = GS_GL-ITEMNO_ACC.
GS_ACC_POST-BSCHL = '50'.
GS_ACC_POST-RSTGR = '101'.
GS_EXT-STRUCTURE  = 'ZLM_ENHANCE_ACC_DOC'.
GS_EXT-VALUEPART1 = GS_ACC_POST.
APPEND GS_EXT TO GT_EXT[].


CLEAR GS_CUR.
GS_CUR-ITEMNO_ACC = 1.
GS_CUR-CURRENCY = 'CNY'.
GS_CUR-AMT_DOCCUR = 1000.
APPEND GS_CUR TO GT_CUR.
CLEAR GS_CUR.

GS_CUR-ITEMNO_ACC = 2.
GS_CUR-CURRENCY = 'CNY'.
GS_CUR-AMT_DOCCUR = '-1000'.
APPEND GS_CUR TO GT_CUR.


"凭证数据检查-防止跳号
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
  EXPORTING
    DOCUMENTHEADER = GS_HEADER
  TABLES
    ACCOUNTGL      = GT_GL
    CURRENCYAMOUNT = GT_CUR
    RETURN         = GT_RETURN
    EXTENSION2     = GT_EXT.


LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'E'.
  WRITE GS_RETURN-MESSAGE.
ENDLOOP.

IF SY-SUBRC <> 0..
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      DOCUMENTHEADER = GS_HEADER
    IMPORTING
      OBJ_KEY        = GV_KEY
    TABLES
      ACCOUNTGL      = GT_GL
      CURRENCYAMOUNT = GT_CUR
      RETURN         = GT_RETURN
      EXTENSION2     = GT_EXT.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

  WRITE GV_KEY.
ENDIF.



标签:02,ACC,BAPI,GT,GS,CUR,GL,TYPE
From: https://blog.51cto.com/u_15680210/5758082

相关文章

  • 测试BAPI ,执行test sequence
    ​同行问了个问题,说执行BAPI后显示成功,但是前台去查看值并没有变化。其实BAPI都是RFC,updatetask模式更新,需要显示的commit,不会隐士提交。所以在SE37下,执行testsequence,把......
  • 2022-2023-1 20221301 《计算机基础与程序设计》第七周学习总结
    2022-2023-120221301《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程<班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP......
  • 2022-10-14学习内容
    1.案例-计算器-界面编码1.1activity_calculator.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/andro......
  • 2022-2023-1 20221322《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第七周作业......
  • day46-JDBC和连接池02
    JDBC和连接池023.ResultSet[结果集]基本介绍表示数据库结果集的数据表,通常通过执行查询数据库的语句生成ResultSet对象保持一个光标指向其当前的数据行,最初,光标位于......
  • Linux系统编程11-access
    #include<unistd.h>intaccess(constchar*pathname,intmode);作用:判断某个文件是否有某个权限,或者判断文件是否存在参数:-pathname:判断的文......
  • Linux系统编程02-静态库
    库简单的看作可以直接拿来使用的代码仓库静态库在程序的链接阶段被复制到了程序中动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程......
  • vp训练 | 2022 江苏省赛 A C I J K L
    A.PENTAKILL!题意:给定一个击杀序列,死亡不影响连杀,问是否有人完成五杀分析:模拟,将每个选手的名字进行哈希,将属于每一个人的击杀序列处理出来,对每个人进行枚举判断即可ac......
  • 《Unix/Linux系统编程》第四章学习笔记 20201209戴骏
    第四章并发编程知识点归纳1、并行计算导论在早期,大多数计算机只有一个处理组件,称为处理器或中央处理器(CPU)。受这种硬件条件的限制,计算机程序通常是为串行计算编写的。......
  • 【闲话】2022.10.14
    今天的考试可算是寄大方了以及:已知T1时限6s,T2T3T4时限均为2s,且每道题都有100个数据点。现在有3页提交。请问Accoders什么时候会炸?真的有一说一,性能不如......