Академический Документы
Профессиональный Документы
Культура Документы
REPORT ZFI_CASH_DISCOUNT_PAYBASE_RUN.
TYPE-POOLS : SLIS.
TYPE-POOLS : VRM .
* Var. to indicate that an error occured during ZVAT Cnd. Rec. creation
DATA GV_VK11_ERR(1) TYPE C.
DATA : GT_VBRP_CR TYPE SORTED TABLE OF VBRP WITH UNIQUE KEY VBELN POSNR,
GS_VBRP_CR TYPE VBRP.
SELECTION-SCREEN SKIP.
PARAMETERS P_RUN_DT TYPE VBRK-FKDAT OBLIGATORY.
CURTDATE = '20130731'.
LEAVE PROGRAM.
ENDIF.
START-OF-SELECTION .
IF SY-SUBRC NE 0 .
* LS_ZFI_CD_SAVE-MANDT = SY-MANDT.
LW_OUTPUT-KUNNR = LS_ZFI_CD_SAVE-KUNNR .
LW_OUTPUT-VBELN = LS_ZFI_CD_SAVE-VBELN .
LW_OUTPUT-FKDAT = LS_ZFI_CD_SAVE-FKDAT .
LW_OUTPUT-AUGBL_NEW = LS_ZFI_CD_SAVE-AUGBL_NEW.
LW_OUTPUT-AUGBL_NEW_DATE = LS_ZFI_CD_SAVE-AUGBL_NEW_DATE.
LW_OUTPUT-FKART = LS_ZFI_CD_SAVE-FKART.
LW_OUTPUT-NAME1 = LS_ZFI_CD_SAVE-NAME1.
LW_OUTPUT-VKGRP = LS_ZFI_CD_SAVE-VKGRP.
LW_OUTPUT-VKBUR = LS_ZFI_CD_SAVE-VKBUR.
LW_OUTPUT-GSBER = LS_ZFI_CD_SAVE-GSBER.
LW_OUTPUT-ZFBDT = LS_ZFI_CD_SAVE-ZFBDT.
LW_OUTPUT-REBZG = LS_ZFI_CD_SAVE-REBZG.
LW_OUTPUT-REBZJ = LS_ZFI_CD_SAVE-REBZJ.
LW_OUTPUT-KAWRT = LS_ZFI_CD_SAVE-KAWRT.
LW_OUTPUT-INV_AMT = LS_ZFI_CD_SAVE-INV_AMT.
LW_OUTPUT-INV_DISC_PER = LS_ZFI_CD_SAVE-INV_DISC_PER.
LW_OUTPUT-DISC_AMT_INV = LS_ZFI_CD_SAVE-DISC_AMT_INV.
LW_OUTPUT-VAT_RATE = LS_ZFI_CD_SAVE-VAT_RATE.
LW_OUTPUT-VAT_AMT = LS_ZFI_CD_SAVE-VAT_AMT.
LW_OUTPUT-RGR_DOC = LS_ZFI_CD_SAVE-RGR_DOC.
LW_OUTPUT-RGR_AMT = LS_ZFI_CD_SAVE-RGR_AMT.
LW_OUTPUT-BLART = LS_ZFI_CD_SAVE-BLART.
LW_OUTPUT-AUGBL = LS_ZFI_CD_SAVE-AUGBL.
LW_OUTPUT-BUDAT = LS_ZFI_CD_SAVE-BUDAT.
LW_OUTPUT-PAY_AMT = LS_ZFI_CD_SAVE-PAY_AMT.
LW_OUTPUT-PAY_AMT_NEW = LS_ZFI_CD_SAVE-PAY_AMT_NEW.
LW_OUTPUT-DIS_APPL_PER = LS_ZFI_CD_SAVE-DIS_APPL_PER.
LW_OUTPUT-DISC_APPL_AMT = LS_ZFI_CD_SAVE-DISC_APPL_AMT.
LW_OUTPUT-DAYS = LS_ZFI_CD_SAVE-DAYS_DIFF.
LW_OUTPUT-DISC_AMT_DIFF = LS_ZFI_CD_SAVE-DISC_AMT_DIFF.
LW_OUTPUT-PERCENT_COL = LS_ZFI_CD_SAVE-PERCENT_COL.
ENDLOOP.
IF SY-SUBRC NE 0 .
* LS_ZFI_CD_SAVE-MANDT = SY-MANDT.
LW_OUTPUT-KUNNR = LS_ZFI_CD_SAVE-KUNNR .
LW_OUTPUT-VBELN = LS_ZFI_CD_SAVE-VBELN .
LW_OUTPUT-FKDAT = LS_ZFI_CD_SAVE-FKDAT .
LW_OUTPUT-AUGBL_NEW = LS_ZFI_CD_SAVE-AUGBL_NEW.
LW_OUTPUT-AUGBL_NEW_DATE = LS_ZFI_CD_SAVE-AUGBL_NEW_DATE.
LW_OUTPUT-FKART = LS_ZFI_CD_SAVE-FKART.
LW_OUTPUT-NAME1 = LS_ZFI_CD_SAVE-NAME1.
LW_OUTPUT-VKGRP = LS_ZFI_CD_SAVE-VKGRP.
LW_OUTPUT-VKBUR = LS_ZFI_CD_SAVE-VKBUR.
LW_OUTPUT-GSBER = LS_ZFI_CD_SAVE-GSBER.
LW_OUTPUT-ZFBDT = LS_ZFI_CD_SAVE-ZFBDT.
LW_OUTPUT-REBZG = LS_ZFI_CD_SAVE-REBZG.
LW_OUTPUT-REBZJ = LS_ZFI_CD_SAVE-REBZJ.
LW_OUTPUT-KAWRT = LS_ZFI_CD_SAVE-KAWRT.
LW_OUTPUT-INV_AMT = LS_ZFI_CD_SAVE-INV_AMT.
LW_OUTPUT-INV_DISC_PER = LS_ZFI_CD_SAVE-INV_DISC_PER.
LW_OUTPUT-DISC_AMT_INV = LS_ZFI_CD_SAVE-DISC_AMT_INV.
LW_OUTPUT-VAT_RATE = LS_ZFI_CD_SAVE-VAT_RATE.
LW_OUTPUT-VAT_AMT = LS_ZFI_CD_SAVE-VAT_AMT.
LW_OUTPUT-RGR_DOC = LS_ZFI_CD_SAVE-RGR_DOC.
LW_OUTPUT-RGR_AMT = LS_ZFI_CD_SAVE-RGR_AMT.
LW_OUTPUT-BLART = LS_ZFI_CD_SAVE-BLART.
LW_OUTPUT-AUGBL = LS_ZFI_CD_SAVE-AUGBL.
LW_OUTPUT-BUDAT = LS_ZFI_CD_SAVE-BUDAT.
LW_OUTPUT-PAY_AMT = LS_ZFI_CD_SAVE-PAY_AMT.
LW_OUTPUT-PAY_AMT_NEW = LS_ZFI_CD_SAVE-PAY_AMT_NEW.
LW_OUTPUT-DIS_APPL_PER = LS_ZFI_CD_SAVE-DIS_APPL_PER.
LW_OUTPUT-DISC_APPL_AMT = LS_ZFI_CD_SAVE-DISC_APPL_AMT.
LW_OUTPUT-DAYS = LS_ZFI_CD_SAVE-DAYS_DIFF.
LW_OUTPUT-DISC_AMT_DIFF = LS_ZFI_CD_SAVE-DISC_AMT_DIFF.
LW_OUTPUT-PERCENT_COL = LS_ZFI_CD_SAVE-PERCENT_COL.
ENDLOOP.
IF SY-SUBRC NE 0 .
* LS_ZFI_CD_SAVE-MANDT = SY-MANDT.
LW_OUTPUT-KUNNR = LS_ZFI_CD_SAVE-KUNNR .
LW_OUTPUT-VBELN = LS_ZFI_CD_SAVE-VBELN .
LW_OUTPUT-FKDAT = LS_ZFI_CD_SAVE-FKDAT .
LW_OUTPUT-AUGBL_NEW = LS_ZFI_CD_SAVE-AUGBL_NEW.
LW_OUTPUT-AUGBL_NEW_DATE = LS_ZFI_CD_SAVE-AUGBL_NEW_DATE.
LW_OUTPUT-FKART = LS_ZFI_CD_SAVE-FKART.
LW_OUTPUT-NAME1 = LS_ZFI_CD_SAVE-NAME1.
LW_OUTPUT-VKGRP = LS_ZFI_CD_SAVE-VKGRP.
LW_OUTPUT-VKBUR = LS_ZFI_CD_SAVE-VKBUR.
LW_OUTPUT-GSBER = LS_ZFI_CD_SAVE-GSBER.
LW_OUTPUT-ZFBDT = LS_ZFI_CD_SAVE-ZFBDT.
LW_OUTPUT-REBZG = LS_ZFI_CD_SAVE-REBZG.
LW_OUTPUT-REBZJ = LS_ZFI_CD_SAVE-REBZJ.
LW_OUTPUT-KAWRT = LS_ZFI_CD_SAVE-KAWRT.
LW_OUTPUT-INV_AMT = LS_ZFI_CD_SAVE-INV_AMT.
LW_OUTPUT-INV_DISC_PER = LS_ZFI_CD_SAVE-INV_DISC_PER.
LW_OUTPUT-DISC_AMT_INV = LS_ZFI_CD_SAVE-DISC_AMT_INV.
LW_OUTPUT-VAT_RATE = LS_ZFI_CD_SAVE-VAT_RATE.
LW_OUTPUT-VAT_AMT = LS_ZFI_CD_SAVE-VAT_AMT.
LW_OUTPUT-RGR_DOC = LS_ZFI_CD_SAVE-RGR_DOC.
LW_OUTPUT-RGR_AMT = LS_ZFI_CD_SAVE-RGR_AMT.
LW_OUTPUT-BLART = LS_ZFI_CD_SAVE-BLART.
LW_OUTPUT-AUGBL = LS_ZFI_CD_SAVE-AUGBL.
LW_OUTPUT-BUDAT = LS_ZFI_CD_SAVE-BUDAT.
LW_OUTPUT-PAY_AMT = LS_ZFI_CD_SAVE-PAY_AMT.
LW_OUTPUT-PAY_AMT_NEW = LS_ZFI_CD_SAVE-PAY_AMT_NEW.
LW_OUTPUT-DIS_APPL_PER = LS_ZFI_CD_SAVE-DIS_APPL_PER.
LW_OUTPUT-DISC_APPL_AMT = LS_ZFI_CD_SAVE-DISC_APPL_AMT.
LW_OUTPUT-DAYS = LS_ZFI_CD_SAVE-DAYS_DIFF.
LW_OUTPUT-DISC_AMT_DIFF = LS_ZFI_CD_SAVE-DISC_AMT_DIFF.
LW_OUTPUT-PERCENT_COL = LS_ZFI_CD_SAVE-PERCENT_COL.
ENDLOOP.
ENDIF.
SELECT GSBER INTO TABLE LT_GSBER FROM TGSB WHERE GSBER IN SO_GSBER .
ENDIF.
ENDIF.
END-OF-SELECTION .
PERFORM FIELD_CATALOG .
PERFORM FILL_EVENTS_TABLE.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FIELD_CATALOG .
GS_FCAT-FIELDNAME = 'VBELN'.
GS_FCAT-SELTEXT_S = 'Bill Num'.
GS_FCAT-SELTEXT_L = 'Billing Num'.
GS_FCAT-HOTSPOT = 'X'.
* GS_FCAT-FIX_COLUMN = 'X'.
GS_FCAT-KEY = 'X'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'FKART'.
GS_FCAT-SELTEXT_S = 'Doc. Type'.
GS_FCAT-SELTEXT_L = 'Document Type'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'KUNNR'.
GS_FCAT-SELTEXT_S = 'Customer'.
GS_FCAT-SELTEXT_L = 'Customer'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'NAME1'.
GS_FCAT-SELTEXT_S = 'Customer Name'.
GS_FCAT-SELTEXT_L = 'Customer Name'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'ZFBDT'.
GS_FCAT-SELTEXT_S = 'Base Line Date'.
GS_FCAT-SELTEXT_L = 'Base Line Date'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'REBZG'.
GS_FCAT-SELTEXT_S = 'FI Doc Num'.
GS_FCAT-SELTEXT_L = 'FI document number'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'KAWRT'.
GS_FCAT-SELTEXT_S = 'Base Amt'.
GS_FCAT-SELTEXT_L = 'Base Amt'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'INV_AMT'.
GS_FCAT-SELTEXT_S = 'Invoice AMT'.
GS_FCAT-SELTEXT_L = 'Invoice Amount'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'INV_DISC_PER'.
GS_FCAT-SELTEXT_S = 'Invoice Discount %'.
GS_FCAT-SELTEXT_L = 'Invoice Discount %'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'VAT_AMT'.
GS_FCAT-SELTEXT_S = 'VAT Amt.'.
GS_FCAT-SELTEXT_L = 'VAT Amount'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'RGR_DOC'.
GS_FCAT-SELTEXT_S = 'RGR DOC'.
GS_FCAT-SELTEXT_L = 'RGR DOC'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'RGR_AMT'.
GS_FCAT-SELTEXT_S = 'RGR AMT'.
GS_FCAT-SELTEXT_L = 'RGR Amount'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'AUGBL_NEW'.
GS_FCAT-SELTEXT_S = 'PAY DOC'.
GS_FCAT-SELTEXT_L = 'Payment Document'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'AUGBL_NEW_DATE'.
GS_FCAT-SELTEXT_S = 'PAY DOC DATE'.
GS_FCAT-SELTEXT_L = 'Payment Document Date'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'BLART'.
GS_FCAT-SELTEXT_S = 'Doc. type'.
GS_FCAT-SELTEXT_L = 'Doc. type'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'AUGBL'.
GS_FCAT-SELTEXT_S = 'CLR DOC'.
GS_FCAT-SELTEXT_L = 'Clearing Document'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'BUDAT'.
GS_FCAT-SELTEXT_S = 'Posting Date'.
GS_FCAT-SELTEXT_L = 'Posting Date'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'PAY_AMT'.
GS_FCAT-SELTEXT_S = 'Payment Amount'.
GS_FCAT-SELTEXT_L = 'Payment Amount'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'PAY_AMT_NEW'.
GS_FCAT-SELTEXT_S = 'Pending Payment'.
GS_FCAT-SELTEXT_L = 'Pending Payment'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'DIS_APPL_PER'.
GS_FCAT-SELTEXT_S = 'Disc. Appl. (%)'.
GS_FCAT-SELTEXT_L = 'Discount Appicable (%)'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'DISC_APPL_AMT'.
GS_FCAT-SELTEXT_S = 'Disc. Appl. Amt.'.
GS_FCAT-SELTEXT_L = 'Discount Appicable Amount'.
APPEND GS_FCAT TO GT_FCAT.
GS_FCAT-FIELDNAME = 'DAYS'.
GS_FCAT-SELTEXT_S = 'Days'.
GS_FCAT-SELTEXT_L = 'Days'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR WA_EVENTS.
WA_EVENTS-NAME = 'TOP_OF_PAGE'.
WA_EVENTS-FORM = 'PRINT_HEADING'.
APPEND WA_EVENTS TO IT_EVENTS.
WA_EVENTS-NAME = 'USER_COMMAND'.
WA_EVENTS-FORM = 'USER_COMMAND'.
APPEND WA_EVENTS TO IT_EVENTS.
*&---------------------------------------------------------------------*
*& Form PRINT_HEADING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PRINT_HEADING.
************************************************************
V_TEXT = 'Cash Discount Report'.
CLEAR LS_LINE.
LW_HEAD-TYP = 'H'.
LW_HEAD-INFO = V_TEXT.
APPEND LW_HEAD TO LT_HEAD.
CLEAR V_TEXT.
************************************************************
CLEAR V_TEXT.
CLEAR LW_HEAD.
LW_HEAD-TYP = 'S'.
LW_HEAD-INFO = V_TEXT.
APPEND LW_HEAD TO LT_HEAD.
ENDFORM. "PRINT_HEADING
*&---------------------------------------------------------------------*
*& Form SET_PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
DATA : LT_EXCLUDE TYPE TABLE OF SY-UCOMM.
*&---------------------------------------------------------------------*
** Display the 'Create Credit Memo' button only if it is not executed
*&---------------------------------------------------------------------*
* IF NOT GV_MEMO_CREATE IS INITIAL.
* APPEND 'CRMEMO' TO LT_EXCLUDE.
* ENDIF.
ENDFORM. "SET_PF_STATUS
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .
GS_LAYOUT-NO_INPUT = 'X'.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-INFO_FIELDNAME = 'PERCENT_COL'.
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF R_UCOMM EQ '&IC1'.
*&---------------------------------------------------------------------*
** Display Billing Document
*&---------------------------------------------------------------------*
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
SET PARAMETER ID 'VF' FIELD RS_SELFIELD-VALUE.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
*&---------------------------------------------------------------------*
** Display Credit Note Request Document
*&---------------------------------------------------------------------*
ELSEIF RS_SELFIELD-FIELDNAME = 'VBELN_VA'.
SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
*&---------------------------------------------------------------------*
** Maintain VAT % for all Customers
*&---------------------------------------------------------------------*
SORT GT_VAT_RT BY KUNNR.
DELETE ADJACENT DUPLICATES FROM GT_VAT_RT COMPARING KUNNR.
*&---------------------------------------------------------------------*
** Credit memo creation should trigger if there are Eligible Invoices
*&---------------------------------------------------------------------*
READ TABLE LT_OUTPUT INTO LW_OUTPUT WITH KEY PERCENT_COL = ''.
IF SY-SUBRC <> 0.
MESSAGE 'Eligible Invoices Are Not Available ' TYPE 'S'.
EXIT.
ENDIF.
* BREAK SPLABAP.
*&---------------------------------------------------------------------*
** Take user confirmation to Automatic credit note creation
*&---------------------------------------------------------------------*
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Credit/Debit Memo Request Generation'
TEXT_QUESTION = 'Do you want to generate Credit/Debit Memo
Request?'
TEXT_BUTTON_1 = 'Yes'(003)
TEXT_BUTTON_2 = 'No'(004)
DEFAULT_BUTTON = '2'
DISPLAY_CANCEL_BUTTON = ''
IMPORTING
ANSWER = LV_ANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 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.
IF LV_ANS = '1'.
*&---------------------------------------------------------------------*
** Write code to generate Automatic Credit Memo Request
*&---------------------------------------------------------------------*
GV_MEMO_CREATE = '1'.
GT_CRMEMO_DATA = LT_OUTPUT.
*GS_OUTPUT-VBELN,
LW_OUTPUT-FLAG = 'X'.
PERFORM GET_KUN_SALES_AREA.
PERFORM PROCESS_AUTO_CR.
PERFORM DISPLAY_LOG_DATA.
ENDIF.
ENDIF.
ENDIF. " FOR MAIN
ENDFORM. "User_command
*&---------------------------------------------------------------------*
*& Form GET_KUN_SALES_AREA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_KUN_SALES_AREA .
IF NOT GT_CRMEMO_DATA IS INITIAL.
SELECT KUNNR VKORG VTWEG SPART VKBUR
FROM KNVV
INTO TABLE GT_KNVV
FOR ALL ENTRIES IN GT_CRMEMO_DATA
WHERE KUNNR = GT_CRMEMO_DATA-KUNNR AND
VKORG = 'SPL' AND
(
( VTWEG = 'DS' AND SPART = 'D' ) OR
( VTWEG = 'IS' AND SPART = 'D' )
).
ENDIF.
*Shubhanshu
LOOP AT GT_CRMEMO_DATA INTO LW_OUTPUT WHERE DISC_AMT_DIFF LT '0.00' .
APPEND LW_OUTPUT TO GT_DBMEMO_DATA.
DELETE GT_CRMEMO_DATA INDEX SY-INDEX.
CLEAR:LW_OUTPUT.
ENDLOOP.
*Shubhanshu
GS_CTU_MODE-DISMODE = 'N'.
GS_CTU_MODE-UPDMODE = 'S'.
GS_CTU_MODE-DEFSIZE = 'X'.
GS_BAPISDITEM-ITM_NUMBER = '10'.
GS_BAPISDITEMX-ITM_NUMBER = '10'.
GS_BAPISDITEM-MATERIAL = 'M100'.
GS_BAPISDITEMX-MATERIAL = 'X'.
GS_BAPISDITEM-TARGET_QTY = '1'.
GS_BAPISDITEMX-TARGET_QTY = 'X'.
IF SY-SUBRC = 0 .
IF SY-SUBRC <> 0 .
GS_BAPISDITEM-TAX_CLASS1 = '0' .
GS_BAPISDITEMX-TAX_CLASS1 = 'X'.
GS_BAPISDITEM-TAX_CLASS2 = '0' .
GS_BAPISDITEMX-TAX_CLASS2 = 'X'.
GS_BAPISDITEM-TAX_CLASS3 = '0' .
GS_BAPISDITEMX-TAX_CLASS3 = 'X'.
GS_BAPISDITEM-TAX_CLASS4 = '0' .
GS_BAPISDITEMX-TAX_CLASS4 = 'X'.
GS_BAPISDITEM-TAX_CLASS5 = '0' .
GS_BAPISDITEMX-TAX_CLASS5 = 'X'.
GS_BAPISDITEM-TAX_CLASS6 = '0' .
GS_BAPISDITEMX-TAX_CLASS6 = 'X'.
GS_BAPISDITEM-TAX_CLASS7 = '0' .
GS_BAPISDITEMX-TAX_CLASS7 = 'X'.
GS_BAPISDITEM-TAX_CLASS8 = '0' .
GS_BAPISDITEMX-TAX_CLASS8 = 'X'.
GS_BAPISDITEM-TAX_CLASS9 = '0' .
GS_BAPISDITEMX-TAX_CLASS9 = 'X'.
ENDIF.
ENDIF .
* GS_BAPISDITEM-ORDERID
*BREAK-POINT.
CLEAR GS_KNVV.
CLEAR TEMP.
CLEAR GS_VAT_RT.
* READ TABLE GT_VAT_RT INTO GS_VAT_RT WITH KEY KUNNR = LW_OUTPUT-KUNNR.
* IF SY-SUBRC = 0.
* IF P_VAT = 'X'.
* LV_VAT_RATE = GS_VAT_RT-VAT_RATE.
* ELSE.
* LV_VAT_RATE = 0.
* ENDIF.
* ENDIF.
IF C_TAX = 'X' .
IF SY-SUBRC = 0 .
LV_VAT_RATE = LW_OUTPUT-VAT_RATE .
ENDIF.
ENDIF.
REFRESH GT_MESSTAB.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
GS_BAPISDHEAD1-DOC_TYPE = 'ZCD'.
GS_BAPISDHEAD1X-DOC_TYPE = 'X'.
** Order Reason
GS_BAPISDHEAD1-ORD_REASON = 'Z08'.
GS_BAPISDHEAD1X-ORD_REASON = 'X'.
GS_BAPISDHEAD1X-SALES_ORG = 'X'.
GS_BAPISDHEAD1X-DISTR_CHAN = 'X'.
GS_BAPISDHEAD1X-DIVISION = 'X'.
GS_BAPISDHEAD1X-SALES_OFF = 'X'.
ENDIF.
GS_BAPISDHEAD1-PRICE_DATE = P_RUN_DT.
GS_BAPISDHEAD1-DOC_DATE = P_RUN_DT.
GS_BAPISDHEAD1X-PRICE_DATE = 'X'.
GS_BAPISDHEAD1X-DOC_DATE = 'X'.
GS_BAPISDHEAD1-PURCH_NO_C = LW_OUTPUT-VBELN.
GS_BAPISDHEAD1X-PURCH_NO_C = 'X'.
GS_BAPISDHEAD1-VERSION = 'CASH001'.
GS_BAPISDHEAD1X-VERSION = 'X'.
GS_BAPIPARTNR-PARTN_ROLE = 'AG'.
GS_BAPIPARTNR-PARTN_NUMB = LW_OUTPUT-KUNNR.
* GS_BAPIPARTNR-ITM_NUMBER = '10'.
APPEND GS_BAPIPARTNR TO GT_BAPIPARTNR.
GS_BAPICONDITION-ITM_NUMBER = '10'.
GS_BAPICONDITION-COND_TYPE = GV_CDCND.
GS_BAPICONDITION-COND_VALUE = LW_OUTPUT-DISC_AMT_DIFF / 10.
APPEND GS_BAPICONDITION TO GT_BAPICONDITION.
CLEAR LS_ZFI_CD.
LS_ZFI_CD-KUNNR = LS_OUTPUT_ORG-KUNNR.
LS_ZFI_CD-VBELN = LS_OUTPUT_ORG-VBELN.
LS_ZFI_CD-PAY_DOC = LS_OUTPUT_ORG-AUGBL.
LS_ZFI_CD-PAY_DOC_BUDAT = LS_OUTPUT_ORG-BUDAT.
LS_ZFI_CD-FKART = LS_OUTPUT_ORG-FKART.
LS_ZFI_CD-ACC_DOCNR = LS_OUTPUT_ORG-REBZG.
LS_ZFI_CD-ACC_DOCYR = LS_OUTPUT_ORG-REBZJ.
LS_ZFI_CD-ZFBDT = LS_OUTPUT_ORG-ZFBDT.
LS_ZFI_CD-BASE_AMT = LS_OUTPUT_ORG-KAWRT_SAVE.
LS_ZFI_CD-INV_AMT = LS_OUTPUT_ORG-INV_AMT_SAVE.
LS_ZFI_CD-INV_DISC_PER = LS_OUTPUT_ORG-INV_DISC_PER_SAVE.
LS_ZFI_CD-DOC_TYP = LS_OUTPUT_ORG-BLART.
LS_ZFI_CD-PAY_AMT = LS_OUTPUT_ORG-PAY_AMT.
LS_ZFI_CD-DISC_APPL_PER = LS_OUTPUT_ORG-DIS_APPL_PER_SAVE.
LS_ZFI_CD-DISC_APPL_AMT = LS_OUTPUT_ORG-DISC_APPL_AMT_SAVE.
LS_ZFI_CD-DAYS_DIFF = LS_OUTPUT_ORG-DAYS_SAVE.
LS_ZFI_CD-BUKRS = LS_OUTPUT_ORG-BUKRS.
LS_ZFI_CD-DISC_AMT_INV = LS_OUTPUT_ORG-DISC_AMT_INV_SAVE.
LS_ZFI_CD-DISC_AMT_DIFF = LS_OUTPUT_ORG-DISC_AMT_DIFF_SAVE.
LS_ZFI_CD-VAT_PERCENT = LS_OUTPUT_ORG-VAT_RATE_SAVE.
LS_ZFI_CD-VAT_AMT = LS_OUTPUT_ORG-VAT_AMT_SAVE.
CLEAR VALUE.
* READ TABLE VALUES INTO VALUE WITH KEY KEY = NAME.
* IF SY-SUBRC = 0.
* LS_ZFI_CD-LOCATION = VALUE-TEXT.
* ENDIF.
LS_ZFI_CD-RUN_DATE = SY-DATUM.
LS_ZFI_CD-RUN_TIME = SY-UZEIT.
LS_ZFI_CD-CREATED_BY = SY-UNAME.
LS_ZFI_CD-CR_NOTE_DOC = P_LV_CR_MEMO_NO.
LS_ZFI_CD-CR_NOTE_AMT = P_GT_CRMEMO_DATA-DISC_AMT_DIFF.
ENDCATCH.
ENDLOOP.
CLEAR GT_BDCDATA.
GT_BDCDATA-PROGRAM = PROGRAM.
GT_BDCDATA-DYNPRO = DYNPRO.
GT_BDCDATA-DYNBEGIN = 'X'.
APPEND GT_BDCDATA.
GS_FCAT-FIELDNAME = 'KUNNR'.
GS_FCAT-SELTEXT_S = 'Customer'.
GS_FCAT-SELTEXT_L = 'Customer Name'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'VBELN_VA'.
GS_FCAT-SELTEXT_S = 'Credit Memo Request'.
GS_FCAT-SELTEXT_L = 'Credit Memo Request'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'MSGV1'.
GS_FCAT-SELTEXT_S = 'Text'.
GS_FCAT-SELTEXT_L = 'Text'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'BILL'.
GS_FCAT-SELTEXT_S = 'Credit Memo'.
GS_FCAT-SELTEXT_L = 'Credit Memo'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'MESG'.
GS_FCAT-SELTEXT_S = 'Text'.
GS_FCAT-SELTEXT_L = 'Text'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
GS_FCAT-FIELDNAME = 'RELEASE'.
GS_FCAT-SELTEXT_S = 'Relese Status'.
GS_FCAT-SELTEXT_L = 'Relese Status'.
APPEND GS_FCAT TO GT_FCAT.
CLEAR GS_FCAT.
** If there was n error while creating VK11 for ZVAT then goto
** next cr. memo. req.*********
IF GV_VK11_ERR = 'X'.
CONTINUE.
CLEAR GV_VK11_ERR.
ENDIF.
** Set partners
PERFORM SET_VA_PARTNER.
GT_MSG_LOG-MSGTY = LS_BAPIRET2_COMMIT-TYPE.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
APPEND GT_MSG_LOG.
CONTINUE.
ELSE.
*&---------------------------------------------------------------------*
** Create Output Log (Success)
*&---------------------------------------------------------------------*
SORT GT_BAPIRET2 BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM GT_BAPIRET2
COMPARING TYPE ID NUMBER.
GT_MSG_LOG-MSGTY = GS_BAPIRET2-TYPE.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WA_BILLING-REF_DOC = LV_CR_MEMO_NO .
WA_BILLING-REF_DOC_CA = 'C'.
APPEND WA_BILLING TO IT_BILLING.
CLEAR GT_BDCDATA[] .
REFRESH GT_BDCDATA .
GT_MSG_LOG-BILL = WA_SUCCESS-BILL_DOC .
ELSE .
ENDIF.
ENDIF.
CLEAR:WA_SUCCESS.
ENDIF.
APPEND GT_MSG_LOG.
CLEAR:WA_BILLING.
REFRESH:IT_BILLING,IT_RET,IT_SUCCESS.
REFRESH: IT_BDCDATA, IT_MESSAGES.
ENDLOOP.
ENDIF.
ELSE.
*&---------------------------------------------------------------------*
** Generate Error Log in case of Error while creating Credit Memo
** Request
*&---------------------------------------------------------------------*
LOOP AT GT_BAPIRET2 INTO GS_BAPIRET2.
CLEAR GT_MSG_LOG.
GT_MSG_LOG-MSGTY = GS_BAPIRET2-TYPE.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
APPEND GT_MSG_LOG.
ENDLOOP.
ENDIF.
ENDLOOP.
REFRESH:GT_BAPISDITEM,GT_BAPISDITEMX,GT_BDCDATA,GT_MESSTAB,GT_BDCDATA,GT_BAPIPARTNR
,GT_BAPICONDITION,GT_BAPIRET2,
IT_BILLING,IT_RET,IT_SUCCESS,IT_MESSAGES[].
CLEAR:GS_KNVV,LW_GSBER,GS_MESSTAB,GV_RUN_DT,GS_BAPISDHEAD1,GS_BAPISDHEAD1X,GS_BAPIP
ARTNR,GS_BAPICONDITION,
LV_CR_MEMO_NO,LS_BAPIRET2_COMMIT,WA_BILLING,LW_OUTPUT.
** If there was n error while creating VK11 for ZVAT then goto
** next cr. memo. req.*********
IF GV_VK11_ERR = 'X'.
CONTINUE.
CLEAR GV_VK11_ERR.
ENDIF.
** Set partners
PERFORM SET_VA_PARTNER.
*&---------------------------------------------------------------------*
** Generate Error Log in case of Error while commiting Credit Memo
** Request
*&---------------------------------------------------------------------*
IF NOT LS_BAPIRET2_COMMIT IS INITIAL.
CLEAR GT_MSG_LOG.
GT_MSG_LOG-MSGTY = LS_BAPIRET2_COMMIT-TYPE.
APPEND GT_MSG_LOG.
CONTINUE.
ELSE.
*&---------------------------------------------------------------------*
** Create Output Log (Success)
*&---------------------------------------------------------------------*
SORT GT_BAPIRET2 BY TYPE ID NUMBER.
DELETE ADJACENT DUPLICATES FROM GT_BAPIRET2
COMPARING TYPE ID NUMBER.
GT_MSG_LOG-MSGTY = GS_BAPIRET2-TYPE.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WA_BILLING-REF_DOC = LV_CR_MEMO_NO .
WA_BILLING-REF_DOC_CA = 'C'.
APPEND WA_BILLING TO IT_BILLING.
CLEAR GT_BDCDATA[] .
REFRESH GT_BDCDATA .
GT_MSG_LOG-BILL = WA_SUCCESS-BILL_DOC .
ELSE .
ENDIF.
ENDIF.
CLEAR:WA_SUCCESS.
ENDIF.
APPEND GT_MSG_LOG.
CLEAR:WA_BILLING.
REFRESH:IT_BILLING,IT_RET,IT_SUCCESS.
REFRESH: IT_BDCDATA, IT_MESSAGES.
ENDLOOP.
ENDIF.
ELSE.
*&---------------------------------------------------------------------*
** Generate Error Log in case of Error while creating Credit Memo
** Request
*&---------------------------------------------------------------------*
LOOP AT GT_BAPIRET2 INTO GS_BAPIRET2.
CLEAR GT_MSG_LOG.
GT_MSG_LOG-MSGTY = GS_BAPIRET2-TYPE.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
APPEND GT_MSG_LOG.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " CREDIT_NOTE
*&---------------------------------------------------------------------*
*& Form RUN_VK11_ZAVT1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM RUN_VK11_ZAVT1 .
CLEAR GS_VAT_RT.
* READ TABLE GT_VAT_RT INTO GS_VAT_RT WITH KEY KUNNR = LW_OUTPUT-KUNNR.
* IF SY-SUBRC = 0.
* IF P_VAT = 'X'.
* LV_VAT_RATE = GS_VAT_RT-VAT_RATE.
* ELSE.
* LV_VAT_RATE = 0.
* ENDIF.
* ENDIF.
IF C_TAX = 'X' .
READ TABLE GT_KNVV INTO GS_KNVV WITH KEY KUNNR = LW_OUTPUT-KUNNR.
IF SY-SUBRC = 0 .
LV_VAT_RATE = LW_OUTPUT-VAT_RATE .
ENDIF.
ENDIF.
REFRESH GT_MESSTAB.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
** Order Reason
GS_BAPISDHEAD1-ORD_REASON = 'Z08'.
GS_BAPISDHEAD1X-ORD_REASON = 'X'.
GS_BAPISDHEAD1X-SALES_ORG = 'X'.
GS_BAPISDHEAD1X-DISTR_CHAN = 'X'.
GS_BAPISDHEAD1X-DIVISION = 'X'.
GS_BAPISDHEAD1X-SALES_OFF = 'X'.
ENDIF.
GS_BAPISDHEAD1-PRICE_DATE = P_RUN_DT.
GS_BAPISDHEAD1-DOC_DATE = P_RUN_DT.
GS_BAPISDHEAD1X-PRICE_DATE = 'X'.
GS_BAPISDHEAD1X-DOC_DATE = 'X'.
GS_BAPISDHEAD1-PURCH_NO_C = LW_OUTPUT-VBELN.
GS_BAPISDHEAD1X-PURCH_NO_C = 'X'.
GS_BAPISDHEAD1-VERSION = 'CASH001'.
GS_BAPISDHEAD1X-VERSION = 'X'.