Professional Documents
Culture Documents
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_02_FETCH_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_02_fetch_data .
IF sy-subrc NE 0.
* Raise Error
MESSAGE s001 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ELSE.
SORT lt_source BY partner hkont.
ENDIF.
SELECT a~bukrs,
a~belnr,
a~gjahr,
a~blart,
a~bldat,
a~budat,
a~xblnr,
a~bktxt,
a~waers,
b~bschl,
b~koart,
b~umskz,
b~drcrk, b~hsl,
b~zuonr, b~sgtxt,
b~ukostl, b~prctr, b~racct, b~kunnr, b~lifnr,
b~rassc
INTO CORRESPONDING FIELDS OF TABLE @lt_bseg FROM bkpf AS a INNER JOIN
acdoca AS b
ON ( a~bukrs = b~rbukrs ) AND
( a~belnr = b~belnr ) AND
( a~gjahr = b~gjahr )
FOR ALL ENTRIES IN @lt_source
WHERE a~bukrs IN @s_bukrs
* AND a~gjahr = @lv_yr
* AND a~monat = @lv_month
AND a~budat IN @s_date
AND b~rldnr = @p_ledger
AND b~racct = @lt_source-hkont
AND b~rassc IN @s_bp .
IF sy-subrc EQ 0.
SELECT a~bukrs,
a~belnr,
a~gjahr,
a~blart,
a~bldat,
a~budat,
a~xblnr,
a~bktxt,
a~waers,
b~bschl,
b~koart,
b~umskz,
b~shkzg, b~dmbtr, b~wrbtr, b~valut, b~zuonr, b~sgtxt,
b~kostl, b~projn, b~prctr, b~hkont, b~kunnr, b~lifnr,
b~xref1, b~xref2, b~xref3
INTO TABLE @lt_doc FROM bkpf AS a INNER JOIN bseg AS b
ON ( a~bukrs = b~bukrs ) AND
( a~belnr = b~belnr ) AND
( a~gjahr = b~gjahr )
FOR ALL ENTRIES IN @lt_bseg
WHERE a~bukrs = @lt_bseg-bukrs
AND a~belnr = @lt_bseg-belnr
AND a~gjahr = @lt_bseg-gjahr.
IF sy-subrc EQ 0.
SORT lt_doc BY bukrs belnr gjahr.
ENDIF.
ENDIF.
*********
* SELECT a~bukrs,
* a~belnr,
* a~gjahr,
* a~blart,
* a~bldat,
* a~budat,
* a~xblnr,
* a~bktxt,
* a~waers,
* b~bschl,
* b~koart,
* b~umskz,
* b~shkzg, b~dmbtr, b~wrbtr, b~valut, b~zuonr, b~sgtxt,
* b~kostl, b~projn, b~prctr, b~hkont, b~kunnr, b~lifnr,
* b~xref1, b~xref2, b~xref3
* INTO TABLE @lt_doc FROM bkpf AS a INNER JOIN bseg AS b
** INTO TABLE @lt_bseg FROM bkpf AS a INNER JOIN bseg AS b
* ON ( a~bukrs = b~bukrs ) AND
* ( a~belnr = b~belnr ) AND
* ( a~gjahr = b~gjahr ) AND
* ( a~monat = @lv_month ) FOR ALL ENTRIES IN @lt_source
* WHERE a~bukrs IN @s_bukrs
* AND a~gjahr = @lv_yr
* AND a~monat = @lv_month
* AND b~hkont = @lt_source-hkont.
* IF sy-subrc EQ 0.
** SORT lt_doc BY bukrs belnr gjahr hkont.
* SORT lt_bseg BY bukrs belnr gjahr racct.
* DELETE ADJACENT DUPLICATES FROM lt_doc COMPARING bukrs belnr gjahr hkont.
* ENDIF.
* ENDIF.
** To get both Dr and Cr entry of accounting document.
* SELECT a~bukrs,
* a~belnr,
* a~gjahr,
* a~blart,
* a~bldat,
* a~budat,
* a~xblnr,
* a~bktxt,
* a~waers,
* b~bschl,
* b~koart,
* b~umskz,
** b~shkzg, b~dmbtr, b~wrbtr, b~valut, b~zuonr, b~sgtxt,
* b~drcrk, b~hsl, "b~valut,
* b~zuonr, b~sgtxt,
** b~kostl, b~projn, b~prctr, b~hkont, b~kunnr, b~lifnr "b~xref1,
b~xref2, b~xref3
* b~ukostl, b~prctr, b~racct, b~kunnr, b~lifnr, "b~xref1, b~xref2,
b~xref3
* b~rassc
** INTO TABLE @lt_bseg FROM bkpf AS a INNER JOIN bseg AS b
* INTO CORRESPONDING FIELDS OF TABLE @lt_bseg FROM bkpf AS a INNER JOIN
acdoca AS b
* ON ( a~bukrs = b~rbukrs ) AND
* ( a~belnr = b~belnr ) AND
* ( a~gjahr = b~gjahr )
* FOR ALL ENTRIES IN @lt_doc
* WHERE a~bukrs = @lt_doc-bukrs
* AND a~belnr = @lt_doc-belnr
* AND a~gjahr = @lt_doc-gjahr
* AND b~rldnr = '0L'
* AND b~racct = @lt_doc-hkont
* AND b~rassc IN @s_bp .
*
* IF sy-subrc EQ 0.
** IF lt_bseg IS NOT INITIAL.
* SORT lt_bseg BY bukrs belnr gjahr.
* LOOP AT lt_bseg ASSIGNING <lwa_bseg>.
* CONCATENATE <lwa_bseg>-bukrs <lwa_bseg>-belnr <lwa_bseg>-gjahr INTO
<lwa_bseg>-doc.
* ENDLOOP.
* lt_bseg1 = lt_bseg.
* DELETE lt_bseg1 WHERE rassc EQ s_bp.
* ENDIF.
** Reverse the existing Entry and post new document with target GL
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_04_REV_DOC
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LWA_DOC
*& <-- LV_SUBRC
*&---------------------------------------------------------------------*
*FORM f_04_rev_doc USING lwa_doc TYPE ts_doc
FORM f_04_rev_doc USING lwa_bseg TYPE ts_bseg
CHANGING xv_subrc TYPE sy-subrc
xv_err_msg TYPE string.
CALL FUNCTION 'TB_FI_DOCUMENT_REVERSE'
EXPORTING
companycode = lwa_bseg-bukrs
document = lwa_bseg-belnr
* DOCUMENT2 =
year = lwa_bseg-gjahr
* OBJ_KEY =
* DATE_OF_REVERSAL =
* PERIOD_OF_REVERSAL =
reason_for_reversal = '02'
* FLOW_IN =
* SIMULATION = ' '
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = syst-msgid
msgnr = syst-msgno
msgv1 = syst-msgv1
msgv2 = syst-msgv2
msgv3 = syst-msgv3
msgv4 = syst-msgv4
IMPORTING
message_text_output = xv_err_msg.
* xv_subrc = 4.
ELSE.
xv_subrc = 0.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_05_POST_DOC
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LT_BSEG
*& --> LWA_DOC
*&---------------------------------------------------------------------*
FORM f_05_post_doc USING it_doc TYPE tt_doc
iwa_bseg TYPE ts_bseg
it_source TYPE tt_source.
* it_bseg TYPE tt_bseg
* xwa_doc TYPE ts_doc
* xwa_doc TYPE ts_bseg
* lwa_source TYPE ts_data.
* lwa_source TYPE zcon_ic_repost_f.
IF lv_count IS INITIAL.
lwa_doc_header-bus_act = 'RFBU'.
lwa_doc_header-obj_type = 'BKPFF'.
lwa_doc_header-username = sy-uname.
lwa_doc_header-header_txt = lwa_doc-bktxt.
lwa_doc_header-comp_code = lwa_doc-bukrs.
lwa_doc_header-doc_date = sy-datum.
lwa_doc_header-pstng_date = sy-datum.
* lwa_doc_header-doc_type = 'SA'.
lwa_doc_header-doc_type = lwa_doc-blart.
ENDIF.
ADD 1 TO lv_count.
CASE lwa_doc-koart.
WHEN 'S'.
lwa_gl_item-itemno_acc = lv_count.
* Replace GL Account
IF lwa_doc-hkont = iwa_bseg-racct.
READ TABLE it_source INTO lwa_source WITH KEY partner = iwa_bseg-rassc
hkont = iwa_bseg-racct.
IF sy-subrc EQ 0.
lwa_gl_item-gl_account = lwa_source-target_gl.
ENDIF.
ELSE.
lwa_gl_item-gl_account = lwa_doc-hkont.
ENDIF.
lwa_gl_item-item_text = lwa_doc-sgtxt.
lwa_gl_item-ref_key_1 = lwa_doc-xref1.
lwa_gl_item-ref_key_2 = lwa_doc-xref2.
lwa_gl_item-ref_key_3 = lwa_doc-xref3.
lwa_gl_item-alloc_nmbr = lwa_doc-zuonr.
lwa_gl_item-costcenter = lwa_doc-kostl.
lwa_gl_item-profit_ctr = lwa_doc-prctr.
APPEND lwa_gl_item TO lt_gl.
* Currency Structure
lwa_curr-itemno_acc = lv_count.
lwa_curr-currency = lwa_doc-waers.
IF lwa_doc-shkzg = 'H'.
lwa_curr-amt_doccur = lwa_doc-dmbtr * -1.
ELSE.
lwa_curr-amt_doccur = lwa_doc-dmbtr.
ENDIF.
APPEND lwa_curr TO lt_curr.
CLEAR:lwa_gl_item,lwa_curr.
WHEN 'K'.
lwa_ap_item-itemno_acc = lv_count.
lwa_ap_item-vendor_no = lwa_doc-lifnr.
lwa_ap_item-ref_key_1 = lwa_doc-xref1.
lwa_ap_item-ref_key_2 = lwa_doc-xref2.
lwa_ap_item-ref_key_3 = lwa_doc-xref3.
lwa_ap_item-alloc_nmbr = lwa_doc-zuonr.
lwa_ap_item-item_text = lwa_doc-sgtxt.
APPEND lwa_ap_item TO lt_ap.
* Currency Structure
lwa_curr-itemno_acc = lv_count.
lwa_curr-currency = lwa_doc-waers.
IF lwa_doc-shkzg = 'H'.
lwa_curr-amt_doccur = lwa_doc-dmbtr * -1.
ELSE.
lwa_curr-amt_doccur = lwa_doc-dmbtr.
ENDIF.
APPEND lwa_curr TO lt_curr.
CLEAR:lwa_ap_item,lwa_curr.
WHEN 'D'.
lwa_ar_item-itemno_acc = lv_count.
lwa_ar_item-customer = lwa_doc-kunnr.
lwa_ar_item-ref_key_1 = lwa_doc-xref1.
lwa_ar_item-ref_key_2 = lwa_doc-xref2.
lwa_ar_item-ref_key_3 = lwa_doc-xref3.
lwa_ar_item-alloc_nmbr = lwa_doc-zuonr.
lwa_ar_item-item_text = lwa_doc-sgtxt.
APPEND lwa_ar_item TO lt_ar.
* Currency Structure
lwa_curr-itemno_acc = lv_count.
lwa_curr-currency = lwa_doc-waers.
IF lwa_doc-shkzg = 'H'.
lwa_curr-amt_doccur = lwa_doc-dmbtr * -1.
ELSE.
lwa_curr-amt_doccur = lwa_doc-dmbtr.
ENDIF.
APPEND lwa_curr TO lt_curr.
CLEAR:lwa_ar_item,lwa_curr.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
lwa_final-source = lwa_source-hkont.
lwa_final-target = lwa_source-target_gl.
lwa_final-belnr = iwa_bseg-belnr.
lwa_final-bukrs = iwa_bseg-bukrs.
lwa_final-gjahr = iwa_bseg-gjahr.
** Success Message.
lwa_final-belnr_1 = lv_key+0(10).
lwa_final-bukrs_1 = lv_key+10(4).
lwa_final-gjahr_1 = lv_key+14(4).
lwa_final-message_1 = 'Document Posted Succesfully'.
ENDIF.
* ENDLOOP.
ENDIF.
ELSE.
lwa_final-reversed = abap_false.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_DISPLAY_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GT_FINAL
*&---------------------------------------------------------------------*
FORM f_display_data USING it_final TYPE tt_final.
DATA: lwa_fcat TYPE slis_fieldcat_alv,
lt_fcat TYPE slis_t_fieldcat_alv.
*PERFORM f_fill_field USING '1' '1' TEXT-011 TEXT-000 TEXT-012 CHANGING lt_fcat.
"SOURCE
* PERFORM f_fill_field USING '1' '2' TEXT-011 TEXT-001 TEXT-013 CHANGING lt_fcat.
"BELNR
* PERFORM f_fill_field USING '1' '3' TEXT-011 TEXT-002 TEXT-014 CHANGING lt_fcat.
"BUKRS
* PERFORM f_fill_field USING '1' '4' TEXT-011 TEXT-003 TEXT-015 CHANGING lt_fcat.
"GJAHR
* PERFORM f_fill_field USING '1' '5' TEXT-011 TEXT-004 TEXT-016 CHANGING lt_fcat.
"REVERSED
* PERFORM f_fill_field USING '1' '6' TEXT-011 TEXT-005 TEXT-017 CHANGING lt_fcat.
"MESSAGE
* PERFORM f_fill_field USING '1' '7' TEXT-011 TEXT-006 TEXT-018 CHANGING lt_fcat.
"TARGET
* PERFORM f_fill_field USING '1' '8' TEXT-011 TEXT-007 TEXT-013 CHANGING lt_fcat.
"BELNR_1
* PERFORM f_fill_field USING '1' '9' TEXT-011 TEXT-008 TEXT-014 CHANGING lt_fcat.
"BUKRS_1
* PERFORM f_fill_field USING '1' '10' TEXT-011 TEXT-009 TEXT-015 CHANGING lt_fcat.
"GJAHR_1
* PERFORM f_fill_field USING '1' '11' TEXT-011 TEXT-010 TEXT-017 CHANGING lt_fcat.
"MESSAGE_1
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_FILL_FIELD
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> TEXT_000
*& --> P_1
*& --> TEXT_001
*& --> TEXT_002
*& --> CALL
*& --> FUNCTION
*& --> P_
*& --> T_OUTTAB
*& --> =
*&---------------------------------------------------------------------*
FORM f_fill_field USING iv_row TYPE sy-curow
iv_pos TYPE sy-cucol
iv_tab TYPE slis_tabname
iv_fieldname TYPE slis_fieldname
iv_text TYPE dd03p-scrtext_m
CHANGING xt_fcat TYPE slis_t_fieldcat_alv.
lwa_fcat-row_pos = iv_row.
lwa_fcat-fieldname = iv_fieldname.
lwa_fcat-col_pos = iv_pos.
lwa_fcat-tabname = iv_tab.
lwa_fcat-seltext_l = iv_text.
APPEND lwa_fcat TO xt_fcat.
ENDFORM.