Credit Memo
Credit Memo
ZSD_CREDIT_MEMO.
TABLES : NAST.
DATA : ITAB TYPE TABLE OF ZCREDIT_MEMO,
WA_ITAB TYPE ZCREDIT_MEMO.
DATA: FM_NAME type RS38L_FNAM, " CHAR 30 0 Name of Function M
odule
FP_DOCPARAMS type SFPDOCPARAMS, " Structure SFPDOCPARAMS Short
Description Form Parameters for Form Processing
FP_OUTPUTPARAMS type SFPOUTPUTPARAMS. " Structure SFPOUTPUTPARAMS Sh
ort Description Form Processing Output Parameter
DATA : V_CUSTOMER_DESC TYPE KNA1-NAME1,
V_CUSTOMER_ADDRESS TYPE KNA1-STRAS,
SHAR_ADDRESS TYPE STRING,
S_FOOTER TYPE STRING,
S_BOX TYPE STRING,
S_BOX_ABB TYPE STRING,
S_BOX_TEL TYPE STRING,
S_ADD TYPE STRING,
S_ADD_ABB TYPE STRING,
S_ADD_TEL TYPE STRING,
TEL1 TYPE STRING,
TEL2 TYPE STRING.
DATA : DISC TYPE KONV-KWERT,
V_CALC_TYPE TYPE KONV-KRECH.
* PARAMETERS : S_VBELN TYPE VBRK-VBELN.
* START-OF-SELECTION.
FORM ENTRY_CM USING RETURN_CODE US_SCREEN.
REFRESH :ITAB.
CLEAR : WA_ITAB,V_CUSTOMER_DESC,V_CUSTOMER_ADDRESS.
SELECT VBRK~VKORG VBRK~FKDAT VBRK~VBELN VBRK~KUNRG VBRP~MATNR VBRP~FKIMG
VBRP~ARKTX VBRP~AUGRU_AUFT VBRP~AUBEL VBRK~KNUMV VBRP~NETWR
VBRP~POSNR VBRK~NETWR AS NET_NETWR
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM VBRK INNER JOIN VBRP ON VBRK~VBELN = VBRP~VBELN
WHERE VBRK~VBELN = NAST-OBJKY AND FKIMG > '0'. "S_VBELN
READ TABLE ITAB INTO WA_ITAB INDEX 1.
SELECT SINGLE NAME1 STRAS
INTO (V_CUSTOMER_DESC , V_CUSTOMER_ADDRESS )
FROM KNA1 WHERE KNA1~KUNNR = WA_ITAB-KUNRG.
* V_DISCOUNT = V_DISCOUNT + V_DIS.
* ENDSELECT.
CLEAR : WA_ITAB.
LOOP AT ITAB INTO WA_ITAB.
SELECT SINGLE BEZEI
INTO WA_ITAB-BEZEI
FROM TVAUT
WHERE AUGRU = WA_ITAB-AUGRU_AUFT AND SPRAS = 'EN'.
************** nageh ******** 09102016
SELECT SINGLE VBELV FROM VBFA INTO WA_ITAB-INVOICE_NO WHERE VBELN = WA_ITA
B-VBELN AND VBTYP_V = 'M' .
SELECT SINGLE VBELV FROM VBFA INTO WA_ITAB-DELIVERY_NO WHERE VBELN = WA_IT
AB-VBELN AND VBTYP_V = 'J' .
SELECT SINGLE VBELV FROM VBFA INTO WA_ITAB-SO_NO WHERE VBELN = WA_ITAB-
VBELN AND VBTYP_V = 'C' .
"Unit Price
* SELECT SINGLE NETPR
* INTO WA_ITAB-NETPR
* FROM VBAP WHERE VBELN = WA_ITAB-AUBEL AND MATNR = WA_ITAB-MATNR.
"Discount
CLEAR : DISC.
SELECT KWERT
INTO DISC
FROM KONV WHERE KNUMV = WA_ITAB-KNUMV AND KPOSN = WA_ITAB-POSNR AND (
KSCHL = 'ZDI1' OR KSCHL = 'ZDI2' ).
WA_ITAB-KWERT = WA_ITAB-KWERT + DISC.
CLEAR : DISC.
ENDSELECT.
"Discount Per Item
WA_ITAB-KWERT = ( WA_ITAB-KWERT ) / ( WA_ITAB-FKIMG ).
" Calculate Net price from Konv table
CLEAR : WA_ITAB-NETPR.
SELECT KBETR KRECH
INTO (DISC,V_CALC_TYPE )
FROM KONV WHERE KNUMV = WA_ITAB-KNUMV AND KPOSN = WA_ITAB-POSNR AND (
KSCHL <> 'ZDI1' AND KSCHL <> 'ZDI2' ).
IF V_CALC_TYPE <>'C'.
WA_ITAB-NETPR = WA_ITAB-NETPR + ( DISC / ( WA_ITAB-FKIMG ) ).
ELSE.
WA_ITAB-NETPR = WA_ITAB-NETPR + DISC.
ENDIF.
CLEAR : DISC,V_CALC_TYPE.
ENDSELECT.
IF WA_ITAB-KWERT < 0.
WA_ITAB-NETPR_AFTER_DIS = WA_ITAB-NETPR + ( WA_ITAB-KWERT ) .
ELSE.
WA_ITAB-NETPR_AFTER_DIS = WA_ITAB-NETPR - ( WA_ITAB-KWERT ) .
ENDIF.
WA_ITAB-NAME1 = V_CUSTOMER_DESC.
WA_ITAB-STRAS = V_CUSTOMER_ADDRESS.
MODIFY ITAB FROM WA_ITAB TRANSPORTING NETPR_AFTER_DIS NETPR BEZEI NAME1
STRAS KWERT INVOICE_NO DELIVERY_NO SO_NO .
CLEAR : WA_ITAB.
ENDLOOP.
CLEAR : SHAR_ADDRESS,S_FOOTER.
READ TABLE ITAB INTO WA_ITAB INDEX 1.
IF WA_ITAB-VKORG = 2110.
SHAR_ADDRESS = 'SHAR-Jeddah Cold Store'.
S_BOX = 'P.O BOX 34314'.
S_BOX_ABB = 'CR'.
S_BOX_TEL = '4030168934'.
S_ADD = 'Jeddah 21468'.
S_ADD_ABB = 'CCM'.
S_ADD_TEL = '119931'.
TEL1 = '+966 12 2680000'.
TEL2 = '+966 12 2686666'.
ELSEIF WA_ITAB-VKORG = 2210.
SHAR_ADDRESS = 'SHAR- Riyadh Cold Store'.
S_BOX = 'P.O BOX 25507'.
S_BOX_ABB = 'CR'.
S_BOX_TEL = '1010230789'.
S_ADD = 'Riyadh 11476'.
S_ADD_ABB = 'CCM'.
S_ADD_TEL = '5005'.
TEL1 = '+966 11 2655222'.
TEL2 = '+966 12 2656222'.
ENDIF.
CONCATENATE 'Address : ' SHAR_ADDRESS 'Email:[email protected] | Phone : 42
5-55-0150 | Fax : 425-555-0151 | CR NO' INTO S_FOOTER SEPARATED BY SPACE.
CALL FUNCTION 'FP_JOB_OPEN' "& Form Processing: Call
Form
CHANGING
ie_outputparams = FP_OUTPUTPARAMS
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' "& Form Processing G
eneration
EXPORTING
I_NAME = 'ZSDCREDIT_MEMO_FORM'
IMPORTING
E_FUNCNAME = FM_NAME.
CALL FUNCTION fm_name
EXPORTING
/1bcdwb/docparams = FP_DOCPARAMS
ITAB = ITAB
WA_ITAB = WA_ITAB
SHAR_ADDRESS = SHAR_ADDRESS
FOOTER = S_FOOTER
S_BOX = S_BOX
S_BOX_ABB = S_BOX_ABB
S_BOX_TEL = S_BOX_TEL
S_ADD = S_ADD
S_ADD_ABB = S_ADD_ABB
S_ADD_TEL = S_ADD_TEL
TEL1 = TEL1
TEL2 = TEL2
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3.
CALL FUNCTION 'FP_JOB_CLOSE'
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
ENDFORM.