Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8372

Re: BAPI_PR_GETDETAIL dosen't fill services tables

$
0
0

*&---------------------------------------------------------------------*

*& Report  ZWTEST

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

 

 

REPORT  zwtest.

 

 

 

 

************************************************************************

*                    服务行 ESLL ESLH                                   *

*                    科目分配 EBKN                                      *

*                    服务行与科目分配对应关系 ESKL                       *

************************************************************************

 

 

DATA: header TYPE bapimereqheader,

      headerx TYPE bapimereqheaderx,

      item LIKE TABLE OF bapimereqitemimp WITH HEADER LINE,

      itemx LIKE TABLE OF bapimereqitemx WITH HEADER LINE,

      account LIKE TABLE OF bapimereqaccount WITH HEADER LINE,

      accountx LIKE TABLE OF bapimereqaccountx WITH HEADER LINE,

      service LIKE TABLE OF bapi_srv_service_line WITH HEADER LINE,

      servicex LIKE TABLE OF bapi_srv_service_linex WITH HEADER LINE,

      serviceaccount LIKE TABLE OF  bapi_srv_acc_data WITH HEADER LINE,

      serviceaccountx LIKE TABLE OF bapi_srv_acc_datax WITH HEADER LINE,

 

 

      preq_no LIKE  bapimereqheader-preq_no,

      lt_return LIKE TABLE OF bapiret2 WITH HEADER LINE,

      wa_return LIKE bapiret2.

 

 

 

 

header-pr_type = 'NB'."订单类型(采购)

headerx-pr_type = 'X'.

 

 

CLEAR: item.

item-preq_item = '00010'.

item-pur_group = '011'."采购组

item-short_text = '服务类PR'."短文本

item-plant = '3000'."工厂

item-matl_group = '007'."物料组

item-item_cat = 'D'."项目类别

item-acctasscat = 'K'."科目分配类别

item-pckg_no = '0000000001'."软件包编号

*item-distrib = '2'."复式记帐的分配标识  1:按数量分配;2:按百分比分配;3:按金额分配

*item-part_inv = '1'."部分发票标识 1  依次对GR数分配IR数  2  按比例对GR数分配IR数

APPEND item.

 

 

CLEAR: itemx.

itemx-preq_item = '00010'.

itemx-preq_itemx = 'X'.

itemx-pur_group = 'X'."采购组

itemx-short_text = 'X'."短文本

itemx-plant = 'X'."工厂

itemx-matl_group = 'X'."物料组

itemx-item_cat = 'X'."项目类别

itemx-acctasscat = 'X'."科目分配类别

itemx-pckg_no = 'X'."软件包编号

*itemx-distrib = 'X'."复式记帐的分配标识

*itemx-part_inv = 'X'."部分发票标识

APPEND  itemx.

 

 

************************************

"科目分配行 01

CLEAR: account.

account-preq_item = '00010'.

account-serial_no = '01'.

account-gl_account = '0000417000'.

account-costcenter = '0000006320'.

APPEND account.

 

 

CLEAR: accountx.

accountx-preq_item = '00010'.

accountx-serial_no = '01'.

accountx-preq_itemx = 'X'.

accountx-serial_nox = 'X'.

accountx-gl_account = 'X'.

accountx-costcenter = 'X'.

APPEND accountx.

 

 

"科目分配行02

CLEAR: account.

account-preq_item = '00010'.

account-serial_no = '02'.

account-gl_account = '0000417000'.

account-costcenter = '0000006328'.

APPEND account.

 

 

CLEAR: accountx.

accountx-preq_item = '00010'.

accountx-serial_no = '02'.

accountx-preq_itemx = 'X'.

accountx-serial_nox = 'X'.

accountx-gl_account = 'X'.

accountx-costcenter = 'X'.

APPEND accountx.

 

 

************************************

 

 

"服务行01

CLEAR: service.

service-doc_item = '00010'."行项目编号

service-outline = '0000000001'."对应行项目的item-pckg_no = '0000000001'."软件包编号

service-srv_line = '0000000010'."行号

service-short_text = 'service test01'.

service-quantity = '10.000'."数量

service-uom = 'EA'."单位

service-gross_price = '10.00'."单价

service-currency = 'USD'."货币

service-dist_ind_acc = '2'."【关键字段】 复式记帐的分配标识  1:按数量分配;2:按百分比分配;3:按金额分配

service-part_inv_ind = '1'."【关键字段】 部分发票标识 1  依次对GR数分配IR数  2  按比例对GR数分配IR数

APPEND service.

 

 

CLEAR: servicex.

servicex-doc_item = '00010'.

servicex-outline = '0000000001'.

servicex-srv_line = '0000000010'."

servicex-short_text = 'X'.

servicex-quantity = 'X'.

servicex-uom = 'X'.

servicex-gross_price = 'X'.

servicex-currency = 'X'.

servicex-dist_ind_acc = 'X'.

servicex-part_inv_ind = 'X'.

APPEND servicex.

 

 

"服务行02

CLEAR: service.

service-doc_item = '00010'."行项目编号

service-outline = '0000000001'."对应行项目的item-pckg_no = '0000000001'."软件包编号

service-srv_line = '0000000020'."行号

service-short_text = 'service test02'.

