如何用C#语言来获取SAP网络服务
我想将SAP Web服务消耗到我的C#应用​​程序中.为此,我写了下面给出的一块代码. NetworkCredential ntobj = new NetworkCredential(); ZWEBSERVICE_INTERNAL_ORDER2 zClassobj = new ZWEBSERVICE_INTERNAL_ORDER2(); ZbapiFiCreateInternalOrder zMethodObj = new ZbapiFiCreateInternalOrder(); ZbapiFiCreateInternalOrderResponse zMethodResobj = new ZbapiFiCreateInternalOrderResponse(); ntobj.UserName = "alpldev"; ntobj.Password = "alp
10 2024-04-25
编程技术问答社区
用ABAP进行位移
我正在尝试将一些Java代码移植,这需要算术和合乎逻辑的位移动,以使其变得ABAP. 据我所知,ABAP仅支持位不支持,或者和XOR操作. 有人知道另一种用ABAP实施这种转变的方式吗?是否有一种方法可以通过仅使用不使用,或者和XOR操作获得相同的结果? 解决方案 编辑:现在可以在此处找到更新的代码: github gist 其他解决方案 免责声明:我不具体熟悉ABAP,因此此答案是在更一般的层面上给出的. 假设您所说的是真实的(ABAP不支持Shifts,我有些怀疑),您可以使用乘法和划分. 逻辑偏移左(LSHL) 可以用乘法来表示: x LSHL n = x * 2^n 例如给定x=9, n=2: 9 LSHL 2 = 9 * 2^2 = 36 逻辑偏移右(LSHR) 可以用(截断)划分表示: x LSHR n = x / 2^n 给定x=9, n=2: 9 LSHR 2 = 9 / 2^2 = 2.2
50 2024-03-31
编程技术问答社区
生成授权程序是做什么的,什么是简介?
试图了解SAP中的授权概念时,我遇到了"生成"授权的阶段,从而产生了一个配置文件. 现在我有以下问题: Q1. "生成"授权的含义是什么?该按钮实际上做了什么新的,因为我们已经将授权对象分配给了类.我认为这只能达到将此授权分配给用户的目的? Q2.什么是个人资料? 谢谢! 解决方案 " profiles"是内核所读取的技术内容,以实际评估权限.在过去的好(?)[TM]中,只有手动维护.角色/活动组稍后建立在此之上,添加功能和更多设置.因此,他们从那里组装的设置中生成配置文件.这允许从手动配置文件逐渐过渡到生成的配置文件/角色,而不会丢弃已知可行的内核和用户代码.您仍然可以在技术名称中看到这一点:prgn =配置文件生成器...
18 2024-03-20
编程技术问答社区
将字段符号传入FORM中
我需要将数据字段(另一个字段符号的组件)分配给几个代码范围的字段符号.为了可重复使用性,我决定将此代码封装在过程中,但我无法理解如何将现场符号传递到此过程中. LOOP bseg ASSIGNING ... PERFORM assigning USING CHANGING . ... ENDLOOP. FORM assigning USING TYPE bseg CHANGING TYPE bseg-wrbtr IF ... some logic here ASSIGN -wrbtr TO . ELSE ASSIGN -skfbt TO . ENDIF. ENDFORM. 此代码不起作用. 我应该怎么做才能更改字段符号参考? 解决方案 这是不可能的,至少不是您尝
16 2024-03-17
编程技术问答社区
ASSIGN在调试器路径的变量上失败了
我试图将此构成路径的值分配给fieldSymbol,但是此路径不起作用,因为它的路径中有一个表. ,但在调试器中,此路径的值正确显示. 是否有一种方法可以通过传递一条路径将表线的组件动态分配给fieldSymbol? 如果不是这样,我将只读取表行,然后使用路径来获取想要的值. ls_struct (Struct) - SUPPLYCHAINTRADETRANSACTION (Struct) - INCL_SUPP_CHAIN_ITEM (Table) - ASSOCIATEDDOCUMENTLINEDOCUMENT (Element) i_component_path = |IG_DDIC-SUPPLYCHAINTRADETRANSACTION-INCL_SUPP_CHAIN_ITEM[1]-ASSOCIATEDDOCUMENTLINEDOCUMENT|. ASSIGN (i_component_path) TO
12 2024-03-17
编程技术问答社区
在ABAP中用自定义信息引发异常
我正在编码一个通过RFC调用的函数,我想找到最简单的方法来通过ABAP中的自定义消息提出异常.如果可以在一条线上尽可能短的话,那就太好了. 我想要调试,而不是用于运行生产代码. 背景: 过去我使用了Python编程语言.我喜欢在不调试器的情况下进行调试.我将一些assert 0, myvar行放入代码中并执行代码.对我来说,这比传统调试器更快,因为逐步或进入代码线.我正在寻找相当于assert 0, mvar的 中的assert 0, mvar 提出一个例外只是我目前的策略.欢迎其他所有达到总体目标的策略. 解决方案 正如您已经发现的那样,这样的原因有几个: 作为MESSAGE明确指标的文档,MESSAGE专门用于与用户交互,仅应在最接近用户界面的代码层中使用.消息的确切行为很难预测,因为它取决于执行代码的处理模式,请参见. 消息行为的文档.如果必须绝对必须,请使用 您应该为了测试目的而不是更改生产代码.测试代码和生产代码应该尽可能不相交,因为否则您
18 2024-03-17
编程技术问答社区
在ABAP中加密字符串并在JavaScript中解密
我有一个ABAP类,该类将字符串编码为QR码,并将此代码作为电子邮件发送.稍后,该代码将由基于JavaScript的SAPUI5应用程序解码. 我不希望每个人都可以使用一些基本条形码扫描仪应用程序解码该QR码后面的字符串.这就是为什么我正在寻找一些在ABAP中加密字符串并用JavaScript解密的想法的原因.也许还有一种简单的算法?只是字符串不应向单独解码QR码的人提供可用的信息. 感谢您的提示和想法! 解决方案 ABAP cl_hard_wired_encryptor中的类完全可以做您想要的.它使用base64加密,因此很容易在JS中解密. 这是示例代码: DATA: input_string TYPE string VALUE `This is the house that Jack built`. TRY. DATA(encrypted_string) = NEW cl_hard_wired_encryptor( )->encrypt_
36 2024-01-22
编程技术问答社区
分组+汇总itab与表综合
相当典型的任务,但我坚持以美丽的方式进行. 例如,我需要为每个供应商找到最后的货物,即,以每个供应商的最大日期找到交货 VENDOR DELIVERY DATE 10 00055 01/01/2019 20 00070 01/19/2019 20 00088 01/20/2019 20 00120 11/22/2019 40 00150 04/01/2019 40 00200 04/10/2019 填充的结果表 VENDOR DELIVERY DATE 10 00055 01/01/2019 20 00120 11/22/2019 40 00200 04/10/2019 我通过下降来实施,我发现这很丑陋 LOOP AT
16 2024-01-19
编程技术问答社区
如何区分对SAP的调用是来自OData API还是Fiori应用?
我需要查找对特定申请的呼叫是来自ODATA API呼叫(第三方)还是Fiori App 第三方应用程序将使用我们的ODATA API调用这些交易. 我正在使用FM gui_get_desktop_info 确定它是来自GUI还是Fiori应用程序. 现在,我发现它是来自第三方 app还是 fiori app 解决方案 基本上,您的Fiori应用程序消耗了与ODATA API相同的ODATA服务,并且在Gateway,您无法告诉消费者. 当然,对于您的Fiori应用程序,您可以在HTTP呼叫(标题)或类似方法中放置一些指标,让Gateway知道这些请求是从您的Fiori应用程序发送的.但是ODATA API的Cusumer可以做同样的事情来欺骗您的后端逻辑. 如果您有强大的业务理由来区分消费者,请考虑拥有单独的ODATA API(新的ODATA服务,并尽可能多地重复您的后端逻辑).
28 2024-01-09
编程技术问答社区
范围表中的高和低的实际含义
范围表包含高值和低值.它实际上是做什么? 解决方案 范围表可在open sql查询(使用IN子句)中用作限制.您可以定义几个范围要包括或排除查询结果.例如: report ZZTEST. types: lt_kunrng type range of kunnr_d. data: it_rnrng type standard table of lt_kunrng, wa_rnrng type lt_kunrng, it_kna1 type standard table of kna1. START-OF-SELECTION. move: 'I' to wa_rnrng-sign, 'EQ' to wa_rnrng-option, '0001000000' to wa_rnrng-low, '0002999999' to wa_rnrng-high. append wa_rnrng to it_rnrng. move: 'I'
34 2024-01-09
编程技术问答社区
将Excel转移到ABAP的最佳方法,反之亦然
从SAP ABAP出口和从Excel导出数据的最新方法是什么?我使用了一些旧的Ole库,但它们有一些局限性.我发现的另一件事是SofficeNtectration包,但看起来是在00年代初期开发的.有什么新的发展,还是我应该坚持使用Ole或Sofficeintegration? 据我所知, 解决方案 官方的SAP解决方案是您上面描述的两个.但是,有ABAP2XLSX作为免费软件.这必须在您的系统中分别实施(您公司中负责的人可能不会同意,在生产业务系统中实施"随机"的内容).你可以在这里读更多关于它的内容: ABAP2XLSX (我只使用了一次,创建一个XLSX文件并运行良好.) 其他解决方案 分享我在ABAP中出现Excel处理的一些经验. 1.Excel从内部表下载. data: lo_table type ref to cl_salv_table, lx_xml type xstring. try. cl_salv_table=>fac
16 2024-01-09
编程技术问答社区
具有动态长度的字符变量
有什么方法可以用动态计算的长度声明char变量(或可能是字符串)?此编码阐明了我想要的: DATA: len TYPE i, a TYPE i, b TYPE i. len = a + b. DATA: var(len) TYPE с. 不建议使用创建数据和/或字段符号的解决方案:我已经尝试过它们,但在我的情况下不适用. 此类声明的目的是将领先的零添加和/或将其他逻辑应用于此字符串.因此,将字符串声明为严格! 有任何建议? 解决方案 在您施加的限制下(没有指定"相信我"之外的任何可理解的原因),这是不可能的. 即使尝试一下也完全毫无意义.您要么知道编译时的长度,要么不知道.如果您需要将Lenght视为变量,那么尝试动态生成数据类型是没有意义的.使用字符串并手动照顾领先的零.并不难. 编辑1: 至少在合理的新版本中,使用换档,叠加和翻译是完全有可能的. 编辑2: 如果需要复杂的模式,请使用正则表达式 - 报告demo_re
18 2024-01-09
编程技术问答社区
如何从内容库中读取文本文件
我的要求是从sap abap中的内容存储库中读取文本文件.我使用SCMS_DOC_READ fm来读取图像文件并创建用于创建image URL的URL DP_CREATE_URL,但SCMS_DOC_READ SCMS_DOC_READ不适用于文本. 任何人都可以建议一些代码,FM或类. 解决方案 根据您的要求有两个选项: 选项1:使用读取数据集读取文件. DATA : FNAME(60) type c VALUE 'myfile.txt', TEXT2(5) type c. OPEN DATASET FNAME FOR INPUT IN TEXT MODE. DO. READ DATASET FNAME INTO TEXT2 LENGTH LENG. WRITE: / SY-SUBRC, TEXT2. IF SY-SUBRC 0. E
34 2024-01-09
编程技术问答社区
生产系统中的ADBC和AMDP
建议在生产中使用ADBC或AMDP吗? 如果没有,为什么?谢谢您提前的评论! 解决方案 两者都是为生产使用而设计的. 您应该更喜欢OpenSQL,因为它简化了许多方面,例如客户端处理,并使编程变得容易,因为它整洁地读取到键入结构和表中. amdps应该是您的第二个选择,如果您的操作对于OpenSQL来说太复杂了,因为您需要执行一系列选择以达到目标.请注意他们投掷的例外,如果您使用特定于数据库的功能,例如SAP HANA的模糊搜索. ADBC应该是您的最后一个度假胜地,如果您无法使用以上两个实现目标,因为您需要连接到另一个数据库,或者需要使用具有不同授权的次级数据库连接.同样,请注意他们抛出的例外.另外,请注意客户处理,这种方式不是自动化的.
12 2024-01-09
编程技术问答社区
在一行的单个单元格中的ALV工具提示。可能吗?
可以将工具提示放在我的ALV的单个单元格上吗?我知道字段目录中的列中可能有可能,但是单元格呢? 我的alv具有这样的图标,这是通过cl_gui_alv_gridv 称为的 当我将鼠标悬停在此图标上时,我想要有关此项目的信息 解决方案 如果您在Google上使用" site:help.sap.com tooltip Icon",可以轻松获得有关如何用工具提示显示符号的信息.由于您似乎找不到它,这是实际链接.使目标场足够大(132个字符是一个常见的大小),然后使用函数ICON_CREATE. 如果您不希望出现图标,则可以使用ICON_SPACE.而且由于该工具提示包含在每个单元的值中,因此当然可以具有不同单元格的不同工具提示.
10 2024-01-09
编程技术问答社区
在HTTP响应中发送多个文件
我创建了一个将文件发送给发送者的ICF处理程序类.问题是,它可以与单个文件一起使用,在该文件中我以二进制格式读取数据并使用set_data在身体部位附加相同的数据. 但是,当我尝试添加超过1个文件时,我无法分别添加2个文件.我正在使用IF_HTTP_EXTENSION,并且还没有NTW网关组件. 我也使用Multipart功能,但不要精确地添加如何分别添加2个文件.你能帮我吗? //file1 server->response->set_header_field( name = 'Content-Type' value = 'multipart/mixed'). CONCATENATE 'form-data;name="file"; filename="' filename+5(9) '"' INTO lv_header_value. server->response->set_header_field( name = 'content-disposition' val
16 2024-01-09
编程技术问答社区
通过XBP获取有关报告可用参数的信息
我想获取有关报告的信息.我想知道如果我这样调用报告,则可以使用哪些值: SUBMIT (IV_REPORT_NAME) WITH SELECTION-TABLE selection_table AND RETURN. 这是我的尝试: FUNCTION /FOO/GET_REPORT_INFO. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(IV_REPORT_NAME) TYPE PROGRAMM *" EXPORTING *" VALUE(EV_RESULT_JSON) TYPE STRING *"---------------------------------------------------------------------- D
34 2024-01-09
编程技术问答社区
PyRFC。通过mshost(而不是ashost)连接
我想使用conn = pyrfc.Connection(user='foouser', passwd='xxxx', mshost='sap.example.com', sysid='TE1', client='220', group='EXAMPLE', ) 但是它失败了: RFC_COMMUNICATION_FAILURE (rc=1): key=RFC_COMMUNICATION_FAILURE, message= ERROR service 'sapmsTE1' unknown TIME Tue Dec 18 15:49:40 2018 RELEASE 753 COMPONENT NI (network interface) VERSION 40 RC -3 MODULE /bas/753_REL/src/base/ni/niuxi.c LINE 1833 DETAIL
26 2024-01-09
编程技术问答社区
正确的消息服务器端口(msserv)?
如何确定MSServ连接参数的正确端口? 根据 仅需要MSServ,如果消息服务器的服务未定义为/etc/services中的SAPMS. 在我的情况下,我运行一个带有未修改/etc/services文件的标准Linux分发. 这意味着我需要msserv的匹配值. 在一个系统上,我很幸运,我尝试了3600 但是在第二个系统上,这失败了. 我可以通过SAP-GUI连接到系统. 如何确定msserv? 的所需值 这是此问题的后续措施: pyrfc:pyrfc:连接通过mshost ) 解决方案 您需要询问SAP系统管理员告诉您消息服务器服务端口号.它在安装SAP系统时指定它,或者以后可以由系统管理员进行更改和配置. 如果您已经可以通过SAP GUI访问系统,并且还具有所需的授权,也可以在Message Server Monitor中查找此功能(header区域中的交易SMMS或通过菜单goto goto-> paramo-> pa
14 2024-01-09
编程技术问答社区
动态声明变量名称
任务是用动态 name 创建变量.不打字,而是名字! 向我提出的所有方式(例如,通过cl_abap_typedescr和cl_abap_elemdescr类)都是没有用的. 我想以这种语义实现类似的东西,但是该语法是不正确的: CREATE DATA (name) TYPE var_type. 有解决方案吗? 解决方案 我认为,如果将"名称"声明为野外符号,它将起作用. 效果 该语句声明了一个符号字段.在运行时,您可以使用分配为字段符号分配一个具体字段.然后,所有使用字段符号执行的操作直接影响分配给其的字段. 尝试一下: data: b_1 type i, b_2 type i, b_3 type i, b_4 type i, num1(1) type n, fldname type fieldname. FIELD-SYMBOLS: type i. do 4 times. num1 = sy-ind
20 2024-01-09
编程技术问答社区