SAP 未审批的采购订单(PO)提交到OA去审批,最后OA审批结果回写到SAP。

SAP 未审批的采购订单(PO)提交到OA去审批,最后OA审批结果回写到SAP。

调用OA的WebService
配置详细步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当配置的时候报这个错的解决方法:
在这里插入图片描述
在这里插入图片描述
解决办法:将OA那边的WSDL文件的命名空间改为:
在这里插入图片描述
在这里插入图片描述
命名空间的错误改正确之后,重新按照以上的步骤配置就OK了。

在这里插入图片描述

网页配置逻辑端口
详细步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
网页配置完毕,然后在SAP测试一下成不成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果图:
一、
在这里插入图片描述

二、
在这里插入图片描述

三、
在这里插入图片描述

四、
在这里插入图片描述

注意:代码里面的代理类换成你们真正用的即可。我这里的代码应用的是在800的代理类

代码:

&---------------------------------------------------------------------
*& Report ZWS001
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT zws001.

*数据库表:
TABLES:ekbe,ekko,ekpo,lfa1,t001,usr21,adrp,mseg,t161t,eket,yebeln,yoahrid,t16fs,t023t. " ,zebeln,zoahrid.
*-----------------------------------------------------------------------

  • CONSTANTS
    *-----------------------------------------------------------------------
    CONSTANTS:
    " c_id TYPE zsapoalog-interfaceid VALUE ‘01’,
    c_e TYPE c LENGTH 1 VALUE ‘E’,
    c_s TYPE c LENGTH 1 VALUE ‘S’.

*&----------------------------------------------------
*& ALV data element definition.
*&----------------------------------------------------
TYPE-POOLS slis.
DATA: wrti TYPE ywsworkflow_request_table_fiel."字段信息
DATA: gt_fieldcat TYPE TABLE OF slis_fieldcat_alv .
DATA: gs_layout TYPE slis_layout_alv.
DATA: gt_list_top_of_page TYPE slis_t_listheader.
DATA: gt_sortinfo_alv TYPE slis_t_sortinfo_alv.
DATA: gs_print_alv TYPE slis_print_alv.
DATA: gs_grid TYPE lvc_s_glay.
DATA: gt_event TYPE slis_t_event.
DATA: gs_event TYPE slis_alv_event.
DATA: ref1 TYPE REF TO cl_gui_alv_grid,
ws_header TYPE REF TO if_wsprotocol_ws_header.
DATA:lmgs_errtxt TYPE string.

DATA : lv_frgsx01 TYPE string.
DATA : lv_frgsx02 TYPE string.

lv_frgsx01 = ‘0’.
lv_frgsx02 = ‘1’.

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

  • WORK VARIABLES
    *-----------------------------------------------------------------------
    DATA: gt_ekko TYPE TABLE OF ekko WITH HEADER LINE,
    gt_ekpo TYPE TABLE OF ekpo WITH HEADER LINE,
    gt_lfa1 TYPE TABLE OF lfa1 WITH HEADER LINE,
    gt_response TYPE TABLE OF ywsdo_create_workflow_request WITH HEADER LINE."800的
  •  gt_response TYPE TABLE OF zyws_do_create_workflow_reques WITH HEADER LINE. "200的
    

DATA: g_returncode LIKE sy-subrc,
g_retco LIKE sy-subrc,
g_xscreen(1) TYPE c.

DATA: response_meg(50) TYPE c."返回消息文字描述

DATA: sqlerr_ref TYPE REF TO cx_sql_exception,
exc_ref TYPE REF TO cx_sy_native_sql_error,
error_text TYPE string.

DATA : v_ok TYPE i,
v_err TYPE i.
DATA : gd_count TYPE p.

TYPES:BEGIN OF ty_ebeln,
ebeln TYPE ekko-ebeln, "采购凭证编号
bukrs TYPE ekko-bukrs,

  END OF ty_ebeln.

DATA: ls_ebeln TYPE ty_ebeln.
DATA: lt_ebeln TYPE STANDARD TABLE OF ty_ebeln .

