AIAB BDC弹窗选择 标准程序处理

 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.

 

posted @ 2024-03-22 13:28  YangMeiko  阅读(59)  评论(0)    收藏  举报