FUNCTION ZRFC_WMS_GET_PRICE.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(PARAMS) TYPE STRING OPTIONAL
*" TABLES
*" ITAB STRUCTURE ZGET_PRICE OPTIONAL
*" ITH STRUCTURE ZGET_PRICE_H OPTIONAL
*"----------------------------------------------------------------------
DATA: BEGIN OF IPARAM OCCURS 10,
VBELN TYPE LIPS-VBELN,
END OF IPARAM.
SPLIT PARAMS AT ',' INTO TABLE IPARAM.
* DATA:
* BEGIN OF ITAB OCCURS 0,
* EBELN LIKE EKPO-EBELN,
* EBELP LIKE EKPO-EBELP,
* VBELN LIKE VBAP-VBELN,
* POSNR LIKE VBAP-POSNR,
* KNUMV LIKE VBAK-KNUMV,
* AUART LIKE VBAK-AUART,
* MPRICE LIKE VBAP-NETWR,
* VBELN2 LIKE LIPS-VBELN,
* POSNR2 LIKE LIPS-POSNR,
* JE LIKE VBAP-NETWR,
* LFIMG LIKE LIPS-LFIMG,
* VGBEL LIKE LIPS-VGBEL,
* VGPOS LIKE LIPS-VGPOS,
* END OF ITAB.
DATA:
TMP_NETWR TYPE NETWR,
TMP_KSCHL TYPE KSCHL,
TMP_KPEIN TYPE KPEIN.
DATA: TVBELN TYPE VBELN.
*-----------CHA JWY_20170811
SORT IPARAM.
*-----------CHA JWY_20170811
LOOP AT IPARAM.
PERFORM F_ADD_ZERO USING IPARAM-VBELN.
MODIFY IPARAM.
ENDLOOP.
"==============change by damon at 20171207===================
DATA: GT_LIPS TYPE STANDARD TABLE OF LIPS,
GS_LIPS TYPE LIPS.
SELECT
MATNR
VGBEL
VGPOS
VBELN
POSNR
LFIMG
UECHA
APPENDING CORRESPONDING FIELDS OF TABLE GT_LIPS
FROM LIPS AS P
FOR ALL ENTRIES IN IPARAM
WHERE VBELN = IPARAM-VBELN.
SORT GT_LIPS.
LOOP AT GT_LIPS INTO GS_LIPS.
ITAB-MATNR = GS_LIPS-MATNR.
ITAB-VGBEL = GS_LIPS-VGBEL.
ITAB-VGPOS = GS_LIPS-VGPOS.
ITAB-VBELN2 = GS_LIPS-VBELN.
* ITAB-POSNR2 = GS_LIPS-POSNR.
ITAB-LFIMG = GS_LIPS-LFIMG.
IF GS_LIPS-UECHA IS NOT INITIAL .
ITAB-POSNR2 = GS_LIPS-UECHA.
ELSE.
ITAB-POSNR2 = GS_LIPS-POSNR.
ENDIF.
COLLECT ITAB.
ENDLOOP.
**** 取参考号
* SELECT
* MATNR
* VGBEL
* VGPOS
* VBELN AS VBELN2
* POSNR AS POSNR2
* LFIMG
* APPENDING CORRESPONDING FIELDS OF TABLE ITAB
* FROM LIPS AS P
* FOR ALL ENTRIES IN IPARAM
* WHERE VBELN = IPARAM-VBELN.
"==============end of change by damon at 20171207===================
*-----------CHA JWY_20170811
SORT ITAB.
*-----------CHA JWY_20170811
LOOP AT ITAB.
IF ITAB-VGBEL+0(2) = '00'.
ITAB-VBELN = ITAB-VGBEL.
ITAB-POSNR = ITAB-VGPOS.
SELECT SINGLE AUART KNUMV "KWMENG
INTO (ITAB-AUART,ITAB-KNUMV)
FROM VBAK
* JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
WHERE VBAK~VBELN = ITAB-VBELN.
ELSE.
ITAB-EBELN = ITAB-VGBEL.
ITAB-EBELP = ITAB-VGPOS.
SELECT SINGLE BSART KNUMV "MENGE
INTO (ITAB-AUART,ITAB-KNUMV)
FROM EKKO
* JOIN EKPO on EKKO~EBELN = EKPO~EBELN
WHERE EKKO~EBELN = ITAB-EBELN.
ENDIF.
IF ITAB-AUART = 'UB'.
SELECT KBETR
KPEIN
KSCHL
INTO (TMP_NETWR,
TMP_KPEIN,
TMP_KSCHL)
FROM KONV
WHERE KNUMV = ITAB-KNUMV AND
KPOSN = ITAB-EBELP.
IF TMP_KSCHL = 'PI01'.
ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
ELSEIF TMP_KSCHL = 'ZPB2'.
ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
ELSE.
ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
ENDIF.
ITAB-MPRICE2 = ITAB-MPRICE.
ENDSELECT.
ELSE.
CLEAR :TMP_NETWR, TMP_KPEIN, TMP_KSCHL.
DATA: TAX_RATE LIKE TMP_NETWR.
DATA: TAX_KBERT LIKE TMP_NETWR.
SELECT SINGLE
KAWRT
KBETR
INTO (TMP_NETWR,
* TMP_KPEIN,
TAX_KBERT)
FROM KONV
WHERE KNUMV = ITAB-KNUMV AND
KPOSN = ITAB-POSNR
AND KSCHL = 'MWST'.
IF SY-SUBRC = 0.
TAX_RATE = ( 1000 + TAX_KBERT ) / 1000.
IF TAX_KBERT > 0.
ITAB-MPRICE2 = TMP_NETWR * TAX_RATE .
ENDIF.
ENDIF.
SELECT KWERT
KSCHL
INTO (TMP_NETWR,
* TMP_KPEIN,
TMP_KSCHL)
FROM KONV
WHERE KNUMV = ITAB-KNUMV AND
KPOSN = ITAB-POSNR
AND KSCHL IN ('ZPR2','ZPR0') .
* IF TMP_KSCHL = 'MWST'.
*
* ENDIF.
IF TMP_KSCHL = 'ZPR2'.
ITAB-MPRICE = TMP_NETWR * TAX_RATE .
ENDIF.
IF TMP_KSCHL = 'ZPR0' AND ITAB-MPRICE IS INITIAL.
ITAB-MPRICE = TMP_NETWR * TAX_RATE .
ENDIF.
ENDSELECT.
IF ITAB-MPRICE IS INITIAL.
ITAB-MPRICE = ITAB-MPRICE2.
ENDIF.
IF ITAB-MPRICE2 IS INITIAL.
ITAB-MPRICE2 = ITAB-MPRICE.
ENDIF.
ENDIF.
* IF ITAB-AUART = 'ZOR' OR ITAB-AUART = 'ZPRD'. "折前单价
* SELECT SINGLE KBETR
* KPEIN
* INTO (TMP_NETWR,
* TMP_KPEIN)
* FROM KONV
* WHERE KNUMV = ITAB-KNUMV AND
* KPOSN = ITAB-POSNR AND
* KSCHL = 'ZPR0'.
* ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
* ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
*
* ELSEIF ITAB-AUART = 'ZOR1'.
* SELECT SINGLE KBETR
* KPEIN
* INTO (TMP_NETWR,
* TMP_KPEIN)
* FROM KONV
* WHERE KNUMV = ITAB-KNUMV AND
* KPOSN = ITAB-POSNR AND
* KSCHL = 'ZPR2'.
* ITAB-MPRICE = TMP_NETWR * '1.17' / TMP_KPEIN.
* ELSEIF ITAB-AUART = 'UB'.
* SELECT SINGLE KBETR
* KPEIN
* INTO (TMP_NETWR,
* TMP_KPEIN)
* FROM KONV
* WHERE KNUMV = ITAB-KNUMV AND
* KPOSN = ITAB-EBELP AND
* KSCHL = 'P101'.
* ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
*
* ELSE.
*
*
* "折前单价
* SELECT SINGLE KBETR
* KPEIN
* INTO (TMP_NETWR,
* TMP_KPEIN)
* FROM KONV
* WHERE KNUMV = ITAB-KNUMV AND
* KPOSN = ITAB-EBELP AND
* KSCHL = 'ZPB2'.
* ITAB-MPRICE = TMP_NETWR / TMP_KPEIN.
* ENDIF.
IF ITAB-AUART = 'UB'.
ITAB-JE = ITAB-MPRICE * ITAB-LFIMG .
ITAB-JE2 = ITAB-MPRICE2 * ITAB-LFIMG .
ELSE.
SELECT KWMENG INTO ITAB-KWMENG FROM VBAP
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR .
ITAB-JE = ITAB-MPRICE * ITAB-LFIMG / ITAB-KWMENG .
ITAB-JE2 = ITAB-MPRICE2 * ITAB-LFIMG / ITAB-KWMENG.
ENDSELECT.
ENDIF.
MODIFY ITAB.
ITH-VBELN = ITAB-VBELN2.
ITH-JE = ITAB-JE.
ITH-JE2 = ITAB-JE2.
COLLECT ITH.
ENDLOOP.
DATA:
IL_TLINE TYPE ZTEXT_LINE OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ZRFC_WMS_READTEXT'
EXPORTING
PARAMS = PARAMS
TABLES
IT_LINE = IL_TLINE.
*-----------CHA JWY_20170811
SORT ITH.
*-----------CHA JWY_20170811
LOOP AT ITH.
PERFORM F_CUT_ZERO USING ITH-VBELN.
READ TABLE IL_TLINE WITH KEY TNO_LINE = ITH-VBELN.
IF SY-SUBRC = 0.
ITH-TDLINE = IL_TLINE-TDLINE.
MODIFY ITH.
ENDIF.
ENDLOOP.
ENDFUNCTION.