Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhancement Required... unable to fine where

Former Member
0 Kudos

this sap standard program....here in this program..it should select the records and list place according the requirement,,,,(some enhancement is required)

example: here i will give

validity date : 29.10.2008

Accounting settlement period: AM

Settlement date : 30.10.2007

here is the program

check this program when we give the validitiy date it should show that month bill but it shows all months

*N744242 Clean up for Selection Screens

REPORT RV15C001 NO STANDARD PAGE HEADING LINE-SIZE 132

MESSAGE-ID VK.

*----


*

  • Data deklarationen *

*----


*

INCLUDE RV15CI03.

  • Hilfsfelder:

DATA: CURRCH,

CURRENCY LIKE TCURV-BWAER,

AUTO_EXTEND VALUE ' ',

ABRDAT_L LIKE SY-DATUM,

PADAT_L LIKE SY-DATUM,

PERIO LIKE RWM01-VPERIOD.

RANGES: IDENT2 FOR KONA-IDENT2.

*----


*

  • Selektion-Parameter und Options *

*----


*

  • Überschrift

SELECTION-SCREEN COMMENT 1(79) TEXT-S01 MODIF ID INT.

SELECT-OPTIONS:

  • Bonusabsprache

KNUMA FOR KONA-KNUMA MEMORY ID VBO MATCHCODE OBJECT VMBO,

  • Bonusempfänger

BONEM FOR KONA-BONEM MEMORY ID VBE MATCHCODE OBJECT DEBI.

  • Abrechnungsdatum

PARAMETERS:

ABRDATE LIKE KONA-DATBI DEFAULT SY-DATLO OBLIGATORY.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN COMMENT 1(79) TEXT-S02 MODIF ID INT.

  • Organisationsdaten

SELECT-OPTIONS:

VKORG FOR KONA-VKORG MEMORY ID VKO,

VTWEG FOR KONA-VTWEG MEMORY ID VTW,

SPART FOR KONA-SPART MEMORY ID SPA.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN COMMENT 1(79) TEXT-S05 MODIF ID INT.

  • Periodische Teilauszahlung

SELECT-OPTIONS:

IDENT3 FOR KONA-IDENT3.

PARAMETERS PADAT LIKE RV13A-PADAT.

INITIALIZATION.

PADAT = SY-DATLO.

CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'

EXPORTING

CORRECT_OPTION = '-'

DATE = SY-DATLO

FACTORY_CALENDAR_ID = 'AM'

IMPORTING

DATE = PADAT

EXCEPTIONS

OTHERS = 4.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN COMMENT 1(79) TEXT-S03 MODIF ID INT.

  • Nur offene selektieren

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS BOPEN AS CHECKBOX.

  • SELECTION-SCREEN COMMENT 3(25) TEXT-B01. "N744242

SELECTION-SCREEN COMMENT 3(25) TEXT-B01 FOR FIELD BOPEN. "N744242

SELECTION-SCREEN END OF LINE.

  • nur zu prüfende selketieren

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS BCHECK AS CHECKBOX.

  • SELECTION-SCREEN COMMENT 3(25) TEXT-B02. "N744242

SELECTION-SCREEN COMMENT 3(25) TEXT-B02 FOR FIELD BCHECK. "N744242

SELECTION-SCREEN POSITION 32.

  • Nur freigegebene selektieren

PARAMETERS BREADY AS CHECKBOX DEFAULT 'X'.

  • SELECTION-SCREEN COMMENT 35(25) TEXT-B03. "N744242

SELECTION-SCREEN COMMENT 35(25) TEXT-B03 FOR FIELD BREADY. "N744242

SELECTION-SCREEN END OF LINE.

  • nur solche mit erzeugter Gutschrift

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS BCREDI AS CHECKBOX.

  • SELECTION-SCREEN COMMENT 3(25) TEXT-B04. "N744242

SELECTION-SCREEN COMMENT 3(25) TEXT-B04 FOR FIELD BCREDI. "N744242

SELECTION-SCREEN POSITION 32.

  • Nur zu prüfende selektieren

PARAMETERS BSETTLE AS CHECKBOX.

  • SELECTION-SCREEN COMMENT 35(25) TEXT-B05. "N744242

SELECTION-SCREEN COMMENT 35(25) TEXT-B05 FOR FIELD BSETTLE. "N744242

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 2.

  • Funktionen

SELECTION-SCREEN COMMENT 1(79) TEXT-S04 MODIF ID INT.

  • Abrechnung durchführen ?

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS SETTLE RADIOBUTTON GROUP RADI.

  • SELECTION-SCREEN COMMENT 3(25) TEXT-B06. "N744242

SELECTION-SCREEN COMMENT 3(25) TEXT-B06 FOR FIELD SETTLE. "N744242

SELECTION-SCREEN POSITION 32.

PARAMETERS BOPRINT AS CHECKBOX.

  • SELECTION-SCREEN COMMENT 35(25) TEXT-B07. "N744242

SELECTION-SCREEN COMMENT 35(25) TEXT-B07 FOR FIELD BOPRINT. "N744242

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS PARTIAL RADIOBUTTON GROUP RADI.

  • SELECTION-SCREEN COMMENT 3(26) TEXT-B08. "N744242

SELECTION-SCREEN COMMENT 3(26) TEXT-B08 FOR FIELD PARTIAL. "N744242

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS DUMMY RADIOBUTTON GROUP RADI DEFAULT 'X'.

  • SELECTION-SCREEN COMMENT 3(26) TEXT-B10. "N744242

SELECTION-SCREEN COMMENT 3(26) TEXT-B10 FOR FIELD DUMMY. "N744242

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS CONTROL RADIOBUTTON GROUP RADI.

  • SELECTION-SCREEN COMMENT 3(26) TEXT-B11. "N744242

SELECTION-SCREEN COMMENT 3(26) TEXT-B11 FOR FIELD CONTROL. "N744242

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS CONTTST RADIOBUTTON GROUP RADI.

  • SELECTION-SCREEN COMMENT 3(26) TEXT-B12. "N744242

SELECTION-SCREEN COMMENT 3(26) TEXT-B12 FOR FIELD CONTTST. "N744242

SELECTION-SCREEN END OF LINE.

  • kennzeichen: Tabellen aus memory

PARAMETERS: FMEMORY NO-DISPLAY,

  • Nur Anzeigefunktionen

LISTONLY NO-DISPLAY.

*----


*

  • AT SELECTION-SCREEN *

*----


*

INCLUDE RV15CI01.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

CHECK SCREEN-GROUP1 = 'INT'.

SCREEN-INTENSIFIED = '1'.

MODIFY SCREEN.

ENDLOOP.

*----


*

  • Die Verarbeitung durchführen *

*----


*

INCLUDE RV15CI02.

Message was edited by:

SAP Trainee

1 REPLY 1

Former Member
0 Kudos

INCLUDE RV15CI02.

*----


*

  • START-OF_SELECTION *

*----


*

START-OF-SELECTION.

PERFORM ALV_PREPARE.

  • Auswahl der Selektionsmethode

PERFORM PREPARE_SELECTION.

IF FMEMORY IS INITIAL.

IF KNUMA_LINES > 0.

PERFORM SELECTION_VIA_KNUMA.

ELSEIF BONEM_LINES > 0.

PERFORM SELECTION_VIA_BONEM.

  • Ist die Anforderung aus dem Verlängern

ELSEIF NOT ABRDAT_L IS INITIAL.

PERFORM SELECTION_VIA_KNUMA.

  • Matchcode enthält Satus 'C' und 'D' nicht

ELSEIF 'C' IN X_BOSTA OR

'D' IN X_BOSTA.

PERFORM SELECTION_VIA_KNUMA.

ELSE.

PERFORM SELECTION_VIA_BOSTA.

ENDIF.

ELSE.

  • Daten aus dem memory holen

IMPORT KONA FROM MEMORY ID 'RV15CXXX'.

REFRESH XKONA.

XKONA = KONA.

APPEND XKONA.

ENDIF.

SORT XKONA.

IF NOT CURRCH IS INITIAL.

  • Prüfung auf auslaufende Währung

  • Prüfung, ob Kurs für EURO-Umrechnung fixiert ist

LOOP AT XKONA.

CALL FUNCTION 'CURRENCY_EXPIRATION_CHECK'

EXPORTING

CURRENCY = CURRENCY

DATE = XKONA-DATBI

OBJECT = 'BUS3031'

BUKRS = XKONA-BUKRS

  • IMPORTING

  • CURRENCY_NEW = L_currency_new

EXCEPTIONS

WARNING_OCCURRED = 1

ERROR_OCCURRED = 2

OTHERS = 3

.

IF SY-SUBRC > 1.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'READ_EXCHANGE_RATE'

EXPORTING

DATE = XKONA-DATBI

FOREIGN_CURRENCY = XKONA-WAERS

LOCAL_CURRENCY = CURRENCY

TYPE_OF_RATE = TCURV-KURST

  • importing

  • fixed_rate = da_fixed_rate

EXCEPTIONS

NO_RATE_FOUND = 1.

IF SY-SUBRC NE 0.

MESSAGE I366 WITH XKONA-KNUMA XKONA-WAERS CURRENCY.

ENDIF.

ENDLOOP.

ENDIF.

  • Sortierung gemäß Kunde herstellen

LOOP AT XKONA.

MOVE-CORRESPONDING XKONA TO SORT_KUNNR.

SORT_KUNNR-TABIX = SY-TABIX.

APPEND SORT_KUNNR.

ENDLOOP.

  • Kein satz gefunden

IF SY-SUBRC <> 0.

MESSAGE I026.

EXIT.

ENDIF.

SORT SORT_KUNNR.

  • Aufbereiten

LOOP AT SORT_KUNNR.

  • Lesen der Vereinbarung

READ TABLE XKONA INDEX SORT_KUNNR-TABIX.

KONA = XKONA.

CLEAR KNUMA_WITH_ERROR.

IF ( SORT_KUNNR(8) <> ORGA_DATA ) OR

( OLD_BOART <> KONA-BOART ).

  • Berechtigungsprüfung / Anzeigen

CALL FUNCTION 'SD_COND_AUTH_CHECK'

EXPORTING

I_VKORG = KONA-VKORG

I_VTWEG = KONA-VTWEG

I_SPART = KONA-SPART

I_BOART = KONA-BOART

I_ACTIVITY = '03'

EXCEPTIONS

NO_AUTHORITY = 1

OTHERS = 2.

  • Berechtigung vorhanden ?

IF SY-SUBRC <> 0.

ERROR_AUTH_CHECK = 1.

ELSE.

ERROR_AUTH_CHECK = 0.

IF SETTLE = YES OR

CURRCH = YES OR

AUTO_EXTEND = YES.

  • Berechtigungsprüfung / Ändern

CALL FUNCTION 'SD_COND_AUTH_CHECK'

EXPORTING

I_VKORG = KONA-VKORG

I_VTWEG = KONA-VTWEG

I_SPART = KONA-SPART

I_BOART = KONA-BOART

I_ACTIVITY = '02'

EXCEPTIONS

NO_AUTHORITY = 1

OTHERS = 2.

  • Berechtigung vorhanden ?

IF SY-SUBRC <> 0.

ERROR_AUTH_CHECK = 1.

ENDIF.

ENDIF.

IF PARTIAL = YES.

  • Berechtigungsprüfung / Teilauszahlung

CALL FUNCTION 'SD_COND_AUTH_CHECK'

EXPORTING

I_VKORG = KONA-VKORG

I_VTWEG = KONA-VTWEG

I_SPART = KONA-SPART

I_BOART = KONA-BOART

I_ACTIVITY = 'A2'

EXCEPTIONS

NO_AUTHORITY = 1

OTHERS = 2.

  • Berechtigung vorhanden ?

IF SY-SUBRC <> 0.

ERROR_AUTH_CHECK = 1.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

  • neue Organisationsdaten ?

IF SORT_KUNNR(8) <> ORGA_DATA.

PERFORM NEW_ORGA_DATA.

ENDIF.

  • Wechsel der Kundenummer ?

IF SORT_KUNNR-BONEM <> OLD_BONEM.

PERFORM NEW_BONEM.

ENDIF.

  • Ausgabe der Bonusabsprache

PERFORM NEW_AGREEMENT.

  • Alten Bonusempfänger merken

OLD_BONEM = SORT_KUNNR-BONEM.

OLD_BOART = KONA-BOART.

ORGA_DATA = SORT_KUNNR(8).

PERFORM BUILD_HEADER_INFO.

ENDLOOP.

  • Clear Hide-bereich

CLEAR: KONA, VBAK.

  • Call ABAP/4 List Viewer

DESCRIBE TABLE REPORT_TAB LINES SY-TFILL.

IF SY-TFILL > 0 OR

ERROR_ORDER_CREATE <> 0 OR

ERROR_AUTO_EXTEND <> 0 OR

ERROR_AUTH_CHECK <> 0 OR

ERROR_ACTUAL_CHECK <> 0.

PERFORM ALV_CALL.

ENDIF.

IF SY-BATCH = YES.

  • Protokoll ausgeben

DESCRIBE TABLE ERROR_TAB LINES SY-TFILL.

IF SY-TFILL > 0.

PERFORM UMSATZ_PROTOKOLL.

ENDIF.

ENDIF.

*----


*

  • Lesen der Konditionssätze zur Bonusvereinbarung *

*----


*

FORM BONUS_RECORD_READ.

DATA:

X_SETTLE.

DATA: BEGIN OF BRR_PERIODS OCCURS 10,

DATAB LIKE RV13A-DATAB,

DATBI LIKE RV13A-DATBI.

DATA: END OF BRR_PERIODS.

DATA: BRR_CURRENCY_OLD LIKE KONA-WAERS.

DATA: BRR_PADAT LIKE PADAT.

DATA: BRR_NEXT_DAY LIKE PADAT.

DATA: BRR_NEW_REBATE_PROCESSING LIKE YES.

DATA ERROR_TEXT(72).

CHECK ERROR_AUTH_CHECK = 0.

  • Zurücksetzen der internen Tabellen

REFRESH: XVAKE, XKONH, XKONP, STAFFEL, XVALUE.

CLEAR: ERROR_ENQUEUE, ERROR_ORDER_CREATE.

  • Sicherheitsabfrage; sollte nie vorkommen

IF SETTLE = YES AND PARTIAL = YES.

CLEAR PARTIAL.

ENDIF.

  • BAdI to prevent enhanced agreements from processing

DATA: L_SD_ENH_REBATE TYPE REF TO IF_EX_SD_ENH_REBATES,

L_BADI_ACTIVE TYPE XFELD.

CALL FUNCTION 'GET_HANDLE_SD_ENH_REBATES'

IMPORTING

E_BADI_INSTANCE = L_SD_ENH_REBATE

E_BADI_ACTIVE = L_BADI_ACTIVE.

IF L_BADI_ACTIVE = 'X'.

CALL METHOD L_SD_ENH_REBATE->RV15C001_EXIT

EXPORTING

I_KONA = xkona

CHANGING

I_E_ERROR_TAB = error_tab[]

I_E_SETTLE = settle

I_E_PARTIAL = partial

EXCEPTIONS

ENH_REBATES_ACTIVE = 1

others = 2.

IF SY-SUBRC = 1.

exit.

ENDIF.

ENDIF.

  • Sperren der Bonusgutschrift

IF SETTLE <> SPACE OR

CURRCH <> SPACE OR

PARTIAL <> SPACE.

PERFORM SPERREN_KONA USING XKONA-KNUMA NO READ_SUBRC.

IF READ_SUBRC <> 0.

ERROR_ENQUEUE = YES.

X_SETTLE = NO.

ELSEIF SETTLE = YES OR PARTIAL = YES.

X_SETTLE = YES.

ELSEIF CURRCH = YES.

X_SETTLE = NO.

ENDIF.

ELSE.

X_SETTLE = NO.

ENDIF.

  • Lesen der zugehörigen Bonus Konditionen

IF FMEMORY IS INITIAL.

CALL FUNCTION 'SD_BONUS_READ'

EXPORTING

BONUS_AGREEMENT_IN = XKONA

CONDITION_READ = YES

SCALE_READ = YES

TABLES

CONDITION = XKONP

CONDITION_HEADER = XKONH

CONDITION_SCALE = STAFFEL

VARIABLE_KEY = XVAKE.

ELSE.

  • Daten aus dem memory holen

IMPORT XVAKE XKONP STAFFEL FROM MEMORY ID 'RV15CXXX'.

KONA = XKONA.

ENDIF.

  • Währung -> EURO

IF CURRCH = YES.

BRR_CURRENCY_OLD = XKONA-WAERS.

XKONA-WAERS = CURRENCY.

ENDIF.

  • Umsatz aktuell ?

ERROR_ACTUAL_CHECK = 0.

IF CURRCH IS INITIAL.

  • Neues Verfahren ?

CALL FUNCTION 'SD_INDEX_UPDATE_CHECK'

IMPORTING

INDEX_UPDATED = BRR_NEW_REBATE_PROCESSING.

IF BRR_NEW_REBATE_PROCESSING = YES.

LOOP AT XKONP

WHERE KSPAE = YES.

MESSAGE E780(VK) WITH XKONP-KNUMA_BO INTO ERROR_TEXT.

SY-SUBRC = 11.

ERROR_ACTUAL_CHECK = SY-SUBRC.

EXIT.

ENDLOOP.

IF ERROR_ACTUAL_CHECK NE 0.

SY-SUBRC = 11.

ENDIF.

ENDIF.

ELSE.

  • BADI for Maintenance Check

DATA: BADI_INSTANCE TYPE REF TO IF_EX_AGR_MAINTENANCE_CHCK.

DATA: BADI_ACTIVE TYPE XFELD.

CALL FUNCTION 'AGR_MNT_BADI_INSTANCE_GET'

IMPORTING

E_BADI_INSTANCE = BADI_INSTANCE

E_BADI_ACTIVE = BADI_ACTIVE.

IF NOT BADI_ACTIVE IS INITIAL.

  • Check whether changing this agreement is allowed

CALL METHOD BADI_INSTANCE->AGR_MNT_CHANGE_CHECK

EXPORTING

I_KNUMA = XKONA-KNUMA

EXCEPTIONS

OTHERS = 1.

ERROR_ACTUAL_CHECK = SY-SUBRC.

ENDIF.

ENDIF.

IF ERROR_ACTUAL_CHECK = 0.

IF NEW_CURR IS INITIAL.

  • Abrechnung durchführen ?

IF LISTONLY IS INITIAL.

  • Automatische Teilabrechnung

IF PARTIAL = YES.

IF T6B1-BOART NE XKONA-BOART.

SELECT SINGLE * FROM T6B1 WHERE BOART = XKONA-BOART.

ENDIF.

IF T6B1-MAVER NA 'AB'.

  • Prüfen, ob Vorschlagswert ermittelt werden kann

MESSAGE S294.

SY-SUBRC = 11.

  • Fehler merken

ERROR_ORDER_CREATE = SY-SUBRC.

ELSE.

  • Sonderbehandlung Periodische Auszahlung

REFRESH BRR_PERIODS.

CLEAR BRR_PERIODS.

CLEAR SY-SUBRC.

IF NOT XKONA-IDENT3 IS INITIAL.

  • Prüfung, dass für Absprachen mit periodischer Teilabrechnung der

  • Abrechnungstermin im Gültigkeitszeitraum liegt

IF PADAT IS INITIAL.

MESSAGE S480(VK).

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ELSE.

IF XKONA-DATAB > PADAT.

MESSAGE S475(VK) WITH PADAT XKONA-DATAB.

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ELSE.

IF XKONA-DATBI < PADAT.

MESSAGE S476(VK) WITH PADAT XKONA-DATBI.

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ELSE.

DATA: PADAT2 LIKE PADAT.

  • Prüfung, ob Abrechnungstermin im Fabrikkalender

CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'

EXPORTING

CORRECT_OPTION = '+'

DATE = PADAT

FACTORY_CALENDAR_ID = XKONA-IDENT3

IMPORTING

DATE = PADAT2

EXCEPTIONS

OTHERS = 4.

IF PADAT NE PADAT2 OR SY-SUBRC NE 0.

MESSAGE S478(VK) WITH PADAT XKONA-IDENT3.

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ELSE.

BRR_PERIODS-DATAB = '00010101'.

BRR_PERIODS-DATBI = PADAT.

  • Prüfung, ob bereits manuelle Teilauszahlungen existieren

BRR_NEXT_DAY = PADAT + 1.

CALL FUNCTION 'SD_BONUS_MANUAL_PAYMENT_CHECK'

EXPORTING

AGREEMENT_KNUMA = XKONA-KNUMA

PERIOD_DATAB = BRR_NEXT_DAY

PERIOD_DATBI = '99991231'

TABLES

CONDITION = XKONP

EXCEPTIONS

MANUAL_PAYMENT_EXISTS = 4.

IF SY-SUBRC <> 0.

MESSAGE S467(VK).

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF ERROR_ORDER_CREATE IS INITIAL.

CALL FUNCTION 'SD_BONUS_SETTLEMENT'

EXPORTING

BONUS_AGREEMENT = XKONA

CREATE_CREDIT_NOTE = NO

SAVE_CREDIT_NOTE = NO

BRING_DIALOG = NO

PERIOD_DATAB = BRR_PERIODS-DATAB

PERIOD_DATBI = BRR_PERIODS-DATBI

BONUS_CONTROL = CONTROL

TABLES

CONDITION = XKONP

CONDITION_SCALE = STAFFEL

SETTLEMENT_VALUES = XVALUE

VARIABLE_KEY = XVAKE

EXCEPTIONS

CURRENCY_CONVERSION = 01

DIFFERENT_UOM = 02

ERROR_IN_ORDER_CREATION = 03

ERROR_MESSAGE = 04

INVALID_BONUS_TYPE = 05

NOT_READY_FOR_SETTLEMENT = 06

NO_ORDER_TYPE = 07

UNIT_CONVERSION = 08

OPEN_DOCUMENTS_EXIST = 09

NO_TURNOVER = 10

NO_SALES = 11.

  • Fehler merken

IF ERROR_ORDER_CREATE IS INITIAL.

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

CALL FUNCTION 'SD_BONUS_KONPD_FILL'

EXPORTING

REBATE_AGREEMENT = XKONA

REBATE_AGREEMENT_TYPE = T6B1

PERIOD_DATAB = BRR_PERIODS-DATAB

PERIOD_DATBI = BRR_PERIODS-DATBI

IMPORTING

OPEN_CORRECTIONS = OPEN_B2_EXISTS

TABLES

COND_ITEM = XKONP

COND_SCALES = STAFFEL

COND_KEYS = XVAKE

EXCEPTIONS

INVALID_BONUS_TYPE = 1

OTHERS = 2.

  • Fehler merken

IF ERROR_ORDER_CREATE IS INITIAL.

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

ENDIF.

  • Fehlerhandling

IF SY-SUBRC = 0.

  • Vorschlagswerte übernehmen

LOOP AT XKONP.

XKONP-BZWRT = XKONP-MPWRT.

MODIFY XKONP.

ENDLOOP.

  • Für periodische Teilabrechnung Auszahlungsdatum ermitteln

IF XKONA-IDENT3 IS INITIAL.

CLEAR BRR_PADAT.

ELSE.

BRR_PADAT = PADAT.

ENDIF.

LOOP AT XKONP WHERE NOT BZWRT IS INITIAL.

EXIT.

ENDLOOP.

DESCRIBE TABLE XKONP LINES SY-TFILL.

IF ( SY-SUBRC EQ 0 ) AND

( SY-TFILL > 0 ).

CALL FUNCTION 'SD_BONUS_MANUAL_PAYMENT'

EXPORTING

BONUS_AGREEMENT = XKONA

BONUS_AGREEMENT_TYPE = T6B1

BONUS_FBUDA = BRR_PADAT

TABLES

CONDITION = XKONP

CONDITION_SCALE = STAFFEL

EXCEPTIONS

ERROR_IN_ORDER_CREATION = 1

ERROR_MESSAGE = 2

INVALID_BONUS_TYPE = 3

NO_ORDER_TYPE = 4

OTHERS = 5.

ELSE.

MESSAGE S469(VK) WITH XKONA-KNUMA.

SY-SUBRC = 11.

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

  • Fehler merken

IF ERROR_ORDER_CREATE IS INITIAL.

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

ENDIF.

ENDIF.

ELSE.

CALL FUNCTION 'SD_BONUS_SETTLEMENT'

EXPORTING

BONUS_AGREEMENT = XKONA

CREATE_CREDIT_NOTE = X_SETTLE

