欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP RANGES 在 RFC 的应用示例

发布时间:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ABAP RANGES 在 RFC 的应用示例 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

写一个RFC,在VK11下,把条件类型是Z907的一些数据输出。

在IMPORT下入参 定义2个

IT_VKORG LIKEA907-VKORG                    销售组织 
IT_KUNNR LIKE  A907-KUNNR                     客户号 


当输入IT_VKOGR 或者 IT_KUNNR 时,或者2个都输入都能获取到数据。 这个看似简单的需求,我确花费了大概1天的时间。

其中卡就卡在:

第一,对ranges基本用法的不理解;

第二,没有进行判断就执行;

第三,对where条件后的 and 和 or 不了解。

下面看看最后正确的做法:

定义ranges

[plain] view plaincopy
  • RANGES : s_vkorg FOR itab-vkorg,  
  •          s_kunnr FOR itab-kunnr.  
  •   
  •           IF it_vkorg IS NOT INITIAL.  "一定要判断输入的值是否为空。  
  •             s_vkorg-sign = 'I'.  
  •             s_vkorg-option = 'EQ'. " 如果option='EQ'.后面就不需要HIGH  
  •             s_vkorg-low = it_vkorg.  
  •             APPEND s_vkorg.  
  •           ENDIF.  
  • [plain] view plaincopy
  • IF it_kunnr IS NOT INITIAL.  
  •   s_kunnr-sign = 'I'.  
  •   s_kunnr-option = 'EQ'.  
  •   s_kunnr-low = it_kunnr.  
  •   APPEND s_kunnr.  
  • ENDIF.  

  • 在WHERE 条件下用IN 

    [plain] view plaincopy
  • SELECT a~kappl a~kschl a~vkorg  a~kunnr a~knumh a~datab a~datbi b~kbetr b~konwa  
  •    INTO CORRESPONDING FIELDS OF TABLE itab  
  •    FROM a907 AS a JOIN konp AS b ON  a~knumh = b~knumh  
  •    WHERE a~vkorg IN s_vkorg  
  •      AND a~kunnr IN s_kunnr.  

  • ranges知识:

    RANGES <seltab> FOR <f>.
    该语句创建 选择表 <seltab>, 该表参考数 据库表的列 <f> 或内部字段 <f>。选 择表 <seltab> 必须在程序 中填充。不 必在程序中 再用 TABLES 语句声明数 据库表。
    RANGES 语句是下列 语句的短格 式:
    DATA: BEGIN OF <seltab> OCCURS 10,
             SIGN(1),
             OPTION(2)
             LOW  LIKE <f>,
             HIGH LIKE <f>,
          END OF <seltab>.

    总结

    以上是生活随笔为你收集整理的ABAP RANGES 在 RFC 的应用示例的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。