Advertisement
Guest User

Untitled

a guest
Aug 21st, 2018
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 12.56 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report  Z_VIP_REPOSTING
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT  Z_VIP_REPOSTING.
  10.  
  11. PARAMETERS p_test TYPE testflag DEFAULT 'X'.
  12. DATA lv_doc_nr TYPE belnr.
  13. PARAMETERS p_code TYPE bukrs OBLIGATORY.
  14. PARAMETERS p_fi_yr TYPE GJAHR OBLIGATORY.
  15. SELECT-OPTIONS s_doc_nr FOR lv_doc_nr.
  16.  
  17. DATA wa_bkpf TYPE bkpf.
  18.  
  19. DATA wa_doc_nr LIKE LINE OF s_doc_nr.
  20.  
  21. DATA wa_bseg1 TYPE bseg.
  22. DATA wa_bseg2 TYPE bseg.
  23.  
  24. DATA it_acc_pay TYPE STANDARD TABLE OF BAPIACAP09.
  25. DATA wa_acc_pay TYPE BAPIACAP09.
  26.  
  27. DATA wa_kna1 TYPE kna1.
  28.  
  29. DATA wa_lfa1 TYPE lfa1.
  30.  
  31. DATA wa_reversal TYPE BAPIACREV.
  32. DATA lv_bus_act TYPE BAPIACHE09-BUS_ACT.
  33.  
  34. DATA: it_return_rev TYPE STANDARD TABLE OF bapiret2,
  35.       wa_return_rev TYPE bapiret2.
  36.  
  37. DATA it_acc_rec TYPE STANDARD TABLE OF bapiacar09.
  38. DATA wa_acc_rec TYPE bapiacar09.
  39.  
  40. DATA wa_header TYPE bapiache09.
  41.  
  42. DATA it_rev_acc TYPE STANDARD TABLE OF bapiacgl09.
  43. DATA wa_rev_acc TYPE bapiacgl09.
  44.  
  45. DATA: it_curr_amount TYPE STANDARD TABLE OF bapiaccr09,
  46.       wa_curr_amount TYPE bapiaccr09.
  47.  
  48. DATA: it_return TYPE STANDARD TABLE OF bapiret2,
  49.       wa_return TYPE bapiret2.
  50.  
  51. START-OF-SELECTION.
  52.  
  53.   LOOP AT s_doc_nr INTO wa_doc_nr.
  54.  
  55.     CLEAR: wa_header, wa_bseg1, wa_bseg2, wa_acc_pay, it_acc_pay, wa_rev_acc, it_rev_acc, wa_curr_amount, it_curr_amount, it_return, wa_return, wa_reversal, it_return_rev, wa_return_rev.
  56.  
  57.     SELECT SINGLE *
  58.       FROM bkpf
  59.       into wa_bkpf
  60.       WHERE bukrs = p_code and belnr = wa_doc_nr-low and gjahr = p_fi_yr.
  61.     "mandt = sy-mandt and
  62.     "ENDSELECT.
  63.     IF sy-subrc = 0.
  64.  
  65.       SELECT SINGLE *
  66.         FROM bseg
  67.         INTO wa_bseg1
  68.         WHERE bukrs = p_code and belnr = wa_doc_nr-low and gjahr = p_fi_yr and buzei = '001'.
  69.  
  70.       IF wa_bseg1-bschl = '01' OR wa_bseg1-bschl = '11'. "customer
  71.         SELECT SINGLE *
  72.           FROM bseg
  73.           INTO wa_bseg2
  74.           WHERE bukrs = p_code and belnr = wa_doc_nr-low and gjahr = p_fi_yr and buzei = '002'.
  75.         IF wa_bseg2-hkont = '0004630001'.
  76.  
  77.           "header
  78.           wa_header-username = wa_bkpf-usnam.
  79.           wa_header-comp_code = wa_bkpf-bukrs.
  80.           wa_header-doc_date = wa_bkpf-bldat.
  81.           wa_header-pstng_date = wa_bkpf-budat. "doznaj posle
  82.           "wa_header-doc_type = wa_bkpf-blart.
  83.           wa_header-doc_type = 'AC'.
  84.           wa_header-ref_doc_no = wa_bkpf-xblnr.
  85.  
  86.           SELECT SINGLE *
  87.             FROM kna1
  88.             INTO wa_kna1
  89.             WHERE kunnr = wa_bseg1-kunnr.
  90.  
  91.           "vendor
  92.           wa_acc_pay-itemno_acc = '0000000001'.
  93.           wa_acc_pay-vendor_no = wa_kna1-lifnr.
  94.           wa_acc_pay-comp_code = wa_bseg1-bukrs.
  95.           wa_acc_pay-tax_code = wa_bseg1-mwskz.
  96.           wa_acc_pay-alloc_nmbr = wa_bseg1-zuonr.
  97.           wa_acc_pay-item_text = wa_bseg1-sgtxt.
  98.           wa_acc_pay-bline_date = wa_bseg1-zfbdt.
  99.           wa_acc_pay-PMNTTRMS = wa_bseg1-zterm.
  100.           APPEND wa_acc_pay TO it_acc_pay.
  101.  
  102.           "discount
  103.           wa_rev_acc-itemno_acc = '0000000002'.
  104.           wa_rev_acc-gl_account = '0004630001'.
  105.           "wa_rev_acc-doc_type = 'AC'.
  106.           wa_rev_acc-comp_code = wa_bseg2-bukrs.
  107.           wa_rev_acc-tax_code = wa_bseg2-mwskz.
  108.           wa_rev_acc-costcenter = wa_bseg2-KOSTL.
  109.           wa_rev_acc-TR_PART_BA = wa_bseg2-pargb.
  110.           wa_rev_acc-ORDERID = wa_bseg2-aufnr.
  111.           wa_rev_acc-alloc_nmbr = wa_bseg2-ZUONR.
  112.           wa_rev_acc-item_text = wa_bseg2-sgtxt.
  113.           APPEND wa_rev_acc TO it_rev_acc.
  114.  
  115.           "vendor currency items
  116.           wa_curr_amount-itemno_acc = '0000000001'.
  117.           wa_curr_amount-curr_type = '00'.
  118.           "wa_curr_amount-currency = 'EUR'.
  119.           "wa_curr_amount-currency_iso = 'EUR'.
  120.           wa_curr_amount-currency = wa_bkpf-waers.
  121.           wa_curr_amount-currency_iso = wa_bkpf-waers.
  122.           wa_curr_amount-amt_doccur = wa_bseg1-WRBTR.
  123.           APPEND wa_curr_amount TO it_curr_amount.
  124.           CLEAR wa_curr_amount.
  125.  
  126.           "discount currency items
  127.           wa_curr_amount-itemno_acc = '0000000002'.
  128.           wa_curr_amount-curr_type = '00'.
  129.           "wa_curr_amount-currency = 'EUR'.
  130.           "wa_curr_amount-currency_iso = 'EUR'.
  131.           wa_curr_amount-currency = wa_bkpf-waers.
  132.           wa_curr_amount-currency_iso = wa_bkpf-waers.
  133.           wa_curr_amount-amt_doccur = wa_bseg2-WRBTR.
  134.           APPEND wa_curr_amount TO it_curr_amount.
  135.           CLEAR wa_curr_amount.
  136.  
  137.           IF p_test = ''.
  138.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  139.               EXPORTING
  140.                 DOCUMENTHEADER          = wa_header
  141. *             CUSTOMERCPD             =
  142. *             CONTRACTHEADER          =
  143. *           IMPORTING
  144. *             OBJ_TYPE                =
  145. *             OBJ_KEY                 =
  146. *             OBJ_SYS                 =
  147.               TABLES
  148.                 ACCOUNTGL               = it_rev_acc
  149. *             ACCOUNTRECEIVABLE       =
  150.                 ACCOUNTPAYABLE          = it_acc_pay
  151. *             ACCOUNTTAX              =
  152.                 CURRENCYAMOUNT          = it_curr_amount
  153. *             CRITERIA                =
  154. *             VALUEFIELD              =
  155. *             EXTENSION1              =
  156.                 RETURN                  = it_return
  157. *             PAYMENTCARD             =
  158. *             CONTRACTITEM            =
  159. *             EXTENSION2              =
  160. *             REALESTATE              =
  161. *             ACCOUNTWT               =
  162.                       .
  163.  
  164.             wa_reversal-obj_type = wa_bkpf-awtyp.
  165.             wa_reversal-obj_key = wa_bkpf-awkey.
  166.             wa_reversal-obj_sys = wa_bkpf-awsys.
  167.             wa_reversal-obj_key_r = wa_bkpf-awtyp.
  168.             lv_bus_act = wa_bkpf-glvor.
  169.  
  170.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
  171.               EXPORTING
  172.                 REVERSAL       = wa_reversal
  173.                 BUS_ACT        = lv_bus_act
  174. *             IMPORTING
  175. *               OBJ_TYPE       =
  176. *               OBJ_KEY        =
  177. *               OBJ_SYS        =
  178.               TABLES
  179.                 RETURN         = it_return_rev
  180.                       .
  181.  
  182.  
  183.           else.
  184.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
  185.               EXPORTING
  186.                 DOCUMENTHEADER    = wa_header
  187. *               CUSTOMERCPD       =
  188. *               CONTRACTHEADER    =
  189.               TABLES
  190.                 ACCOUNTGL         = it_rev_acc
  191. *               ACCOUNTRECEIVABLE =
  192.                 ACCOUNTPAYABLE    = it_acc_pay
  193. *               ACCOUNTTAX        =
  194.                 CURRENCYAMOUNT    = it_curr_amount
  195. *               CRITERIA          =
  196. *               VALUEFIELD        =
  197. *               EXTENSION1        =
  198.                 RETURN            = it_return
  199. *               PAYMENTCARD       =
  200. *               CONTRACTITEM      =
  201. *               EXTENSION2        =
  202. *               REALESTATE        =
  203. *               ACCOUNTWT         =
  204.               .
  205.  
  206.  
  207.           ENDIF.
  208.  
  209.         ENDIF.
  210.  
  211.       ELSEIF wa_bseg1-bschl = '31' OR wa_bseg1-bschl = '21'. "vendor
  212.         SELECT SINGLE *
  213.         FROM bseg
  214.         INTO wa_bseg2
  215.         WHERE bukrs = p_code and belnr = wa_doc_nr-low and gjahr = p_fi_yr and buzei = '002'.
  216.         IF wa_bseg2-hkont = '0008270001'.
  217.  
  218.           "header
  219.           wa_header-username = wa_bkpf-usnam.
  220.           wa_header-comp_code = wa_bkpf-bukrs.
  221.           wa_header-doc_date = wa_bkpf-bldat.
  222.           wa_header-pstng_date = wa_bkpf-budat. "doznaj posle
  223.           "wa_header-doc_type = wa_bkpf-blart.
  224.           wa_header-doc_type = 'AC'.
  225.           wa_header-ref_doc_no = wa_bkpf-xblnr.
  226.  
  227.           SELECT SINGLE *
  228.             FROM lfa1
  229.             INTO wa_lfa1
  230.             WHERE lifnr = wa_bseg1-lifnr.
  231.  
  232.           "customer
  233.           wa_acc_rec-itemno_acc = '0000000001'.
  234.           wa_acc_rec-customer = wa_lfa1-kunnr.
  235.           wa_acc_rec-comp_code = wa_bseg1-bukrs.
  236.           wa_acc_rec-tax_code = wa_bseg1-mwskz.
  237.           wa_acc_rec-alloc_nmbr = wa_bseg1-zuonr.
  238.           wa_acc_rec-item_text = wa_bseg1-sgtxt.
  239.           wa_acc_rec-bline_date = wa_bseg1-zfbdt.
  240.           wa_acc_rec-PMNTTRMS = wa_bseg1-zterm.
  241.           APPEND wa_acc_rec TO it_acc_rec.
  242.  
  243.           "discount
  244.           wa_rev_acc-itemno_acc = '0000000002'.
  245.           wa_rev_acc-gl_account = '0008270001'.
  246.           "wa_rev_acc-doc_type = 'AC'.
  247.           wa_rev_acc-comp_code = wa_bseg2-bukrs.
  248.           wa_rev_acc-tax_code = wa_bseg2-mwskz.
  249.           wa_rev_acc-costcenter = wa_bseg2-KOSTL.
  250.           wa_rev_acc-TR_PART_BA = wa_bseg2-pargb.
  251.           wa_rev_acc-ORDERID = wa_bseg2-aufnr.
  252.           wa_rev_acc-alloc_nmbr = wa_bseg2-ZUONR.
  253.           wa_rev_acc-item_text = wa_bseg2-sgtxt.
  254.           APPEND wa_rev_acc TO it_rev_acc.
  255.  
  256.           "customer currency items
  257.           wa_curr_amount-itemno_acc = '0000000001'.
  258.           wa_curr_amount-curr_type = '00'.
  259.           "wa_curr_amount-currency = 'EUR'.
  260.           "wa_curr_amount-currency_iso = 'EUR'.
  261.           wa_curr_amount-currency = wa_bkpf-waers.
  262.           wa_curr_amount-currency_iso = wa_bkpf-waers.
  263.           wa_curr_amount-amt_doccur = wa_bseg1-WRBTR.
  264.           APPEND wa_curr_amount TO it_curr_amount.
  265.           CLEAR wa_curr_amount.
  266.  
  267.           "discount currency items
  268.           wa_curr_amount-itemno_acc = '0000000002'.
  269.           wa_curr_amount-curr_type = '00'.
  270.           "wa_curr_amount-currency = 'EUR'.
  271.           "wa_curr_amount-currency_iso = 'EUR'.
  272.           wa_curr_amount-currency = wa_bkpf-waers.
  273.           wa_curr_amount-currency_iso = wa_bkpf-waers.
  274.           wa_curr_amount-amt_doccur = wa_bseg2-WRBTR.
  275.           APPEND wa_curr_amount TO it_curr_amount.
  276.           CLEAR wa_curr_amount.
  277.  
  278.  
  279.           IF p_test = ''.
  280.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
  281.               EXPORTING
  282.                 DOCUMENTHEADER          = wa_header
  283. *             CUSTOMERCPD             =
  284. *             CONTRACTHEADER          =
  285. *           IMPORTING
  286. *             OBJ_TYPE                =
  287. *             OBJ_KEY                 =
  288. *             OBJ_SYS                 =
  289.               TABLES
  290.                 ACCOUNTGL               = it_rev_acc
  291.                 ACCOUNTRECEIVABLE       = it_acc_rec
  292. *               ACCOUNTPAYABLE          =
  293. *             ACCOUNTTAX              =
  294.                 CURRENCYAMOUNT          = it_curr_amount
  295. *             CRITERIA                =
  296. *             VALUEFIELD              =
  297. *             EXTENSION1              =
  298.                 RETURN                  = it_return
  299. *             PAYMENTCARD             =
  300. *             CONTRACTITEM            =
  301. *             EXTENSION2              =
  302. *             REALESTATE              =
  303. *             ACCOUNTWT               =
  304.                       .
  305.  
  306.             wa_reversal-obj_type = wa_bkpf-awtyp.
  307.             wa_reversal-obj_key = wa_bkpf-awkey.
  308.             wa_reversal-obj_sys = wa_bkpf-awsys.
  309.             wa_reversal-obj_key_r = wa_bkpf-awtyp.
  310.             lv_bus_act = wa_bkpf-glvor.
  311.  
  312.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
  313.               EXPORTING
  314.                 REVERSAL       = wa_reversal
  315.                 BUS_ACT        = lv_bus_act
  316. *             IMPORTING
  317. *               OBJ_TYPE       =
  318. *               OBJ_KEY        =
  319. *               OBJ_SYS        =
  320.               TABLES
  321.                 RETURN         = it_return_rev
  322.                       .
  323.  
  324.  
  325.           else.
  326.             CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
  327.               EXPORTING
  328.                 DOCUMENTHEADER    = wa_header
  329. *               CUSTOMERCPD       =
  330. *               CONTRACTHEADER    =
  331.               TABLES
  332.                 ACCOUNTGL         = it_rev_acc
  333.                 ACCOUNTRECEIVABLE = it_acc_rec
  334. *               ACCOUNTPAYABLE    =
  335. *               ACCOUNTTAX        =
  336.                 CURRENCYAMOUNT    = it_curr_amount
  337. *               CRITERIA          =
  338. *               VALUEFIELD        =
  339. *               EXTENSION1        =
  340.                 RETURN            = it_return
  341. *               PAYMENTCARD       =
  342. *               CONTRACTITEM      =
  343. *               EXTENSION2        =
  344. *               REALESTATE        =
  345. *               ACCOUNTWT         =
  346.               .
  347.  
  348.  
  349.           ENDIF.
  350.  
  351.  
  352.         ENDIF.
  353.  
  354.       ENDIF.
  355.  
  356.     ELSE.
  357.       CONTINUE.
  358.  
  359.     ENDIF.
  360.  
  361.     LOOP AT it_return INTO wa_return.
  362.       WRITE:/ wa_return-message.
  363.  
  364.     ENDLOOP.
  365.  
  366.   ENDLOOP.
  367.  
  368.   CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  369.     EXPORTING
  370.       WAIT          = 'X'
  371. * IMPORTING
  372. *   RETURN        =
  373.             .
  374.  
  375.  
  376.  
  377. end-of-SELECTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement