24.2.11

SAP Note 23302 - Billing header item texts cannot be distinguished

Symptom:

1) When maintaining the billing document types, you can always only enter the same values for the text determination procedure and the text determination procedure item.
2) When displaying the item texts in the billing document, the system does not use the item determination procedure but the header determination procedure, i.e. either the texts are displayed although they are actually not defined or none of the item texts are displayed.
3) Since the new field TXTGR_P is defined, changes are also to be made in text customizing.

Cause and prerequisites

Error during the foreign key check in DDIC.

Solution
***********************************************************************
Solution for 1)
***********************************************************************

The foreign key validation for field TXTGR_P in Tabelle TVFK
must be changed:

Step 1: With SE11 call Table TVFK.
On the list of fields branch to the foreign key for the field TXTGR_P.

Step 2: Change the foreign key as follows:
TTAB-TDOBJECT is deleted; as a constant enter the value
VBBP in this line.
The result should look as follows:


Foreign Key Table TVFK Validation Table TTXG
TVFK MANDT TTXG MANDT
'VBBP' TTXG TDOBJECT
TVFK TXTGR_P TTXG TXTGR

If you run into problems when creating foreign keys in release level
22A-22E, please observe note 21978.


Step 3: Save the entries and activate the table TVFK.

So that the correct identification of the item text group is taken,
please change the lines marked with "delete or "new:

MV80VO3B:
---------

MODULE B3_TEXTE_ANZEIGEN OUTPUT.
...

IF TVFK-TXTGR_P IS INITIAL.
CLEAR WTEXT-TTXGT.
ELSE.
SELECT SINGLE * FROM TTXGT WHERE "Textgruppe Position
SPRAS EQ SY-LANGU AND
* TDOBJECT EQ TTAB-TDOBJECT AND "delete
TDOBJECT EQ 'VBBP' AND "new
TXTGR EQ TVFK-TXTGR_P.
WTEXT-TTXGT = TTXGT-VTEXT.
ENDIF.
...
ENDMODULE.

***********************************************************************
Solution to 2)
***********************************************************************

Program MV60AF0F

FORM FCODE_PTEX.

PERFORM FCODE_FPDE.
PERFORM XTHEAD_UEBERSICHT_P_ANSTEUERN(SAPFV45T)
USING TVFK-TXTGR_P <--- change
CHARF
VBRK-VBELN
VBRP-POSNR.
ENDFORM.



FORM FCODE_PTEX_OHNE_PICUP.

PERFORM XTHEAD_UEBERSICHT_P_ANSTEUERN(SAPFV45T)
USING TVFK-TXTGR_P <--- change
CHARF
VBRK-VBELN
VBRP-POSNR.
ENDFORM.







***********************************************************************
Solution to 3)
***********************************************************************
In the following you will find all places of programs MV80T620 in which the field TXTGR_P is to be used. Peform the corresponding
changes in code.
The changes depend on whether you own release level >= 22G or < 22G.
The places are marked as follows:
================= Begin_of_Insert/Update prior to 22G
================= End_of_Insert/Update prior to 22G <==== for release levels after / equal to 22G

Report: MV80T620


***********************************************************************
* Dynpro 620: Textschemazuordung TVFK *
***********************************************************************
* Daten-Deklarationen *
***********************************************************************

*---------------------------------------------------------------------*
* Felder und Strukturen *
*---------------------------------------------------------------------*

DATA: BEGIN OF XTVFK OCCURS 25.
INCLUDE STRUCTURE TVFK.
DATA: BEZEI LIKE TVFKT-VTEXT.
DATA: VTEXT LIKE TTXGT-VTEXT.
DATA: LOEKZ(1) TYPE C.
DATA: UPDKZ.
DATA: END OF XTVFK.

DATA: BEGIN OF ITVFK OCCURS 15, "Indextabelle für Anzeige
FKART LIKE TVFK-FKART,
TABIX LIKE SY-TABIX, "Index für XTVFK
SELKZ,
END OF ITVFK.

DATA: BEGIN OF STVFK OCCURS 15, "XTVFK-TABIX zur
TABIX LIKE SY-TABIX, "Sstep-Loop-Zeile
END OF STVFK.

