Ein Beispiel, wie ein Set (hier ein Basic-Set), dass mit der Transaktion GS01 angelegt wurde, per FuB ausliest. Die Set-ID wird zunächst über den Setnamen ermittelt, bevor dieser ausgelesen werden kann
*————————————————————————
* Periodenfremde Buchung bei Leistungsdatum im Vorjahr oder früher
* Erstelldatum: 18.12.2013
* Autor :
*
*————————————————————————
DATA: LV_FBUDA TYPE VBRP-FBUDA,
LV_DATVR TYPE I,
LV_DATSY TYPE I,
LV_REL TYPE C,
LV_NEW_SETID TYPE SETHIER-SETID,
LT_SET_VALUES LIKE TABLE OF RGSB4 WITH HEADER LINE
.
DATA: BEGIN OF LT_ZLBV_SKTO_SUB OCCURS 0.
INCLUDE STRUCTURE ZLBV_SKTO_SUB .
DATA: END OF LT_ZLBV_SKTO_SUB.
*
* auslesen des Basic-Set
CALL FUNCTION ‚G_SET_GET_ID_FROM_NAME‘
EXPORTING
* CLIENT =
SHORTNAME = ‚ZFI_SAKO_PERFREMD‘
IMPORTING
NEW_SETID = LV_NEW_SETID
* EXCEPTIONS
* NO_SET_FOUND = 1
* NO_SET_PICKED_FROM_POPUP = 2
* WRONG_CLASS = 3
* WRONG_SUBCLASS = 4
* TABLE_FIELD_NOT_FOUND = 5
* FIELDS_DONT_MATCH = 6
* SET_IS_EMPTY = 7
* FORMULA_IN_SET = 8
* SET_IS_DYNAMIC = 9
* OTHERS = 10
.
IF SY-SUBRC 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION ‚G_SET_GET_ALL_VALUES‘
EXPORTING
SETNR = LV_NEW_SETID
TABLES
SET_VALUES = LT_SET_VALUES
* EXCEPTIONS
* SET_NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC 0.
* Implement suitable error handling here
ENDIF.
* Ist das Sachkonto im Basic-Set vorhanden? Das ist die erste Vorraussetzung
LOOP AT LT_SET_VALUES.
IF XKOMV-SAKN1 BETWEEN LT_SET_VALUES–FROM AND LT_SET_VALUES–TO.
LV_REL = ‚X‘.
EXIT.
ENDIF.
ENDLOOP.
* Liegt das Leistungsdatum nicht im aktuellen Jahr?
LV_DATSY = SY-DATUM(4).
LV_DATVR = XVBRP-FBUDA(4).
IF LV_DATSY > LV_DATVR AND LV_REL = ‚X‘.
*lesen des Sachkontos aus der Substitutionstabelle und neu zuordnen
SELECT SINGLE * FROM ZLBV_SKTO_SUB
INTO CORRESPONDING FIELDS OF LT_ZLBV_SKTO_SUB
WHERE SOLLKTO = XKOMV-SAKN1.
IF SY-SUBRC = 0.
UNPACK LT_ZLBV_SKTO_SUB-SOLLKTOSUB TO XACCIT-SAKNR.
UNPACK LT_ZLBV_SKTO_SUB-SOLLKTOSUB TO XACCIT-HKONT.
XACCIT-FIPOS = LT_ZLBV_SKTO_SUB-SOLLKTOSUB.
SHIFT XACCIT-FIPOS LEFT DELETING LEADING ‚0‘.
ENDIF.
ENDIF.