SAVE_CREDIT_NOTE = NO

BRING_DIALOG = NO

BONUS_CONTROL = CONTROL

TABLES

CONDITION = XKONP

CONDITION_SCALE = STAFFEL

SETTLEMENT_VALUES = XVALUE

VARIABLE_KEY = XVAKE

EXCEPTIONS

CURRENCY_CONVERSION = 01

DIFFERENT_UOM = 02

ERROR_IN_ORDER_CREATION = 03

ERROR_MESSAGE = 04

INVALID_BONUS_TYPE = 05

NOT_READY_FOR_SETTLEMENT = 06

NO_ORDER_TYPE = 07

UNIT_CONVERSION = 08

OPEN_DOCUMENTS_EXIST = 09

NO_TURNOVER = 10

NO_SALES = 11.

  • Fehler merken

ERROR_ORDER_CREATE = SY-SUBRC.

ENDIF.

CASE SY-SUBRC.

WHEN 0.

IF X_SETTLE = YES.

  • Auftrag sichen

CLEAR VBAK-VBELN.

CALL FUNCTION 'SD_SALES_DOCUMENT_SAVE'

IMPORTING

EVBAK = VBAK

EXCEPTIONS

ERROR_MESSAGE = 09.

  • Fehler beim Sichern

IF SY-SUBRC = 0.

IF NOT PARTIAL = YES.

  • Bonusstatus setzen

PERFORM SET_BOSTA.

ENDIF.

COMMIT WORK.

ELSE.

ERROR_ORDER_CREATE = SY-SUBRC.

  • Sperren aufheben

PERFORM SPERREN_KONA_AUFHEBEN USING XKONA-KNUMA.

ENDIF.

  • elseif currch = yes.

  • Währung ändern

  • perform set_currency using xkona-knuma

  • brr_currency_old currency.

  • Sperren aufheben

PERFORM SPERREN_KONA_AUFHEBEN USING XKONA-KNUMA.

ENDIF.

WHEN OTHERS.

  • Fehler beim Erzeugen: => Sperre aufheben

IF X_SETTLE = YES OR CURRCH = YES.

PERFORM SPERREN_KONA_AUFHEBEN USING XKONA-KNUMA.

ENDIF.

ENDCASE.

ENDIF.

ELSE.

IF LISTONLY IS INITIAL.

  • Umsätze nicht aktuell - trotzdem Umsatz anzeigen

CALL FUNCTION 'SD_BONUS_SETTLEMENT'

EXPORTING

BONUS_AGREEMENT = XKONA

CREATE_CREDIT_NOTE = SPACE

SAVE_CREDIT_NOTE = NO

BRING_DIALOG = NO

BONUS_CONTROL = CONTROL

TABLES

CONDITION = XKONP

CONDITION_SCALE = STAFFEL

SETTLEMENT_VALUES = XVALUE

VARIABLE_KEY = XVAKE

EXCEPTIONS

CURRENCY_CONVERSION = 01

DIFFERENT_UOM = 02

ERROR_IN_ORDER_CREATION = 03

ERROR_MESSAGE = 04

INVALID_BONUS_TYPE = 05

NOT_READY_FOR_SETTLEMENT = 06

NO_ORDER_TYPE = 07

UNIT_CONVERSION = 08

OPEN_DOCUMENTS_EXIST = 09

NO_TURNOVER = 10

NO_SALES = 11.

ENDIF.

ENDIF.

  • währung ändern

IF NEW_CURR EQ YES.

IF CURRCH EQ YES.

PERFORM SET_CURRENCY USING XKONA-KNUMA

BRR_CURRENCY_OLD CURRENCY.

ENDIF.

  • listonly for the small protocol.

LISTONLY = 'X'.

ENDIF.

ENDIF.

  • Sortieren der interne Tabelle

SORT XVAKE BY KSCHL KOTABNR VAKEY.

SORT XKONP BY MANDT KNUMH KOPOS.

SORT STAFFEL BY KNUMH KOPOS KLFN1.

SORT XVALUE BY KNUMH KOPOS.

ENDFORM. "BONUS_RECORD_READ

*----


*

  • FORM DISPLAY_AGREEMENT *

*----


*

  • Anzeige der Bonusabsprache *

*----


*

FORM DISPLAY_AGREEMENT.

DATA: ICON(80).

IF KONA-BOSTA <> SPACE.

READ TABLE BO WITH KEY KONA-BOSTA BINARY SEARCH.

MOVE: 'I' TO ERROR_TAB-MSGTY,

'VK' TO ERROR_TAB-MSGID,

'783' TO ERROR_TAB-MSGNO,

KONA-KNUMA TO ERROR_TAB-VBELN,

KONA-BOSTA TO ERROR_TAB-MSGV1,

BO-TEXT TO ERROR_TAB-MSGV2.

APPEND ERROR_TAB.

ENDIF.

  • Abrechnung erfolgt ?

IF ( SETTLE <> SPACE OR

PARTIAL <> SPACE ) AND

ERROR_ENQUEUE = NO AND

ERROR_ORDER_CREATE = 0 AND

ERROR_ACTUAL_CHECK = 0.

CLEAR ERROR_TAB.

MOVE: 'I' TO ERROR_TAB-MSGTY,

'VK' TO ERROR_TAB-MSGID,

'782' TO ERROR_TAB-MSGNO,

KONA-KNUMA TO ERROR_TAB-VBELN,

VBAK-VBELN TO ERROR_TAB-MSGV1.

APPEND ERROR_TAB.

ENDIF.

  • Fehler bei der Gutschriftserstellung/Verlängerung/Berechtigung

IF ERROR_ORDER_CREATE <> 0 OR

ERROR_AUTO_EXTEND <> 0 OR

ERROR_AUTH_CHECK <> 0 OR

ERROR_ACTUAL_CHECK <> 0.

  • Fehler zählen

IF KNUMA_WITH_ERROR NE KONA-KNUMA.

ADD 1 TO ERROR_COUNT.

KNUMA_WITH_ERROR = KONA-KNUMA.

ENDIF.

SELECT SINGLE * FROM T100 WHERE SPRSL = SY-LANGU

AND ARBGB = SY-MSGID

AND MSGNR = SY-MSGNO.

IF SY-SUBRC <> 0.

OUT250 = TEXT-016.

OUT250+10(2) = SY-MSGID.

OUT250+13(3) = SY-MSGNO.

OUT250+17(8) = '& & & &'.

ELSE.

OUT250 = T100-TEXT.

ENDIF.

REPLACE '&' WITH SY-MSGV1 INTO OUT250.

REPLACE '&' WITH SY-MSGV2 INTO OUT250.

REPLACE '&' WITH SY-MSGV3 INTO OUT250.

REPLACE '&' WITH SY-MSGV4 INTO OUT250. CONDENSE OUT250.

  • Merken Fehler

SY_MSGNO = SY-MSGNO.

SY_MSGID = SY-MSGID.

SY_MSGV1 = SY-MSGV1.

SY_MSGV2 = SY-MSGV2.

SY_MSGV3 = SY-MSGV3.

SY_MSGV4 = SY-MSGV4.

  • füllen Fehlertabelle für Protokoll

MOVE: SY-MSGID TO ERROR_TAB-MSGID,

SY-MSGNO TO ERROR_TAB-MSGNO,

SY-MSGTY TO ERROR_TAB-MSGTY,

SY-MSGV1 TO ERROR_TAB-MSGV1,

SY-MSGV2 TO ERROR_TAB-MSGV2,

SY-MSGV3 TO ERROR_TAB-MSGV3,

SY-MSGV4 TO ERROR_TAB-MSGV4,

KONA-KNUMA TO ERROR_TAB-VBELN.

APPEND ERROR_TAB.

  • ausgabe des Fehlers

ELSEIF WARN_AUTO_EXTEND <> 0.

  • füllen Fehlertabelle für Protokoll

LOOP at ERROR_MESSAGES.

MOVE-CORRESPONDING ERROR_MESSAGES TO ERROR_TAB.

MOVE KONA-KNUMA TO ERROR_TAB-VBELN.

APPEND ERROR_TAB.

ENDLOOP.

ELSEIF ERROR_ENQUEUE = YES.

  • Fehler zählen

IF KNUMA_WITH_ERROR NE KONA-KNUMA.

ADD 1 TO ERROR_COUNT.

KNUMA_WITH_ERROR = KONA-KNUMA.

ENDIF.

MOVE: KONA-KNUMA TO ERROR_TAB-VBELN,

'VK' TO ERROR_TAB-MSGID,

'784' TO ERROR_TAB-MSGNO,

'W' TO ERROR_TAB-MSGTY.

APPEND ERROR_TAB.

ENDIF.

ENDFORM. "DISPLAY_AGREEMENT

*----


*

  • FORM DISPLAY_AGREEMENT_END *

*----


*

  • Anzeige am Ende der Bonusabsprache *

*----


*

FORM DISPLAY_AGREEMENT_END.

DATA:

SUM_AUWRT LIKE BONUSVALUE-AUWRT,

SUM_RUWRT LIKE BONUSVALUE-RUWRT,

X_LINES LIKE SY-TABIX.

DESCRIBE TABLE XVALUE LINES X_LINES.

CHECK X_LINES > 1.

  • Summieren der Werte

LOOP AT XVALUE.

ADD XVALUE-AUWRT TO SUM_AUWRT.

ADD XVALUE-RUWRT TO SUM_RUWRT.

ENDLOOP.

FORMAT COLOR OFF.

ENDFORM. "DISPLAY_AGREEMENT_END

*----


*

  • FORM DISPLAY_CONDITION_TYPE *

*----


*

  • Anzeige der Konditionsart *

*----


*

FORM DISPLAY_CONDITION_TYPE.

IF XVAKE-KSCHL <> OLD_KSCHL.

SELECT SINGLE * FROM T685T WHERE KVEWE = 'A'

AND SPRAS = SY-LANGU

AND KAPPL = XKONA-KAPPL

AND KSCHL = XVAKE-KSCHL.

IF SY-SUBRC <> 0.

CLEAR T685T-VTEXT.

ENDIF.

ENDIF.

ENDFORM. "DISPLAY_CONDITION_TYPE

*----


*

  • FORM DISPLAY_SETTLEMENT *

*----


*

  • Ausgabe der Abrechnung *

*----


*

  • --> DS_KNUMH *

*----


*

FORM DISPLAY_SETTLEMENT USING DS_KNUMH.

  • Key für Zugriff auf Tabelle XKONP

DATA:

BEGIN OF XKONP_KEY,

MANDT LIKE SY-MANDT,

KNUMH LIKE KONP-KNUMH,

END OF XKONP_KEY.

  • Füllen Key

XKONP_KEY-MANDT = SY-MANDT.

XKONP_KEY-KNUMH = DS_KNUMH.

READ TABLE XKONP WITH KEY XKONP_KEY BINARY SEARCH.

READ TABLE XVALUE WITH KEY DS_KNUMH BINARY SEARCH.

IF SY-SUBRC NE 0.

CLEAR XVALUE.

ENDIF.

  • Ausgabe der Löschvormerkung

if xkonp-loevm_ko eq yes.

report_tab-dummy_txt = text-v12.

endif.

if listonly eq yes.

exit.

endif.

  • Ausgabe des Bonuswertes

MOVE: XVALUE-AUWRT TO REPORT_TAB-AUWRT,

XKONA-WAERS TO REPORT_TAB-WAERS,

XKONA-WAERS TO REPORT_TAB-WAERS_AU.

  • Ausgabe des Betrages

MOVE: XVALUE-KBETR TO REPORT_TAB-KBETR,

XVALUE-KONWA TO REPORT_TAB-KONWA.

IF XKONP-KRECH CA 'AHI'.

  • prozentual

MOVE DECIMALS_3 TO REPORT_TAB-KBETR_AUF.

ELSE.

  • relativ oder fixer Betrag

MOVE XVALUE-KONWA TO REPORT_TAB-KBETR_AUF.

IF XKONP-KRECH <> 'B'.

  • relativ

MOVE: TEXT-V01 TO REPORT_TAB-KMEIN_TEXT,

XKONP-KPEIN TO REPORT_TAB-KPEIN,

XKONP-KMEIN TO REPORT_TAB-KMEIN.

ENDIF.

ENDIF.

  • Konditionsbasis

MOVE XVALUE-KAWRT TO REPORT_TAB-KAWRT.

