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 。