TYPES:BEGIN OF ty_out,

    workflow_base_info       TYPE ywsworkflow_base_info,      "只用到 WorkFlowID
    workflow_main_table_info TYPE ywsworkflow_main_table_info, "主表

    zflag                    TYPE  c, "复选框
    table_title              TYPE  c, "标题
    djbh                     TYPE  c, "单据编号
    werks                    TYPE  ekpo-werks, "工厂
    ebelp                    TYPE  ekbe-ebelp, "采购凭证的项目编号
    matnr                    TYPE  ekpo-matnr, "物料编号
    banfn                    TYPE  ekpo-banfn, "采购申请编号
    bnfpo                    TYPE  ekpo-bnfpo, "采购申请的项目编号
    txz01                    TYPE  ekpo-txz01, "短文本
    menge                    TYPE  ekpo-menge, "采购订单数量
    meins                    TYPE  ekpo-meins, "采购订单计量单位
    bprme                    TYPE  ekpo-bprme, "订单价格单位(采购)
    bednr                    TYPE  ekpo-bednr, "含税价
    lgort                    TYPE  ekpo-lgort, "库存地点
  •    mwskz                    TYPE  ekpo-mwskz, "销售/购买税代码
      knttp                    TYPE  ekpo-knttp, "科目分配类别
      matkl                    TYPE  ekpo-matkl, "物料组
      wgbez                    TYPE  t023t-wgbez, "物料组短文本
    
      aedat                    TYPE  ekko-aedat, "记录建立日期
      tjsj                     TYPE  tims, "提交时间
      ebeln                    TYPE  ekko-ebeln, "采购凭证编号
      frgke                    TYPE  ekko-frgke, "批准标识:采购凭证
      ernam                    TYPE  ekko-ernam, "创建对象的人员名称
      lifnr                    TYPE  ekko-lifnr, "供应商帐户号
      ekorg                    TYPE  ekko-ekorg, "采购组织
      ekgrp                    TYPE  ekko-ekgrp, "采购组 提交部门
      bsart                    TYPE  ekko-bsart, "采购凭证类型
      bstyp                    TYPE  ekko-bstyp, "采购凭证类别
      bukrs                    TYPE  ekko-bukrs, "公司代码
      butxt                    TYPE  t001-butxt, "公司代码描述
      waers                    TYPE  ekko-waers, "货币码
    
      name1                    TYPE  lfa1-name1, "供应商名称
      persnumber               TYPE  usr21-persnumber, "人员编号
      operatorname             TYPE  adrp-name_text, "完整的人员名称
      kostl                    TYPE  cskt-kostl, "成本中心
      ltext                    TYPE  cskt-ltext, "成本中心描述
      batxt                    TYPE t161t-batxt, "采购凭证类型的简短描述
      eindt                    TYPE eket-eindt, "交货日期
      request_id               TYPE i,
      request_level(1)         TYPE c,
      request_name(100)        TYPE c,
      workflow_name(100)       TYPE c,
      reviewtype               TYPE c,
      line_color               TYPE c LENGTH 4,
      box                      TYPE c,
      oaid(4)                  TYPE c,          "OA id
      depid(4)                 TYPE c,
    
      frggr                    TYPE ekko-frggr, "审批组
    
  •    frgsx                    TYPE ekko-frgsx, "审批策略
      frgsx                    TYPE string, "审批策略
    
      rlwrt                    TYPE ekko-rlwrt, "净价总金额:
      mwskz                    TYPE ekpo-mwskz, "税率
    
    
    END OF ty_out.
    

DATA: wa_ty TYPE ty_out.
DATA: lt_out TYPE STANDARD TABLE OF ty_out.
DATA: gt_display TYPE STANDARD TABLE OF ty_out WITH HEADER LINE.
DATA: lt_out03 TYPE STANDARD TABLE OF ty_out.
DATA: wa_out TYPE ty_out.
DATA v_logcnt TYPE i.
DATA:lv_frgsx TYPE string.

"主表
TYPES:BEGIN OF ty_out01,
"这里面写的是主表字段
ebeln TYPE ekko-ebeln, "采购凭证编号
lifnr TYPE ekko-lifnr, "供应商帐户号
aedat TYPE ekko-aedat, "提交日期
tjsj TYPE tims, "提交时间
name1 TYPE lfa1-name1, "供应商名称
bukrs TYPE ekko-bukrs, "公司代码
butxt TYPE t001-butxt, "公司代码描述
bsart TYPE ekko-bsart, "采购凭证类型
bstyp TYPE ekko-bstyp, "采购凭证类别
batxt TYPE t161t-batxt, "采购凭证类型的简短描述
ernam TYPE ekko-ernam, "采购员
oaid(4) TYPE c, "OA id
depid(4) TYPE c, "部门ID

    frggr    TYPE ekko-frggr, "审批组
    frgsx    TYPE ekko-frgsx, "审批策略

    rlwrt    TYPE ekko-rlwrt, "净价总金额:
    mwskz    TYPE ekpo-mwskz, "税率
    waers    TYPE  ekko-waers, "货币码


  END OF ty_out01.

DATA: lt_out01 TYPE STANDARD TABLE OF ty_out01.
DATA: ls_out01 TYPE ty_out01.

"明细表 放到内表 采购订单号 行项目
TYPES:BEGIN OF ty_out02,
"这里面写的是明细字段
ebeln TYPE ekbe-ebeln, "采购凭证编号
ebelp TYPE ekbe-ebelp, "采购凭证的项目编号
matnr TYPE ekpo-matnr, "物料编号
txz01 TYPE ekpo-txz01, "短文本
menge TYPE ekpo-menge, "采购订单数量
meins TYPE ekpo-meins, "采购订单计量单位
eindt TYPE eket-eindt, "交货日期
bednr TYPE ekpo-bednr, "含税价
waers TYPE ekko-waers, "货币码
werks TYPE ekpo-werks, "工厂
matkl TYPE ekpo-matkl, "物料组
wgbez TYPE t023t-wgbez, "物料组短文本
bprme TYPE ekpo-bprme, "订单价格单位(采购)
ekorg TYPE ekko-ekorg, "采购组织
ekgrp TYPE ekko-ekgrp, "采购组 提交部门
kostl TYPE cskt-kostl, "成本中心
ltext TYPE cskt-ltext, "成本中心描述
knttp TYPE ekpo-knttp, "科目分配类别

  END OF ty_out02.

DATA: lt_out02 TYPE STANDARD TABLE OF ty_out02.
DATA:ls_out02 TYPE ty_out02 .

SELECT-OPTIONS: s_ebeln FOR ekbe-ebeln, "采购凭证编号
s_banfn FOR ekpo-banfn, "采购申请编号
s_matnr FOR ekbe-matnr, "物料编号
s_lifnr FOR ekko-lifnr, "供应商编码
s_ernam FOR ekko-ernam,"采购员
s_bukrs FOR ekko-bukrs."公司代码