IF XKONP-KRECH CA 'ABHI'.

MOVE: XVALUE-KWAEH TO REPORT_TAB-KWAEH_AUF,

XVALUE-KWAEH TO REPORT_TAB-KWAEH.

ELSE.

MOVE: DECIMALS_3 TO REPORT_TAB-KWAEH_AUF.

WRITE XVALUE-KMEIN TO REPORT_TAB-KWAEH.

ENDIF.

  • Staffelbasis

IF XKONP-KZBZG <> SPACE.

MOVE XVALUE-KSTBS TO REPORT_TAB-KSTBS.

IF XKONP-KZBZG = 'B'.

MOVE: XKONP-KONWS TO REPORT_TAB-KONWS_AUF,

XKONP-KONWS TO REPORT_TAB-KONWS.

ELSE.

MOVE: DECIMALS_3 TO REPORT_TAB-KONWS_AUF.

WRITE XKONP-KONMS TO REPORT_TAB-KONWS.

ENDIF.

ENDIF.

  • Ausgabe des RÜckstellungswertes

MOVE: XVALUE-RUWRT TO REPORT_TAB-RUWRT,

XKONA-WAERS TO REPORT_TAB-RR_WAERS.

ENDFORM. "DISPLAY_SETTLEMENT

*----


*

  • FORM NACHWEIS *

*----


*

  • Anzeige des Einzelnachweise *

*----


*

  • --> FB_EINZEL : Einzelnachweis (YES/NO) *

*----


*

FORM NACHWEIS USING FB_EINZEL AGREEMENT.

DATA:

LLINES LIKE SY-TABIX,

TEMP_ABSPZ LIKE KONA-ABSPZ,

HLP_AGREEMENT(10) TYPE N.

  • Absprachenummer bekannt

DESCRIBE TABLE XKONA LINES LLINES.

IF AGREEMENT EQ '0000000000' AND

LLINES NE 1.

MESSAGE I310.

EXIT.

ENDIF.

  • Lesen der Absprache

IF LLINES = 1. "Genau eine Absprache

READ TABLE XKONA INDEX 1.

ELSE.

KONA_KEY-MANDT = SY-MANDT.

KONA_KEY-KNUMA = AGREEMENT.

READ TABLE XKONA WITH KEY KONA_KEY BINARY SEARCH.

ENDIF.

IF FMEMORY EQ NO.

REFRESH: XKONP, XVAKE.

  • Lesen der Bonusgutschrift

CALL FUNCTION 'SD_BONUS_READ'

EXPORTING

BONUS_AGREEMENT_IN = XKONA

CONDITION_READ = YES

TABLES

CONDITION = XKONP

CONDITION_HEADER = XKONH

CONDITION_SCALE = STAFFEL

VARIABLE_KEY = XVAKE.

ENDIF.

  • Spezifikationsgrad setzen

IF FB_EINZEL = YES.

TEMP_ABSPZ = SPACE.

ELSE.

TEMP_ABSPZ = XKONA-ABSPZ.

ENDIF.

  • Bonusempfänger lesen

PERFORM NEW_BONEM.

  • Nachweis anzeigen

IF PARTIAL = YES AND NOT XKONA-IDENT3 IS INITIAL.

CALL FUNCTION 'SD_BONUS_DRILL_DOWN_DISPLAY'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

DD_ABSPZ = TEMP_ABSPZ

DD_KURGV = KURGV

DD_KONA = XKONA

DD_DATAB = XKONA-DATAB

DD_DATBI = PADAT

DD_LIST = 'X'

TABLES

ZVAKE_TAB = XVAKE

ZKONP_TAB = XKONP.

ELSE.

CALL FUNCTION 'SD_BONUS_DRILL_DOWN_DISPLAY'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

DD_KONA = XKONA

DD_KURGV = KURGV

DD_ABSPZ = TEMP_ABSPZ

DD_LIST = 'X'

TABLES

ZVAKE_TAB = XVAKE

ZKONP_TAB = XKONP.

ENDIF.

ENDFORM. "NACHWEIS

*----


*

  • FORM NEW_AGREEMENT *

*----


*

  • Ausgabe der Bonusabsprache *

*----


*

FORM NEW_AGREEMENT.

  • Initialisierung

CLEAR ERROR_AUTO_EXTEND.

CLEAR WARN_AUTO_EXTEND.

REFRESH ERROR_MESSAGES.

CLEAR: OLD_KSCHL, OLD_KOTABNR.

  • Lesen der Konditionen

IF AUTO_EXTEND = NO.

PERFORM BONUS_RECORD_READ.

ELSE.

CHECK ERROR_AUTH_CHECK = 0.

  • BADI for Maintenance Check

DATA: BADI_INSTANCE TYPE REF TO IF_EX_AGR_MAINTENANCE_CHCK.

DATA: BADI_ACTIVE TYPE XFELD.

CALL FUNCTION 'AGR_MNT_BADI_INSTANCE_GET'

IMPORTING

E_BADI_INSTANCE = BADI_INSTANCE

E_BADI_ACTIVE = BADI_ACTIVE.

IF NOT BADI_ACTIVE IS INITIAL.

  • Check whether copying this agreement is allowed

CALL METHOD BADI_INSTANCE->AGR_MNT_COPY_CHECK

EXPORTING

I_KNUMA = KONA-KNUMA

EXCEPTIONS

OTHERS = 1.

ERROR_AUTO_EXTEND = SY-SUBRC.

ENDIF.

IF ERROR_AUTO_EXTEND IS INITIAL.

  • Verlängerung gemäß Kalender durchführen

BOOL = YES.

CALL FUNCTION 'MM_ARRANGEMENT_NEW_PERIOD'

EXPORTING

ARRANGEMENT = XKONA

I_PERIODS_AHEAD = PERIO

USE_OUTBOUND_CALL = BOOL

IMPORTING

ARRANGEMENT_NEW = *KONA "Verlängerte Absprache

TABLES

VARIABLE_KEY_NEW = XVAKE

ERROR_MESSAGES = ERROR_MESSAGES

EXCEPTIONS

OTHERS = 1.

  • Fehler merken

ERROR_AUTO_EXTEND = SY-SUBRC.

LOOP AT ERROR_MESSAGES WHERE MSGTY <> 'S'.

ENDLOOP.

IF SY-SUBRC = 0.

  • Es gab vermutlich Warnungen -> merken.

WARN_AUTO_EXTEND = 1.

ENDIF.

ENDIF.

ENDIF.

  • Ausgabe der zugehörigen Konditionen

NEW-PAGE.

TOPPAGE = 'A'.

  • Ausgabe der Bonusvereinbarung

CLEAR OLD_ALV_KSCHL.

OLD_KONA_KNUMA = KONA-KNUMA.

OLD_KONA_DATAB = KONA-DATAB.

OLD_KONA_DATBI = KONA-DATBI.

CLEAR REPORT_TAB.

LOOP AT XVAKE.

  • Anzeige der Konditionsart

PERFORM DISPLAY_CONDITION_TYPE.

IF ERROR_AUTH_CHECK = 0.

  • Aufbereitung des varaiablen Schlüssel

PERFORM XVAKE_AUFBEREITEN.

ENDIF.

  • Ausgabe der Bonusabrechnung

IF ERROR_ORDER_CREATE = 0 AND

ERROR_AUTH_CHECK = 0.

PERFORM DISPLAY_SETTLEMENT USING XVAKE-KNUMH.

ENDIF.

  • Gruppenwechsel

OLD_KSCHL = XVAKE-KSCHL.

OLD_KOTABNR = XVAKE-KOTABNR.

APPEND REPORT_TAB.

IF ERROR_AUTH_CHECK IS INITIAL AND

ERROR_AUTO_EXTEND = 0.

IF OLD_ALV_KSCHL NE XVAKE-KSCHL.

MOVE: KONA-BONEM TO BO_ALV_HEADER-BONEM,

HELP130 TO BO_ALV_HEADER-NAME1.

MOVE: OLD_KONA_KNUMA TO BO_ALV_HEADER-KNUMA,

KONA-BOTEXT TO BO_ALV_HEADER-KNUMA_TXT.

MOVE: OLD_KONA_DATAB TO BO_ALV_HEADER-DATAB,

OLD_KONA_DATBI TO BO_ALV_HEADER-DATBI.

MOVE: KONA-BOSTA TO BO_ALV_HEADER-BOSTA.

  • Auto Verlängerung erfolgt

IF AUTO_EXTEND <> SPACE AND

ERROR_AUTO_EXTEND = 0.

KONA = *KONA.

MOVE: *KONA-DATAB TO BO_ALV_HEADER-DATAB_NEW,

*KONA-DATBI TO BO_ALV_HEADER-DATBI_NEW,

*KONA-BONEM TO BO_ALV_HEADER-BONEM_NEW,

HELP130 TO BO_ALV_HEADER-NAME1_NEW,

*KONA-KNUMA TO BO_ALV_HEADER-KNUMA_NEW,

*KONA-BOTEXT TO BO_ALV_HEADER-KNUMA_TXT_NEW.

ENDIF.

MOVE: XVAKE-KSCHL TO BO_ALV_HEADER-KSCHL,

T685T-VTEXT TO BO_ALV_HEADER-KOND_TEXT,

RV13A-VAKEY1 TO BO_ALV_HEADER-VAKEY1.

  • Datum auf Konditionsebene abweichend ?

IF BO_ALV_HEADER-DATAB NE XVAKE-DATAB OR

BO_ALV_HEADER-DATBI NE XVAKE-DATBI.

MOVE: XVAKE-DATAB TO BO_ALV_HEADER-KOND_DATAB,

XVAKE-DATBI TO BO_ALV_HEADER-KOND_DATBI.

ELSE.

CLEAR: BO_ALV_HEADER-KOND_DATAB,

BO_ALV_HEADER-KOND_DATBI.

ENDIF.

APPEND BO_ALV_HEADER.

ENDIF.

OLD_ALV_KSCHL = XVAKE-KSCHL.

ENDIF.

ENDLOOP.

  • Ausgabe der Bonusabrechnung

IF ERROR_ORDER_CREATE = 0 AND

ERROR_AUTH_CHECK = 0.

  • PERFORM DISPLAY_AGREEMENT_END.

ENDIF.

  • Einzelnachweis anzeigen

IF BOPRINT <> SPACE AND

ERROR_AUTH_CHECK = 0 AND

SY-BATCH = YES.

NEW-PAGE.

TOPPAGE = 'B'.

IF PARTIAL = YES AND NOT XKONA-IDENT3 IS INITIAL.

CALL FUNCTION 'SD_BONUS_REPORT_NO_READ'

EXPORTING

RR_ABSPZ = XKONA-ABSPZ

RR_KONA = XKONA

RR_KURGV = KURGV

RR_LEAVE_TO_LIST_PROCESSING = NO

RR_DATAB = XKONA-DATAB

RR_DATBI = PADAT

TABLES

ZVAKE_TAB = XVAKE

ZKONP_TAB = XKONP.

ELSE.

CALL FUNCTION 'SD_BONUS_REPORT_NO_READ'

EXPORTING

RR_ABSPZ = XKONA-ABSPZ

RR_KONA = XKONA

RR_KURGV = KURGV

RR_LEAVE_TO_LIST_PROCESSING = NO

RR_LIST = LIST_NUMBER

TABLES

ZVAKE_TAB = XVAKE

ZKONP_TAB = XKONP.

ENDIF.

ENDIF.

ENDFORM. "NEW_AGREEMENT

*----


*

  • FORM NEW_BONEM *

*----


*

  • Neuer Kunde *

*----


*

FORM NEW_BONEM.

  • Bonusempfänger bereits gelesen ?

IF VTCOM-KUNNR NE XKONA-BONEM OR

VTCOM-VKORG NE XKONA-VKORG OR

VTCOM-VTWEG NE XKONA-VTWEG OR

VTCOM-SPART NE XKONA-SPART.

CLEAR VTCOM.

VTCOM-KUNNR = XKONA-BONEM.

VTCOM-VKORG = XKONA-VKORG.

VTCOM-VTWEG = XKONA-VTWEG.

VTCOM-SPART = XKONA-SPART.

  • Lesen Bonusempfänger

CALL FUNCTION 'VIEW_KURGV'

EXPORTING

COMWA = VTCOM

IMPORTING

RGWA = KURGV

EXCEPTIONS

OTHERS = 1.

  • Bonusempfänger nicht vorhanden ?

