PS 项目创建

*----------------------------------------------------------------------*
* 程序名称: ZJISCOPS_REXEC_001
* 程序标题: 自定义创建项目
* 项目名称: 西部重工项目
* 程序类型: Report
* 创建人  : 苏井祥
* 创建日期: 2014/6/2
* 模块    : PS
* 事务码  : ZPSR001
* 请求号  :
* 功能描述: 利用BDC自定义或使用模板创建项目
* 相关文档:
*----------------------------------------------------------------------*
* 修改记录:
* 作者   日期     请求号      修改原因描述
*-----------  --------  -----------------------------------------------*
*
*----------------------------------------------------------------------*

REPORT zjiscops_rexec_001.

*----------------------------------------------------------------------*
*        INCLUDE                                                       *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* tables;
*----------------------------------------------------------------------*
TYPE-POOLS vrm.

*&------------------------------------------------------------
*&        Global data declarations.
*&------------------------------------------------------------
TYPES: BEGIN OF ty_sdata,
       pspid TYPE proj-pspid,"项目编码
       profl TYPE proj-profl,"项目参数文件
       END OF ty_sdata.

*&------------------------------------------------------------
*&        Globlal  work area and internal table declarations.
*&------------------------------------------------------------
DATA: gs_sdata TYPE ty_sdata,
      gt_sdata TYPE TABLE OF ty_sdata.

DATA: gwa_bdcdata  TYPE bdcdata,
      gt_bdcdata   TYPE TABLE OF bdcdata.
DATA: gwa_messtab  TYPE bdcmsgcoll,
      gt_messtab   TYPE TABLE OF  bdcmsgcoll.
DATA: g_message    TYPE balmsgtxtp.
DATA: gwa_return   TYPE bapiret2,
      gt_return    TYPE TABLE OF bapiret2.

DATA: g_flag_fdyj TYPE c," FD YJ 项目类型选择标记
      g_flag_yf   TYPE c." YF

DATA: g_obj TYPE char30. "转换的对象
DATA: g_obj_out TYPE  proj-pspid. "外部的项目ID

DATA: g_profidproj TYPE tcj41-profidproj."项目参数文件

*&------------------------------------------------------------
*&        ALV data declarations.
*&------------------------------------------------------------

*&------------------------------------------------------------
*&      Constant.
*&------------------------------------------------------------

*&------------------------------------------------------------
*&      Selection-screen.
*&------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-004."年度
PARAMETERS p_year  TYPE mkpf-mjahr DEFAULT sy-datum+0(4) OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-002."公司代码
PARAMETERS p_bukrs TYPE  ekko-bukrs OBLIGATORY DEFAULT ‘7340‘.
SELECTION-SCREEN COMMENT 30(10) text-003."工厂
PARAMETERS p_werks TYPE  marc-werks OBLIGATORY DEFAULT ‘7340‘.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-014."项目描述
PARAMETERS p_post1 TYPE    proj-post1  OBLIGATORY .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-008."项目负责人
PARAMETERS p_vernr TYPE    proj-vernr OBLIGATORY  .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-012. "开始日期
PARAMETERS: p_plfaz  TYPE   proj-plfaz  .
SELECTION-SCREEN COMMENT 30(10) text-013."完成日期
PARAMETERS: p_plsez TYPE   proj-plsez  .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-005. "项目类
PARAMETERS: zlist  TYPE   spfli-connid  AS LISTBOX VISIBLE LENGTH 10
USER-COMMAND zfl OBLIGATORY.
SELECTION-SCREEN COMMENT 30(10) text-006."项目类明细
PARAMETERS: zlist2 TYPE   spfli-connid AS LISTBOX VISIBLE LENGTH 10
OBLIGATORY.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-007."标准项目定义
PARAMETERS p_pspnr TYPE    proj-pspid   MATCHCODE OBJECT prss.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-009 ."销售组织
PARAMETERS p_vkorg TYPE    proj-vkorg  .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-010."分销渠道
PARAMETERS p_vtweg TYPE        proj-vtweg  .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(10) text-011."产品组
PARAMETERS p_spart TYPE         proj-spart .
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK b1.

*&------------------------------------------------------------
*&        Initialization.
*&------------------------------------------------------------
INITIALIZATION.
  CLEAR:  gt_return,gt_messtab,gt_bdcdata,
          gwa_return,gwa_messtab,gwa_bdcdata.

*&------------------------------------------------------------
*&     At selection-screen.
*&------------------------------------------------------------

AT SELECTION-SCREEN OUTPUT.
  PERFORM frm_selectlist_pbo CHANGING zlist."二级下拉菜单关联
  PERFORM frm_modify_screen."研发类型不显示销售区域

*&------------------------------------------------------------
*&       Start-of-selection.
*&------------------------------------------------------------

START-OF-SELECTION.
  PERFORM frm_check_data."检查销售区域数据
  PERFORM frm_process_data."处理逻辑

IF p_pspnr IS  INITIAL.
    PERFORM frm_fill_bdcdata."填充BDC数据
    PERFORM frm_call_transaction."调用事务