START-OF-SELECTION.

"ALV 显示数据
TRY.
PERFORM sub_read_data.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_native_sql_error.
ENDIF.

CATCH cx_sy_native_sql_error INTO exc_ref.
  error_text = exc_ref->get_text( ).

CATCH cx_sql_exception INTO sqlerr_ref.
  IF sqlerr_ref->db_error = 'X'.
    error_text = sqlerr_ref->sql_message.
  ELSE.
    error_text = sqlerr_ref->internal_error.
  ENDIF.

ENDTRY.

  • IF sy-batch = ‘X’.
    response_meg = ‘状态,20,消息’.
    LOOP AT gt_response.
    IF gt_response-out > ‘0’.
    response_meg = ‘成功发送’.
    ELSE.
    response_meg = ‘发送失败’.
    ENDIF.
    WRITE : /
    gt_response-out,
    20 response_meg.
    ENDLOOP.
  • ELSE.
    PERFORM build_alv.
    PERFORM display_screen .
  • ENDIF.

&---------------------------------------------------------------------
*& Form sub_read_data
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  • –> p1 text
  • <-- p2 text
    ----------------------------------------------------------------------
    FORM sub_read_data.

"ALV最终显示的数据
SORT lt_out BY ebeln ebelp.
DELETE ADJACENT DUPLICATES FROM lt_out COMPARING ebeln ebelp.

SELECT b~ebeln "采购凭证编号
b~ebelp "采购凭证的项目编号
b~matnr "物料编号
b~banfn "采购申请编号
b~bnfpo "采购申请的项目编号
b~txz01 "短文本即物料描述
b~menge "采购订单数量
b~meins "采购订单计量单位
b~bednr "含税价
b~werks "工厂
b~matkl "物料组
b~bprme "订单价格单位(采购)
b~knttp "科目分配类别

     b~mwskz "税率
     c~rlwrt "净价总金额

     c~frgke "批准标识:采购凭证
     c~ernam "创建对象的人员名称
     c~lifnr "供应商帐户号
     c~bukrs "公司代码
     c~ekorg "采购组织
     c~ekgrp "采购组
     c~waers "货币码
     c~aedat "提交日期
     e~butxt "公司描述
     g~eindt "项目交货日期
     c~bsart "采购订单类型
     f~kostl "成本中心
     c~frggr "审批组
     c~frgsx "审批策略

INTO CORRESPONDING FIELDS OF TABLE lt_out
FROM ekpo AS b
INNER JOIN ekko AS c ON b~ebeln = c~ebeln AND c~frgke = ‘N’
LEFT JOIN t001 AS e ON c~bukrs = e~bukrs
LEFT JOIN eket AS g ON c~ebeln = g~ebeln AND c~lponr = g~ebelp
LEFT JOIN matdoc AS f ON b~ebeln = f~ebeln AND b~ebelp = f~ebelp

WHERE b~ebeln IN s_ebeln "采购凭证编号
AND b~matnr IN s_matnr "物料编号
AND b~banfn IN s_banfn "采购申请编号
AND c~lifnr IN s_lifnr "供应商编码
AND c~bukrs IN s_bukrs "公司代码
AND c~bsart NE ‘Z007’ "采购订单类型
AND c~bukrs NE ‘2030’ "工厂
AND c~bukrs NE ‘2040’ "工厂
AND c~ernam IN s_ernam."采购员

SORT lt_out BY ebeln ebelp.
LOOP AT lt_out ASSIGNING FIELD-SYMBOL(<fs_output>).

<fs_output>-aedat = sy-datum."提交日期
<fs_output>-tjsj  = sy-uzeit. "提交时间

"审批策略
IF <fs_output>-frgsx = '01' ."01 是采购总监
  <fs_output>-frgsx = lv_frgsx02.
ELSEIF <fs_output>-frgsx = '03' ."03 是采购经理
  <fs_output>-frgsx = lv_frgsx01.
ENDIF.


"物料组描述
SELECT SINGLE wgbez FROM t023t INTO <fs_output>-wgbez WHERE matkl = <fs_output>-matkl AND spras = sy-langu.
IF <fs_output>-wgbez IS INITIAL.
  SELECT SINGLE wgbez FROM t023t INTO <fs_output>-wgbez WHERE matkl = <fs_output>-matkl.
ENDIF.

"供应商名称
SELECT SINGLE name1  FROM lfa1 INTO <fs_output>-name1 WHERE lifnr = <fs_output>-lifnr AND spras = sy-langu.
IF <fs_output>-name1 IS INITIAL.
  SELECT SINGLE name1 FROM lfa1 INTO <fs_output>-name1 WHERE lifnr = <fs_output>-lifnr.
ENDIF.

"采购员
SELECT SINGLE persnumber FROM usr21 INTO <fs_output>-persnumber WHERE bname = <fs_output>-ernam.
SELECT SINGLE name_text FROM adrp INTO <fs_output>-operatorname WHERE persnumber = <fs_output>-persnumber.


SELECT SINGLE oaid   FROM yoahrid INTO <fs_output>-oaid   WHERE name = <fs_output>-operatorname.
SELECT SINGLE  depid  FROM yoahrid INTO  <fs_output>-depid  WHERE name = <fs_output>-operatorname.
IF <fs_output>-oaid IS INITIAL .
  MESSAGE '需审批的单据的采购员不存在于系统信息表中,请联系系统管理员同步OA采购员到SAP系统表中' TYPE 'E'.
  RETURN.