IF SY-SUBRC <> 0.

CALL FUNCTION 'MESSAGE_TEXT_BUILD'

EXPORTING

MSGID = SY-MSGID

MSGNR = SY-MSGNO

MSGV1 = SY-MSGV1

MSGV2 = SY-MSGV2

MSGV3 = SY-MSGV3

MSGV4 = SY-MSGV4

IMPORTING

MESSAGE_TEXT_OUTPUT = HELP130

EXCEPTIONS

OTHERS = 1.

EXIT.

ENDIF.

HELP130 = KURGV-NAME1.

OFFSET = STRLEN( KURGV-NAME1 ).

WRITE ',' TO HELP130+OFFSET(1).

HELP130+42(40) = KURGV-ORT01.

IF NOT KURGV-TELF1 IS INITIAL.

HELP130+80(1) = ','.

HELP130+82(40) = KURGV-TELF1.

ENDIF.

CONDENSE HELP130.

ENDIF.

ENDFORM. "NEW_BONEM

*----


*

  • FORM NEW_ORGA_DATA *

*----


*

  • Ermitteln der Organisationsdaten *

*----


*

FORM NEW_ORGA_DATA .

OLD_BONEM = '$$%%&&%%'.

ENDFORM. "NEW_ORGA_DATA

*----


*

  • FORM ORG_DATEN_SETZEN *

*----


*

  • ........ *

*----


*

  • --> ODS_KNUMA *

*----


*

FORM ORG_DATEN_SETZEN USING ODS_KNUMA.

  • Bonusabsprache lesen

KONA_KEY-MANDT = SY-MANDT.

KONA_KEY-KNUMA = ODS_KNUMA.

READ TABLE XKONA WITH KEY KONA_KEY BINARY SEARCH.

  • Reset der Organisationsdaten

IF SY-SUBRC <> 0.

CLEAR: XKONA-VKORG, XKONA-VTWEG, XKONA-SPART.

ENDIF.

ENDFORM. "ORG_DATEN_SETZEN

*----


*

  • FORM SELECTION_VIA_KNUMA *

*----


*

  • SELECTION über die Absprachenummer *

*----


*

FORM SELECTION_VIA_KNUMA.

SELECT * FROM KONA INTO TABLE XKONA

WHERE KNUMA IN KNUMA

AND BONEM IN BONEM

AND BOSTA IN X_BOSTA

AND DATBI >= ABRDAT_L

AND DATBI <= ABRDATE

AND VKORG IN VKORG

AND VTWEG IN VTWEG

AND SPART IN SPART

AND IDENT2 IN IDENT2

AND IDENT3 IN IDENT3

AND ABTYP EQ 'A'

AND KAPPL EQ 'V '.

ENDFORM. "SELECTION_VIA_KNUMA

*----


*

  • FORM SELECTION_VIA_BONEM *

*----


*

  • SELECTION über den Bonusempfänger *

*----


*

FORM SELECTION_VIA_BONEM.

SELECT * FROM M_VMBOA WHERE BONEM IN BONEM

AND BOSTA IN X_BOSTA

AND KODATBI >= ABRDAT_L

AND KODATBI <= ABRDATE

AND VKORG IN VKORG

AND VTWEG IN VTWEG

AND SPART IN SPART.

  • SELECTIONstabelle füllen

X_KNUMA-SIGN = 'I'.

X_KNUMA-OPTION = 'EQ'.

X_KNUMA-LOW = M_VMBOA-KNUMA.

APPEND X_KNUMA.

ENDSELECT.

  • SELECTION über KNUMA durchführen

PERFORM SELECTION_VIA_X_KNUMA.

ENDFORM. "SELECTION_VIA_BONEM

*----


*

  • FORM SELECTION_VIA_BOSTA *

*----


*

  • SELECTION gemäß Status *

*----


*

FORM SELECTION_VIA_BOSTA.

SELECT * FROM M_VMBOC WHERE BOSTA IN X_BOSTA

AND BONEM IN BONEM

AND KODATBI >= ABRDAT_L

AND KODATBI <= ABRDATE

AND VKORG IN VKORG

AND VTWEG IN VTWEG

AND SPART IN SPART.

  • SELECTIONstabelle füllen

X_KNUMA-SIGN = 'I'.

X_KNUMA-OPTION = 'EQ'.

X_KNUMA-LOW = M_VMBOC-KNUMA.

APPEND X_KNUMA.

ENDSELECT.

  • SELECTION über KNUMA durchführen

PERFORM SELECTION_VIA_X_KNUMA.

ENDFORM. "SELECTION_VIA_BOSTA

*----


*

  • FORM SELECTION_VIA_X_KNUMA *

*----


*

  • SELECTION über die Absprachenummer *

*----


*

FORM SELECTION_VIA_X_KNUMA.

  • Anzahl der aktuellen Sätze

DATA:

NUMBER_KNUMA_ACT(2) TYPE P.

  • Initialisierung

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMA.

  • Sortieren der SELECTIONstabelle

SORT X_KNUMA BY SIGN OPTION LOW.

  • Abarbeiten der SELECTIONstabelle

LOOP AT X_KNUMA.

  • Übernahem in SELECTIONstabelle

MOVE X_KNUMA TO KNUMA.

APPEND KNUMA.

ADD 1 TO NUMBER_KNUMA_ACT.

  • maximale Anzahl in SELECTIONstabelle erreicht ?

IF NUMBER_KNUMA_ACT = 50.

  • Aufnahme in interne Tabelle

SELECT * FROM KONA APPENDING TABLE XKONA

WHERE KNUMA IN KNUMA

AND IDENT2 IN IDENT2

AND IDENT3 IN IDENT3

ORDER BY KNUMA.

  • Initialisierung

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMA.

ENDIF.

ENDLOOP.

  • Lesen der übrigen Einträge ( Es sind noch Einträge in KNUMA )

IF NUMBER_KNUMA_ACT <> 0.

  • Aufnahme in interne Tabelle

SELECT * FROM KONA APPENDING TABLE XKONA

WHERE KNUMA IN KNUMA

AND IDENT2 IN IDENT2

AND IDENT3 IN IDENT3

ORDER BY KNUMA.

  • Initialisierung

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMA.

ENDIF.

ENDFORM. "SELECTION_VIA_X_KNUMA

*----


*

  • FORM SET_BOSTA *

*----


*

  • Setzen des Status für die Bonusabsprache *

*----


*

FORM SET_BOSTA.

DATA:

NUMBER_KNUMA_ACT(2) TYPE P.

DATA: L_XKONA LIKE KONA,

L_YKONA LIKE KONA.

DATA: TL_XKONP LIKE KONPDB OCCURS 0 WITH HEADER LINE,

TL_YKONP LIKE KONPDB OCCURS 0 WITH HEADER LINE.

CHECK XKONA-BOSTA NE 'D'.

  • Bereiche für die KONP-selektion

RANGES KNUMH_SELECT FOR KONP-KNUMH.

RANGES SB_KNUMH FOR KONP-KNUMH.

  • Setzen Status in der Absprache

UPDATE KONA SET BOSTA = 'C' WHERE KNUMA = XKONA-KNUMA.

  • Änderungsbelege

L_XKONA-BOSTA = 'C'.

L_XKONA-KNUMA = XKONA-KNUMA.

L_YKONA-KNUMA = XKONA-KNUMA.

L_YKONA-BOSTA = XKONA-BOSTA.

CALL FUNCTION 'SD_AGREEMENT_CHANGE_DOCS_WRITE'

EXPORTING

P_XKONA = L_XKONA

P_YKONA = L_YKONA

UPDATE_SIGN = 'U'.

  • Initialisierung

REFRESH SB_KNUMH.

LOOP AT XKONP.

SB_KNUMH-SIGN = 'I'.

SB_KNUMH-OPTION = 'EQ'.

SB_KNUMH-LOW = XKONP-KNUMH.

APPEND SB_KNUMH.

ENDLOOP.

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMH_SELECT.

  • Abarbeiten der Selektionstabelle

LOOP AT SB_KNUMH.

  • Übernahem in Selektionstabelle

MOVE SB_KNUMH TO KNUMH_SELECT.

APPEND KNUMH_SELECT.

ADD 1 TO NUMBER_KNUMA_ACT.

  • maximale Anzahl in Selektionstabelle erreicht ?

IF NUMBER_KNUMA_ACT = 50.

  • Setzen des Status

UPDATE KONP SET BOSTA = 'C'

WHERE KNUMH IN KNUMH_SELECT.

  • Initialisierung

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMH_SELECT.

ENDIF.

ENDLOOP.

  • Lesen der übrigen Einträge ( Es sind noch Einträge in KNUMH_SELECT )

IF NUMBER_KNUMA_ACT <> 0.

  • Setzen des Status

UPDATE KONP SET BOSTA = 'C'

WHERE KNUMH IN KNUMH_SELECT.

  • Initialisierung

CLEAR NUMBER_KNUMA_ACT.

REFRESH KNUMH_SELECT.

ENDIF.

  • Änderungsbelege

TL_XKONP-BOSTA = 'C'.

TL_XKONP-MANDT = SY-MANDT.

LOOP AT XKONP.

TL_XKONP-KNUMH = XKONP-KNUMH.

TL_YKONP-KNUMH = XKONP-KNUMH.

TL_YKONP-MANDT = SY-MANDT.

TL_YKONP-BOSTA = XKONP-BOSTA.

APPEND TL_XKONP.

APPEND TL_YKONP.

ENDLOOP.

CALL FUNCTION 'SD_KONP_CHANGE_DOCS_WRITE'

TABLES

P_XKONP = TL_XKONP

P_YKONP = TL_YKONP.

  • Send Changes of Rebate Status to Middleware

LOOP AT XKONP.

MOVE-CORRESPONDING XKONP TO TL_XKONP.

MOVE-CORRESPONDING XKONP TO TL_YKONP.

TL_XKONP-BOSTA = 'C'.

TL_XKONP-UPDKZ = 'U'.

MODIFY TL_XKONP INDEX SY-TABIX.

MODIFY TL_YKONP INDEX SY-TABIX.

ENDLOOP.

CALL FUNCTION 'OPEN_FI_PERFORM_00503301_BOSTA'

EXPORTING

I_XKONP_COMPLETE = 'X'

I_NEW_BOSTA = 'C'

TABLES

T_XKONP = TL_XKONP

T_YKONP = TL_YKONP

T_XVAKE = XVAKE.

DATA: BEGIN OF TL_XKONA OCCURS 0.

INCLUDE STRUCTURE KONA.

DATA: END OF TL_XKONA.

DATA: BEGIN OF TL_YKONA OCCURS 0.

INCLUDE STRUCTURE KONA.

DATA: END OF TL_YKONA.

TL_XKONA = L_XKONA.

APPEND TL_XKONA.

TL_YKONA = L_YKONA.

APPEND TL_YKONA.

CALL FUNCTION 'OPEN_FI_PERFORM_00503310_BOSTA'

EXPORTING

I_NEW_BOSTA = 'C'

TABLES

T_XKONA = TL_XKONA

T_YKONA = TL_YKONA.

ENDFORM. "SET_BOSTA

*----


*

  • FORM SET_CURRENCY *

*----


*

  • ........ *

*----


*

FORM SET_CURRENCY USING VALUE(DA_KNUMA) LIKE KONA-KNUMA

VALUE(DA_CURRENCY_OLD) LIKE KONA-WAERS

VALUE(DA_CURRENCY_NEW) LIKE KONA-WAERS.

DATA: L_XKONA LIKE KONA,

L_YKONA LIKE KONA.

  • Bonusabsprache initial ?

CHECK NOT DA_KNUMA IS INITIAL.

  • Setzen der Absprachewährung auf EURO

UPDATE KONA SET WAERS = DA_CURRENCY_NEW WHERE KNUMA = DA_KNUMA.

  • Änderungsbelege

L_XKONA-KNUMA = DA_KNUMA.

L_XKONA-WAERS = DA_CURRENCY_NEW.

L_YKONA-KNUMA = DA_KNUMA.

L_YKONA-WAERS = DA_CURRENCY_OLD.

CALL FUNCTION 'SD_AGREEMENT_CHANGE_DOCS_WRITE'

EXPORTING

P_XKONA = L_XKONA

P_YKONA = L_YKONA

UPDATE_SIGN = 'U'.

ENDFORM. "SET_CURRENCY

*----


