You are on page 1of 10

*---------------------------------------------------------------------*

*
FORM START
*
*---------------------------------------------------------------------*
* Die Daten sind in SP
<=> VSi-HSP ne space
*
bzw. im Memory <=> VSi-MEM ne space
* Fllt nach der Selektion oder dem Lesen von der COIX die Tabellen *
* KOPF und B.
*
*
*
* Die Gesamtzahl der Perioden wird ermittelt.
*
*
*
* Die Whrungseinstellung fr die Spalten mit EWAERS NE PWAERS wird *
* angeworfen.
*
*
*
* Fr Preise wird das Feld PRINT-EMEEHT gefllt
*
*---------------------------------------------------------------------*
FORM start TABLES b
sp
s0
s1
"H395397
USING g_s_summlev TYPE kcdd_summarization_info.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""$"$\SE:(1) Form START, Start
A
*$*$-Start: (1)--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZFI_CUSTOMER_AGEING.
"active version
*
*break-point.
if sy-tcode = 'ZCAGE' or sy-tcode = 'START_REPORT'.
types: begin of ty_CUSTOMER_AGEING,
hwaer type char05,
hkont type char14,
prctr type char14,
kunnr type char10,
bukrs type char04,
belnr type char10,
gjahr type gjahr,
buzei type char03,
kokrs type char04,
&fs(2) type i,
x_prctr(3) type i,
w001(8) TYPE p decimals 2,
end of ty_CUSTOMER_AGEING.
data: it_CUSTOMER_AGEING type standard table of ty_CUSTOMER_AGEING ,
wa_CUSTOMER_AGEING type ty_CUSTOMER_AGEING.
loop at sp.
move-corresponding sp TO wa_CUSTOMER_AGEING.
append wa_CUSTOMER_AGEING to it_CUSTOMER_AGEING.
endloop.
free memory id 'CRTN'.
export it_CUSTOMER_AGEING[] TO MEMORY ID 'CRTN'.
endif.
ENDENHANCEMENT.

ENHANCEMENT 1 ZFI_VENDOR_AGEING.
"active version
*
IF SY-TCODE = 'ZVAGE' or sy-tcode = 'START_REPORT'.
TYPES: BEGIN OF TY_G_S_S,
HWAER TYPE CHAR05,
HKONT TYPE CHAR14,
PRCTR TYPE CHAR14,
LIFNR TYPE CHAR10,
BUKRS TYPE CHAR04,
BELNR TYPE CHAR10,
GJAHR TYPE BSIK-GJAHR,
BUZEI TYPE CHAR03,
KOKRS TYPE CHAR04,
&FS(2) TYPE I,
X_PRCTR(3) TYPE I,
W001(8) TYPE p decimals 2,
END OF TY_G_S_S.
DATA : IT_SP TYPE STANDARD TABLE OF TY_G_S_S INITIAL SIZE 0,
WA_SP TYPE TY_G_S_S.
LOOP AT SP.
move-corresponding SP TO WA_SP.
APPEND WA_SP TO IT_SP.
ENDLOOP.
free memory id 'RTN'.
EXPORT IT_SP[] TO MEMORY ID 'RTN'.
ENDIF.
ENDENHANCEMENT.
*$*$-End: (1)--------------------------------------------------------------------------------$*$*
TABLES: usr01.
DATA: sta_sp
sta_nulin
sta_gener
DATA: sta_alist
l_subrc
l_exit
l_seig_wa

LIKE sy-tabix,
TYPE i,
LIKE char1.
LIKE rkb1d-alist,
LIKE sy-subrc,
TYPE rkd_flag,
TYPE rkd_s_seig.

* Ende der Datenselektionsdauer


IF rkb1d-rcoix NE rkd_rcoix-ims.
GET RUN TIME FIELD g_runtime.
PERFORM write_runtime USING g_runtime
rkb1d.
ENDIF.
*----------------------------------------------------------------------* Zustandsmeldung 'Bildaufbau'
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = text-026.
*.........................................Dezimalzeichen feststellen
PERFORM get_decim_char CHANGING dcp_char.
*----------------------------------------------------------------------IF scols LT min_linsz.

