此博客为原创博客,都是个人工作经历所得,转载请注明出处

20170320 分包逻辑

一、确定分包的条目,进行分包,

*&---------------------------------------------------------------------*
*& Report  YTST_2017014
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  YTST_2017014.

TABLES:MKPF.

DATA:L_LINE TYPE SY-TABIX,
     L_FLAG TYPE C.
DATA:L_XBLNR TYPE XBLNR.
DATA:L_DIV TYPE SY-TABIX,
     L_MOD TYPE SY-TABIX.
DATA:L_PACK TYPE SY-TABIX.

RANGES:R_XBLNR FOR MKPF-XBLNR.

PARAMETER:P_COUNT TYPE SY-TABIX DEFAULT 3,
          P_LINE  TYPE SY-TABIX.


*L_CHU = P_LINE / P_COUNT.
L_DIV = P_LINE DIV P_COUNT.
L_MOD = P_LINE MOD P_COUNT.

IF L_MOD > 0.
  L_PACK = L_DIV + 1.
ELSE.
    L_PACK = L_DIV .
ENDIF.

DO L_PACK TIMES.

  R_XBLNR(3) = 'IEQ'.
  R_XBLNR-LOW = ( SY-INDEX - 1 ) * P_COUNT + 1.
  R_XBLNR-HIGH =  SY-INDEX * P_COUNT .
  APPEND R_XBLNR.
ENDDO.

LOOP AT R_XBLNR.
  WRITE:/ R_XBLNR-LOW, SPACE, R_XBLNR-HIGH.
ENDLOOP.


二、内表中通过条目数直接分包;

得到创建凭证的抬头:

DATA:  L_TABIX TYPE SY-TABIX.
  DATA:L_DIV  TYPE SY-TABIX,
       L_MOD  TYPE SY-TABIX.
  DATA:L_PACK TYPE SY-TABIX.


PARAMETERS:P_COUNT TYPE SY-TABIX DEFAULT 3. LOOP AT LT_ALV INTO WA_ALV WHERE MESG EQ SPACE. L_TABIX
= SY-TABIX. IF L_TABIX <= P_COUNT. WA_ALV-XBLNR = P_COUNT. ELSE. L_DIV = L_TABIX DIV P_COUNT. L_MOD = L_TABIX MOD P_COUNT. IF L_MOD > 0. WA_ALV-XBLNR = ( L_DIV + 1 ) * P_COUNT . ELSE. WA_ALV-XBLNR = L_DIV * P_COUNT . ENDIF. ENDIF. WA_MKPF-XBLNR = WA_ALV-XBLNR. WA_MKPF-BUDAT = WA_ALV-BUDAT. COLLECT WA_MKPF INTO LT_MKPF. CLEAR WA_MKPF. MODIFY LT_ALV FROM WA_ALV INDEX L_TABIX. CLEAR WA_ALV. ENDLOOP.

 

posted @ 2017-03-20 16:39  Rainystuday  阅读(159)  评论(0)    收藏  举报