*

  • FORM SPERREN_KONA_AUFHEBEN *

*----


*

  • Die Bonusabsprache wird entsperrt *

*----


*

  • --> KE_KNUMA : BONUSABSPRACHE *

*----


*

FORM SPERREN_KONA_AUFHEBEN USING SKA_KNUMA.

  • Bonusabsprache initial ?

CHECK NOT SKA_KNUMA IS INITIAL.

  • Entsperren Kontakt

CALL FUNCTION 'DEQUEUE_EVKONAE'

EXPORTING

KNUMA = SKA_KNUMA

MANDT = SY-MANDT.

ENDFORM. "SPERREN_KONA_AUFHEBEN

*----


*

  • FORM SPERREN_KONA *

*----


*

  • Die Bonusabsprache wird entsperrt *

*----


*

  • --> SK_KNUMA : Bonusabsprache *

  • --> SK_ERROR : Ausgabe einer Fehlermeldung (YES/NO) *

  • --> SK_SUBRC : Returncode : 0 - Kontakt wurde gesperrt *

  • 2 - Kontakt ist bereits gesperrt *

  • 3 - Fehler beim Sperren *

*----


*

FORM SPERREN_KONA USING SK_KNUMA SK_ERROR SK_SUBRC.

  • Reset Returncode

CLEAR SK_SUBRC.

  • Kontaktnummer nicht initial ?

CHECK NOT SK_KNUMA IS INITIAL.

  • Sperren Kontakt

CALL FUNCTION 'ENQUEUE_EVKONAE'

EXPORTING

MANDT = SY-MANDT

KNUMA = SK_KNUMA

EXCEPTIONS

FOREIGN_LOCK = 2

SYSTEM_FAILURE = 3.

  • Fehlermeldung ausgaben

IF SK_ERROR = YES AND

SY-SUBRC <> 0.

CASE SY-SUBRC.

WHEN 2.

MESSAGE E162 WITH SK_KNUMA.

WHEN 3.

MESSAGE E163.

ENDCASE.

ENDIF.

  • Zurückgeben Returncode

SK_SUBRC = SY-SUBRC.

ENDFORM. "SPERREN_KONA

*----


*

  • FORM PREPARE_SELECTION *

*----


*

  • SELECTIONsdaten vorbereiten *

*----


*

FORM PREPARE_SELECTION.

DATA:

HELP_CHAR LIKE KONA-BOSTA,

ABCD(5) VALUE 'ABCD'.

  • Pf-Status setzen

IF FMEMORY = SPACE.

IF LISTONLY IS INITIAL.

  • Abrechnung

WRITE ABRDATE DD/MM/YYYY TO OUT_10.

SET PF-STATUS 'LISTN'.

SET TITLEBAR 'LI1' WITH OUT_10.

ELSE.

  • Listanzeigen

SET PF-STATUS 'LISTO'.

SET TITLEBAR 'LI2' WITH OUT_10.

ENDIF.

ELSE.

  • Call über Memory

SET PF-STATUS 'LISTM'.

SET TITLEBAR 'LI3'.

ENDIF.

  • Kennzeichen für Abrechnung setzen

IF SETTLE CA NO_ENTRY.

SETTLE = NO.

ELSE.

SETTLE = YES.

ENDIF.

  • Kenzeichen für Nachweis setzen

IF BOPRINT CA NO_ENTRY.

BOPRINT = NO.

ELSE.

BOPRINT = YES.

ENDIF.

  • offene selektieren

IF BOPEN CN NO_ENTRY.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = SPACE.

APPEND X_BOSTA.

ENDIF.

  • zu prüfende selektieren

IF BCHECK CN NO_ENTRY.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'A'.

APPEND X_BOSTA.

ENDIF.

  • freigegebene selektieren

IF BREADY CN NO_ENTRY.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'B'.

APPEND X_BOSTA.

ENDIF.

  • Gutschriftsanforderung erstellt

IF SETTLE = NO.

IF BCREDI CN NO_ENTRY.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'C'.

APPEND X_BOSTA.

ENDIF.

  • endabgerechnet

IF BSETTLE CN NO_ENTRY.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'D'.

APPEND X_BOSTA.

ENDIF.

ENDIF.

  • Kontrollauf ==> nur Status 'D' selektieren

IF CONTROL CN NO_ENTRY.

CLEAR X_BOSTA.

REFRESH X_BOSTA.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'D'.

APPEND X_BOSTA.

SETTLE = YES. "Absprache nochmals abrechnen

ENDIF.

IF CONTTST CN NO_ENTRY.

CLEAR X_BOSTA.

REFRESH X_BOSTA.

X_BOSTA-SIGN = 'I'.

X_BOSTA-OPTION = 'EQ'.

X_BOSTA-LOW = 'D'.

APPEND X_BOSTA.

SETTLE = NO. "Nur Umsatzanzeige

CONTROL = YES.

ENDIF.

  • Größe der Selektionstabellen

DESCRIBE TABLE KNUMA LINES KNUMA_LINES.

DESCRIBE TABLE BONEM LINES BONEM_LINES.

  • Überschrift

IF FMEMORY IS INITIAL.

OUT_132 = TEXT-001.

WRITE ABRDATE DD/MM/YYYY TO OUT_10.

REPLACE '&1' WITH OUT_10 INTO OUT_132.

WRITE SY-DATLO DD/MM/YYYY TO OUT_10.

REPLACE '&2' WITH OUT_10 INTO OUT_132.

ENDIF.

  • Ermitteln der Texte zum Bonusstatus

DO 4 TIMES VARYING HELP_CHAR FROM ABCD(1) NEXT ABCD+1(1) RANGE ABCD.

DD07V-DOMNAME = 'BOSTA'.

DD07V-DOMVALUE_L = HELP_CHAR.

CALL FUNCTION 'RV_DOMAIN_VALUE_TEXTS'

EXPORTING

DOMNAME = DD07V-DOMNAME

DOMVALUE = DD07V-DOMVALUE_L

IMPORTING

DDTEXT = BO-TEXT.

BO-BOSTA = HELP_CHAR.

APPEND BO.

ENDDO.

SORT BO BY BOSTA.

ENDFORM. "PREPARE_SELECTION

*----


*

  • FORM SET_STATUS *

*----


*

  • Setzen des Bonusstatus *

*----


*

  • --> SS_KNUMA : Bonusabsprache *

  • --> SS_BOSTA : Zu setzender Status *

*----


*

FORM SET_STATUS USING SS_KNUMA SS_BOSTA.

  • Bonusabsprache übergeben ?

IF SS_KNUMA IS INITIAL.

MESSAGE I310.

EXIT.

ENDIF.

  • Bonusabsprache lesen

KONA_KEY-MANDT = SY-MANDT.

KONA_KEY-KNUMA = SS_KNUMA.

READ TABLE XKONA WITH KEY KONA_KEY BINARY SEARCH.

KONA = XKONA.

READ_TABIX = SY-TABIX.

  • BADI for Maintenance Check

DATA: BADI_INSTANCE TYPE REF TO if_ex_agr_maintenance_chck.

DATA: BADI_ACTIVE TYPE XFELD.

CALL FUNCTION 'AGR_MNT_BADI_INSTANCE_GET'

IMPORTING

E_BADI_INSTANCE = BADI_INSTANCE

E_BADI_ACTIVE = BADI_ACTIVE.

IF NOT BADI_ACTIVE IS INITIAL.

  • Check whether changing this agreement is allowed

CALL METHOD BADI_INSTANCE->AGR_MNT_CHANGE_CHECK

EXPORTING

I_KNUMA = KONA-KNUMA

I_DISPLAY_MESSAGE = 'X'

I_MESSAGE_TYPE = 'I'

EXCEPTIONS

OTHERS = 1.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

ENDIF.

  • Freigabe prüfen: Status ist offen ?

IF SS_BOSTA = 'A' AND

KONA-BOSTA <> ' ' .

MESSAGE I311 WITH KONA-KNUMA KONA-BOSTA.

  • Freigabe Status ist offen oder Freigabe prüfen ?

ELSEIF SS_BOSTA = 'B' AND

KONA-BOSTA NA ' A'.

MESSAGE I312 WITH KONA-KNUMA KONA-BOSTA.

ELSE.

  • Sperren Bonus

CHECK KONA-BOSTA NE 'D'. "nur, wenn noch nicht gesperrt

PERFORM SPERREN_KONA USING SS_KNUMA NO READ_SUBRC.

IF READ_SUBRC <> 0.

MESSAGE I162 WITH SS_KNUMA.

EXIT.

ENDIF.

  • Setzen des Status

XKONA-BOSTA = SS_BOSTA.

CALL FUNCTION 'SD_BONUS_STATUS_SET' IN UPDATE TASK

EXPORTING

BONUS_AGREEMENT = KONA

NEW_STATUS = SS_BOSTA

TABLES

KONP_DB = XKONP.

COMMIT WORK.

  • Status in interne Tabelle zurückschreiben

MODIFY XKONA INDEX READ_TABIX.

MESSAGE I313 WITH KONA-KNUMA SS_BOSTA.

ENDIF.

ENDFORM. "SET_STATUS

*----


*

  • FORM XVAKE_AUFBEREITEN *

*----


*

  • Aufbereitung des varaiablen Schlüssels für die Anzeige *

*----


*

FORM XVAKE_AUFBEREITEN.

DATA:

OLD_COMP(101), NEW_COMP(101), XXX_KEY(101),

KEY_130(130),

POSI(2) TYPE P,

LENGTH_LINE(2) TYPE P,

LENGTH_SPACE(2) TYPE P,

CURRENT_OFFSET(3) TYPE P,

LENGTH_FIELD(3) TYPE P.

  • Tabelle T681 für DB-Konditionstabell ermitteln

IF T681-KVEWE <> BONUS_KVEWE OR

T681-KOTABNR <> XVAKE-KOTABNR.

SELECT SINGLE * FROM T681 WHERE KVEWE = BONUS_KVEWE

AND KOTABNR = XVAKE-KOTABNR.

  • Setzen des Programms für den Aufbau

PERFORM SET_ACCESS_PROGRAM(SAPMV130)

USING BONUS_KVEWE XVAKE-KOTABNR ACCESS_PROGRAM.

ENDIF.

  • KOMG aus dem ersten Eintrag füllen

PERFORM FILL_KOMG_FROM_VAKEY IN PROGRAM (ACCESS_PROGRAM)

USING KOMG XVAKE-VAKEY.

  • Aufbereiten des Variablen Schlüssels

CALL FUNCTION 'KOMG_TO_2LINES_OFFSET'

EXPORTING

COMM_FIELDS = KOMG

CONDITION_STRUCTURE = T681-KOTAB

IMPORTING

FIELDS_STRING = RV13A-VAKEY2

TEXT_STRING = RV13A-VAKEY1

TABLES

OFFSET_TAB = OFFSET_TAB

EXCEPTIONS

OTHERS = 1.

  • Nächste Position ermitteln

LOOP AT OFFSET_TAB.

OFFSET = OFFSET_TAB-CURRENT.

LENGTH_LINE = LENGTH_LINE + 1.

ENDLOOP.

ADD OFFSET TO LENGTH_LINE.

  • Ermitteln der Zeilenlänge

LENGTH_LINE = LENGTH_LINE + 66.

LENGTH_SPACE = SY-LINSZ - LENGTH_LINE.

IF LENGTH_SPACE GT 0.

ASSIGN X_SPACE(LENGTH_SPACE) TO .

ENDIF.

  • Ausgabe des Datums

ADD 46 TO OFFSET.

  • Ausgabe des variablen Schlüssels

  • IF OLD_KOTABNR <> XVAKE-KOTABNR OR

  • XVAKE-KSCHL <> OLD_KSCHL.

  • X_INTENSIFIED = YES.

  • Anzeige der Keyfelder

  • LOOP AT OFFSET_TAB.

  • LENGTH_FIELD = OFFSET_TAB-CURRENT - CURRENT_OFFSET.

  • IF SY-TABIX <> 1.

  • ASSIGN RV13A-VAKEY1+CURRENT_OFFSET(LENGTH_FIELD) TO <OUTPUT>.

  • MOVE <OUTPUT> TO REPORT_TAB-VAKEY1+POSI.

  • POSI = POSI + LENGTH_FIELD + 1.

  • ENDIF.

  • CURRENT_OFFSET = OFFSET_TAB-CURRENT.

  • OFFSET = OFFSET_TAB-CURRENT.

  • ENDLOOP.

  • ASSIGN RV13A-VAKEY1+OFFSET(18) TO <OUTPUT>.

  • MOVE RV13A-VAKEY1 TO REPORT_TAB-VAKEY1.

  • POSI = POSI + 19.

  • CLEAR OLD_KEY.

  • ENDIF.