IF sy-scols GT min_linsz.
*.........................................Basis-Problem unter Windows..
scols = sy-scols.
ELSE.
scols = min_linsz.
PERFORM e17_message USING 'KH' 'S058' space space space space.
ENDIF.
ENDIF.
IF
rkb1d-rart CA '46'
AND rkb1d-selda IS INITIAL.
rkb1d-selda = g_datum.
rkb1d-selti = g_uzeit.
ENDIF.
*..................................... bergabeleiste Dezimal usw initi.
rkb1d-dimpr = rkb1f-dimpr.
*..................................... Initialisierung Datamininig
IF rkb1d-smode EQ rkd_smode-data_mining.
PERFORM start_dm tables b.
ENDIF.
*..................................... Initialisierung Oberflche......
IF rkb1d-smodus CA 'HW'.
CLEAR new_surface.
ENDIF.
*......................................Preview nie mit Sicherungsdaten
IF rkb1d-smodus EQ rkd_smodus-preview.
"preview
CLEAR rkb1d-rcoix.
"preview
ENDIF.
"preview
*..................................... EMMEHT setzen, Whrungsfaktor
PERFORM maintain_unit_waers USING
rkb1d-rcoix
ps_tab[]
CHANGING unitc_tab[]
print[]
g_t_sel
g_t_sf
g_th_ew
g_spcor
frwaers.
PERFORM exim_memory_print_stack USING 'EX'.
IF rkb1x-waersg+5(1) EQ rkd_true.
rkb1d-pwumr = 'X'.
PERFORM fill_time_fields.
ENDIF.
PERFORM sp_decim USING
g_spcor
CHANGING sp[].
*..................................... Batchdaten sichern..............
IF rkb1d-smodus EQ rkd_smodus-batch OR
rkb1d-smodus EQ rkd_smodus-batch_exceptions.
IF rkb1d-savedat EQ 'X'.
PERFORM save_data TABLES b
sp
CHANGING l_exit.
IF l_exit EQ rkd_true. EXIT. ENDIF.
ENDIF.
IF rkb1d-smodus EQ rkd_smodus-batch_exceptions.
ELSE.
CASE rkb1d-lart_batch.
WHEN rkd_lart_batch-drilldown OR
rkd_lart_batch-detail.
IF rkb1d-alist NA rkd_alist-druck.
*..................................... kein Drucken: FREE MEMORY und ab

PERFORM free_memory.
EXIT.
ENDIF.
*..................................... Also Drucken
IF rkb1d-pagew GT 0.
i = rkb1d-pagew.
ELSE.
i = slinsz.
ENDIF.
PERFORM print_on(sapmkcbe) USING
rkb1d-alist
rkb1d-smodus
rkb1d-bertxt
rkb1d-repid
i
CHANGING rkb1d-ok.
WHEN rkd_lart_batch-alv.
*------------------------------------------------ Drucken mit ALV -----*
DESCRIBE TABLE sp LINES sta_sp.
IF sta_sp
GT 0
OR rkb1d-secu(1) EQ rkd_secu0-nachlesen.
IF sta_sp GT 0.
"H586529
PERFORM fill_currency_table_all TABLES sp[]
CHANGING
g_ts_currency
G_TS_CURRENCY_KE.
ENDIF.
"H586529
PERFORM dynamic_currency_conversion CHANGING l_subrc.
IF l_subrc GT 0.
PERFORM build_b TABLES b
sp
CHANGING l_exit.
IF l_exit EQ rkd_true.
EXIT.
ENDIF.
ENDIF.
PERFORM alv TABLES b
sp
s0
S1
"H395397
USING rkd_false.
ELSE.
PERFORM fehlanzeige_0 CHANGING l_exit.
IF l_exit EQ rkd_true. EXIT. ENDIF.
ENDIF.
CALL FUNCTION 'MESSAGE_EXPORT_IMPORT'
"H1531229
EXPORTING
"H1531229
ex_or_if = 'EX'
"H1531229
EXCEPTIONS
"H1531229
OTHERS = 0.
"H1531229
exit.
"ALV printout finished -> EXIT
"H1531229
ENDCASE.
ENDIF.
"46b
ENDIF.
IF rkb1d-form
EQ rkd_adhoc-form AND
rkb1d-subclassf EQ rkd_adhoc-subclassf.
PERFORM check_listelement_exists(sapmkcbe) USING
'H'
CHANGING sta_nulin
sta_gener.
PERFORM check_listelement_exists(sapmkcbe) USING
'F'