DATA: BEGIN OF ITVFKKEY,
FKART LIKE TVFK-FKART,
END OF ITVFKKEY.

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

DATA: BEGIN OF WTVFK.
INCLUDE STRUCTURE TVFK.
DATA: SPRAS LIKE SY-LANGU.
DATA: BEZEI LIKE TVFKT-VTEXT.
DATA: END OF WTVFK.

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

* Hilfsfelder für Blaettern
DATA: ITVFK_TABIX_ZEILE_1 LIKE SY-TABIX, "Tabix der ersten Zeile
ITVFK_TABIX_AKTUELL LIKE SY-TABIX, "laufender Tabix der Seite
ITVFK_LOOPC LIKE SY-TABIX, "Anzahl LOOP-Zeilen
ITVFK_DEL_IND LIKE SY-TABIX. "Aufsetzen nach Loeschen

*eject

***********************************************************************
* PBO-Module *
***********************************************************************

*---------------------------------------------------------------------*
* MODULE XTVFK_AUFSETZEN *
*---------------------------------------------------------------------*
* Tabelle XTVFK zur Bildschirmanzeige aufsetzen *
*---------------------------------------------------------------------*
MODULE XTVFK_AUFSETZEN OUTPUT.

PERFORM XTVFK_AUFSETZEN.

ENDMODULE.
*eject

*---------------------------------------------------------------------*
* MODULE XTVFK_LESEN *
*---------------------------------------------------------------------*
* Tabelle XTVFK zur Bildschirmanzeige lesen * *---------------------------------------------------------------------*
MODULE XTVFK_LESEN OUTPUT.

PERFORM XTVFK_LESEN.

ENDMODULE.
*eject

***********************************************************************
* PAI-Module *
***********************************************************************

*---------------------------------------------------------------------*
* MODULE TVFK_UNTERLEGEN *
*---------------------------------------------------------------------*
* Bei PAI wird zunächst die alte Zeile gelesen. *
*---------------------------------------------------------------------*
MODULE TVFK_UNTERLEGEN INPUT.

PERFORM TVFK_UNTERLEGEN.

TVFKT-FKART = TVFK-FKART.

ENDMODULE.
*eject

*---------------------------------------------------------------------*
* MODULE TVFK_BEARBEITEN *
*---------------------------------------------------------------------*
* Verarbeitung der eingegebenen Zeilen. *
*---------------------------------------------------------------------*
MODULE TVFK_BEARBEITEN INPUT.

TVFK-FKART = TVFKT-FKART.

PERFORM XTVFK_EINGABE_PRUEFEN USING TB_SUBRC.

IF TB_SUBRC = 0.
PERFORM TVFK_BEARBEITEN.
ENDIF.

ENDMODULE.
*eject

***********************************************************************
* FORM-Routinen *
***********************************************************************

*---------------------------------------------------------------------*
* FORM AUFSETZPKT_TVFK *
*---------------------------------------------------------------------*
FORM AUFSETZPKT_TVFK.

* ITVFK lesen mit Key
CLEAR ITVFKKEY.
ITVFKKEY-FKART = *TVFKT-FKART.
READ TABLE ITVFK WITH KEY ITVFKKEY.

IF SY-SUBRC = 0.
ITVFK_TABIX_ZEILE_1 = SY-TABIX.
ENDIF.

CLEAR *TVFKT-FKART.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM ITVFK_AENDERN *
*---------------------------------------------------------------------*
* Ein Eintrag wird in der Tabelle ITVFK geaendert *
* ( der Eintrag wird gelöscht, falls der entsprechende *
* Eintrag in XTVFK zum Loeschen vorgemerkt ist ). *
*---------------------------------------------------------------------*
FORM ITVFK_AENDERN.

* ITVFK lesen mit Key
CLEAR ITVFKKEY.
IF FCODE = LOES.
ITVFKKEY-FKART = XTVFK-FKART.
ELSE.
ITVFKKEY-FKART = TVFK-FKART.
ENDIF.
READ TABLE ITVFK WITH KEY ITVFKKEY.

* Loeschen
IF XTVFK-UPDKZ = UPDKZ_DELETE.
IF SY-SUBRC = 0.
DELETE ITVFK INDEX SY-TABIX.
ENDIF.
EXIT.
ENDIF.