ELSE.
*    PERFORM frm_delete_wbs."删除原有元素
    PERFORM frm_create_project."基于模版创建项目
  ENDIF.
  PERFORM frm_show_message.
*&------------------------------------------------------------
*&      End-of-selection.
*&------------------------------------------------------------

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_process_data .

DATA: lds_proj TYPE proj,
        ldt_proj TYPE TABLE OF proj.
  DATA: ldf_condtion TYPE string.
  DATA: ldf_c3(3) TYPE c.

CASE zlist.
    WHEN ‘0001‘.
      gs_sdata-pspid+0(2) = ‘FD‘."风电
      g_profidproj = ‘XZ00001‘.
    WHEN ‘0002‘.
      gs_sdata-pspid+0(2) = ‘YJ‘."冶金
      g_profidproj = ‘XZ00001‘.
    WHEN ‘0003‘.
      gs_sdata-pspid+0(2) = ‘YF‘."研发
      g_profidproj = ‘XZ00002‘.
    WHEN OTHERS.
  ENDCASE.

gs_sdata-pspid+2(4) = p_year."年度

IF zlist = ‘0001‘.
    CASE zlist2.
      WHEN ‘0001‘."FD
        gs_sdata-pspid+6(2) = ‘TJ‘."集团
      WHEN ‘0002‘."YJ
        gs_sdata-pspid+6(2) = ‘QT‘."其他
      WHEN OTHERS.
    ENDCASE.
  ELSEIF zlist = ‘0002‘.
    CASE zlist2.
      WHEN ‘0001‘."FD
        gs_sdata-pspid+6(2) = ‘JT‘.
      WHEN ‘0002‘."YJ
        gs_sdata-pspid+6(2) = ‘WB‘.
      WHEN OTHERS.
    ENDCASE.
  ELSEIF zlist = ‘0003‘.
    CASE zlist2.
      WHEN ‘0001‘."FD
        gs_sdata-pspid+6(2) = ‘FD‘.
      WHEN ‘0002‘."YJ
        gs_sdata-pspid+6(2) = ‘YJ‘.
      WHEN ‘0003‘."YJ
        gs_sdata-pspid+6(2) = ‘MH‘.
      WHEN ‘0004‘."YJ
        gs_sdata-pspid+6(2) = ‘SY‘.
      WHEN OTHERS.
    ENDCASE.
  ENDIF.

" 动态SQL 以及 拼字符串处理
  ldf_condtion = gs_sdata.
  CONCATENATE ldf_condtion ‘%‘ INTO ldf_condtion.
  CONCATENATE  ‘PSPID‘   ‘ LIKE‘ ‘ ‘‘‘ldf_condtion‘‘‘‘  INTO
  ldf_condtion .

SELECT * INTO TABLE ldt_proj FROM proj
           WHERE (ldf_condtion).

SORT ldt_proj BY pspid DESCENDING.
  CLEAR lds_proj.
  READ TABLE ldt_proj INTO lds_proj INDEX 1.
  IF sy-subrc = 0.
    ldf_c3 = lds_proj-pspid+8(3) + 1.
  ELSE.
    ldf_c3 = 1.
  ENDIF.

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘
    EXPORTING
      input  = ldf_c3
    IMPORTING
      output = ldf_c3.

gs_sdata-pspid+8(3) = ldf_c3. "最终编号

ENDFORM.                    " FRM_PROCESS_DATA

*&---------------------------------------------------------------------*
*&      Form  FRM_FILL_BDCDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_fill_bdcdata .

DATA: lds_tcj41 TYPE tcj41,
        ldt_tcj41 TYPE TABLE OF tcj41,
        lds_projs TYPE projs,
        ldt_projs TYPE TABLE OF projs,
        lds_prpss TYPE prpss,
        ldt_prpss TYPE TABLE OF prpss.
  DATA: ldf_lines TYPE i.

SELECT * INTO TABLE  ldt_tcj41 FROM tcj41.

IF g_flag_yf = ‘X‘.
    p_vkorg = ‘‘."销售组织
    p_vtweg = ‘‘."分销渠道
    p_spart = ‘‘."产品组
  ENDIF.

"是否启用标准模板
  IF p_pspnr = ‘‘.

IF g_flag_fdyj = ‘X‘.
*****************自定义销售***********************************
      CLEAR lds_tcj41.

*READ TABLE ldt_tcj41 INTO lds_tcj41 WITH KEY profidproj = ‘XZ00001‘.
      READ TABLE ldt_tcj41 INTO lds_tcj41 WITH KEY profidproj =
      g_profidproj.

