ABAP KE21N获利能力凭证批量创建BAPI_COPAACTUALS_POSTCOSTDATA

CALL BAPI代码

  DATA: lt_alv       TYPE STANDARD TABLE OF typ_alv WITH HEADER LINE,
        lt_alv1      TYPE STANDARD TABLE OF typ_alv,
        ls_alv       TYPE typ_alv,
        lv_record_id TYPE rke_record_id.

  DATA: lt_inputdata  TYPE STANDARD TABLE OF bapi_copa_data WITH HEADER LINE,
        lt_fieldlist  TYPE STANDARD TABLE OF bapi_copa_field WITH HEADER LINE,
        lt_return     TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
        lv_op_concern TYPE bapi0017-op_concern,
        lv_msg        TYPE bapi_msg,
        lv_flag,
        lv_waers      TYPE waers.


  lv_op_concern = 'DTZN'.
  CLEAR lv_flag.
  LOOP AT lt_alv INTO ls_alv.

    CLEAR: lt_inputdata[],lt_inputdata,lt_fieldlist[],lt_fieldlist,
           lt_return[],lt_return,lv_record_id,lt_alv-type,lt_alv-msg.

    lv_waers = ls_alv-frwae.

    lv_record_id = lv_record_id + 1.

    "记录类型
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VRGAR' ls_alv-vrgar ''.

    "过账日期
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'BUDAT' ls_alv-budat ''.

    "过账期间
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'PERIO' ls_alv-perio ''.

    "用户名
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'USNAM' sy-uname ''.

    "年度
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'GJAHR' ls_alv-perio+0(4) ''.

    "期间
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'PERDE' ls_alv-perio+4(3) ''.

    ls_alv-kndnr = |{ ls_alv-kndnr ALPHA = IN }|.
    "客户
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'KNDNR' ls_alv-kndnr ''.

    ls_alv-artnr = |{ ls_alv-artnr ALPHA = IN }|.
    "生产(物料)
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'ARTNR' ls_alv-artnr ''.

    ls_alv-kaufn = |{ ls_alv-kaufn ALPHA = IN }|.
    "销售订单
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'KAUFN' ls_alv-kaufn ''.

    ls_alv-kdpos = |{ ls_alv-kdpos ALPHA = IN }|.
    "销售订单项目
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'KDPOS' ls_alv-kdpos ''.

    "公司代码
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'BUKRS' ls_alv-bukrs ''.

    "工厂
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'WERKS' ls_alv-werks ''.

    "销售组织
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VKORG' ls_alv-vkorg ''.

    "分销渠道
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VTWEG' ls_alv-vtweg ''.

    "产品组
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'SPART' ls_alv-spart ''.

    "利润中心
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'PRCTR' ls_alv-prctr ''.


    "范围
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'KOKRS' lv_op_concern ''.

    "销售部门
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VKBUR' ls_alv-vkbur ''.

    "销售组
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VKGRP' ls_alv-vkgrp ''.

    "销售地区
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'BZIRK' ls_alv-bzirk ''.

    "国家
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'KMLAND' ls_alv-kmland ''.

    "地区
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'REGIO' ls_alv-regio ''.

    "货币码
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'FRWAE' ls_alv-frwae ''.

    "销售数量
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'ABSMG' ls_alv-absmg ''.

    ls_alv-absmg_me = |{ ls_alv-absmg_me ALPHA = IN }|.
    "销售单位
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'ABSMG_ME' ls_alv-absmg_me ''.

    "营业收入
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV010' ls_alv-vv010 lv_waers.

    "营业成本
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV020' ls_alv-vv020 lv_waers.

    "协议折扣
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV050' ls_alv-vv050 lv_waers.

    "促销折扣
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV060' ls_alv-vv060 lv_waers.

    "其他折扣
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV070' ls_alv-vv070 lv_waers.

    "电子部件
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV110' ls_alv-vv110 lv_waers.

    "屏幕部件
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV120' ls_alv-vv120 lv_waers.

    "供电部件
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV130' ls_alv-vv130 lv_waers.

    "包装材料
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV140' ls_alv-vv140 lv_waers.

    "五金塑胶
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV150' ls_alv-vv150 lv_waers.

    "线材接头
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV160' ls_alv-vv160 lv_waers.

    "光学部件
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV170' ls_alv-vv170 lv_waers.

    "其他材料
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV190' ls_alv-vv190 lv_waers.

    "委托加工费
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV610' ls_alv-vv610 lv_waers.

    "直接人工
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV810' ls_alv-vv810 lv_waers.

    "间接人工
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV820' ls_alv-vv820 lv_waers.

    "物料消耗
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV830' ls_alv-vv830 lv_waers.

    "租金及折旧
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV840' ls_alv-vv840 lv_waers.

    "其他费用
    PERFORM append_data TABLES lt_inputdata[]
                               lt_fieldlist[]
                        USING lv_record_id 'VV850' ls_alv-vv850 lv_waers.

    EXPORT gv_call_copa_bapi_indicator TO MEMORY ID 'ZCOPA_UPD_BAPI'.

    CALL FUNCTION 'BAPI_COPAACTUALS_POSTCOSTDATA'
      EXPORTING
        operatingconcern = lv_op_concern
        testrun          = ''
      TABLES
        inputdata        = lt_inputdata[]
        fieldlist        = lt_fieldlist[]
        return           = lt_return[].

但是该BAPI不能返回生成的获利能力凭证,所以对FM  RKE_SERVE_ACT_DOC_NUMBER做隐式增强返回,参考的获利能力分析COPA的BAPI:BAPI_COPAACTUALS_POSTCOSTDATA 通过增强返回凭证号 - 明大叔 - 博客园,具体代码如下

  DATA: gv_call_copa_bapi_indicator,
        gv_belnr TYPE rke_belnr.

  DATA: BEGIN OF LW_LINE_ITEM,
          BELNR TYPE RKE_BELNR,
        END OF LW_LINE_ITEM.
  FIELD-SYMBOLS <FS_COPADOC> TYPE ANY.

  IMPORT GV_CALL_COPA_BAPI_INDICATOR FROM MEMORY ID 'ZCOPA_UPD_BAPI' .

  IF GV_CALL_COPA_BAPI_INDICATOR EQ 'Y'.
    ASSIGN LINE_ITEM_TAB TO <FS_COPADOC>.
    MOVE-CORRESPONDING <FS_COPADOC> TO LW_LINE_ITEM .
    gv_belnr = LW_LINE_ITEM-BELNR .
    EXPORT gv_belnr TO MEMORY ID 'ZFICO056'.
  ENDIF.

想双击生成的凭证直接链接到KE23N,但是F1出来的界面上并没有PID,跟踪了一下,实际上还是有的

    SET PARAMETER ID 'BCO' FIELD gt_alv-belnr.
    SET PARAMETER ID 'GFP' FIELD gt_alv-perio+4(3).
    SET PARAMETER ID 'GJR' FIELD gt_alv-perio+0(4).
    
 
 SET PARAMETER ID 'VGA' FIELD gt_alv-vrgar.

    CALL TRANSACTION 'KE23N' WITH AUTHORITY-CHECK AND SKIP FIRST SCREEN.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值