* Anlegen
IF SY-SUBRC <> 0 AND
NOT TVFK-FKART IS INITIAL.
STVFK-TABIX = 0.
ENDIF.

ENDFORM.
*eject.

*---------------------------------------------------------------------*
* FORM ITVFK_ANLEGEN *
*---------------------------------------------------------------------*
* Ein Eintrag wird in der Tabelle ITVFK angelegt. *
*---------------------------------------------------------------------*
FORM ITVFK_ANLEGEN USING VALUE(IA_INDEX).

IF XTVFK-UPDKZ <> UPDKZ_DELETE.
* ITVFK lesen mit Key
* ( nur hier wird ITVFK mit BINARY SEARCH gelesen, da Eintraege
* n e u aufgenommen werden )
CLEAR ITVFKKEY.
ITVFKKEY-FKART = TVFK-FKART.
READ TABLE ITVFK WITH KEY ITVFKKEY BINARY SEARCH.
* ITVFK: Key versorgen
MOVE-CORRESPONDING ITVFKKEY TO ITVFK.
* ITVFK: restliche Felder versorgen
ITVFK-TABIX = IA_INDEX.
* ITVFK: neuen Eintrag vornehmen
CASE SY-SUBRC.
WHEN 4.
INSERT ITVFK INDEX SY-TABIX.
WHEN 8.
APPEND ITVFK.
ENDCASE.
ENDIF.
ENDFORM.
*eject.


*---------------------------------------------------------------------*
* FORM TVFK_BEARBEITEN *
*---------------------------------------------------------------------*
* Aufgrund der Bildschirmeingabe wird durch die *
* FIELD- Anweisung im Dynpro die Workarea XTVFK gepflegt. *
*---------------------------------------------------------------------*
FORM TVFK_BEARBEITEN.

PERFORM ITVFK_AENDERN.

IF STVFK-TABIX = 0.
* Anlegen Zeile
PERFORM XTVFK_ANLEGEN.
ELSE.
* Aendern Zeile
PERFORM XTVFK_AENDERN.
ENDIF.

PERFORM XTVFK_AUF_SEITE_BLEIBEN.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM TVFK_BEARBEITEN_VORBEREITEN *
*---------------------------------------------------------------------*
* Am Anfang der Bearbeitung werden bei Anlegen *
* diverse Bereiche initialisiert. *
* Beim Aendern werden die Workareas mit Daten gefuellt. *
* STVFK-TABIX = 0: Anlegen *
* STVFK-TABIX <> 0: Aendern *
*---------------------------------------------------------------------*
FORM TVFK_BEARBEITEN_VORBEREITEN.

* Anlegen Zeile
IF STVFK-TABIX = 0.
CLEAR TVFK.
CLEAR XTVFK.
ELSE.
* Aendern Zeile
TVFK = XTVFK.
ENDIF.
* Workarea XTVFK bereitstellen
READ TABLE STVFK INDEX SY-STEPL.
IF SY-SUBRC = 0.
READ TABLE XTVFK INDEX STVFK-TABIX.
IF SY-SUBRC <> 0.
MESSAGE I203 WITH 'XTVFK'.
ENDIF.
ENDIF.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM TVFK_UNTERLEGEN *
*---------------------------------------------------------------------*
* Der alte Text wird unter die Eingabedaten gelegt. *
* Der STVFK-TABIX wird fuer die Form TVFK_BEARBEITEN und die *
* Form TVFK_BEARBEITEN_VORBEREITEN gesetzt. *
*---------------------------------------------------------------------*
FORM TVFK_UNTERLEGEN.

READ TABLE STVFK INDEX SY-STEPL.

IF SY-SUBRC <> 0
OR STVFK-TABIX = 0.
* Anlegen
STVFK-TABIX = 0.
ELSE.
* Aendern
IF XTVFK-UPDKZ <> UPDKZ_DELETE.
READ TABLE XTVFK INDEX STVFK-TABIX.
IF SY-SUBRC <> 0.
MESSAGE I203 WITH 'STVFK'.
ENDIF.
ENDIF.
ENDIF.

* Initialisieren oder zusaetzliche Daten bereitstellen
PERFORM TVFK_BEARBEITEN_VORBEREITEN.