g_obj = lds_tcj41-scope.
      PERFORM frm_conver_unit USING lds_tcj41-zteht."单位转换
      PERFORM frm_conver_obj USING g_obj."对象类转换

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘   ‘0100‘.
      PERFORM bdc_field       USING ‘BDC_CURSOR‘  ‘*PROJ-PSPID‘.
      PERFORM bdc_field       USING ‘BDC_OKCODE‘  ‘=MDTB‘.
      PERFORM bdc_field       USING ‘*PROJ-PSPID‘ gs_sdata-pspid.
      PERFORM bdc_field       USING ‘RCWBS-PROFL‘  ‘XZ00001‘."参数文件
      PERFORM bdc_field       USING ‘RCWKP-VORSPSP‘ ‘‘.

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘     ‘0998‘.
      PERFORM bdc_field       USING ‘BDC_OKCODE‘   ‘=PCNT‘.
      PERFORM bdc_field       USING ‘PROJ-PSPID‘   gs_sdata-pspid.
      PERFORM bdc_field       USING ‘PROJ-POST1‘   p_post1."项目描述
      PERFORM bdc_field       USING ‘BDC_CURSOR‘   ‘PROJ-PLSEZ‘.
      PERFORM bdc_field       USING ‘PROJ-VERNR‘   p_vernr. "负责人
      PERFORM bdc_field       USING ‘PROJ-VKOKR‘   ‘XBZG‘."此项目的控制范围
      PERFORM bdc_field       USING ‘PROJ-VBUKR‘   p_bukrs."项目公司代码
      PERFORM bdc_field       USING ‘PROJ-WERKS‘   p_werks."工厂
      IF p_plfaz IS  INITIAL.
        PERFORM bdc_field       USING ‘PROJ-PLFAZ‘   ‘‘."开始日期
      ELSE.
        PERFORM bdc_field       USING ‘PROJ-PLFAZ‘   p_plfaz."开始日期
      ENDIF.
      IF p_plsez IS INITIAL.
        PERFORM bdc_field       USING ‘PROJ-PLSEZ‘   ‘‘."结束日期
      ELSE.
        PERFORM bdc_field       USING ‘PROJ-PLSEZ‘   p_plsez."结束日期
      ENDIF.

PERFORM bdc_field       USING ‘PROJ-KALID‘   lds_tcj41-kalid.
      
"工厂日历码
      
PERFORM bdc_field       USING ‘PROJ-ZTEHT‘   lds_tcj41-zteht.
      
"在时间计划中的时间单位
      
PERFORM bdc_field       USING ‘PROJ-PWHIE‘   lds_tcj41-waers.
      
"WBS货币(项目定义)

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘         ‘0998‘.
      
PERFORM bdc_field       USING ‘BDC_OKCODE‘       ‘=LETB‘.
      
PERFORM bdc_field       USING ‘PROJ-PSPID‘       gs_sdata-pspid.
      
PERFORM bdc_field       USING ‘PROJ-POST1‘       p_post1.
      
PERFORM bdc_field       USING ‘PROJ-BPROF‘       lds_tcj41-bprof.
      
"预算参数文件
      
PERFORM bdc_field       USING ‘PROJ-VPROF‘       lds_tcj41-vprof.
      
"网络参数文件
      
PERFORM bdc_field       USING ‘PROJ-PPROF‘       lds_tcj41-pprof.
      
"计划参数文件
      
PERFORM bdc_field       USING ‘PROJ-SCPRF‘       lds_tcj41-scprf.
      
"WBS 计划概要
      
PERFORM bdc_field       USING ‘PROJ-ABGSL‘       lds_tcj41-abgsl.
      
"RA 码
      
PERFORM bdc_field       USING ‘PROJ-VGPLF‘       lds_tcj41-vgplf.
      
"计划方法/基本
      
PERFORM bdc_field       USING ‘PROJ-EWPLF‘       lds_tcj41-ewplf.
      
"计划方法/预测
      
PERFORM bdc_field       USING ‘PROJ-SCOPE‘       g_obj."对象类
      
PERFORM bdc_field       USING ‘PROJ-PLINT‘       lds_tcj41-plint.
      
"综合计划
      
PERFORM bdc_field       USING ‘PROJ_BEST_BWRT‘   lds_tcj41-besta
      .
"项目存货
      
PERFORM bdc_field       USING ‘PROJ-VKORG‘       p_vkorg."销售组织
      
PERFORM bdc_field       USING ‘PROJ-VTWEG‘       p_vtweg."分销渠道
      
PERFORM bdc_field       USING ‘PROJ-SPART‘       p_spart."产品组

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘         ‘0901‘.
      
PERFORM bdc_field       USING ‘BDC_OKCODE‘       ‘=BU‘.
      
PERFORM bdc_field       USING ‘PROJ-POST1‘       gs_sdata-pspid."
      
PERFORM bdc_field       USING ‘PROJ-POST1‘       p_post1.
      
PERFORM bdc_field       USING ‘BDC_CURSOR‘       ‘PRPS-POST1(01)‘.
      
PERFORM bdc_field       USING ‘RCWBS-IDENT(01)‘  gs_sdata-pspid.
      
"WBS元素
      
PERFORM bdc_field       USING ‘PRPS-POST1(01)‘   p_post1."WBS描述

ENDIF.

*************************** END *******************************

******************自定义研发************************
    
IF  g_flag_yf = ‘X‘.

CLEAR lds_tcj41.

*READ TABLE ldt_tcj41 INTO lds_tcj41 WITH KEY profidproj = ‘XZ00002‘.
      
READ TABLE ldt_tcj41 INTO lds_tcj41 WITH KEY profidproj =
      g_profidproj.

PERFORM frm_conver_unit USING lds_tcj41-zteht."单位转换

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘      ‘0100‘.
      
PERFORM bdc_field       USING ‘BDC_CURSOR‘    ‘*PROJ-PSPID‘.
      
PERFORM bdc_field       USING ‘BDC_OKCODE‘    ‘=MDTB‘.
      
PERFORM bdc_field       USING ‘*PROJ-PSPID‘   gs_sdata-pspid.
      
PERFORM bdc_field       USING ‘RCWBS-PROFL‘   ‘XZ00002‘."参数文件
      
PERFORM bdc_field       USING ‘RCWKP-VORSPSP‘ ‘‘.

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘     ‘0998‘.
      
PERFORM bdc_field       USING ‘BDC_OKCODE‘   ‘=LETB‘.
      
PERFORM bdc_field       USING ‘PROJ-PSPID‘   gs_sdata-pspid.
      
PERFORM bdc_field       USING ‘PROJ-POST1‘   p_post1."
      
PERFORM bdc_field       USING ‘BDC_CURSOR‘   ‘PROJ-PLSEZ‘.
      
PERFORM bdc_field       USING ‘PROJ-VERNR‘   p_vernr."
      
PERFORM bdc_field       USING ‘PROJ-VKOKR‘   ‘XBZG‘."
      
PERFORM bdc_field       USING ‘PROJ-VBUKR‘   p_bukrs."
      
PERFORM bdc_field       USING ‘PROJ-WERKS‘   p_werks."
      
IF p_plfaz IS  INITIAL.
        
PERFORM bdc_field       USING ‘PROJ-PLFAZ‘   ‘‘."开始日期
      ELSE.

PERFORM bdc_field       USING ‘PROJ-PLFAZ‘   p_plfaz."开始日期
      ENDIF.

IF p_plsez IS INITIAL.
        
PERFORM bdc_field       USING ‘PROJ-PLSEZ‘   ‘‘."结束日期
      ELSE.

PERFORM bdc_field       USING ‘PROJ-PLSEZ‘   p_plsez."结束日期
      ENDIF.

PERFORM bdc_field       USING ‘PROJ-KALID‘   lds_tcj41-kalid.
      
"工厂日历码
      
PERFORM bdc_field       USING ‘PROJ-ZTEHT‘   lds_tcj41-zteht.
      
"在时间计划中的时间单位
      
PERFORM bdc_field       USING ‘PROJ-PWHIE‘   lds_tcj41-waers.
      
"WBS货币(项目定义)

PERFORM bdc_dynpro      USING ‘SAPLCJWB‘         ‘0901‘.
      
PERFORM bdc_field       USING ‘BDC_OKCODE‘       ‘=BU‘.
      
PERFORM bdc_field       USING ‘PROJ-POST1‘       p_post1."
      
PERFORM bdc_field       USING ‘BDC_CURSOR‘       ‘PRPS-POST1(01)‘.
      
PERFORM bdc_field       USING ‘RCWBS-IDENT(01)‘  gs_sdata-pspid.
      
"WBS元素
      
PERFORM bdc_field       USING ‘PRPS-POST1(01)‘   p_post1."WBS描述
    ENDIF.

***************  end ********************
  ENDIF.
ENDFORM.

" FRM_FILL_BDCDATA

*&---------------------------------------------------------------------*

*&      Form  FRM_CALL_TRANSACTION

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_call_transaction .

CALL TRANSACTION ‘CJ01‘ USING gt_bdcdata MODE ‘N‘ MESSAGES INTO
  gt_messtab.

WAIT UP TO 1 SECONDS.
  
LOOP AT gt_messtab INTO gwa_messtab WHERE msgtyp = ‘E‘
                                      
OR msgtyp = ‘A‘ OR msgtyp = ‘S‘.
    
PERFORM get_message USING gwa_messtab
                        
CHANGING  g_message .
    gwa_return-type = gwa_messtab-msgtyp.
    gwa_return-message = g_message.

APPEND gwa_return TO gt_return.
    
CLEAR gwa_return.
    
CLEAR g_message.
  ENDLOOP.
ENDFORM.

" FRM_CALL_TRANSACTION

*-------------------------------------------------------------------*

*        Start new screen

*

*-------------------------------------------------------------------*

FORM bdc_dynpro USING program dynpro.
  
CLEAR gwa_bdcdata.
  gwa_bdcdata-program  = program.
  gwa_bdcdata-dynpro   = dynpro.
  gwa_bdcdata-dynbegin =

‘X‘.
  
APPEND gwa_bdcdata TO gt_bdcdata.
ENDFORM.                    
"bdc_dynpro

*-------------------------------------------------------------------*

*        Insert field

*

*-------------------------------------------------------------------*