MOVE: XVAKE-KSCHL TO REPORT_TAB-KSCHL,

T685T-VTEXT TO REPORT_TAB-KOND_TEXT,

XVAKE-KNUMA TO REPORT_TAB-KNUMA,

XVAKE-DATAB TO REPORT_TAB-DATAB,

XVAKE-DATBI TO REPORT_TAB-DATBI,

SPACE TO REPORT_TAB-DUMMY_TXT.

IF AUTO_EXTEND = YES. "Verlängerung der Absprache

MOVE: OLD_KONA_KNUMA TO REPORT_TAB-KNUMA. "alte Absprachenummer

ENDIF.

  • Aufbereitung KEY

  • LOOP AT OFFSET_TAB.

  • LENGTH_FIELD = OFFSET_TAB-CURRENT - CURRENT_OFFSET.

  • IF SY-TABIX <> 1.

  • ASSIGN RV13A-VAKEY2+CURRENT_OFFSET(LENGTH_FIELD) TO <OUTPUT>.

  • MOVE <OUTPUT> TO REPORT_TAB-VAKEY2+POSI.

  • POSI = POSI + LENGTH_FIELD + 1.

  • ENDIF.

  • CURRENT_OFFSET = OFFSET_TAB-CURRENT.

  • OFFSET = OFFSET_TAB-CURRENT.

  • ENDLOOP.

WRITE: RV13A-VAKEY1 TO REPORT_TAB-VAKEY1,

RV13A-VAKEY2 TO REPORT_TAB-VAKEY2.

  • move RV13A-VAKEY2 to report_tab-vakey2.

  • Alten Key sichern

NEW_KEY = XVAKE-KSCHL.

NEW_KEY+5(20) = T685T-VTEXT.

NEW_KEY+26(75) = RV13A-VAKEY2.

XXX_KEY = OLD_KEY.

OLD_KEY = NEW_KEY.

  • gleiche Key-Felder ausblenden

LOOP AT OFFSET_TAB.

CLEAR: OLD_COMP, NEW_COMP.

ADD 25 TO OFFSET_TAB-CURRENT.

WRITE XXX_KEY TO OLD_COMP(OFFSET_TAB-CURRENT).

WRITE NEW_KEY TO NEW_COMP(OFFSET_TAB-CURRENT).

  • Gleichheit in den Feldern

IF OLD_COMP = NEW_COMP.

WRITE SPACE TO NEW_KEY(OFFSET_TAB-CURRENT).

WRITE SPACE TO XXX_KEY(OFFSET_TAB-CURRENT).

ELSE.

EXIT.

ENDIF.

ENDLOOP.

  • Ausgabe der Keyfelder

KEY_130 = NEW_KEY.

ENDFORM. "XVAKE_AUFBEREITEN

*----


*

  • FORM alv_fieldcat_build *

*----


*

  • ........ *

*----


*

FORM ALV_FIELDCAT_BUILD.

IF LISTONLY EQ YES AND

AUTO_EXTEND NE YES.

PERFORM ALV_FIELDCAT_LIST.

ELSEIF AUTO_EXTEND EQ YES.

PERFORM ALV_FIELDCAT_EXTEND.

ELSEIF CHANGE_CURR EQ YES.

PERFORM ALV_FIELDCAT_ABSPRACH.

ELSE.

PERFORM ALV_FIELDCAT_UMSATZ.

ENDIF.

ENDFORM. "ALV_FIELDCAT_BUILD

*----


*

  • FORM alv_fieldcat_umsatz *

*----


*

  • ........ *

*----


*

FORM ALV_FIELDCAT_UMSATZ.

DATA: BO_ALV_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Feldkatalog Listkopf

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = B_REPID

I_INTERNAL_TABNAME = 'BO_ALV_HEADER'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'CHECKBOX'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-HOTSPOT = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H01.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-ROW_POS = 3.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

ENDCASE.

ENDLOOP.

  • Feldkatalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = 'RV15CI03'

I_INTERNAL_TABNAME = 'REPORT_TAB'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'KAPPL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'MATNR'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONBAS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONSTA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DECIMALS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KPEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY2'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'AUWRT'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS_AU'.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR'.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWA'.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KAWRT'.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH'.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSTBS'.

BO_ALV_FIELDCAT-COL_POS = 7.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS'.

BO_ALV_FIELDCAT-COL_POS = 8.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RUWRT'.

BO_ALV_FIELDCAT-COL_POS = 9.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RR_WAERS'.

BO_ALV_FIELDCAT-COL_POS = 10.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DUMMY_TXT'.

bo_alv_fieldcat-col_pos = 11.

bo_alv_fieldcat-row_pos = 2.

bo_alv_fieldcat-key = ' '.

bo_alv_fieldcat-tabname = b_tabname_item.

MODIFY bo_fieldcat FROM bo_alv_fieldcat.

ENDCASE.

ENDLOOP.

ENDFORM. "ALV_FIELDCAT_UMSATZ

*----


*

  • FORM ALV_FIELDCAT_LIST *

*----


*

  • ........ *

*----


*

FORM ALV_FIELDCAT_LIST.

DATA: BO_ALV_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Feldkatalog Listkopf

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = B_REPID

I_INTERNAL_TABNAME = 'BO_ALV_HEADER'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'CHECKBOX'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H01.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BOSTA'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 7.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-ROW_POS = 3.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

ENDCASE.

ENDLOOP.

  • Feldkatalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = 'RV15CI03'

I_INTERNAL_TABNAME = 'REPORT_TAB'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'KAPPL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'AUWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS_AU'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWA'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KAWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSTBS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RUWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RR_WAERS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONBAS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONSTA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DECIMALS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KPEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'MATNR'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY2'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DUMMY_TXT'.

bo_alv_fieldcat-col_pos = 2.

bo_alv_fieldcat-row_pos = 1.

bo_alv_fieldcat-key = ' '.

bo_alv_fieldcat-tabname = b_tabname_item.

MODIFY bo_fieldcat FROM bo_alv_fieldcat.

ENDCASE.

ENDLOOP.

ENDFORM. "ALV_FIELDCAT_LIST

*----


*

  • FORM ALV_FIELDCAT_Absprach *

*----


*

  • ........ *

*----


*

FORM ALV_FIELDCAT_ABSPRACH.

DATA: BO_ALV_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Feldkatalog Listkopf

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = B_REPID

I_INTERNAL_TABNAME = 'BO_ALV_HEADER'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'CHECKBOX'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H01.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-ROW_POS = 3.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI_NEW'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

ENDCASE.

ENDLOOP.

  • Feldkatalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = 'RV15CI03'

I_INTERNAL_TABNAME = 'REPORT_TAB'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'KAPPL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'MATNR'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONBAS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONSTA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DECIMALS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KPEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY2'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'AUWRT'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS_AU'.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR'.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWA'.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KAWRT'.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH'.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSTBS'.

BO_ALV_FIELDCAT-COL_POS = 7.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS'.

BO_ALV_FIELDCAT-COL_POS = 8.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RUWRT'.

BO_ALV_FIELDCAT-COL_POS = 9.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RR_WAERS'.

BO_ALV_FIELDCAT-COL_POS = 10.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DUMMY_TXT'.

bo_alv_fieldcat-col_pos = 11.

bo_alv_fieldcat-row_pos = 2.

bo_alv_fieldcat-key = ' '.

bo_alv_fieldcat-tabname = b_tabname_item.

MODIFY bo_fieldcat FROM bo_alv_fieldcat.

ENDCASE.

ENDLOOP.

ENDFORM. "ALV_FIELDCAT_ABSPRACH

*----


*

  • FORM ALV_FIELDCAT_EXTEND *

*----


*

  • ........ *

*----


*

FORM ALV_FIELDCAT_EXTEND.

DATA: BO_ALV_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  • Feldkatalog Listkopf

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = B_REPID

I_INTERNAL_TABNAME = 'BO_ALV_HEADER'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'CHECKBOX'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H01.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA_TXT_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'BONEM_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 3.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'NAME1_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H01.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI_NEW'.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-COL_POS = 6.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATAB'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_DATBI'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_HEADER.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

ENDCASE.

ENDLOOP.

  • Feldkatalog

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = 'RV15CI03'

I_INTERNAL_TABNAME = 'REPORT_TAB'

I_INCLNAME = 'RV15CI03'

CHANGING

CT_FIELDCAT = BO_FIELDCAT.

LOOP AT BO_FIELDCAT INTO BO_ALV_FIELDCAT.

CHECK BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

CASE BO_ALV_FIELDCAT-FIELDNAME.

WHEN 'KAPPL'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KNUMA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'AUWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS_AU'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWA'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KAWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSTBS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RUWRT'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-DO_SUM = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'RR_WAERS'.

BO_ALV_FIELDCAT-NO_OUT = 'X'.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'MATNR'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-KEY = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KWAEH_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONWS_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KBETR_AUF'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONBAS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KONSTA'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DECIMALS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'WAERS'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KPEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KMEIN_TEXT'.

BO_ALV_FIELDCAT-TECH = 'X'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KSCHL'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'KOND_TEXT'.

BO_ALV_FIELDCAT-COL_POS = 2.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATAB'.

BO_ALV_FIELDCAT-COL_POS = 4.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DATBI'.

BO_ALV_FIELDCAT-COL_POS = 5.

BO_ALV_FIELDCAT-ROW_POS = 1.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY1'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 2.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'VAKEY2'.

BO_ALV_FIELDCAT-COL_POS = 1.

BO_ALV_FIELDCAT-ROW_POS = 3.

BO_ALV_FIELDCAT-KEY = ' '.

BO_ALV_FIELDCAT-SELTEXT_M = TEXT-H02.

BO_ALV_FIELDCAT-DDICTXT = 'M'.

BO_ALV_FIELDCAT-TABNAME = B_TABNAME_ITEM.

MODIFY BO_FIELDCAT FROM BO_ALV_FIELDCAT.

WHEN 'DUMMY_TXT'.

bo_alv_fieldcat-col_pos = 6.

bo_alv_fieldcat-row_pos = 2.

bo_alv_fieldcat-key = ' '.

bo_alv_fieldcat-tabname = b_tabname_item.

MODIFY bo_fieldcat FROM bo_alv_fieldcat.

ENDCASE.

ENDLOOP.

ENDFORM. "ALV_FIELDCAT_EXTEND

*----


*

  • FORM alv_event_build *

*----


*

  • ........ *

*----


*

FORM ALV_EVENT_BUILD.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

LS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

LS_EVENT-FORM = 'TOP_OF_PAGE'.

APPEND LS_EVENT TO BO_EVENTS.

ENDFORM. "ALV_EVENT_BUILD

*----


*

  • FORM alv_layout_build *

*----


*

  • ........ *

*----


*

FORM ALV_LAYOUT_BUILD.

BO_LAYOUT-NO_TOTALLINE = 'X'.

BO_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

BO_LAYOUT-KEY_HOTSPOT = 'X'.

BO_LAYOUT-NO_SUMCHOICE = 'X'.

BO_LAYOUT-GROUP_CHANGE_EDIT = 'X'.

BO_LAYOUT-F2CODE = 'BELE'.

BO_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.

BO_LAYOUT-BOX_TABNAME = B_TABNAME_HEADER.

BO_LAYOUT-NO_INPUT = ' '.

ENDFORM. "ALV_LAYOUT_BUILD

*----


*

  • FORM alv_sort_build *

*----


*

  • ........ *

*----


*

FORM ALV_SORT_BUILD.

DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.

MOVE: 1 TO LS_SORT-SPOS,

'KNUMA' TO LS_SORT-FIELDNAME,

'BO_ALV_HEADER' TO LS_SORT-TABNAME,

'X' TO LS_SORT-SUBTOT,

'*' TO LS_SORT-GROUP.

APPEND LS_SORT TO IT_SORT_001.

ENDFORM. "ALV_SORT_BUILD

*----


*

  • FORM BUILD_HEADER_INFO *

*----


*

  • ........ *

*----


*

FORM BUILD_HEADER_INFO.

  • Überschrift Einzelnachweis

