Vous êtes sur la page 1sur 8

FUNCTION MM_ARRANG_START_OF_SELECTION.

*"--------------------------------------------------------------------
--
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(REPORT_TYP) LIKE RWM02-REPOT
*" VALUE(RWM01_SELECT) LIKE RWM01 STRUCTURE RWM01
*" VALUE(I_EURO_WAERS) LIKE RWME1 STRUCTURE RWME1 OPTIONAL
*" EXPORTING
*" REFERENCE(HIDE_KONA) LIKE KONA STRUCTURE KONA
*" REFERENCE(HIDE_LINE_TYPE) TYPE C
*" REFERENCE(HI_SETTLEMENT_VALUES) LIKE ARRANG_VAL STRUCTURE
*" ARRANG_VAL
*" REFERENCE(HIDE_EKBO) LIKE RNACHWEIS STRUCTURE RNACHWEIS
*" REFERENCE(HIDE_EBOX) LIKE EBOX STRUCTURE EBOX
*" REFERENCE(HIDE_PARTNER) LIKE KOPA STRUCTURE KOPA
*" REFERENCE(HIDE_ERROR_MESSAGES) LIKE ARRANG_ERR STRUCTURE
*" ARRANG_ERR
*" TABLES
*" KNUMA STRUCTURE KNUMA_RAN OPTIONAL
*" IDENT1 STRUCTURE IDENT_RAN OPTIONAL
*" BOLIF STRUCTURE BOLIF_RAN OPTIONAL
*" EKORG STRUCTURE EKORG_RAN OPTIONAL
*" EKGRP STRUCTURE EKGRP_RAN OPTIONAL
*" T_ABSPW STRUCTURE ABSPW_RAN OPTIONAL
*" T_IDENT2 STRUCTURE IDENT_RAN OPTIONAL
*" T_BOART STRUCTURE BOART_RAN OPTIONAL
*" T_BONEM STRUCTURE BONEM_RAN OPTIONAL
*" T_VKORG STRUCTURE VKORG_RAN OPTIONAL
*" T_VTWEG STRUCTURE VTWEG_RAN OPTIONAL
*" T_SPART STRUCTURE SPART_RAN OPTIONAL
*" EXCEPTIONS
*" INVALID_REPORT_TYPE
*" NO_ARRANGEMENT_SELECTED
*" REPORT_CANCELLED
*" NO_LIST_OUTPUT
*" NO_OPEN_ARRANGEMENT
*" INTERNAL_ERROR
*"--------------------------------------------------------------------
--

DATA: L_LINES LIKE SY-TABIX,


* ANZAHL TABELLENEINTRAEGE
L_TITLE_MANUELL_SELECTION LIKE SY-TITLE,
* TITEL (PRAEFIX) BEI MANUELLER SELEKTION/KOMPAKTE ANZEIGE VON
* ABSPRACHEN
L_CHECK_ONLY TYPE C,
* SCHLEIFE, SOLANGE PRUEFLAUF, WECHSEL ZU AUSFUEHREN IST MOEGLICH
* MIT DENSELBEN SELEKTIERTEN ABSPRACHEN
L_BUFFER_ARRANGEMENTS LIKE KONA
OCCURS 0,
* ABSPRACHE AUS SELEKTIONSKRITERIEN GEMAESS DB
L_ARRANGEMENTS LIKE KONA
OCCURS 0,
* ABSPRACHE AUS SELEKTIONSKRITERIEN GEMAESS DB GGF. WEITERVERARBEITET
L_FATAL_ERROR TYPE C.
* FATAL_ERROR : REPORTABBRUCH
DATA: lv_list_form TYPE char1. "N: ALV; O: ABAP list

CALL METHOD cl_mm_arrang_list_form=>get_list_form


EXPORTING
I_REPORT_TYPE = REPORT_TYP
IMPORTING
e_list_form = lv_list_form.