FORM bdc_field USING fnam fval.
  
CLEAR gwa_bdcdata.
  gwa_bdcdata-fnam = fnam.
  gwa_bdcdata-fval = fval.

APPEND gwa_bdcdata TO gt_bdcdata.
ENDFORM.                    
"bdc_field

*&---------------------------------------------------------------------*

*&      Form  GET_MESSAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_WA_BDC_MESSAGE  text

*      <--P_WA_MESSAGE_MSG_TXT  text

*----------------------------------------------------------------------*

FORM get_message USING lw_message TYPE  bdcmsgcoll
                 
CHANGING g_message TYPE balmsgtxtp.
  
CLEAR g_message.
  
CALL FUNCTION ‘MESSAGE_TEXT_BUILD‘
    
EXPORTING
      msgid               = lw_message-msgid
      msgnr               = lw_message-msgnr
      msgv1               = lw_message-msgv1
      msgv2               = lw_message-msgv2
      msgv3               = lw_message-msgv3
      msgv4               = lw_message-msgv4

IMPORTING
      message_text_output = g_message.

ENDFORM.

" GET_MESSAGE

*&---------------------------------------------------------------------*

*&      Form  frm_selectlist_pbo

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->ZLIST      text

*----------------------------------------------------------------------*

FORM frm_selectlist_pbo CHANGING zlist.

*  data itab_list type vrm_values.
  DATA:  ldt_list 
TYPE TABLE OF vrm_value,
         lds_list 
TYPE vrm_value.

DATA:  ldt_list2

TYPE TABLE OF vrm_value,
         lds_list2 
TYPE vrm_value.

FREE ldt_list.
  lds_list-key = 
‘01‘.
  lds_list-text = 
‘风电‘.
  
APPEND lds_list TO ldt_list.
  lds_list-key = 
‘02‘.
  lds_list-text = 
‘冶金‘.
  
APPEND lds_list TO ldt_list.
  lds_list-key = 
‘03‘.
  lds_list-text = 
‘研发‘.
  
APPEND lds_list TO ldt_list.

CALL FUNCTION ‘VRM_SET_VALUES‘
    
EXPORTING
      
id     = ‘ZLIST‘  "屏幕中的下拉菜单的NAME,下拉菜单选择LISTBOX
      values = ldt_list.

IF zlist = ‘‘.
    
READ TABLE ldt_list INTO lds_list INDEX 1.
    zlist = lds_list-key.
  ENDIF.

FREE ldt_list2.
  
IF zlist = ‘01‘ .
    
FREE ldt_list2.
    lds_list2-key = 
‘01‘.
    lds_list2-text = 
‘塔架‘.
    
APPEND lds_list2 TO ldt_list2.
    lds_list2-key = 
‘02‘.
    lds_list2-text = 
‘其他‘.
    
APPEND lds_list2 TO ldt_list2.
  
ELSEIF zlist = ‘02‘ .
    
FREE ldt_list2.
    lds_list2-key = 
‘01‘.
    lds_list2-text = 
‘集团‘.
    
APPEND lds_list2 TO ldt_list2.
    lds_list2-key = 
‘02‘.
    lds_list2-text = 
‘外部‘.
    
APPEND lds_list2 TO ldt_list2.
  
ELSEIF zlist = ‘03‘ .
    
FREE ldt_list2.
    lds_list2-key = 
‘01‘.
    lds_list2-text = 
‘风电‘.
    
APPEND lds_list2 TO ldt_list2.
    lds_list2-key = 
‘02‘.
    lds_list2-text = 
‘冶金‘.
    
APPEND lds_list2 TO ldt_list2.
    lds_list2-key = 
‘03‘.
    lds_list2-text = 
‘煤化‘.
    
APPEND lds_list2 TO ldt_list2.
    lds_list2-key = 
‘04‘.
    lds_list2-text = 
‘石油‘.
    
APPEND lds_list2 TO ldt_list2.
  ENDIF.

CALL FUNCTION ‘VRM_SET_VALUES‘
    
EXPORTING
      
id     = ‘ZLIST2‘  "屏幕中的下拉菜单的NAME,下拉菜单选择LISTBOX
      values = ldt_list2.

READ TABLE ldt_list2 INTO lds_list2 INDEX 1.
  zlist2 = lds_list2-key.

ENDFORM.

"frm_selectlist_pbo

*&---------------------------------------------------------------------*

*&      Form  FRM_MODIFY_SCREEN

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_modify_screen.

IF zlist = ‘0003‘ .
    
LOOP AT SCREEN.
      
CASE screen-name.
        
WHEN ‘P_VKORG‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN ‘P_VTWEG‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN ‘P_SPART‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN ‘%C009036_1000‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN ‘%C010040_1000‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN ‘%C011044_1000‘.
          screen-active = 
0.
          
MODIFY SCREEN.
        
WHEN OTHERS.
      ENDCASE.
    ENDLOOP.
  ENDIF.

ENDFORM.

" FRM_MODIFY_SCREEN