ENDIF.


"采购凭证类型的简短描述
SELECT SINGLE batxt FROM t161t INTO <fs_output>-batxt WHERE bsart = <fs_output>-bsart AND bstyp = 'F' AND spras = sy-langu.

"成本中心文本描述
  • SELECT SINGLE ltext FROM cskt INTO <fs_output>-ltext WHERE kostl = <fs_output>-kostl AND spras = sy-langu.
    SELECT SINGLE kostl FROM cskt INTO <fs_output>-kostl WHERE kostl = <fs_output>-kostl.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = <fs_output>-matnr
  IMPORTING
    output = <fs_output>-matnr.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = <fs_output>-lifnr
  IMPORTING
    output = <fs_output>-lifnr.

ENDLOOP.
APPEND LINES OF lt_out TO gt_display.

  • CLEAR lt_out.
  • IF sy-subrc NE 0.
  • MESSAGE ‘没有符合条件的数据’ TYPE ‘E’.
  • ENDIF.

ENDFORM.

"提交数据到OA表单
FORM sub_send_oa.

CLEAR ls_out01.

LOOP AT gt_display INTO wa_ty WHERE zflag = ‘X’.

ls_out01-ebeln  =  wa_ty-ebeln. "采购凭证编号
ls_out01-lifnr  =  wa_ty-lifnr. "供应商帐户号
ls_out01-name1  =  wa_ty-name1. "供应商名称
ls_out01-bukrs  =  wa_ty-bukrs. "公司代码
ls_out01-butxt  =  wa_ty-butxt. "公司代码描述
ls_out01-bsart  =  wa_ty-bsart. "采购凭证类型
ls_out01-bstyp  =  wa_ty-bstyp. "采购凭证类别
ls_out01-batxt  =  wa_ty-batxt. "采购凭证类型的简短描述
ls_out01-ernam  =  wa_ty-ernam. "采购员
ls_out01-oaid   =  wa_ty-oaid. "采购员
ls_out01-depid  =  wa_ty-depid. "采购员
ls_out01-frggr  =  wa_ty-frggr. "审批组
ls_out01-frgsx  =  wa_ty-frgsx. "审批策略

ls_out01-rlwrt  =  wa_ty-rlwrt. "净价总金额
ls_out01-waers  =  wa_ty-waers. "货币码
ls_out01-mwskz  =  wa_ty-mwskz. "税率
ls_out01-aedat  =  sy-datum. "提交日期
ls_out01-tjsj   =  sy-uzeit. "提交时间

APPEND ls_out01 TO lt_out01 .
CLEAR ls_out01.

ENDLOOP.

SORT lt_out01 BY ebeln.
LOOP AT lt_out01 ASSIGNING FIELD-SYMBOL(<fs_out01>).

<fs_out01>-aedat = sy-datum."提交日期
<fs_out01>-tjsj  = sy-uzeit. "提交时间

"审批策略
IF <fs_out01>-frgsx = '01' ."01 是采购总监
  <fs_out01>-frgsx = lv_frgsx02.
ELSEIF <fs_out01>-frgsx = '03' ."01 是采购经理
  <fs_out01>-frgsx = lv_frgsx01.
ENDIF.

"采购凭证类型的简短描述
SELECT SINGLE batxt FROM t161t INTO <fs_out01>-batxt WHERE bsart = <fs_out01>-bsart AND bstyp = 'F' AND spras = sy-langu.

"供应商名称
SELECT SINGLE name1  FROM lfa1 INTO <fs_out01>-name1 WHERE lifnr = <fs_out01>-lifnr AND spras = sy-langu.
IF <fs_out01>-name1 IS INITIAL.
  SELECT SINGLE name1 FROM lfa1 INTO <fs_out01>-name1 WHERE lifnr = <fs_out01>-lifnr.
ENDIF.

ENDLOOP.

SORT lt_out01 BY ebeln .

DELETE ADJACENT DUPLICATES FROM lt_out01 COMPARING ALL FIELDS.

DATA:lo_clientproxy TYPE REF TO ywsco_workflow_service_port_ty . "proxy class 800的代理类

  • DATA:lo_clientproxy TYPE REF TO ywsco_workflow_service_port_t1 . "proxy class 200的代理类

DATA:lo_input TYPE ywsdo_create_workflow_request1 . "800的输入参数
DATA:lo_output TYPE ywsdo_create_workflow_request. "800的输出参数
*

  • DATA:lo_input TYPE zyws_do_create_workflow_reque1 . "200的输入参数
  • DATA:lo_output TYPE zyws_do_create_workflow_reques. "200的输出参数

DATA:l_title TYPE char50.

DATA: aa TYPE ywsworkflow_request_info .
DATA: bb TYPE ywsworkflow_base_info.
DATA: main TYPE ywsworkflow_main_table_info ."主表

DATA: detail TYPE ywsarray_of_workflow_detail_ta.“明细表
DATA: detail_info TYPE ywsworkflow_detail_table_info.”

DATA: dd TYPE xsdboolean .
dd = ‘X’ .
DATA: ws_header TYPE REF TO if_wsprotocol_ws_header.

SELECT ebeln bukrs INTO CORRESPONDING FIELDS OF TABLE lt_ebeln FROM yebeln .

DATA: cgddh(20) TYPE c.

LOOP AT lt_out01 INTO ls_out01 .

