惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
Cisco Talos Blog
Cisco Talos Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
Project Zero
Project Zero
E
Exploit-DB.com RSS Feed
S
Secure Thoughts
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
WordPress大学
WordPress大学
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
About on SuperTechFans
Hacker News: Ask HN
Hacker News: Ask HN
AWS News Blog
AWS News Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hacker News: Front Page
F
Full Disclosure
Latest news
Latest news
Schneier on Security
Schneier on Security
The Hacker News
The Hacker News
T
Troy Hunt's Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
TaoSecurity Blog
TaoSecurity Blog
G
GRAHAM CLULEY
Forbes - Security
Forbes - Security
V
V2EX - 技术
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Vulnerabilities – Threatpost
C
Cyber Attacks, Cyber Crime and Cyber Security
MongoDB | Blog
MongoDB | Blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
P
Privacy International News Feed
C
Check Point Blog
N
News and Events Feed by Topic

博客园 - 魏绰

冲销会计凭证:FBRP与FB08的区别 xk01创建供应商保存的时候,提示错误“科目800001已经存在” SAP如何使用关于序列号的表 解决:“凭证编号 ******** 已分配!”的错误 Payment Terms 收付款条件和分期付款设置 bw R/3端配置 (转) SAP WM 层面仓位调整 在ABAP中用事务更新数据(转) ABAP设置JOB SMARTFORM 点击打印后,将打印次数或者是最后的打印时间添加到数据表中 SMARTFORMS 分页函数显示 '*" asp.net 发送邮件 [转]SAP ABAP中使用Read_Text函数读取项目文本的方法 ABAP生成随机数 BW知识点总结及面试要点(转) se93 为自建表分配维护事物码 F4搜索帮助 F4IF_INT_TABLE_VALUE_REQUEST SAP系统中设定流水号 SAP 调用外部程序 .转
专家例程
魏绰 · 2012-09-18 · via 博客园 - 魏绰

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.