zoukankan      html  css  js  c++  java
  • 专家例程

    CUBE ZBPC_C01 -> CUBE ZBPC_C031 —— 专家程序

        DATA:
          RESULT_FIELDS      
    TYPE _ty_s_TG_1.

    *$*$ begin of routine - insert your code only below this line        *-*
        ... 
    "insert your code here
        
    DATA:
              it_gl_acct 
    TYPE STANDARD TABLE OF /bic/pzgl_acct1,
              wa_gl_acct 
    TYPE /bic/pzgl_acct1,

              it_gl_group 
    TYPE STANDARD TABLE OF /bic/pzbpc_gro,
              wa_gl_group 
    TYPE /bic/pzbpc_gro,

              it_xj_acct 
    TYPE STANDARD TABLE OF /bic/pzbpc_map,
              wa_xj_acct 
    TYPE /bic/pzbpc_map,

              it_gl_flow 
    TYPE STANDARD TABLE OF /bic/pz_flow,
              wa_gl_flow 
    TYPE /bic/pz_flow,

              period 
    TYPE n LENGTH 3,

              it_gro_acct 
    type STANDARD TABLE OF /BIC/PZ_KMLB,
              wa_gro_acct 
    type /BIC/PZ_KMLB,
    *-------------------------------------现金流量求期初
              e_s_result1 
    TYPE _ty_t_tg_1,
    *-------------------------------------现金流量求期初
              e_s_result 
    TYPE _ty_t_tg_1,
              STR 
    TYPE /BIC/PZBPC_GRO-/bic/z_group.
        
    FIELD-SYMBOLS:
          <result_fields>    
    TYPE _ty_s_tg_1,
          <wa_gl_group>  
    TYPE /bic/pzbpc_gro,
          <WA_GL_FLOW> 
    TYPE /bic/pz_flow,
          <it_gro_acct> 
    type /BIC/PZ_KMLB.
         
    SELECT * INTO CORRESPONDING FIELDS OF TABLE it_gl_group FROM
        /bic/pzbpc_gro 
    WHERE objvers = 'A' AND /BIC/Z_PLGL = 'N'.
        
    LOOP AT it_gl_group ASSIGNING <wa_gl_group>.
            
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <wa_gl_group>-company
            
    IMPORTING
              
    output = <wa_gl_group>-company.
        
    ENDLOOP.

        
    SELECT * INTO CORRESPONDING FIELDS OF TABLE it_gl_acct FROM
        /bic/pzgl_acct1 
    WHERE objvers = 'A'.
        
    SELECT * INTO CORRESPONDING FIELDS OF TABLE it_gl_flow FROM
        /bic/pz_flow 
    WHERE objvers = 'A'.
         
    LOOP AT it_gl_flow ASSIGNING <WA_GL_FLOW>.
            
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <WA_GL_FLOW>-/BIC/ZGL_ACCT
            
    IMPORTING
              
    output = <WA_GL_FLOW>-/BIC/ZGL_ACCT.
        
    ENDLOOP.

        
    SELECT * INTO CORRESPONDING FIELDS OF TABLE it_gro_acct FROM
        /BIC/PZ_KMLB 
    WHERE objvers = 'A' AND /BIC/Z_PLGL = 'N'.

        
    LOOP AT it_gro_acct ASSIGNING <it_gro_acct>.
            
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <it_gro_acct>-/bic/zgl_acct
            
    IMPORTING
              
    output = <it_gro_acct>-/bic/zgl_acct.
        
    ENDLOOP.
        
    SORT it_gro_acct DESCENDING.


        
    LOOP AT SOURCE_PACKAGE ASSIGNING <source_fields>.
          
    CLEAR WA_GRO_ACCT.
          
    CLEAR wa_gl_acct.
          
    CLEAR wa_gl_group.
          
    READ TABLE it_gl_acct INTO wa_gl_acct WITH KEY /bic/zgl_acct1 =
          <source_fields>-gl_account
                                                             chrt_accts =
                                                             
    '1000'
                                                             objvers = 
    'A'.
          
    IF wa_gl_acct-/bic/zgl_acct IS INITIAL.
            
    CONTINUE.
          
    ENDIF.
    *-----------------------------------------------------截取字符串前‘0’
          
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = wa_gl_acct-/bic/zgl_acct
            
    IMPORTING
              
    output = wa_gl_acct-/bic/zgl_acct.
          
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <source_fields>-comp_code
            
    IMPORTING
              
    output = <source_fields>-comp_code.
          
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <source_fields>-pcompany
            
    IMPORTING
              
    output = <source_fields>-pcompany.
          
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            
    EXPORTING
              
    input  = <source_fields>-func_area
            
    IMPORTING
              
    output = <source_fields>-func_area.

    *-----------------------------------------------------判断group
    IF <source_fields>-PCOMPANY = '9999'.
      <source_fields>-PCOMPANY = 
    ''.
    ENDIF.
          
    READ TABLE it_gro_acct INTO WA_GRO_ACCT WITH KEY /BIC/ZGL_ACCT =
          wa_gl_acct-/bic/zgl_acct OBJVERS = 
    'A' /BIC/Z_PLGL = 'N'.
          
    CLEAR STR.
          
    IF sy-subrc <> 0.
            WA_GRO_ACCT-/BIC/Z_KMLB = 
    'X'.
          
    ENDIF.
          
    IF WA_GRO_ACCT-/BIC/Z_KMLB <> 'A' AND <source_fields>-pcompany IS
          
    INITIAL.
            WA_GRO_ACCT-/BIC/Z_KMLB = 
    'X'.
          
    ENDIF.
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          WA_GRO_ACCT-/BIC/Z_KMLB company = <source_fields>-comp_code
          objvers = 
    'A'.
    IF <source_fields>-comp_code = '2100' and WA_GRO_ACCT-/BIC/ZGL_ACCT =
    '152401' AND
          <source_fields>-FISCPER =
          
    '2011009'.
            BREAK-POINT.
    ENDIF.
          
    IF sy-subrc <> 0.
          WA_GRO_ACCT-/BIC/Z_KMLB = 
    'X'.
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          WA_GRO_ACCT-/BIC/Z_KMLB company = <source_fields>-comp_code
          objvers = 
    'A'.
          
    ENDIF.
          
    IF WA_GRO_ACCT-/BIC/Z_KMLB = 'B'.
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          WA_GRO_ACCT-/BIC/Z_KMLB company = <source_fields>-pcompany
          objvers = 
    'A' /BIC/ZBPC_GRO = 2.
          
    IF sy-subrc = 0.
          STR = wa_gl_group-/bic/z_group.
          
    ELSE.
            STR = 
    'NONE'.
          
    ENDIF.
    *读取合并组代号为2
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          WA_GRO_ACCT-/BIC/Z_KMLB company = <source_fields>-comp_code
          objvers = 
    'A' /BIC/ZBPC_GRO = 2.
          
    IF sy-subrc = 0 AND STR = wa_gl_group-/bic/z_group.
            RESULT_FIELDS-/BIC/ZGROUPS = wa_gl_group-/bic/z_group.
            
    ELSE.
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          WA_GRO_ACCT-/BIC/Z_KMLB company = <source_fields>-comp_code
          objvers = 
    'A' /BIC/ZBPC_GRO = 1.
           RESULT_FIELDS-/BIC/ZGROUPS = wa_gl_group-/bic/z_group.
           
    ENDIF.
          
    ELSE.
            RESULT_FIELDS-/BIC/ZGROUPS = wa_gl_group-/bic/z_group.
          
    ENDIF.

    *-----------------------------------------------------FLOWF_999的统一处理

          
    CONCATENATE 'A' wa_gl_acct-/bic/zgl_acct INTO
          RESULT_FIELDS-/BIC/ZBPCACCT.
    *      IF RESULT_FIELDS-/BIC/ZBPCACCT = 'A100010'.
    *       BREAK-POINT.
    *      ENDIF.
          
    CONCATENATE 'CC' <source_fields>-comp_code INTO
          RESULT_FIELDS-/BIC/ZENTITY.
          RESULT_FIELDS-/BIC/ZFLOW = 
    'F_999'.
          
    IF <source_fields>-pcompany = '' OR <source_fields>-pcompany =
          
    '9999' OR <source_fields>-pcompany = '2099' OR
          <source_fields>-pcompany = 
    '2199' OR <source_fields>-pcompany =
          
    '2299'
            
    OR <source_fields>-pcompany+0(1) = '9' OR
            <source_fields>-pcompany = 
    'D220'.
            RESULT_FIELDS-/BIC/ZINTCO = 
    'I_NONE'.
          
    ELSE.
            
    CONCATENATE 'I_CC' <source_fields>-pcompany INTO
            RESULT_FIELDS-/BIC/ZINTCO.
          
    ENDIF.
          
    IF <source_fields>-func_area = '1000' OR <source_fields>-func_area
          = 
    '2000'.
            
    CONCATENATE 'C' <source_fields>-func_area INTO
            RESULT_FIELDS-/BIC/ZITEM.
          
    ELSE.
            RESULT_FIELDS-/BIC/ZITEM = 
    'DUMMY'.
          
    ENDIF.
          RESULT_FIELDS-/BIC/ZSIGNDATA = <source_fields>-deb_cre_lc.
          RESULT_FIELDS-/BIC/ZCATEGORY = 
    'C_100'.
          RESULT_FIELDS-/BIC/ZDATASRC = 
    'INPUT'.
          RESULT_FIELDS-/BIC/ZBPCRCR = 
    'LC'.
          RESULT_FIELDS-/BIC/ZBPCTIM = <source_fields>-fiscper.
          
    COLLECT RESULT_FIELDS INTO RESULT_PACKAGE.
    *-----------------------------------------------------现金科目  期初期末特殊处理
        
    IF RESULT_FIELDS-/BIC/ZBPCACCT = 'A101010'.
    *      BREAK-POINT.
          
    READ TABLE it_gl_group INTO wa_gl_group WITH KEY /BIC/Z_KMLB =
          
    'X' company = <source_fields>-comp_code
          objvers = 
    'A'.
          RESULT_FIELDS-/BIC/ZGROUPS = wa_gl_group-/bic/z_group.
          period = RESULT_FIELDS-/BIC/ZBPCTIM+
    4(3).
          
    if period = 1.
          RESULT_FIELDS-/BIC/ZBPCACCT = 
    'A81050100'.
             RESULT_FIELDS-/BIC/ZSIGNDATA  = <source_fields>-deb_cre_lc +
             <source_fields>-credit - <source_fields>-debit.
           
    COLLECT RESULT_FIELDS INTO e_s_result1.
           
    else.
           RESULT_FIELDS-/BIC/ZBPCACCT = 
    'A81050200'.
           RESULT_FIELDS-/BIC/ZSIGNDATA = <source_fields>-deb_cre_lc.
           
    COLLECT RESULT_FIELDS INTO RESULT_PACKAGE.
           RESULT_FIELDS-/BIC/ZBPCACCT = 
    'A100010'.
           
    endif.
        
    ENDIF.


    *-----------------------------------------------------对于期初余额的获取F_600
          
    READ TABLE it_gl_flow INTO wa_gl_flow WITH KEY /bic/zgl_acct =
          wa_gl_acct-/bic/zgl_acct /bic/zf_600 = 
    'F_600'
          objvers = 
    'A'.
          
    IF sy-subrc = 0.
            
    IF <source_fields>-FISCPER+4(3) = '001'.
            RESULT_FIELDS-/BIC/ZFLOW = 
    'F_600'.
              RESULT_FIELDS-/BIC/ZSIGNDATA  = <source_fields>-deb_cre_lc +
              <source_fields>-credit - <source_fields>-debit.
            
    COLLECT RESULT_FIELDS INTO e_s_result1.
            
    ENDIF.
            
    ENDIF.


    *-----------------------------------------------------对于年度累计发生额的数据收集F_12
    *0
          
    READ TABLE it_gl_flow INTO wa_gl_flow WITH KEY /bic/zgl_acct =
          wa_gl_acct-/bic/zgl_acct /bic/zf_120 = 
    'F_120'
      objvers = 
    'A'.
          
    IF sy-subrc = 0.
            RESULT_FIELDS-/BIC/ZFLOW = 
    'F_120'.
           
    IF wa_gl_acct-/bic/zgl_acct <> '124101' AND
           wa_gl_acct-/bic/zgl_acct <> 
    '124102'.
              RESULT_FIELDS-/BIC/ZSIGNDATA  = <source_fields>-debit -
              <source_fields>-credit.
           
    ELSE.
             RESULT_FIELDS-/BIC/ZSIGNDATA  = <source_fields>-credit.
           
    ENDIF.
                  
    COLLECT RESULT_FIELDS INTO e_s_result.
            
    ENDIF.


    *-----------------------------------------------------对于当月发生额的获取F_620
          
    READ TABLE it_gl_flow INTO wa_gl_flow WITH KEY /bic/zgl_acct =
          wa_gl_acct-/bic/zgl_acct /bic/zf_620 = 
    'F_620'
      objvers = 
    'A'.
          
    IF sy-subrc = 0.
            RESULT_FIELDS-/BIC/ZFLOW = 
    'F_620'.
            RESULT_FIELDS-/BIC/ZSIGNDATA  = <source_fields>-debit -
            <source_fields>-credit.
            
    COLLECT RESULT_FIELDS INTO RESULT_PACKAGE.
          
    ENDIF.
          
    CLEAR RESULT_FIELDS.
        
    ENDLOOP.
    *-----------------------------------------------------对于年度累计发生额的数据计算
        BREAK-POINT.
            
    LOOP AT e_s_result INTO RESULT_FIELDS.
             
    IF RESULT_FIELDS-/BIC/ZFLOW = 'F_120'.
            
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
              
    EXPORTING
                
    input  = RESULT_FIELDS-/BIC/ZBPCTIM
              
    IMPORTING
                
    output = RESULT_FIELDS-/BIC/ZBPCTIM.
            period = RESULT_FIELDS-/BIC/ZBPCTIM+
    4(3).
            
    DO.
              
    CONCATENATE RESULT_FIELDS-/BIC/ZBPCTIM+0(4) period INTO
              RESULT_FIELDS-/BIC/ZBPCTIM.
              
    COLLECT RESULT_FIELDS INTO RESULT_PACKAGE.
              period = period + 
    1.
              
    IF period > 12.
                
    EXIT.
              
    ENDIF.
            
    ENDDO.
           
    ENDIF.
          
    ENDLOOP.

           
    LOOP AT e_s_result1 INTO RESULT_FIELDS.
            
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
              
    EXPORTING
                
    input  = RESULT_FIELDS-/BIC/ZBPCTIM
              
    IMPORTING
                
    output = RESULT_FIELDS-/BIC/ZBPCTIM.
            
    CLEAR period.
            period = RESULT_FIELDS-/BIC/ZBPCTIM+
    4(3).
            
    DO.
              
    CONCATENATE RESULT_FIELDS-/BIC/ZBPCTIM+0(4) period INTO
              RESULT_FIELDS-/BIC/ZBPCTIM.
              
    COLLECT RESULT_FIELDS INTO RESULT_PACKAGE.
              period = period + 
    1.
              
    IF period > 12.
                
    EXIT.
              
    ENDIF.
            
    ENDDO.
          
    ENDLOOP.

  • 相关阅读:
    EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
    EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
    EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
    基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
    基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
    EasyRTMP实现RTMP异步直播推送之环形缓冲区设计
    EasyRTMP实现RTMP异步直播推送之环形缓冲区设计
    EasyRTMP实现的rtmp推流的基本协议流程
    EasyRTMP实现的rtmp推流的基本协议流程
    EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
  • 原文地址:https://www.cnblogs.com/weichuo/p/2690747.html
Copyright © 2011-2022 走看看