CHANGING sta_nulin
sta_gener.
ENDIF.
DESCRIBE TABLE sp LINES anz_sp.
CLEAR rkb1d-ok.
IF

anz_sp GT 0
OR rkb1d-secu(1) EQ rkd_secu0-nachlesen.
IF anz_sp GT 0.
PERFORM fill_currency_table_all TABLES sp[]
CHANGING g_ts_currency
G_TS_CURRENCY_KE."H368144
ENDIF.
TRANSLATE rkb1f-fixko USING ' 1X0'."Umsetzproblem sortieren Kpfe
PERFORM kopf_fuellen.
*..................................... Die Whrungseinstellung fr die
*..Spalten mit EWAERS NE PWAERS wird angeworfen.........................
PERFORM variable_kurse_nachpflegen TABLES b sp
print
USING frwaers
'X'.
PERFORM change_print_end.
PERFORM refresh_b TABLES b.
CLEAR: kopf_loesch.
*......................................RKB1F-ZWAERS setzen..............
PERFORM set_rkb1f_zwaers.
*......................................RKB1D-KEYSP_DL setzen............
PERFORM set_rkb1d_keysp_dl.
*....................................................................
READ TABLE seig WITH KEY lsind = 1.
IF sy-subrc NE 0.
MESSAGE x299(kh) WITH 'START'.
ENDIF.
*----------------------------------- SEIG fr Preview prparieren -----*
* (Hierarchien werden nicht angezeigt)
IF rkb1d-smodus EQ rkd_smodus-preview.
"preview
READ TABLE seig INTO l_seig_wa WITH KEY lsind = 1.
IF l_seig_wa-hflag GT 1.
l_seig_wa-hflag = 1.
MODIFY seig FROM l_seig_wa INDEX sy-tabix.
ENDIF.
ENDIF.
"previe
*----------------------------------- Tabelle B fllen und sortieren ---*
DESCRIBE TABLE b LINES i.
IF i EQ 0.
PERFORM b_fuellen.
IF rkb1d-secu(1) EQ rkd_secu0-nachlesen
AND sp[]
IS INITIAL.
PERFORM fehlanzeige_0 CHANGING l_exit.
IF l_exit EQ rkd_true. EXIT. ENDIF.
ENDIF.
PERFORM sort_b TABLES b.
ELSE.
IF kopf_loesch LT 0.
PERFORM sort_b TABLES b.
ENDIF.
PERFORM lrech_%st TABLES b USING rkd6_c_oper-%s.
PERFORM b_texte_fuellen TABLES b.

ENDIF.
*------------------------------------ CHAIN = 4 in den Kopf aufnehmen -*
PERFORM move_chain_4_into_kopf TABLES b.
*----------------------------------------------------------------------*
LOOP AT seig TRANSPORTING NO FIELDS WHERE lsind EQ 1.
IF rkb1d-smodus EQ rkd_smodus-eis_data.
*..................................... Eis-bernahme und Ende
PERFORM eis_uebernahme IN PROGRAM (rkb1d-rname).
PERFORM free_memory.
EXIT.
ENDIF.
EXIT.
ENDLOOP.
print_alist = 'N'.
sta_alist = rkb1d-alist.
rkb1d-alist = alist_u.
PERFORM get_tech_info_memory TABLES b sp.
PERFORM print_min_max(sapmkcbe) TABLES b
sp.
rkb1d-alist = sta_alist.
IF rkb1d-smodus EQ rkd_smodus-controls.
*- bei Controls: Detailliste nur, wenn kein Aufri bentigt wird
PERFORM check_control_alist USING
rkb1f-style
CHANGING rkb1d-alist.
ENDIF.
IF rkb1d-alist EQ rkd_alist-aktu OR
rkb1d-alist EQ rkd_alist-hier.
*- Wegen der bernahme von Merkmalen in den Kopf mu SEIG neu
*
*- positioniert werden
*
PERFORM seig_positionieren(sapmkcbe) USING space.
ENDIF.
PERFORM check_hier_alist USING seig-hflag.
IF
rkb1d-smodus EQ rkd_smodus-batch.
*..................................... Im Batch Drucken und Ende.
PERFORM start_print TABLES b
sp.
ELSEIF rkb1d-smodus EQ rkd_smodus-preview. "preview
DATA: l_alist LIKE rkb1d-alist.
CASE rkb1f-control_flag.
WHEN rkd_control_flag-list.
PERFORM start_output TABLES b.
WHEN rkd_control_flag-controls.
l_alist
= rkb1d-alist.
rkb1d-alist = rkd_alist-aktu.
PERFORM control_write(sapmkcbe) TABLES b
USING
rkb1f
CHANGING rkb1d.
rkb1d-alist = l_alist.
WHEN rkd_control_flag-alv.
PERFORM alv TABLES b
sp
s0
S1
"H395397
USING rkd_false.
WHEN OTHERS.
PERFORM start_output TABLES b.
ENDCASE.
ELSEIF rkb1d-smodus CA 'DHILNWXPO'."preview