LOOP AT  lt_ebeln INTO ls_ebeln.
  IF ls_ebeln-bukrs = ls_out01-bukrs  AND ls_ebeln-ebeln = ls_out01-ebeln .
    MESSAGE '已上传过采购订单号:' && ls_out01-ebeln && '请联系系统管理员' TYPE 'E'.
    RETURN.
  ENDIF.
ENDLOOP.

ENDLOOP.

CLEAR ls_out01.
DATA: cname(20) TYPE c.

LOOP AT lt_out01 INTO ls_out01 .

CLEAR lo_input.
CLEAR lo_output.
CLEAR aa  .
CLEAR cname.
cname =  ls_out01-oaid .


"流程标题格式: 流程编号+流程名称+提交人+时间(HH-MM-SS)
"sy-uzeit  时分秒  sy-datum 年月日
  • ls_out01-tjsj = sy-uzeit."提交时间
DATA lv_lcbtpj TYPE string. "流程标题拼接

CONCATENATE 'CG001-采购订单审批流程- ' ls_out01-ebeln  INTO lv_lcbtpj.
  • 给参数 赋值
    aa-can_edit = dd. "流程编辑权限
    aa-can_view = dd. "流程阅读权限
    aa-creator_id = ls_out01-oaid . "创建人ID 创建一个中间表存放采购员的ID
    aa-isnextflow = ‘1’. "是否提交
  • aa-must_input_remark = ‘创建流程签字意见’. "创建流程签字意见
    aa-request_level = ‘1’. "请求级别
  • aa-request_name = ‘CG001-采购订单审批流程’. "流程标题
    aa-request_name = lv_lcbtpj. "流程标题
bb-workflow_id = '48'.  "采购订单流程ID
  • bb-workflow_name = ‘CG001-采购订单审批流程’. "流程标题
    bb-workflow_name = lv_lcbtpj. "流程标题
    bb-workflow_type_name = ‘采购部管理’. "流程标题

  • OA 数据库
    main-table_dbname = ‘formtable_main_63’ . "主表数据库

  • detail_info-table_dbname = ‘formtable_main_63_dt1’."明细表数据库
    *&& ***********************************************

&---------------- START OA采购订单流程表单:数据库字段 -------------------
*& 主表字段: formtable_main_63

  • id序号 requestId 请求ID
  • lcbt 流程标题 djbh 单据编号 tjr 提交人 tjbm 提交部门 tjrq 提交日期
  • djlx 单据类型 gys 供应商 gysms 供应商描述 gsdm 公司代码 gsdmms 公司代码描述
  • xglc 相关流程 fjsc 附件上传 cgddh 采购订单号

*& 明细表字段:formtable_main_63_dt1

  • id 序号 mainid 主表ID
  • wlbh 物料编号 wlms 物料描述 ddsl 订单数量 dddw 订单单位 jhrq 交货日期 hsj 含税价
  • hb 货币 gc 工厂 wlz 物料组 jgdw 价格单位 cgzz 采购组织 cgz 采购组
  • cbzx 成本中心 kmfp 科目分配

&---------------- END OA采购订单流程表单:数据库字段 ---------------------

&---------------- START OA主表参数 ---------------------
DATA: lworkflow_request_table_fi TYPE ywsworkflow_request_table_fiel .
DATA lworkflow_request_tab TYPE ywsworkflow_request_table_tab1 .
CLEAR lworkflow_request_table_fi .

lworkflow_request_table_fi-field_name = 'cgddh'."采购订单号
lworkflow_request_table_fi-field_value = ls_out01-ebeln.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi .

lworkflow_request_table_fi-field_name = 'djlx'."单据类型
lworkflow_request_table_fi-field_value = ls_out01-batxt.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi .

lworkflow_request_table_fi-field_name = 'tjr'."提交人
lworkflow_request_table_fi-field_value = ls_out01-oaid.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'tjbm'."提交部门
lworkflow_request_table_fi-field_value = ls_out01-depid. "部门ID
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'gys'."供应商
lworkflow_request_table_fi-field_value = ls_out01-lifnr.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'gysms'."供应商描述
lworkflow_request_table_fi-field_value = ls_out01-name1.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'gsdm'."公司代码
lworkflow_request_table_fi-field_value = ls_out01-bukrs.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'gsdmms'."公司代码描述
lworkflow_request_table_fi-field_value = ls_out01-butxt.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'jjzje'."净价总金额
lworkflow_request_table_fi-field_value = ls_out01-rlwrt.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'bz'."货币码
lworkflow_request_table_fi-field_value = ls_out01-waers.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'sl'."税率
lworkflow_request_table_fi-field_value = ls_out01-mwskz.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'lczx'."流程转向
lworkflow_request_table_fi-field_value = ls_out01-frgsx.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

lworkflow_request_table_fi-field_name = 'tjrq'."提交日期
lworkflow_request_table_fi-field_value = ls_out01-aedat.
lworkflow_request_table_fi-edit = 'X'.
lworkflow_request_table_fi-view = 'X'.
APPEND lworkflow_request_table_fi TO lworkflow_request_tab .
CLEAR lworkflow_request_table_fi  .

DATA:  lworkflow_reques1 TYPE ywsarray_of_workflow_request_1 .
MOVE-CORRESPONDING lworkflow_request_tab TO  lworkflow_reques1-workflow_request_table_field .

DATA lworkflow_request_table_re TYPE  ywsworkflow_request_table_reco .
lworkflow_request_table_re-workflow_request_table_fields = lworkflow_reques1 .

