{"id":"9f61481a-c0de-443a-8d6d-6af4ac42a9b9","shortId":"qFH5xp","kind":"skill","title":"sap-fiori-url-generator","tagline":"Generate SAP Fiori Launchpad URLs from app names using AppList.json. Looks up app information by name and constructs proper FLP URLs with required parameters like sap-client and sap-language.","description":"# SAP Fiori URL Generator Skill\n\nThis skill enables you to generate SAP Fiori Launchpad (FLP) URLs based on app names from the AppList.json file.\n\n## References\n\nWhen you need to look up SAP Fiori app information:\n\n**App List Database**: Read `@skills/sap-fiori-apps-reference/references/AppList.json` - contains all SAP Fiori apps with their Semantic Object-Action mappings, App IDs, descriptions, and technical details.\n\nUse this reference to:\n- Search for apps by name (partial match, case-insensitive)\n- Extract the \"Semantic Object - Action\" field for URL generation\n- Provide app details (ID, description, component) to users\n- Suggest similar apps when exact match is not found\n\n### Updating AppList.json\n\nThe AppList.json data can be obtained from SAP's Fiori Apps Library:\n\n1. Go to https://pr.alm.me.sap.com/launchpad#FALApp-display\n2. Export the app list to Excel\n3. Convert the Excel file to JSON format\n\nThis ensures the app list stays current with the latest SAP Fiori applications.\n\n## Overview\n\nWhen a user provides:\n1. A base SAP Fiori URL (e.g., `https://myserver.com:44300`)\n2. An app name (e.g., \"Create Maintenance Request\")\n\nYou will:\n1. Search the AppList.json file for the app\n2. Extract the \"Semantic Object - Action\" field\n3. Construct the complete FLP URL with proper parameters\n\n## URL Structure\n\nThe complete SAP Fiori Launchpad URL follows this pattern:\n\n```\n{BASE_URL}/sap/bc/ui2/flp?sap-client={CLIENT}&sap-language={LANGUAGE}#{SEMANTIC_OBJECT}-{ACTION}\n```\n\n### Required Parameters (MUST be provided by user)\n\n- **BASE_URL**: The SAP system base URL (e.g., `https://myserver.com:44300`)\n  - MUST be provided by user\n  - No default value\n  \n- **sap-client**: The SAP client number (e.g., `100`)\n  - MUST be provided by user\n  - No default value\n  - Required for all SAP Fiori Launchpad URLs\n\n### Optional Parameters\n\n- **sap-language**: Language code (e.g., `EN`, `DE`, `FR`)\n  - Default: `EN` if not specified by user\n  - Can be customized per request\n  \n### Auto-Generated Parameters\n\n- **SEMANTIC_OBJECT-ACTION**: Automatically extracted from the \"Semantic Object - Action\" field in AppList.json\n  - No user input required\n  - Looked up based on app name\n\n## Implementation Steps\n\n### Step 1: Read AppList.json\n\nFirst, read the AppList.json file to access the app data:\n\n```javascript\nconst fs = require('fs');\nconst appList = JSON.parse(fs.readFileSync('AppList.json', 'utf8'));\n```\n\n### Step 2: Search for the App\n\nSearch for the app by name (case-insensitive, partial match):\n\n```javascript\nfunction findAppByName(appName) {\n  const normalizedSearch = appName.toLowerCase().trim();\n  \n  return appList.find(app => \n    app['App Name'] && \n    app['App Name'].toLowerCase().includes(normalizedSearch)\n  );\n}\n```\n\n### Step 3: Extract Semantic Object-Action\n\nGet the \"Semantic Object - Action\" field:\n\n```javascript\nfunction getSemanticObjectAction(app) {\n  const semanticAction = app['Semantic Object - Action'];\n  \n  if (!semanticAction || semanticAction === 'NaN' || semanticAction === null) {\n    throw new Error('No Semantic Object-Action found for this app');\n  }\n  \n  return semanticAction;\n}\n```\n\n### Step 4: Construct the URL\n\nBuild the complete FLP URL:\n\n```javascript\nfunction generateFioriUrl(baseUrl, client, semanticAction, language = 'EN') {\n  // Validate required parameters\n  if (!baseUrl) {\n    throw new Error('BASE_URL is required and must be provided by user');\n  }\n  if (!client) {\n    throw new Error('sap-client is required and must be provided by user');\n  }\n  \n  // Remove trailing slash from base URL if present\n  const cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n  \n  return `${cleanBaseUrl}/sap/bc/ui2/flp?sap-client=${client}&sap-language=${language}#${semanticAction}`;\n}\n```\n\n## Complete Example\n\n### Input (ALL required parameters must be provided by user)\n- Base URL: `https://myserver.com:44300` (**USER MUST PROVIDE**)\n- SAP Client: `100` (**USER MUST PROVIDE**)\n- App Name: `Create Maintenance Request` (**USER MUST PROVIDE**)\n- Language: `EN` (optional - defaults to EN if not specified)\n\n### Process\n1. Read AppList.json\n2. Search for \"Create Maintenance Request\"\n3. Find entry with \"Semantic Object - Action\": `MaintenanceWorkRequest-create`\n4. Construct URL using user-provided base URL and client\n\n### Output\n```\nhttps://myserver.com:44300/sap/bc/ui2/flp?sap-client=100&sap-language=EN#MaintenanceWorkRequest-create\n```\n\n## Error Handling\n\n### App Not Found\nIf the app name is not found in AppList.json:\n```\nError: App \"{app_name}\" not found in AppList.json\nSuggestion: Check spelling or try searching with partial name\n```\n\n### Missing Semantic Object-Action\nIf the app exists but has no Semantic Object-Action:\n```\nError: App \"{app_name}\" (ID: {app_id}) does not have a Semantic Object-Action defined\nNote: This app may not be launchable via FLP URL\n```\n\n### Multiple Matches\nIf multiple apps match the search term:\n```\nFound multiple apps matching \"{search_term}\":\n1. App Name 1 (ID: F1234)\n2. App Name 2 (ID: F5678)\nPlease specify which app you want\n```\n\n## Additional Features\n\n### List Similar Apps\nWhen an exact match isn't found, suggest similar apps:\n\n```javascript\nfunction findSimilarApps(searchTerm, limit = 5) {\n  const normalized = searchTerm.toLowerCase();\n  \n  return appList\n    .filter(app => \n      app['App Name'] && \n      app['App Name'].toLowerCase().includes(normalized)\n    )\n    .slice(0, limit)\n    .map(app => ({\n      name: app['App Name'],\n      id: app['App ID'],\n      semanticAction: app['Semantic Object - Action']\n    }));\n}\n```\n\n### Extract App Details\nProvide additional app information:\n\n```javascript\nfunction getAppDetails(app) {\n  return {\n    name: app['App Name'],\n    id: app['App ID'],\n    description: app['App Description'],\n    semanticAction: app['Semantic Object - Action'],\n    technicalCatalog: app['Technical Catalog'],\n    transactionCode: app['Transaction Codes'],\n    component: app['Application Component']\n  };\n}\n```\n\n## User Interaction Examples\n\n### Example 1: Basic URL Generation\n**User:** \"Generate URL for Create Maintenance Request app with base URL https://myserver.com:44300 and client 100\"\n\n**Response:**\n```\nApp Found: Create Maintenance Request (F1511A)\nSemantic Object-Action: MaintenanceWorkRequest-create\n\nGenerated URL:\nhttps://myserver.com:44300/sap/bc/ui2/flp?sap-client=100&sap-language=EN#MaintenanceWorkRequest-create\n```\n\n### Example 2: Custom Language\n**User:** \"Generate URL for Create Maintenance Request in German, base URL https://myserver.com:44300, client 100\"\n\n**Response:**\n```\nApp Found: Create Maintenance Request (F1511A)\nSemantic Object-Action: MaintenanceWorkRequest-create\n\nGenerated URL:\nhttps://myserver.com:44300/sap/bc/ui2/flp?sap-client=100&sap-language=DE#MaintenanceWorkRequest-create\n```\n\n### Example 3: Missing Required Parameters\n**User:** \"Generate URL for Create Maintenance Request\"\n\n**Response:**\n```\nError: Missing required parameters\nPlease provide:\n  - Base URL (e.g., https://myserver.com:44300)\n  - SAP Client (e.g., 100)\n  - App Name (provided: Create Maintenance Request)\n  - Language (optional, defaults to EN)\n\nExample: Generate URL for \"Create Maintenance Request\" with base URL https://myserver.com:44300 and client 100\n```\n\n### Example 3: Search by Partial Name\n**User:** \"Find apps related to 'Workflow'\"\n\n**Response:**\n```\nFound 8 apps matching \"Workflow\":\n\n1. Manage Workflows (F2190)\n   Action: Workflow-showList\n\n2. Workflow Component (F2506)\n   Action: Not available\n\n3. Manage Workflow Templates (F2787)\n   Action: WorkflowTemplate-showList\n\n4. Manage Workflows - For Bank Accounts (F2796)\n   Action: BankAccount-workflowShowList\n\n5. Manage Workflow Scenarios (F3067)\n   Action: WorkflowScenario-showList\n\nTo generate a URL, please provide:\n  - Base URL (e.g., https://myserver.com:44300)\n  - SAP Client (e.g., 100)\n  - Which app you want from the list above\n```\n\n## Language Codes Reference\n\nCommon SAP language codes:\n- `EN` - English\n- `DE` - German (Deutsch)\n- `ES` - Spanish (Español)\n- `FR` - French (Français)\n- `IT` - Italian (Italiano)\n- `PT` - Portuguese (Português)\n- `ZH` - Chinese (中文)\n- `JA` - Japanese (日本語)\n- `KO` - Korean (한국어)\n\n## Technical Notes\n\n### AppList.json Structure\nEach app entry contains:\n- **App Name**: Display name of the application\n- **App ID**: SAP Fiori app identifier (e.g., F1511A)\n- **Semantic Object - Action**: FLP navigation target (e.g., MaintenanceWorkRequest-create)\n- **UI Technology**: Technology used (SAP Fiori elements, SAPUI5, etc.)\n- **Application Component**: SAP component abbreviation\n- **App Description**: Detailed description of functionality\n- **Technical Catalog**: Catalog assignment\n- **Transaction Codes**: Classic SAP transaction (if applicable)\n- **OData Service**: Backend service name\n\n### Handling Missing Data\nSome apps may have `NaN` or `null` values for certain fields. Always check:\n- Semantic Object - Action must exist to generate FLP URL\n- App Name should exist for search functionality\n- Other fields are optional for URL generation\n\n## Best Practices\n\n1. **Always request required parameters**: Ask user for base URL and sap-client if not provided\n2. **Validate parameters**: Ensure base URL format is valid (starts with `http://` or `https://`)\n3. **Strip trailing slashes**: Clean the base URL before concatenation\n4. **Case-insensitive search**: Make searches user-friendly\n5. **Provide app details**: Show App ID and description for confirmation\n6. **Handle multiple matches gracefully**: Let users choose when ambiguous\n7. **Default language**: Use `sap-language=EN` as default if not specified\n8. **Escape special characters**: If app names contain special characters in URLs\n9. **Prompt for missing info**: Never assume base URL or client - always ask user\n\n## Complete Implementation Example\n\n```javascript\nconst fs = require('fs');\n\nclass FioriUrlGenerator {\n  constructor(appListPath) {\n    this.apps = JSON.parse(fs.readFileSync(appListPath, 'utf8'));\n  }\n\n  findApp(appName) {\n    const normalized = appName.toLowerCase().trim();\n    return this.apps.find(app => \n      app['App Name'] && \n      app['App Name'].toLowerCase().includes(normalized)\n    );\n  }\n\n  generateUrl(baseUrl, client, appName, options = {}) {\n    const { language = 'EN' } = options;\n    \n    // Validate required parameters\n    if (!baseUrl) {\n      throw new Error('Base URL is required - must be provided by user');\n    }\n    if (!client) {\n      throw new Error('SAP Client is required - must be provided by user');\n    }\n    \n    // Find the app\n    const app = this.findApp(appName);\n    if (!app) {\n      throw new Error(`App \"${appName}\" not found`);\n    }\n\n    // Extract semantic action\n    const semanticAction = app['Semantic Object - Action'];\n    if (!semanticAction || semanticAction === 'NaN') {\n      throw new Error(`App \"${app['App Name']}\" has no Semantic Object-Action`);\n    }\n\n    // Clean base URL\n    const cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\n    // Construct URL\n    return {\n      url: `${cleanBaseUrl}/sap/bc/ui2/flp?sap-client=${client}&sap-language=${language}#${semanticAction}`,\n      appDetails: {\n        name: app['App Name'],\n        id: app['App ID'],\n        description: app['App Description'],\n        semanticAction: semanticAction\n      }\n    };\n  }\n}\n\n// Usage - User MUST provide base URL and client\nconst generator = new FioriUrlGenerator('./AppList.json');\nconst result = generator.generateUrl(\n  'https://myserver.com:44300',  // User provided\n  '100',                                    // User provided\n  'Create Maintenance Request',            // User provided\n  { language: 'EN' }                       // Optional - defaults to EN\n);\n\nconsole.log(result.url);\n```\n\n## Summary\n\nThis skill enables seamless SAP Fiori URL generation by:\n1. Reading and parsing AppList.json\n2. Searching for apps by name\n3. Extracting semantic object-action mappings\n4. Constructing properly formatted FLP URLs\n5. Handling errors and edge cases gracefully\n6. Supporting multiple languages and customization\n\nThe generated URLs can be directly used to launch SAP Fiori apps in the Fiori Launchpad.","tags":["sap","fiori","apps","reference","abap","skills","likweitan","agent-skills"],"capabilities":["skill","source-likweitan","skill-sap-fiori-apps-reference","topic-abap","topic-agent-skills","topic-sap"],"categories":["abap-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/likweitan/abap-skills/sap-fiori-apps-reference","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add likweitan/abap-skills","source_repo":"https://github.com/likweitan/abap-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (12,101 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T01:03:17.163Z","embedding":null,"createdAt":"2026-04-23T13:03:45.775Z","updatedAt":"2026-04-24T01:03:17.163Z","lastSeenAt":"2026-04-24T01:03:17.163Z","tsv":"'/applist.json':1446 '/launchpad#falapp-display':155 '/sap/bc/ui2/flp':244,527,1409 '/sap/bc/ui2/flp?sap-client=100&sap-language=de#maintenanceworkrequest-create':892 '/sap/bc/ui2/flp?sap-client=100&sap-language=en#maintenanceworkrequest-create':611,855 '0':756 '1':150,189,207,358,578,700,703,818,963,1172,1479 '100':288,556,836,873,919,944,1020,1453 '2':156,197,215,383,581,706,709,857,971,1189,1484 '3':163,222,420,587,894,946,978,1201,1490 '4':463,597,987,1211,1497 '5':738,998,1221,1503 '6':1232,1510 '7':1242 '8':959,1255 '9':1267 'abbrevi':1108 'access':367 'account':992 'action':88,114,220,255,334,341,425,430,441,455,593,647,658,673,772,801,847,884,967,975,983,994,1003,1087,1149,1374,1380,1397,1495 'addit':718,777 'alway':1145,1173,1278 'ambigu':1241 'app':12,18,56,71,73,82,90,102,120,129,148,159,174,199,214,353,369,387,391,409,410,411,413,414,435,438,459,560,614,619,627,628,650,660,661,664,677,689,696,701,707,715,722,732,745,746,747,749,750,759,761,762,765,766,769,774,778,783,786,787,790,791,794,795,798,803,807,811,829,838,875,920,953,960,1022,1067,1070,1077,1081,1109,1135,1156,1223,1226,1260,1306,1307,1308,1310,1311,1358,1360,1364,1368,1377,1388,1389,1390,1421,1422,1425,1426,1429,1430,1487,1527 'appdetail':1419 'applic':183,812,1076,1104,1125 'applist':377,743 'applist.find':408 'applist.json':15,60,137,139,210,344,360,364,380,580,625,633,1064,1483 'applistpath':1292,1296 'appnam':402,1299,1319,1362,1369 'appname.tolowercase':405,1302 'ask':1177,1279 'assign':1118 'assum':1273 'auto':328 'auto-gener':327 'automat':335 'avail':977 'backend':1128 'bank':991 'bankaccount':996 'bankaccount-workflowshowlist':995 'base':54,191,242,263,268,351,488,518,548,604,831,869,912,939,1013,1180,1193,1207,1274,1333,1399,1438 'baseurl':475,484,1317,1329 'baseurl.replace':524,1403 'basic':819 'best':1170 'build':467 'case':108,395,1213,1508 'case-insensit':107,394,1212 'catalog':805,1116,1117 'certain':1143 'charact':1258,1264 'check':635,1146 'chines':1054 'choos':1239 'class':1289 'classic':1121 'clean':1205,1398 'cleanbaseurl':523,526,1402,1408 'client':33,247,248,282,285,476,499,505,530,531,555,607,835,872,917,943,1018,1185,1277,1318,1343,1348,1412,1413,1441 'code':310,809,1030,1035,1120 'common':1032 'complet':225,234,469,537,1281 'compon':124,810,813,973,1105,1107 'concaten':1210 'confirm':1231 'console.log':1467 'const':372,376,403,436,522,739,1285,1300,1321,1359,1375,1401,1442,1447 'construct':23,223,464,598,1404,1498 'constructor':1291 'contain':78,1069,1262 'convert':164 'creat':202,562,584,596,826,840,850,864,877,887,902,923,935,1094,1456 'current':177 'custom':324,858,1515 'data':140,370,1133 'databas':75 'de':313,1038 'default':278,295,315,571,928,1243,1251,1464 'defin':674 'descript':92,123,793,796,1110,1112,1229,1428,1431 'detail':95,121,775,1111,1224 'deutsch':1040 'direct':1521 'display':1072 'e.g':195,201,270,287,311,914,918,1015,1019,1083,1091 'edg':1507 'element':1101 'en':312,316,479,569,573,930,1036,1249,1323,1462,1466 'enabl':45,1472 'english':1037 'ensur':172,1192 'entri':589,1068 'error':450,487,502,612,626,659,906,1332,1346,1367,1387,1505 'es':1041 'escap':1256 'español':1043 'etc':1103 'exact':131,725 'exampl':538,816,817,856,893,931,945,1283 'excel':162,166 'exist':651,1151,1159 'export':157 'extract':110,216,336,421,773,1372,1491 'f1234':705 'f1511a':843,880,1084 'f2190':966 'f2506':974 'f2787':982 'f2796':993 'f3067':1002 'f5678':711 'featur':719 'field':115,221,342,431,1144,1164 'file':61,167,211,365 'filter':744 'find':588,952,1356 'findapp':1298 'findappbynam':401 'findsimilarapp':735 'fiori':3,8,39,50,70,81,147,182,193,236,301,1080,1100,1475,1526,1530 'fioriurlgener':1290,1445 'first':361 'flp':25,52,226,470,683,1088,1154,1501 'follow':239 'format':170,1195,1500 'found':135,456,616,623,631,694,729,839,876,958,1371 'fr':314,1044 'françai':1046 'french':1045 'friend':1220 'fs':373,375,1286,1288 'fs.readfilesync':379,1295 'function':400,433,473,734,781,1114,1162 'generat':5,6,41,48,118,329,821,823,851,861,888,899,932,1008,1153,1169,1443,1477,1517 'generatefioriurl':474 'generateurl':1316 'generator.generateurl':1449 'german':868,1039 'get':426 'getappdetail':782 'getsemanticobjectact':434 'go':151 'grace':1236,1509 'handl':613,1131,1233,1504 'id':91,122,663,665,704,710,764,767,789,792,1078,1227,1424,1427 'identifi':1082 'implement':355,1282 'includ':417,753,1314 'info':1271 'inform':19,72,779 'input':347,539 'insensit':109,396,1214 'interact':815 'isn':727 'italian':1048 'italiano':1049 'ja':1056 'japanes':1057 'javascript':371,399,432,472,733,780,1284 'json':169 'json.parse':378,1294 'ko':1059 'korean':1060 'languag':37,251,252,308,309,478,534,535,568,859,926,1029,1034,1244,1248,1322,1416,1417,1461,1513 'latest':180 'launch':1524 'launchabl':681 'launchpad':9,51,237,302,1531 'let':1237 'librari':149 'like':30 'limit':737,757 'list':74,160,175,720,1027 'look':16,67,349 'mainten':203,563,585,827,841,865,878,903,924,936,1457 'maintenanceworkrequest':595,849,886,1093 'maintenanceworkrequest-cr':594,848,885,1092 'make':1216 'manag':964,979,988,999 'map':89,758,1496 'match':106,132,398,686,690,697,726,961,1235 'may':678,1136 'miss':643,895,907,1132,1270 'multipl':685,688,695,1234,1512 'must':258,272,289,493,509,543,552,558,566,1150,1337,1351,1436 'myserver.com:44300':196,271,550,610,833,854,871,891,915,941,1016,1450 'myserver.com:44300/sap/bc/ui2/flp?sap-client=100&sap-language=de#maintenanceworkrequest-create':890 'myserver.com:44300/sap/bc/ui2/flp?sap-client=100&sap-language=en#maintenanceworkrequest-create':609,853 'name':13,21,57,104,200,354,393,412,415,561,620,629,642,662,702,708,748,751,760,763,785,788,921,950,1071,1073,1130,1157,1261,1309,1312,1391,1420,1423,1489 'nan':445,1138,1384 'navig':1089 'need':65 'never':1272 'new':449,486,501,1331,1345,1366,1386,1444 'normal':740,754,1301,1315 'normalizedsearch':404,418 'note':675,1063 'null':447,1140 'number':286 'object':87,113,219,254,333,340,424,429,440,454,592,646,657,672,771,800,846,883,1086,1148,1379,1396,1494 'object-act':86,332,423,453,645,656,671,845,882,1395,1493 'obtain':143 'odata':1126 'option':304,570,927,1166,1320,1324,1463 'output':608 'overview':184 'paramet':29,230,257,305,330,482,542,897,909,1176,1191,1327 'pars':1482 'partial':105,397,641,949 'pattern':241 'per':325 'pleas':712,910,1011 'portugues':1051 'portuguê':1052 'pr.alm.me.sap.com':154 'pr.alm.me.sap.com/launchpad#falapp-display':153 'practic':1171 'present':521 'process':577 'prompt':1268 'proper':24,229,1499 'provid':119,188,260,274,291,495,511,545,553,559,567,603,776,911,922,1012,1188,1222,1339,1353,1437,1452,1455,1460 'pt':1050 'read':76,359,362,579,1480 'refer':62,98,1031 'relat':954 'remov':514 'request':204,326,564,586,828,842,866,879,904,925,937,1174,1458 'requir':28,256,297,348,374,481,491,507,541,896,908,1175,1287,1326,1336,1350 'respons':837,874,905,957 'result':1448 'result.url':1468 'return':407,460,525,742,784,1304,1406 'sap':2,7,32,36,38,49,69,80,145,181,192,235,246,250,266,281,284,300,307,504,529,533,554,916,1017,1033,1079,1099,1106,1122,1184,1247,1347,1411,1415,1474,1525 'sap-client':31,245,280,503,528,1183,1410 'sap-fiori-url-gener':1 'sap-languag':35,249,306,532,1246,1414 'sapui5':1102 'scenario':1001 'seamless':1473 'search':100,208,384,388,582,639,692,698,947,1161,1215,1217,1485 'searchterm':736 'searchterm.tolowercase':741 'semant':85,112,218,253,331,339,422,428,439,452,591,644,655,670,770,799,844,881,1085,1147,1373,1378,1394,1492 'semanticact':437,443,444,446,461,477,536,768,797,1376,1382,1383,1418,1432,1433 'servic':1127,1129 'show':1225 'showlist':970,986,1006 'similar':128,721,731 'skill':42,44,1471 'skill-sap-fiori-apps-reference' 'skills/sap-fiori-apps-reference/references/applist.json':77 'slash':516,1204 'slice':755 'source-likweitan' 'spanish':1042 'special':1257,1263 'specifi':319,576,713,1254 'spell':636 'start':1198 'stay':176 'step':356,357,382,419,462 'strip':1202 'structur':232,1065 'suggest':127,634,730 'summari':1469 'support':1511 'system':267 'target':1090 'technic':94,804,1062,1115 'technicalcatalog':802 'technolog':1096,1097 'templat':981 'term':693,699 'this.apps':1293 'this.apps.find':1305 'this.findapp':1361 'throw':448,485,500,1330,1344,1365,1385 'tolowercas':416,752,1313 'topic-abap' 'topic-agent-skills' 'topic-sap' 'trail':515,1203 'transact':808,1119,1123 'transactioncod':806 'tri':638 'trim':406,1303 'ui':1095 'updat':136 'url':4,10,26,40,53,117,194,227,231,238,243,264,269,303,466,471,489,519,549,599,605,684,820,824,832,852,862,870,889,900,913,933,940,1010,1014,1155,1168,1181,1194,1208,1266,1275,1334,1400,1405,1407,1439,1476,1502,1518 'usag':1434 'use':14,96,600,1098,1245,1522 'user':126,187,262,276,293,321,346,497,513,547,551,557,565,602,814,822,860,898,951,1178,1219,1238,1280,1341,1355,1435,1451,1454,1459 'user-friend':1218 'user-provid':601 'utf8':381,1297 'valid':480,1190,1197,1325 'valu':279,296,1141 'via':682 'want':717,1024 'workflow':956,962,965,969,972,980,989,1000 'workflow-showlist':968 'workflowscenario':1005 'workflowscenario-showlist':1004 'workflowshowlist':997 'workflowtempl':985 'workflowtemplate-showlist':984 'zh':1053 '中文':1055 '日本語':1058 '한국어':1061","prices":[{"id":"5d134b93-57b7-43bf-930a-420d2645a15e","listingId":"9f61481a-c0de-443a-8d6d-6af4ac42a9b9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"likweitan","category":"abap-skills","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:45.775Z"}],"sources":[{"listingId":"9f61481a-c0de-443a-8d6d-6af4ac42a9b9","source":"github","sourceId":"likweitan/abap-skills/sap-fiori-apps-reference","sourceUrl":"https://github.com/likweitan/abap-skills/tree/main/skills/sap-fiori-apps-reference","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:45.775Z","lastSeenAt":"2026-04-24T01:03:17.163Z"}],"details":{"listingId":"9f61481a-c0de-443a-8d6d-6af4ac42a9b9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"likweitan","slug":"sap-fiori-apps-reference","github":{"repo":"likweitan/abap-skills","stars":12,"topics":["abap","agent-skills","sap"],"license":"mit","html_url":"https://github.com/likweitan/abap-skills","pushed_at":"2026-04-17T13:44:41Z","description":"Advance Agent Skills for ABAP Developers","skill_md_sha":"66f1abc1d97896ea52d0f224f386f73848390940","skill_md_path":"skills/sap-fiori-apps-reference/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/likweitan/abap-skills/tree/main/skills/sap-fiori-apps-reference"},"layout":"multi","source":"github","category":"abap-skills","frontmatter":{"name":"sap-fiori-url-generator","license":"MIT","description":"Generate SAP Fiori Launchpad URLs from app names using AppList.json. Looks up app information by name and constructs proper FLP URLs with required parameters like sap-client and sap-language."},"skills_sh_url":"https://skills.sh/likweitan/abap-skills/sap-fiori-apps-reference"},"updatedAt":"2026-04-24T01:03:17.163Z"}}