*..................................... Ausgabe Liste/Controls


IF rkb1d-smodus EQ 'O'.
PERFORM end_collect_message USING 'X'.
ENDIF.
PERFORM start_output TABLES b.
ELSEIF rkb1d-smodus EQ rkd_smodus-alv.
*...................................... Ausgabe ALV
PERFORM alv TABLES b
sp
s0
S1
USING rkd_false.
perform check_selcreen.

"H456748
"H456748
"H456748

"H395397

" note 939769

ELSEIF rkb1d-smodus EQ rkd_smodus-xxl.


*...................................... Ausgabe XXL
PERFORM excel TABLES b
sp
s0
s1
"H395397
USING rkd1_xxl_object-report
rkd_false.
ELSEIF rkb1d-smodus EQ rkd_smodus-eis_data.
* elseif rkb1d-smodus eq rkd_smodus-controls.
ELSE.
MESSAGE x299 WITH 'UNKOWN_SMODUS'.
ENDIF.
ELSEIF anz_sp EQ 0.
PERFORM fehlanzeige_0 CHANGING l_exit.
IF l_exit EQ rkd_true.
perform check_selcreen.
" note 939769
EXIT.
ENDIF.
ENDIF.
PERFORM message_172.
* Ausgabe der gesammelten Messages
IF
rkb1d-smodus NE rkd_smodus-batch.
* Im Batchmodus erfolgt die Ausgabe gesondert ---> BATCH_START(RKDBATCH)
PERFORM end_collect_message USING 'X' .
ELSEIF rkb1d-smodus EQ rkd_smodus-batch.
CALL FUNCTION 'MESSAGE_EXPORT_IMPORT'
EXPORTING
ex_or_if = 'EX'
EXCEPTIONS
OTHERS = 01.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
*
FORM DYNAMIC_CURRENCY_CONVERSION
*----------------------------------------------------------------------*
*
Dynamische Whrungsumrechnung
*
*----------------------------------------------------------------------*
FORM dynamic_currency_conversion CHANGING c_subrc LIKE sy-subrc.
LOOP AT print TRANSPORTING NO FIELDS
WHERE waerskz NE space
AND numbr GT 0
AND fixkz CA rkd_fixkz-pseudo_var.

rkb1d-pwumr = 'X'.
EXIT.
ENDLOOP.
c_subrc = sy-subrc.
ENDFORM.
*----------------------------------------------------------------------*
*
FORM BUILD_B
*
*----------------------------------------------------------------------*
*
Tabelle B fllen und sortieren
*
*----------------------------------------------------------------------*
FORM build_b TABLES b
sp
CHANGING c_exit TYPE rkd_flag.
PERFORM kopf_fuellen.
READ TABLE seig WITH KEY lsind = 1.
IF sy-subrc GT 0.
MESSAGE x299(kh) WITH 'START'.
ENDIF.
PERFORM b_fuellen.
IF rkb1d-secu(1) EQ rkd_secu0-nachlesen
AND sp[] IS INITIAL.
PERFORM fehlanzeige_0 CHANGING c_exit.
IF c_exit EQ rkd_true. EXIT. ENDIF.
ENDIF.
PERFORM sort_b TABLES b.
ENDFORM.
*----------------------------------------------------------------------*
*
FORM SAVE_DATA
*
*----------------------------------------------------------------------*
*
Daten sichern
*
*----------------------------------------------------------------------*
FORM save_data TABLES b
sp
CHANGING c_exit TYPE rkd_flag.
DATA: l_sp
l_subrc