ENDFORM.
*eject

*---------------------------------------------------------------------* * FORM XTVFK_AENDERN *
*---------------------------------------------------------------------*
* Die interne Tabelle XTVFK wird gemaess Eingabe geaendert, *
* die Indextabelle ITVFK mitgepflegt. *
*---------------------------------------------------------------------*
FORM XTVFK_AENDERN.

* Eintrag schon vorhanden -> keine Aenderung moeglich
IF XTVFK-FKART <> TVFK-FKART.
IF TVFK-FKART IS INITIAL. "Ruecknahme der Eingabe
EXIT.
ENDIF.
MESSAGE E204.
EXIT.
ENDIF.

* Selektionskennzeichen / Sprache verwalten
PERFORM ITVFK_AENDERN.

============ Begin_of_Insert/Upgrade prior to 22G ======================

MOVE-CORRESPONDING TVFK TO XTVFK.
MOVE TVFKT-VTEXT TO XTVFK-BEZEI.
IF XTVFK-UPDKZ <> UPDKZ_NEW.
XTVFK-UPDKZ = UPDKZ_UPDATE.
ENDIF.
IF ACT_TXTOB = 'C'.
XTVFK-TXTGR = TTXG-TXTGR.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR.
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
IF ACT_TXTOB = 'F'. <==== 22G
XTVFK-TXTGR_P = TTXG-TXTGR.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR_P. <=== 22G
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
MODIFY XTVFK INDEX STVFK-TABIX.

============ END_of_Insert/Upgrade prior to 22G ========================

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_ANLEGEN *
*---------------------------------------------------------------------*
* Die interne Tabelle XTVFK wird aus Eingabe angelegt *
* Ferner wird die Indextabelle ITVFK mitgepflegt. *
*---------------------------------------------------------------------*
FORM XTVFK_ANLEGEN.

* Daten in interne Tabelle uebernehmen
IF NOT TVFK-FKART IS INITIAL.
XTVFK = TVFK.

============ Begin_of_Insert/Upgrade prior to 22G ======================

IF ACT_TXTOB = 'C'.
XTVFK-TXTGR = ACT_TXTGR.
ENDIF.
IF ACT_TXTOB = 'F'.
XTVFK-TXTGR_P = ACT_TXTGR. <=== 22G
ENDIF.
ENDIF.
SELECT SINGLE * FROM TVFKT
WHERE SPRAS = SY-LANGU
AND FKART = XTVFK-FKART.
IF SY-SUBRC = 0.
XTVFK-BEZEI = TVFKT-VTEXT.
ENDIF.

* TVFK wird nur geaendert - fuer die Verbuchung wird hier also
* das UPDKZ_UPDATE fest gesetzt
XTVFK-UPDKZ = UPDKZ_UPDATE.
APPEND XTVFK.

PERFORM ITVFK_ANLEGEN USING SY-TABIX.

============ END_of_Insert/Upgrade prior to 22G ========================

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_AUFBAUEN *
*---------------------------------------------------------------------*
* Die interne Tabelle XTVFK wird aus der DB-Tabellen TVFK *
* aufgebaut. *
* Die zughoerigen Texte werden aus den DB-Tabellen TVFKT und *
* TTXGT nachgelesen. *
* Ferner wird die Indextabelle ITVFK mitgepflegt. *
*---------------------------------------------------------------------*
* FCODE = SCZ1 : je Belegart wird ein Textschema zugeordnet *
* FCODE = SCZ2 : einem Textschema werden Belegarten zugeordnet *
*---------------------------------------------------------------------*
FORM XTVFK_AUFBAUEN.

REFRESH XTVFK.
REFRESH ITVFK.

IF FCODE = SCZ1.
SELECT * FROM TVFK WHERE FKART <> SPACE.
IF SY-SUBRC = 0.
* Zeilen aufbauen
XTVFK = TVFK.
APPEND XTVFK.
* Eintrag in ITVFK mitpflegen
PERFORM ITVFK_ANLEGEN USING SY-TABIX.
ENDIF.
ENDSELECT.
ENDIF.

============ Begin_of_Insert/Upgrade prior to 22G ======================

