TYPES: BEGIN OF GTY_S_POSTAB. "Begin of S2I
INCLUDE STRUCTURE AIMTV.
TYPES: OBJNR LIKE ANLA-OBJNR, " merker co-objekt
ZAEHL LIKE SY-TABIX, " indexzaehler
WORKF(1) TYPE C, " value ' ', " workflag = x wenn bureg bearb.
AMPEL(1) TYPE C, "value '0', " alv ampel "4.6c
XEXTEND_AFABE TYPE XFELD.
TYPES: END OF GTY_S_POSTAB.
TYPES: GTY_T_POSTAB TYPE STANDARD TABLE OF GTY_S_POSTAB.
DATA: BUREG LIKE COBRB-BUREG, " Buchungeregelgruppe
HLP_BUREG LIKE COBRB-BUREG, " Hilfsfeld bureg
FLG_MULTI_BUREG TYPE P. " Merker versch. bureg
DATA: I(5) TYPE N. " Schleifenzaehler
DATA: LT_MESSTAB TYPE TABLE OF BDCMSGCOLL.
DATA: LV_MODE TYPE CHAR1 VALUE 'Q',
LV_UPDATE TYPE CHAR1 VALUE 'S'.
DATA: POSTAB TYPE GTY_T_POSTAB WITH HEADER LINE.
FIELD-SYMBOLS: <LT_DATA> TYPE STANDARD TABLE.
DATA LS_DATA TYPE REF TO DATA.
CALL METHOD CL_SALV_BS_RUNTIME_INFO=>SET
EXPORTING
DISPLAY = ABAP_FALSE
METADATA = ABAP_FALSE
DATA = ABAP_TRUE.
PERFORM BDC_DYNPRO_POPUP USING 'SAPMA15B' '0110'.
PERFORM BDC_FIELD_POPUP USING 'BDC_CURSOR'
'AICOM-BUKRS'.
PERFORM BDC_FIELD_POPUP USING 'BDC_OKCODE'
'=AUSF'.
PERFORM BDC_FIELD_POPUP USING 'AICOM-BUKRS'
IS_HEAD-BUKRS."record-BUKRS_001."公司代码
PERFORM BDC_FIELD_POPUP USING 'AICOM-ANLN1'
IS_HEAD-ANLN1."record-ANLN1_002."资产
PERFORM BDC_FIELD_POPUP USING 'AICOM-ANLN2'
IS_HEAD-ANLN2."record-ANLN2_003."次级编号
PERFORM BDC_FIELD_POPUP USING 'P_DISVAR'
'1SAP'."record-P_DISVAR_004."格式
PERFORM BDC_FIELD_POPUP USING 'ANLB-AFABE'
'01'."record-AFABE_005."折旧范围
PERFORM BDC_DYNPRO_POPUP USING 'SAPMSSY0' '0120'.
PERFORM BDC_FIELD_POPUP USING 'BDC_CURSOR'
'07/03'.
CALL TRANSACTION 'AIAB' USING GTS_BDCDATA
MODE LV_MODE
UPDATE LV_UPDATE
MESSAGES INTO LT_MESSTAB.
TRY.
CALL METHOD CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF
IMPORTING
R_DATA = LS_DATA.
ASSIGN LS_DATA->* TO <LT_DATA>.
CATCH CX_SALV_BS_SC_RUNTIME_INFO.
* MESSAGE '没有满足条件的数据' TYPE 'E'.
ENDTRY.
CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).
IF <LT_DATA> IS ASSIGNED.
LOOP AT <LT_DATA> ASSIGNING FIELD-SYMBOL(<FS_DATA>).
MOVE-CORRESPONDING <FS_DATA> TO POSTAB.
APPEND POSTAB.
ENDLOOP.
ENDIF.
LOOP AT POSTAB.
BUREG = POSTAB-BUREG.
I = I + 1.
IF I = 1.
HLP_BUREG = BUREG. " Init 1. Durchlauf
ENDIF.
IF BUREG NE HLP_BUREG.
HLP_BUREG = BUREG.
FLG_MULTI_BUREG = 1. " mind. 2 versch. Buregs
ENDIF.
ENDLOOP.
IF FLG_MULTI_BUREG EQ 1. " versch. Buregs - >
BUREG = 0. " dann mit 0 aufrufen
ENDIF.
IF FLG_MULTI_BUREG EQ 0 AND " Warnung, wenn Posten
BUREG NE 0.
IV_FLAG = 'X'.
ENDIF.