DATA ltabl_tab TYPE ywsworkflow_request_table__tab .
APPEND lworkflow_request_table_re TO ltabl_tab .

DATA: lworkflow_request TYPE  ywsarray_of_workflow_request_t .
MOVE-CORRESPONDING ltabl_tab TO lworkflow_request-workflow_request_table_record .

main-request_records = lworkflow_request .
  • aa-workflow_main_table_info = main ."最终将数据赋值到主表里面。
  • aa-workflow_base_info = bb .

&---------------- END OA主表参数 ---------------------

*************************** 明细表数据 *******************************************
SELECT b~ebeln "采购凭证编号
b~ebelp "采购凭证的项目编号
b~matnr "物料编号
b~txz01 "短文本即物料描述
b~menge "采购订单数量
b~meins "采购订单计量单位
b~bednr "含税价
b~werks "工厂
b~matkl "物料组
b~bprme "订单价格单位(采购)
b~knttp "科目分配类别
c~ekorg "采购组织
c~ekgrp "采购组
c~waers "货币码
e~eindt "项目交货日期
INTO CORRESPONDING FIELDS OF TABLE lt_out02
FROM ekpo AS b

        INNER JOIN  ekko  AS c ON b~ebeln = c~ebeln AND c~frgke = 'N'
        LEFT JOIN eket  AS e ON b~ebeln = e~ebeln AND b~ebelp = e~ebelp

   WHERE b~ebeln = ls_out01-ebeln AND b~bukrs = ls_out01-bukrs  .

插入到自定义已上传的采购订单表*
CLEAR ls_ebeln.
ls_ebeln-bukrs = ls_out01-bukrs .
ls_ebeln-ebeln = ls_out01-ebeln .


CLEAR ls_out01.
CLEAR lworkflow_request.
CLEAR lworkflow_reques1.
CLEAR lworkflow_request_table_re.
CLEAR ltabl_tab.
CLEAR lworkflow_request_tab.


LOOP AT lt_out02 ASSIGNING FIELD-SYMBOL(<fs_out02>).

  "物料组描述
  SELECT SINGLE wgbez FROM t023t INTO <fs_out02>-wgbez WHERE matkl = <fs_out02>-matkl AND spras = sy-langu.
  IF <fs_out02>-wgbez IS INITIAL.
    SELECT SINGLE wgbez FROM t023t INTO <fs_out02>-wgbez WHERE matkl = <fs_out02>-matkl.
  ENDIF.

  "成本中心文本描述
  •  SELECT SINGLE ltext FROM cskt INTO <fs_out02>-ltext WHERE kostl = <fs_out02>-kostl AND spras = sy-langu.
    SELECT SINGLE kostl FROM cskt INTO <fs_out02>-kostl WHERE kostl = <fs_out02>-kostl.
    
    "去掉物料编码,采购行项目的前导零
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = <fs_out02>-matnr
      IMPORTING
        output = <fs_out02>-matnr.
    
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
        input  = <fs_out02>-ebelp
      IMPORTING
        output = <fs_out02>-ebelp.
    

    ENDLOOP.

  • CLEAR lt_out02[].

LOOP AT lt_out02 INTO ls_out02 .

&---------------- START OA 明细表参数 ---------------------

  DATA:gg TYPE ywsarray_of_workflow_detail_ta .
  DATA:hh TYPE ywsworkflow_detail_table_i_tab .
  DATA:kk TYPE ywsworkflow_detail_table_info  .

  "明细数据库表
  kk-table_dbname = 'formtable_main_63_dt1'.

  DATA:mm TYPE ywsarray_of_workflow_request_t .
  kk-workflow_request_table_records = mm .

  DATA: nn           TYPE ywsworkflow_request_table__tab .
  DATA: po           TYPE ywsworkflow_request_table_reco .
  DATA: pp           TYPE ywsarray_of_workflow_request_1 .
  DATA: detail_tab1  TYPE ywsworkflow_request_table_tab1 .
  DATA: detail_fiel  TYPE ywsworkflow_request_table_fiel .

  detail_fiel-field_name = 'xxm'."行项目
  detail_fiel-field_value = ls_out02-ebelp.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'wlbh'."物料编号
  detail_fiel-field_value = ls_out02-matnr.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'wlms'."物料描述
  detail_fiel-field_value = ls_out02-txz01.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'ddsl'."订单数量
  detail_fiel-field_value = ls_out02-menge.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'dddw'."订单单位
  detail_fiel-field_value = ls_out02-meins.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'jhrq'."交货日期
  detail_fiel-field_value = ls_out02-eindt.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'hsj'."含税价
  detail_fiel-field_value = ls_out02-bednr.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'hb'."货币
  detail_fiel-field_value = ls_out02-waers.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = 'gc'."工厂
  detail_fiel-field_value = ls_out02-werks.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .

  detail_fiel-field_name = ' wlz'."物料组
  detail_fiel-field_value = ls_out02-wgbez.
  detail_fiel-edit = 'X'.
  detail_fiel-view = 'X'.
  APPEND detail_fiel TO detail_tab1 .
  CLEAR detail_fiel .
  •  detail_fiel-field_name = 'jgdw '."价格单位
    
  •  detail_fiel-field_value = ls_out02-bprme.
    
  •  detail_fiel-edit = 'X'.
    
  •  detail_fiel-view = 'X'.
    
  •  APPEND detail_fiel TO detail_tab1 .
    
  •  CLEAR detail_fiel .
    
    detail_fiel-field_name = 'cgzz '."采购组织
    detail_fiel-field_value = ls_out02-ekorg.
    detail_fiel-edit = 'X'.
    detail_fiel-view = 'X'.
    APPEND detail_fiel TO detail_tab1 .
    CLEAR detail_fiel .
    
    detail_fiel-field_name = ' cgz'."采购组
    detail_fiel-field_value = ls_out02-ekgrp.
    detail_fiel-edit = 'X'.
    detail_fiel-view = 'X'.
    APPEND detail_fiel TO detail_tab1 .
    CLEAR detail_fiel .
    
    detail_fiel-field_name = 'cbzx '."成本中心
    detail_fiel-field_value = gt_display-kostl.
    detail_fiel-edit = 'X'.
    detail_fiel-view = 'X'.
    APPEND detail_fiel TO detail_tab1 .
    CLEAR detail_fiel .
    
    detail_fiel-field_name = ' kmfp'."科目分配
    detail_fiel-field_value = ls_out02-knttp.
    detail_fiel-edit = 'X'.
    detail_fiel-view = 'X'.
    APPEND detail_fiel TO detail_tab1 .
    CLEAR detail_fiel .
    
    
    MOVE-CORRESPONDING detail_tab1 TO pp-workflow_request_table_field .
    po-workflow_request_table_fields = pp .
    APPEND po  TO  mm-workflow_request_table_record  .
    CLEAR detail_tab1 .
    CLEAR po .
    

    ENDLOOP.

    CLEAR ls_out02.
    kk-workflow_request_table_records = mm .