IF FCODE = SCZ2.
IF ACT_TXTOB = 'C'.
SELECT * FROM TVFK WHERE TXTGR = ACT_TXTGR.
IF SY-SUBRC = 0.
* Zeilen aufbauen
XTVFK = TVFK.
APPEND XTVFK.
* Eintrag in ITVFK mitpflegen
PERFORM ITVFK_ANLEGEN USING SY-TABIX.
ENDIF.
ENDSELECT.
ENDIF.
IF ACT_TXTOB = 'F'.
SELECT * FROM TVFK WHERE TXTGR_P = ACT_TXTGR. <=== 22G
IF SY-SUBRC = 0.
* Zeilen aufbauen
XTVFK = TVFK.
APPEND XTVFK.
* Eintrag in ITVFK mitpflegen
PERFORM ITVFK_ANLEGEN USING SY-TABIX.
ENDIF.
ENDSELECT.
ENDIF.
ENDIF.

* Texte nachlesen
LOOP AT XTVFK.
SELECT SINGLE * FROM TVFKT
WHERE SPRAS = SY-LANGU
AND FKART = XTVFK-FKART.
IF SY-SUBRC = 0.
XTVFK-BEZEI = TVFKT-VTEXT.
ELSE.
CLEAR XTVFK-BEZEI.
ENDIF. IF ACT_TXTOB = 'C'.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR.
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
IF ACT_TXTOB = 'F'.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR_P. <=== 22G
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
MODIFY XTVFK.
ENDLOOP.

============ END_of_Insert/Upgrade prior to 22G ========================

ITVFK_TABIX_AKTUELL = 1.
ITVFK_TABIX_ZEILE_1 = 0.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_AUFSETZEN *
*---------------------------------------------------------------------*
* Je Seite wird in der Tabelle XTVFK aufgesetzt. *
*---------------------------------------------------------------------*
FORM XTVFK_AUFSETZEN.

IF NOT *TVFKT-FKART IS INITIAL.
PERFORM AUFSETZPKT_TVFK.
ELSE.
IF FCODE IS INITIAL. "Blaettern setzt den
ITVFK_TABIX_ZEILE_1 = 0. "TABIX_ZEILE_1
ENDIF.
ENDIF.

* Tabix fuer Lesen auf Tabix der ersten Zeile der Seite setzen
IF ITVFK_TABIX_ZEILE_1 = 0.
* So wird in XTVFK_LESEN die erste neuangelegte Zeile gefunden
ITVFK_TABIX_AKTUELL = 1.
ELSE.
ITVFK_TABIX_AKTUELL = ITVFK_TABIX_ZEILE_1.

ENDIF.
* Tabelle der XTVFK-Tabixe initialisieren.
CLEAR STVFK.
REFRESH STVFK.

ENDFORM.
*eject
*---------------------------------------------------------------------*
* FORM XTVFK_AUF_ERSTE_SEITE *
*---------------------------------------------------------------------*
* blaettert in der Tabelle XTVFK auf die erste Seite. *
*---------------------------------------------------------------------*
FORM XTVFK_AUF_ERSTE_SEITE.

DATA: TFILL LIKE SY-TABIX.

DESCRIBE TABLE ITVFK LINES TFILL.

FCODE = ERSTE_SEITE.

PERFORM BLAETTERN USING ITVFK_TABIX_ZEILE_1
TFILL
ITVFK_LOOPC.

CLEAR FCODE.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_AUF_SEITE_BLEIBEN *
*---------------------------------------------------------------------*
* Nach Dynproeingabe bleibt das Bild stehen. *
*---------------------------------------------------------------------* FORM XTVFK_AUF_SEITE_BLEIBEN.

IF *TVFKT-FKART IS INITIAL.
READ TABLE STVFK INDEX 1.
IF SY-SUBRC = 0.
READ TABLE ITVFK INDEX STVFK-TABIX.
IF SY-SUBRC = 0.
READ TABLE XTVFK INDEX ITVFK-TABIX.
*TVFKT-FKART = XTVFK-FKART.
ENDIF.
ENDIF.
ENDIF.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_BLAETTERN *
*---------------------------------------------------------------------*
* Blaettern in der Tabelle XTVFK. *
*---------------------------------------------------------------------*
FORM XTVFK_BLAETTERN.

