Академический Документы
Профессиональный Документы
Культура Документы
TABLES: j_1aoifwvl,
t001,
skb1,
lfa1,
kna1,
j_1ainfmet,
j_1ainfsks,
j_1a030if,
bkpf,
bseg,
t030h,
t044a, "#EC NEEDED
j_1ainfw_files.
*----------------------------------------------------------------------
* INITIALIZATION
*----------------------------------------------------------------------
INITIALIZATION.
PERFORM init_alv.
*-----------------------------------------------------------------------
* AT SELECTION-SCREEN
*-----------------------------------------------------------------------
AT SELECTION-SCREEN ON bwmet. "ACC30 >>>
IF mode_one NE 'X'.
IF bwmet = ' '.
MESSAGE e227.
* Please enter a valuation method
ELSE.
SELECT SINGLE * FROM t044a WHERE bwmet = bwmet.
IF sy-subrc NE 0.
MESSAGE e362(fr).
* Valuation method does not exist
ENDIF.
ENDIF.
ENDIF. "ACC30 <<<
AT SELECTION-SCREEN.
IF xt001i-j_1afiact IS INITIAL.
MESSAGE e232 WITH bukrs.
* Inflation adjustment is not acitvated for company code &; see long t
ENDIF.
IF xt001i-j_1aipmng IS INITIAL.
MESSAGE e211 WITH bukrs.
* No general index is defined
ENDIF.
IF date IS INITIAL.
MESSAGE e228.
* Please enter a valuation key date
ENDIF.
ENDIF.
ENDIF.
* Only inflation valuation: Check if input ID was enteres ------------
IF mode_two = 'X'.
x_valuid = valuid_o.
IF x_valuid = space.
ENDIF.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF mode_one IS NOT INITIAL.
g_selo = '1'.
ELSEIF mode_two IS NOT INITIAL.
g_selo = '2'.
ELSE.
g_selo = '0'.
ENDIF.
PERFORM modify_screen.
*----------------------------------------------------------------------
* START-OF-SELECTION.
*---------------------------------------------------------------------
START-OF-SELECTION.
* Processing mode
IF mode_all = 'X'.
mode = '1'. "integrated mode
ELSEIF mode_one = 'X'.
mode = '2'. "only foreign.curr. valuat.
ELSEIF mode_two = 'X'.
mode = '3'. "only inflation valuation
ENDIF.
ENDIF.
* Step 2 **************************************************************
* Read data from file produced by SAPF100
* Then, select document item data into table documents
IF ( mode = '1' AND updpost = 'X' ) OR mode = '3'.
*---------------------------------------------------------------------
* LOOP over selected items
*---------------------------------------------------------------------
LOOP AT documents.
* Refresh internal tables
REFRESH xblntab.
CLEAR error.
CLEAR errorinfo. " Note 536242
i_alvitm-rei_amount = rei_amount.
i_alvitm-waers = t001-waers.
i_alvitm-fwaer = documents-waers.
* ---- Note 536242: start ---- *
i_alvitm-specif_index = xt001i-j_1aipmng.
i_alvitm-start_date = documents-startdate.
* ---- Note 536242: end ---- *
ENDIF.
* posting -------------------------------------------------------------
IF updpost = 'X'. "check if posting is required
IF rei_amount NE 0.
IF first_posting = 'X'. "open transaction
func = 'C'. "only call transaction
CALL FUNCTION 'POSTING_INTERFACE_START'
EXPORTING
i_function = func
i_group = space
i_user = sy-uname.
CLEAR first_posting.
ENDIF.
REFRESH xftpost.
* document header
xftpost-stype = 'K'.
xftpost-count = '1'.
WRITE budat TO datum.
PERFORM set_fields USING 'BKPF-BLDAT' datum.
PERFORM set_fields USING 'BKPF-BUDAT' datum.
PERFORM set_fields USING 'BKPF-BLART' xt001i-j_1afwblat.
* perform set_fields using 'BKPF-MONAT' ...
PERFORM set_fields USING 'BKPF-WAERS' documents-waers.
PERFORM set_fields USING 'BKPF-BUKRS' documents-bukrs.
bseg-linfv = documents-enddate.
UPDATE bseg.
ELSE.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = sy-msgid.
errorinfo+12(3) = sy-msgno.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO errorinfo+18.
i_alvitm-errorinfo = errorinfo.
* ---- Note 536242: end ---- *
x_fimsg-msgid = sy-msgid.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = sy-msgno.
CALL FUNCTION 'FI_MESSAGE_COLLECT'
EXPORTING
i_fimsg = x_fimsg.
* result-postingerror = 'X'.
* result-errorinfo(2) = sy-msgid.
* result-errorinfo+3 = sy-msgno.
* APPEND result.
* exceptions = documents.
* APPEND exceptions.
ENDIF.
ENDIF.
ENDIF.
APPEND i_alvitm.
* -----------------------------------------------------------------
old_bukrs = documents-bukrs.
old_hkont = documents-hkont.
ENDLOOP.
ENDIF.
* Output *************************************************************
* Output of the standard foreign currency revaluation
IF mode = '1' OR mode = '2'.
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = list
EXCEPTIONS
not_found = 1.
IF sy-subrc = 0.
CALL FUNCTION 'DISPLAY_LIST'
EXPORTING
fullscreen = 'X'
TABLES
listobject = list
EXCEPTIONS
empty_list = 1.
IF sy-subrc NE 0.
WRITE: /, text-112.
ENDIF.
ELSE.
WRITE: /, text-112.
ENDIF.
ENDIF.
* Output of postings and results of the inflation program
IF ( mode = '1' AND updpost = 'X' ) OR mode = '3'.
* PERFORM output.
PERFORM output_alv.
ELSEIF mode = '1' AND updpost = ' '.
WRITE / text-t09.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FW_ACCOUNT
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fw_account USING value(i_documents) LIKE documents
value(i_ktopl) LIKE t001-ktopl
CHANGING o_account LIKE bseg-hkont
o_error TYPE c
errorinfo LIKE j_1ainalvitm-errorinfo.
* " Note 536242
* (see also form FI-RWZ in J_1AOI1)
* this account will contain the rt amount in the end
*&---------------------------------------------------------------------*
*& Form REI_ACCOUNT
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM rei_account USING value(i_documents) LIKE documents
value(i_ktopl) LIKE t001-ktopl
CHANGING o_account LIKE bseg-hkont
o_error TYPE c
errorinfo LIKE j_1ainalvitm-errorinfo.
* " Note 536242
SELECT SINGLE * FROM j_1a030if
WHERE ktopl = i_ktopl
AND hkont = i_documents-hkont.
IF sy-subrc NE 0.
x_fimsg-msgid = '8Z'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '254'.
x_fimsg-msgv1 = i_documents-hkont.
CALL FUNCTION 'FI_MESSAGE_COLLECT'
EXPORTING
i_fimsg = x_fimsg.
o_error = 'X'.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '254'.
MESSAGE e254 WITH i_documents-hkont INTO errorinfo+18.
* Account determination (inflation processing) incomplete for account
* ---- Note 536242: end ---- *
ELSE.
o_account = j_1a030if-j_1adrei.
IF o_account IS INITIAL.
* ---- Note 536242: start ---- *
o_error = 'X'.
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '254'.
MESSAGE e254 WITH i_documents-hkont INTO errorinfo+18.
* Account determination (inflation processing) incomplete for account
* ---- Note 536242: end ---- *
ENDIF.
ENDIF.
ENDFORM. " REI_ACCOUNT
*&---------------------------------------------------------------------*
*& Form CALCULATE_REI
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM calculate_rei USING value(i_t001i) TYPE t001i
value(i_skb1i) TYPE skb1i
value(i_documents) LIKE documents
CHANGING o_amount LIKE bseg-dmbtr
o_error TYPE c
errorinfo LIKE j_1ainalvitm-errorinfo.
* " Note 536242
IF sy-subrc NE 0.
CASE sy-subrc.
WHEN '1'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '214'.
x_fimsg-msgv1 = x_tbe.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '214'.
MESSAGE e214 WITH x_tbe INTO errorinfo+18.
* No data maintained for time base variant &
* ---- Note 536242: end ---- *
WHEN '2'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '215'.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '215'.
MESSAGE e215 INTO errorinfo+18.
* Error in finding the exposure dates
* ---- Note 536242: end ---- *
WHEN '3'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '110'.
x_fimsg-msgv1 = sy-msgv1.
x_fimsg-msgv2 = sy-msgv2.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '110'.
MESSAGE e110 WITH sy-msgv1 sy-msgv2 INTO errorinfo+18.
* There is no definition for country & index &
* ---- Note 536242: end ---- *
WHEN '4'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '111'.
x_fimsg-msgv1 = sy-msgv1.
x_fimsg-msgv2 = sy-msgv2.
x_fimsg-msgv3 = sy-msgv3.
x_fimsg-msgv4 = sy-msgv4.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '111'.
MESSAGE e111 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO errorinfo+18.
* No index values exist for & & & or for next and previous dates (&)
* ---- Note 536242: end ---- *
WHEN '5'.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '114'.
x_fimsg-msgv1 = sy-msgv1.
x_fimsg-msgv2 = sy-msgv2.
x_fimsg-msgv3 = sy-msgv3.
x_fimsg-msgv4 = sy-msgv4.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '114'.
MESSAGE e114 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO errorinfo+18.
* No definitive index values for & & & or for next and previous dates
* ---- Note 536242: end ---- *
WHEN OTHERS.
x_fimsg-msgty = 'E'.
x_fimsg-msgno = '140'.
* ---- Note 536242: start ---- *
errorinfo(8) = text-e05.
errorinfo+9(2) = '8Z'.
errorinfo+12(3) = '140'.
MESSAGE e140 INTO errorinfo+18.
* Internal error in inflation calculation routine
* ---- Note 536242: end ---- *
ENDCASE.
x_fimsg-msgid = '8Z'.
CALL FUNCTION 'FI_MESSAGE_COLLECT'
EXPORTING
i_fimsg = x_fimsg.
o_error = 'X'.
ENDIF.
ENDFORM. " CALCULATE_REI
*&---------------------------------------------------------------------*
*& Form SET_FIELDS
*&---------------------------------------------------------------------*
* text *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_fields USING fieldname TYPE any
fieldvalue TYPE any.
*&---------------------------------------------------------------------*
*& Form READ_FILE
*&---------------------------------------------------------------------*
FORM read_file TABLES p_documents STRUCTURE j_1aoifwvl
USING p_valuid TYPE j_1avaluid.
*boi 1786539
CALL FUNCTION 'FILE_VALIDATE_NAME'
EXPORTING
* CLIENT = SY-MANDT
LOGICAL_FILENAME = 'J_1AINFW'
* OPERATING_SYSTEM = SY-OPSYS
* PARAMETER_1 = ' '
* PARAMETER_2 = ' '
* PARAMETER_3 = ' '
* WITH_FILE_EXTENSION = ' '
* USE_BUFFER = ' '
* ELIMINATE_BLANKS = 'X'
* IMPORTING
* VALIDATION_ACTIVE =
* TS_ALIAS =
CHANGING
PHYSICAL_FILENAME = x_file
EXCEPTIONS
LOGICAL_FILENAME_NOT_FOUND = 1
VALIDATION_FAILED = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
*eoi 1786539
p_documents-mandt = bseg-mandt.
p_documents-bukrs = bseg-bukrs.
p_documents-waers = x_file_data-waers.
p_documents-koart = bseg-koart.
p_documents-lifnr = bseg-lifnr.
p_documents-kunnr = bseg-kunnr.
p_documents-hkont = bseg-hkont.
p_documents-belnr = bseg-belnr.
p_documents-gjahr = bseg-gjahr.
p_documents-buzei = bseg-buzei.
p_documents-delta1 =
x_file_data-newbdiff - x_file_data-oldbdiff.
IF bseg-shkzg = 'S'.
p_documents-dmshb = bseg-dmbtr.
ELSE. "shkzg = 'H'.
p_documents-dmshb = - bseg-dmbtr.
p_documents-delta1 = - p_documents-delta1.
ENDIF.
* BSEG-LINFV not yet updated by SAPF100
IF bseg-linfv IS INITIAL.
SELECT SINGLE * FROM bkpf
WHERE bukrs = bseg-bukrs
AND belnr = bseg-belnr
AND gjahr = bseg-gjahr.
p_documents-startdate = bkpf-budat.
ELSE.
p_documents-startdate = bseg-linfv.
ENDIF.
p_documents-enddate = j_1ainfw_files-f100stag.
APPEND p_documents.
ENDLOOP.
ENDFORM. " READ_FILE
*&---------------------------------------------------------------------*
*& Form BUILD_FILE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_X_FILENAME text
*----------------------------------------------------------------------*
FORM build_file_name CHANGING p_x_filename TYPE f100xfil.
DATA: file_one(50) TYPE c,
file_two(10) TYPE c.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = 'J_1AINFW'
IMPORTING
file_name = file_one
EXCEPTIONS
file_not_found = 1.
IF sy-subrc <> 0.
MESSAGE E276 WITH file_one.
ENDIF.
file_two = x_valuid.
file_two+5(1) = '_'.
file_two+6(3) = 'INF'.
*&---------------------------------------------------------------------*
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------*
FORM output_alv.
LOOP AT i_alvhdr.
IF i_alvhdr-koart = 'K'.
SELECT SINGLE * FROM lfa1
WHERE lifnr = i_alvhdr-hkont.
i_alvhdr-name1 = lfa1-name1.
i_alvhdr-ort01 = lfa1-ort01.
ELSE.
SELECT SINGLE * FROM kna1
WHERE kunnr = i_alvhdr-hkont.
i_alvhdr-name1 = kna1-name1.
i_alvhdr-ort01 = kna1-ort01.
ENDIF.
MODIFY i_alvhdr.
ENDLOOP.
IF sy-subrc = 0.
LOOP AT x_fimsg_tab.
MOVE-CORRESPONDING x_fimsg_tab TO i_alvmess.
APPEND i_alvmess.
ENDLOOP.
ENDIF.
g_save = 'A'.
* output list :
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form INIT_ALV
*&---------------------------------------------------------------------*
FORM init_alv.
* ALV values -----------------------------------------------------------
g_tabname_header = 'I_ALVHDR'.
g_tabname_item = 'I_ALVITM'.
g_repid = sy-repid.
g_formname = 'USER_COMMAND'.
g_pf_formname = 'SET_PF_STATUS'.
gc_formname_top_of_page = 'ALV_TOP_OF_PAGE'.
* Fields definition :
PERFORM fieldcat_init USING gt_fieldcat[].
* Event tab
PERFORM eventtab_build USING gt_events[].
*&---------------------------------------------------------------------*
*& Form FIELDCAT_INIT
*&---------------------------------------------------------------------*
FORM fieldcat_init USING i_fieldcat TYPE slis_t_fieldcat_alv.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'HKONT'.
wa_fieldcat-tabname = g_tabname_header.
wa_fieldcat-reptext_ddic = text-h04.
wa_fieldcat-seltext_m = text-h01.
wa_fieldcat-seltext_s = text-h02.
wa_fieldcat-seltext_l = text-h03. " text = Business partner
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'SAKNR'.
wa_fieldcat-tabname = g_tabname_header.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'TXT20'.
wa_fieldcat-tabname = g_tabname_header.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'GSBER'.
wa_fieldcat-tabname = g_tabname_header.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for header
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'HKONT'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'GSBER'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'DMBTR'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'RT_AMOUNT'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'REI_RT_AMOUNT'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'J_1AINDXSP'.
wa_fieldcat-tabname = g_tabname_item.
wa_fieldcat-tech = 'X'. " field not to be displayed
APPEND wa_fieldcat TO i_fieldcat. " for item
*CLEAR WA_FIELDCAT.
* WA_FIELDCAT-ROW_POS = 2.
* WA_FIELDCAT-FIELDNAME = 'ERRORINFO'.
* WA_FIELDCAT-TABNAME = G_TABNAME_ITEM.
* WA_FIELDCAT-SELTEXT_L = TEXT-H14. " type of error (calc. ...)
* WA_FIELDCAT-REPTEXT_DDIC = TEXT-H14.
* WA_FIELDCAT-SELTEXT_M = TEXT-H14.
* WA_FIELDCAT-SELTEXT_S = TEXT-H14.
* APPEND WA_FIELDCAT TO I_FIELDCAT.
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 sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form EVENTTAB_BUILD
*&---------------------------------------------------------------------*
FORM eventtab_build USING i_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_lt_events.
READ TABLE i_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
ls_event-form = gc_formname_top_of_page.
APPEND ls_event TO i_lt_events.
ENDIF.