*&---------------------------------------------------------------------*

*&      Form  FRM_SHOW_MESSAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_show_message .
  
LOOP AT gt_return INTO gwa_return.
    WRITE: / gwa_return-type, gwa_return-message.
  ENDLOOP.
ENDFORM.

" FRM_SHOW_MESSAGE

*&---------------------------------------------------------------------*

*&      Form  FRM_CHECK_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_check_data .

IF zlist = ‘0001‘ OR  zlist = ‘0002‘ .
    g_flag_fdyj = 
‘X‘.
  
ELSEIF zlist = ‘0003‘.
    g_flag_yf = 
‘X‘.
  ENDIF.

IF g_flag_fdyj = ‘X‘.
    
IF p_vkorg = ‘‘ OR p_vtweg = ‘‘ OR p_spart = ‘‘.
      
MESSAGE ‘请填写完整销售区域数据‘ TYPE ‘E‘.
    ENDIF.
  ENDIF.
ENDFORM.

" FRM_CHECK_DATA

*&---------------------------------------------------------------------*

*&      Form  FRM_CONVER_UNIT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_P_PSPNR  text

*----------------------------------------------------------------------*

FORM frm_conver_unit  USING    p_unit.
  
CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_OUTPUT‘
    
EXPORTING
      
input          = p_unit
    
IMPORTING
      
output         = p_unit
    
EXCEPTIONS
      unit_not_found = 
1
      
OTHERS         = 2.
ENDFORM.                    
" FRM_CONVER_UNIT

*&---------------------------------------------------------------------*

*&      Form  FRM_UNIT_INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_LDF_PSPID  text

*----------------------------------------------------------------------*

FORM frm_pspnr_input  USING    p_pspnr.
  
CALL FUNCTION ‘CONVERSION_EXIT_KONPS_INPUT‘
    
EXPORTING
      
input  = p_pspnr
    
IMPORTING
      
output = p_pspnr.
ENDFORM.                    
" FRM_UNIT_INPUT

*&---------------------------------------------------------------------*

*&      Form  FRM_CONVER_OBJ

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_LDS_TCJ41_SCOPE  text

*----------------------------------------------------------------------*

FORM frm_conver_obj  USING    p_scope.

CALL FUNCTION ‘CONVERSION_EXIT_SCOPE_OUTPUT‘
    
EXPORTING
      
input  = p_scope
    
IMPORTING
      
output = p_scope.
ENDFORM.                    
" FRM_CONVER_OBJ

*&---------------------------------------------------------------------*

*&      Form  FRM_DELETE_WBS

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_delete_wbs .

*  DATA:it_ret2 LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

*DATA: it_delete_wbs_element LIKE  TABLE OF  bapi_wbs_list WITH HEADER

*LINE.

*

*

*  DATA: str(20) TYPE c.

*  DATA: gt_prps TYPE TABLE OF prps,

*        gwa_prps TYPE prps.

*

*  CALL FUNCTION ‘CONVERSION_EXIT_KONPD_INPUT‘

*    EXPORTING

*      input  = gs_sdata-pspid

*    IMPORTING

*      output = gs_sdata-pspid.

*

*

*  SELECT * INTO TABLE gt_prps FROM prps

*           WHERE psphi =   gs_sdata-pspid.

*

*  LOOP AT gt_prps INTO gwa_prps.

*    CALL FUNCTION ‘CONVERSION_EXIT_ABPSP_OUTPUT‘

*      EXPORTING

*        input  = gwa_prps-pspnr

*      IMPORTING

*        output = str.

*

*    it_delete_wbs_element-wbs_element = str.

*    APPEND it_delete_wbs_element.

*  ENDLOOP.

*

*

*  CALL FUNCTION ‘CONVERSION_EXIT_KONPD_OUTPUT‘

*    EXPORTING

*      input  = gs_sdata-pspid

*    IMPORTING

*      output = gs_sdata-pspid.

*

*  CALL FUNCTION ‘BAPI_PS_INITIALIZATION‘.

*

*  CALL FUNCTION ‘BAPI_BUS2054_DELETE_MULTI‘

*    EXPORTING

*      i_project_definition  = gs_sdata-pspid

*    TABLES

*      it_delete_wbs_element = it_delete_wbs_element

*      et_return             = it_ret2.

*

*  CALL FUNCTION ‘BAPI_PS_PRECOMMIT‘

*    TABLES

*      et_return = it_ret2.

*

*  CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘

*    EXPORTING

*      wait = ‘X‘.
ENDFORM.                    
" FRM_DELETE_WBS

*&---------------------------------------------------------------------*

*&      Form  FRM_CREATE_PROJECT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_create_project .

DATA: i_pro_def_new

TYPE STANDARD TABLE OF bapi_bus2001_new  WITH
  
HEADER LINE.
  DATA: gt_prhis       
TYPE TABLE OF prhis,
        gwa_prhis      
TYPE prhis.
  DATA: gt_prpss       
TYPE TABLE OF prpss,
        gwa_prpss      
TYPE prpss.