DATA: TFILL1 LIKE SY-TABIX,
TFILL2 LIKE SY-TABIX.

DESCRIBE TABLE ITVFK LINES TFILL1.
DESCRIBE TABLE STVFK LINES TFILL2.

IF TFILL2 <> VORIGE_SEITE.
IF *TVFKT-FKART IS INITIAL.
PERFORM XTVFK_AUF_ERSTE_SEITE.
EXIT.
ELSE.
EXIT.
ENDIF.
ENDIF.

PERFORM BLAETTERN USING ITVFK_TABIX_ZEILE_1
TFILL1
ITVFK_LOOPC.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_BUCHEN *
*---------------------------------------------------------------------*
* Die DB-Tabellen TVFK werden durch XTVFK *
* modifiziert. *
*---------------------------------------------------------------------*
FORM XTVFK_BUCHEN.

LOOP AT XTVFK WHERE UPDKZ <> UPDKZ_OLD.

CASE XTVFK-UPDKZ.

WHEN UPDKZ_NEW.
IF ACT_FCODE = SCZ1.
MESSAGE A207 WITH 'XTVFK'.
ENDIF.

WHEN UPDKZ_UPDATE.
SELECT SINGLE FOR UPDATE * FROM TVFK
WHERE FKART = XTVFK-FKART.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING XTVFK TO TVFK.
UPDATE TVFK.
ENDIF.

WHEN UPDKZ_DELETE.
IF ACT_FCODE = SCZ1.
MESSAGE A207 WITH 'XTVFK'.
ENDIF.
SELECT SINGLE FOR UPDATE * FROM TVFK
WHERE FKART = XTVFK-FKART.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING XTVFK TO TVFK.

============ Begin_of_Insert/Upgrade kleiner 22G ======================

IF ACT_TXTOB = 'C'.
CLEAR TVFK-TXTGR.
ENDIF.
IF ACT_TXTOB = 'F'.
CLEAR TVFK-TXTGR_P. <=== 22G
ENDIF.
UPDATE TVFK.
ENDIF.
============ END_of_Insert/Upgrade prior to 22G ========================
ENDCASE.

XTVFK-UPDKZ = UPDKZ_OLD.
MODIFY XTVFK.

ENDLOOP.

MESSAGE S296.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_DATALOSS_CHECK *
*---------------------------------------------------------------------*
FORM XTVFK_DATALOSS_CHECK.

LOOP AT XTVFK.
IF XTVFK-UPDKZ = UPDKZ_NEW OR
XTVFK-UPDKZ = UPDKZ_UPDATE OR
XTVFK-UPDKZ = UPDKZ_DELETE.
PERFORM DATALOSS_POPUP.
EXIT.
ENDIF.
ENDLOOP.

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_EINGABE_PRUEFEN *
*---------------------------------------------------------------------*
FORM XTVFK_EINGABE_PRUEFEN USING XE_SUBRC.

XE_SUBRC = 0.

IF ACT_FCODE = SCZ1.
IF TTXG-TXTGR IS INITIAL.
EXIT.
ENDIF.
ACT_TXTGR = TTXG-TXTGR.

============ Begin_of_Insert/Upgrade prior to 22G =====================

SELECT SINGLE * FROM TTXG WHERE TDOBJECT = ACT_TDOBJECT
AND TXTGR = ACT_TXTGR
AND TXTOB = ACT_TXTOB.
IF SY-SUBRC <> 0.
MESSAGE E205 WITH ACT_TXTGR.
ENDIF.
TTXG-TXTGR = ACT_TXTGR.
ENDIF.

IF ACT_FCODE = SCZ2.
IF TVFK-FKART IS INITIAL.
XE_SUBRC = 4.
EXIT.
ENDIF.
ACT_FKART = TVFK-FKART.
SELECT SINGLE * FROM TVFK WHERE FKART = ACT_FKART.
IF SY-SUBRC <> 0.
XE_SUBRC = 4.
MESSAGE E211 WITH ACT_FKART.
ELSE.
IF TVFK-TXTGR <> SPACE AND ACT_TXTOB = 'C'.
PERFORM DATALOSS_POPUP_SCHEMA USING ACT_FKART
TVFK-TXTGR
ANTWORT.
IF ANTWORT <> JA.
XE_SUBRC = 4.
ENDIF.
ENDIF.
IF TVFK-TXTGR_P <> SPACE AND ACT_TXTOB = 'F'. <=== 22G
PERFORM DATALOSS_POPUP_SCHEMA USING ACT_FKART
TVFK-TXTGR_P <=== 22G
ANTWORT.
IF ANTWORT <> JA.
XE_SUBRC = 4.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

