ABAP
淋了一场太阳雨
生活中的不期而遇,都是你努力后的惊喜
展开
-
ABAP 审批采购订单之拒绝和取消拒绝
代码对应ME29N中批准策略中的拒绝和取消拒绝的按钮拒绝按钮代码如下: DATA LC_PO TYPE REF TO CL_PO_HEADER_HANDLE_MM. DATA LS_DOCUMENT TYPE MEPO_DOCUMENT. "文本获取定义 DATA: LV_MESSAGE TYPE STRING.* prepare creation of PO instance LS_DOCUMENT-DOC_TYPE = 'F'. "默认原创 2022-05-01 15:59:01 · 746 阅读 · 1 评论 -
SAP OOALV分割屏幕
同一个alv屏幕上显示上下两个屏幕,用于显示不同的数据。需要用到四个对象类:cl_gui_docking_container 屏幕容器类cl_gui_splitter_container 分割屏幕类cl_gui_container 屏幕容器类cl_gui_alv_grid 屏幕对象类显示效果如下:代码如下:TABLES: sflight."抬头数据输出TYPES: BEGIN OF ty_head. INCLUDE TYPE scarr.TYPES: slbox TY原创 2022-05-01 15:46:41 · 1907 阅读 · 3 评论 -
SAP 创建可选BOM的BAPI
三个BAPI可以用来创建BOM1、CSAP_MAT_BOM_CREATE call function 'CSAP_MAT_BOM_CREATE' exporting material = g_matnr plant = g_werks bom_usage = g_stlan valid_from = g_datuv change_no = g_aennr* REVISION_LEVEL原创 2022-02-25 10:18:20 · 2237 阅读 · 0 评论 -
SAP 批导程序导入Excel后,Excel自动打开
将上传的FM由:TEXT_CONVERT_XLS_TO_SAP换成FM:ALSM_EXCEL_TO_INTERNAL_TABLE就不会再出现自动打开的问题。并且使用GUI770才会出现自动打开的问题,GUI770版本以下不会出现这样的问题。原创 2022-02-23 10:45:43 · 1720 阅读 · 0 评论 -
SAP BILLING_SCHEDULE_SAVE
使用VF11冲销时,将对应销售订单的出具发票计划行打上冻结标记使用FM:BILLING_SCHEDULE_SAVE实现 if sy-tcode eq 'VF11'.* break hand-ccc. data: lt_vbrp type table of vbrp, ls_vbrp type vbrp. data: lt_fpla_new type table of fplavb, ls_fpla_new type fplavb.原创 2022-02-23 10:28:06 · 1132 阅读 · 0 评论 -
SAP VF11冲销发票BADI
VF11点击保存的时候触发BADI:SD_CIN_LV60AU02BADI下只有一个方法:EXCISE_INVOICE_CREATE原创 2022-02-23 10:22:34 · 807 阅读 · 0 评论 -
ABAP 发送邮件
* 变量定义 DATA: SEND_REQUEST TYPE REF TO CL_BCS, DOCUMENT TYPE REF TO CL_DOCUMENT_BCS, FAIL TYPE REF TO CX_BCS, RECIPIENT TYPE REF TO IF_RECIPIENT_BCS. DATA: LS TYPE STRING, MAILTO TYPE AD_SMTPADR, MAIN原创 2022-02-17 09:27:59 · 420 阅读 · 0 评论 -
SAP 交货单抬头增强(页签)
效果图:BADI:IF_EX_LE_SHP_TAB_CUST_HEAD增强代码: method IF_EX_LE_SHP_TAB_CUST_HEAD~ACTIVATE_TAB_PAGE. case if_tcode. when 'VL01N' or 'VL02N' or 'VL03N'. ef_caption = '送货单'. ef_position = 20. ef_program = 'SAPLZFG_SD'. ef_dynpro =原创 2022-02-16 10:47:06 · 896 阅读 · 0 评论 -
SAP 字符串转换为数值
批导的时候,数值类型的数据会自动变大,把批导结构中的数值字段定义为字符型,解决了这个问题。但是在做计算的时候要转换回数值类型。用到以下函数:DATA: LV_DCPFM TYPE USR01-DCPFM.DATA: LV_STR TYPE C LENGTH 18.DATA: LV_OUT TYPE P DECIMALS 2.SELECT SINGLE DCPFM INTO LV_DCPFM FROM USR01 WHERE BNAME EQ SY-UNAME. CALL FU原创 2021-12-29 15:58:36 · 1722 阅读 · 0 评论 -
SAP 读取凭证抬头文本或项目文本
以下以采购订单为例。双击箭头处。一共有两种方法:第一种:使用 ‘READ_TEXT’ 这个FUNCTION。CALL FUNCTION 'READ_TEXT' EXPORTING ID = 'F01' LANGUAGE = SY-LANGU NAME = '8000000004' OBJECT = 'EKKO' TABLES原创 2021-12-28 17:00:26 · 2105 阅读 · 0 评论 -
SAP RFC创建webservice以及测试
一个接口项目,总体采用数据直接存中间库表的方式,但是有几个接口特殊采用webservice的方式。需要创建RFC的webservice给外围系统调用。先创建一个webservice测试一下联通性:首先创建一个RFC:然后创建服务点击完成,创建成功,记得激活一下然后SOAMANAGER做web配置正常是以下的界面,如果出不来这个界面,把网址中的域名换成服务器的地址试试找到刚才创建的服务点击ZWSTEST进入进行配置点击完成,完成配置,生成WSDL点击这里可以查原创 2021-11-16 13:21:11 · 3378 阅读 · 0 评论 -
ABAP INNER JOIN 内表
一般来说,在大多数情况下,我们使用(FOR ALL ENTRIES IN 内表) 去取数比如说IF LT_EKPO IS NOT INITIAL . SELECT A~EBELN, A~EBELP, A~MENGE INTO TABLE @DATA(LT_EKET) FROM EKET AS A FOR ALL ENTRIES IN @LT_EKPO WHERE EBELN EQ @LT_EKPO-EBELN AND原创 2021-09-23 17:05:30 · 2308 阅读 · 4 评论 -
SAP BAPI_ACC_DOCUMENT_POST记账码问题
今天遇见一个问题:使用BAPI_ACC_DOCUMENT_POST过账(或BAPI_ACC_DOCUMENT_CHECK检查数据)时,报错"借/贷标记不一致"。刚开始以为是数据的问题,调试后发现数据的借贷平衡,金额也没有问题。联想到记账码是通过增强字段传值的,所以问题可能出现在这里。后面实践发现:当增强的结构里面有这个增强字段时,记账码必传。但是当这个之前结构里面没有这个增强字段时,BAPI应该是通过金额的正负数去赋值记账码的(可能还有配置)。OVER……...原创 2021-08-03 17:02:59 · 2676 阅读 · 1 评论 -
ABAP Function ALV根据结构获取FIELDCAT
使用FM:REUSE_ALV_GRID_DISPLAY时,使用FM:REUSE_ALV_FIELDCATALOG_MERGE获取FIELDCAT。使用FM:REUSE_ALV_GRID_DISPLAY_LVC时,使用FM:LVC_FIELDCATALOG_MERGE获取FIELDCAT。OVER……原创 2021-06-07 14:14:29 · 1233 阅读 · 0 评论 -
SAP BOM的类二维报表
一个简单BOM的类二维报表。代码如下:TABLES: MARA, T001W, AUFK.TYPES: BEGIN OF TY_OUTPUT, IDNRK TYPE STPOX-IDNRK, "物料编码 MAKTX TYPE MAKT-MAKTX, "物料名称 NORMT TYPE MARA-NORMT, "零件简码 ZZPURT TYPE MARC-ZZPURT, "EDMC采购类型 LIFNR TY原创 2021-06-02 10:05:51 · 773 阅读 · 0 评论 -
SAP DYNP_VALUES_READ获取自建屏幕字段值
今天做了一个程序,其中有部分的功能是这样的:点击新增按钮弹出屏幕,输入数据,点击保存到自建表。这个功能不难,自建屏幕调用即可。但是这里有一个问题,在输入数据后,直接点击保存,数据到不了你的工作区里面。这是因为没有触发PAI和PBO,所以数据不会进工作区,一般操作是回车触发获得数据,但是显然不可能要求每个用户都能做到输入数据后敲回车。所以这里用到了:DYNP_VALUES_READ这个FM。具体代码如下:DATA: GT_FIELD TYPE TABLE OF DYNPREAD, GS_原创 2021-05-14 16:29:58 · 691 阅读 · 0 评论 -
SAP VF11取消开票:BAPI_BILLINGDOC_CANCEL1
继上篇文章VF01开票,但是VF01开票后发现发票有问题,需要取消开票。这时就要用到VF11用来取消开票。VF11前台界面如下:对应的BAPI为:BAPI_BILLINGDOC_CANCEL1这个BAPI很简单,具体代码如下:DATA: LT_RETURN TYPE TABLE OF BAPIRETURN1, LS_RETURN TYPE BAPIRETURN1.DATA: LT_SUCCESS TYPE TABLE OF BAPIVBRKSUCCESS, LS_SUCCESS TYPE B原创 2021-05-11 10:39:38 · 3729 阅读 · 0 评论 -
SAP VF01销售开票:BAPI_BILLINGDOC_CREATEMULTIPLE
VF01的界面是这样的:界面可以看出,需要传的主要的参数有这么几个,这里的凭证用的是交货单号。据我了解,销售开票之前的流程是这样的:生成销售单->销售单生成交货单->交货单过账->销售开票->发票过账。(以上流程如有疏漏,请大家补充)经查询:VF01对应的BAPI是:BAPI_BILLINGDOC_CREATEMULTIPLE所以只要往这个BAPI中传入必要的参数即可。具体代码如下: DATA: LT_BILLINGDATAIN TYPE TABLE OF BAP原创 2021-05-11 10:23:49 · 8965 阅读 · 2 评论 -
SAP 采购订单上含税价实现净价
需要实现的效果:要通过PBXX的含税价计算出净值。实现步骤如下:事务码:VOFM进入以下界面选择定价值然后添加行双击进入例程填写计算逻辑的代码代码写好激活后,返回把这个行激活最后添加到配置,配置目录为:SPRO-物料管理-采购-条件-定义价格确认流程-定义定价过程添加写的例程。OVER…...原创 2021-04-28 16:48:02 · 3226 阅读 · 9 评论 -
SAP VOFM例程开发实现定价增强
例程,即Fomula,是使用在销售、采购、发票、交货等单据中定价过程的一小段程序。之所以有Fomula存在,是因为在不同的业务场景下,定价过程可能千差万别,但是却可以拆分为一些关键的组成部分,如复制请求、数据传输、要求、公式,每个例程就是一小段专用程序,这些例程程序会被标准程序动态调用:如:PERFORM XXX IN XXXX IF FOUND. 我们可以在例程中编写代码片段,修改运行环境中的数据。...转载 2021-04-27 16:18:15 · 5582 阅读 · 0 评论 -
SAP BAPI_ACC_DOCUMENT_POST增强字段
使用BAPI_ACC_DOCUMENT_POST创建会计凭证时,需要在行项目传入反记账标识和记账码,但是找遍了BAPI下面的传值结构也没有找到记账码的传值,倒是找到了反记账标识的传值,但是实在抬头上的,明显不符合要求。所以只能另寻他法,看到这个BAPI下是有增强扩展的结构的,那么应该是可以通过增强字段来传入需要的值。首先创建增强结构:然后通过增强结构传入值。然后,测试发现没有效果。发现还需要一个增强。BADI: BADI_ACC_DOCUMENT代码写入:IF_EX_ACC_DOCUMENT~原创 2021-04-25 12:07:41 · 2807 阅读 · 0 评论 -
SAP BAPI_GOODSMVT_CREATE收货时序列号传入
用到的是MIGO对应的BAPI:BAPI_GOODSMVT_CREATE序列号是通过创建物料凭证时,BAPI下的GOODSMVT_SERIALNUMBER结构传入。对应前台的界面如下:代码如下:DATA: LS_GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01, LS_GOODSMVT_CODE TYPE BAPI2017_GM_CODE, LV_TESTRUN TYPE BAP原创 2021-04-23 09:54:55 · 1942 阅读 · 1 评论 -
ABAP 动态指针实现动态报表
使用动态指针的方式实现动态报表优点:开发简单省时缺点:扩展性差,数据量大时效率低下面是代码:DATA: WA_LAYOUT TYPE LVC_S_LAYO.DATA: GT_FIELDCAT TYPE LVC_T_FCAT.FIELD-SYMBOLS : <FS_OUTPUT> TYPE STANDARD TABLE .TABLES : SFLIGHT.SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME.SELECT-OP原创 2021-02-24 17:13:45 · 491 阅读 · 0 评论 -
SAP ASSIGN COMPONENT动态获取内表值
使用分配指针的方式动态获取内表中的字段的值。例子如下:TYPES: BEGIN OF TY_OUT, HSL01 TYPE I, HSL02 TYPE I, HSL03 TYPE I, HSL04 TYPE I, HSL05 TYPE I, END OF TY_OUT.DATA: GT_OUT TYPE TABLE OF TY_OUT.DATA: GS_OUT TYPE TY_OUT.G原创 2021-02-24 16:28:23 · 1427 阅读 · 0 评论 -
SAP 预制发票BAPI:BAPI_INCOMINGINVOICE_PARK
创建预制发票BAPI:BAPI_INCOMINGINVOICE_PARK以下代码供参考:"bapi's struDATA: LS_HEADERDATA TYPE BAPI_INCINV_CREATE_HEADER.DATA: LV_INVOICEDOCNUMBER LIKE BAPI_INCINV_FLD-INV_DOC_NO.DATA: LV_FISCALYEAR LIKE BAPI_INCINV_FLD-FISC_YEAR.DATA: LT_ITE原创 2021-01-27 16:01:43 · 4672 阅读 · 0 评论 -
SAP 固定资产调拨BAPI:BAPI_FIXEDASSET_CHANGE
固定资产调拨BAPI:BAPI_FIXEDASSET_CHANGE以下代码供参考:"BAPI导入参数 DATA: LV_COMPANYCODE LIKE BAPI1022_1-COMP_CODE, "公司代码 LV_ASSET LIKE BAPI1022_1-ASSETMAINO, "主资产号 LV_SUBNUMBER LIKE BAPI1022_1-ASSETSUBNO, "资产次级编号原创 2021-01-27 15:33:55 · 3974 阅读 · 1 评论 -
SAP 创建资产卡片BAPI:BAPI_FIXEDASSET_CREATE1
创建资产卡片BAPI:BAPI_FIXEDASSET_CREATE1"BAPI导入参数DATA:LS_KEY LIKE BAPI1022_KEY, "要创建的关键字字段 LS_REFERENCE LIKE BAPI1022_REFERENCE, "创建的参考资产 LV_CREATESUBNUMBER LIKE BAPI1022_MISC-XSUBNO, "检查框 - 创建子编号 L原创 2021-01-27 15:26:03 · 3151 阅读 · 0 评论 -
ABAP 使用AT LAST/AT NEW/AT END/AT FIRST时数据变为‘*‘
在使用LOOP内表处理数据时,经常会用到AT LAST/AT NEW/AT END/AT FIRST去处理,但是在AT…ENDAT之间如果要用到数据时,会发现字符类型数据变为了’*’,数值类型数据变为了’0’。遇到这样的情况时,我的方法是使用指针规避,使用:LOOP AT IT_TAB ASSIGNING FIELD-SYMBOL(<FS_TAB>).ENDLOOP.代替LOOP AT IT_TAB INTO WA_TAB.ENDLOOP.如果大家还有其他好的方法欢迎评论交流。原创 2021-01-23 12:21:35 · 1463 阅读 · 0 评论 -
SAP 完全凭证替代出口功能行项目值填入
接到的需求:根据科目HKONT找到凭证中该科目其他行项目贸易伙伴不为空的数据,并将其贸易伙伴赋值进入ZRGGBS000程序(这个程序怎么来的可自行百度)在GET_EXIT_TITLES这个FORM中加入下列代码为什么要用C_EXIT_PARAM_CLASS这个呢,因为在参数中要用到结构参数,由下图可以知道只有这个可以使用结构作为参数然后创建U902的FORM然后更新数据的代码可以参考程序下的例子最后在完全凭证替代中加入OVER…...原创 2020-11-30 10:34:18 · 1663 阅读 · 0 评论 -
SAP MESSAGE OUT调用的方式怎么进程序断点
客户进入事务码ME22N,然后点击消息,然后选择选择数据点击重复传输,然后后台调用程序发送数据。但是发送数据时出了问题,找到了被调用的程序但是不知道哪段代码出了问题,打断点,准备调试。但是断点怎么都进不去,内部/外部断点全都试过,就是进不去。百度也没找到方法,询问经验丰富的大佬,给出了方法,随便找个程序进入调试模式然后在程序里打断点,就能进调试了,哇哦~神奇。不过使用完之后最好改回去,不然调试结束了,这个调试界面还是挂在那里。OVER…...原创 2020-10-31 16:46:13 · 500 阅读 · 0 评论 -
SAP 生产订单成分(BOM)与标准BOM对比校验
10月,不轻松的一个月,国庆8天假一回来就发现了系统数据出现了大问题。上游切换系统,但是没有处理好期初数据,导致大量的BOM数据重复下发,然后SAP系统的数据就乱了。在处理数据的过程中,写了一个校验对比的程序,与大家共享。注:校验的双方必须有一方的数据是正确的,这里程序是以标准BOM为准,校验生产订单的BOM中的错误数据。下面是CODE:TABLES: RESB,AUFK,AFKO,MARA.TYPES: BEGIN OF TY_ALV, AUFNR TYPE RES原创 2020-10-31 16:02:25 · 2522 阅读 · 1 评论 -
SAP DUMP报错DBSQL_DUPLICATE_KEY_ERROR
最近客户在测试环境做单据,一直出现DBSQL_DUPLICATE_KEY_ERROR的DUMP。ST22查看报错原因,发现报错的地方都是在insert插表的时候。然后想到可能是号码段的问题,问了一下客户,前段时间做过Client Copy的操作。copy了正式环境的数据和配置到测试环境,但是号码段不属于配置,一般上线号码段都是单独配的。导致号码段的编号落后于数据表中的编号,就比如说测试库的号码段编号现在是30,下一条产生的数据应该是31,但是数据表中编号已经到了70,也就是说31这条数据已经存在了,所以in原创 2020-09-25 15:51:25 · 4146 阅读 · 0 评论 -
使用函数CSAP_MAT_BOM_MAINTAIN维护BOM
转载自:https://blog.csdn.net/hjz419116185/article/details/8239156在使用函数CSAP_MAT_BOM_MAINTAIN维护BOM增加BOM组件时,发现组件物料不存在,执行函数后还是提示成功修改而没有提示物料不存在,但CS03查看BOM肯定是没有增加相应的组件。DEBUG跟踪程序后,只要给参数 fl_complete 赋上值就会提示组件物料不存在的错误信息了。CALL FUNCTION ‘CSAP_MAT_BOM_MAINTAIN’EXPORTI转载 2020-09-25 15:02:56 · 1430 阅读 · 0 评论 -
SAP BP供应商的贸易伙伴传值并前台显示
有这么个需求,在创建供应商的时候要把贸易伙伴传入到供应商主数据,并在前台BP的这个界面展示。开整,F1先查看这个字段名找到字段名称为VBUND,创建供应商我用的是vmd_ei_api=>maintain_bapi。然后开始找里面的传参的字段。最终找到了这个字段往这个字段传入数据。代码写完,自信测试。生成供应商主数据,BP查看,嗯?前台没有显示,傻眼了,怎么回事。然后看了一下LFA1表,VBUND字段有值啊,为什么前台没有显示。然后仔细看了下,BP界面上的字段是BP001表的字段,也就是说.原创 2020-09-04 11:37:57 · 3549 阅读 · 2 评论 -
SAP service ‘sapdp00‘ unknown
最近遇见一个很奇怪的问题,用router登录一个客户的SAP,就是登录不上去,报了以下的错误百度出来的方法都试过了,就是解决不了,一直报错。然后,今天升级了以下GUI,竟然神奇的能登录了,我原来用的是740,亲测750和760都可以。OVER...原创 2020-08-21 09:11:16 · 1424 阅读 · 0 评论 -
ABAP BDC返回成功但是未创建单据或没有产生相应效果
最近在调两个接口,两个接口都是使用BDC取生成数据遇见主要的问题是数据转换的问题问题一:原接口定义的字段长度长于BDC中对应字段的长度,这种只要定义一个符合BDC中对应字段长度的字段转换赋值一下即可。问题二:关于数量和金额字段的转换,我遇见的问题是报了一个错:" 输入应按格式___..~,_,字段 EINE-NETPR 中格式出错 "。这个错误是因为对方发送了一个金额字段,一般来说我们金额或者数量带小数都是"33.37"这样的格式,然后就报了这个错误。但是很奇怪的是,自己手动打数据进去调试是没有问题的原创 2020-08-07 09:27:55 · 1132 阅读 · 1 评论 -
ABAP 分页查询报表示例
话不多说,上代码*&---------------------------------------------------------------------**& Report ZLY_PAGE_QUERY*&---------------------------------------------------------------------**&*&---------------------------------------------------原创 2020-06-28 16:27:26 · 1222 阅读 · 0 评论 -
SAP 修改表数据
目前我知道的有两种方法:方法一:然后就可以修改了。方法二:SE37输入SE16N_INTERFACE直接执行然后再直接执行。OVER。原创 2020-04-27 16:17:04 · 594 阅读 · 0 评论 -
SAP 单元格修改后数据不符合要求,自动恢复为修改前值
转载自:https://blog.csdn.net/wangjolly/article/details/80162852FORM frm_handle_data_changed USING ir_data_changed TYPE REF TO cl_alv_changed_data_protocol. DATA:ls_mod_cell TYPE lvc_s_modi, ...转载 2020-04-27 15:54:39 · 494 阅读 · 0 评论 -
ABAP权限对象的创建
繁忙的11月终于过去,每天忙的不可开交,先是双十一,然后又是新流程什么的巴拉巴拉,好在现在能空下来整理整理了。说说前段时间在写新流程的时候碰到的,新流程中需要对工厂进行权限控制,这时就需要用到权限对象了。但是以前都是顾问直接给权限对象的,这是第一次要自己创建,于是一通百度,一顿操作下来,然后发现还是不行,怎么搞都是没有权限,我。。。最后发现少了一个最重要的步骤,我。。。下面说明权限对象的创建:...原创 2019-12-06 15:29:48 · 2190 阅读 · 0 评论