service-quantity = '9.000'.

service-uom = 'H'.

service-gross_price = '19.00'.

service-currency = 'USD'.

service-dist_ind_acc = '2'."【关键字段】 复式记帐的分配标识  1:按数量分配;2:按百分比分配;3:按金额分配

service-part_inv_ind = '1'."【关键字段】 部分发票标识 1  依次对GR数分配IR数  2  按比例对GR数分配IR数

APPEND service.

 

 

CLEAR: servicex.

servicex-doc_item = '00010'.

servicex-outline = '0000000001'.

servicex-srv_line = '0000000020'.

servicex-short_text = 'X'.

servicex-quantity = 'X'.

servicex-uom = 'X'.

servicex-gross_price = 'X'.

servicex-currency = 'X'.

servicex-dist_ind_acc = 'X'.

servicex-part_inv_ind = 'X'.

APPEND servicex.

 

 

************************************

 

 

"服务行与科目分配对应关系 01

CLEAR: serviceaccount.

serviceaccount-doc_item = '00010'."行项目编号

serviceaccount-outline = '0000000001'."对应服务行的service-outline

serviceaccount-srv_line = '0000000010'."对应服务行的service-srv_line

serviceaccount-serial_no = '01'."对应科目分配行的account-serial_no

serviceaccount-serial_no_item = '01'."等于serviceaccount-serial_no

serviceaccount-percent = '100'."三种分摊方式(由service-dist_ind_acc控制):按百分比分摊;

*serviceaccount-quantity = '10'."按数量分摊,数量分摊自service-quantity

*serviceaccount-net_value = ''."按服务行总价值分摊

APPEND serviceaccount.

 

 

CLEAR: serviceaccountx.

serviceaccountx-doc_item = '00010'.

serviceaccountx-outline = '0000000001'.

serviceaccountx-srv_line = '0000000010'.

serviceaccountx-serial_no = '01'.

serviceaccountx-serial_no_item = 'X'.

serviceaccountx-percent = 'X'."

*serviceaccountx-quantity = 'X'."

*serviceaccountx-net_value = 'X'."

APPEND serviceaccountx.

 

 

"服务行与科目分配对应关系 02

CLEAR: serviceaccount.

serviceaccount-doc_item = '00010'.

serviceaccount-outline = '0000000001'.

serviceaccount-srv_line = '0000000020'.

serviceaccount-serial_no = '02'.

serviceaccount-serial_no_item = '02'.

serviceaccount-percent = '100'."三种分摊方式(由service-dist_ind_acc控制):按百分比分摊;

*serviceaccount-quantity = '10'."按数量分摊,数量分摊自service-quantity

*serviceaccount-net_value = ''."按服务行总价值分摊

APPEND serviceaccount.

 

 

CLEAR: serviceaccountx.

serviceaccountx-doc_item = '00010'.

serviceaccountx-outline = '0000000001'.

serviceaccountx-srv_line = '0000000020'.

serviceaccountx-serial_no = '02'.

serviceaccountx-serial_no_item = 'X'.

serviceaccountx-percent = 'X'."

*serviceaccountx-quantity = 'X'."

*serviceaccountx-net_value = 'X'."

APPEND serviceaccountx.

 

 

 

 

CALL FUNCTION 'BAPI_PR_CREATE'

  EXPORTING

    prheader               = header

    prheaderx              = headerx

*   TESTRUN                =

  IMPORTING

    number                 = preq_no

*   PRHEADEREXP            =

  TABLES

    return                 = lt_return

    pritem                 = item

    pritemx                = itemx

*   PRITEMEXP              =

*   PRITEMSOURCE           =

    praccount              = account

*   PRACCOUNTPROITSEGMENT  =

    praccountx             = accountx

*   PRADDRDELIVERY         =

*   PRITEMTEXT             =

*   PRHEADERTEXT           =

*   EXTENSIONIN            =

*   EXTENSIONOUT           =

*   PRVERSION              =

*   PRVERSIONX             =

*   ALLVERSIONS            =

*   PRCOMPONENTS           =

*   PRCOMPONENTSX          =

*   SERVICEOUTLINE         =

*   SERVICEOUTLINEX        =

    servicelines           = service

    servicelinesx          = servicex

*   SERVICELIMIT           =

*   SERVICELIMITX          =

*   SERVICECONTRACTLIMITS  =

*   SERVICECONTRACTLIMITSX =

    serviceaccount         = serviceaccount

    serviceaccountx        = serviceaccountx

*   SERVICELONGTEXTS       =

*   SERIALNUMBER           =

*   SERIALNUMBERX          =

  .

 

 

* 处理错误消息:通过判断消息的类型,来判断BAPI是否成功

READ TABLE lt_return INTO wa_return WITH KEY type = 'E'.

IF sy-subrc = 0.

  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

  WRITE: / '失败 T_T'.

ELSE.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

    EXPORTING

      wait = 'X'.

  WRITE: / '成功创建采购申请O_o', preq_no.

ENDIF.

 

 

ULINE.

LOOP AT lt_return INTO wa_return.

  WRITE: / wa_return-message, wa_return-type, wa_return-id, wa_return-number.

ENDLOOP.


Viewing all articles
Browse latest Browse all 8372

Trending Articles