PERFORM DISPLAY_AGREEMENT.

IF TOPPAGE = 'B'.

INCLUDE LV15BLI1.

ENDIF.

ENDFORM. "BUILD_HEADER_INFO

*----


*

  • FORM top_of_page *

*----


*

  • ........ *

*----


*

FORM TOP_OF_PAGE.

DATA: TAB_LINES LIKE SY-TABIX,

ICON(80).

DESCRIBE TABLE ERROR_TAB LINES TAB_LINES.

IF TAB_LINES > 0.

CALL FUNCTION 'ICON_CREATE'

EXPORTING

NAME = 'ICON_WARNING'

IMPORTING

RESULT = ICON.

CLEAR LS_LINE.

REFRESH GT_LIST_TOP_OF_PAGE.

LS_LINE-TYP = 'H'.

LS_LINE-INFO(3) = ICON.

LS_LINE-INFO+3(1) = '@'.

LS_LINE-INFO+4 = TEXT-016.

APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.

  • Ausgabe der Überschrift

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.

ENDIF.

ENDFORM. "TOP_OF_PAGE

*----


*

  • FORM prot_umsatz *

*----


*

  • ........ *

*----


*

FORM PROT_UMSATZ USING RT_EXTAB TYPE SLIS_T_EXTAB.

DATA: LT_EXTAB TYPE SLIS_T_EXTAB.

DATA: BEGIN OF EXCTAB OCCURS 1,

OKCOD(4) TYPE C,

END OF EXCTAB.

REFRESH EXCTAB.

EXCTAB-OKCOD = '&XXL'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&ABC'.

APPEND EXCTAB.

EXCTAB-OKCOD = '%PC'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&XXL'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&AQW'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&NFO'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&NTE'.

APPEND EXCTAB.

EXCTAB-OKCOD = '%SL'.

APPEND EXCTAB.

EXCTAB-OKCOD = '&EB3'.

APPEND EXCTAB.

IF FMEMORY = YES AND

B_REPID = 'RV15C001'.

EXCTAB-OKCOD = 'BANZ'.

APPEND EXCTAB.

ENDIF.

APPEND LINES OF EXCTAB TO LT_EXTAB.

SET PF-STATUS 'PROT_UMSATZ' EXCLUDING LT_EXTAB.

ENDFORM. "PROT_UMSATZ

*----


*

  • FORM USER_COMMAND *

*----


*

  • ........ *

*----


*

  • --> R_UCOMM *

  • --> RS_SELFIELD *

*----


*

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

DATA: TAB_COUNTER LIKE SY-TABIX.

DATA: TMP_KNUMA LIKE BO_ALV_HEADER-KNUMA.

DATA: ERROR_FLAG(1).

IF R_UCOMM NE 'PROT' AND "nicht bei Hinweis-Anzeige

R_UCOMM NE 'STAA' AND

R_UCOMM NE 'STAB'.

TAB_COUNTER = 0.

LOOP AT BO_ALV_HEADER WHERE CHECKBOX = YES.

ADD 1 TO TAB_COUNTER.

IF TAB_COUNTER GE 2.

EXIT.

ENDIF.

ENDLOOP.

IF TAB_COUNTER > 1.

LOOP AT BO_ALV_HEADER WHERE CHECKBOX = YES.

IF TMP_KNUMA IS INITIAL.

TMP_KNUMA = BO_ALV_HEADER-KNUMA.

ELSE.

IF TMP_KNUMA NE BO_ALV_HEADER-KNUMA.

ERROR_FLAG = YES.

EXIT.

ENDIF.

ENDIF.

ENDLOOP.

IF ERROR_FLAG EQ YES.

MESSAGE I384.

EXIT.

ENDIF.

ELSEIF TAB_COUNTER = 0.

LOOP AT BO_ALV_HEADER.

IF SY-TABIX = 1.

TMP_KNUMA = BO_ALV_HEADER-KNUMA.

ELSE.

IF TMP_KNUMA NE BO_ALV_HEADER-KNUMA.

ERROR_FLAG = YES.

EXIT.

ENDIF.

ENDIF.

ENDLOOP.

IF ERROR_FLAG EQ YES.

MESSAGE I383.

EXIT.

ENDIF.

ENDIF.

ENDIF.

CASE R_UCOMM.

  • Absprache anzeigen

WHEN 'BANZ'.

PERFORM ABSPRACHE_ANZEIGEN USING BO_ALV_HEADER-KNUMA.

  • Absprache ändern

WHEN 'BAEN'.

PERFORM ABSPRACHE_AENDERN USING BO_ALV_HEADER-KNUMA.

  • Bonusempfänger anzeigen ?

WHEN 'BONE'.

PERFORM BONEM_ANZEIGEN USING BO_ALV_HEADER-BONEM

BO_ALV_HEADER-KNUMA.

  • Nachweis anzeigen

WHEN 'NAWN'.

PERFORM NACHWEIS USING NO BO_ALV_HEADER-KNUMA.

  • Einzelnachweis

WHEN 'NAWE'.

PERFORM NACHWEIS USING YES BO_ALV_HEADER-KNUMA.

  • Kennzeichen in Prüfung setzen

WHEN 'STAA'.

LOOP AT BO_ALV_HEADER WHERE CHECKBOX = YES.

PERFORM SET_STATUS USING BO_ALV_HEADER-KNUMA 'A'.

ENDLOOP.

  • Freigabe zur Abrechnung setzen

WHEN 'STAB'.

LOOP AT BO_ALV_HEADER WHERE CHECKBOX = YES.

PERFORM SET_STATUS USING BO_ALV_HEADER-KNUMA 'B'.

ENDLOOP.

  • Freigabe zur Abrechnung setzen

WHEN 'ANGU'.

PERFORM ABRECHNUNG_SETZEN USING RS_SELFIELD-VALUE.

  • Protokoll ausgeben

WHEN 'PROT'.

PERFORM UMSATZ_PROTOKOLL.

ENDCASE.

ENDFORM. "USER_COMMAND

*----


*

  • FORM ALV_PREPARE *

*----


*

  • Vorbereitung für ALV *

*----


*

FORM ALV_PREPARE.

  • Vorbereitung ALV

B_TABNAME_HEADER = 'BO_ALV_HEADER'.

B_TABNAME_ITEM = 'REPORT_TAB'.

IF LISTONLY = YES AND

AUTO_EXTEND NE YES.

B_REPID = 'RV15C002'.

ELSEIF AUTO_EXTEND = YES.

B_REPID = 'RV15C005'.

ELSEIF CHANGE_CURR = YES.

B_REPID = 'RV15C006'.

ELSE.

B_REPID = 'RV15C001'.

ENDIF.

  • DEFINE KEYINFO FOR ALV

CLEAR BO_KEYINFO.

BO_KEYINFO-HEADER01 = 'KNUMA'.

BO_KEYINFO-ITEM01 = 'KNUMA'.

BO_KEYINFO-HEADER02 = 'KSCHL'.

BO_KEYINFO-ITEM02 = 'KSCHL'.

PERFORM ALV_FIELDCAT_BUILD.

PERFORM ALV_EVENT_BUILD.

PERFORM ALV_LAYOUT_BUILD.

PERFORM ALV_PRINT_BUILD.

PERFORM ALV_SORT_BUILD.

PERFORM ALV_VARIANT_INIT.

ENDFORM. "ALV_PREPARE

*----


*

  • FORM ALV_CALL *

*----


*

  • Aufruf des List-Viewer *

*----


*

FORM ALV_CALL.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = B_REPID

I_CALLBACK_PF_STATUS_SET = 'PROT_UMSATZ'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = BO_LAYOUT

IT_FIELDCAT = BO_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS = BO_SP_GROUP[]

IT_SORT = IT_SORT_001

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • i_default = g_default

I_SAVE = B_SAVE

  • IS_VARIANT = B_VARIANT

IT_EVENTS = BO_EVENTS[]

  • IT_EVENT_EXIT =

I_TABNAME_HEADER = B_TABNAME_HEADER

I_TABNAME_ITEM = B_TABNAME_ITEM

IS_KEYINFO = BO_KEYINFO

IS_PRINT = BO_PRINT

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

TABLES

T_OUTTAB_HEADER = BO_ALV_HEADER

T_OUTTAB_ITEM = REPORT_TAB.

ENDFORM. "ALV_CALL

*----


*

  • FORM absprache_anzeigen *

*----


*

  • ........ *

*----


*

FORM ABSPRACHE_ANZEIGEN USING AGREEMENT.

CALL FUNCTION 'SD_BONUS_AGREEMENT_CHDISP'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

I_KNUMA = AGREEMENT

I_ACTION = 'DIS'.

ENDFORM. "ABSPRACHE_ANZEIGEN

*----


*

  • FORM absprache_aendern *

*----


*

  • ........ *

*----


*

FORM ABSPRACHE_AENDERN USING AGREEMENT.

READ TABLE BO_ALV_HEADER WITH KEY CHECKBOX = 'X'.

CALL FUNCTION 'SD_BONUS_AGREEMENT_CHDISP'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

I_KNUMA = AGREEMENT

I_ACTION = 'CHA'.

ENDFORM. "ABSPRACHE_AENDERN

*----


*

  • FORM bonem_anzeigen *

*----


*

  • ........ *

*----


*

FORM BONEM_ANZEIGEN USING BONEM AGREEMENT.

  • Parameter setzen

PERFORM ORG_DATEN_SETZEN USING AGREEMENT.

CALL FUNCTION 'SD_BONUS_BONEM_DISPLAY'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

I_BONEM = XKONA-BONEM

I_VKORG = XKONA-VKORG

I_VTWEG = XKONA-VTWEG

I_SPART = XKONA-SPART

I_ANKREUZ = KUND_ANKREUZ.

ENDFORM. "BONEM_ANZEIGEN

*----


*

  • FORM abrechnung_setzen *

*----


*

  • ........ *

*----


*

  • --> document *

*----


*

FORM ABRECHNUNG_SETZEN USING DOCUMENT.

CALL FUNCTION 'SD_BONUS_SETTLEMENT_SET'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

I_VBELN = DOCUMENT.

ENDFORM. "ABRECHNUNG_SETZEN

*----


*

  • FORM alv_variant_init *

*----


*

  • ........ *

*----


*

FORM ALV_VARIANT_INIT.

  • Schalter Varianten benutzerspezifisch/allgemein speicherbar setzen

  • Set Options: save variants userspecific or general

B_SAVE = 'A'.

CLEAR B_VARIANT.

B_VARIANT-REPORT = B_REPID.

  • Get default variant

BO_VARIANT = B_VARIANT.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

I_SAVE = B_SAVE

CHANGING

CS_VARIANT = BO_VARIANT

EXCEPTIONS

NOT_FOUND = 2.

IF SY-SUBRC = 0.

P_VARI = BO_VARIANT-VARIANT.

ENDIF.

ENDFORM. "ALV_VARIANT_INIT

*----


*

  • FORM display_drill_down_list *

*----


*

  • ........ *

*----


*

FORM DISPLAY_DRILL_DOWN_LIST.

CALL FUNCTION 'SD_BONUS_DRILL_DOWN_DISPLAY'

STARTING NEW TASK 'BONUS_UMSATZ'

EXPORTING

DD_KURGV = KURGV

DD_LIST = LIST_NUMBER

DD_KONA = XKONA

TABLES

ZVAKE_TAB = XVAKE

ZKONP_TAB = XKONP.

ENDFORM. "DISPLAY_DRILL_DOWN_LIST

*----


*

  • FORM umsatz_protokoll *

*----


*

  • ........ *

*----


*

FORM UMSATZ_PROTOKOLL.

DATA: DA_TREE_TITLE LIKE SY-LISEL.

DA_TREE_TITLE = TEXT-018.

CALL FUNCTION 'VBFS_TREE_LIST_DISPLAY'

EXPORTING

I_TREE_TITLE = DA_TREE_TITLE

I_VBTYP = 'Y'

TABLES

I_VBFS = ERROR_TAB.

ENDFORM. "UMSATZ_PROTOKOLL

INCLUDE RV15CI04.

*&----


*

*& Form alv_print_build

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM ALV_PRINT_BUILD.

BO_PRINT-NO_PRINT_SELINFOS = YES.

BO_PRINT-NO_PRINT_LISTINFOS = YES.

BO_PRINT-NO_COVERPAGE = YES.

ENDFORM. " alv_print_build