============ END_of_Insert/Upgrade prior to 22G =======================

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_LESEN *
*---------------------------------------------------------------------*
* Die interne Tabelle XTVFK wird zur Anzeige am Bildschirm *
* gelesen. *
*---------------------------------------------------------------------*
FORM XTVFK_LESEN.

* Anzahl Loop-Zeilen fuer Blaettern
ITVFK_LOOPC = SY-LOOPC.
READ TABLE ITVFK INDEX ITVFK_TABIX_AKTUELL.
IF SY-SUBRC <> 0.
CLEAR: XTVFK,
TVFK.
STVFK-TABIX = 0.
ELSE.
ITVFK_TABIX_AKTUELL = ITVFK_TABIX_AKTUELL + 1.
READ TABLE XTVFK INDEX ITVFK-TABIX.
TVFK = XTVFK.
TVFKT-FKART = XTVFK-FKART.
TVFKT-VTEXT = XTVFK-BEZEI.

============ Begin_of_Insert/Upgrade kleiner 22G ======================

IF ACT_TXTOB = 'C'.
TTXG-TXTGR = XTVFK-TXTGR.
ENDIF.
IF ACT_TXTOB = 'F'.
TTXG-TXTGR = XTVFK-TXTGR_P. <=== 22G
ENDIF.
TTXGT-VTEXT = XTVFK-VTEXT.
* Tabix der Zeile merken
STVFK-TABIX = SY-TABIX.
APPEND STVFK.
ENDIF.

============ END_of_Insert/Upgrade prior to 22G =======================

ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_TEXTE_LESEN *
*---------------------------------------------------------------------*
* Die interne Tabelle XTVFK wird zur Anzeige am Bildschirm *
* mit Texten aus der DB-Tabelle TTXGT versorgt. *
*---------------------------------------------------------------------*
FORM XTVFK_TEXTE_LESEN.

============ Begin_of_Insert/Upgrade prior to 22G =====================

LOOP AT XTVFK.
IF ACT_TXTOB = 'C'.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR.
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
MODIFY XTVFK.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
IF ACT_TXTOB = 'F'.
SELECT SINGLE * FROM TTXGT
WHERE SPRAS = SY-LANGU
AND TDOBJECT = ACT_TDOBJECT
AND TXTGR = XTVFK-TXTGR_P. <=== 22G
IF SY-SUBRC = 0.
XTVFK-VTEXT = TTXGT-VTEXT.
MODIFY XTVFK.
ELSE.
CLEAR XTVFK-VTEXT.
ENDIF.
ENDIF.
ENDLOOP.

============ END_of_Insert/Upgrade prior to 22G =====================


ENDFORM.
*eject

*---------------------------------------------------------------------*
* FORM XTVFK_LOESCHEN *
*---------------------------------------------------------------------*
FORM XTVFK_LOESCHEN.

GET CURSOR FIELD CURSOR-FELD LINE CURSOR-ZEILE.
READ TABLE STVFK INDEX CURSOR-ZEILE.
IF SY-SUBRC = 0.
READ TABLE XTVFK INDEX STVFK-TABIX.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ELSE.
EXIT.
ENDIF.

PERFORM DATADELETE_OBJEKT_SETZEN. PERFORM DATADELETE_POPUP.
IF ANTWORT = NEIN OR
ANTWORT = ABBRECHEN.
EXIT.
ELSE.
XTVFK-UPDKZ = UPDKZ_DELETE.
MODIFY XTVFK INDEX STVFK-TABIX.
PERFORM ITVFK_AENDERN.
ENDIF.

PERFORM XTVFK_AUF_SEITE_BLEIBEN.

ENDFORM.
*eject

No comments:

Post a Comment