DATA: it_wbs

LIKE bapi_bus2054_new OCCURS 0 WITH HEADER LINE ,
        it_ret2  
LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: it_wbs_update

LIKE  bapi_bus2054_chg OCCURS 0 WITH HEADER LINE,
        it_update     
LIKE bapi_bus2054_upd OCCURS 0 WITH HEADER LINE.

DATA: str(30)

TYPE c,
        str_up(30) 
TYPE c,
        str_left(30) 
TYPE c.

PERFORM frm_pspnr_input USING p_pspnr."项目ID转换

SELECT * INTO TABLE gt_prhis FROM prhis
           
WHERE psphi   = p_pspnr.

SELECT * INTO TABLE gt_prpss FROM prpss
           
WHERE  psphi = p_pspnr.

i_pro_def_new-project_definition = gs_sdata-pspid.
  i_pro_def_new-description = p_post1.
  i_pro_def_new-project_profile = g_profidproj.

APPEND i_pro_def_new.

CALL FUNCTION ‘BAPI_PS_INITIALIZATION‘.
  
CALL FUNCTION ‘BAPI_BUS2001_CREATE‘
    
EXPORTING
      i_project_definition = i_pro_def_new

TABLES
      et_return            = it_ret2[].

APPEND LINES OF it_ret2[] TO gt_return.

CLEAR:it_wbs[].

LOOP AT gt_prhis INTO gwa_prhis .

CLEAR gwa_prpss.
    
READ TABLE gt_prpss INTO gwa_prpss WITH KEY pspnr = gwa_prhis-posnr.
    
IF sy-subrc = 0.

CALL FUNCTION ‘CONVERSION_EXIT_KONPT_OUTPUT‘
        
EXPORTING
          
input  = gwa_prhis-posnr
        
IMPORTING
          
output = str.

CALL FUNCTION ‘CONVERSION_EXIT_KONPT_OUTPUT‘
        
EXPORTING
          
input  = gwa_prhis-up
        
IMPORTING
          
output = str_up.

CALL FUNCTION ‘CONVERSION_EXIT_KONPT_OUTPUT‘
        
EXPORTING
          
input  = gwa_prhis-left
        
IMPORTING
          
output = str_left.

str+0(11) = gs_sdata-pspid.

IF str_up IS NOT INITIAL.
        str_up+0(11) = gs_sdata-pspid.
      ENDIF.

IF str_left IS NOT INITIAL.
        str_left+0(11) = gs_sdata-pspid.
      ENDIF.

it_wbs-wbs_element = str.
      it_wbs-wbs_left   = str_left.
      it_wbs-wbs_up = str_up.

IF str = gs_sdata-pspid.
        it_wbs-description = p_post1.
      ELSE.
        it_wbs-description = gwa_prpss-post1.
      ENDIF.

APPEND it_wbs.
    ENDIF.
  ENDLOOP.

CALL FUNCTION ‘BAPI_BUS2054_CREATE_MULTI‘
    
EXPORTING
      i_project_definition = gs_sdata-pspid

TABLES
      it_wbs_element       = it_wbs[]
      et_return            = it_ret2[].

APPEND LINES OF it_ret2[] TO gt_return.

CLEAR:it_wbs_update,it_update.

LOOP AT gt_prhis INTO gwa_prhis .

CLEAR gwa_prpss.
    
READ TABLE gt_prpss INTO gwa_prpss WITH KEY pspnr = gwa_prhis-posnr.
    
IF sy-subrc = 0.

CALL FUNCTION ‘CONVERSION_EXIT_KONPT_OUTPUT‘
        
EXPORTING
          
input  = gwa_prhis-posnr
        
IMPORTING
          
output = str.

str+0(11) = gs_sdata-pspid.

it_wbs_update-wbs_element = str.
      it_wbs_update-wbs_planning_element = gwa_prpss-plakz.

"计划
      it_wbs_update-wbs_account_assignment_element = gwa_prpss-belkz.
"科目
      it_wbs_update-wbs_billing_element = gwa_prpss-fakkz.
"开票
      it_wbs_update-statistical    = gwa_prpss-xstat.
"统计WBS
      it_wbs_update-planintegrated = gwa_prpss-plint.
"综合计划
      
APPEND it_wbs_update.

it_update-wbs_element     = str.
      it_update-wbs_planning_element =

‘X‘."计划
      it_update-wbs_account_assignment_element = 
‘X‘."科目
      it_update-wbs_billing_element = 
‘X‘."开票
      it_update-statistical = 
‘X‘.
      it_update-planintegrated = 
‘X‘.
      
APPEND it_update.
    ENDIF.
  ENDLOOP.

CALL FUNCTION ‘BAPI_BUS2054_CHANGE_MULTI‘
    
EXPORTING
      i_project_definition  = gs_sdata-pspid

TABLES
      it_wbs_element        = it_wbs_update[]
      it_update_wbs_element = it_update[]
      et_return             = it_ret2[].

APPEND LINES OF it_ret2[] TO gt_return.