APPEND kk TO hh.

************************************************************分开
MOVE-CORRESPONDING hh TO gg-workflow_detail_table_info .
aa-workflow_detail_table_infos = gg .


&---------------- END OA明细表参数 ---------------------

aa-workflow_main_table_info = main ."最终将数据赋值到主表里面。
aa-workflow_base_info = bb .

lo_input-in0 = aa ."主表参数
lo_input-in1 =  cname .

TRY.
    CREATE OBJECT lo_clientproxy
      EXPORTING
        logical_port_name = 'ZYWS_OAWS001'.
  CATCH cx_ai_system_fault .
ENDTRY.
CLEAR main.
CLEAR bb.
CLEAR aa.
CLEAR mm.
CLEAR kk.
CLEAR hh.
CLEAR gg.

TRY.
    CALL METHOD lo_clientproxy->do_create_workflow_request
      EXPORTING
        do_create_workflow_request_req = lo_input
      IMPORTING
        do_create_workflow_request_res = lo_output.

  CATCH cx_ai_system_fault .

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDTRY.

IF lo_output-out < 0 .
  MESSAGE '采购订单号:' && ls_ebeln-ebeln && '创建失败,原因代码:' && lo_output-out && ',请联系系统管理员' TYPE 'E'.
  RETURN.
ENDIF.

IF lo_output-out > 0.

  MODIFY yebeln FROM ls_ebeln .
ENDIF .

ENDLOOP.

ENDFORM. "frm_send_date_toa

&---------------------------------------------------------------------
*& Form build_alv
&---------------------------------------------------------------------

  •   Include top, sort, layout,
    

----------------------------------------------------------------------
FORM build_alv .
DATA: ls_fieldcat LIKE LINE OF gt_fieldcat.
DATA: ls_top TYPE LINE OF slis_t_listheader.
DATA: ls_sort TYPE slis_sortinfo_alv.
CLEAR: ls_fieldcat, gt_fieldcat[], ls_top,gt_list_top_of_page[],
ls_sort,gs_grid,gs_print_alv,gt_sortinfo_alv[].

*&-----gs_layout definition.
gs_layout-zebra = ‘X’.
gs_layout-no_vline = ’ '. "设置列间隔线
gs_layout-colwidth_optimize = ‘X’. "优化列宽
gs_layout-detail_initial_lines = ‘X’.
gs_layout-box_fieldname = ‘zflag’.

  • gs_layout-box_fieldname = ‘BOX’.
    ** gs_layout-coltab_fieldname = ‘LINE_COLOR’.
  • gs_layout-info_fieldname = ‘LINE_COLOR’.
    **-2. definition one-by-one.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘zflag’.
