內表當前與其它所有的行相加

DATADATA TYPE I,
      C_DATA,
      CON_DATA.
DATA: POS TYPE STRING VALUE '1',
      SUM TYPE i VALUE 3.
DATACOUNT TYPE I.
DATABEGIN OF IT_DATA OCCURS 0,
        ID(30),
        VALUE TYPE I,
        FLAG,
      END OF IT_DATA.
DATA: IT_TAB LIKE IT_DATA OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

  IT_DATA-ID = '1'. IT_DATA-VALUE = 11APPEND IT_DATA.
  IT_DATA-ID = '2'. IT_DATA-VALUE = 22APPEND IT_DATA.
  IT_DATA-ID = '3'. IT_DATA-VALUE = 33APPEND IT_DATA.
  IT_DATA-ID = '4'. IT_DATA-VALUE = 44APPEND IT_DATA.
  IT_DATA-ID = '5'. IT_DATA-VALUE = 55APPEND IT_DATA.

  SUM = LINES( IT_DATA ).

  DATA: SUM2 LIKE SUM.
  SUM2 = SUM ."* 2.

  DATA = 0.
  DO SUM2 TIMES.
    ADD 1 TO DATA.

    IF SUM < DATA .
      EXIT.
    ENDIF.
    C_DATA = DATA.
    IT_TAB-ID = C_DATA. COLLECT IT_TAB.

    LOOP AT IT_TAB.
      PERFORM FRM_SET_DATA_NEW USING IT_TAB-ID  SUM.
    ENDLOOP.
  ENDDO.

  SORT IT_TAB BY ID.
  BREAK-POINT.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_DATA_NEW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_POS  text
*      -->P_SUM  text
*----------------------------------------------------------------------*
FORM FRM_SET_DATA_NEW  USING    P_POS
                                P_SUM.
  DATA: FRM_POS_I TYPE I,
        FRM_POS_C(20) ,
        FRM_P_POS TYPE I.
  DATA: FRM_POS_LASTPOS.
  DATA: FRM_POS_STRLEN TYPE I.
  DATA: FRM_WA_TAB LIKE LINE OF IT_TAB.

  FRM_POS_STRLEN = STRLEN( P_POS  ).
  FRM_POS_STRLEN = FRM_POS_STRLEN - 1.
  FRM_P_POS = P_POS+FRM_POS_STRLEN(1).

  FRM_POS_I =  FRM_P_POS.
  DO P_SUM TIMES.
    FRM_POS_I = FRM_POS_I + 1.
    FRM_POS_C = FRM_POS_I.
    CONDENSE FRM_POS_C NO-GAPS.
    IF P_SUM < FRM_POS_I.
      CONTINUE.
    ELSEIF FRM_P_POS < FRM_POS_I.
      CONCATENATE P_POS '+'FRM_POS_C INTO FRM_POS_C.
    ELSE.
      CONCATENATE FRM_POS_C '+' P_POS INTO FRM_POS_C.
    ENDIF.

    CONDENSE FRM_POS_C NO-GAPS.

    FRM_WA_TAB-FLAG = 'X'.FRM_WA_TAB-ID = FRM_POS_C.
    COLLECT FRM_WA_TAB INTO IT_TAB.
  ENDDO.
ENDFORM.    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章