CALL FUNCTION ‘BAPI_PS_PRECOMMIT‘
    
TABLES
      et_return = it_ret2.

APPEND LINES OF it_ret2[] TO gt_return.

READ TABLE it_ret2 WITH KEY type = ‘E‘.
  
IF sy-subrc <> 0.
    
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘.
  ELSE.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.
  ENDIF.

ENDFORM.

" FRM_CREATE_PROJECT

PS 项目创建

时间: 2024-10-13 14:50:53

PS 项目创建的相关文章

Cocos2d-x v3.1项目创建(三)

Cocos2d-x v3.1项目创建(三) Cocos2d-x官方为我们提供了用于创建.编译.运行和部署的一套命令行的工具集,也就是上篇文章中我们所提到的Cocos2d-Console,它位于我们的引擎目录下的tools子目录中.本篇文章主要要说明的是如何创建Cocos2d-x项目,所以对于编译.运行和部署就不做介绍了.以后项目的编译.运行和部署我们都将在ADT开发环境中进行,但是项目的开发将在VS2012中进行. 我们先来了解Cocos2d-Console的一些相关参数并通过实例演示如何生成项

cocos2dx 3.2+ 项目创建与问题总汇

本文为Cocos2d-x 3.x 全平台(Android,iOS)新手开发配置教程攻略,希望对大家有所帮助.由于这篇文章是面对新手的. 所以有些地方会啰嗦一些,请勿见怪. 假设教程中有错误.欢迎指正. 假设在配置开发平台时还遇到问题,欢迎大家讨论. 本文所使用的环境是PC(Win7),HTC G18,MacBook Air 以及 Mini iPad. 一.通用准备工作 1.安装Cocos2d-x 3.1 在Cocos2d官网上下载Cocos2d-x 3.2+引擎,下载后解压缩. 2.安装Ecli

小程序入门(0)项目创建篇

已经创建项目的可以看我另一篇讲解 小程序入门讲解 (1)项目结构篇. 官方下载地址 安装后扫描二维码登入. 添加项目 你应该是没有APPID的 选择无APPID 会缺少一项功能后面讲解(目前只发现一项). 好了项目创建好了,有点过分简单了点是不是,但这页面不是我自己创建的就很不舒服,特别想自己创建一个页面,所以去认识项目的结构,我在另一篇讲解的还算清晰.小程序入门讲解 (1)项目结构篇. 讲一下没有APPID 和 有APPID 的功能缺失在哪里,先看图然后自己做一下对比 目前我还没有发现其他的不

.Net程序员玩转Android开发---(2)Hello World项目创建

对于程序员来说,刚开始接触到的第一个项目都是Hello World, 我们这里第一个项目也从Hello Word创建. 1. 项目创建 运行eclipse.exe文件,打开开发工具eclipse,选择项目存放位置,界面如下 打开eclipse后,选择 file-new--Android Applicaton Project创建Android项目,界面如下 步骤如下 2.

django项目创建和结构解释

一.django项目创建 1.手动创建 1)查看是否安装了Django 没有安装的话可以用install命令安装. 2)创建Django项目 3)查看创建的项目 4)创建应用 Django中至少需要一个应用app,用来处理业务逻辑. 2.利用pycharm创建项目 二.Django结构解释 1.项目结构解释 第一层demo就是创建的整个Django项目. 第二层demo是项目的主程序目录. manage.py是整个项目的主控制文件. settings.py是整个项目的设置文件. urls.py是

NET5实践:项目创建-结构概述-程序运行-发布部署

ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project.json中: "frameworks": { "dnx451": { }, "dnxcore50": { } }, ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种. dnxcore50是跨平台.模块化的coreclr.它有多种,如

1 游戏逻辑架构,Cocos2d-x游戏项目创建,HelloWorld项目创建,HelloWorld程序分析,(CCApplicationProtocol,CCApplication,AppDeleg

 1 游戏逻辑架构 详细介绍 A 一个导演同一时间只能运行一个场景,场景当中,可以同时加载多个层,一个层可以可载多个精灵.层中亦可以加层. B  场景切换 sceneàaddChild(layer); layeràaddChild(sprite); 2 项目创建命令: A 进入tools下的project-creat E:\Installed\cocos2d-x-2.2.3\tools\project-creator> B python create_project.py -project

Andorid项目创建AVD时,OK按钮无法点亮

经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system images installed for this target”,也就是没有适合的系统镜像,通过与安装好了的ADT-bundle中的AVD Manager创建模拟器的窗口情况对比,发现该下拉列表选项正好是SDK Manager安装包Android4.2.2(API 17)的一个组件“ARM EABI v7a System Image”没有安装,如图2所示.安装好了之后,问题解决.另:如果安装了"Inter x86

ASP.NET5实践01:Web项目创建、结构概述、程序运行、发布部署

1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project.json中: "frameworks": { "dnx451": { }, "dnxcore50": { } }, ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种. dnxcore50是跨平台.模块化的coreclr.它有多种,如:dnx-coreclr-win-*,dnx-coreclr-li