天天看點

【SAP ABAP系列】ABAP MRKO增強

正文部分

MRKO其實是個報表程式

這個報表程式存在着很多問題

很多時候滿足不了使用

1:做增強

2:拷貝重寫

我現在暫時做了增強

1:出口RMVKON00

2:隐士增強

出口增強借鑒了網上的例子

寄售記錄表:

rkwa , "Consignment Withdrawals

rkwa-stauts = '00' 為未結算

rkwa-status = '01'為己結算

寄售結算時相關資訊從這張表取得,包括價格、稅碼等資訊。

如果需要在過賬時更改相應的取數邏輯,比如:過賬日期,稅碼等可以使用RMVKON00這個增強。

具體由兩個EXIT:

EXIT_RMVKON00_001  : 财務憑證(發票),BKPF,BSEG中資訊

EXIT_RMVKON00_002  : RKWA中資訊

另外寄售結算沖銷時比較麻煩,應為沒有物料憑證是以不能用FB08或者MR8M沖銷,必須先沖銷寄售消耗(入庫憑證),然後用MRKO把這張沖銷的入庫結算掉,再去FI使用F-03或者F.13等做清帳。(具體參考NOTES: Note 356130)

Summary

Symptom

A consignment withdrawal is settled with Transaction MRKO. Only an FI Financial Accounting document is posted. If you try to reverse this document in FI, the system displays error message F5673 'Not possible to reverse the document in financial accounting'.

Additional key words

Reversal, MRKO, consignment, F5673, 673

Cause and prerequisites

This works as designed.

Solution

The consignment document should be cancelled in inventory management. The reversal document should then be settled using Transaction MRKO. As a result, a credit memo is posted. The FI document and this credit memo should then be cleared against each other in FI.

Header Data

【SAP ABAP系列】ABAP MRKO增強
​
增強範例(改擡頭參考):
*&---------------------------------------------------------------------*
*&  包括                ZXM08U11
*&---------------------------------------------------------------------*

IF sy-tcode = 'MRKO'." AND i_bukrs = '1400'.
  LOOP AT t_bkpf.
    CONCATENATE sy-datum sy-uzeit INTO t_bkpf-xblnr SEPARATED BY '-'.
    MODIFY t_bkpf TRANSPORTING xblnr.
  ENDLOOP.
ENDIF.

​           

複制

​
增強範例(改過賬日期):
*&---------------------------------------------------------------------*
*&  包括                ZXM08U11
*&---------------------------------------------------------------------*
DATA: wa_rkwa TYPE rkwa,
      wa_bseg TYPE bseg,
      wa_bkpf TYPE bkpf,
      fieldname(80),
      myidx TYPE i,
      ex_poper LIKE t009b-poper,
      ex_gjahr LIKE t009b-bdatj.
FIELD-SYMBOLS: <fs_date> TYPE rkwa-bldat.


  MOVE '(RMVKON00)SO_BUDAT-HIGH' TO fieldname.  "<fs_bkpf>-budat.
  ASSIGN (fieldname) TO <fs_date>.

  LOOP AT t_rkwa INTO wa_rkwa.

*    CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
*      EXPORTING
*        i_date         = <fs_date>
*        i_periv        = 'V3'
*      IMPORTING
*        e_buper        = ex_poper
*        e_gjahr        = ex_gjahr
*      EXCEPTIONS
*        input_false    = 1
*        t009_notfound  = 2
*        t009b_notfound = 3
*        OTHERS         = 4.
    ex_gjahr = <fs_date>+0(4).
    ex_poper+0(1) = '0'.
    ex_poper+1(2) = <fs_date>+4(2).

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    READ TABLE t_bkpf INTO wa_bkpf
                  WITH KEY bukrs = ''
                           belnr = wa_rkwa-belnr
                           gjahr = wa_rkwa-mjahr.
    IF sy-subrc EQ 0.
      myidx = sy-tabix.
      wa_bkpf-monat = ex_poper.
      wa_bkpf-gjahr = ex_gjahr.
      wa_bkpf-budat = <fs_date>.
      wa_bkpf-bldat = <fs_date>.
      MODIFY t_bkpf FROM wa_bkpf INDEX myidx. " TRANSPORTING bldat budat.
    ENDIF.
  ENDLOOP.

​           

複制

【SAP ABAP系列】ABAP MRKO增強