(完整版)adobeform学习小结
目录
资产负债表 (3)
3.图片和文本 (25)
4.开发过程 (29)
BC480_EN_COL62.FV-VART-A4.pdf pdf_based print forms
安装文档
1.ZADOBE_DEMO1
2.资产负债表
3.一些图片,文本的设置.
*&---------------------------------------------------------------------*
*& Report ZADOBE_DEMO1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
zadobe demo1
REPORT zcall_adobe_form.
DATA: fm_name TYPE rs38l_fnam, " CHAR 30 0 Name of Function Module
fp_docparams TYPE sfpdocparams, " Structure SFPDOCPARAMS Short Descr iption Form Parameters for Form Processing
fp_outputparams TYPE sfpoutputparams. " Structure SFPOUTPUTPARAMS Short Description Form Processing Output Parameter
PARAMETERS:
p_vbeln TYPE vbeln_va,
p_show as CHECKBOX DEFAULT 'X'.
START-OF-SELECTION.
* Sets the output parameters and opens the spool job
CALL FUNCTION 'FP_JOB_OPEN' "& Form Processing: Ca
ll Form
CHANGING
ie_outputparams = fp_outputparams
EXCEPTIONS
cancel = 1
usage_error = 2
system_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
*
ENDIF.
*&---- Get the name of the generated function module
CALL FUNCTION 'FP_FUNCTION_MODULE_NAME' "& Form Processing Generation
EXPORTING
i_name = 'ZADOBE_DEMO2'
IMPORTING
e_funcname = fm_name.
IF sy-subrc <> 0.
*
ENDIF.
*-- Fetch the Data and store it in the Internal Table
*SELECT * FROM mari INTO TABLE it_mari UP TO 15 ROWS.
* Language and country setting (here US as an example)
fp_docparams-langu = 'E'.
fp_docparams-country = 'US'.
*&--- Call the generated function module
CALL FUNCTION fm_name
EXPORTING
/1BCDWB/DOCPARAMS = fp_docparams
IV_VBELN = p_vbeln
IV_FLAG = p_show
IV_LOGO_NAME = 'ZHUAYI'
* IMPORTING
* /1BCDWB/FORMOUTPUT =
EXCEPTIONS
USAGE_ERROR = 1
SYSTEM_ERROR = 2
INTERNAL_ERROR = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*&---- Close the spool job
CALL FUNCTION 'FP_JOB_CLOSE'
* IMPORTING
* E_RESULT =
EXCEPTIONS
usage_error = 1
system_error = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
*
ENDIF.
资产负债表*&---------------------------------------------------------------------*
*& Report RFIDCN_BSAIS Financial Statement (China)
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zrfidcn_bsais_ywy1 MESSAGE-ID idcn.
INCLUDE rfidcn_bsais_top.
INCLUDE bilai00_1.
INCLUDE rfidcn_bsais_sel.
INCLUDE rfidcn_bsais_e01.
*INCLUDE rfidcnsau_fsc_f01."Notes 1672660
INCLUDE rfidcn_bsais_fsc_f01."Notes 1672660
INCLUDE rfidcnsau_fsc_f02. "1641277 INCLUDE rfidcnsau_fsc_lcl. "1641277 *怎样连续打印销售单
START-OF-SELECTION.
PERFORM fsc_start_job USING o_direct o_prndev.
* DO 2 TIMES.
* CASE sy-index.
** Balance Sheet
* WHEN 1.
* g_btyp = gc_balance_sheet.
* ASSIGN gs_formhdr_b TO
* ASSIGN gt_formlines_b TO
** Income Statement
* WHEN 2.
g_btyp = gc_income_statement.
ASSIGN gs_formhdr_i TO
ASSIGN gt_formlines_i TO
* ENDCASE.
CHECK p_btyp EQ g_btyp OR p_btyp IS INITIAL.
PERFORM loc_bila_par_prepare USING g_btyp.
* submit RFBILA00
PERFORM loc_submit_bila CHANGING gt_fscbilaintf
IF lcl_bsais=>contain_fareas( versn ) IS NOT INITIAL. "1641277 * submit local procedures to retrieve balances for functional area no des
PERFORM loc_get_balances USING versn g_btyp "1641277
CHANGING gt_fscbilaintf "1641277
PERFORM fsc_form_header_prepare USING gs_fscdef
CHANGING
PERFORM loc_form_header_prepare CHANGING
* Prepare interface lines
PERFORM fsc_form_assembly USING gs_fscdef gt_fscbilaintf bilaskal
CHANGING
CASE g_btyp.
WHEN gc_balance_sheet.
DELETE
WHEN gc_income_statement.
DELETE
ENDCASE.
* Call Adobe
PERFORM fsc_print USING o_direct g_form_name
* ENDDO.
PERFORM fsc_close_job USING o_direct.
* Display in ALV
IF p_btyp IS INITIAL.
g_btyp = gc_balance_sheet.
ENDIF.
* Button NEXT switches between BS and IS ALV
* DO.
* CASE g_btyp.
* WHEN gc_balance_sheet.
* ASSIGN gs_formhdr_b TO
* ASSIGN gt_formlines_b TO
* Income Statement
* WHEN gc_income_statement.
ASSIGN gs_formhdr_i TO
ASSIGN gt_formlines_i TO
* ENDCASE.
PERFORM loc_top_document_prepare USING
CHANGING go_top_document.
PERFORM fsc_alv USING o_direct bilaskal
gt_catalog g_ucomm g_btyp go_top_document.
IF g_ucomm NE 'NEXT'.
EXIT.
ENDIF.
CHECK p_btyp IS INITIAL.
IF g_btyp = gc_balance_sheet.
g_btyp = gc_income_statement.
ELSE.
g_btyp = gc_balance_sheet.
ENDIF.
* ENDDO.
*&---------------------------------------------------------------------*
*& Form loc_BILA_PAR_PREPARE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM loc_bila_par_prepare USING p_btyp TYPE idcn_bilatyp.
REFRESH: b_monate, v_monate.
CASE p_btyp.
* WHEN ' ' OR gc_balance_sheet."Notes 1672660
WHEN gc_balance_sheet."Notes 1672660
b_monate-sign = 'I'.
b_monate-option = 'BT'.
b_monate-low = '01'.
b_monate-high = p_monate.
APPEND b_monate.
bilvjahr = bilbjahr - 1.
v_monate-sign = 'I'.
v_monate-option = 'BT'.
v_monate-low = '01'.
v_monate-high = '16'.
APPEND v_monate.
* bilabtyp = '1'."Notes 1672660
IF p_biltyp = 'X'."Notes 1672660
bilabtyp = '3'."Notes 1672660
ELSE."Notes 1672660
bilabtyp = '1'."Notes 1672660
ENDIF."Notes 1672660
WHEN gc_income_statement.
b_monate-sign = 'I'.
b_monate-option = 'BT'.
* b_monate-low = '01'."Notes 1672660
IF p_biltyp = 'X'."Notes 1672660
b_monate-low = p_monate."Notes 1672660
ELSE."Notes 1672660
b_monate-low = '01'."Notes 1672660
ENDIF."Notes 1672660
b_monate-high = p_monate.
APPEND b_monate.
* bilvjahr = bilbjahr - 1."Notes 1672660
IF p_biltyp = 'X'."Notes 1672660
bilvjahr = bilbjahr."Notes 1672660
ELSE."Notes 1672660
bilvjahr = bilbjahr - 1."Notes 1672660
ENDIF."Notes 1672660
v_monate-sign = 'I'.
v_monate-option = 'BT'.
v_monate-low = '01'."Notes 1672660
v_monate-high = p_monate.
APPEND v_monate.
* bilabtyp = '1'."Notes 1672660
IF p_biltyp = 'X'."Notes 1672660
bilabtyp = '3'."Notes 1672660
ELSE."Notes 1672660
bilabtyp = '1'."Notes 1672660
ENDIF."Notes 1672660
ENDCASE.
bilalist = 'X'.
bilatree = ''.
bilagrid = ''.
ENDFORM. " loc_BILA_PAR_PREPARE
*&---------------------------------------------------------------------*
*& Form loc_FORM_HEADER_PREPARE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM loc_form_header_prepare CHANGING
ps_formhdr TYPE idcn_formhdr.
CONSTANTS:
lc_separator(1) TYPE c VALUE ','.
DATA:
l_poper LIKE t009b-poper,
l_periv LIKE t001-periv,
l_ex_rate TYPE ukurs_d,
l_ex_rate_s(15) TYPE c,
l_cc_currency TYPE waers,
ls_x001 LIKE x001,
ls_t001 LIKE t001,
l_bilaskal LIKE bilaskal.
SELECT SINGLE * FROM t001 INTO ls_t001 "#EC WARN OK
WHERE bukrs EQ sd_bukrs-low.
IF sy-subrc NE 0.
MESSAGE i001 WITH sd_bukrs-low.
LEAVE PROGRAM.
ENDIF.
*------------------------------------------------------------------* FSC local header data
*------------------------------------------------------------------* Year, Month, Last Day in the Month
l_periv = ls_t001-periv.
ps_formhdr-byear = bilbjahr.
ps_formhdr-bmonth = p_monate.
IF ps_formhdr-bmonth GT 12. "1641277 ps_formhdr-bmonth = 12. "1641277 ENDIF. "1641277
IF sy-subrc EQ 0.
l_poper = p_monate.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = bilbjahr
i_periv = l_periv
i_poper = l_poper
IMPORTING
e_date = g_lastday
EXCEPTIONS
input_false = 1
t009_notfound = 2
t009b_notfound = 3
OTHERS = 4.
IF sy-subrc = 0.
ps_formhdr-bday = g_lastday+6(2).
ELSE.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
LEAVE PROGRAM.
ENDIF.
ENDIF.
* Typ (BS, IS)
ps_formhdr-bilatype = g_btyp.
* Header period strings for Amount and Comparised Amount WRITE g_lastday TO ps_formhdr-bperiod_d.
CONCATENATE text-001 ps_formhdr-bperiod_d
INTO ps_formhdr-bperiod_d
SEPARATED BY space.
CASE g_btyp.
WHEN gc_balance_sheet.
ps_formhdr-title = text-003.
ps_formhdr-btxtcol = text-004.
ps_formhdr-vtxtcol = text-005.
WHEN gc_income_statement.
ps_formhdr-title = text-006.
ps_formhdr-btxtcol = text-007.
IF p_biltyp = 'X'."Notes 1672660
ps_formhdr-vtxtcol = text-025."Notes 1672660
ELSE."Notes 1672660
ps_formhdr-vtxtcol = text-008.
ENDIF."Notes 1672660
ENDCASE.
* CONCATENATE ps_formhdr-title lc_separator
* INTO ps_formhdr-title.
* CONCATENATE ps_formhdr-title
* ps_formhdr-bperiod_d
* INTO ps_formhdr-title SEPARATED BY space.
* Currency
ps_formhdr-currency = ls_t001-waers.
IF sd_curtp IS INITIAL OR sd_curtp = '10'.
l_cc_currency = ls_t001-waers.
ELSE.
CLEAR: ls_x001.
CALL FUNCTION 'FI_CURRENCY_INFORMATION'
EXPORTING
i_bukrs = ls_t001-bukrs
IMPORTING
e_x001 = ls_x001
EXCEPTIONS
currency_2_not_defined = 1
currency_3_not_defined = 2
OTHERS = 3.
IF sd_curtp = ls_x001-curt2.
l_cc_currency = ls_x001-hwae2.
ENDIF.
IF sd_curtp = ls_x001-curt3.
l_cc_currency = ls_x001-hwae3.
ENDIF.
ENDIF.
ps_formhdr-currency = l_cc_currency.
IF bilawaer IS NOT INITIAL AND bilawaer NE l_cc_currency. ps_formhdr-currency = bilawaer.
CALL FUNCTION 'READ_EXCHANGE_RATE'
EXPORTING
date = bilastid
foreign_currency = bilawaer
local_currency = l_cc_currency
type_of_rate = kurst
IMPORTING
exchange_rate = l_ex_rate
EXCEPTIONS
no_rate_found = 1
no_factors_found = 2
no_spread_found = 3
derived_2_times = 4
overflow = 5
zero_rate = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CONCATENATE ps_formhdr-title lc_separator INTO ps_formhdr-title.
CONCATENATE ps_formhdr-title text-002 bilawaer
INTO ps_formhdr-title SEPARATED BY space.
CONCATENATE ps_formhdr-title lc_separator INTO ps_formhdr-title.
WRITE l_ex_rate TO l_ex_rate_s DECIMALS 2 LEFT-JUSTIFIED.
CONCATENATE ps_formhdr-title text-009 l_ex_rate_s
INTO ps_formhdr-title SEPARATED BY space.
ENDIF.
* Scaling
ps_formhdr-bilaskal = bilaskal.
IF ps_formhdr-bilaskal(1) NE '0'.
l_bilaskal = ps_formhdr-bilaskal.
l_bilaskal+2(1) = '0'.
SELECT SINGLE ddtext FROM dd07t "#EC WARN OK
INTO ps_formhdr-bilaskaltxt
WHERE domname EQ 'BILA_SKAL' AND
ddlanguage EQ sy-langu AND
as4local EQ 'A' AND
as4vers EQ '0000' AND
domvalue_l EQ l_bilaskal.
IF sy-subrc EQ 0.
CONCATENATE ps_formhdr-bilaskaltxt ps_formhdr-currency INTO ps_formhdr-bilaskaltxt SEPARATED BY space.
ENDIF.
ELSE.
ps_formhdr-bilaskaltxt = ps_formhdr-currency.
ENDIF.
* Business area, Profit Center restrictions
CLEAR ps_formhdr-gsber.
IF lines( sd_gsb_s ) EQ 0.
ELSEIF lines( sd_gsb_s ) EQ 1 AND
sd_gsb_s-low IS NOT INITIAL AND
sd_gsb_s-high IS INITIAL AND
sd_gsb_s-option EQ 'EQ' AND
sd_gsb_s-sign EQ 'I'.
ps_formhdr-gsber = sd_gsb_s-low.
ELSE.
ps_formhdr-gsber = '#'.
ENDIF.
CLEAR ps_formhdr-prctr.
IF lines( sd_prc ) EQ 0.
ELSEIF lines( sd_prc ) EQ 1 AND
sd_prc-low IS NOT INITIAL AND
sd_prc-high IS INITIAL AND
sd_prc-option EQ 'EQ' AND
sd_prc-sign EQ 'I'.
ps_formhdr-prctr = sd_prc-low.
ELSE.
ps_formhdr-prctr = '#'.
ENDIF.
* System data
ps_formhdr-cdate = sy-datum.
ps_formhdr-ctime = sy-uzeit.
ps_formhdr-cuser = sy-uname.
ENDFORM. " loc_FORM_HEADER_PREPARE
*&---------------------------------------------------------------------*
*& Form CHECK_BTYP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------
--*
FORM check_btyp .
IF p_btyp NE gc_balance_sheet AND
p_btyp NE gc_income_statement AND
p_btyp NE space.
MESSAGE e260.
ENDIF.
ENDFORM. " CHECK_BTYP
*&---------------------------------------------------------------------*
*& Form LOC_SUBMIT_BILA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM loc_submit_bila CHANGING
pt_fscbilaintf TYPE idcn_t_fscbilaintf
ps_formhdr TYPE idcn_formhdr.
* RFBILA00 returns calculated data back in memory if
* -activated SWITCH FILOCCN_SFWS_SC_01 and
* -enhancement implementation IDCN_BILA is activ
* for enhancement spot FI_BILA_PRINT
TYPE-POOLS: rsds.
DATA: l_repid TYPE sy-repid VALUE 'RFBILA00',
trange TYPE rsds_trange,
trange_line LIKE LINE OF trange,
trange_frange_t_line LIKE LINE OF trange_line-frange_t,
trange_frange_t_selopt_t_line LIKE LINE OF trange_frange_t_li ne-selopt_t,
texpr TYPE rsds_texpr.
CALL FUNCTION 'RS_REFRESH_FROM_DYNAMICAL_SEL'
EXPORTING
curr_report = l_repid
mode_write_or_move = 'M'
IMPORTING
p_trange = trange
EXCEPTIONS
not_found = 1
wrong_type = 2
OTHERS = 3.
* IF sy-subrc EQ 0 AND sd_prc[] IS NOT INITIAL.
IF sd_prc[] IS NOT INITIAL.
trange_line-tablename = 'FAGLFREESEL'.
trange_frange_t_line-fieldname = 'PRCTR'.
LOOP AT sd_prc.
trange_frange_t_selopt_t_line-sign = sd_prc-sign.
trange_frange_t_selopt_t_line-option = sd_prc-option.
trange_frange_t_selopt_t_line-low = sd_prc-low.
trange_frange_t_selopt_t_line-high = sd_prc-high.
APPEND trange_frange_t_selopt_t_line TO trange_frange_t_line-se lopt_t.
ENDLOOP.
APPEND trange_frange_t_line TO trange_line-frange_t.
APPEND trange_line TO trange.
ELSE.
* CLEAR sd_prc[].
CLEAR trange_frange_t_line-selopt_t[].
ENDIF.
CALL FUNCTION 'FREE_SELECTIONS_RANGE_2_EX'
EXPORTING
field_ranges = trange
IMPORTING
expressions = texpr.
SUBMIT rfbila00 "#EC SUB_P AR
WITH bilalist EQ bilalist "#EC SUB_SEL OP
WITH bilatree EQ bilatree
WITH bilagrid EQ bilagrid
WITH x_adobe EQ 'X'
WITH sd_bukrs IN sd_bukrs
WITH sd_curtp EQ sd_curtp
WITH sd_saknr IN sd_saknr
WITH sd_rldnr IN sd_rldnr
WITH sd_gsb_s IN sd_gsb_s
WITH bilavers EQ gs_fscdef-versn
WITH bilbjahr EQ bilbjahr
WITH b-monate IN b_monate
WITH bilvjahr EQ bilvjahr
WITH v-monate IN v_monate
WITH bilabtyp EQ bilabtyp
WITH bilanull EQ 'X'
WITH repwaers EQ bilawaer
WITH stichtag EQ bilastid
WITH kurs_typ EQ kurst
WITH FREE SELECTIONS texpr
AND RETURN.
PERFORM fsc_convert_structures CHANGING pt_fscbilaintf ps_formhdr.
ENDFORM. " LOC_SUBMIT_BILA
*&---------------------------------------------------------------------*
*& Form CHECK_CURTP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_curtp .
DATA: x001 TYPE x001.
CHECK sd_curtp IS NOT INITIAL.
CALL FUNCTION 'FI_CURRENCY_INFORMATION'
EXPORTING
i_bukrs = sd_bukrs-low
IMPORTING
e_x001 = x001.
IF x001-curt2 <> sd_curtp AND x001-curt3 <> sd_curtp.
MESSAGE e822(fr) WITH sd_curtp sd_bukrs-low.
ENDIF.
ENDFORM. " CHECK_CURTP
*&---------------------------------------------------------------------*
*& Form CHECK_LANGU
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_langu .
DATA: ls_idcn_fsclinest TYPE idcn_fsclinest. "#EC NEED ED
CHECK versn IS NOT INITIAL AND
fsckey IS NOT INITIAL.
SELECT * FROM idcn_fsclinest
INTO ls_idcn_fsclinest
UP TO 1 ROWS
WHERE versn EQ versn
AND fsckey EQ fsckey
AND langu EQ langu.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e261(idcnsau) WITH fsckey versn langu.
ENDIF.
ENDFORM. " CHECK_LANGU
*&---------------------------------------------------------------------*
*& Form SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_status .
DATA: lt_exclude TYPE TABLE OF sy-ucomm WITH HEADER LINE.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = 'S1000'
p_program = 'RFIDCN_BSAIS'
TABLES
p_exclude = lt_exclude.
ENDFORM. " SET_STATUS
*&---------------------------------------------------------------------*
*& Form CHECK_PRCTR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_prctr.
DATA: l_pcrch LIKE tka00-pcrch,
l_kokrs LIKE tka02-kokrs,
l_scenario LIKE fagl_ledger_scen-scenario,
lx_fin_gsber(1) TYPE c,
lx_fin_pca(1) TYPE c,
l_fagl_split_field TYPE fagl_split_field,
l_splitmethd LIKE fagl_activec-splitmethd.
CHECK sd_prc[] IS NOT INITIAL.
IF sd_prc[] IS NOT INITIAL.
* 2. Profit center & New G/L active
IF g_glflex_active IS INITIAL.
MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* 5. Profit center & Old G/L inactive
IF sd_prc[] IS NOT INITIAL.
CLEAR l_kokrs.
SELECT kokrs FROM tka02 INTO l_kokrs "#EC NEED ED
WHERE bukrs IN sd_bukrs AND
gsber IN sd_gsb_s.
ENDSELECT.
IF sy-subrc EQ 0 AND l_kokrs IS NOT INITIAL.
SELECT pcrch FROM tka00 INTO l_pcrch "#EC NEED ED
WHERE kokrs EQ l_kokrs AND
gjahr LE bilbjahr.
ENDSELECT.
IF sy-subrc EQ 0 AND l_pcrch IS NOT INITIAL.
MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
* 3. Scenarios for Leading 0L Ledger
IF sd_prc[] IS NOT INITIAL OR
sd_gsb_s[] IS NOT INITIAL.
CLEAR: lx_fin_gsber, lx_fin_pca.
SELECT scenario FROM fagl_ledger_scen INTO l_scenario
WHERE rldnr IN sd_rldnr.
IF l_scenario EQ 'FIN_GSBER'.
lx_fin_gsber = 'X'.
ENDIF.
IF l_scenario EQ 'FIN_PCA'.
lx_fin_pca = 'X'.
ENDIF.
ENDSELECT.
IF sd_gsb_s[] IS NOT INITIAL AND lx_fin_gsber IS INITIAL OR
sd_prc[] IS NOT INITIAL AND lx_fin_pca IS INITIAL.
MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* 4. Document splitting
IF sd_prc[] IS NOT INITIAL OR
sd_gsb_s[] IS NOT INITIAL.
SELECT splitmethd FROM fagl_activec
INTO l_splitmethd
UP TO 1 ROWS
WHERE active EQ 'X'.
ENDSELECT.
IF sy-subrc NE 0 OR
l_splitmethd IS INITIAL.
MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* 5. Check document splitting characteristic for GL Accounting PERFORM check_doc_split_charac USING 'PRCTR' 'X' 'PPRCTR' 'X'.
PERFORM check_doc_split_charac USING 'SEGMENT' 'X' 'PSEGMENT' 'X'.
* 5. Document splitting characteristics
* IF sd_prc[] IS NOT INITIAL OR
* sd_gsb_s[] IS NOT INITIAL.
* SELECT SINGLE * FROM fagl_split_field INTO l_fagl_split_field
* WHERE field EQ 'PRCTR'.
* IF sy-subrc NE 0 OR
** l_fagl_split_field-prtfield IS INITIAL OR
** l_fagl_split_field-b_balance IS INITIAL OR
** l_fagl_split_field-oim_balance IS INITIAL OR
* l_fagl_split_field-b_mandatory IS INITIAL.
* MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
* EXIT.
* ENDIF.
* SELECT SINGLE * FROM fagl_split_field INTO l_fagl_split_field
* WHERE field EQ 'SEGMENT'.
* IF sy-subrc NE 0 OR
** l_fagl_split_field-prtfield IS INITIAL OR
** l_fagl_split_field-b_balance IS INITIAL OR
** l_fagl_split_field-oim_balance IS INITIAL OR
* l_fagl_split_field-b_mandatory IS INITIAL.
* MESSAGE i264(idcnsau) DISPLAY LIKE 'W'.
* EXIT.
* ENDIF.
* ENDIF.
ENDFORM. " CHECK_PRCTR
*&---------------------------------------------------------------------*
*& Form CHECK_GSB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_gsb .
DATA: l_pcrch LIKE tka00-pcrch,
l_kokrs LIKE tka02-kokrs,
l_scenario LIKE fagl_ledger_scen-scenario,
lx_fin_gsber(1) TYPE c,
lx_fin_pca(1) TYPE c,
l_fagl_split_field TYPE fagl_split_field,
l_splitmethd LIKE fagl_activec-splitmethd.
CHECK sd_gsb_s[] IS NOT INITIAL.
* 1. Business Area & active per CoCode
IF sd_gsb_s[] IS NOT INITIAL AND
gs_t001-xgsbe IS INITIAL.
MESSAGE i265(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
IF sd_prc[] IS NOT INITIAL.
* 2. Profit center & New G/L active
IF g_glflex_active IS INITIAL.
MESSAGE i265(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* 5. Profit center & Old G/L inactive
IF sd_prc[] IS NOT INITIAL.
CLEAR l_kokrs.
SELECT kokrs FROM tka02 INTO l_kokrs "#EC NEED ED
WHERE bukrs IN sd_bukrs AND
gsber IN sd_gsb_s.
ENDSELECT.
IF sy-subrc EQ 0 AND l_kokrs IS NOT INITIAL.
SELECT pcrch FROM tka00 INTO l_pcrch "#EC NEED ED
WHERE kokrs EQ l_kokrs AND
gjahr LE bilbjahr.
ENDSELECT.
IF sy-subrc EQ 0 AND l_pcrch IS NOT INITIAL.
MESSAGE i265(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
ENDIF.
* 3. Scenarios for Leading 0L Ledger
IF sd_prc[] IS NOT INITIAL OR
sd_gsb_s[] IS NOT INITIAL.
CLEAR: lx_fin_gsber, lx_fin_pca.
SELECT scenario FROM fagl_ledger_scen INTO l_scenario
WHERE rldnr IN sd_rldnr.
IF l_scenario EQ 'FIN_GSBER'.
lx_fin_gsber = 'X'.
ENDIF.
* IF l_scenario EQ 'FIN_PCA'.
* lx_fin_pca = 'X'.
* ENDIF.
ENDSELECT.
IF sd_gsb_s[] IS NOT INITIAL AND lx_fin_gsber IS INITIAL.
* sd_prc[] IS NOT INITIAL AND lx_fin_pca IS INITIAL.
MESSAGE i265(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* 4. Document splitting
IF sd_prc[] IS NOT INITIAL OR
sd_gsb_s[] IS NOT INITIAL.
SELECT splitmethd FROM fagl_activec
INTO l_splitmethd
UP TO 1 ROWS
WHERE active EQ 'X'.
ENDSELECT.
IF sy-subrc NE 0 OR
l_splitmethd IS INITIAL.
MESSAGE i265(idcnsau) DISPLAY LIKE 'W'.
EXIT.
ENDIF.
ENDIF.
* Check document splitting characteristic for GL Accounting PERFORM check_doc_split_charac USING 'GSBER' 'X' 'PARGB' 'X'.
ENDFORM. " CHECK_GSB
*&---------------------------------------------------------------------*
*& Form INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init .
*** Check Switch - EhP6 and EhP5
IF cl_idficn_switch_check=>filoccn_sfws_sc_02( ) EQ abap_false.
* Business function FIN_LOC_CI_13 is not active
MESSAGE s258(idcn).