ls_fieldcat-seltext_l = ‘选择’.
ls_fieldcat-checkbox = ‘X’.
ls_fieldcat-edit = ‘X’ .
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘AEDAT’.
ls_fieldcat-seltext_l = ‘提交日期’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BUKRS’.
ls_fieldcat-seltext_l = ‘公司代码’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BUTXT’.
ls_fieldcat-seltext_l = ‘公司代码描述’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘EBELN’.
ls_fieldcat-seltext_l = ‘采购订单’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘EBELP’.
ls_fieldcat-seltext_l = ‘采购订单行项目’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘RLWRT’.
ls_fieldcat-seltext_l = ‘净价总金额’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘WAERS’.
ls_fieldcat-seltext_l = ‘净价总金额单位’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘MWSKZ’.
ls_fieldcat-seltext_l = ‘税率’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘FRGSX’.添加链接描述
ls_fieldcat-seltext_l = ‘审批策略’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘FRGGR’.
ls_fieldcat-seltext_l = ‘审批组’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BATXT’.
ls_fieldcat-seltext_l = ‘单据类型’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BANFN’.
ls_fieldcat-seltext_l = ‘采购申请单’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BNFPO’.
ls_fieldcat-seltext_l = ‘采购申请单行项目’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘LIFNR’.
ls_fieldcat-seltext_l = ‘供应商编码’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘NAME1’.
ls_fieldcat-seltext_l = ‘供应商名称’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘MATNR’.
ls_fieldcat-seltext_l = ‘物料编码’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘TXZ01’.
ls_fieldcat-seltext_l = ‘物料描述’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘FRGKE’.
ls_fieldcat-seltext_l = ‘审批标识’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘ERNAM’.
ls_fieldcat-seltext_l = ‘采购员(英文)’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘OPERATORNAME’.
ls_fieldcat-seltext_l = ‘采购员(中文)’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘MENGE’.
ls_fieldcat-seltext_l = ‘订单数量’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BPRME’.
ls_fieldcat-seltext_l = ‘订单单位’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘EINDT’.
ls_fieldcat-seltext_l = ‘交货日期’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BEDNR’.
ls_fieldcat-seltext_l = ‘含税价’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘WAERS’.
ls_fieldcat-seltext_l = ‘货币’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘WERKS’.
ls_fieldcat-seltext_l = ‘工厂’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘WGBEZ’.
ls_fieldcat-seltext_l = ‘物料组’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘BPRME’.
ls_fieldcat-seltext_l = ‘价格单位’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘EKORG’.
ls_fieldcat-seltext_l = ‘采购组织’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘EKGRP’.
ls_fieldcat-seltext_l = ‘采购组’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘KOSTL’.
ls_fieldcat-seltext_l = ‘成本中心’.
APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.
ls_fieldcat-tabname = ‘GT_DISPLAY’.
ls_fieldcat-fieldname = ‘KNTTP’.
ls_fieldcat-seltext_l = ‘科目分配’.
APPEND ls_fieldcat TO gt_fieldcat.

ENDFORM. "build_alv
&---------------------------------------------------------------------
*& Form display_screen
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
FORM display_screen .
DATA l_grid_title TYPE lvc_title.

l_grid_title = ‘待审批的采购订单清单列表’.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS_SET ’
i_callback_user_command = ‘USER_COMMAND’
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_sort = gt_sortinfo_alv[]
i_grid_title = l_grid_title
i_save = ‘A’
TABLES
t_outtab = gt_display
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM. "display_screen
&---------------------------------------------------------------------
*& Form pf_status_set
&---------------------------------------------------------------------

  •   PF_STATUS definition.
    

----------------------------------------------------------------------

  •  -->RT_EXTAB   text
    

----------------------------------------------------------------------
FORM pf_status_set USING rt_extab TYPE slis_t_extab.

SET PF-STATUS ‘ZSTANDARD’.

ENDFORM. "PF_STATUS_SET
&---------------------------------------------------------------------
*& Form user_command
&---------------------------------------------------------------------

  •   Usercommand definition.
    

----------------------------------------------------------------------

  •  -->UCOMM      text
    
  •  -->SELFIELD   text
    

----------------------------------------------------------------------
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
"选择框 checkbox
DATA: ref1 TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’ "Check Box need fieldcat-checkbox, input and edit.
IMPORTING
e_grid = ref1.
CALL METHOD ref1->check_changed_data.
CALL METHOD ref1->refresh_table_display.
selfield-refresh = ‘X’.

CASE ucomm.
WHEN ‘&ILT’.
WHEN ‘&IC1’.
CLEAR wa_out.
READ TABLE gt_display INTO wa_out INDEX selfield-tabindex.
CHECK sy-subrc = 0.
IF selfield-fieldname = ‘EBELN’ AND wa_out-ebeln IS NOT INITIAL.
SET PARAMETER ID ‘BES’ FIELD wa_out-ebeln.
CALL TRANSACTION ‘ME23N’ AND SKIP FIRST SCREEN.
ELSEIF selfield-fieldname = ‘BANFN’ AND wa_out-banfn IS NOT INITIAL.
SET PARAMETER ID ‘BAN’ FIELD wa_out-banfn.
CALL TRANSACTION ‘ME53N’ AND SKIP FIRST SCREEN.
ENDIF.

WHEN 'UPOA'. "提交OA按钮

  "引用上传表单
  PERFORM  sub_send_oa.


  "提交采购订单的提示信息
  IF sy-subrc EQ 0.
    CONCATENATE '采购订单:' wa_ty-ebeln ' 上传OA成功!' INTO lmgs_errtxt.
    MESSAGE lmgs_errtxt TYPE 'S' DISPLAY LIKE 'S'.
  ELSE.
    CONCATENATE '采购订单:' wa_ty-ebeln ' 上传OA失败!' INTO lmgs_errtxt.
    MESSAGE lmgs_errtxt TYPE 'E' DISPLAY LIKE 'E'.
  ENDIF.

  CALL METHOD ref1->check_changed_data.
  CALL METHOD ref1->refresh_table_display.
WHEN OTHERS.

ENDCASE.

selfield-refresh = ‘X’. " 当用户在显式界面上对数据进行修改时,同时内表中的数据也随之刷新
selfield-row_stable = ‘X’.
selfield-col_stable = ‘X’.
ENDFORM. "user_command

自定义表:
表:YEBELN 是用来记录从SAP这边提交过去OA系统的单号和工厂。(注意:当采购员再次提交同一张单的时候,需要SM30 进来这个表 删掉该单号,方能继续提交单号去OA 。)
在这里插入图片描述
表: YOAHRID 是用来放采购员ID,姓名,部门ID 。
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值