IF lv_list_form = 'N'.
* User is online and want the display via ALV
CALL FUNCTION 'MM_ARRANG_START_OF_SELECT_ALV'
EXPORTING
report_typ = report_typ
rwm01_select = rwm01_select
i_euro_waers = i_euro_waers
IMPORTING
hide_kona = hide_kona
hide_line_type = hide_line_type
hi_settlement_values = hi_settlement_values
hide_ekbo = hide_ekbo
hide_ebox = hide_ebox
hide_partner = hide_partner
hide_error_messages = hide_error_messages
TABLES
knuma = knuma
ident1 = ident1
bolif = bolif
ekorg = ekorg
ekgrp = ekgrp
t_abspw = t_abspw
t_ident2 = t_ident2
t_boart = t_boart
t_bonem = t_bonem
t_vkorg = t_vkorg
t_vtweg = t_vtweg
t_spart = t_spart
EXCEPTIONS
invalid_report_type = 1
no_arrangement_selected = 2
report_cancelled = 3
no_list_output = 4
no_open_arrangement = 5
internal_error = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING no_list_output.
ENDIF.

EXIT.
ELSE.

PERFORM CHECK_REPORT_TYPE
USING REPORT_TYP 'MM_ARRANG_START_OF_SELECTION'.
* ART DER REPORTAUSFUEHRUNG PRUEFEN
*---------------------------------------------------------------------
*
PERFORM PREPARE_PROGRAM
USING REPORT_TYP.
* BEZEICHNUNG ZU DEN DOMAENEN STATUS, GGF. NACHWEISUMFANG LESEN
*---------------------------------------------------------------------
*
CALL FUNCTION 'MM_ARRANG_READ_DIALOG'
EXPORTING
REPORT_TYP = REPORT_TYP
RWM01_SELECT = RWM01_SELECT
IMPORTING
RWM01_SELECT = RWM01_SELECT
TABLES
T_KNUMA = KNUMA
T_IDENT1 = IDENT1
T_BOLIF = BOLIF
T_EKORG = EKORG
T_EKGRP = EKGRP
T_ABSPW = T_ABSPW
T_IDENT2 = T_IDENT2
T_BOART = T_BOART
T_BONEM = T_BONEM
T_VKORG = T_VKORG
T_VTWEG = T_VTWEG
T_SPART = T_SPART
T_ARRANGEMENTS = L_BUFFER_ARRANGEMENTS
EXCEPTIONS
INVALID_REPORT_TYPE = 1
NO_ARRANGEMENT_SELECTED = 2
SINGLE_ARRANGEMENT_NOT_SELECT = 3.
IF SY-SUBRC <> 0.
SET EXTENDED CHECK OFF.
CASE SY-SUBRC.
WHEN 1.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING INVALID_REPORT_TYPE.
WHEN 2.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING NO_ARRANGEMENT_SELECTED.
WHEN 3.
EXIT.
* NICHTS ZU TUN, KEINE WEITERE MELDUNG
ENDCASE.
SET EXTENDED CHECK ON.
ENDIF.
*---------------------------------------------------------------------
*
L_CHECK_ONLY = YES.
* SCHLEIFE EINMAL AUSFUEHREN
WHILE L_CHECK_ONLY = YES.
* SCHLEIFE, SOLANGE PRUEFLAUF, WECHSEL ZU AUSFUEHREN IST MOEGLICH
CLEAR L_CHECK_ONLY.
* DEFAULT, NUR EIN DURCHLAUF
CASE REPORT_TYP.
WHEN REPORT_TYPE-NEW_PERIOD.
* VERLAENGERUNG VON ABSPRACHEN
L_CHECK_ONLY = RWM01_SELECT-VPRLF.
* PRUEFLAUF UEBERNEHMEN
ENDCASE.
*---------------------------------------------------------------------
*
REFRESH: LAST_PAGE_LSIND, ABSPRACHEN_MIT_FEHLER,
PAGE_OF_ERROR_LIST, TAX_SUM_ARRANG,
TAX_SUM_GES, TAX_SUM_EKORG,
TAX_SUM_BOLIF, TAX_SUM_IDENT.
CLEAR: ERROR_COUNT.
* GLOBALE VARIABLE ZURUECKSETZEN FUER WIEDERHOLTE AUSFUEHRUNG
IF RWM01_SELECT-SLSCR = YES OR
RWM01_SELECT-DISPL = YES.
* ZU BEARBEITENDE ABSPRACHEN MANUELL SELEKTIEREN ODER NUR ANZEIGEN
* (IN KOMPAKTER FORM)
PERFORM SET_TITLE_SELECT_DIALOG
USING REPORT_TYP L_TITLE_MANUELL_SELECTION.
* TITEL SETZEN
CALL FUNCTION 'MM_ARRANG_SELECT_DIALOG'
EXPORTING
I_TITLE = L_TITLE_MANUELL_SELECTION
I_DISPLAY_AS_POPUP = NO
I_ARRANG_ONLY_SHOW = RWM01_SELECT-DISPL
I_RWM01 = RWM01_SELECT
I_ONLY_CHECK = L_CHECK_ONLY
IMPORTING
E_RWM01 = RWM01_SELECT
E_ONLY_CHECK = L_CHECK_ONLY
TABLES
T_SORT_KONA_IMPORT = SORT_KONA
T_ARRANGEMENTS_IMPORT = L_BUFFER_ARRANGEMENTS
T_SORT_KONA_EXPORT = SORT_KONA
T_ARRANGEMENTS_EXPORT = L_ARRANGEMENTS
EXCEPTIONS
BACK_TO_SELECTION_SCREEN = 01
FUNCTION_FINISHED = 02
NO_ARRANGEMENT_SELECTED = 03
KAPPL_INVALID = 04
OTHERS = 05.
IF SY-SUBRC <> 0.
CASE SY-SUBRC.
WHEN 1.
EXIT.
* ZURUECK AUF SELEKTIONSBILD
WHEN 2.
LEAVE PROGRAM.
* ABBRECHEN
WHEN OTHERS.
SET EXTENDED CHECK OFF.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
RAISING NO_ARRANGEMENT_SELECTED.
SET EXTENDED CHECK ON.
ENDCASE.
ENDIF.
CASE REPORT_TYP.
WHEN REPORT_TYPE-NEW_PERIOD.
* VERLAENGERUNG VON ABSPRACHEN
RWM01_SELECT-VPRLF = L_CHECK_ONLY.
* SCHLEIFE, SOLANGE PRUEFLAUF, WECHSEL ZU AUSFUEHREN IST MOEGLICH
ENDCASE.
ELSE.
PERFORM SORT_KONA
TABLES L_BUFFER_ARRANGEMENTS L_ARRANGEMENTS SORT_KONA
USING RWM01_SELECT.
* BAUT DEN INDEX SORT_KONA AUF UND SORTIERT IHN GEMAESS
* SORTIERKRITERIUM
ENDIF.
*---------------------------------------------------------------------
*
DESCRIBE TABLE SORT_KONA LINES KONA_LINES.
CHECK KONA_LINES > 0.
* ES GIBT DATENSAETZE GEMAESS SELEKTIONSKRITERIEN
*---------------------------------------------------------------------
*
IF RWM01_SELECT-DISPL = YES.
* ZU BEARBEITENDE ABSPRACHEN NUR ANZEIGEN (IN KOMPAKTER FORM)
* KEINE WEITERE LISTAUSGABE
EXIT.
ENDIF.
*---------------------------------------------------------------------
*
IF RWM01_SELECT-NLIST = NO and
RWM01_SELECT-proto = no.
* keine Listausgabe
RWM01_SELECT-NLIST = yes.
endif.
IF RWM01_SELECT-NLIST = yes.
* Normale Listausgabe
IF RWM01_SELECT-proto = yes.
RWM01_SELECT-proto = no.
* beides ausgeschaltet -> normale Listausgabe
endif.
PERFORM SET_LIST_STATUS
USING REPORT_TYP RWM01_SELECT SPACE.
* STATUS UND TITEL DES REPORTS SETZEN
endif.
refresh G_ERROR_MESSAGES_ARR.
* Absprache uebergreifendenes Nachrichtenprotokoll loeschen
*---------------------------------------------------------------------
*
PERFORM ABSPRACHEN_BEHANDELN
TABLES L_ARRANGEMENTS SORT_KONA
USING REPORT_TYP RWM01_SELECT
I_EURO_WAERS
L_FATAL_ERROR
HIDE_KONA HIDE_LINE_TYPE
HI_SETTLEMENT_VALUES
HIDE_EKBO HIDE_EBOX
HIDE_PARTNER HIDE_ERROR_MESSAGES
NO.
* HAUPTSCHLEIFE: ABRECHNUNG, LISTAUSGABE DER ABSPRACHEN ETC.
*---------------------------------------------------------------------
*
IF RWM01_SELECT-NLIST = yes.
* normale Listausgabe
PERFORM CLEAR_HIDE
USING HIDE_KONA HIDE_LINE_TYPE
HI_SETTLEMENT_VALUES
HIDE_EKBO HIDE_EBOX
HIDE_PARTNER
HIDE_ERROR_MESSAGES.
* RESET HIDE-BEREICH
DESCRIBE TABLE ABSPRACHEN_MIT_FEHLER LINES L_LINES.
* MEHR ALS EIN EINTRAG
IF KONA_LINES > 1 AND L_LINES > 0.
PERFORM PRINT_ARRANGEMENTS_WITH_ERROR
USING HIDE_LINE_TYPE.
* EINE LISTE DER FEHLERHAFTEN ABSPRACHEN AUSGEBEN
ENDIF.
endif.
*---------------------------------------------------------------------
*
IF NOT L_FATAL_ERROR IS INITIAL.
* FEHLER, MELDUNG ANZAHL DER FEHLER AUSGEBEN
IF RWM01_SELECT-NLIST = yes.
* Normale Listausgabe
PERFORM APPEND_LASTPAGE
USING SY-LSIND SY-PAGNO.
* LETZTE SEITENNUMMER MERKEN PRO UNTERLISTE
endif.
MESSAGE A277(MN) WITH REPORT_TYP
RAISING REPORT_CANCELLED.
* FEHLERTEXT: DER REPORT & WURDE ABGEBROCHEN (BITTE BEACHTEN SIE DAS
* LISTPROTOKOLL).
ENDIF.
IF SY-PAGNO <= 0.
* KENNZEICHEN: KEINE LISTAUSGABE ERFOLGT
IF REPORT_TYP = REPORT_TYPE-OPEN_DOCUMENTS AND
RWM01_SELECT-KONAOPEN = YES.
* NUR ABSPRACHEN MIT OFFENEN BELEGEN IN LISTAUSGABE
MESSAGE I754(MN) RAISING NO_OPEN_ARRANGEMENT.
* FEHLERTEXT: ZU DEN SELEKTIERTEN ABSPRACHEN EXISTIEREN KEINE OFFENEN
* EINKAUFSBELEGE
EXIT.
ELSE.
* INTERNER FEHLER
MESSAGE I371(MN) WITH KONA_LINES
RAISING NO_LIST_OUTPUT.
* FEHLERTEXT: ES WURDE KEINE LISTAUSGABE ERSTELLT (INTERNER FEHLER)
ENDIF.
ENDIF.
IF RWM01_SELECT-NLIST = yes.
* Normale Listausgabe
PERFORM APPEND_LASTPAGE
USING SY-LSIND SY-PAGNO.
* LETZTE SEITENNUMMER MERKEN PRO UNTERLISTE
endif.
IF ERROR_COUNT > 0.
* FEHLER, MELDUNG ANZAHL DER FEHLER AUSGEBEN
MESSAGE S131(MN) WITH ERROR_COUNT.
ENDIF.
CLEAR L_CHECK_ONLY.
* FUNKTION WIEDERHOLTER DURCHLAUF DERZEIT NOCH NICHT AKTIV
ENDWHILE.
*---------------------------------------------------------------------
*
* ENDE DES REPORTS - AUSGABE DER LISTE UND WEITER BEI DEN DORT
* DEFINIERTEN FUNKTIONEN (STATUS)
*---------------------------------------------------------------------
*
ENDIF.
ENDFUNCTION.

Vous aimerez peut-être aussi