LIKE sy-tabix,
LIKE sy-subrc.

DESCRIBE TABLE sp LINES l_sp.


IF l_sp
GT 0
OR rkb1d-secu(1) EQ rkd_secu0-nachlesen
OR rkb1d-smodus EQ rkd_smodus-batch
OR rkb1d-smodus EQ rkd_smodus-batch_exceptions.
PERFORM dynamic_currency_conversion CHANGING l_subrc.
IF l_subrc GT 0.
PERFORM build_b TABLES b
sp
CHANGING c_exit.
IF c_exit EQ rkd_true.
EXIT.
ENDIF.
ENDIF.
PERFORM save_daten TABLES b sp.
PERFORM e17_message USING 'KH' 'S169' rkb1d-repid
space space space.
ELSE.
PERFORM fehlanzeige_0 CHANGING c_exit.

ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
*
FORM START_OUTPUT
*
*----------------------------------------------------------------------*
*
Start der Ausgabe (Liste/Controls)
*
*----------------------------------------------------------------------*
FORM start_output TABLES b.
PERFORM exim_memory_list_stack USING 'EX' 'SI'.
PERFORM set_rkb1d_keysp(sapmkcbe) USING
rkb1d-alist
CHANGING rkb1d-keysp.
IF
rkb1d-smodus CA 'HLNWXIPO'.
IF rkb1d-alist EQ rkd_alist-aktd.
PERFORM detail_start TABLES b.
ENDIF.
*..................................... Listausgabe starten..............
PERFORM e16_output(sapmkcbe) TABLES b
USING '1'.
ELSEIF rkb1d-smodus EQ rkd_smodus-data_mining.
*..................................... Datamining?......................
PERFORM list_tab_fuellen(sapmkcbe) TABLES b.
PERFORM e01_start_data_mining(sapfkcbd).
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
*
FORM START_PRINT
*
*----------------------------------------------------------------------*
*
Start des Druckens
*
*----------------------------------------------------------------------*
FORM start_print TABLES b
sp.
PERFORM exim_memory_list_stack USING 'EX' 'SI'.
PERFORM set_rkb1d_keysp(sapmkcbe) USING
rkb1d-alist
CHANGING rkb1d-keysp.
PERFORM drucken(sapmkcbe) TABLES b sp
USING rkb1d-alist.
PERFORM free_memory.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM FEHLANZEIGE_0.
*---------------------------------------------------------------------*
FORM fehlanzeige_0 CHANGING e_exit TYPE rkd_flag.
CLEAR e_exit.
rkb1d-alist = rkd_alist-fehler.
*... InSight-Modus (externes PC-Tool): Ausgabe oder Abbruchmeldung darf
*
nicht erfolgen
IF rkb1d-smodus EQ rkd_smodus-external.
e_exit = rkd_true.
EXIT.
ENDIF.
PERFORM fehlanzeige.
*... Memory wird noch bentigt ! --*

IF

rkb1d-smodus EQ rkd_smodus-batch_exceptions.
e_exit = rkd_true.
EXIT.
ENDIF.
*... FREE MEMORY und ab
PERFORM free_memory.
FREE MEMORY ID RKD0_TEMP_M_RANGE.
e_exit = rkd_true.

"H650816

ENDFORM.
*&---------------------------------------------------------------------*
*&
Form check_control_alist
*&---------------------------------------------------------------------*
*
Setzt ALIST fr Controls abhngig von RKB1F-STYLE
*----------------------------------------------------------------------*
FORM check_control_alist USING
i_style type rkb1f-style
CHANGING c_alist type rkb1d-alist.
STATICS: s_s_elements TYPE kcdd_s_elements.
IF s_s_elements IS INITIAL.
CALL FUNCTION 'RKD_ELEMENTS_FOR_STYLE_GET'
EXPORTING
i_style
= i_style
IMPORTING
e_s_elements = s_s_elements.
ENDIF.
IF s_s_elements-drilldown EQ rkd_false AND
s_s_elements-detail EQ rkd_true.
c_alist = rkd_alist-aktd.
ELSE.
c_alist = rkd_alist-aktu.
ENDIF.
ENDFORM.

" check_control_alist

You might also like