`

MIRO

    博客分类:
  • ABAP
 
阅读更多
from: http://help-sap.blogspot.com/2011/01/miro.html,
      http://space.itpub.net/9859323/viewspace-684596

If you want to mimic the quantity shown in MIRO (transaction) while posting incoming invoice, you need to use the following function module


CALL FUNCTION 'MRM_ASSIGNMENT'
EXPORTING
i_display = v_display
ti_drseg_old = i_drseg
TABLES
t_drseg = ti_drseg
t_rbselbest = ti_rbselbest
t_rbsellifs = ti_rbsellifs
t_rbselfrbr = ti_rbselfrbr
t_rbselwerk = ti_rbselwerk
t_rbselerfb = ti_rbselerfb
t_errprot = ti_errprot
t_ebelntab = ti_ebelntab
CHANGING
c_rbkpv = w_rbkpv
t_limit = w_limit.
IF sy-subrc = 0.
IF ti_errprot[] IS INITIAL AND ti_drseg[] IS NOT INITIAL.

LOOP AT ti_drseg ASSIGNING w_drseg WHERE koart = c_koart_initial.
w_drseg-tbtkz = w_rbkpv-tbtkz.
CALL FUNCTION 'MRM_AMOUNT_QUANTITY_PROPOSE_N'
EXPORTING
i_rbkpv = w_rbkpv
CHANGING
c_drseg = w_drseg .
ENDLOOP. "
ENDIF. "
ENDIF. "


FUNCTION Z_MME_CALLSAP_GETPOITEMS.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(IVORGANG) LIKE  RM08M-VORGANG
*"     VALUE(IREFERENZBELEGTYP) LIKE  RM08M-REFERENZBELEGTYP
*"     VALUE(IEBELN) LIKE  RM08M-EBELN OPTIONAL
*"     VALUE(IXWARE_BNK) LIKE  RM08M-XWARE_BNK
*"     VALUE(IEBELP) LIKE  RM08M-EBELP OPTIONAL
*"     VALUE(IBLDAT) LIKE  INVFO-BLDAT OPTIONAL
*"     VALUE(IBUDAT) LIKE  INVFO-BUDAT
*"     VALUE(IBUKRS) LIKE  BKPF-BUKRS
*"     VALUE(ISUPERFIELD) LIKE  RM08M-SUPERFIELD OPTIONAL
*"     VALUE(IXZUORDLIDELIVERY) LIKE  RBKPB-XZUORDLI OPTIONAL
*"     VALUE(IXZUORDLIRETURN) LIKE  RBKPB-XZUORDLI OPTIONAL
*"     VALUE(IDELIVERYBEGIN) LIKE  RBKPB-LFDATABLI OPTIONAL
*"     VALUE(IDELIVERYEND) LIKE  RBKPB-LFDATBISLI OPTIONAL
*"     VALUE(IRETURNBEGIN) LIKE  RBKPB-LFDATABLI OPTIONAL
*"     VALUE(IRETURNEND) LIKE  RBKPB-LFDATBISLI OPTIONAL
*"  EXPORTING
*"     VALUE(RETURNMSG) LIKE  ZRETURNMSG STRUCTURE  ZRETURNMSG
*"  TABLES
*"      IDRSEG STRUCTURE  DRSEG OPTIONAL
*"----------------------------------------------------------------------
  TYPES: BEGIN OF MRM_RBVS.
          INCLUDE STRUCTURE RBVS.
  TYPES: SELKZ(1) TYPE C,
         END OF MRM_RBVS.

  TYPES: BEGIN OF MRM_RBKPV.
          INCLUDE STRUCTURE RBKP_V.
  TYPES: RBTX LIKE RBTX OCCURS 0,
         THEAD  TYPE THEAD,              " Note header
         TNOTE  TYPE TLINE    OCCURS 0,  " Note lines
         H_RBVS TYPE MRM_RBVS OCCURS 0,  " vendor split
         H_RBWS LIKE RBWS     OCCURS 0,  " extended withholding tax
*       bupla  LIKE accit-bupla,        " Business place Korea
         WWERT  LIKE ACCIT-WWERT,        "  Umrechnungsdatum f黵 Kufix
         MRM_ZLSPR TYPE MRM_ZLSPR,       "  Log. Zahlsperre
         XCPDD TYPE XCPDD,               " CPD Dialog bearbeitet
         ADRNR TYPE ADRNR,               " CPD Adresse
         PENRC TYPE PENRC,               " Cause for late Payment
                                         "(PS/USA)
         BAPI_EXTBLNR TYPE RE_BELNR,
         " External doc. no. for BAPI when
         BAPI_PROCESS TYPE C,         " changing fiscal year / flag
                                         " that doc. comes from BAPI
         END OF MRM_RBKPV.

  TYPES: BEGIN OF MMCR_DRSEG_CO.
          INCLUDE STRUCTURE COBL_MRM_D.
  TYPES: CR LIKE DRSEG_CR    OCCURS 0,
         UNPL_REFWR TYPE REFWR,
         END OF MMCR_DRSEG_CO.

  TYPES: BEGIN OF MMCR_DRSEG.
          INCLUDE STRUCTURE DRSEG.
  TYPES: CR LIKE DRSEG_CR OCCURS 0,
         CO TYPE MMCR_DRSEG_CO OCCURS 0,
         SM LIKE DRSEG_SM OCCURS 0,
         CHARACT TYPE RBCHARACT_INSTANCE OCCURS 3,
                                         "instances of characteristics
         UEBGMAT  TYPE MATNR,
         UEBRBLGP TYPE RBLGP,
         SELKZ_DB TYPE SELKZ,
         RBLGP_OLD TYPE RBLGP,           "rblgp before aggregation
         END OF MMCR_DRSEG.

  TYPES: MMCR_LIMIT  LIKE RELIMIT.
*  TYPES: MMCR_TLIMIT TYPE SORTED TABLE OF MMCR_LIMIT
*                     WITH UNIQUE KEY EBELN EBELP.
*
  DATA: BEGIN OF MM_ERRPROT OCCURS 0,
         MSGTY       LIKE SY-MSGTY,
         MSGID       LIKE SY-MSGID,
         MSGNO       LIKE SY-MSGNO,
         MSGV1       LIKE SY-MSGV1,
         MSGV2       LIKE SY-MSGV2,
         MSGV3       LIKE SY-MSGV3,
         MSGV4       LIKE SY-MSGV4,
         SOURCE      TYPE C,
         RBLGP       LIKE DRSEG-RBLGP,
         SHOWN       LIKE BOOLE-BOOLE,
        END OF MM_ERRPROT.

  DATA: LIN TYPE P,
        TEXT(30), "返回消息文本
        MM_RBKPV TYPE MRM_RBKPV,
        I_RBSELBEST LIKE RBSELBEST OCCURS 0 WITH HEADER LINE,
        I_RBSELLIFS LIKE RBSELLIFS OCCURS 0 WITH HEADER LINE,
        I_RBSELFRBR LIKE RBSELFRBR OCCURS 0 WITH HEADER LINE,
        I_RBSELWERK LIKE RBSELWERK OCCURS 0 WITH HEADER LINE,
        I_RBSELERFB LIKE RBSELERFB OCCURS 0 WITH HEADER LINE,
        MM_TLIMIT TYPE SORTED TABLE OF MMCR_LIMIT
                     WITH UNIQUE KEY EBELN EBELP,
        MM_DRSEG TYPE MMCR_DRSEG OCCURS 0 WITH HEADER LINE.

  CLEAR I_RBSELBEST.
  I_RBSELBEST-EBELN = IEBELN.
  I_RBSELBEST-EBELP = IEBELP.
  APPEND I_RBSELBEST.

  MM_RBKPV-BLDAT = IBLDAT.
  MM_RBKPV-BUDAT = IBUDAT.
  MM_RBKPV-BUKRS = IBUKRS.

*请货款
  IF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
    MM_RBKPV-XRECH = 'X'.       "标识: 记帐发票
    MM_RBKPV-XZUORDLI = 'X'.    "显示交货项目分配
    MM_RBKPV-XZUORDRT = 'X'.  "显示退货分配
    MM_RBKPV-XBNK = ''.         "计划交货成本标识
    MM_RBKPV-XWARE = 'X'.       "货物发票/服务标识符
    MM_RBKPV-TBTKZ = ''.        "标识: 后续借/贷
    MM_RBKPV-XBEST = 'X'.       "复选框: 分配
    MM_RBKPV-XRECHL = 'S'.      "交货项目的过帐逻辑(发票/贷项清单)
    MM_RBKPV-XRECHR = 'H'.      "交货项目的过帐逻辑(发票/贷项清单)
    TEXT = '没有需要请的货款'.
*请已计划费用
 ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '2'.
    MM_RBKPV-XRECH = 'X'.
    MM_RBKPV-XZUORDLI = 'X'.
    MM_RBKPV-XZUORDRT = 'X'.
    MM_RBKPV-XBNK = 'X'.
    MM_RBKPV-XWARE = ''.
    MM_RBKPV-TBTKZ = ''.
    MM_RBKPV-XBEST = 'X'.
    MM_RBKPV-XRECHL = 'S'.
    MM_RBKPV-XRECHR = 'H'.
    TEXT = '没有需要请的已计划费用'.
*请未计划费用
 ELSEIF IVORGANG = '3' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
    MM_RBKPV-XRECH = 'X'.
    MM_RBKPV-XZUORDLI = 'X'.
    MM_RBKPV-XZUORDRT = 'X'.
    MM_RBKPV-XBNK = ''.
    MM_RBKPV-XWARE = 'X'.
    MM_RBKPV-TBTKZ = 'X'.
    MM_RBKPV-XBEST = 'X'.
    MM_RBKPV-XRECHL = 'S'.
    MM_RBKPV-XRECHR = 'H'.
    TEXT = '没有需要请未计划费用'.
*货款、已计划费用和未计划费用同时请款
 ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '3'.
    MM_RBKPV-XRECH = 'X'.
    MM_RBKPV-XZUORDLI = 'X'.
    MM_RBKPV-XZUORDRT = 'X'.
    MM_RBKPV-XBNK = 'X'.
    MM_RBKPV-XWARE = 'X'.
    MM_RBKPV-TBTKZ = ''.
    MM_RBKPV-XBEST = 'X'.
    MM_RBKPV-XRECHL = 'S'.
    MM_RBKPV-XRECHR = 'H'.
    TEXT = '没有需要请的货款、已计划费用和未计划费用'.
*退货订单请款
 ELSEIF IVORGANG = '2' AND IREFERENZBELEGTYP = '1' AND IXWARE_BNK = '1'.
    MM_RBKPV-XRECH = ''.
    MM_RBKPV-XZUORDLI = 'X'.
    MM_RBKPV-XZUORDRT = 'X'.
    MM_RBKPV-XBNK = ''.
    MM_RBKPV-XWARE = 'X'.
    MM_RBKPV-TBTKZ = ''.
    MM_RBKPV-XBEST = 'X'.
    MM_RBKPV-XRECHL = 'H'.
    MM_RBKPV-XRECHR = 'H'.
    TEXT = '没有需要请的退货货款'.
*批次请款
 ELSEIF IVORGANG = '1' AND IREFERENZBELEGTYP = '5' AND IXWARE_BNK = '3'.
    TEXT = '此供应商没有需要请的货款及费用'.
    IF IXZUORDLIDELIVERY = 'X' AND IXZUORDLIRETURN = 'X'. "交货和退货
      MM_RBKPV-LFDATABLI = IDELIVERYBEGIN.
      MM_RBKPV-LFDATBISLI = IDELIVERYEND.
      MM_RBKPV-LFDATABRT = IRETURNBEGIN.
      MM_RBKPV-LFDATBISRT = IRETURNEND.
      MM_RBKPV-XZUORDLI = 'X'.
      MM_RBKPV-XZUORDRT = 'X'.
      MM_RBKPV-XBNK = 'X'.
      MM_RBKPV-XWARE = 'X'.
      MM_RBKPV-TBTKZ = ''.
      MM_RBKPV-XBEST = ''.
      MM_RBKPV-SELIF = ISUPERFIELD.
      MM_RBKPV-XRECHL = 'S'.
      MM_RBKPV-XRECHR = 'H'.
    ELSEIF IXZUORDLIDELIVERY = 'X' AND IXZUORDLIRETURN = ''. "交货
      MM_RBKPV-LFDATABLI = IDELIVERYBEGIN.
      MM_RBKPV-LFDATBISLI = IDELIVERYEND.
      MM_RBKPV-LFDATABRT = IRETURNBEGIN.
      MM_RBKPV-LFDATBISRT = IRETURNEND.
      MM_RBKPV-XZUORDLI = ''.
      MM_RBKPV-XZUORDRT = 'X'.
      MM_RBKPV-XBNK = 'X'.
      MM_RBKPV-XWARE = 'X'.
      MM_RBKPV-TBTKZ = ''.
      MM_RBKPV-XBEST = ''.
      MM_RBKPV-SELIF = ISUPERFIELD.
      MM_RBKPV-XRECHL = 'S'.
      MM_RBKPV-XRECHR = 'H'.
    ELSEIF IXZUORDLIDELIVERY = '' AND IXZUORDLIRETURN = 'X'. "退货
    ENDIF.
  ENDIF.

  CALL FUNCTION 'MRM_ASSIGNMENT'
    EXPORTING
      I_DISPLAY          = 'X'
*   TI_DRSEG_OLD       =
* IMPORTING
*   E_CANCEL           =
    TABLES
      T_DRSEG            = MM_DRSEG
      T_RBSELBEST        = I_RBSELBEST
      T_RBSELLIFS        = I_RBSELLIFS
      T_RBSELFRBR        = I_RBSELFRBR
      T_RBSELWERK        = I_RBSELWERK
      T_RBSELERFB        = I_RBSELERFB
      T_ERRPROT          = MM_ERRPROT
*   T_EBELNTAB         =
*   T_RBSELTRAN        =
    CHANGING
      C_RBKPV            = MM_RBKPV
      T_LIMIT            = MM_TLIMIT
      .
 LOOP AT MM_DRSEG WHERE KOART = ''.
   MOVE MM_RBKPV-TBTKZ TO MM_DRSEG-TBTKZ.
   CALL FUNCTION 'MRM_AMOUNT_QUANTITY_PROPOSE_N'
     EXPORTING
       I_RBKPV = MM_RBKPV
     CHANGING
       C_DRSEG = MM_DRSEG.
   MODIFY MM_DRSEG.
 ENDLOOP.
 LOOP AT MM_DRSEG.
    MOVE-CORRESPONDING MM_DRSEG TO IDRSEG.
    APPEND IDRSEG.
    CLEAR MM_DRSEG.
  ENDLOOP.

  DESCRIBE TABLE MM_DRSEG LINES LIN.
  IF LIN = 0.
    RETURNMSG-MTYPE = 'W'.
    RETURNMSG-MTEXT = TEXT.
  ENDIF.

ENDFUNCTION
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics